Disabling The Warning Message Shown While Closing The Browser

Sometimes when I am in a hurry and I have to close my browser which has multiple Maximo sessions open, it is very frustrating to see each tab asking me to click on ‘Leave This Page’ to close it even after signing out from one of the tabs.

Close Confirmation

There is a property in Maximo – webclient.exitwarn to disable this. By default its set to 1. Setting it to 0 from the system property application will disable the confirmation box. This doesn’t require a restart to take effect as this property is Live Refresh enabled.

Inventory Counting in Maximo for Transportation

As the name suggests Inventory Counting (Tr) application can be used to record physical count on items in the inventory. This application can come in handy while performing physical counts, cycle checks or surprise checks on a storeroom.

The application can be used to –

  • Record physical count on the stock – specific items, rotables, tools, etc.
  • Reconcile the balances if discrepancies are found.

Inventory Counting (Tr)

For details on how to use the application refer the attached document.

Using Inventory Counting (Tr)

Asset Alias in Maximo for Transportation

Maximo for Transportation has a unique feature in the asset application known as the asset alias. This feature helps to create multiple aliases for an asset.

Consider the scenario of a transportation asset, say a rail car whose number is defined based on the type of bogies and the truck system attached to it. So if the configuration of the railcar is changed, the number also changes. In Maximo, changing of the configuration will result in decommissioning of the old asset and creating a new one with the new railcar number. This will result in lots of new record being created in the system and loss of history of the asset. Asset alias functionality can be used to avoid this. Every time the configuration of the railcar is changed, a new alias can be added to the asset and the old one can be deleted.

The best part of this feature is that the user doesn’t have to remember the asset number while working on the asset in Maximo. Simply putting the alias in the asset number field in work order or PM application would fetch the asset number for that alias. And this feature of fetching the asset based on alias works not only in the transportation applications but also in the base applications.

How to add alias to an asset? – Refer the ibm technote below.

Using Asset Aliases in Maximo for Transportation

Printing Class Details When Debugging in Maximo

Sometimes when I am asked to look into some issue or I have to debug some out of the box functionality in Maximo, I start wondering where to start.

Logs are one good place to start debugging. Turning the logger level of appropriate loggers to debug prints lots of information in the system out (which can be a performance overhead also so be cautious).

To print more specific details of the class that is writing these logs there is a tweak that can be done in the logging application.

In the logging application, in the Manage Appenders dialog in the select action, select the console appender. In the table details, update the Conversion Pattern to

–CLASS -> %C LINE -> %L %d{dd MMM yyyy HH:mm:ss:SSS} [%-2p] [%s] [%q] %m%n

Logger - Manager Appender

This will print the classname and the line number for all the log entries made in the systemOut.log and maximo.log, which will look something like this –

Logger - SystemOutLog

This can be the starting point for your debugging. If you created custom appenders, this tweak can be implemented on the custom appenders leaving the console appender as it is.

isNew() vs toBeAdded() Methods in MBO

Often this question is asked that what is the difference between isNew() and toBeAdded() methods of the Mbo. Before I explain the difference let me tell you what these methods are –

  • isNew() – Returns whether the mbo is new or not. true, if the mbo is new (i.e. created by calling add() or insert() methods), otherwise false.
  • toBeAdded() – Returns whether the Mbo is to be added to storage
  • toBeDeleted() – Returns whether the Mbo is to be deleted from storage
  • toBeSaved() – Returns whether the object need to be saved to persistent storage. This will also check child objects.

All these method are in the psdi.mbo.Mbo class and have a return type as Boolean.

The difference is explained using the scenarios in the below table

Scenario isNew()  toBeAdded() toBeDeleted() toBeSaved()
New Mbo Added True True False True
New Mbo Added, deleted before saving the Mbo True False True False
Existing Mbo updated False False False True
Existing Mbo deleted False False True False

All about Count Method

Although it is discouraged to use the count method of mboSet as it hits the database to get the count but at times it can be very useful. There is an overloaded method count(int countConstant) that can be used to get the count of mbos that are in different state in the mboset.

Here is the explanation of the parameter –

countConstant – one of the constants from psdi.mbo.MboConstants. The list below shows each constant and describes the count returned for each.

  • COUNT_DATABASE — The count from the database.
  • COUNT_ADDITIONS — The count of newly added Mbos that have not yet been saved.
  • COUNT_DELETED — The count of Mbos marked for deletion that have not yet been saved.
  • COUNT_EXISTING — The sum of the count from the database (COUNT_DATABASE) plus newly added Mbos that have not yet been saved (COUNT_ADDITIONS).
  • COUNT_AFTERSAVE — The number of Mbos that is anticipated to be in this MboSet after saving. Equals the sum of the count from the database (COUNT_DATABASE) plus newly added Mbos that have not yet been saved (COUNT_ADDITIONS) minus Mbos marked for deletion that have not yet been saved (COUNT_DELETED).

The count() method without the parameter is Same as count(COUNT_EXISTING).

Workflow Delegation in Maximo

The workflow engine of Maximo has a functionality which can be used to delegate workflow assignment to a specific person for a specific period of time.

This can be useful when a person is expected to be out of office and may not have access to Maximo. The person can setup the delegate in the person application in the workflow and work order section.

WorkFlowDelegate

The table below shows how the workflow engine would assign the workflow to the person based on values in the three fields.

Workflow Delegate Delegate From Delegate To Assignment Result
x x x Workflow would be assigned to the intended person
wilson x x Workflow would be always assigned to wilson
wilson 8/12/2015 x From 8/12/15 onwards workflow would be always assigned to wilson
wilson 8/12/2015 8/31/2015 From 8/12/15 till 8/31/15 workflow would be assigned to wilson

Lookup With WhereClause

Did you know that you can create lookups in Maximo (in the lookups.xml) with whereclause and attach it to an attribute in application designer. The attribute doesn’t require a domain to be attached to it to show the data in the lookup .

Lookup_WhereClause

The lookup will simply query the object mentioned in the mboname with the whereclause and display the result. The only drawback to this approach is that there is no validation on the attribute – any value entered in the field would be accepted without any validation.

The where clause also accepts run-time variables such as :user.

This is useful in places such as report request pages where a parameter needs to be passed to the report with a lookup which shows much filtered data then is usually shown in the lookup in the application.

For instance this asset availability report request page has a parameter as Tool which only shows items of type tool and not all the items.

ReportRequestPage_ToolLookup

Configuring Download Limit in Maximo

Did you know that there is a property in Maximo to limits the number of records downloaded from the list tab, dialogs and tables. The webclient.maxdownloadrows in system properties can be used to achieve this. The default value for this property is set to -1.

webclient.maxdownloadrows

A setting of -1 will result in unlimited download records from the List tab, however it will result in any download from a lookup dialog to default to the out of the box limit of 200 rows.

Note that the same limit of 200 rows will apply to the tables in the application (table like Subassemblies table in the Spare Parts tab of the Asset application)

A setting higher than 200, for example 500, will result in the limit being set at all the places – list tab, dialogs and tables.

This property is Live Refresh enabled so it doesn’t require a server restart to take effect.

Caution – Setting the limit to too high a value may result in performance issues and sometimes the JVM may go out of memory specially if the table being downloaded has lots of related columns (columns shown using relationship).

Asset Specification Removed if Asset Changed to Rotating

Did you know Maximo allows for a non-rotating assets to be changed into rotating assets by adding item to the asset from select action option in asset application. When this is done, any existing specification against the asset will be removed. If the item being attached to the asset to make it rotating has an existing specification, it will be copied over to the rotating asset. Any update then made to the specification of the item master record will update the associated rotating items.