ml-connector
Oracle JD EdwardsAirbase

Oracle JD Edwards and Airbase integration

Oracle JD Edwards EnterpriseOne is the finance system of record and Airbase is where the spend originates. Connecting the two moves approved bills, expense reimbursements, and card spend out of Airbase and into the JD Edwards general ledger without re-keying. The JD Edwards account master, business units, and supplier list flow back to Airbase so every transaction is coded to accounts that actually exist. ml-connector handles the very different auth and data models on each side and runs the sync on a schedule you control, since JD Edwards is on-premises and pull-only.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne is on-premises and exposes its data through the Application Interface Services (AIS) Server REST gateway at a customer-specific host and port, so there is no shared base URL. Authentication is a session token: the connector posts JDE credentials to the token request endpoint and sends the returned token in the jde-AIS-Auth header on every call, re-authenticating on an invalid-token response. Reads use data service table queries against tables such as F0411 for AP vouchers, F0911 for the account ledger, F0901 for the account master, and F0101 or F0401 for suppliers, with offset pagination via maxPageSize. Direct table writes are not supported, so creating vouchers or journal entries goes through named orchestrations like JDE_ORCH_04_Add_Supplier_Invoice or the form service. JD Edwards has no native outbound webhooks, so finance records are read by polling on the date-updated field.

How Airbase works

Airbase exposes its data through a REST API over HTTPS using a static bearer token generated in the Airbase portal, sent against a tenant-specific base URL. Confirmed entities include bills, purchase orders, vendors, payments, expense reimbursements, and card transactions, plus GL accounts that Airbase treats as read-only because the ERP is the source of truth. Airbase supports outbound webhooks configured in the portal, with at least the purchase_request_approved event confirmed, though the signing scheme is not publicly documented. The token is long-lived and rotated manually, since there is no public OAuth refresh flow.

What moves between them

The main flow runs from Airbase into Oracle JD Edwards. As bills, expense reimbursements, and card transactions clear their Airbase approval chains, ml-connector reads them and writes AP vouchers and journal entries into JD Edwards through the configured orchestrations, against the matching object accounts and business units. Reference data runs the other direction: the JD Edwards account master, business units, and supplier records feed Airbase so spend is coded against valid GL accounts. Account ledger data is read-only over the data service, so ml-connector creates postings only through orchestrations and never writes financial entries back into Airbase.

How ml-connector handles it

ml-connector stores both credential sets encrypted and presents the right one per side. For JD Edwards it accepts the full AIS host, port, and environment as credential fields since there is no shared base URL, posts JDE credentials for a session token, sends that token in the jde-AIS-Auth header, and re-authenticates automatically on an invalid-token response, which JDE returns after an AIS Server restart. For Airbase it sends the portal-generated bearer token against the tenant base URL and tracks the token so a manual rotation does not become an outage. Airbase approval chains mean a created bill is not yet payable, so ml-connector reads on a polling schedule and checks status fields rather than acting on the first event, and it can consume Airbase webhooks where they are enabled. Account and business unit mappings are set first, so every voucher and journal line references a JD Edwards object account and cost center that already exists. Writes depend on the customer importing the pre-built orchestrations or naming a custom one, so the orchestration name is a config field, and because JDE has no idempotency header the connector deduplicates before each write to avoid duplicate vouchers. JDE returns a forbidden response if the integration user license is locked and a separate code if the connector IP is not on the AIS allowlist, so ml-connector surfaces those plainly, backs off on server errors, and retries. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A roughly 600-person industrial distributor runs Oracle JD Edwards EnterpriseOne for finance and procurement and uses Airbase for corporate cards, employee reimbursements, and vendor bill payments. Before the integration, the accounting team exported spend from Airbase each week and hand-keyed vouchers and journal entries into JD Edwards, then reconciled card and reimbursement totals against the account ledger during month-end close. With the two connected, approved bills, reimbursements, and card transactions post into JD Edwards automatically through orchestrations, coded to the correct object account and business unit, while the JD Edwards account master and supplier list keep Airbase coding accurate. The weekly re-keying disappears and close starts with spend already reconciled.

What you can do

  • Post approved Airbase bills, reimbursements, and card transactions into Oracle JD Edwards as AP vouchers and journal entries through orchestrations.
  • Feed the JD Edwards account master, business units, and supplier list back to Airbase so spend is coded to valid accounts.
  • Bridge Airbase's portal-generated bearer token and the JD Edwards AIS session token, with automatic re-authentication on token expiry.
  • Poll Airbase on a schedule and check approval status so only cleared spend posts to the ledger.
  • Deduplicate orchestration writes since JD Edwards has no idempotency header, with a full audit trail and replay on every record.

Questions

Which direction does data move between Oracle JD Edwards and Airbase?
The main flow is Airbase into JD Edwards. Approved bills, expense reimbursements, and card transactions move from Airbase into JD Edwards as AP vouchers and journal entries, while the account master, business units, and supplier list flow back to Airbase. JD Edwards account ledger data is read-only over the data service, so ml-connector writes only through orchestrations and never posts financial entries into Airbase.
How does the integration bridge the two different auth methods?
JD Edwards uses an AIS session token obtained by posting credentials to the token request endpoint and sent in the jde-AIS-Auth header, while Airbase uses a long-lived bearer token generated in its portal. ml-connector stores both encrypted, accepts the customer AIS host and environment since there is no shared base URL, and re-authenticates to JD Edwards automatically when the token is invalidated, which happens after an AIS Server restart. It also tracks the Airbase token so a manual rotation is handled before it can break the sync.
How does it write to JD Edwards when direct table writes are not supported?
The data service can only read JD Edwards tables, so all writes go through named orchestrations such as JDE_ORCH_04_Add_Supplier_Invoice that the customer imports into Orchestrator Studio, or a custom orchestration whose name is a config field. Because JD Edwards has no idempotency header, ml-connector deduplicates before each write to prevent duplicate vouchers. Failed calls are retried and can be replayed from the audit trail.

Related integrations

Connect Oracle JD Edwards and Airbase

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

Get started