Sage 100 and SAP SuccessFactors integration
Sage 100 holds your financial records and GL accounts. SAP SuccessFactors holds your employees, job assignments, and cost center allocations. Connecting the two ensures that when finance records are created in Sage 100, they reference employee cost centers and job codes that actually exist in SuccessFactors, eliminating dangling references and month-end reconciliation failures. Employee moves and cost center changes in SuccessFactors flow to Sage 100 so GL account assignments stay accurate without manual review.
What moves between them
The integration pulls employee and cost center reference data from SAP SuccessFactors every 4 hours to validate cost center codes. When Sage 100 GL journal entries or AP invoices are created, ml-connector checks that the assigned cost center exists in SuccessFactors and logs a validation result. Employee job changes in SuccessFactors are polled on the same schedule and compared against Sage 100 vendor or customer records, flagging mismatches for review. No data is written back to SuccessFactors; the flow is read-only from cloud HCM into on-premises finance.
How ml-connector handles it
ml-connector runs on or near the customer's Sage 100 server and connects outbound to the SuccessFactors OData endpoint via HTTPS. For Sage 100, it maintains the local BOI agent connection (or SOAP over HTTP where available), passing username and password per call and polling for changes using DateLastUpdated filters per entity. For SuccessFactors, it generates SAML assertions signed with the customer's registered RSA private key, POSTs to the datacenter-specific OAuth token endpoint (e.g., api4.successfactors.com/oauth/token), and caches the returned Bearer token across requests until expiry. When token refresh returns 401, it re-signs a fresh SAML assertion and re-authenticates. OData datetime filters are formatted to SuccessFactors spec (datetime'2026-01-01T00:00:00'). Cost center and FOJobCode entities are cached locally with lastModifiedDateTime tracking so subsequent polls fetch only deltas. Validation failures (cost center missing, job code mismatch) are logged with the record ID, timestamp, and recommendation for manual review. Concurrent requests to SuccessFactors respect the 10-thread throttle by queuing and backing off on 429 responses. Sage 100 COM record locks are handled with exponential backoff on collision exceptions.
A real-world example
A mid-market manufacturing company runs Sage 100 on-premises for AP, GL, and inventory across three plants. SAP SuccessFactors is their HR system of record for 200 employees, with job codes and cost centers assigned per employee. Before integration, the finance team manually reviewed GL entries weekly to confirm that cost center codes matched employee assignments in HR, and deactivated employees sometimes lingered in Sage 100 AP vendor lists. Monthly close required a spreadsheet reconciliation of cost center changes. With Sage 100 and SuccessFactors connected, each GL entry is validated against live cost center data from SuccessFactors on post, and employee status changes are reflected automatically in review reports. Close process starts with a clean cost center reconciliation, and dangling employee records are identified within 4 hours of deactivation.
What you can do
- Validate GL and AP cost center codes against SAP SuccessFactors cost center reference data on every transaction.
- Sync employee job assignments and cost center allocations from SuccessFactors to Sage 100 on a 4-hour poll cycle.
- Authenticate Sage 100 SOAP calls with per-call username and password, and SuccessFactors OData with OAuth 2.0 SAML Bearer assertions.
- Flag cost center mismatches and employee deactivations for manual review with full audit trail.
- Handle Sage 100 on-premises architecture, SAML token refresh, and OData V2 datetime formatting transparently.
Questions
- Does the integration write back to SAP SuccessFactors?
- No. The flow is read-only from SuccessFactors into Sage 100. ml-connector pulls employee, job, and cost center reference data from SuccessFactors to validate GL and AP entries in Sage 100, but does not create or modify employee records or compensation data in SuccessFactors. GL postings and financial transactions remain managed within Sage 100.
- How does ml-connector reach Sage 100 if it is on-premises?
- ml-connector is deployed on or adjacent to the customer's Sage 100 server so it can connect to the local BOI COM layer or the local SOAP endpoint. It polls Sage 100 periodically using the customer's username and password passed directly in SOAP calls (Sage 100 does not support OAuth). If SOAP is unavailable, the BOI agent provides AP, GL, and vendor access via the local Windows COM interface.
- What happens when a cost center code exists in SAP SuccessFactors but not in Sage 100?
- ml-connector logs the validation failure with the transaction ID, timestamp, and the missing cost center code. The GL entry or AP invoice is not rejected; instead, the mismatch is recorded in the audit trail for the finance team to review and correct in Sage 100. This prevents silent failures and gives clear visibility into data alignment issues.
Related integrations
More Sage 100 integrations
Other systems that connect to SAP SuccessFactors
Connect Sage 100 and SAP SuccessFactors
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started