ml-connector
Oracle JD EdwardsZoho CRM

Oracle JD Edwards and Zoho CRM integration

Oracle JD Edwards EnterpriseOne runs your financials, purchasing, and customer master records on premises. Zoho CRM manages your sales pipeline and customer relationships in the cloud. Connecting the two keeps your customer and vendor records in agreement across both systems. New accounts created in Zoho sync into JD Edwards as F0101 Address Book entries, and changes to customer master data in JD Edwards flow back into Zoho without manual re-entry. ml-connector bridges the authentication gap between on-premises JD Edwards tokens and Zoho's OAuth 2.0 flow, and orchestrates the data movement on a schedule you control.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne exposes suppliers, customers, and address book records through REST APIs served by a customer-hosted Application Interface Services (AIS) Server. The platform authenticates with a session token obtained via POST to the /jderest/v2/tokenrequest endpoint using a service account username and password, with the token valid for 30 to 60 minutes (configurable). The AIS Server is reached at a customer-provided base URL with no shared public hostname, and IP allowlists are commonly enforced. JD Edwards has no native outbound webhooks, so connector reads are pull-only via polling with date filters on update timestamps. Pagination uses the maxPageSize parameter with a moreRecords flag to handle large result sets.

How Zoho CRM works

Zoho CRM exposes accounts, contacts, vendors, and sales cycle records through REST APIs served from a region-specific hostname (us, eu, in, au, jp, ca, or cn). Zoho authenticates with OAuth 2.0 using either authorization code flow with offline refresh tokens for user-facing integrations or client credentials flow for headless service integrations. Access tokens are valid for one hour and must be refreshed before expiry. Zoho supports both pull via direct record GETs and push via webhook channels, with channels expiring approximately every day and requiring renewal. Vendor, Account, and Contact modules are available across all editions, though invoices and purchase orders require Professional edition or higher. Notification payloads contain only record IDs, requiring a subsequent fetch to retrieve full record state.

What moves between them

The main data flow is bidirectional. Customer and vendor records in Oracle JD Edwards (F0101 Address Book, F03012 Customer Master) are polled on a configurable schedule and mapped into Zoho CRM Accounts and Contacts. When new accounts or contacts are created or edited in Zoho, ml-connector passes those changes to orchestration-driven updates in JD Edwards to keep the customer master in sync. Master data such as payment terms, credit limits, and customer categories are mapped in both directions so each system reflects the same truth. The integration tracks the last-polled timestamp in JD Edwards to avoid re-processing unchanged records, and uses Zoho webhook channels when available to capture immediate changes without waiting for the next scheduled poll.

How ml-connector handles it

ml-connector manages the dual authentication model: it requests a session token from the JDE AIS Server on startup and stores it securely, refreshing it every 25 minutes (before the 30- to 60-minute expiry window) to avoid token timeout errors. On the Zoho side, it uses OAuth 2.0 refresh tokens to obtain a fresh access token before each request, and validates the response api_domain field to route subsequent calls to the correct regional endpoint. The connector polls JD Edwards F0101 and F03012 tables with a date filter on the UPMJ (date updated) field, paginating through results with maxPageSize and moreRecords markers. Each polled record is normalized to the Zoho CRM Account or Contact schema, and a lookup on email or tax ID ensures duplicate accounts are not created in Zoho. Changes in Zoho flow back to JD Edwards through named orchestrations that ml-connector calls with the mapped field values, and the connector tracks batch status to catch failures and log them for replay. Rate limits are handled with exponential backoff on 429 responses from either system, and every record carries a timestamp and audit ID for end-to-end traceability.

A real-world example

A mid-market B2B distributor runs Oracle JD Edwards EnterpriseOne on premises to manage procurement, inventory, and accounts payable, and uses Zoho CRM in the cloud to track customer relationships, quote cycles, and sales opportunities. Before the integration, the sales team and finance team maintained separate customer lists. New customer records created in Zoho had to be manually re-entered into JD Edwards before the first PO could be created, and customer credit limit changes made in JD Edwards had to be manually pushed back to Zoho so the sales team could see current risk. With the integration in place, Zoho and JD Edwards customer records stay in sync automatically on a daily schedule. New prospects added in Zoho flow into JD Edwards within 24 hours so they can be evaluated for credit, and changes to customer status or credit limits in JD Edwards reflect in Zoho immediately, giving the sales team a single source of truth for account risk and status.

What you can do

  • Sync customer and vendor master records between Oracle JD Edwards F0101 Address Book and Zoho CRM Accounts and Contacts on a configurable polling schedule.
  • Authenticate JD Edwards with session tokens and Zoho with OAuth 2.0 refresh tokens, managing token refresh and regional endpoint routing automatically.
  • Map custom fields and master data such as payment terms, credit limits, industry, and customer type in both directions.
  • Handle Zoho webhook channels for real-time notification when accounts or contacts change, reducing latency between the two systems.
  • Maintain a full audit trail of every record sync, with timestamps and error logs, and replay any failed syncs without re-processing unchanged records.

Questions

How often does data sync between Oracle JD Edwards and Zoho CRM?
By default, the integration polls Oracle JD Edwards on a daily schedule using the UPMJ (date updated) field to fetch only records that changed since the last poll. Zoho webhook channels can be enabled to push account and contact changes in real time if they occur. You can adjust the polling frequency based on your business needs.
What happens when a customer record exists in both systems with the same email or tax ID?
ml-connector uses email address and tax ID as deduplication keys. If a record matching either key already exists in Zoho, the integration updates that record instead of creating a duplicate. This ensures your customer list stays clean even if both systems are populated before the sync starts.
Does the integration work with on-premises JD Edwards behind a firewall or allowlist?
Yes. You provide ml-connector with the full AIS Server URL, and the connector authenticates with a JDE service account username and password to request a session token. If your AIS Server has IP allowlists enabled, you will need to whitelist ml-connector's egress IPs. The session token is refreshed automatically before expiry to prevent timeouts.

Related integrations

Connect Oracle JD Edwards and Zoho CRM

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

Get started