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.  

Previous posts:

  1. Incorporating Location Hierarchy on WO Print

    My company has recently been challenged with how we're using Maximo. On one front we're deploying Maximo to new sites that are transitioning off of another EAM platform. On the other front we have a facility that's tripling the size of the installed asset count. Both sites are dealing with …

  2. Setting PM to 1st Day of the Month

    First off, shout out to Bruno Portaluri (@bportaluri) for this tip. He summarized an answer to a question I had just received a few days earlier from one of my Planners. This Planner asked if we could schedule a PM to come out the first Friday of each month. At …

  3. Using Conditions for Tab Hiding

    My company recently migrated from Maximo 7.5 to 7.6. 1 One of the challenges an administrator has with a new version of Maximo is adjusting screens that come over as part of the upgrade. In our case we got a couple of new tabs because of new functionality …

  4. Add Conditional Security to prevent WO Cancellation

    A recent tweet from IBM on Maximo was technote about how a work order could be cancelled, even if materials were charged against the WO and recorded in the Actuals tab. For most long time Maximo users, the immediate reaction was, 'Pfffttt....that isn't possible.' IBM documented with 2 scenarios …

  5. Getting ISO Date & Day of Week in BIRT

    I was recently asked a very specific request from an end user about a date format in a report. The requirement was to have the the date in the report come out as ISO 860 date format and include the day of the week in parenthesis. So if the date …