Overview
A client-mode connector for a curated manufacturing / inventory / maintenance slice of Dynamics 365 Finance & Operations OData underhttps://{env}.operations.dynamics.com/data/:
BASE_ADDRESS is the F&O OData root (https://{env}.operations.dynamics.com/data). Topics use erp/dynamics365-fscm/<object>/<verb>.
This is Finance & Operations / Supply Chain, not Dataverse. For CRM Web API (accounts, incidents, Field Service), see Dynamics 365 (Dataverse).
F&O OData requires a real environment URL and an Entra ID OAuth 2.0 Bearer token (client credentials). This template has not been verified against a live tenant. Prefer Hub secrets for tokens. Discover public entities with
GET .../data/ or GET .../data/$metadata.Basic Syntax
Events
Auth
OAuth 2.0 client credentials (Entra ID) — default in the template:- Register an app in Microsoft Entra ID; create a client secret; grant Dynamics ERP API permissions as required by your tenant.
- In F&O: System administration > Setup > Microsoft Entra applications — add the client ID and map it to a service user.
- Request a token:
- Pass the access token on the MQTT request payload:
Authorization: Bearer {value.json.access_token}. Prefer Hub secrets / GET SECRET. Never commit real tokens.
Cross-company and keys
By default OData returns only the service user’s default company. The GET endpoints appendcross-company=true. To filter one company: $filter=dataAreaId eq 'usmf' with cross-company=true. Entity keys usually include dataAreaId plus a business key (e.g. ProductionOrderNumber) — see Microsoft Learn OData addressing.
Entity name notes
Public collection names can differ by F&O version. This package uses documented PublicCollectionName values from dynamics.fo and community usage. Always confirm on your tenant withGET https://{env}.operations.dynamics.com/data/$metadata or Excel workbook designer. Report-as-finished and inventory journal posting may require a bound OData action after create — loading the journal line alone does not always post.
Deploy
- Copy
Dynamics365FscmRestApi.lot(noADD METADATA). - Replace
YOUR_ENVinBASE_ADDRESS. -addRouteon the broker (or Hub deploy).- Publish JSON to a request topic; subscribe to the matching
/responsetopic.
STATUS "beta") is in hub-metadata.lot for Hub / -listTemplates only.
Status
Blocked until a live authenticated call succeeds (factory has no F&O env URL or Entra credentials). Unblock with lab env URL + client-credentials token, then smokeGET /ProductionOrderHeaders?$top=1&cross-company=true expecting HTTP 200.

