One of the best features in Maximo is to give users dynamic feedback on a record using the Conditional UI functionality in Maximo 7.x. The goal of a Conditional UI statement in Maximo is to be able to look at a field and show an exception to that field's value is occurring because of a change to the default presentation (background color, field alignment, text size, etc). You can review the basics of setting up a conditional UI statements from existing IBM documentation - Changing UI Properties and Maximo CSS style options.
An issue I ran into recently was setting up different conditional UI statements within a single application. The intent was to change the field color of the PO.VENDOR field if the vendor was disqualified and change the field color on the POLINE.RECEIPTSCOMPLETE field if all of the items on a PO line hadn't been received yet.
What I found was if using conditional UI on multiple fields against the 'READ' sigoption, you can run into overlapping conditions. The condition on the top is to verify if the vendor on the PO is disqualified. The condition on the bottom is to highlight if a PO line is not completely received.
The original conditional UI statements were setup as:
- Vendor Disqualified: The original conditional expression was set as :RECEIPTSCOMPLETE = 1 and the conditional statement would change a receipts complete field background field to yellow if the condition was false.
- PO Line Receipts: The original conditional expression was set as :vendor = (select COMPANY from companies where orgid = :orgid and company = :vendor and disabled = 1) and the conditional statement would change the background color on the Vendor field on the PO main tab to red if the condition was true.
This worked great for the PO Line Receipts, but caused every PO to show the Vendor field to be highlighted as well. 1 The solution was to apply the conditional UI statement to only be triggered when a condition was true. The conditional UI statements were updated so they would only be triggered if the condition was true:
- Vendor Disqualified: The original conditional expression was set as :RECEIPTSCOMPLETE = 0 2 and the conditional statement would change the formatting if the condition was true.
- PO Line Receipts: The original conditional expression was set as :vendor = (select COMPANY from companies where orgid = :orgid and company = :vendor and disabled = 1) and the conditional statement would change the formatting if the condition was true.
By making the adjustment to the conditional expression, we now want to change the UI when the PO line has not been fully received. This matches the intent of the other condition to highlight the PO vendor in the event the vendor was set to disqualified because both conditional UI statements are triggered when the conditional expression is true.
Bottom Line: If you're putting multiple conditions on the same sigoption, like READ, make sure to have all of the UI choices be against the same condition tab - e.g. all against 'Condition is True'. This will allow your formatting to show up only when you want the condition to be triggered. Otherwise you will get false positives on some of the other fields you've applied a conditional UI statement too.
Side note: One option to work around the situation above is to create a new sigoption and then use one sigoption for the first field and another sigoption for the second field. While this is technically a better solution, there are times where a Maximo administrator may have access to Application Designer, but not have access to User Group security. The solution above was given to work in most Maximo environments.
Add a comment below if you have any other options to trigger different conditional UI statements in an application.