ml-connector
Exact OnlineSAP SuccessFactors

Exact Online and SAP SuccessFactors integration

Exact Online runs accounting, purchasing, and inventory for European and US SMEs. SAP SuccessFactors runs human capital management and payroll across the organization. Connecting them keeps your employee roster and cost center assignments synchronized between HR and finance, so payroll allocations land on valid GL dimensions and headcount in Exact always matches the current workforce. ml-connector bridges the very different authentication models and moves the data on a schedule you control.

How Exact Online works

Exact Online exposes accounts, sales orders, purchase orders, invoices, GL accounts, cost centers, cost units, journals, employees, contacts, and project data through a REST API with OData v3 query syntax. Each customer tenant requires a division ID retrieved from the /api/v1/current/Me endpoint. Authentication uses OAuth 2.0 Authorization Code Grant with 10-minute access tokens and 30-day rotating refresh tokens. Exact Online also supports webhooks for account, contact, sales order, purchase order, GL account, and transaction changes with HMAC-SHA256 signature verification, though the webhook payload contains only the entity key and action, so full entity data must be fetched separately.

How SAP SuccessFactors works

SAP SuccessFactors Employee Central exposes employee records, personal data, employment history, job assignments, compensation, cost centers, departments, divisions, business units, and job codes through OData V2 and V4 REST APIs. Authentication uses OAuth 2.0 with SAML Bearer assertion signed with an RSA private key, generating 24-hour access tokens. SuccessFactors also supports event push for HR lifecycle events like New Hire and Job Info Change configured in the Admin Center UI, though the Intelligent Services callback mechanism is not API-driven. Delta sync via lastModifiedDateTime filter is recommended for reliable incremental pulls.

What moves between them

The main flow is SAP SuccessFactors into Exact Online. Employee records, job assignments, and cost center codes move from SuccessFactors into Exact on a weekly or bi-weekly schedule timed to your HR cycle. Cost centers and departments are synchronized bidirectionally so that when Exact accounting staff configure a new cost center, SuccessFactors can reference it, and when SuccessFactors HR adds employees to cost centers, those codes already exist in Exact. Exact employee records are read-only in the integration; all changes originate from SuccessFactors.

How ml-connector handles it

ml-connector stores SuccessFactors RSA private key encrypted and constructs SAML assertions on-demand, refreshing the 24-hour bearer token each time a request returns 401 Unauthorized. On the Exact side, it caches the OAuth 2.0 access token and refreshes it before the 10-minute expiry window to avoid mid-request token death. Because Exact requires a division ID per tenant, ml-connector retrieves and stores this on first authentication. SuccessFactors enforces a maximum of 10 concurrent threads and returns HTTP 429 when throttled, so ml-connector applies exponential backoff and retries. Employee records are fetched with a lastModifiedDateTime filter to pull only changes since the last run, and cost centers are fetched fresh each cycle to catch any Exact updates. Every record carries a full audit trail, and failed syncs can be replayed.

A real-world example

A mid-sized manufacturing and logistics company based in the Netherlands runs Exact Online for accounting and purchasing across three locations and uses SAP SuccessFactors for payroll and HR across 150 employees. Before the integration, the finance team manually uploaded a CSV of active employees and their cost center assignments from SuccessFactors into Exact every month, a process that took several hours and was error-prone when employees transferred between locations. With Exact and SuccessFactors connected, the employee roster and cost center codes sync automatically every Friday afternoon, accounting staff see headcount changes reflected in real time, and month-end closing is faster because payroll allocations are already assigned to valid cost centers.

What you can do

  • Sync active employees, job titles, and employment status from SAP SuccessFactors into Exact Online on a weekly schedule.
  • Map SuccessFactors cost center codes to Exact cost centers so payroll allocations land on valid dimensions.
  • Refresh OAuth 2.0 and SAML assertion tokens before expiry and handle throttle responses on both sides with exponential backoff.
  • Pull only changes since the last run using lastModifiedDateTime filters to reduce API volume and sync latency.
  • Maintain a full audit trail of every employee and cost center record moved, with the ability to replay failed syncs.

Questions

Which direction does data flow between Exact Online and SAP SuccessFactors?
The main flow is SAP SuccessFactors into Exact Online. Employee records, job assignments, and cost center codes move from SuccessFactors into Exact on a regular schedule. Cost centers and departments are aligned in both directions so that new cost centers in Exact are visible in SuccessFactors and new cost center assignments in SuccessFactors sync into Exact. Exact employee records are read-only in the integration.
How does ml-connector handle the different authentication models between the two systems?
Exact Online uses OAuth 2.0 Authorization Code Grant with 10-minute access tokens that ml-connector refreshes before expiry. SAP SuccessFactors uses OAuth 2.0 with SAML Bearer assertion authentication, where ml-connector stores the RSA private key encrypted and constructs signed assertions on-demand, refreshing the 24-hour bearer token when a request returns 401. Both systems enforce token lifetimes, so ml-connector tracks expiry windows and refreshes proactively to avoid mid-request failures.
How does the integration handle Exact Online's requirement to fetch employee data separately from webhook notifications?
ml-connector uses webhooks from Exact for account and cost center changes but polls for employee records on a schedule because webhooks contain only the entity key and action, not the full record. For SAP SuccessFactors, ml-connector pulls employee records and cost centers using lastModifiedDateTime filters to fetch only changes since the last run, reducing API volume and ensuring reliable incremental syncs across both systems.

Related integrations

Connect Exact Online and SAP SuccessFactors

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

Get started