Using multiple Conditional UI statements on 'READ' sigoption

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. 2 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 1 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.


  1. Note the change in the conditional expression. 

  2. Because a vendor shouldn't be disqualified on an open PO. ;-) 



Previous posts:

  1. Reliability lessons from DevOps

    Over the years I've learned to pick up ideas and advice from wherever I can find it. I recently came across a tweet from @ThePracticalDev on the obligation of a software developer. The article was originally written by Stelios Voskos (@steliosvs91) on the 5 rules a developer should follow ...

  2. Using Maximo to help train users on queries

    One of the challenges Maximo administrators face is getting a good user to get to the next level of experience in using Maximo. The biggest gain I think a power use can make is being able to transition from searches using the List Tab/Advanced Search to modifying searches in ...

  3. Protecting Maximo from inbound emails

    I've been using Maximo's email listener to help shift requests getting emailed directly to the Maintenance Manager and Supervisors and into an inbox that can be managed by the entire maintenance department. Maximo has an out of the box workflow 1 to handle inbound emails from an email ...

  4. Getting multiple records to show inline in BIRT

    One of the first rules I learned when creating reports was to get your report's select statement to do as much of the work for you. When the select statement is properly formatted, the statement can do a lot of the functional work you'd have to setup in ...

  5. Creating a Row Number in a Grouped Detail

    I've been working on a way to review with my power users how they've setup their Start Centers. The goal was to ensure suggested Start Center setups were in place and to see if any custom setups should be shared with other sites. This required getting a snapshot ...

Top