ml-connector
Oracle E-Business SuiteBambooHR

Oracle E-Business Suite and BambooHR integration

Oracle E-Business Suite runs financials, procurement, and HR. BambooHR is the system of record for people data. Connecting the two keeps headcount, org structure, and pay information in agreement without re-keying. New hires, terminations, and role changes in BambooHR are reflected in Oracle EBS, mapped to the matching operating unit and GL code combination. ml-connector handles the very different APIs on each side and moves the data on a schedule you control.

How Oracle E-Business Suite works

Oracle E-Business Suite exposes integrations through the Integrated SOA Gateway, where an administrator deploys open interface tables and PL/SQL APIs as REST services from the Integration Repository. There is no fixed public base URL; EBS is customer-hosted, so the connector accepts the full instance hostname and port as a credential. Calls use HTTP Basic Auth or a session token and require application context parameters, including a valid operating unit org ID on every request. EBS has no inbound webhook for external systems, so records are read by polling open interface views filtered on last update date. Writes are two-step: a REST POST inserts a row into an interface table such as GL_INTERFACE, then a concurrent program like Journal Import validates and loads it into the base tables.

How BambooHR works

BambooHR is a cloud HRIS that exposes data as JSON over REST on a per-customer subdomain at https://{companyDomain}.bamboohr.com/api/v1/. Employees are the primary entity, with job information, compensation, and employment status held as versioned tables keyed to each employee ID. Authentication uses OAuth 2.0 authorization code, which is mandatory for apps created after April 2025, or a legacy API key over Basic Auth. The employees endpoint returns only the id field by default, so every wanted field must be named explicitly. BambooHR also pushes employee.created, employee.updated, and employee.deleted webhook events, each signed with SHA-256 HMAC, with a lightweight payload that signals which employee changed.

What moves between them

The flow runs from BambooHR into Oracle E-Business Suite. ml-connector reads BambooHR employees, job information, and employment status, then writes the matching records into the EBS supplier and journal interface tables so EBS reflects BambooHR hires, terminations, and rehires. Department, division, and location values from BambooHR job info are mapped to EBS GL code combinations and operating units, so people records carry valid accounting dimensions. Where compensation feeds the ledger, BambooHR pay rates post into GL_INTERFACE as journal lines for the Journal Import program. BambooHR has no vendors, invoices, POs, or GL accounts of its own, so it is treated as the people source and ml-connector does not write financial documents back into BambooHR.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the BambooHR side it runs the OAuth 2.0 authorization code flow, keeps the subdomain-scoped token URL per customer because BambooHR has no global token endpoint, and refreshes the one-hour access token before it expires. On the EBS side it accepts the full instance URL, obtains a session token on startup, and includes the operating unit org ID and responsibility context on every call, re-authenticating when EBS returns a 401 as the session times out. BambooHR webhooks are lightweight, so each verified event triggers a GET on that employee to fetch current field values before the write. Because EBS cannot push, BambooHR is also polled on a schedule to backfill missed changes. Department and cost center mapping is configured first so every EBS row references a GL code combination and org that already exists. EBS writes insert into an interface table and then run a concurrent program, so a 200 on the POST means the row was staged, not imported; ml-connector triggers the import program and confirms processing. Each interface row carries a unique SOURCE value for duplicate detection, since neither system offers an idempotency key. EBS has no rate limiter, so the connector keeps concurrency low to avoid degrading a shared production system, and BambooHR throttling returns 503 with a Retry-After header that is honored. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized manufacturer with about 600 employees runs Oracle E-Business Suite R12.2 for financials and procurement and uses BambooHR as its HR system of record. Before the integration, HR maintained employee records in BambooHR while a finance analyst keyed the same hires, terminations, and department moves into EBS by hand, and month-end close stalled while labor accounts were reconciled against an org chart that did not match. With Oracle E-Business Suite and BambooHR connected, each employee change in BambooHR flows into EBS automatically, tagged to the right operating unit and cost center, and the duplicate data entry is gone. Close starts with headcount and the people side of the ledger already aligned.

What you can do

  • Sync BambooHR employees, hires, terminations, and rehires into Oracle E-Business Suite interface tables.
  • Map BambooHR department, division, and location to EBS GL code combinations and operating units.
  • Post BambooHR compensation into GL_INTERFACE as journal lines for the Journal Import program.
  • Bridge BambooHR OAuth 2.0 tokens and the EBS session login, refreshing each before it expires.
  • Poll BambooHR on a schedule with retries and a full audit trail, because Oracle EBS cannot be pushed to.

Questions

Which direction does data move between Oracle E-Business Suite and BambooHR?
The flow is BambooHR into Oracle E-Business Suite. Employee records, org structure, and compensation move from BambooHR into the EBS interface tables. BambooHR has no vendors, invoices, or GL accounts of its own, so ml-connector treats it as the people source and does not write financial documents back into it.
How does the integration get data into Oracle EBS when its writes are not instant?
Most EBS writes are two-step. A REST POST inserts a row into an open interface table such as GL_INTERFACE, then a concurrent program like Journal Import loads it into the base tables. ml-connector triggers that import program after staging and confirms the record processed, rather than assuming a successful POST means the record exists in EBS.
How are the two different authentication models handled?
ml-connector runs the BambooHR OAuth 2.0 authorization code flow against the customer's subdomain-scoped token URL and refreshes the one-hour access token automatically. For Oracle EBS it obtains a session token at startup, sends the operating unit and responsibility context on every call, and re-authenticates when the EBS session times out and returns a 401.

Related integrations

Connect Oracle E-Business Suite and BambooHR

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

Get started