Skip to content

Blog



Share this:

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.

Read more →

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

Read more →

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?

Read more →

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:

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

October 10, 2022