Skip to content

Blog



Share this:

How to correctly handle synonym domains in automation script

We all know that Maximo allows the definition of new internal values for synonym domains. A common example is the LOCTYPE domain that defines the allowed values for the LOCATIONS.TYPE field. If we want to implement a special business logic for the OPERATING type of locations we can write something like this in our automation script. loctype = mbo.getString("TYPE") if loctype=="OPERATING": # do something.... However, if we define a new alias for the OPERATING type this script will not work as expected because it will not manage automatically the different internal values of the LOCTYPE domain.

Read more →

September 27, 2018

Sending SMS from Maximo calling an external Web service

In my last project I had to implement a customization to send SMS messages using Skebby. The service APIs are obviously based on REST and JSON so I ended up writing an automation script to integrate Maximo with the Skebby service. In the process of writing the code I have faced (and solved) some interesting issues so the developed script is quite complex and is an interesting demonstration of several useful techniques:

Read more →

August 30, 2018

Disable automatic asset/location population in Work Order and Ticket applications

Maximo has a feature that automatically populates the asset when a user enters a location and viceversa. This is a feature may be useful for most clients but some other clients don’t like this behavior. Unfortunately Maximo does not have a built in switch to disable this. The best solution to solve the problem is to use an automation script with an attribute launch point. This is documented in this post but i made few improvements to it. My script resets the asset only when the location has been changed and ASSETNUM is changing from null to a new value. This is because there is already a warning dialog when the asset is changed from another value.

Read more →

August 23, 2018

How to restrict allowed status changes for workorders

Maximo has a predefined set of statuses for work orders that are defined in the WOSTATUS synonym domain. The values and their meaning are well documented in the official documentation. Unfortunately the allowed state transitions are hardcoded in the psdi.app.workorder.WOStatusHandler class and cannot be easily changed since they are defined as private arrays. Here is a brief summary of the allowed status changes. WAPPR APPR WSCH WMATL INPRG COMP CAN CLOSE WAPPR - Y Y Y Y Y Y Y APPR Y - Y Y Y Y - Y WSCH Y Y - Y Y Y - Y WMATL Y Y Y - Y Y - Y INPRG Y - Y - Y COMP - - Y CAN - - CLOSE - From status APPR you can set any target status.

Read more →

August 22, 2018

How to extract emails to notify users

There are several situation where you need to quickly notify a set of users sending them an email. These are few examples of such situations. There is a urgent maintenance activity to perform on Maximo that requires to enable the admin mode and logoff all the users. You are going to rollout an additional validation into an application that will affect the way technicians must enter data when closing work orders. An important event has appended (incident or critical problem) and you must alert people as soon as possible. The built-in Bulletin Board application often solves these problem that allows to broadcast information throughout your organization. You can specify an audience for a message, based on organization, site or person group. Messages will appear on the start centers and a notification icon will be displayed at the top of the window. Furthermore, the ‘Create Communication’ action allows to send an email to the selected audience.

Read more →

October 25, 2017

Security groups and application authorizations

We all know how flexible Security Groups are when dealing with user roles and granting application authorizations. However, flexibility often brings complexity. You have carefully designed user’s roles defining what applications and actions they are allowed to access in Maximo and implemented all using Security Groups application. The system goes live and after one or two years everything is messed up. Is too hard to check who has access to what and you no longer sure if the young electrician that was just hired 2 months ago has access to Database Configuration or Application Designer :-)

Read more →

August 4, 2017

MxLoader now supports attachments

I have just implemented the capability to upload attachments straight from MxLoader. This is in response to some requests on my blog and MxLoader support forum. Starting from Maximo 7.1.1.6 it is possible to import attachments to an object through MIF using Base64 encoding. MxLoader has the capability to read files from the filesystem, encode them in Base64 and upload them on Maximo. This can be done on any Maximo object that supports attachments but the integration object structure has to be modified to include the DOCLINK object.

Read more →

June 13, 2017

Is your Maximo database in good health?

We all know Maximo is a complex product. It has plenty of features and is very flexible but sometimes complex to manage especially when system performances are poor. A lot of things may affect the perceived performances of Maximo and it may be hard to have an overview of the entire system configuration. What are the largest tables in the database that may need archiving? Are database statistics updated to optimize database queries? How much data is stored for each site? Has the workload of system increased over the last years? What are the most heavy reports users execute? What are the most resources-consuming crontasks and escalations? How is the reports/crontasks/escalations workload spread across the day?

Read more →

June 2, 2017

Maximo REST APIs examples

This entry is part of the Maximo Integration Framework series. Update April 2021 - This post describes the old REST APIs. A tutorial on the new APIs can be found here. In this tutorial I will show how easy it is to query and update data in Maximo using the Integration Framework (MIF) REST interface. To send REST calls you first need to setup an HTTP/REST client. In this tutorial I will use a Google Chrome add-on called Advanced REST Client.

Read more →

April 4, 2017

Load failure codes in Maximo with MxLoader

This is an old post that uses a legacy version of MxLoader that only supports only OS service. For MAS Manage please refer to this post. Creating and maintaining the hierarchy of failure codes in Maximo can be quite long and boring task using the standard Failure Codes application. The easiest and fastest way of importing Failure codes and the corresponding hierarchy is using MxLoader. The example described in this post is available in this tailored in this sample MxLoader file. Please download it before proceeding.

Read more →

March 16, 2017