Maximo MIF: Object Structures, Enterprise Services and File Import
Updated on · VAGANET EAM
In short. The MIF (Maximo Integration Framework) loads data through three layers: the
object structure (which objects and attributes), the enterprise
service (how the inbound message is processed) and the external system (who
sends, under which rules). For a repeatable data init, use the AddChange action and
check your files before import.
The Maximo Integration Framework is the foundation of all integrations in IBM Maximo Manage, including in MAS 9. Even when you load through the REST API or MxLoader, it is the MIF object structures that define what can be written. Understanding its building blocks avoids most rejections.
The MIF building blocks
| Component | Role | Example |
|---|---|---|
| Object structure | Defines the main object, its children and the exposed attributes | MXASSET: ASSET + ASSETSPEC + ASSETMETER |
| Enterprise service | Processes an inbound message for an object structure (rules, transformations) | MXASSETInterface |
| External system | Groups the services allowed for a sender, with its queues and rules | EXTSYS1 |
| Publish channel | Sends outbound data (outside the scope of loading) | Outbound MXASSETInterface |
| Endpoint | Technical destination of an exchange (HTTP, file, JMS) | HTTP endpoint |
Object structures useful for a data init
The object structures delivered as standard cover most loading needs:
MXDOMAIN(value lists),MXCLASSIFICATION(classifications);MXVENDOR(companies),MXPERSON(people),MXCRAFT,MXLABOR;MXOPERLOCorMXLOCATION(locations),MXASSET(assets),MXMETER(meters);MXITEM(items),MXINVENTORY(inventory);MXJOBPLAN(job plans),MXPM(preventive maintenance),MXWO(work orders).
Before loading, check in the Object Structures application that the attributes in your file are
actually included: a column missing from the object structure is ignored or rejected depending on the
channel. Attributes added by the project must be added there too. To avoid altering a standard object
structure, duplicate it (for example ZZ_MXASSET) and work on the copy.
Processing actions
Each inbound record carries an action that dictates Maximo's behavior:
| Action | If the record does not exist | If it exists | Use |
|---|---|---|---|
Add | Created | Error | Strict first load |
AddChange | Created | Updated (absent children kept) | Repeatable data init |
Change | Error | Updated | Bulk correction |
Replace | Created | Replaced, children included | Full alignment |
Sync | Created | Updated and children aligned | Synchronization from a master system |
Delete | Error | Deleted | Handle with care |
AddChange is the reference action for a data migration: a file that is
interrupted and then restarted creates no duplicates, and a correction can be replayed without
preparation.
Importing a CSV or XML file
The MIF data import application accepts flat files (CSV, with configurable delimiter and text qualifier) or XML. For a flat file:
- declare the object structure as a flat structure (attributes without name conflicts, aliases if needed);
- associate the enterprise service with the external system and enable it;
- prepare the file: technical header (service name and action), then one row per record;
- import in immediate mode for a small volume, or through the inbound queue for a large volume.
With queue processing, messages in error are reviewed and replayed in the Message Reprocessing application. On hundreds of thousands of rows, this follow-up quickly becomes heavy: you then need a tool that groups errors by cause and replays only the corrected rows.
Sending over HTTP
Enterprise services can also be reached over HTTP at /meaweb/es/<external
system>/<enterprise service>, and object structures at
/meaweb/os/<object structure>, with an XML message. This is useful to reuse exactly
the processing rules configured on the service. For JSON and bulk calls, the REST API is simpler: see the
REST API guide.
The most common MIF errors
- Record already exists:
Addaction on an existing key; switch toAddChange. - Value outside the list: status, type or unit missing from the target environment's domain.
- Non-existent reference: location, parent asset or item not yet loaded; review the load order.
- Missing required attribute or length exceeded.
- Shifted columns: delimiter, qualifier or decimal separator declared incorrectly.
- Insufficient permissions: the integration user has no access to the application or the site.
The quality control guide explains how to detect these errors before sending rather than after.
Frequently asked questions
What is an object structure in Maximo?
An object structure is the definition of an integration message: a main object (for example ASSET) and its child objects (specifications, meters), with the list of included attributes. It serves as the contract for inbound and outbound MIF exchanges and for the REST API. Standard object structures start with MX (MXASSET, MXITEM, MXPERSON); those designed for the REST API start with MXAPI.
What is the difference between Add, AddChange and Sync?
Add creates the record and fails if it already exists. AddChange creates the record if it does not exist and updates it otherwise, without touching children absent from the message. Sync creates or updates the record and also aligns its children with the content of the message. For a repeatable load, AddChange is the safest choice.
How do you import a CSV file into Maximo?
Through the MIF data import application: you choose an external system and an enterprise service whose object structure is declared as a flat structure, then import the file. Processing can be immediate or go through the inbound queue, where errors can be reviewed and replayed in the Message Reprocessing application.
Do the delimiter and text qualifier matter?
Yes for flat file import: they must match the file. An undeclared semicolon delimiter or an unclosed quote in a description shifts the columns. Check the file before sending.
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