ml-connector
Oracle E-Business SuiteGusto

Oracle E-Business Suite and Gusto integration

Oracle E-Business Suite runs your financials, procurement, and supply chain. Gusto runs payroll and HR. Connecting the two keeps your general ledger aligned with actual payroll expenses and your employee records synchronized across both systems. New hires entered in Gusto immediately appear in EBS for cost allocation, payroll GL journals post into EBS without manual entry, and terminated employees are marked in both systems. ml-connector handles the very different authentication schemes and data structures on each side.

How Oracle E-Business Suite works

Oracle E-Business Suite (R12.2) exposes employees, purchase orders, GL accounts, cost centers, AP invoices, vendors, and general ledger through the Integrated SOA Gateway (ISG), a database-level REST and SOAP interface deployed per customer instance. Authentication uses HTTP Basic Auth with username and password, or a session token obtained via the login endpoint and refreshed before expiry. EBS has no modern webhooks; data is read through polling against open interface views filtered by LAST_UPDATE_DATE, using limit and offset pagination. Write operations to interface tables are asynchronous; data inserted via REST must be imported by a concurrent program running on the EBS server, which can take minutes to hours. Each customer provides their own ISG hostname and port, and REST services must be deployed via the Integration Repository before the connector can access them.

How Gusto works

Gusto exposes employees, jobs, compensations, payroll records, contractors, benefits, pay schedules, locations, and bank accounts through OAuth2 REST APIs at https://api.gusto.com, versioned via header. Access tokens expire in 2 hours and are refreshed with a single-use rotating refresh token; scopes are assigned by Gusto during partner review and limit which fields the connector can read. Gusto emits webhooks for payroll events (created, updated, calculated, processed, paid), employee events (created, updated, onboarded, terminated), and company events, with automatic retries up to 16 times over 3 days if the receiver does not return 2xx within 10 seconds. Dollar amounts are returned as string decimals, not numbers. Each OAuth token is scoped to a single company; multi-company customers require separate tokens. Gusto has no vendor, GL account, or invoice objects; it is payroll and HR only.

What moves between them

The main flow is bidirectional. ml-connector polls Oracle EBS for new or changed employees and costs, pushing them to Gusto so payroll is allocated to the correct departments and cost centers. After each payroll run in Gusto, the connector receives payroll webhook events, reads the processed payroll details, and writes journal entries back to EBS GL interface tables, allocating labor costs to GL accounts and cost centers defined in EBS. Terminations flow from Gusto back into EBS to mark employees as inactive. Reference data such as departments, locations, and job codes are aligned in both directions so payroll expenses land on valid EBS dimensions.

How ml-connector handles it

ml-connector authenticates EBS by storing the ISG hostname, port, and Basic Auth credentials encrypted, and obtains a session token on first use, re-authenticating on 401 or token expiry. For Gusto, it stores the OAuth credentials encrypted, manages the 2-hour access token lifecycle with automatic refresh, and maintains a single-use rotating refresh token per company. ml-connector polls EBS employees and GL accounts on a schedule, transforms them to Gusto job and compensation payloads, and writes via Gusto PUT endpoints, which require the current object version or return 409 Conflict. It subscribes to Gusto payroll, employee, and company webhooks, validates signatures via HMAC-SHA256, and re-queues failed deliveries. Payroll GL journals from Gusto are mapped to EBS GL_JE_LINES interface table rows, then imported by an EBS concurrent program. Because Gusto rate-limits at 200 requests per minute and EBS async writes can take hours, ml-connector batches, deduplicates via object versioning, and tracks the import status of each GL batch via audit trails so failed imports can be replayed.

A real-world example

A light manufacturing company runs Oracle EBS R12.2 on-premises for financials and procurement, and uses Gusto cloud for payroll across three plants. Before the integration, the payroll team exported gross wages and tax totals from Gusto each pay period and manually entered GL journal lines into EBS, allocating to the correct cost centers for each plant. Month-end close required the accounting team to verify that the labor amounts in EBS matched the payroll register from Gusto, and discrepancies took days to track down. With Oracle EBS and Gusto connected, each Gusto payroll run automatically posts the labor GL journals to EBS allocated to the correct plant cost centers, employee changes sync bidirectionally, and month-end is faster because the labor accounts are already reconciled.

What you can do

  • Sync Oracle EBS employees and jobs to Gusto so payroll is allocated to the correct departments and cost centers.
  • Write Gusto processed payroll GL journals into EBS general ledger after each pay run, allocated to the correct cost centers.
  • Keep terminations synchronized so employees marked as terminated in Gusto are updated in EBS.
  • Authenticate EBS with per-customer ISG hostname and HTTP Basic Auth, and Gusto with OAuth2, managing token refresh automatically.
  • Validate Gusto webhook signatures and retry failed payroll events up to 16 times over 3 days, with full audit trails on every record.

Questions

Which direction does data move between Oracle EBS and Gusto?
Both directions. Employees and cost center mappings flow from EBS into Gusto so payroll allocations land on valid EBS dimensions. After each payroll run, processed payroll GL journals flow from Gusto back into EBS GL interface tables, allocated to the correct cost centers. Terminations also sync from Gusto to EBS to mark employees inactive.
How does ml-connector handle Oracle EBS session tokens and Gusto OAuth2 expiry?
For EBS, the connector obtains a session token via the login endpoint using Basic Auth credentials, caches it, and re-authenticates if a call returns 401 or the token expires based on the EBS session timeout (typically 30-60 minutes). For Gusto, it manages the 2-hour access token lifecycle with automatic refresh using a single-use rotating refresh token per company, so authentication happens transparently without user intervention.
What happens when Gusto payroll GL journals are written to EBS?
The connector writes journal lines to the EBS GL_JE_LINES interface table via REST POST, then EBS runs a concurrent program to import them into the general ledger base tables. This process is asynchronous and can take minutes to hours depending on EBS load. ml-connector tracks the import status via audit trails so failed imports can be replayed and reconciled.

Related integrations

Connect Oracle E-Business Suite and Gusto

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

Get started