ml-connector
Oracle JD EdwardsJira

Oracle JD Edwards and Jira integration

Manufacturing and production need two systems in sync: Oracle JD Edwards holds the master record of work orders and change orders in the ERP, while Jira keeps the field teams coordinated with live issue tracking and status updates. Without a bridge, teams re-enter the same information in both places, losing the single source of truth and letting data drift. ml-connector polls Oracle JD Edwards for new or updated work orders, creates corresponding Jira issues, and reads status updates from Jira back into JD Edwards so production managers see the real execution state without manual re-entry.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne runs on premises and exposes manufacturing data through Application Interface Services (AIS) Server, a customer-hosted REST gateway running at a unique hostname per site. Authentication uses session tokens obtained with a service account username and password, valid for 30 to 60 minutes, passed in the jde-AIS-Auth header on each request. Key entities include work order headers and details (manufacturing domain), change order tables, item master and branch/plant records, and posting audit tables. JD Edwards has no native webhook system, so integrations must poll data service tables with date filters on UPMJ (update date) or other timestamp fields, tracking the last successful poll to avoid duplication. Pagination uses maxPageSize parameter with a moreRecords flag; the API also supports Basic Auth per request for stateless operation in Tools 9.2.5.2 and later.

How Jira works

Jira is a cloud-hosted project tracking system that stores issues, tasks, and bugs with custom fields, assignees, and workflow states. It exposes data through REST API with OAuth 2.0 authorization code flow or Basic auth via email and API token. Jira webhooks push real-time notifications on issue creation, updates, comments, and workflow transitions via signed HTTP POST to a registered endpoint, with HMAC-SHA256 signature verification in the X-Hub-Signature header. Webhooks expire after 30 days and must be refreshed via API. Jira has no native purchase order, vendor, invoice, or accounting entity types; it is purely workflow and task tracking. Custom field IDs are instance-specific and vary by deployment, so field mapping is per-customer. Issue description uses Atlassian Document Format in API v3, requiring conversion from plain text if needed.

What moves between them

The main flow runs from Oracle JD Edwards into Jira. ml-connector polls JD Edwards work order tables on a schedule (typically daily or on demand) and creates Jira issues in a dedicated project, with title, description, assignee, and priority mapped from JD Edwards work order attributes. Status updates in Jira then flow back into JD Edwards via a custom audit table or webhook-triggered orchestration call, so production managers can see which work orders are in progress, blocked, or complete. The connector does not write financial data into Jira; it creates issues for workflow coordination only. Change orders and exception records can also be synced as Jira issues to ensure manufacturing teams are aware of deviations from the schedule.

How ml-connector handles it

ml-connector stores the JD Edwards AIS Server hostname and service account credentials encrypted, then authenticates with a session token (refreshing when the 30 to 60 minute lifetime expires or when a 444 HTTP response signals token invalidation). It polls the work order detail table and related tables at configurable intervals, tracking the last successful poll timestamp to avoid re-creating duplicate issues. For each new or updated work order, it constructs a Jira issue with fields mapped from JD Edwards: order number as issue key, order description and specs as the issue title and description, requested date as due date, and priority tier from the work order priority code. On the Jira side, ml-connector registers a webhook that captures jira:issue_updated events and uses the issue ID and updated status to call a JD Edwards orchestration endpoint that posts the status back into an audit table. The connector handles Jira webhook expiry by monitoring the 30 day refresh window and calling PUT refresh before expiration. Because JD Edwards session tokens time out, the connector caches the token and re-authenticates on each failed request that returns 444. Custom field IDs in Jira are per-instance, so the mapping is stored per customer. Work order due dates and priority are synced in both directions so if a field team marks a Jira issue as blocked due to a parts shortage, a callback can mark the JD Edwards work order as on hold.

A real-world example

A discrete manufacturing company with a head plant and two contract machining partners runs Oracle JD Edwards for ERP and uses Jira for shop floor coordination and engineering change tracking. Before the integration, the production scheduler entered work orders into JD Edwards each morning, then re-entered them into a Jira project board for the floor to track, and manually updated JD Edwards when field teams marked jobs complete or flagged issues in Jira comments. This dual-entry process caused orders to be scheduled twice, status mismatches during month-end close, and delays when the floor found a part was out of stock. After connecting JD Edwards to Jira, new work orders appear automatically as Jira issues in the shop floor project, the team updates status in Jira, and the status flows back into JD Edwards within minutes. The scheduler now sees real execution state in the ERP, change orders that the plant manager adds to Jira trigger alerts in the system, and month-end reconciliation is done because the ERP and Jira agree on which orders shipped and which are still in progress.

What you can do

  • Poll Oracle JD Edwards work orders daily or on demand and create Jira issues in a project dedicated to manufacturing execution.
  • Map work order attributes (order number, description, priority, due date, assigned team) from JD Edwards to Jira issue fields with per-customer field mapping.
  • Receive Jira status updates via webhooks and post them back into JD Edwards audit tables or call orchestration endpoints so the ERP sees real-time execution state.
  • Refresh Jira webhooks automatically every 25 days to prevent expiration and maintain a continuous notification stream.
  • Authenticate to JD Edwards via session token with automatic refresh on timeout, and to Jira via OAuth 2.0 or Basic auth with per-instance field ID validation.

Questions

What data moves between Oracle JD Edwards and Jira?
Work orders and change orders flow from JD Edwards into Jira as tracked issues. Jira status updates flow back into JD Edwards via webhooks and orchestration calls, so the ERP always reflects the live execution state. JD Edwards financials, GL accounts, and vendor data stay in the ERP; Jira provides workflow and task coordination only.
How does ml-connector handle JD Edwards session tokens and Jira webhook expiry?
JD Edwards session tokens expire after 30 to 60 minutes. ml-connector caches the token and re-authenticates automatically when a request returns HTTP 444 (invalid token) or the lifetime is reached. Jira webhooks expire after 30 days; ml-connector monitors the registration timestamp and calls the refresh endpoint every 25 days to keep the webhook active.
How are work order fields mapped to Jira issue fields?
Work order number maps to the Jira issue key or summary, description and specs map to the issue description, priority code maps to Jira priority, due date maps to due date, and assigned team maps to assignee. Custom field IDs vary by Jira instance, so the field mapping is stored per customer and can be adjusted without code changes.

Related integrations

Connect Oracle JD Edwards and Jira

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

Get started