ml-connector
IFS CloudBambooHR

IFS Cloud and BambooHR integration

IFS Cloud runs your manufacturing and supply chain. BambooHR runs your workforce. Connecting the two keeps your employee master data and cost allocations in agreement. New hires and terminations in BambooHR flow into IFS Cloud aligned to company codes, cost centers, and GL dimensions, so your ERP headcount stays current and payroll cost allocations land on valid accounts. ml-connector bridges the very different APIs on each side and moves the data on a schedule you control.

How IFS Cloud works

IFS Cloud is an enterprise ERP platform exposing manufacturing, procurement, finance, and supply chain data through OData v4 REST APIs, accessed at tenant-specific URLs. Every IFS Cloud customer has a unique subdomain and each API request includes OAuth2 client credentials. IFS Cloud publishes projection names that vary by release version, so projections must be verified at connect time. Mutations require ETag headers for optimistic concurrency control, and the platform enforces a 5000-element limit on expanded collections and approximately 1000 requests per minute. IFS Cloud offers server-side Event Actions that can POST to external URLs but requires manual per-customer setup in the admin UI, so recommended pattern is pull-based polling with OData filters on modified timestamps.

How BambooHR works

BambooHR is a cloud-based HRIS exposing employee records, employment status, compensation, benefits, and org structure through REST APIs at customer-specific subdomains. Authentication uses OAuth2 Authorization Code flow (required for new integrations as of April 2025) or legacy API keys via Basic Auth. BambooHR publishes webhook events including employee.created, employee.updated, and employee.deleted, signed with SHA-256 HMAC. Webhook payloads are lightweight and require a follow-up GET request to fetch full employee data. Employee field queries require explicit enumeration via fields= parameters with a maximum of 400 fields per request. BambooHR does not expose finance entities, vendor data, or GL accounts.

What moves between them

Employee records flow from BambooHR into IFS Cloud on a schedule aligned to your payroll calendar, with real-time updates triggered by BambooHR webhook events. New hires and terminations synchronize employment status, compensation history, and job information. These records populate IFS Cloud employee master data and org dimensions such as department, cost center, and job title, aligned to the company codes configured in your ERP. BambooHR has no finance entities, so ml-connector does not sync payroll GL postings, invoices, or purchase orders. Cost centers and departments are mapped from BambooHR compensation and job info into IFS Cloud CodePartValueSet dimensions and cost center validation tables so allocations land on valid accounts.

How ml-connector handles it

ml-connector stores both credential sets encrypted and refreshes BambooHR's OAuth2 tokens when a call returns 401. On the IFS side it accepts the full tenant URL and uses OAuth2 Client Credentials to obtain access tokens with approximately 60-minute lifetimes. Before writing any employee record to IFS Cloud, ml-connector reads the existing record to capture its ETag value, then issues a PATCH with that ETag in the If-Match header to enforce optimistic concurrency. BambooHR webhook events arrive with SHA-256 HMAC signatures which ml-connector verifies, then fetches the full employee payload via GET to sync into IFS. Because employee field queries in BambooHR require explicit enumeration and are capped at 400 fields per request, ml-connector divides the field list intelligently to stay within limits. IFS OData projections vary by release version, so ml-connector verifies projection availability at connect time by querying AllProjections.svc. Rate limits on IFS are approximately 1000 requests per minute, so ml-connector backs off on HTTP 429 and retries with exponential jitter. Every record carries a full audit trail and can be replayed if a downstream write fails.

A real-world example

A mid-sized discrete manufacturer runs IFS Cloud for production, procurement, and finance across two plants and a head office, and uses BambooHR for workforce management across the same sites. Before the integration, the operations team manually exported employee changes from BambooHR each month and entered new hire cost center assignments into IFS by hand, then spent days in month-end close validating that headcount in HR matched cost center allocations in the ERP. With BambooHR and IFS Cloud connected, new hires sync automatically to IFS aligned to their cost center and company code, terminations remove invalid allocations, and employee master data stays current with zero re-keying. Month-end close validation is automated, and the manual sync step is gone.

What you can do

  • Sync employee records from BambooHR into IFS Cloud employee master data with employment status, compensation, and job info.
  • Map BambooHR job titles, departments, and compensation to IFS Cloud cost centers and GL dimensions so payroll allocations land on valid accounts.
  • Ingest BambooHR webhook events in real time to trigger immediate IFS record updates, while polling on a schedule as fallback.
  • Handle BambooHR's per-subdomain OAuth2 token endpoints, IFS Cloud's tenant-specific OData projections, and ETag concurrency requirements on every mutation.
  • Poll on a schedule tied to your payroll calendar, with exponential backoff on rate limits and a full audit trail on every record.

Questions

Which direction does data move between IFS Cloud and BambooHR?
Data moves from BambooHR into IFS Cloud. Employee records, employment status, compensation, and job information sync from BambooHR and populate IFS Cloud employee master data and cost center dimensions. BambooHR has no finance entities such as GL accounts, invoices, or purchase orders, so ml-connector does not sync payroll postings or financial data back to BambooHR.
How does the integration handle BambooHR's per-subdomain OAuth2 endpoints and IFS Cloud's ETag requirement?
ml-connector stores BambooHR's per-customer subdomain and uses it to construct the correct OAuth2 token endpoint and API base URL. On the IFS side, it reads each employee record before mutation to capture the ETag header value, then includes that ETag in the If-Match header on the PATCH request to satisfy IFS Cloud's optimistic concurrency requirement.
Does the integration support real-time updates from BambooHR, or only scheduled polling?
Both. BambooHR webhooks (employee.created, employee.updated, employee.deleted) arrive with SHA-256 HMAC signatures which ml-connector verifies. When a webhook fires, ml-connector fetches the full employee payload and syncs it immediately to IFS Cloud. Polling on your payroll calendar serves as a fallback to catch any missed events or webhook delivery gaps.

Related integrations

Connect IFS Cloud and BambooHR

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

Get started