ml-connector
SYSPROADP

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.

How SYSPRO works

SYSPRO exposes suppliers, purchase orders, invoices, general ledger accounts, cost centers, departments, items, employees, and payroll through three API layers. e.net Business Objects provide REST and SOAP (NetTcp) interfaces for both read and write operations, requiring a session token obtained by login to the Utilities/Logon endpoint. OData endpoints provide read-only REST access to tables via HTTP Basic Auth with SQL credentials. SYSPRO Cloud and on-premise installations do not expose webhooks, so polling with OData $filter on timestamp fields is required. Recommended polling intervals are 5-15 minutes for financial data.

How ADP works

ADP exposes workers, payroll processing, pay distributions, cost centers, and general ledger documents through REST/JSON APIs secured with OAuth2 client credentials and a mandatory mutual TLS client certificate. Every call requires the client certificate at the TLS handshake, and ADP returns HTTP 429 when rate limits are exceeded on a per-node basis. ADP supports event notifications for worker hire, termination, rehire, name, address, and pay data changes, with built-in retries. General ledger documents from payroll are read-only and cannot be written back.

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

Connect SYSPRO and ADP

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

Get started