Category Archives: MAXIMO UI

Conditional Domains explained………


Consider the following scenario:

You want to add a new status for Workorder which is a Synonym for an existing one. This status is only visible based on a certain Work Type.

This looks very simple but there is just one small trick we need to achieve this.

First create the condition in Conditional Expression application as below:


Go to Domains application and add the new status in WOSTATUS domain. Lets call this as “REVW”.

In View Modify conditions select the condition which checks the worktype as per below screenshot. When you test you will get an error “WorkType” attribute not found. The trick is to add a field WORKTYPE to WOCHANGESTATUS table. Because, when this condition is used on selecting the status ABC it also tries to validate on the dialog table which in this case is a non-persistent table called WOCHANGESTATUS. Let me know if you have any questions.



Field Validation Classes in Maximo


In maximo there are three types of field validation classes which you can write depending on your circumstances:

1) Field validation class for a persistent field (normal field) in maximo

2) Field validation class for a persistent field (normal field) in maximo which needs to also have a lookup

3) Field validation class for a NON persistent field (normal field) in maximo

In this case lets consider the field we want to write a field validation class on is “LEADCRAFT” (some dummy name) and for scenario one its a persistent field.

Scenario 1) In this case we will write a java class which extends “psdi.mbo.MboValueAdapter” core maximo class. You will need to have a constructor of type below:

public FldValidationClass(MboValue mbv) {


There are three important methods:

INIT: This method you can write code to setup the field whenever it is displayed on the UI

VALIDATE: This method will be called whenever this field is modified. So, like if someone types something from the frontend and tabs out this class is called. Even if someone in some other class sets value to “LEADCRAFT” field and does not set the flag to not call validation (MboConstants.NOVALIDATION), then also the field validation class is called.

ACTION: You should use this method if based on this field you want to set values on some other fields. One thing to note is ACTION is only called if VALIDATE is successful.

Scenario 2) In this scenario you want to write a field validation class on a field which also has a look up attached to it. If you specify DOMAINID and CLASSNAME both in MAXATTRIBUTE table, the custom class or field validation class is never invoked.

So, if you want a lookup as well as some custom validation and action. You should write a field validation class which extends psdi.mbo.MAXTableDomain.

Apart from the three methods listed above, the other important method in this scenario which become3s available is:

public MboSetRemote getList()
        throws MXException, RemoteException

You should override this method and return the MboSet with the values which will be displayed in the lookup.

Scenario 3) This scenario is mostly same as scenario No. 1 the only difference being, when you want to setup a non-persistent field to display on UI use the INITVALUE method instead of INIT in case of non-persistent fields.

Hope this helps, Enjoy!!


Aniruddh Panvalkar

Fixed: Create iframe control in Maximo 7


I found many users are having the problem when they embed an iFrame in a section as per the post on:

That post is very useful to many of us but some of us faced a problem like it was appending:


The solution is very simple, just remove all the ” from the below iFrame and it works:



Thats it 🙂



Redirect from one app in Maximo to another

Hi All,
This is my first post and you can expect many more in days to come.
If you are in Workorder and want to send the user to another application if a user clicks some Select Action or any such menu we can do that by writing the following three lines in the code:

WebClientEvent newEvent = new WebClientEvent(“changeapp”,,”receipts”,null,null,null,selectedMbo.getUniqueIDValue(),this.clientSession);



 The constructor for creating this event being used is:

psdi.webclient.system.controller.WebClientEvent.WebClientEvent(String type, String targetId, Object value, String row, String additionalEvent, String additionalEventValue, long uniqueid, WebClientSession wcs)

As you can see is we can give an additionalEvent which can be “sqlwhere” which forwards the user to the search page of Receipts Application.