Blog
Maximo script library
Maximo automation scripts became more and more powerful during the last years so we heavy rely on these capabilities to extend Maximo features and fulfill customer needs. When the amount of script code grows, it’s easy to end up into some sort of spaghetti code so you need a practical way split the code into reusable pieces. Modular programming and structured programming was adopted in software development since the late 1960s so we MUST definitely embed this technique in our developer’s toolset.
November 2, 2025
Implement complex workflow logic using Condition Launch Points script
The Maximo condition node allows to specify an condition in SQL format in order to drive the workflow in different ways depending on some custom logic. In some cases the logic that has to be implemented can be quite complex and not easy to implement using SQL syntax. In this case we can use an Automation Script with Custom Condition Launch Point. In the example we will look into the work orders tasks for a specific description - I know it’s a silly example :-)
September 20, 2025
Avoid editing of a child table
In some cases you need to prevent the editing of a child table (add/change/delete) in a Maximo application. For example, you want to prevent adding or changing records in the “Multiple Assets,Locations and CIs” table of the Work Order Tracking application when a work order is in status INPRG. The probem can be easily solved with an automation script on the Initialize event of the WORKORDER object that checks the status to the record and uses the MboSet.setFlag() method to mark the child MboSet as READONLY.
September 16, 2025
Adding Advanced Search menu to a Single Page app
The Maximo Single Page applications are simplified and provide a quicker way of visualizing and editing data. The Labor Reporting application is a good example of such kind of application. However, you may notice that custom Single Page applications do not provide the Advanced Search feature like the Labor Reporting app. To add the Advanced Search menu to a Single Page application to just need to perform three steps:
September 13, 2025
Speedup Maximo scripts development with VSCode plugins
When developing automation scripts I always like to have a shared filesystem with all the latest automation scripts. This allows me to use code editors or to better navigate across the entire code and eventually use source code versioning tools like Git or CVS. One technique I usually use is to use Notepad++ and edit the script locally and then copy-paste the code into Maximo. Sometimes this is really annoying and time consuming so a searched for a better approach.
November 17, 2024
Display custom icons in application's list view
Last week, a client asked if it was possible to display a warning icon on asset records based on certain business rules. Initially, this request posed a challenge, but I was able to find a solution to implement it effectively. The technique is based on a non persistent attribute populated an automation script that evaluates the business rules. The piece of the trick is to add the non persistent attribute in an icon control in the list view of the Assets application. Lets see all the steps.
November 16, 2024
How to get application name in automation scripts
IBM claims the you can use the implicit variable ‘app’ in automation scripts if you need to know the name of the Maximo application that is currently running. Unfortunately, this technique works only on the main object on which the application is defined. As an example, try to define the following automation script on the “before save” event of the SPAREPART object if app == 'ASSET': service.error("cx", appname, []) If you open the Assets application and try to update records in the Spare Parts table, you will see that you the error message will not be triggered because the ‘app’ variable will be empty. This is because the main object of the Assets application is ASSET and not SPAREPART.
November 16, 2024
Long-running Cron Tasks and Admin Mode
There are many blog posts in the Maximo technical community describing how to develop an automation script and schedule execution using a cron task (link1, link2). However, a custom cron task may run for a long period of time and this may block the system when trying to enable administrative mode. In this case you will see a long list of BMXAA9680I Crontask is running messaged in the “Turn Admin Mode ON” dialog.
October 12, 2024
Setup password expiration in Maximo
I was recently struggling understanding how enable password expiration in Maximo when using native authentication. This IBM TechNote explains very well how the standard Maximo expiration configuration works but there is a very tricky sentence: In the case of a user belonging to any groups not containing a password expiration, the user’s password will never expire. So i decided to run this query to check the password expiration setting for all the security groups.
March 19, 2024
Improved record change tracking using Audit feature
In a previous post, I demonstrated how the Maximo audit tracking can be used to display the updates made on a record enabling the audit and adding a “history” tab in the application. This technique is quite common but has a major drawback; it displays all the audited field in a row even if only one attribute was changed. When there are many audited fields it is very hard for the user understanding what was changed.
March 10, 2024