ml-connector
Oracle JD EdwardsTwilio

Oracle JD Edwards and Twilio integration

Oracle JD Edwards manages your supply chain and finances at your site. Twilio delivers notifications to your team wherever they are. Connecting the two turns critical financial events in JD Edwards - high-value purchase orders, overdue payables, inventory thresholds, customer credit holds - into real-time alerts to the right people via SMS or email, without building a separate notification engine. ml-connector runs the query and delivery pipeline on a schedule you control.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne is an on-premises ERP exposing purchase orders, accounts payable ledgers, GL transactions, item masters, and address book records through its REST Application Interface Services (AIS) Server, hosted at customer infrastructure. Authentication uses session tokens obtained by POST to /jderest/v2/tokenrequest with username and password, valid for 30 to 60 minutes; tokens are passed in the jde-AIS-Auth header on all subsequent requests. JD Edwards has no outbound webhooks, so ml-connector polls data tables using date-modified filters on UPMJ (date updated) or DGJ (GL date) fields, tracking the last-polled timestamp. All writes require named orchestrations, not direct table API calls. The customer must whitelist the connector's egress IPs, provide the full AIS Server hostname and port (no public base URL), and confirm that the service account holds a valid JD Edwards user license.

How Twilio works

Twilio is a cloud communications platform providing REST APIs for SMS, MMS, voice calls, and email. Core endpoints sit at https://api.twilio.com/2010-04-01, with specialized sub-APIs for messaging services, 2FA verification, and phone number lookups at distinct base URLs. Authentication is HTTP Basic Auth using either the Account SID with Auth Token, or an API Key SID with API Secret; OAuth2 is not supported. Twilio's real-time push capability is webhooks: it can fire callbacks when messages are sent, delivered, or failed, and when calls complete. Request bodies use application/x-www-form-urlencoded encoding, not JSON. Webhook signatures are validated using HMAC-SHA1 with the Auth Token as the key. Twilio is a communications platform with no financial, procurement, or inventory objects, so it receives only formatted alerts, not live GL or PO data structures.

What moves between them

Data flows one direction: from Oracle JD Edwards to Twilio. On a schedule tied to your finance calendar (e.g., daily for AP aging, hourly for high-value POs), ml-connector queries JD Edwards F0411 (Accounts Payable Ledger) for aged invoices, F4301/F4311 (Purchase Orders) for orders exceeding a threshold, and F0101 (Address Book) to find the phone numbers and email addresses of approvers and managers. It compiles alerts using JD Edwards item descriptions, vendor names, and GL cost center codes, formats them as SMS or email, and posts them to Twilio. Twilio delivers the messages in real time. If delivery fails, ml-connector retries with exponential backoff and logs the outcome.

How ml-connector handles it

ml-connector stores the JD Edwards AIS Server URL and login credentials encrypted in its database. At the start of each scheduled run, it requests a fresh session token from JD Edwards (tokens expire after 30-60 minutes), and caches it until the next cycle. It queries F0411, F4301, F4311, and F0101 tables with maxPageSize=100, using the moreRecords flag and POST /jderest/v2/dataservice/next for pagination when needed. For each record matching the alert rule (e.g., an AP invoice over 60 days old), it extracts the vendor name and due date from F0411, looks up the vendor contact phone and email in F0101, and maps the cost center to a JD Edwards GL account. It assembles an SMS body such as 'Invoice 123456 from Acme Corp due 5 days ago - amount 25000' and an email with more detail, then POSTs to Twilio at https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages with the phone number or email address. Twilio returns a MessageSid immediately; ml-connector stores it and polls Twilio's status callbacks to track delivery. If a Twilio POST returns 429 (rate limit), ml-connector backs off exponentially. If JD Edwards returns 444 (invalid token), ml-connector requests a fresh token and retries. Every alert carries an audit trail: timestamp, JD Edwards table and record ID, alert rule, recipient, and Twilio MessageSid.

A real-world example

A mid-sized manufacturing company runs Oracle JD Edwards for supply chain and finance at their facility. The procurement team monitors open purchase orders above 50K, and the accounting department watches for invoices overdue by 30 days or more. Previously, the team logged into JD Edwards each morning to manually scan the AP aging report and forward alerts via email or text. Now, ml-connector runs a daily schedule at 8 AM. It queries JD Edwards for POs over 50K and AP invoices over 30 days old, looks up the approver and accountant phone numbers from the vendor master (F0101), and sends SMS alerts to their phones and email digests to a finance group mailbox. The procurement director gets a text when a critical PO ships, and the AP supervisor knows immediately when an invoice is aging without logging in. Month-end close is faster because escalation is automated.

What you can do

  • Query Oracle JD Edwards purchase orders, accounts payable, and GL transactions on a schedule and route alerts to procurement and finance teams via Twilio SMS and email.
  • Map JD Edwards purchase order and vendor information to Twilio phone numbers and email addresses from the Address Book (F0101) so alerts reach the right approver.
  • Authenticate JD Edwards with session tokens managed by ml-connector and refresh automatically when tokens expire after 30-60 minutes.
  • Retry failed Twilio deliveries with exponential backoff, track delivery status via Twilio MessageSid, and log every alert attempt with full audit trail.
  • Trigger alerts on rules you define - high-value purchase orders, overdue payables by age, inventory thresholds, GL posting errors - without building custom notification code.

Questions

What kinds of events in JD Edwards trigger Twilio alerts?
Any rule you configure: high-value purchase orders (F4301/F4311 headers above a threshold), accounts payable aging (F0411 open invoices by due date), GL transactions in specific accounts (F0911), or item quantities below reorder point (F4102). ml-connector polls JD Edwards on a schedule and fires the alert to Twilio when the rule matches. Twilio sends the message in real time via SMS or email to the phone and email addresses you map from JD Edwards Address Book records (F0101).
Does ml-connector need direct write access to JD Edwards?
No. JD Edwards is query-only. ml-connector reads address book, purchase orders, AP, and GL data using the REST data service with date filters on UPMJ (date updated) and DGJ (GL date). All JD Edwards writes - such as updating a vendor record or posting a GL entry - must still happen through your finance team or an orchestration process. Twilio receives only formatted alert text, not JD Edwards objects, so there are no writes back to JD Edwards.
How does authentication work given JD Edwards is on-premises and Twilio is in the cloud?
ml-connector stores both credential sets encrypted: the AIS Server URL, username, and password for JD Edwards, and the Account SID and Auth Token for Twilio. At each scheduled run, it requests a fresh JD Edwards session token (valid 30-60 minutes) and caches it until expiry or the next cycle. Twilio API calls use HTTP Basic Auth with the stored Account SID and Token on every request. If a JD Edwards token expires mid-run (returns 444), ml-connector fetches a new one and retries. If Twilio rate-limits (429), ml-connector backs off and retries.

Related integrations

Connect Oracle JD Edwards and Twilio

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

Get started