ml-connector
SAP Business OneUKG

SAP Business One and UKG integration

SAP Business One runs financials and operations for small-to-midsize businesses. UKG runs payroll and HR for your workforce. Connecting the two keeps your labor costs in the general ledger aligned with your headcount in HR. Payroll GL journals flow from UKG into SAP Business One's ledger after each pay run, mapped to the cost centers where your employees work. Employee hire, termination, and compensation changes in UKG sync to SAP Business One so your operations data reflects the real workforce.

How SAP Business One works

SAP Business One is deployed on-premise or partner-hosted, with a customer-specific Service Layer instance exposing OData v4 REST endpoints at https://<customer-server>:<port>/b1s/v2/. It authenticates with a session token (B1SESSION cookie, valid for 30 minutes of inactivity) and exposes financials, purchasing, inventory, employees, cost centers, GL accounts, journal entries, and dimensions. Webhooks are supported in version 10.0 FP 2602 and later with server-side Webhook Messenger Service activation, but polling on a scheduled basis is recommended as the default approach since most SAP Business One deployments are on-premise and webhook setup requires SAP admin configuration.

How UKG works

UKG is a cloud workforce management platform accessible through REST APIs at tenant-specific URLs (https://{tenant-hostname}/personnel/v1, https://{tenant-hostname}/payroll/v1, and SOAP endpoints). It authenticates with HTTP Basic Auth plus two API key headers (US-CUSTOMER-API-KEY and US-USER-API-KEY) or OAuth 2.0 with 1-hour token expiry. UKG exposes employee master data, compensation, pay statements, direct deposit details, cost centers, and payroll GL export through the third-party pay endpoint. Webhooks are available through the UKG Webhooks platform with HMAC SHA-256 signatures and 14-day retention, though webhooks are subject to the primary polling approach given the 14-day event retention window.

What moves between them

The integration flows primarily from UKG into SAP Business One on your payroll schedule. After each payroll run, ml-connector reads UKG's payroll GL export (containing labor cost journals with GL account codes and debit/credit amounts) and posts these journals into SAP Business One's chart of accounts and profit centers. Employee records (hire, termination, demographic updates) flow the same direction so SAP Business One headcount reflects UKG workforce changes. Cost centers and GL accounts are validated in both directions, ensuring payroll postings land on existing SAP Business One dimensions. GL postings are read-only in UKG, so no financial entries are written back to the payroll system.

How ml-connector handles it

ml-connector polls UKG's payroll GL export and employee endpoints on a schedule tied to your payroll calendar, refreshing the OAuth 2.0 token when the 1-hour lifetime expires. On the SAP Business One side, it maintains a persistent session to avoid the cold-start cost of repeated authentication (reusing the B1SESSION cookie and refreshing when the 30-minute inactivity timeout is reached). Before posting any payroll GL journal, it validates that the target SAP Business One cost center and GL account exist, and maps the UKG cost center codes to their SAP Business One equivalents. If a journal post fails due to a transient error (network, rate limiting), ml-connector retries with exponential backoff. Because SAP Business One is on-premise and behind a firewall, push notifications are not relied upon; instead, the polling cadence is aligned to your payroll processing window. Every journal entry and employee change carries an audit trail so reconciliation is traceable and replay is possible if a downstream system step fails.

A real-world example

A regional manufacturing company runs SAP Business One on-premise for production scheduling, purchasing, and finance across three plants in different states. The company uses UKG for centralized payroll and HR covering all plants and the head office. Before the integration, the accounting team pulled payroll journals from UKG every pay period and manually re-entered labor totals into SAP Business One, then spent days reconciling differences between UKG employee counts and actual SAP Business One labor costs. With the integration, each payroll run posts its GL journal automatically into SAP Business One, allocated by plant location, and employee changes keep the two systems in sync. Month-end close starts with labor costs already reconciled and the manual re-keying step eliminated.

What you can do

  • Post UKG payroll GL journals into SAP Business One's general ledger on your payroll schedule, allocated to the correct cost centers and GL accounts.
  • Keep SAP Business One headcount and employee records synchronized with UKG hires, terminations, and compensation changes.
  • Validate UKG cost centers and GL account codes against SAP Business One before posting payroll journals to prevent posting to invalid accounts.
  • Manage UKG OAuth token refresh (1-hour expiry) and SAP Business One session reuse (30-minute inactivity timeout) to minimize authentication overhead.
  • Maintain a complete audit trail on every journal entry and employee change, with replay capability if a posting fails.

Questions

Which direction does data move between SAP Business One and UKG?
The main flow is from UKG into SAP Business One. Payroll GL journals and employee records move from UKG into SAP Business One, while cost centers are validated bidirectionally to ensure payroll postings land on valid SAP Business One accounts. GL postings are read-only in UKG, so ml-connector does not write financial entries back to the payroll system.
How does ml-connector handle SAP Business One's on-premise deployment and 30-minute session timeout?
Because SAP Business One is on-premise and accessed through a customer-specific Service Layer URL, ml-connector accepts the full endpoint URL from the customer. It reuses a persistent B1SESSION cookie across multiple requests to avoid repeated authentication overhead, and refreshes the session when the 30-minute inactivity timeout approaches. For UKG, it manages the 1-hour OAuth token lifetime and refreshes proactively to avoid failed API calls.
What happens if a payroll GL journal post to SAP Business One fails?
ml-connector validates the target cost center and GL account exist before attempting to post, and retries transient failures with exponential backoff. Every journal entry is logged with a full audit trail, and failed postings can be replayed once the underlying cause (invalid account, network error, or cost center mismatch) is resolved.

Related integrations

Connect SAP Business One and UKG

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

Get started