Odoo and Workday HCM integration
Odoo runs accounting and HR. Workday HCM runs enterprise workforce management and payroll. Connecting the two keeps your employee roster and GL accounts aligned across both systems. New hires and terminations in Workday sync into Odoo's HR module and maintain cost center mappings so payroll data lands on the correct GL accounts. ml-connector handles the very different authentication methods on each side and moves data on a schedule you control.
What moves between them
The main flow runs from Workday into Odoo. Worker records from Workday are mapped to Odoo HR employees, with position and organization data flowing into Odoo cost centers and departments. GL accounts and cost centers are aligned in both directions so payroll allocations and accounting journals land on valid Odoo GL accounts. Compensation and payroll journal data flow from Workday into Odoo's accounting module on a schedule tied to your payroll calendar. Purchase orders and supplier invoices remain read-only in Workday, so ml-connector does not write financial entries back into payroll.
How ml-connector handles it
ml-connector stores both credential sets encrypted and uses Workday's OAuth2 refresh token to obtain fresh access tokens when the 60-minute expiry approaches. For SOAP calls on Odoo's side, it presents WS-Security credentials and handles Workday's ISU authentication transparently. On the Odoo side it accepts the full instance URL (https://<subdomain>.odoo.com or self-hosted) and uses the API key with bearer token or XML-RPC authentication depending on the Odoo version. Because Workday is poll-only and Odoo webhooks are not production-grade, ml-connector polls both systems on a schedule tied to your payroll calendar rather than relying on a push. Cost centers and GL accounts are mapped first, so every payroll journal line references a GL account and cost center that already exists in Odoo. When Workday rate limits return HTTP 429, ml-connector backs off according to the Retry-After header and retries. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A multinational services company runs Odoo for accounting and procurement across four countries and uses Workday HCM for global payroll and workforce management. Before the integration, the finance team pulled headcount from Workday, reconciled it monthly with Odoo HR, and manually mapped each country's payroll costs to the correct GL accounts and cost centers in Odoo. With Odoo and Workday connected, each payroll run's worker data and GL journals flow into Odoo automatically, cost centers are pre-mapped, and the headcount and GL accounts stay in agreement. Month-end close no longer requires manual reconciliation, and the team spots headcount changes in Odoo as soon as they happen in Workday.
What you can do
- Sync Workday workers into Odoo HR employees with position and organization data mapped to cost centers and departments.
- Pull GL accounts and cost centers from Workday and align them in Odoo so payroll allocations land on valid accounts.
- Post Workday accounting journals into Odoo's GL after each payroll run, allocated to the correct cost centers.
- Authenticate Workday with OAuth2 REST API or SOAP WS-Security, and Odoo with API key bearer token or XML-RPC.
- Poll on a schedule tied to your payroll calendar, with retries and a full audit trail on every record.
Questions
- Which direction does data move between Odoo and Workday HCM?
- The main flow is Workday into Odoo. Workers, GL accounts, cost centers, and payroll GL journals move from Workday into Odoo. Odoo reference data such as departments and GL accounts can be synchronized in both directions so payroll allocations land on valid GL accounts. Workday financial and payroll data are read-only, so ml-connector does not write financial entries back into Workday.
- Does ml-connector support both Workday REST and SOAP APIs?
- Yes. ml-connector uses Workday's SOAP API for financial and payroll data since REST covers only HCM and staffing. For workers and organizational data, it can use either REST with OAuth2 or SOAP with WS-Security credentials, depending on your Workday ISU setup. OAuth2 access tokens expire in 60 minutes, so ml-connector refreshes them automatically when needed.
- How does the integration handle Odoo's multiple deployment options and API versions?
- ml-connector accepts the full Odoo instance URL for Online (https://<subdomain>.odoo.com), Odoo.sh, or self-hosted deployments. It supports both XML-RPC (all Odoo versions) and JSON-2 REST (Odoo 19+). Because Workday has no webhooks and Odoo webhooks require Enterprise with Studio, ml-connector polls both systems on a schedule you control tied to your payroll calendar.
Related integrations
More Odoo integrations
Other systems that connect to Workday HCM
Connect Odoo and Workday HCM
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started