ml-connector
Oracle JD EdwardsUKG

Oracle JD Edwards and UKG integration

Oracle JD Edwards runs your financials and procurement. UKG runs your payroll and HR. Connecting the two keeps your employee records aligned and your general ledger current without re-keying. When UKG completes a pay run, ml-connector reads the payroll GL export and posts labor cost journals into Oracle JD Edwards, allocated to the correct GL accounts and cost centers. Employee hires, terminations, and demographic changes in UKG sync into JD Edwards address book so headcount records match between systems.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne is deployed at customer infrastructure and exposes data through REST API via AIS Server at a customer-provided hostname. Authentication uses session tokens obtained by POST to /jderest/v2/tokenrequest with username and password, or HTTP Basic Auth in stateless mode. Key entities include address book (vendors, customers, employees), supplier master, accounts payable ledger and matching documents, purchase orders, GL chart of accounts, GL ledger transactions, and item master. JD Edwards has no native outbound webhooks, so all data is fetched by polling with date filters on updated timestamp fields and tracking the last-polled checkpoint. The AIS Server token lifetime is 30-60 minutes (configurable), and the API response code 444 signals token expiry requiring re-authentication.

How UKG works

UKG exposes HR and payroll data through REST and SOAP APIs across personnel, payroll, and services endpoints. Authentication uses HTTP Basic Auth with two custom API key headers (US-CUSTOMER-API-KEY and US-USER-API-KEY) or OAuth 2.0 client credentials with a 1-hour token expiry. Key entities include employees, compensation details, pay statements, direct deposit, cost centers, and pay groups. For GL accounting, UKG exposes payroll GL data through the /services/payroll/v1/thirdpartypay endpoint with GL account segments and debit/credit amounts. UKG supports webhooks via the Webhooks platform with HMAC SHA-256 signed events (near real-time, 14-day retention) for employee, document, and HR events, as well as delta polling via /personnel/v1/employees/changed for zero-tolerance integrations. The employee ID endpoint returns internal UUIDs requiring a second call per employee to fetch the full profile.

What moves between them

The main flow is UKG into Oracle JD Edwards. After each pay run, ml-connector reads UKG payroll GL export from the thirdpartypay endpoint and posts labor cost journals into JD Edwards GL ledger (table F0911Z1 batch entries), mapped to matching GL accounts and cost centers. Employee master records flow from UKG into JD Edwards address book (table F0101) so new hires, terminations, and demographic updates in UKG keep JD Edwards headcount current. Cost centers and departments are aligned in both directions so payroll GL lines reference valid JD Edwards GL accounts and cost centers before posting. GL postings are read-only in UKG, so ml-connector never writes financial entries back to payroll.

How ml-connector handles it

ml-connector stores both credential sets encrypted: the customer AIS Server hostname and JD Edwards service account password for token refresh, and the UKG customer API key and OAuth client credentials. On the JD Edwards side, it requests a fresh session token every time because the default 30-60 minute lifetime is unpredictable, and it detects HTTP 444 (token expired) and re-authenticates immediately. On the UKG side, it caches the OAuth token for the full 1-hour lifetime and refreshes only at expiry or on 401 response. Because JD Edwards has no webhooks, ml-connector polls both UKG and JD Edwards on a schedule tied to your payroll calendar, using UKG's thirdpartypay export endpoint and JD Edwards data service queries filtered by UPMJ (date updated). Cost centers and GL accounts are mapped first via a configuration step so every payroll journal line references an account that exists in JD Edwards. When UKG webhooks are enabled, ml-connector can subscribe to employee. events for near-real-time hiring and terminations, with secondary polling as a fallback because UKG retains events for only 14 days. Every record carries a full audit trail and can be replayed if a downstream GL posting fails.

A real-world example

A mid-sized logistics company runs Oracle JD Edwards for procurement, inventory, and financial accounting across four distribution centers, and uses UKG for payroll and time tracking across the same footprint. Before the integration, the finance team exported payroll GL summaries from UKG each pay period and manually posted labor costs into JD Edwards GL by distribution center, spending hours allocating payroll to the correct GL accounts and cost centers, and then validating that employee headcount matched between systems during month-end close. With Oracle JD Edwards and UKG connected, each payroll run's GL export posts directly into JD Edwards GL, automatically allocated to the correct cost center for each location, and employee hires and terminations sync into JD Edwards address book. Month-end close now starts with labor accounts already reconciled and headcount already aligned.

What you can do

  • Post UKG payroll GL journals into Oracle JD Edwards general ledger after each pay run, allocated to the correct GL accounts and cost centers.
  • Keep Oracle JD Edwards employee records synced with UKG hires, terminations, and demographic changes.
  • Map UKG cost centers to Oracle JD Edwards GL accounts so payroll costs land on valid ledger lines.
  • Handle Oracle JD Edwards session tokens that expire every 30-60 minutes and UKG OAuth tokens with 1-hour expiry, refreshing transparently on each request.
  • Poll Oracle JD Edwards and UKG on a schedule tied to your payroll calendar, with retries and a full audit trail on every record.

Questions

How does ml-connector handle Oracle JD Edwards session tokens that expire every 30-60 minutes?
ml-connector requests a fresh session token on each API call to avoid token expiry surprises, and it detects the HTTP 444 response (token expired) and immediately re-authenticates if a token expires mid-request. This eliminates the need for ml-connector to guess the remaining lifetime and request a new token speculatively.
Why does ml-connector poll instead of relying on Oracle JD Edwards webhooks?
Oracle JD Edwards has no native outbound webhook capability, so data must be fetched by polling. ml-connector polls both systems on a schedule you define, tied to your payroll calendar, using JD Edwards data service queries filtered by date updated (UPMJ field) and UKG delta polling endpoints to fetch only changed records since the last sync.
How are payroll GL lines matched to the correct GL accounts and cost centers in Oracle JD Edwards?
ml-connector requires a mapping configuration step before the first sync that aligns UKG cost centers to Oracle JD Edwards GL accounts and cost centers. Every payroll GL line is then validated against this mapping before posting, ensuring the GL posting references valid JD Edwards accounts and cost centers.

Related integrations

Connect Oracle JD Edwards and UKG

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

Get started