ml-connector
Microsoft Dynamics 365 F&OAnaplan

Microsoft Dynamics 365 F&O and Anaplan integration

Microsoft Dynamics 365 F&O runs financials, procurement, and supply chain. Anaplan runs connected financial and operational planning. Connecting the two keeps the planning models fed with current actuals and lets approved plans flow back into the ledger. Posted general journal entries, main accounts, and financial dimensions from Dynamics import into the matching Anaplan model, and the budget and forecast figures planners approve in Anaplan export back into Dynamics journals. ml-connector handles the very different APIs on each side and moves the data on the cadence your planning cycle needs.

How Microsoft Dynamics 365 F&O works

Microsoft Dynamics 365 F&O exposes data entities such as VendorsV2, GeneralJournalAccountEntries, MainAccounts, DimensionAttributeValues, and CustomersV3 through OData v4 REST/JSON at a tenant-specific URL on operations.dynamics.com. Authentication is OAuth2 client credentials via Microsoft Entra ID, with the environment host carried as a credential because there is no shared base URL. Dynamics can push outbound Business Events over HTTPS, but those payloads are lightweight stubs that carry a ControlNumber and key identifiers rather than full records, so the connector reads full entity detail by polling OData. Posted general ledger entries are read-only and are created through journal entities.

How Anaplan works

Anaplan exposes its data through the Integration API v2.0 over REST, with JSON and CSV payloads. There are no native finance objects; everything sits inside a workspace and model as lists, modules, and line items, and nearly every call needs a lowercase-hex workspaceId and an uppercase-hex modelId. Bulk import and export run as named actions that an Anaplan model builder must create first, and they are asynchronous: the connector starts an action, polls the task until it reports COMPLETE, then uploads or downloads file chunks. Anaplan does not support outbound webhooks, so all reads are polling-based. Imports and exports lock the model during execution.

What moves between them

Two flows run between the systems. From Dynamics into Anaplan, ml-connector reads posted general journal entries, main accounts, and financial dimension values, formats them into the file an Anaplan import action expects, and loads them as actuals and list members on a schedule tied to the close calendar. From Anaplan into Dynamics, ml-connector runs an export action to pull approved budget and forecast values, then writes them into Dynamics journal entities so the figures post to the ledger. Chart of accounts and cost center or department dimensions are aligned first so every imported actual and exported plan value references a list member and an account that already exists on both sides.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Dynamics side it requests an Entra ID bearer token with the client-credentials grant scoped to the environment host, re-requesting on expiry since that flow issues no refresh token, and it accepts the full tenant URL per customer. On the Anaplan side it obtains a 35-minute AnaplanAuthToken from basic or certificate auth, or an OAuth2 device-grant token where SSO is not active, and reuses it for the session rather than minting one per call. Because neither side delivers usable push, both directions poll: Dynamics OData on a schedule, and Anaplan import and export actions by starting a task and polling it to COMPLETE before moving file chunks. Dynamics financial dimensions are passed as a formatted display string, so the dimension format must be configured for integrating applications first, and Anaplan import and export actions must be pre-built by a model builder. Dynamics returns HTTP 429 with a Retry-After header and Anaplan returns 429 on its 600-requests-per-minute tenant limit, so ml-connector backs off and retries on both. Anaplan locks the model during an import or export, so actions against the same model are serialized. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized manufacturer with about 900 employees runs Microsoft Dynamics 365 F&O for finance and operations and uses Anaplan for its annual budget and rolling forecast. Before the integration, an analyst exported trial balances from Dynamics every month, reshaped them in spreadsheets, and loaded them into Anaplan by hand, then re-keyed the approved budget back into Dynamics at the start of the year. The manual steps were slow and a frequent source of mismatched account codes. With the two systems connected, posted general journal entries and dimensions import into Anaplan automatically after each close, and approved budget figures export back into Dynamics journals, so planners always work from current actuals and the ledger reflects the approved plan without re-keying.

What you can do

  • Import posted general journal entries from Microsoft Dynamics 365 F&O into the matching Anaplan model as actuals.
  • Sync Dynamics main accounts and financial dimension values into Anaplan lists so figures land on valid planning rows.
  • Export approved budget and forecast values from Anaplan and post them into Dynamics journal entities.
  • Bridge Entra ID client-credentials auth on the Dynamics side with Anaplan basic, certificate, or OAuth2 device-grant tokens.
  • Run Anaplan import and export actions on a schedule, polling each task to completion with retries and a full audit trail.

Questions

Which direction does data move between Microsoft Dynamics 365 F&O and Anaplan?
Both directions. Posted general journal entries, main accounts, and financial dimensions move from Dynamics into Anaplan as actuals and list members. Approved budget and forecast values move from Anaplan back into Dynamics journal entities. Chart of accounts and dimension lists are aligned so values land on members that exist on both sides.
Does Anaplan hold invoices, vendors, or GL accounts like an ERP?
No. Anaplan is a connected planning platform with no native invoice, vendor, or GL account objects. Its data lives in a workspace and model as lists, modules, and line items. ml-connector maps Dynamics accounts and dimensions to Anaplan list members and loads actuals into modules through named import actions rather than writing to finance objects.
How does the integration move data if Anaplan has no webhooks?
Anaplan does not support outbound webhooks, so the connector polls. It starts an Anaplan import or export action, polls the returned task until it reports COMPLETE, then uploads or downloads the file chunks. Dynamics Business Events only carry identifier stubs, so the connector reads full records from OData on a schedule as well, and serializes actions because Anaplan locks the model during execution.

Related integrations

Connect Microsoft Dynamics 365 F&O and Anaplan

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started