Maximo has a predefined set of statuses for work orders that are defined in the WOSTATUS synonym domain. The values and their meaning are well documented in the official documentation.
Unfortunately the allowed state transitions are hardcoded in the psdi.app.workorder.WOStatusHandler class and cannot be easily changed since they are defined as private arrays.
Here is a brief summary of the allowed status changes.
From status APPR you can set any target status.
This allows too much freedom in some cases so we want to restrict the allowed state transitions.
For example you might want to prevent users from changing the status of work orders that are in APPR (Approved) status to CLOSE (Closed) or CAN (Canceled).
First, navigate to Condition Expression Manager and create the following conditional expression:
- Condition: WONOTAPPR
- Description: Work Order is not in APPR status
- Type: Expression
- Expression: :status not in (‘APPR’)
- Always Evaluate: false
Open the the Domains application and bring up the WOSTATUS domain.
Select the CAN status row and click on the View/Modify Conditions button.
Select the “new row” button and select the new condition you created above, and click OK.
Do the same to COMP and CLOSE status if you wish.
If you now open any work order in APPR status you will notice that the list of allowed target statuses is shorter.
The good part is that the same rule applies also if you click on the quick actions.
- From the Maximo Support Desk – Allowable Status Changes for Work Orders
- Restricting the list of available statuses based on current record status
5 thoughts on “How to restrict allowed status changes for workorders”
We have rather complex business rules about who can change what type of work order from a specific status to another so we created a new object to house the rules and built conditions to point to the rule object to determine what status' were allowed. This object was given a new custom app so the rules can be set quickly and updated whenever necessary without having to alter conditions.
There is a bug in Change Status table. From CAN it can’t go to the CLOSE.
Thank you very much for your work. I like your blog.
I have amended the post. Thank you.
I’m trying to update the condition of Conditional Expression Manager by running a update query in oracle. The condition changes successfully but it doesn’t reflect the changes in the application based on the updated condition.
Can you please tell me if I need to update anything else as well along with the condition.
FYI – I always avoid, unless absolutely necessary, updating anything in the DB rather than using the front end. There lots of caching going and it does actually invalidate your license agreement with IBM. Chnaging it in the UI or using the MBOs such as with MxLoader, Migration Manager, etc ensures that all the necessary places are updated,