Microsoft Dynamics 365 Business Central and Workday HCM integration
Microsoft Dynamics 365 Business Central runs finance and the general ledger. Workday HCM runs the workforce, and through its SOAP services it also holds accounting journals and cost centers. Connecting the two keeps headcount and the ledger in agreement. Worker hires and terminations in Workday line up with Business Central employees, and the labor cost journals Workday produces post into Business Central general journals without re-keying. ml-connector handles the very different APIs on each side and moves the data on a schedule you control.
What moves between them
The main flow runs from Workday HCM into Microsoft Dynamics 365 Business Central. ml-connector reads worker records and posts hires and terminations into Business Central as employees, so headcount in the ledger system reflects Workday. After each pay or accounting cycle it reads the labor cost journals from Workday through Get_Journals and posts them into Business Central general journal lines, mapped to the matching Business Central accounts and dimensions. Reference data such as cost centers and supervisory organizations is aligned so every journal line lands on a valid dimension. The Business Central chart of accounts and posted ledger entries are read only through the API, so ml-connector posts through journal lines and never rewrites the chart of accounts.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For Business Central it requests an Entra ID client credentials token against the customer tenant and builds the base URL from the stored environment name, since the environment is part of the path. For Workday it runs two auth paths at once: it refreshes the OAuth access token before its sixty minute expiry for REST worker reads, and it sends WS-Security Integration System User credentials in the SOAP envelope for the journal and cost center calls. Because Workday has no webhooks, worker and journal data is read by polling on the cadence you set, using date filtered Get_Workers and Get_Journals calls for incremental delta pulls. Business Central can push change signals through its subscription webhooks, which expire after three days, so ml-connector renews each subscription before expiry and fetches the changed record after a signal, since the notification carries no data. Cost centers and dimensions are mapped first, so every journal line references a Business Central account and dimension that already exists. Neither system offers an idempotency key, so ml-connector dedupes Workday journals on their reference and dedupes Business Central writes on the employee number or document number with a BullMQ jobId before it posts, which prevents a re-read record from double booking.
A real-world example
A mid-sized professional services firm with about nine hundred employees runs Workday HCM for hiring, organizations, and payroll, and runs Microsoft Dynamics 365 Business Central for finance and the general ledger. Before the integration, finance exported the payroll labor journal from Workday each period and keyed the totals into Business Central by hand, then re-typed every new hire and leaver into the employee list, which left headcount and the labor accounts out of step until someone reconciled them. With the two systems connected, each labor cost journal posts into Business Central general journals allocated to the right cost center, and worker changes flow through to Business Central employees automatically. Month-end close starts with the labor accounts already in agreement and the manual re-keying is gone.
What you can do
- Post Workday HCM accounting and labor journals into Microsoft Dynamics 365 Business Central general journal lines each cycle.
- Keep Business Central employees aligned with Workday HCM hires and terminations.
- Map Workday cost centers and supervisory organizations to Business Central dimensions so journal lines post to valid accounts.
- Bridge Business Central Entra ID client credentials with Workday OAuth refresh token reads and SOAP Integration System User access.
- Poll Workday on a schedule with delta reads, retries, reference based dedup, and a full audit trail on every record.
Questions
- Which direction does data move between Microsoft Dynamics 365 Business Central and Workday HCM?
- The main flow is Workday HCM into Business Central. Worker hires and terminations move into Business Central employees, and Workday labor cost journals post into Business Central general journal lines. The Business Central chart of accounts and posted ledger entries are read only through the API, so ml-connector posts through journal lines and never rewrites the chart of accounts.
- How does the integration handle Workday HCM needing both REST and SOAP?
- Workday splits its data across two surfaces, so ml-connector runs both auth paths. Worker reads use the REST staffing API with an OAuth refresh token, whose access token it refreshes before the sixty minute expiry. Accounting journals and cost centers use the SOAP Web Services, which it calls with WS-Security Integration System User credentials stored encrypted alongside the OAuth token.
- Does Workday HCM push events, or does ml-connector poll for them?
- Workday has no native webhooks, so ml-connector polls it on the cadence you set, using date filtered Get_Workers and Get_Journals calls for incremental delta reads. Business Central can push change signals through its subscription webhooks, but those expire after three days and carry no data, so ml-connector renews each subscription and fetches the changed record after a signal arrives.
Related integrations
More Microsoft Dynamics 365 Business Central integrations
Other systems that connect to Workday HCM
Connect Microsoft Dynamics 365 Business Central and Workday HCM
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started