ml-connector
Oracle JD EdwardsJAGGAER

Oracle JD Edwards and JAGGAER integration

Oracle JD Edwards EnterpriseOne runs procurement and finance on-premises. JAGGAER runs sourcing-to-pay in the cloud. Connecting the two keeps your purchasing data synchronized without manual re-entry. Suppliers and purchase orders created in JD Edwards flow into JAGGAER, invoices from JAGGAER suppliers sync back into JD Edwards payables, and both systems reference the same GL accounts and cost centers for accurate spend visibility. ml-connector handles the different APIs, authentication schemes, and the lack of native webhooks on either side.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne exposes suppliers (F0401), purchase orders (F4301, F4311), accounts payable ledger (F0411), GL accounts (F0901), and posted transactions (F0911) through REST APIs served by a customer-hosted Application Interface Services (AIS) Server. Authentication requires a session token obtained via POST with username and password, returned in an opaque form and passed in the jde-AIS-Auth header on all subsequent requests. Tokens expire in 30 to 60 minutes by default. JD Edwards has no native outbound webhooks, so data must be queried by polling the data service tables with a date filter on the UPMJ (date updated) field, tracking the last-polled timestamp. The AIS Server base URL is customer-specific and must be provided as a credential since JD Edwards publishes no shared hostname.

How JAGGAER works

JAGGAER exposes invoices, purchase orders, suppliers, contracts, catalog items, and GL accounts through the J1P REST API served at a customer-specific subdomain. Authentication uses OAuth 2.0 Client Credentials, with a token endpoint and client_id and client_secret provisioned by JAGGAER during onboarding. The J1P API surfaces are not fully public in documentation and are provided in detail during customer onboarding. JAGGAER supports pull-only via J1P REST (event-driven configuration exists but requires JAGGAER professional services), and also accepts cXML bidirectional document exchange for supplier portals and invoice workflows. Detailed PO and invoice endpoint paths are confirmed during onboarding.

What moves between them

Purchase orders and supplier master data flow from Oracle JD Edwards into JAGGAER on a polling schedule. For each purchase order in JD Edwards (F4301, F4311), ml-connector reads the PO header and detail lines, maps the supplier ID from JD Edwards' F0401 to JAGGAER's supplier record, and writes the PO into JAGGAER via J1P. Invoices flow the reverse direction: ml-connector polls JAGGAER for invoices from registered suppliers, maps them to JD Edwards GL accounts and cost centers, and writes them into JD Edwards' payables ledger (F0411) via the orchestration interface. GL account and cost center reference data are aligned in both directions so spend data lands on valid dimensions.

How ml-connector handles it

ml-connector stores the JD Edwards AIS Server URL and credentials encrypted, obtains a session token on the first request, and passes it in the jde-AIS-Auth header on all data service queries. When the token expires (HTTP 444 response), it re-authenticates and retries the request. For JAGGAER, it stores the client_id and client_secret encrypted, obtains an OAuth 2.0 bearer token, and refreshes it when a call returns 401. ml-connector polls both systems on a schedule set per customer since neither has reliable native webhooks. For purchase orders, it filters JD Edwards' F4301 by UPMJ (date updated) and reads each PO detail from F4311, then posts to JAGGAER's J1P purchase order endpoint. For invoices inbound, it queries JAGGAER's invoice endpoint and writes each invoice into JD Edwards' F0411 batch interface, mapped to the JD Edwards GL account and cost center in the invoice's custom fields. Suppliers are synced first so every PO and invoice references a valid supplier ID in both systems. AIS Server does not support Idempotency-Key headers, so ml-connector uses batch user and date as the dedup key per JD Edwards convention. JAGGAER rate limits are handled with exponential backoff and retry. Every record carries a full audit trail.

A real-world example

A mid-sized discrete manufacturer runs Oracle JD Edwards EnterpriseOne on-premises for production, procurement, and finance across three plants, and uses JAGGAER in the cloud for strategic sourcing, contract management, and supplier relationship management. Before the integration, the procurement team created POs in JD Edwards, then manually entered summary lines into JAGGAER for sourcing tracking. When suppliers invoiced through JAGGAER's portal, the accounting team re-entered the invoice totals into JD Edwards by hand, creating a two-day delay and frequent mismatches in invoice amounts and cost codes. With Oracle JD Edwards and JAGGAER connected, each new PO flows from JD Edwards to JAGGAER automatically so sourcing has real-time visibility, and supplier invoices posted in JAGGAER flow directly into JD Edwards payables with no manual re-entry. Invoice discrepancies drop because both systems reference the same GL account and cost center.

What you can do

  • Sync purchase order headers and detail lines from Oracle JD Edwards into JAGGAER, mapped to the correct suppliers.
  • Read invoices from JAGGAER suppliers and write them into JD Edwards accounts payable with GL account and cost center alignment.
  • Authenticate to the JD Edwards AIS Server with session tokens and handle token expiry and refresh automatically.
  • Authenticate to JAGGAER J1P API with OAuth 2.0 client credentials and manage bearer token lifecycle.
  • Poll both systems on a configurable schedule, deduplicate invoices and POs per system convention, and maintain a complete audit trail.

Questions

How does ml-connector handle Oracle JD Edwards being on-premises with a customer-hosted AIS Server?
ml-connector stores the full AIS Server URL (https://<customer-ais-server-host>:<port>/jderest/v2/) as part of the customer's encrypted credential set. Since JD Edwards publishes no shared hostname, each customer must provide their AIS Server address during setup. ml-connector connects directly to that URL to obtain session tokens and query data service tables.
What happens when a JD Edwards session token expires?
JD Edwards session tokens expire after 30 to 60 minutes by default. When ml-connector receives an HTTP 444 response (invalid token), it immediately re-authenticates with the stored username and password, obtains a new session token, and retries the failed request with the new token in the jde-AIS-Auth header.
Why are suppliers and GL accounts synced first before orders and invoices?
Suppliers and GL accounts are master reference data that both systems use to validate every order and invoice. By syncing suppliers and GL accounts first, ml-connector ensures that every purchase order and invoice references a valid supplier ID and cost center in both systems, preventing mismatches and enabling accurate spend tracking across the two platforms.

Related integrations

Connect Oracle JD Edwards and JAGGAER

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

Get started