Overview
HxGN EAM (Hexagon’s enterprise asset management, formerly Infor EAM; newer hosts brand it Attune EAM) exposes every screen and tab as a REST web service underhttps://<EAM host>/axis/restservices, defined in OpenAPI 3 and browsable at https://<EAM host>/web/swagger/index.html. See the HxGN EAM Rest Web Services guide.
The HxgnEamApi connector maps 22 MQTT topics onto those services. Typical uses: open a work order when an alarm is raised, push runtime hours or cycle counts as asset meter readings so meter-based PM fires, set an asset out of service from the machine state, and poll released work orders back onto the broker. Each event publishes the EAM reply on <topic>/response.
Prerequisites
- An HxGN EAM tenant (HxGN SmartCloud, for example
eu1.eam.hxgnsmartcloud.comorus1.eam.hxgnsmartcloud.com, or an on-premise server) and its tenant id. - An EAM user with the Connector checkbox selected (HxGN EAM Products section of the user record). Install parameter
LGNCONdecides how that user signs in (STD,LDAPorEXTERN). - A user group whose Interface Permissions grant Query, Insert, Update or Delete on each web service you call (Work Order, Work Order Activity, Comments, Meter Readings, Parts, Asset, Part, Grid).
- Default Dataspys that include the fields the services need (GET collections return the default Dataspy of the screen).
- Outbound HTTPS from the broker to the EAM host.
Authentication
Every event sends three headers taken from the payload:
Store the
Authorization value as a Hub secret, for example HXGN_EAM_AUTHORIZATION, and read it with GET SECRET in the action that publishes to the connector. The spec also accepts an API key in X-API-Key: fork the connector and replace the Authorization line with ADD "X-API-Key" "{value.json.api_key}".
Optional EAM headers (role, apiversion, keepsession / sessionid, clonedscreen, cursorposition, authenticationmode) are not sent. Add them under WITH HEADERS in a fork if your tenant needs them, for example ADD "role" "<role>".
A missing tenant returns 400 with NoTenantException; an unknown tenant returns 400 Invalid Tenant ID: ....
Configuration
- Lists.
ListWorkOrders,ListAssetsandListPartstake no filters: they return the screen’s default Dataspy,RSCLROWSrows at a time. To filter (for example work orders in statusR), useQueryGrid(POST /grids) withGRID_NAMEWSJOBSand anADDON_FILTER, or a Dataspy id. Grid alias names and Dataspy ids depend on your tenant; check them in the grid response. - Writes.
POSTadds a record.PATCHchanges only the fields you send; include the key block (WORKORDERIDorASSETID) as in the Swagger patch example. If you sendrecordid, it must match the stored value, or EAM answers “This record has been modified by another user”.PUT(Sync, full replace that blanks missing fields) is not packaged. - Required fields. Work orders:
WORKORDERID,STATUS,DEPARTMENTID,FIXED. Asset meter readings:EQUIPMENTID,UOMID,READINGTYPEID,READINGDATE,NEWVALUE. Comments:ENTITYCOMMENTID,COMMENTTEXT,PRINT.GetWorkOrderDefaultsreturns the defaults for an organization. - Numbers and dates. Quantities are
{"VALUE", "NUMOFDEC", "SIGN", "UOM"}objects (VALUE128750 withNUMOFDEC2 is 1287.50). Date objects carryYEARas epoch milliseconds unless install parameterRSYRYYYYisYES(EAM 12.3+).
Basic Syntax
Examples
Publish directly to a connector topic:cmms/hxgn-eam/work-order/get, then read cmms/hxgn-eam/work-order/get/response.
Actions that feed the connector from plant data:
cmms/hxgn-eam/# with a rule: its payloads carry EAM credentials and can create and delete work orders.
Responses
Every reply uses the EAM envelope:Result.ResultData holds the data on 200, Result.InfoAlert / WarningAlert carry messages, and ErrorAlert or ConfirmationAlert is set on 400. 404 means an unknown service or record, 500 an internal error. With keepsession: true (fork), Result.SessionID can be reused in a sessionid header.
Notes
- The catalog listed OAuth 2.0 through the Infor ION API gateway. Current HxGN EAM tenants publish
basicAuth,apiKey(X-API-Key) andbearerAuth(OIDC) in their OpenAPI files; the ION gateway only applies to legacy Infor-hosted tenants and is not packaged. - Work order statuses, types (
BRKD, …), departments, UOMs and reading types are tenant codes. The values in the examples are placeholders. - HxGN EAM has no webhook API in the REST guide. Poll with
QueryGridor the list events. - SOAP web services (
/axis/services/EWSConnector) also exist; this connector uses REST only.
Testing
Static checks against the official OpenAPI files, a local contract mock covering all 22 events with negative controls, and real unauthenticated probes against HxGN SmartCloud (fake tenant,400 Invalid Tenant ID on every event before any login) pass. A run against a real tenant and a broker MQTT round-trip are still open.

