IBM Maximo Sync

Internal integration. The IBM Maximo puller runs inside Treedis — it is not a public API and is intentionally not part of the API Reference. This page documents how to set it up and how it behaves for operators and support.

The IBM Maximo integration is a passive puller: on a schedule you choose, Treedis authenticates to your Maximo (Maximo Application Suite) REST/OSLC API, pulls rows from the asset / operating-location object structures you map, and upserts them into your Connected-Workers asset tables. Nothing is pushed back to Maximo — it is read-only against your Maximo instance.

It is configured per workspace from Workspace → Settings → Integrations → IBM Maximo.

1. Authenticate

Maximo (MAS) authenticates with the OAuth2 client-credentials grant against your MAS token endpoint. Copy these values into the integration form:

Treedis field What it is
tokenEndpoint OAuth2 (MAS) token URL, client-credentials grant.
clientId OAuth2 client id.
clientSecret OAuth2 client secret.
maximoBaseUrl Maximo base URL, e.g. https://host/maximo.
apiContext (optional) REST context segment — oslc (default) or api.
scope (optional) OAuth2 scope, if your auth server requires one.

clientSecret is a secret — once saved it is never shown again (the form only indicates whether it is set). Treedis exchanges the client id/secret for a short-lived bearer token, caches it until just before expiry, and sends it on every REST request.

2. Choose how often it syncs

Once authenticated, open Configure and pick a sync frequency: every 1 hour, 6 hours, 12 hours, or 24 hours (default: 24h).

A single background job ticks hourly and runs a workspace only when its chosen interval has elapsed since the last successful run. Use Sync now in the Configure dialog to run an out-of-band sync immediately; the dialog shows the last sync time and status (and the error, if the last run failed).

3. Map Maximo fields to your asset columns

Mapping is configured per asset table from the IBM Maximo Mapping item on that table's toolbar menu (available on workspace-level asset tables once the integration is enabled). For each table you set:

  • Maximo object structure — the OSLC object structure to pull from (e.g. mxapiasset for assets, mxapioperloc for operating locations). Treedis probes that structure's field names to pick from; you can also type a field name directly.
  • Field → column rows — each maps one Maximo field to one of your asset columns. Only the columns you map are written; everything else on the row is ignored.
  • Primary-key column — the column Treedis uses to recognise an existing row. Defaults to the table's title column.

Treedis reads lean OSLC pages (oslc.pageSize/pageno) and reads rows from the member envelope.

4. Upsert behaviour — no duplicates

Every sync upserts keyed on the primary-key column: a row whose primary-key value already exists is updated in place (only the mapped columns are touched; other columns are left alone), and a new value is inserted. Re-running a sync over unchanged Maximo data is a no-op. A row whose primary-key value is empty in Maximo is skipped. If no primary-key column is set, the table's title column is used.

This means syncing the same object structure repeatedly never creates duplicate rows — it keeps your asset table in step with Maximo.

5. Sync status & troubleshooting

The integration records, per workspace, the last sync time, a status (idle / running / success / failed), and the last error when a run fails. A failed run does not block the next scheduled run.

Common things to check when a sync fails:

  • Auth errors → confirm the tokenEndpoint, clientId/clientSecret, and any required scope.
  • No rows / wrong rows → verify the object structure name and the field → column mapping; confirm the maximoBaseUrl and apiContext are correct for your deployment.
  • Rows updated but a value didn't change → confirm that field is actually mapped and that the primary-key column matches the unique key in Maximo.