December 14, 2012

Maximo command line reference

I think that one of the things that are missing in the Maximo documentation is a command line reference. That's why I decided to go through the Maximo directories and search for commands that can be run the system prompt.

The following list should be intended as a work in progress. Many commands are not documented at all and I was not able to find any useful resource over the internet. If you have any additional information please leave a comment to this post and I will update this page.


  • adduser: Add a user (details)
  • cleanldapsyncparams: force a full LDAP sync (details)
  • cleanstartcenters: Force refresh of start centers (details)
  • commonenv: Internal use. Used by other scripts to setup the command line environment.
  • configdb: Run database configuration.
  • conflictchecker: Used for upgrades to determine if there are any name conflicts between the 6.2.x and 7.x database content using meta doc files from the upgrade installation media.
  • createnonenglishdb: Call maxinst with the maxdemo db. Then it import a set of localized files as base language. Eg : createnonenglishdb fr will create a French base language.
  • createshellscript: ????
  • DBBuildTest: ????
  • deletelang: Removes language from language tables
  • domainlinkchecker: Check values of attributes with a domain defined. Run it with no arguments to see how to use it.
  • dropbackup: Remove backup created from configdb. Should be run twice. (details)
  • encryptproperties: Encripts passwords in file (details)
  • importlanghelper: Should not be used. It is called from importlang utility.
  • integrityui: Launch the integrity checker UI. Must be run before upgrading to new versions.
  • logtranslator: Utility to translate Maximo log files into English
  • maxinst: Creates an empty or demo Maximo database (details)
  • PIIVersionUpdater: ???
  • pkginstall: This is used for the installation of .pkg files that IBM provides for certain updates.
  • restorefrombackup: Restores tables backed up during the configdb process.
  • showITICSysInfo: If you have ITIC tables filled in it should dump some info on ITIC
  • TDToolkit: Adds or updates translations (details)
  • textsearchscript: ???
  • updatedb: Updates Maximo database after a fixpack or addon installations. Typically is executed automatically by the installer.
  • updateRichText: Enables Rich Text for long descriptions (details)
  • updateXML: ???
  • upgrade: Upgrade utility to convert from the currently installed database release to the next release.
  • upgradescreens: ???
  • upgradeui: Tool to upgrade Maximo database (6->7.1, 7.1->7.5, etc.).
  • validate_integ: Runs integrity checker and validation utilities.
  • validate_validate: Similar to validate_integ with few more steps.
  • varcharmultiplier: Used to extend varchar fields on the database to accommodate the translation process, particularly for double-byte languages (details).
  • writereportprop: Export all language properties files for BIRT reports (details).
  • xliff2tms: ???


  • checkmxserver: Checks the connectivity to a Maximo server using RMI. It generates a report showing all of the Maximo and Java property values. Can be used to check if the server is running (details).
  • exportapp: Should export an application definition. Don't know how it works.
  • TestEmail: Utility to test the connectivity between the application server and mail server (details)
  • SetAdminMode: Turns ON/OFF the admin mode (details). Same functionality as the one from UI, but quite useful if you cannot log in to UI because of max session limit with Admin Mode ON.
  • Unlcvt: Gets information from Maximo database and generates an output file that can be used for creating another database. Can be used to transfer the current database to another type (eg. From Oracle to SQLServer or DB2).

  • [SMPDIR]\scripts

    • cleanupAdminWS: ???
    • cleanupDB: ???
    • cleanupPAE: ???
    • cleanupWAS: ???
    • cpappend: ???
    • installValidation: Checks if all steps of installer are OK.
    • LogZipper: Useful command to collect logs to be sent to IBM support (details).
    • taskRunner: This is used when you defer the configuration step in the Maximo install (the screen of three options: Defer Configuration, Defer Database Update, and Deploy Application Files (or Ears can't remember wording) manually. You'd simply run taskRunner CONTINUE STOPONERROR and it would complete the installation.
    • TestRXA: Tests RXA connection to specified host. RXA is used by the installation process to connect to remote systems and perform system commands (details).

December 7, 2012

I'm Winston Wolf I solve problems

As Maximo consultant I often feel like Winston Wolf in the famous Pulp Fiction movie.

December 5, 2012

Another interesting tablet for Maximo

Few days ago Panasonic announced the commercialization of the long waited Toughpad FZ-A1.
I think that Android is the best strategic option for mobile workforce enablement and the new Toughpad seems a very interesting rugged device to run Maximo Everyplace.
Another interesting news is that IBM has planned to deliver Maximo Mobile Suite on Android platform in the middle of 2013 so this is another good reason to go with Google's mobile platform.

If you need more details on this tablet checkout the announcement letter and specifications.

Here's also a funny video from Panasonic on the Toughpad tablets.

December 4, 2012

Do you use Maximo Everyplace on Android?

If you use Maximo Everyplace on Android you may wish to look at this small native app that I have developed to overcome some minor limitations of the product.

This are the enhancement provided by this native mobile app:

  • Free up screen space hiding browser's address bar and notification bar
  • Enable barcode scanning through the built-in camera
  • Disable back button to avoid browser mess up
  • Force user logout on exit
  • Lock the display zoom
  • Disable automatic screen orientation (auto, portrait, landscape)
  • Enforce the correct browser's settings needed to run Maximo Everyplace

Leave a comment here on ISM Library for feedback and suggestions.

November 26, 2012

How to reset user's Start Centers

Today I have discovered a nice script called cleanstartcenters.bat that can be used to force the reload of the Start Center for a specific set of users. The usage of this script is documented in this IBM TechNote.
Unfortunately, the script seems have some problems or I'm am too silly to use it :-) so I decided to develop my own set of SQL commands.

First of all you have to identify the set of start centers to be reset. In this example I want to reset all the start centers of the user's belonging to MYGROUP security group. Run this select and check the results.

SELECT * FROM scconfig WHERE groupname='MYGROUP';

Now replace the star (*) character with scconfigid and you will have something like this.

SELECT scconfigid FROM scconfig WHERE groupname='MYGROUP'

Now replace [SCLIST] in the following SQL delete statements with the previous select and execute them.

DELETE FROM rsconfig WHERE layoutid IN (SELECT layoutid FROM layout WHERE scconfigid IN ([SCLIST]));
DELETE FROM faconfig WHERE layoutid IN (SELECT layoutid FROM layout WHERE scconfigid IN ([SCLIST]));
DELETE FROM inbxconfig WHERE layoutid IN (SELECT layoutid FROM layout WHERE scconfigid IN ([SCLIST]));
DELETE FROM kpilconfig WHERE layoutid IN (SELECT layoutid FROM layout WHERE scconfigid IN ([SCLIST]));
DELETE FROM kpigconfig WHERE layoutid IN (SELECT layoutid FROM layout WHERE scconfigid IN ([SCLIST]));
DELETE FROM actionscfg WHERE layoutid IN (SELECT layoutid FROM layout WHERE scconfigid IN ([SCLIST]));
DELETE FROM portletdisplay WHERE layoutid IN (SELECT layoutid FROM layout WHERE scconfigid IN ([SCLIST]));

If everything is fine you can run the last two deletes.

DELETE FROM layout WHERE layoutid IN (SELECT layoutid FROM layout WHERE scconfigid IN ([SCLIST]));
DELETE FROM scconfig WHERE scconfigid IN ([SCLIST]);

November 22, 2012

Custom Java Class for Roles

This entry is part of the Maximo Java Development series.

This is just an example of a Maximo role defined with a custom Java class. In this example I have defined a role that can be used to send emails (Communication Template) to the workorder's supervisor or to the owner group if the supervisor is not set.

This is the definition of the role.

And this is the Java code.

package cust.psdi.workflow;

import java.rmi.RemoteException;

import psdi.common.role.CustomRoleAdapter;
import psdi.common.role.CustomRoleInterface;
import psdi.common.role.MaxRole;
import psdi.mbo.MboRemote;
import psdi.util.MXApplicationException;
import psdi.util.MXException;

 * Returns the supervisor if set otherwise returns the owner group
public class SupervisorOrOwnerGroup extends CustomRoleAdapter implements CustomRoleInterface
  public MboRemote evaluateCustomRole(MaxRole roleMbo, MboRemote currentMbo)
      throws MXException, RemoteException
    // check if the current MBO is a WorkOrder
    if (currentMbo instanceof
      throw new MXApplicationException("workflow", "WrongObject");

    String sup = currentMbo.getString("SUPERVISOR");
      // if the supervisor is set returns the corresponding person
      MboRemote mbs = currentMbo.getMboSet("SUPERVISOR").getMbo(0);
      return mbs.getMboSet("PERSON").getMbo(0);
    // otherwise returns the corresponding owner group
    return currentMbo.getMboSet("WORKORDERTOPERSONGROUP").getMbo(0);

November 18, 2012

Reading and updating Mbo's attributes

This entry is part of the Maximo Java Development series.

In this post I have explained how to query and fetch MBOs from the database. In this small article I will show how to get and set the attributes of an Mbo.

How to read attributes

To read the attributes of an Mbo you can use teh following getXxxx methods:
  • getBoolean
  • getByte
  • getBytes
  • getDate
  • getDouble
  • getFloat
  • getInt
  • getLong
  • getString

All these methods accept only one argument which is the name of the attribute to be retrieved from the Mbo.
Here is a a small example showing how to retrieve the ASSETNUM and ASSETID of an asset.

String assetnum = asset.getString("ASSETNUM");
int assetid = asset.getInt("ASSETID");

The is also a special technique to retrieve multiple attributes using the getMboValueData method as described in this post.

How to set attributes

To modify the value of a field you can use setValue methods. The setValueNull method can be used to set a null value. Here is a a small example showing how to set the DESCRIPTION and INSTALLDATE of an asset.

asset.setValue("DESCRIPTION", "New description");
asset.setValue("INSTALLDATE", new Date());

All setValue methods have a second version that accepts some flags. The valid flags are defined in the MboConstants class. Here are the most important ones:
  • NOVALIDATION: suppress validation
  • NOACTION: suppress action
  • NOVALIDATION_AND_NOACTION: suppress validation and action
  • NOACCESSCHECK: suppress access control checks

They can be merged with the bitwise OR operator '|'.

asset.setValue("DESCRIPTION", "d1", NOVALIDATION);

November 17, 2012

Quering and fetching MBOs

This entry is part of the Maximo Java Development series.

To query a Maximo table using Java you need to perform the following steps:
  1. Get a reference to the MboSet.
  2. Specify a where clause.
  3. Loop through the MboSet and fetch Mbos.
The following example shows how to retrieve all the assets located in BEDFORD site.

MboSetRemote assetSet = getMboSet("ASSET");
MboRemote asset=null;
for(int i=0; (asset=assetSet.getMbo(i))!=null; i++)

  • The getMboSet method gets a reference the ASSET table.
  • The setWhere method specifies the SQL where clause that must be applied to filter data. If the setWhere is not invoked, the entire table will be fetched.
  • The getMbo method returns a specific element of the MboSet collection. The first invocation of getMbo method automatically fetches data and initialize the MboSet.

November 16, 2012

How to test workflows notifications and emails

Today I want to share with you all a very efficient technique that I use to test email notifications and communication templates in workflows.

The technique is based on a very lightweight dummy SMTP server called smtp4dev that can run on any Windows system. This small application sits in the system tray and does not deliver the received messages. The received messages can be quickly viewed, saved and the source/structure inspected.

I typically install this little app on the same system where Maximo runs but you can chose to install it on another Windows system if you prefer so.
First of all you need to install Microsoft .NET Framework 3.5. You can download it from here.
Now go to the smtp4dev website and download the latest standalone package.
Launch the smtp4dev.exe file and leave it running.

Now open Maximo and edit the system property setting it with the hostname of the system where you have installed smpt4dev. You can set it to localhost if it is installed on Maximo server. Remember to do a 'live refresh' of the system property.

Now you are free to test your workflow and communication templates. Emails will not be delivered to real users but will be forwarded to smtp4app. Every time an email is sent from Maximo, you will see an new row into smtp4dev interface. Here is how it looks like.

If you have problems running the smtp4dev application, try to click on the Options button. If you get an error like this it means that you have not installed the right .NET framework.

Happy email testing to everyone!

November 13, 2012

Maximo 7.5 education sessions

During the second half of 2012 IBM held some great education sessions to assist customers in planning their upgrade to Maximo Asset Management 7.5 and SmartCloud Control Desk 7.5. This series was devoted to the Maximo product suite, add-on's and industry solutions. In each session, a member of the business architecture team delivers a presentation chronicling the incremental enhancements made in the product as well as point out functional changes to existing features.

Note: Password for all sessions is tiv0li (0 is a zero)

Session Topic Playback Presentation
Email, Workflow, Esclations
Migration Manager
Work Management
PMs, Meters, Condition Monitoring
Labor, Person, Craft
Assets and Locations
Material Management
Purchasing and Invoicing
Control Desk
ERP Adapters
Archiving, Monitoring
Life Science, Calibration
Crew Management and Healthcare
Oil and Gas, HSE
Service Provider

IBM Maximo 7.5 STE webpage