ml-connector
Workday Financial ManagementSAP SuccessFactors

Workday Financial Management and SAP SuccessFactors integration

Workday Financial Management runs your accounting, procurement, and general ledger. SAP SuccessFactors is your HCM system of record for employees and compensation. When you connect them, employee hires, terminations, and compensation changes flow into Workday, and cost center codes stay synchronized so payroll allocations land on the correct dimensions. ml-connector bridges the different APIs and authentication schemes so your finance and HR data remain aligned without manual sync.

How Workday Financial Management works

Workday Financial Management is a cloud ERP module that exposes accounts payable, purchase orders, suppliers, GL accounts, worktags, and journal entries through two API surfaces: SOAP/XML with WS-Security credentials on every request, and REST/JSON with OAuth2 refresh-token flow. The SOAP interface provides full CRUD and is used for complex operations like journal submission; the REST interface is narrower but lighter weight. Workday has no native webhooks, so connector reads are polling-based with recommended intervals of 15-60 minutes for transactional data. The system requires an Integration System User account with appropriate security group assignments before any integration can connect.

How SAP SuccessFactors works

SAP SuccessFactors is a cloud HCM suite with Employee Central as the system of record for employees, jobs, org structure, cost centers, and compensation. It exposes employee and organizational data through OData V2 and V4 REST APIs, with authentication via OAuth2 SAML Bearer Assertion (register a client, generate an RSA key pair, sign a SAML assertion with the private key, and exchange it for a 24-hour bearer token). SuccessFactors can push employee lifecycle events via HTTP callbacks configured in the Admin Center, but the more reliable approach is pull-only delta sync using the lastModifiedDateTime filter. Cost centers, employees, and jobs are the key entities. OData response timestamps use a non-standard format (milliseconds since epoch) that must be parsed carefully. The API enforces a page size of 20 by default; queries must specify top=1000 to avoid missing records.

What moves between them

Employee and cost center records flow from SAP SuccessFactors into Workday Financial Management. On a schedule you define, ml-connector reads new hires, terminations, job changes, and compensation updates from SuccessFactors using delta sync on lastModifiedDateTime, then posts employee records and worktag mappings into Workday via REST APIs. Cost center codes are synchronized in both directions so compensation data posted to Workday lands on valid financial dimensions. Workday's journal entry interface is not written to directly; instead, employee and cost center changes update the worktag and supplier dimensions that later financial entries reference. The sync runs on a cadence you control, typically daily or weekly.

How ml-connector handles it

ml-connector stores both credential sets encrypted in Postgres. For SuccessFactors, it generates a fresh SAML assertion signed with your private key, POSTs to the SuccessFactors OAuth token endpoint, and caches the 24-hour bearer token. For Workday, it refreshes the OAuth2 token using the stored refresh token. On each sync cycle, ml-connector queries SuccessFactors with a lastModifiedDateTime filter to fetch only changed records, manually parses the non-standard OData timestamp format (/Date(milliseconds)/), respects the minimum page size of 20 and sets top=1000 to avoid silently missing employees. It then maps SuccessFactors employee IDs, cost center codes, and job titles to Workday's worktag structure and employee master. If a Workday write fails, the entire record is logged with full audit context and can be retried. SuccessFactors enforces a maximum of 10 concurrent threads per client, so ml-connector serializes bulk reads. Both systems have rate limits that trigger HTTP 429 responses; ml-connector backs off exponentially and retries. Workday's tenant URL is customer-specific; SuccessFactors API hostname mirrors the login hostname and varies by datacenter (api4.successfactors.com for US East Virginia, api8 for Ashburn, api12.sapsf.com for EMEA, api15 for Singapore).

A real-world example

A financial services firm with 800 employees uses Workday Financial Management for accounting and Workday Payroll for payroll processing, but outsources HR administration to SAP SuccessFactors Employee Central. Before the integration, the finance team manually imported SuccessFactors headcount snapshots monthly and re-entered cost center assignments in Workday's GL, leading to mismatches during month-end close when headcount and labor costs did not align. New hires and terminations also created duplicate or orphaned records in Workday. With SuccessFactors and Workday connected, each new hire appears in Workday's employee master within hours, assigned to the correct cost center from the start. Terminations deactivate both systems in sync. Month-end close now begins with employee and cost center data already aligned, eliminating the manual import step and the reconciliation friction.

What you can do

  • Sync employee records, job changes, and terminations from SAP SuccessFactors to Workday Financial Management using delta sync on lastModifiedDateTime.
  • Map SuccessFactors cost center codes to Workday worktags and financial dimensions so payroll and expenses allocate to the correct GL accounts.
  • Generate SAML bearer tokens for SuccessFactors OAuth2 authentication and refresh Workday OAuth2 tokens on each sync cycle.
  • Parse SuccessFactors OData V2 datetime formats, respect page-size limits, and query with lastModifiedDateTime filters to avoid missed or duplicate records.
  • Maintain full audit trails on every employee and cost center sync, with error logging and manual replay capability for failed records.

Questions

What employee and cost center records move from SuccessFactors to Workday?
New hires, terminations, job changes, and compensation updates flow from SuccessFactors into Workday as employee master records and worktag mappings. Cost center codes synchronize in both directions so compensation data posted to Workday references valid financial dimensions. Workday's GL accounts and journal entries are not written to directly by this integration; instead, the synchronized dimensions are used by downstream financial processes.
How does ml-connector handle SuccessFactors' non-standard OData datetime format and page size limits?
SuccessFactors returns timestamps in a non-standard format (/Date(milliseconds)/) rather than ISO-8601, and it requires explicit top=1000 parameters to avoid silently returning only the default 20 records per page. ml-connector parses the milliseconds-since-epoch timestamps, sets top=1000 on all queries, and uses lastModifiedDateTime filters to fetch only changed records since the last sync run, avoiding redundant downloads and missed employees.
What happens if a Workday write fails or a SuccessFactors record cannot be parsed?
Every record carries full context in the audit log. If a write to Workday fails, the error is logged with the employee ID, change timestamp, and API response, and the record can be manually reviewed and replayed. If a SuccessFactors record cannot be parsed (for example, a malformed timestamp or missing cost center code), it is flagged in the audit log and skipped without failing the entire sync run.

Related integrations

Connect Workday Financial Management and SAP SuccessFactors

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

Get started