HxGN EAM Sync

Internal integration. The HxGN EAM 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 HxGN EAM integration is a passive puller: on a schedule you choose, Treedis authenticates to your Infor ION API gateway, pulls rows from the HxGN/Infor EAM grids you map, and upserts them into your Connected-Workers asset tables. Nothing is pushed back to EAM — it is read-only against your EAM instance.

It is configured per workspace from Workspace → Settings → Integrations → HxGN EAM.

1. Authenticate

HxGN EAM authenticates through the Infor ION API using an OAuth2 service account. Download the service-account credentials file (.ionapi) from Infor ION API and copy these values into the integration form:

Treedis field .ionapi key What it is
tokenEndpoint pu + ot The ION OAuth2 token URL (the portal URL joined with the token path).
clientId ci OAuth2 client id.
clientSecret cs OAuth2 client secret.
saak saak Service-account access key.
sask sask Service-account secret key.
tenant ti Your ION tenant id (on-prem deployments use infor).
eamBaseUrl The EAM REST base URL behind the ION gateway.
organization The EAM organization the grids belong to.

clientSecret, saak, and sask are secrets — once saved they are never shown again (the form only indicates whether each is set). Treedis exchanges saak/sask (with clientId/clientSecret) for a short-lived bearer token, caches it until just before expiry, and sends it with the tenant header on every grid 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 — so "every 6 hours" means the next tick at or after the 6-hour mark, not exactly on the hour you saved. 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 HxGN fields to your asset columns

Mapping is configured per table from the HxGN Mapping button on that table's toolbar (available on your workspace location, equipment, and asset tables once the integration is enabled). For each table you set:

  • HxGN entity — the grid/entity in EAM to pull from (e.g. a functional-locations or equipment grid). Treedis fetches that entity's available field names to pick from; you can also type a field name directly.
  • Field → column rows — each maps one HxGN field to one of your 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.

All tables are workspace-owned — the puller sees only (table, field map, primary-key column) and upserts into that table.

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 EAM data is a no-op. A row whose primary-key value is empty in EAM is skipped. If no primary-key column is set, the table's title column is used.

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

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 → re-download the .ionapi file and re-enter the credentials; confirm the tenant value.
  • No rows / wrong rows → verify the HxGN entity name and the field → column mapping.
  • 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 EAM.