Skip to content
Troubleshooting

The most common Maximo data load errors: diagnosis and fixes

Updated on · VAGANET EAM

In short. Almost every Maximo load rejection falls into six families: access denied, value not in domain, missing reference (parent, site, organization), required field or length, format (dates, decimals) and duplicate or lock. Read the full message in the response, classify the error, fix it at the source, then replay only the rejected rows.

A load rarely fails for a mysterious reason. Maximo applies its business rules row by row and returns a BMXAA code with a message naming the object, field or value. The hard part is first to read that message, then to decide whether the fix belongs in the file or in the environment's configuration.

Read an error before fixing it

Three facts are enough to diagnose: the object involved (asset, location, item…), the field or value quoted, and the row in the file. Write them down before changing anything. Two habits save hours:

  • Handle the first error on a parent object first. If a location fails, every asset that references it will fail afterwards: these are cascading errors, not separate problems.
  • Reproduce by hand. Key the same value into the relevant Maximo application. If the entry fails too, the cause is configuration; otherwise it is in the file.

The six error families

FamilyTypical symptomFrequent causeFix
Access denied401, 403 or "not authorized" messageInvalid credential or key, object structure not granted to the user's groupCheck authentication, then permissions (see below)
Value not in domainValue "not valid" for a list fieldStatus, type or unit of measure missing from the target environment's domainAlign the file with the domain, or add the value after a business decision
Missing referenceParent object, site or organization not foundLoad order not followed, or key spelled differentlyLoad referenced objects before referencing ones; check case and spaces
Required / lengthEmpty required field, value too longEmpty column in the file, value longer than the Maximo fieldFill in or shorten at the source; never truncate silently
FormatDate or number rejectedUnexpected date format, decimal separator or encodingNormalize before loading
Duplicate or lockRecord already exists, or modified by another userKey repeated in the file, reload as pure create, concurrent processingDeduplicate; load with AddChange; avoid simultaneous loads on the same object

Access denied: authentication or authorization?

Tell the two apart. A failed authentication (401) means Maximo does not recognize the caller: expired key or token, wrong environment. A failed authorization (403 or "not authorized") means the caller is known but has no right on the object. On MAS 9 the second case is typical for object structures that have no authorization name; it is detailed in the guide BMXAA9301E on Maximo MAS 9.

Value not in domain: the most frequent rejection

A domain-governed field only accepts the values of that domain, and those differ from one environment to another. An asset status valid in development may be missing in test. Before loading, extract the distinct values of every list column and compare them with the target environment's domain. When a value is missing, the question is not technical: the business decides whether to map the source value to an existing one or to create the value in the domain, and in that case it must be done in configuration before the load.

Synonym domains have their own trap: the file carries the displayed value and Maximo derives the internal value. Check both.

Missing references and cascading errors

The number one cause is load order: an asset cannot reference a location that does not exist yet. Follow the order described in the guide Maximo data init: organization and site, value lists, locations (parents before children), then assets. If the order is right, look for keying differences: trailing space, case, leading zeros dropped by a spreadsheet ("00123" turned into "123").

Required fields, lengths and formats

  • Required: whether a field is required can depend on the environment's configuration (a field made required locally). Compare the file with the target's configuration, not the source's.
  • Length: a description longer than the field is rejected. Measure the maximum lengths in the file before loading; agree with the business whether to shorten or to use the long description.
  • Dates and numbers: a spreadsheet silently rewrites dates and decimals according to the workstation's language. Fix a single format, preferably ISO for dates, and a single decimal separator.

Duplicates, locks and replay

A key present twice in the file produces a conflict, and so does reloading already loaded objects as a pure create. The AddChange action creates or updates according to the key and makes replay safe. Beware of objects with no unique functional key, though: replaying the same sheet can duplicate rows, as described in the guide on failure hierarchies. Messages saying a record was modified by another user point to concurrent processing: do not load two files touching the same object in parallel.

Recovery method after rejections

  1. Export the rejection list with object, field, value and message.
  2. Group by cause, not by row: one missing domain value can explain thousands of rejections.
  3. Fix at the source and keep the corrected file as the reference version.
  4. Replay the rejected rows with AddChange.
  5. Read Maximo back and compare with the file: see control and prove a data migration.

These rejections are best discovered as early as possible in a mock load, never on cutover day. MAS9 checks files against each environment's configuration before loading, so that these error families surface before the first send.

Frequently asked questions

Why does my Maximo load return "Bad Request" with no detail?

"Bad Request" is only the HTTP envelope: the precise reason is in the response body, as a BMXAA code and a message. Read the full message, as it almost always names the object, field or value involved. If your tool only shows the envelope, look at the raw response or at Maximo's integration message tracking.

How do I tell whether the error comes from the file or from Maximo's configuration?

Replay the same row on another environment, or key the value in by hand in the application. If the manual entry fails too, the cause is the environment's configuration (domain, permission, setting). If it works, the cause is in the file: format, value or load order.

Do I need to reload the whole file after fixing a few rejected rows?

No, provided you load with an AddChange action, which creates or updates according to the object's key. Replaying only the rejected rows, or even the whole file, then creates no duplicates. Without that guarantee, replaying a whole file is risky.

Is a row loaded without an error necessarily in Maximo?

No. A tool's acknowledgement is not proof: a business rule, a deferred process or an interruption can leave a row missing. The only proof is to read Maximo back after the load and compare it with the file.

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