Microsoft Dynamics 365 Business Central and SAP SuccessFactors integration
Microsoft Dynamics 365 Business Central runs finance, purchasing, sales, and inventory for small and mid-market businesses. SAP SuccessFactors is the HR system of record for workers, jobs, org structure, and cost centers. Connecting the two keeps the employee list and the dimension values in Business Central aligned with the HR truth in SuccessFactors, so hires, terminations, and job moves do not have to be re-keyed into the ERP. ml-connector reads worker, job, and cost center data from SuccessFactors and maps it onto Business Central employees and dimensions. Because SuccessFactors holds no invoices, purchase orders, or GL accounts, the ledger stays in Business Central where it belongs.
What moves between them
The flow runs from SAP SuccessFactors into Microsoft Dynamics 365 Business Central. ml-connector reads worker, employment, and job records from SuccessFactors and keeps the Business Central employee list current with hires, terminations, rehires, and job changes such as department, title, manager, or cost center. Cost center and department reference data from FOCostCenter and FODepartment is aligned to Business Central dimensions and dimension values so each worker resolves to a valid dimension code. SuccessFactors is the HR system of record and holds no GL accounts, invoices, or purchase orders, so the chart of accounts and the ledger stay in Business Central and ml-connector never writes financial entries back into SuccessFactors.
How ml-connector handles it
ml-connector stores both credential sets encrypted. On the SuccessFactors side it signs a SAML assertion with the customer's RSA private key, exchanges it for a Bearer token against the datacenter-specific API host for that tenant, and refreshes the token before its 24-hour expiry; a missing Role-Based Permission shows up as a 403 rather than a 401, so the integration user needs grants for every entity it reads. On the Business Central side it requests an OAuth 2.0 client-credentials token from Microsoft Entra ID with the https://api.businesscentral.dynamics.com/.default scope, builds the base URL from the stored environment name, and scopes every call to the right company. SuccessFactors is read by delta sync on lastModifiedDateTime with the page size set to 1000 so records are not silently missed, and Intelligent Services events such as NewHire or JobInfoChange can trigger an immediate pull where they are configured. SuccessFactors cost centers and departments are mapped to Business Central dimensions first, so every employee write lands on a dimension value that already exists. Business Central has no idempotency-key header, so ml-connector filters by the employee number before it writes and uses a stable BullMQ jobId to avoid duplicate enqueues. Because SuccessFactors deactivates employees rather than deleting them, termination logic keys on a status change to inactive rather than a delete event. SuccessFactors throttling returns HTTP 429 or 503 with no rate-limit headers, so the connector keeps concurrency low and backs off with jitter. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized professional services firm with around 400 staff across three offices runs Microsoft Dynamics 365 Business Central for finance, purchasing, and project costing, and uses SAP SuccessFactors Employee Central as the HR system of record. Before the integration, an administrator re-keyed every new hire, termination, and transfer into the Business Central employee list by hand, and the department and cost center values in the ERP drifted out of step whenever a team was renamed or someone moved offices. With Microsoft Dynamics 365 Business Central and SAP SuccessFactors connected, worker and job changes flow into the Business Central employee list automatically, cost centers and departments map onto the matching dimension values, and the org data in the ERP matches the HR records. The manual re-keying is gone and headcount stays reconciled.
What you can do
- Keep the Microsoft Dynamics 365 Business Central employee list aligned with SAP SuccessFactors hires, terminations, rehires, and job changes.
- Map SAP SuccessFactors cost centers and departments onto Microsoft Dynamics 365 Business Central dimensions and dimension values.
- Read workers, jobs, and compensation from SAP SuccessFactors by OData V2 delta sync on lastModifiedDateTime.
- Treat a SAP SuccessFactors status change to inactive as a termination, since SuccessFactors deactivates rather than deletes.
- Bridge the SAP SuccessFactors SAML Bearer token and the Microsoft Entra ID client-credentials token, with retries, error replay, and a full audit trail.
Questions
- Which direction does data move between Microsoft Dynamics 365 Business Central and SAP SuccessFactors?
- The flow is SAP SuccessFactors into Microsoft Dynamics 365 Business Central. Worker, job, and cost center data moves from SuccessFactors into the Business Central employee list and dimension values, while cost centers and departments are aligned so each worker resolves to a valid dimension. SuccessFactors is the HR system of record and holds no GL accounts, so ml-connector does not write financial entries back into it.
- Does SAP SuccessFactors hold invoices or GL accounts that post into Business Central?
- No. SAP SuccessFactors is an HCM system with no invoice, purchase order, payment, or general ledger objects. What it provides is workers, jobs, compensation, and cost center codes in EmpJob and FOCostCenter, and ml-connector maps that into Business Central as employee records and dimension values. The chart of accounts and the ledger stay in Business Central, which is the source of truth for finance.
- How does the integration handle authentication and the lack of a hard delete in SuccessFactors?
- On the SuccessFactors side ml-connector signs a SAML assertion with the customer's RSA private key and exchanges it for a Bearer token that lasts up to 24 hours, and the API user must also hold Role-Based Permissions for each entity. On the Business Central side it uses OAuth 2.0 client credentials against Microsoft Entra ID and builds the base URL from the stored environment name. Because SuccessFactors deactivates employees rather than deleting them, ml-connector treats a status change to inactive as a termination instead of waiting for a delete event.
Related integrations
More Microsoft Dynamics 365 Business Central integrations
Other systems that connect to SAP SuccessFactors
Connect Microsoft Dynamics 365 Business Central and SAP SuccessFactors
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started