ml-connector
AcumaticaSAP SuccessFactors

Acumatica and SAP SuccessFactors integration

Acumatica runs finance, distribution, and operations. SAP SuccessFactors runs core HR, jobs, and org structure. Connecting the two keeps the workforce and finance coding in one ERP aligned with the HR system of record. New hires, terminations, job moves, and cost center changes in SuccessFactors flow into Acumatica so employee records and finance dimensions stay current without re-keying. ml-connector handles the very different APIs on each side and moves the data on a schedule you control.

How Acumatica works

Acumatica Cloud ERP exposes vendors, bills, purchase orders, GL accounts, journal transactions, and employee records through its Contract-Based REST API, with JSON over HTTPS and field values wrapped in value objects. Each instance lives at a customer-specific URL with an endpoint version in the path that must match the running ERP release exactly, or the call returns 404. Authentication is OAuth 2.0 through the built-in identity server, with a legacy cookie session option. Acumatica can push record changes through Push Notifications using a shared-secret header rather than a signed payload, but the common pattern is polling on LastModifiedDateTime.

How SAP SuccessFactors works

SAP SuccessFactors is an HCM platform, not a finance system, so it has no invoice, purchase order, GL account, or payment objects. It exposes person, employment, job, compensation, department, and cost center entities through the OData V2 API on a datacenter-specific host. Authentication is OAuth 2.0 SAML Bearer Assertion: an RSA private key signs a SAML assertion that is exchanged for a Bearer token valid up to 24 hours, and the API user also needs Role-Based Permissions for every entity. Intelligent Services can push HR events by HMAC-signed POST, but there is no programmatic subscription and no delivery guarantee, so reliable reads come from delta sync on lastModifiedDateTime.

What moves between them

The flow runs from SAP SuccessFactors into Acumatica. ml-connector reads person, employment, and EmpJob records and creates or updates the matching Acumatica employee records, so hires, terminations, and rehires keep ERP headcount current. Department and cost center foundation objects from SuccessFactors are aligned to the corresponding Acumatica codes so HR org changes flow into the dimensions finance posts against. SuccessFactors is treated as the HR source of record, so ml-connector does not write employee or org master data back into it. Reads run on a delta filter on a cadence you set, typically aligned to your payroll and HR change calendar.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the SuccessFactors side it signs a SAML assertion with the customer RSA private key, exchanges it for a Bearer token, and refreshes the token before its 24 hour expiry rather than per call. On the Acumatica side it accepts the full instance URL and the endpoint version per customer, since a version mismatch returns 404, and it wraps every field value in the required value object so flat payloads do not return 400. Because SuccessFactors never hard-deletes, a leaver shows up as a status change, not a deletion, so ml-connector syncs on status rather than waiting for a delete event. Cost centers and departments are mapped first, matching the SuccessFactors externalCode to the Acumatica code, so every employee lands on a department and cost center that already exists in the ERP. SuccessFactors throttling returns 429 or 503 with no rate-limit headers, so ml-connector keeps concurrency low and backs off with jitter, and Acumatica throttling and its concurrent-session license cap are respected the same way. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A regional construction firm of about 600 employees runs Acumatica for project accounting, AP, and the general ledger, and runs SAP SuccessFactors for hiring, job assignments, and org structure across several field offices. Before the integration, HR maintained employees and cost center assignments in SuccessFactors while finance kept a parallel employee list in Acumatica by hand, so a transfer or a new cost center took days to reach the ledger and labor was sometimes coded to a center that did not yet exist in the ERP. With Acumatica and SAP SuccessFactors connected, each hire, termination, and job change flows into Acumatica with the correct department and cost center, and finance posts labor against dimensions that match HR on day one.

What you can do

  • Create and update Acumatica employee records from SAP SuccessFactors hires, terminations, and rehires.
  • Align SuccessFactors departments and cost centers to Acumatica dimensions so labor codes to valid centers.
  • Map SuccessFactors job and org changes into Acumatica so the ERP reflects the HR system of record.
  • Bridge the SuccessFactors SAML Bearer token exchange and Acumatica version-locked OAuth login.
  • Poll SuccessFactors on a delta filter on a schedule you set, with retries and a full audit trail on every record.

Questions

Which direction does data move between Acumatica and SAP SuccessFactors?
Data moves from SAP SuccessFactors into Acumatica. Employee, job, department, and cost center records flow from the HR system into the ERP so headcount and finance coding stay current. SuccessFactors is the HR source of record, so ml-connector does not write employee or org master data back into it.
How does the integration authenticate to SAP SuccessFactors?
SuccessFactors uses OAuth 2.0 SAML Bearer Assertion, not a simple client ID and secret. ml-connector signs a SAML assertion with the customer RSA private key, exchanges it for a Bearer token that lasts up to 24 hours, and refreshes the token before it expires. The API user also needs Role-Based Permissions in Admin Center for every entity, since a missing grant returns 403 rather than 401.
Does this use webhooks or polling?
It uses delta polling as the reliable path. SuccessFactors Intelligent Services can push HR events, but there is no programmatic subscription and no delivery guarantee, so ml-connector reads changes on a lastModifiedDateTime filter on a schedule you set. Because SuccessFactors deactivates rather than deletes employees, the sync keys on status changes instead of deletion events.

Related integrations

Connect Acumatica and SAP SuccessFactors

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

Get started