Blog
How to create follow-up Work Order with script
Maximo provides a useful action in many applications to create a follow-up work order or a linked service request from many applications. The same result can easily be automated using the WO.createWorkorder() or the Ticket.createWorkorder() API methods. The standard WO2WO or TICKET2WO crossover domains can also be used to copy some attributes from the source object to the new one. However, sometimes you need more control to automate the initialization of the new record. In this cases you may use more powerful versions of the createWorkorder() method.
March 6, 2024
System as-built documentation with MxLoader
Many large clients require to deliver an as-built document as part of the deliverables to be produced before the go-live. This is typically a Word document where all the Maximo configurations must be listed and described. I think this document has little real value for several reasons: It costs a lot of time and effort to be built It is a manual activity based on a lot copy-paste operations and so it is subject to user error
October 28, 2023
Maximo data archiving solutions
If you are using IBM Maximo from many years, you may start experiencing performance degradation navigating the user interface, searching for data or performing some transactions like changing the status of a record or routing the workflow. This is often caused by the accumulation of historical records in the Maximo database. There are some system tables in Maximo that never stop growing like WFASSIGNMENT, CRONTASKHISTORY or LOGINTRACKING. Other tables store business data but may not be relevant to the business. Why do you have to keep the history of statuses of work orders that were closed 5 years ago?
February 9, 2023
Handling workflow from automation script
If you need to handle workflows (start, stop, route, etc.) from an automation script you can use the following two Maximo API classes: WorkFlowService and WFInstance. Here are few examples. The WorkFlowService.initiateWorkflow metod can be used to start a workflow: from psdi.server import MXServer # get the workflow service wfSrv = MXServer.getMXServer().lookup('WORKFLOW') # start the workflow wfSrv.initiateWorkflow("MYWF", mbo) To stop an active workflow you can use WFInstance.stopWorkflow method:
January 25, 2023
The perfect MAXADMIN start center
Being efficient in our job should be always a top priority. As Maximo administrators and developers, we are logged many hours on the web interface and navigating around the UI. A properly configured MAXADMIN’s start center is one of the important things to set up. Here is a typical start center of one of my clients. Favorite applications The left side of the start center is dedicated to a set of links to the most commonly used administrative applications. The list is quite flexible depending on what applications you are actually using a lot.
January 23, 2023
Accessing UI methods from automation scripts
In Maximo 7.6.1.1 IBM has greatly improved the service implicit variable to provide a lot of useful methods to interact with the user interface. Two good examples are: service.openURL(String url, boolean newWindow)service.launchDialog(String dialogId) For a full reference of the service methods refer to this page.
December 19, 2022
Useful queries for users monitoring
Today aI want to share two simple but useful queries to be created in the Users application. The following where clause will list all active user sessions excluding system: SELECT * from maxuser WHERE userid in (select userid from maxsession where active=1 and issystem!=1) I always add a result set on MAXADMIN start center with this query to see how many users are logged on the production environment or how many developers and testers are connected to a development server.
December 19, 2022
Scripting Best Practices for Performance
This post is a copy of a PDF file published by IBM. I’m republishing it here to make it more accessible. Scripting allows users to extend maximo business logic using Python/JS or for that matter any other JSR 223 compliant scripting language. All the script code gets compiled to Java bytecode and are cached as part of Maximo runtime caches. So when the script is invoked – it’s the cached bytecode that is executed by the JVM using the JSR 223 bridge. Since the scripting code executes in the same thread as other Maximo business logic (written in Java), a poorly written script code can impact the performance of the system negatively. We have listed below a few common mistakes that we have seen. In general, we need to follow the Maximo performance guidelines as scripting in the end is equivalent to Maximo custom code.
October 30, 2022
Set long description from automation script
Today I have discovered a strange behavior when setting long descriptions from an automation script. You know that almost every DESCRIPTION field in Maximo has a corresponding “Long Description” field that is a CLOB attribute that can hold big amounts of text. This is driven by the “Long Description Owner” checkbox in Database Configuration. When this flag is selected, a non-persistent attribute named DESCRIPTION_LONGDESCRIPTION is created and can be get/set as any other attribute.
October 24, 2022
Budget Monitoring with Maximo
The Budget Monitoring application was introduced in May 2007 as part of the IBM Maximo 7.6.0.8 feature pack but its potential was largely underestimated by the user community. The application may seem complex and may be daunting at first, but in reality it is quite simple to configure for basic use, allowing later to extend its use to implement a more mature maintenance cost management process. In this post we will explain how it is possible, in a few simple steps, to create a budget and start monitoring costs related to maintenance by aggregating them by expense items.
October 10, 2022