ml-connector
Oracle JD EdwardsMarketo

Oracle JD Edwards and Marketo integration

JD Edwards runs your order-to-cash and finance operations on-premises. Marketo manages leads, accounts, and campaigns to fuel your go-to-market motion. Connecting the two ensures your marketing and sales teams work from the same customer and opportunity data that live in your ERP. New customers and sales data added to JD Edwards flow into Marketo automatically, enriching lead and company records without manual re-entry or spreadsheet exports.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne is an on-premises ERP suite covering financials, procurement, manufacturing, HR, and distribution. It exposes customer master records, suppliers, items, purchase orders, and GL accounts through REST APIs via the Application Interface Services (AIS) Server running at the customer's infrastructure. Authentication uses either a session token (obtained via POST to /tokenrequest with username and password) or HTTP Basic Auth per-request, returned as an opaque token in the jde-AIS-Auth header. JD Edwards has no native outbound webhooks, so integrations must poll data service tables with a date filter on the last-updated field (UPMJ) to find new or changed records. Token lifetime is 30 to 60 minutes by default, and the AIS Server hostname is customer-specific since JD Edwards is on-premises only.

How Marketo works

Marketo is a B2B marketing automation platform that manages leads, companies, opportunities, sales persons, and custom objects. It exposes all data through REST JSON APIs secured with OAuth2 Client Credentials (2-legged), where the customer provides a Munchkin ID, Client ID, and Client Secret to obtain a Bearer token with up to 3600 second expiry. Every Marketo instance has a unique subdomain based on its Munchkin Account ID. Marketo webhooks are outbound calls from Marketo to external systems, not inbound events, so integrations must poll using GET /rest/v1/leads.json with updatedAt filters, the Bulk Activity API (31-day window max), or the lead changes endpoint with paging tokens. Batch requests are limited to 300 records per call for leads and opportunities.

What moves between them

The main data flow is from JD Edwards into Marketo. Customer master records from JD Edwards F0103 (Customer Master) are polled for new or updated entries and synced into Marketo as companies. Related contact records from F0101 (Address Book) flow into Marketo leads, enriched with customer and sales data. Opportunity records can be pulled from JD Edwards if custom orchestration makes them available, and they sync into Marketo opportunities with account associations intact. The sync runs on a schedule you control, typically daily or weekly after your ERP batch processes. All records carry a source-system ID and last-modified timestamp so repeated syncs idempotently update rather than duplicate.

How ml-connector handles it

ml-connector stores both credential sets encrypted in its database. For JD Edwards it accepts the full AIS Server URL (since there is no fixed public hostname), uses the provided username and password to obtain a session token via /jderest/v2/tokenrequest, and caches that token until it expires or JD Edwards returns HTTP 444 (invalid token), at which point it re-authenticates. For Marketo it exchanges the Munchkin ID and Client Secret for an OAuth2 Bearer token and includes it in every request header. It polls JD Edwards data service tables with a date filter on UPMJ to find customer, contact, and item records changed since the last run, maps customer master IDs to Marketo company IDs, and matches contact addresses to leads by email. For opportunities it uses a custom orchestration if the customer has one deployed, or skips them if the JD Edwards instance does not support the needed service table. Marketo's 300-record batch limit means large customer lists are sent in chunks. ml-connector tracks pagination state and resumption points so interrupted syncs pick up where they left off, and it logs every record sent to both systems with timestamps and field mappings for full auditability.

A real-world example

A mid-market B2B manufacturing company runs JD Edwards for order fulfillment, inventory, and finance across multiple plants. Their Marketo instance drives lead generation and account-based marketing campaigns, but the sales and marketing teams often work with stale or incomplete customer data because customer master records live in JD Edwards and must be manually exported to sync into Marketo. This causes duplicate leads, missed upsell opportunities, and incorrect target account lists. After connecting JD Edwards to Marketo, every new customer created in the ERP automatically appears in Marketo within hours, pre-populated with company size, industry codes, and billing address. Existing customers enriched with new contacts or updated addresses flow into Marketo as lead updates, so the ABM team always targets the right decision makers. The sales ops team no longer exports spreadsheets or chases data sync bugs - the integration runs on a predictable schedule and every record audit trail is available if a question arises.

What you can do

  • Sync customer master records from JD Edwards F0103 into Marketo companies with key financial attributes and billing addresses.
  • Flow contact records from JD Edwards F0101 Address Book into Marketo leads, matched by email and linked to the correct company.
  • Poll JD Edwards on a schedule tied to your month-end or operational calendar, refreshing customer data in Marketo without manual export.
  • Handle JD Edwards AIS token expiry and Marketo OAuth refresh automatically, with full retry logic and error recovery.
  • Maintain a complete audit trail of every customer and contact record synced, with timestamps and field mappings for compliance and troubleshooting.

Questions

Does the integration sync opportunity data from JD Edwards into Marketo?
Marketo has native opportunity records but JD Edwards exposes opportunities through custom orchestrations, not standard data services. If your JD Edwards instance has a deployed orchestration that returns sales order or project data mapped as opportunities, ml-connector can ingest it. Otherwise the integration syncs customer and contact records, which is the foundation for account-based marketing. Contact your JD Edwards consultant to confirm available orchestrations.
How does ml-connector handle JD Edwards' 30 to 60 minute token lifetime?
ml-connector caches the AIS token until it expires or JD Edwards returns HTTP 444 (invalid token). When either condition occurs it automatically re-authenticates using the stored username and password to obtain a new token, so the integration continues without manual intervention. If the JD Edwards service account license is revoked or the AIS Server restarts, the connector logs the authentication failure and alerts you.
What happens if Marketo batch limits or rate limits are hit during a sync?
Marketo imposes a 300-record batch limit on lead and opportunity upserts. ml-connector splits large customer exports into chunks, sends each batch separately, and tracks which records were acknowledged before moving to the next. If Marketo returns a rate-limit response, ml-connector backs off and retries exponentially. Every attempt is logged so you can see exactly which records succeeded, which failed, and why.

Related integrations

Connect Oracle JD Edwards and Marketo

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

Get started