ml-connector
SAP Business OneADP

SAP Business One and ADP integration

SAP Business One runs financials, purchasing, sales, and inventory for small and midsize businesses. ADP runs payroll and HR. Connecting the two keeps the general ledger and the workforce in agreement. After each payroll run, the labor cost documents ADP produces post into SAP Business One as journal entries without re-keying, and hires and terminations in ADP line up with cost centers in SAP Business One. ml-connector handles the very different APIs on each side and moves the data on a schedule you control.

How SAP Business One works

SAP Business One exposes its data through the Service Layer, an OData v4 REST API served on a customer-specific base URL because the product is on-premise or partner-hosted with no shared hostname. Authentication is a session login that returns a B1SESSION cookie, which expires after about 30 minutes of inactivity and must be reused rather than re-issued per request. Key entities include BusinessPartners, PurchaseInvoices, JournalEntries, ChartOfAccounts, and ProfitCenters, with cost centers applied to journal lines through CostingCode dimensions. Webhooks exist only from version 10.0 FP 2602 and require server-side admin setup, so most connections read finance records by polling with date filters.

How ADP works

ADP exposes workers, payroll input, pay distributions, cost center validation tables, and general ledger documents through ADP API Central, a paid REST add-on that also supports OData query parameters. Every call requires OAuth2 client credentials and a mutual TLS client certificate, and the TLS handshake fails without the certificate. Writes to ADP go through event endpoints rather than direct field updates, and the GL documents ADP generates after payroll are read-only. ADP can also push worker and payroll events to a registered endpoint that returns a 2xx acknowledgement.

What moves between them

The main flow runs from ADP into SAP Business One. After each payroll run, ml-connector reads ADP general ledger documents and posts the labor cost journals into SAP Business One as journal entries, mapped to the matching GL accounts and profit centers. Worker records flow the same direction so SAP Business One reflects ADP hires, terminations, and rehires. Reference data such as cost centers, departments, and job codes is aligned in both directions so payroll allocations land on valid SAP Business One dimensions. GL documents are read-only in ADP, so ml-connector never writes financial entries back into payroll.

How ml-connector handles it

ml-connector stores both credential sets encrypted and presents the ADP client certificate at the TLS layer on every request, refreshing the ADP bearer token when a call returns 401. On the SAP Business One side it accepts the full Service Layer base URL per customer, logs in once to obtain the B1SESSION cookie, and reuses that session across calls because the first login is slow. When SAP Business One returns error code -5002 the session has timed out, so ml-connector logs in again and replays the failed request. ADP general ledger documents map to SAP Business One JournalEntries, and ADP cost centers map to SAP Business One ProfitCenters and CostingCode dimensions, which are aligned first so every journal line references an account and cost center that already exists. Because SAP Business One webhooks need on-premise admin setup that most sites do not have, ml-connector polls ADP and SAP Business One on a schedule tied to your payroll calendar, and can receive ADP event notifications where they are enabled. ADP rate limits return HTTP 429 per gateway node, so ml-connector backs off and retries, and it tracks the ADP certificate expiry so a renewal does not turn into an outage. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A midsize industrial distributor runs SAP Business One for purchasing, inventory, and finance across a warehouse and two branch offices, and uses ADP Workforce Now for payroll. Before the integration, the finance team exported payroll registers from ADP every pay period and keyed the labor totals into SAP Business One by hand, then spent the first days of month-end close chasing differences between headcount and the labor accounts in the ledger. With SAP Business One and ADP connected, each payroll run's GL document posts into SAP Business One automatically, allocated to the cost center for each location, and worker changes keep the two systems aligned. Month-end close starts with the labor accounts already reconciled, and the manual re-keying step is gone.

What you can do

  • Post ADP payroll GL documents into SAP Business One as journal entries after every pay run, allocated to the correct profit centers.
  • Keep SAP Business One headcount aligned with ADP hires, terminations, and rehires.
  • Map ADP cost centers, departments, and job codes to SAP Business One profit centers and CostingCode dimensions so payroll lands on valid accounts.
  • Authenticate ADP with OAuth2 and the required mutual TLS certificate, and SAP Business One with its session login cookie.
  • Poll on a schedule tied to your payroll calendar, with retries and a full audit trail on every record.

Questions

Which direction does data move between SAP Business One and ADP?
The main flow is ADP into SAP Business One. Payroll GL documents and worker records move from ADP into SAP Business One, while cost centers and departments are aligned in both directions. ADP general ledger documents are read-only, so ml-connector does not write financial entries back into payroll.
How does the integration handle SAP Business One's session login and lack of webhooks?
ml-connector logs in to the Service Layer once to obtain the B1SESSION cookie and reuses it across calls, re-authenticating and replaying the request when SAP returns the -5002 timeout code. Because SAP Business One webhooks require on-premise admin setup that most sites do not have, it polls on a schedule tied to your payroll calendar rather than relying on a push.
Does ADP's mutual TLS certificate requirement need special setup?
Yes. ADP requires a client certificate at the TLS layer on every call in addition to OAuth2 credentials, and the connection fails without it. ml-connector stores the certificate encrypted, presents it on each request, and tracks its expiry so a renewal is handled before it can cause an outage.

Related integrations

Connect SAP Business One and ADP

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

Get started