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.


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 .


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.


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.


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.

Maximo 7.6 Resources and Known Bugs

Maximo 7.6 was released last year with a ton of new features to explore. A lot of organizations are upgrading their existing Maximo implementation to 7.6 to benefit from these features.

Here are some of the resources that would help you know more about these features and about installing and upgrading to Maximo 7.6.

IBM Maximo Asset Management Wiki
Information regarding Maximo 7.6 features, installation, upgrade
Installing Maximo 7.6: A first look, part 1
Installing Maximo 7.6: A first look, part 2
Installing Maximo 7.6: A first look, part 3
Installing Maximo 7.6: A first look, part 4

Known bugs while installing Maximo 7.6:
1. While installing Maximo on windows server 2012, if the directory in which the installables are extracted has a space within the path, the installation fails.
2. After installation of maximo has completed the installValidation.bat throws NullPointer exception. PMR open with ibm.

Welcome to Maximo Concepts Blog!

Welcome to Maximo Concepts blog!

I have been working on Maximo for quiet some time now and thought why not share the knowledge and experience with everyone. I would try and posts both technical (configuration/customization) as well as functionality related posts. And I will try to make them as simple as possible for everyone to understand.

So there you go – my first post and many more to come.