ml-connector
SYSPRODayforce

SYSPRO and Dayforce integration

SYSPRO runs manufacturing and distribution finance. Dayforce runs payroll and HR. Connecting the two keeps your workforce, cost centers, and payroll allocations synchronized across both systems. New hires and terminations in Dayforce line up with SYSPRO employee records and cost centers, and organizational changes in Dayforce reflect immediately in SYSPRO so payroll allocations always land on valid dimensions. ml-connector handles the different API styles on each side and moves the data on a schedule aligned with your payroll calendar.

How SYSPRO works

SYSPRO Adaptive ERP exposes suppliers, customers, purchase orders, invoices, GL accounts, cost centers, items, and inventory through REST Business Objects (e.net) and read-only OData, both documented in each customer instance. The system authenticates with a session token obtained via login to Utilities/Logon against a customer-supplied server URL, so there is no shared hostname. SYSPRO has no public webhook system for outbound notifications, so records are read by polling OData tables using timestamp filters on PostDate or InvoiceDate fields. Write operations require e.net Business Objects with XML payload formatting.

How Dayforce works

Dayforce exposes employees, organizational units, jobs, positions, pay summaries, and balance periods through REST APIs over HTTPS at a client-specific optimized URL retrieved from GET /V1/ClientMetadata. Every call requires OAuth2 Resource Owner Password Credentials with a Bearer JWT token that expires in one hour and must be refreshed before expiry. Dayforce has no native accounts payable, vendor, or purchase order modules, and GL account codes are configured inside Dayforce and appear only in payroll reports. Scopes are role-based, enforced by user permissions in Dayforce admin, not via OAuth scope parameters. Dayforce offers no native outbound webhooks, so changes are discovered by polling employee and org endpoints with date range filters.

What moves between them

The main flow runs from Dayforce into SYSPRO. On a schedule aligned with your payroll cycle, ml-connector reads Dayforce employee records, organizational units, and job assignments, then creates or updates matching employee records in SYSPRO via e.net. Cost centers and departments are aligned in both directions so payroll allocations reference valid SYSPRO dimensions. Organizational changes such as transfers between cost centers or job changes in Dayforce trigger updates in SYSPRO so the two systems remain synchronized. GL posting and payroll calculations remain in Dayforce; SYSPRO receives the master data needed to categorize labor costs by department and cost center.

How ml-connector handles it

ml-connector stores both credential sets encrypted and obtains a fresh OAuth2 Bearer token from the Dayforce token endpoint on each sync cycle, handling the one-hour token expiry by re-requesting before the token stales. It refreshes the Dayforce client-specific URL daily via ClientMetadata to avoid redirect overhead. On the SYSPRO side it accepts the full server URL and port per customer instance and obtains a session token through the Utilities/Logon endpoint, passing the session token on all subsequent e.net Business Objects calls. Because both systems are pull-only, it polls Dayforce employee and org endpoints using filterUpdateDateRangeMin and filterUpdateDateRangeMax query parameters, and polls SYSPRO OData tables using $filter on timestamp fields to detect changes since the last cycle. Cost centers are mapped first so every new employee assignment references a cost center that already exists in SYSPRO. Every record carries a full audit trail and can be replayed if an update fails.

A real-world example

A mid-sized manufacturing company runs SYSPRO for production, procurement, and financial accounting, and uses Dayforce Workforce for payroll and employee management across four plants and a shared services center. Before the integration, the HR team manually entered new hires and transfers into SYSPRO every pay cycle, and the finance team resolved mismatches between Dayforce cost allocations and SYSPRO ledger balances by hand. With Dayforce and SYSPRO connected, every hire, termination, and cost center transfer flows from Dayforce into SYSPRO automatically on the payroll schedule, eliminating manual entry and keeping the two systems aligned. Month-end close starts with all employee and cost center dimensions already synchronized and reconciled.

What you can do

  • Synchronize employee records, job assignments, and organizational units from Dayforce into SYSPRO on a payroll schedule.
  • Keep cost centers and department hierarchies aligned between Dayforce and SYSPRO so payroll allocations reference valid dimensions.
  • Map Dayforce organizational units to SYSPRO cost centers automatically and detect transfers and department changes.
  • Bridge OAuth2 authentication on the Dayforce side with SYSPRO session token auth, handling token expiry and refresh automatically.
  • Poll both systems on a configurable schedule, detect changes via timestamp filters, and maintain a full audit trail of every sync.

Questions

Which direction does data move between SYSPRO and Dayforce?
The main flow is Dayforce into SYSPRO. Employee records, organizational units, job assignments, and cost center mappings move from Dayforce into SYSPRO so that employee and cost center master data stays synchronized. SYSPRO payroll calculations and GL accounts remain authoritative in SYSPRO; Dayforce receives no write-backs from SYSPRO.
How does the integration handle SYSPRO's per-customer server URL and lack of webhooks?
ml-connector accepts the full SYSPRO server URL and port per customer instance since SYSPRO publishes no shared base hostname. Because both systems are pull-only, it polls Dayforce employee and org endpoints using date range filters and polls SYSPRO OData tables using timestamp filters on a schedule aligned with your payroll cycle, so no webhook setup is required.
What happens when Dayforce OAuth tokens expire or SYSPRO session tokens time out?
ml-connector requests a fresh OAuth2 Bearer token from Dayforce before the one-hour expiry and refreshes the Dayforce client-specific URL daily to minimize redirects. On the SYSPRO side it obtains a new session token through Utilities/Logon at the start of each sync cycle, so token expiry never interrupts a sync. Every failed record is logged with full context and can be replayed once the underlying error is fixed.

Related integrations

Connect SYSPRO and Dayforce

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

Get started