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.
mxapiassetfor assets,mxapioperlocfor 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 requiredscope. - No rows / wrong rows → verify the object structure name and the field → column mapping; confirm the
maximoBaseUrlandapiContextare 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.

