ml-connector
Oracle E-Business SuiteSlack

Oracle E-Business Suite and Slack integration

Oracle E-Business Suite handles your financials, procurement, and workforce. Slack keeps your team connected and informed. Connecting the two lets finance and HR teams see critical updates the moment they happen without leaving Slack. New invoices awaiting approval, purchase orders from vendors, payroll runs, and employee hires post to Slack automatically on a schedule you control, so discussions happen where the team already works.

How Oracle E-Business Suite works

Oracle E-Business Suite exposes financials, procurement, HR, and supply chain data through the Integrated SOA Gateway, a database-level REST and SOAP service layer. Each customer runs their own ISG at a unique hostname and port with no fixed public URL. Authentication uses HTTP Basic Auth with a username and password, or a session token obtained via a login endpoint that returns an accessToken in XML. Every REST call requires EBS context headers specifying the responsibility, application, security group, language, and organization. EBS has no modern webhook system, so all data retrieval is polling-based. Polling targets open interface views filtered by LAST_UPDATE_DATE with limit and offset for pagination. Writes to EBS often go to interface tables asynchronously, with a concurrent program picking them up for import into base tables, a process that can take minutes to hours.

How Slack works

Slack exposes team communication through the Web API and Events API, both REST-based over HTTPS at slack.com/api/{method}. Authentication uses OAuth 2.0 Authorization Code flow v2, resulting in a bot token with the xoxb- prefix and optionally a user token with xoxp- prefix, both non-expiring. Tokens pass as Authorization: Bearer headers. Slack supports both webhooks and polling. The Events API delivers workspace events as HTTP POST callbacks to a registered HTTPS endpoint, with each callback containing an HMAC-SHA256 signature in the X-Slack-Signature header that must be verified. URL verification is required when registering an endpoint. Every webhook request must be answered with HTTP 2xx within 3 seconds, and Slack retries failed deliveries up to 3 times with exponential backoff.

What moves between them

The main flow is Oracle EBS to Slack. ml-connector polls EBS on a daily or weekly schedule for recently updated invoices in AP_INVOICES_ALL, open purchase orders in PO_HEADERS_ALL, payroll batch summaries from HR modules, and employee records from HZ_PARTIES. For each batch of new or updated records, it formats a message and posts to a designated Slack channel using chat.postMessage. Message content includes invoice amount and approver, PO vendor and value, payroll totals by cost center, and employee name and hire date. The flow is read-only from EBS and write-only to Slack; no data returns from Slack to update EBS.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the EBS side, it obtains a session token by sending HTTP Basic Auth credentials to the ISG login endpoint, caches the accessToken, and refreshes it before timeout or on 401 response. Every EBS API call includes the required context headers: ctx_responsibility, ctx_respapplication, ctx_securitygroup, ctx_nlslanguage, and ctx_orgid, customized per customer. ml-connector polls the open interface views on your chosen schedule, applies a LAST_UPDATE_DATE filter to fetch only records modified since the last poll, and paginates with limit and offset. On the Slack side, ml-connector verifies each webhook signature using constant-time HMAC-SHA256 comparison against the X-Slack-Signature header, and rejects any request older than 5 minutes. For outbound posts, it calls chat.postMessage with the bot token and respects the 1 per second rate limit per channel with backoff and retry. Every record is logged with a full audit trail, so if a Slack post fails due to rate limiting or transient network error, it can be replayed once the condition clears.

A real-world example

A mid-sized discrete manufacturer runs Oracle EBS R12.2 for finance and supply chain, with a procurement team of 6 and an HR department of 4. Before the integration, invoices awaiting approval and new purchase orders were only visible in EBS. The finance team checked EBS daily and sent email summaries to Slack manually, a task that took 15 minutes every morning and often missed urgent approvals. With Oracle EBS and Slack connected, when a new invoice arrives in EBS AP, it posts to finance-approvals automatically. When payroll runs, the batch summary posts to payroll-ops so the team confirms the totals are ready. The manual email step is gone, and approvals happen faster because alerts land in Slack where the team is already chatting.

What you can do

  • Post new and updated invoices from Oracle EBS AP_INVOICES_ALL to Slack channels with amount, vendor, and approver.
  • Send purchase order updates from PO_HEADERS_ALL to Slack so procurement teams see new orders and vendor changes in real time.
  • Deliver payroll run summaries to Slack after each batch completes, broken down by cost center and org.
  • Alert on employee hires, terminations, and status changes from EBS HR modules, with customizable message templates per event.
  • Manage ISG session token refresh and Slack webhook signature verification with automatic retry and full audit trail.

Questions

Does data flow back from Slack into Oracle EBS, or is it read-only?
The flow is read-only from EBS to Slack. ml-connector polls EBS for invoices, purchase orders, payroll, and employee records and posts them to Slack channels. Slack messages do not update EBS. If your team needs to approve an invoice or acknowledge a PO in Slack and have that change recorded in EBS, that requires a separate approval workflow routed back through EBS or a manual step.
How does ml-connector handle the ISG authentication and session tokens?
ml-connector stores the EBS username and password encrypted and obtains a session token by calling the ISG login endpoint with HTTP Basic Auth. It caches the accessToken and includes it in subsequent API calls, refreshing before timeout or on 401 response. Every EBS request also includes the required context headers: responsibility, application, security group, language, and organization. If a request returns 401, ml-connector logs out, re-authenticates, and retries.
What is the typical polling schedule, and can it be customized?
The default schedule is daily for invoices and weekly for purchase orders and payroll, chosen to balance freshness with ISG load. ml-connector respects your EBS peak hours and can back off if it detects that ISG performance is degraded. You can customize the schedule per data source, and ml-connector filters by LAST_UPDATE_DATE to avoid re-polling old records.

Related integrations

Connect Oracle E-Business Suite and Slack

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

Get started