SYSPRO and ADP integration
SYSPRO runs manufacturing and finance. ADP runs payroll and HR. Connecting the two keeps your GL accounts in agreement with payroll totals and your workforce list in sync with ADP hires and terminations. Payroll GL documents ADP produces after each pay run post into SYSPRO's general ledger without re-keying, allocated to the cost centers and departments you define. Worker changes in ADP update SYSPRO's employee roster automatically.
What moves between them
The main flow runs from ADP into SYSPRO. After each payroll run, ml-connector reads ADP general ledger documents and posts them into SYSPRO's GL, allocated to the matching SYSPRO cost centers and GL accounts. Worker records flow the same direction so SYSPRO headcount reflects ADP hires, terminations, and rehires. Cost centers, departments, and pay codes are mapped and aligned in both systems first, ensuring every payroll entry lands on a valid SYSPRO dimension.
How ml-connector handles it
ml-connector stores both credential sets encrypted and manages them separately. On the ADP side it presents the required mutual TLS certificate on every call, obtained during setup, and refreshes the OAuth2 bearer token when a response returns 401 Unauthorized. For SYSPRO it uses the e.net Business Objects session token acquired by logging into the Utilities/Logon endpoint, which requires the operator code and password you supply. Because SYSPRO Cloud is pull-only with no outbound webhooks, ml-connector polls ADP GL documents and worker data on a schedule tied to your payroll calendar rather than waiting for a push. Cost centers and departments are mapped first using OData reads, so every GL journal line references an account and cost center that already exists in SYSPRO. ADP rate limits are per-node and return HTTP 429, so ml-connector backs off with exponential retry. The ADP client certificate expires and must be renewed before outage, so ml-connector tracks its expiry date. Every record carries a full audit trail for replay if a downstream write fails.
A real-world example
A mid-sized discrete manufacturer runs SYSPRO ERP for production, procurement, and GL accounting, and ADP Workforce Now for payroll across three plants. Before integration, the finance team exported ADP payroll registers every pay period and manually entered labor totals into SYSPRO's GL, then spent the first days of month-end close reconciling differences between ADP headcount and SYSPRO labor accounts. With SYSPRO and ADP connected, each payroll run's GL document flows into SYSPRO automatically, allocated to the cost center for each plant, and ADP worker changes keep the two systems aligned. Month-end close starts with labor accounts already reconciled and the headcount lists matching.
What you can do
- Post ADP payroll GL documents into SYSPRO's general ledger after every pay run, allocated to the correct cost centers and departments.
- Keep SYSPRO employee records in sync with ADP hires, terminations, and rehires using OData writes to SYSPRO's employee tables.
- Map ADP cost centers and pay codes to SYSPRO GL dimensions so payroll entries land on valid accounts.
- Authenticate ADP with OAuth2 and the required mutual TLS client certificate, and SYSPRO with its e.net session token.
- Poll on a schedule tied to your payroll calendar, with retry logic for ADP rate limits and a full audit trail on every record.
Questions
- Which direction does data move between SYSPRO and ADP?
- The main flow is ADP into SYSPRO. Payroll GL documents and worker records move from ADP into SYSPRO, while cost centers and departments are aligned first to ensure data lands on valid dimensions. ADP general ledger documents are read-only, so ml-connector does not write financial entries back into payroll.
- How does ml-connector handle ADP's mutual TLS certificate requirement and SYSPRO's session token auth?
- ml-connector stores the ADP client certificate and private key encrypted, presents the certificate at the TLS layer on every API call, and refreshes the OAuth2 bearer token when ADP returns 401. For SYSPRO it logs into the Utilities/Logon endpoint once per session using the operator code and password you supply, and reuses the session token on all subsequent e.net Business Objects calls until expiry.
- Why does ml-connector poll instead of wait for pushes from SYSPRO?
- SYSPRO Cloud and on-premise do not expose outbound webhooks for cloud connectors. ml-connector polls ADP GL documents and worker data on a schedule aligned to your payroll calendar, using OData $filter on timestamp fields to fetch only new records since the last run, so you control the cadence and can tie it to your payroll dates.
Related integrations
More SYSPRO integrations
Other systems that connect to ADP
Connect SYSPRO and ADP
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started