ml-connector
Microsoft Dynamics GPSAP SuccessFactors

Microsoft Dynamics GP and SAP SuccessFactors integration

Microsoft Dynamics GP manages your on-premises finance, payables, and GL. SAP SuccessFactors runs your cloud HR and payroll. Connecting the two keeps your GP employee records and cost centers aligned with your SuccessFactors hires, terminations, and organizational changes. Each time a headcount change happens in SuccessFactors, it flows into GP automatically, and cost center definitions sync in both directions so payroll allocations land on valid GL dimensions. ml-connector handles the different auth models on each side and keeps both systems in agreement without manual re-entry.

How Microsoft Dynamics GP works

Microsoft Dynamics GP is an on-premises ERP installed on Windows Server with a SQL Server backend. It exposes vendors, payables invoices, purchase orders, payments, GL accounts, GL journal entries, customers, receivables invoices, and inventory items through a REST Service Based Architecture (SBA) at a customer-provided URL with the form https://<server>:<port>/GPService/Tenants(<TenantName>)/Companies(<CompanyName>)/<Module>/<Resource>, or through legacy SOAP/WCF Web Services. Authentication is Windows-only, using Negotiate/Kerberos or NTLM tied to an Active Directory domain account with a mapped GP User role. Because GP has no webhook system, data is read by polling with ModifiedDate filters at customer-defined intervals, typically every 4 to 6 hours.

How SAP SuccessFactors works

SAP SuccessFactors is a cloud-based Human Capital Management suite. The Employee Central module publishes employees, personal data, employment records, jobs, compensation, cost centers, departments, divisions, business units, companies, job codes, job functions, and locations through REST OData V2 and V4 APIs at a datacenter-specific URL such as https://api4.successfactors.com/odata/v2. Authentication uses OAuth2 SAML Bearer Assertion, where a private RSA key signs a SAML assertion and posts it to the token endpoint to get a 24-hour access token. Alternatively, mutual TLS X.509 is available on newer datacenters. SuccessFactors can push employee lifecycle events (hires, terminations, job changes) to a registered HTTP endpoint via Intelligent Services, but this must be configured in the Admin Center UI, not via API. ml-connector uses pull-only delta sync with lastModifiedDateTime filters to avoid missing records.

What moves between them

The main flow runs from SAP SuccessFactors into Microsoft Dynamics GP. Employee records, cost centers, departments, and divisions from SuccessFactors are polled and synced into GP at regular intervals. When an employee is hired or terminated in SuccessFactors, that change flows into GP's employee master. When a cost center is created or renamed in SuccessFactors, the change is reflected in GP's GL dimensions, so that payroll GL entries from your payroll system land on valid cost centers and departments. Reference data such as job codes and divisions can be synced in both directions for alignment. Employee records themselves are pull-only from SuccessFactors into GP, since SuccessFactors is the system of record for HR.

How ml-connector handles it

ml-connector stores your Windows domain credentials (or a designated service account) and uses Negotiate/Kerberos or NTLM to authenticate to your on-premises Dynamics GP instance at the URL you provide. On the SuccessFactors side, it stores the RSA private key and company ID, generates and signs SAML assertions, and exchanges them for 24-hour OAuth2 bearer tokens, refreshing them before expiry. Because SuccessFactors is a cloud API with strict rate limits and supports up to 10 concurrent threads per client, ml-connector serializes requests and backs off on HTTP 429 or 503 responses. SuccessFactors uses a non-standard OData datetime format (/Date(milliseconds)/) in responses, so ml-connector parses this and converts it to standard ISO 8601 for storage. Employees and cost centers are upserted (created if new, updated if changed) on every poll run, with deduplication on employee ID and cost center code. Because SuccessFactors hard-deletes are not supported (employees are deactivated instead), ml-connector tracks deactivation state and marks corresponding GP records inactive. GP's constraint that write operations only work on unposted (Work) transactions is respected, so employee and cost center imports always create unposted records that your GP accounting staff can review and post in batch. Every record carries a full audit trail and can be replayed if a downstream validation fails.

A real-world example

A mid-sized manufacturing company runs Microsoft Dynamics GP on-premises for accounting and inventory, and uses SAP SuccessFactors for cloud HR across three plants. Before the integration, the HR team manually exported new hires and terminated employees from SuccessFactors each week and emailed them to the accounting team, who hand-entered them into GP's employee master and validated that cost center codes matched. When an employee was terminated but not marked inactive in GP, payroll would allocate costs to a ghost record. With SuccessFactors and Dynamics GP connected, each new hire in SuccessFactors flows into GP's work journal within hours, ready for the accountant to post. Terminations in SuccessFactors mark the GP record inactive automatically, and cost center changes sync in real time, so payroll allocations always land on valid GL dimensions. Month-end close is faster because the GL balance for labor costs is reconciled before the close begins.

What you can do

  • Sync employees, terminations, and job changes from SAP SuccessFactors into Microsoft Dynamics GP at intervals you define.
  • Keep GP cost centers, departments, and divisions aligned with SuccessFactors organizational data in both directions.
  • Authenticate Dynamics GP with Windows Active Directory credentials and SuccessFactors with OAuth2 SAML bearer assertions, storing both encrypted.
  • Handle SuccessFactors rate limits and non-standard OData datetime formats, with automatic retries and backoff on throttle responses.
  • Create unposted journal entries in GP for employee and cost center records so your accounting staff can review and batch-post them.

Questions

Which direction does data move between Microsoft Dynamics GP and SAP SuccessFactors?
The main flow is SuccessFactors into Dynamics GP. Employees, job records, cost centers, departments, and divisions flow from SuccessFactors into GP at regular intervals. Employee records are pull-only (SuccessFactors is the HR system of record), while cost centers and dimensions can sync in both directions so that payroll allocations align with valid GL accounts.
Does ml-connector support both REST (SBA) and SOAP Web Services endpoints in Dynamics GP?
Yes. ml-connector works with either Service Based Architecture (SBA) REST or legacy SOAP/WCF Web Services. You provide your GP endpoint URL and the tenant and company names, and ml-connector polls that endpoint with your Windows domain credentials. Always verify that SBA is installed on your GP version (GP 2015 and later support it) and test your endpoint URL before connecting.
How does ml-connector handle SuccessFactors' rate limits and non-standard datetime format?
SuccessFactors rate-limits at 10 concurrent threads per client and returns HTTP 429 or 503 when throttled. ml-connector serializes requests, backs off on throttle responses, and retries with exponential jitter. SuccessFactors uses /Date(milliseconds)/ in OData responses instead of standard ISO 8601, so ml-connector parses and normalizes this format before writing to GP, ensuring datetime values are correct in audit logs and records.

Related integrations

Connect Microsoft Dynamics GP and SAP SuccessFactors

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

Get started