Replicating Spare Part Lists with Maximo BIRT & MIF

One of the complaints of using a software platform for a long time is you eventually say,

I wish we had this feature when we got started.

Right now that feature is Asset Templates. I'm starting to load several hundred assets into Maximo due a large capital project at one of our plants. The spare part lists for these assets will be so much easier because we're going to use Asset Templates for common assets. As we started to load templates for the new assets, the question came up on how can we apply a spare parts list to our existing assets.

For example, we have an asset with 18 spare parts already assigned to the record:

We needed a solution to re-apply those 18 parts to other assets in the plant. After some testing I finally came up with a method to utilize a custom BIRT report and data loading via the MIF.

Spare part data loading

The overall process works like this:

  1. Locate the asset that you want to apply the spare parts list to and note the asset number.
  2. Locate the asset that has the spare parts list you want to duplicate.
  3. Run a report to export the spare parts list that has a parameter to enter the asset number from step #1.
  4. Export the report as an XLS file. 1
  5. Open the file in Excel and export to CSV.
  6. Open the CSV file and remove a few of the extra ' from the XLS to CSV conversion.
  7. Open Integration > External Systems to select the Data system.
  8. In the Data system, open the Enterprise Services Tab.
  9. Select the Object Structure related to ASSET. 2
  10. Click on the Data Import button and select the Flat File option.

Once the file is imported, the spare parts list will be applied to the designated asset.

Setting up the Object Structure

The first part of this step is to setup an Object Structure against the Asset table. The basic setup would include the parent ASSET table and the child SPAREPART table.

Make sure to update the aliases for SITEID and ORGID on the SPAREPART object because these overlap from the parent ASSET table. If you don't add an alias for these two fields the data import will fail.

MIF Data Load Form

To aid in the export of an existing spare part list, I created a simple report that would export the ASSETNUM, ITEMNUM, QUANTITY, SITEID, and ORGID.

This is the basic outline of the CSV file needed to be loaded into Maximo via the MIF. The report will ask the user to enter the asset number that spare parts list will be applied to.

Once the report is run, we can see how the CSV file will look like for the flat file data load.

Export the the report results to Excel.

From here the file can be exported to a CSV file 3 and cleaned up.

In the example above, we need to remove the " and the extra , on the very first line. Save the file and it will be ready to load into Maximo.

Maximo MIF Date Format

As you experiment with other MIF data loading features, you may come across the need to import DATE or DATETIME data fields. The date format needs to be the following for each data type:

Data Type Date Format
DATE yyyy-mm-dd
DATETIME yyyy-dd-mm hh:mm:ss

Maximo MIF Flat File Action Properties

The other part of the data load process is setting up the CSV file header. In the example above we used a value in the CSV head to denote what kind of action the MIF data load should take on the ASSET table. In our case for the spare parts list, we needed to change the asset record because the asset we wanted to apply the spare parts list to already exists. There are other actions that can be taken, depending on how you intend to load records into Maximo.

Value Description
Add Add records to database in receiving system
AddChange Add or update existing records in the database in the receiving system
Change Update existing records in the database in the receiving system
Delete Delete records from the database in the receiving system
Replace Substitute existing records in the database in the receiving system
Null Add records or replace records in the database in the receiving system depending on whether the primary record exists in the database.

For NULL action:

  • If the primary record does NOT exist in the database, the system performs an Add action.
  • If the primary record DOES exist in the database, the system performs a Replace action.

  1. This would be so much simpler if Maximo had a direct CSV export option. 

  2. You may need to create a custom Object Structure for Asset and Spare Part. 

  3. Yes... I really do want to lose all the formatting so please just save the bloody file.