Loading a Failure Hierarchy (Failure Codes) into Maximo MAS 9
Updated on · VAGANET EAM
In short. Load the codes first (FAILURECODE), then the
hierarchy (FAILURELIST) one level at a time: class, problem, cause, remedy.
Attach each level to its parent with PARENTCODE in MXAPIFAILURELIST, never with
the generated id. And do not rerun a sheet that already went through: FAILURELIST does not
prevent duplicates.
The failure hierarchy is one of the trickiest objects in a Maximo data migration: four levels linked by ids that Maximo generates itself. On MAS 9 the old methods (dedicated MxLoader 6.x sheets, database inserts) no longer apply.
The data model
| Table | Role |
|---|---|
FAILURECODE | The code and its description, one row per code, whatever its level |
FAILURELIST | The hierarchy: each row places a code at a level (class, problem, cause, remedy) and points to its parent through PARENT, the FAILURELIST id of the parent row |
That is the trap: FAILURELIST is a numeric id assigned at load time, so a source file
cannot know it in advance.
The method that works on MAS 9
- Codes and descriptions: load every code (classes, problems, causes, remedies) into
FAILURECODE. With MxLoader 8.5, theMXL_FAILURECODEobject structure does this. - Classes: create the top-level
FAILURELISTrows through the standardMXAPIFAILURELISTobject structure, without a parent. - Problems, then causes, then remedies: one pass per level, filling the non-persistent
PARENTCODEattribute with the parent's code. Maximo resolves the id itself. - Check: read
FAILURELISTback and compare row counts per level and per class with the source.
Rights matter: on MAS 9 the loading user must be authorized on every object structure used (see BMXAA9301E).
Pitfalls
- Duplicates on reload: with no functional unique index, rerunning a sheet recreates the rows. Keep track of what went through, or delete the class and start over.
- Same code in several places: a problem can exist under several classes.
PARENTCODEmust then point to the right parent in the right branch; load one class at a time if the source is ambiguous. - Database inserts and
PARENToverride: some teams force ids by changing the integration configuration directly in the database. That is impossible on MAS SaaS and fragile elsewhere. - Old sheets: MxLoader 6.x failure templates do not speak the REST API and do not work on MAS 9.
MHFAILURELIST (MAS 9.1)
Since MAS 9.1, the MHFAILURELIST object structure, from Maximo Health, groups
FAILURELIST and FAILURECODE with an associated processing class. It can simplify
the load. IBM development has however advised against depending on it in the medium term in core
Manage, since Health updates may change it. An enhancement request is open at IBM (MASM-I-1482).
Place in the load order
Load the failure hierarchy before the assets and locations that reference it through their failure class, and before any work order history. See the full order in the IBM Maximo data init guide.
Frequently asked questions
In which order should a failure hierarchy be loaded?
First the codes and their descriptions (FAILURECODE), then the hierarchy (FAILURELIST) level by level: classes, then problems attached to their class, then causes attached to their problem, then remedies attached to their cause.
How do I attach a problem to its class without knowing the FAILURELIST id?
The standard MXAPIFAILURELIST object structure exposes the non-persistent PARENTCODE attribute on FAILURELIST: you provide the parent's code instead of the numeric id generated by Maximo.
Why does a second load create duplicates?
FAILURELIST has no functional unique index on code and parent: rerunning the same sheet adds new rows. Check before any reload, or delete the affected class and start over.
Should I use MHFAILURELIST on MAS 9.1?
MHFAILURELIST, shipped with Maximo Health, holds FAILURELIST and FAILURECODE in one object structure. It can help, but IBM development advised against relying on it in the medium term in core Manage, since Health updates may change it.
Load your Maximo data without silent errors
MAS9 checks your files against each environment's configuration, resumes an interrupted load without duplicates, then reads Maximo back to prove every row arrived.
Discover MAS9