About Workday
Workday is a human capital management (HCM) platform. The Serval Workday integration is a per-tenant connection to your Workday environment: it gives Serval workflows live access to Workday’s REST sub-APIs (30+ modules including Staffing, Person, Absence Management, Payroll, and Recruiting), Workday Query Language (WQL), and ten Workday Web Services (SOAP) services. It also ships two installable workflow bundles - Worker Lookup, and Time Off & Benefits - so common HR lookups work out of the box. Every connection is specific to your tenant: the REST API Base URL, Token Endpoint, and optional user-auth endpoints all belong to your Workday environment. Authentication: Service account via OAuth 2.0 refresh-token grant, tied to an Integration System User (ISU) and an API Client for Integrations registered in your Workday tenant. An optional, feature-flagged per-user (3-legged) OAuth path lets certain actions run as the end user. Data sync: On-demand only. Nothing is mirrored into Serval on a schedule - workflow actions and health checks call Workday live, and a fresh access token is obtained from your tenant’s token endpoint for every call.What the Workday integration enables
Get your credentials
Setting up the connection requires a Workday administrator. You will create an Integration System User (ISU), grant it the security it needs, register an API Client for Integrations, and generate a refresh token. Workday’s official API reference is the Workday REST Services Directory.- Service account (required)
- Per-user OAuth (optional)
Create the Integration System User
ServalIntegration). The password cannot contain the characters &, <, or >.Exempt the ISU from password expiration
Create a security group
Serval Integration Group), and add the ISU under Integration System Users.Grant domain security policies
Activate the security changes
Allow the group to authenticate
Register the API client
Serval Workday API Client), check Non-Expiring Refresh Tokens, leave Disabled unchecked, fill in Scope (Functional Areas) (see below), and save. Copy the Client ID and Client Secret.This task has no grant-type field and no confidential-versus-public choice: an integrations client is always a confidential client using the refresh-token grant. Leave Enforce Customized Access Token Expiry unchecked and Refresh Token Timeout at 0.Scope (Functional Areas) is required. The prompt shows No matches found until you type into it - it does not list every area up front. Add the areas your use case needs:Generate the refresh token
Copy the endpoints
https://impl-services1.wd12.myworkday.com/ccx/api/v1/<tenant> - this maps to Serval’s REST API Base URL field) and the Token Endpoint (for example, https://impl-services1.wd12.myworkday.com/ccx/oauth2/<tenant>/token - this maps to Serval’s Token Endpoint field).Copy both verbatim. Workday includes the tenant in the token endpoint path, and the REST endpoint may include a version segment (/ccx/api/v1/<tenant>) - Serval reads only the host and the final path segment, so either form works.Copy the SOAP WSDL URL
Find your tenant name
https://wd2-impl.workday.com/<tenant>/d/home.html), or ask your administrator.Connect in Serval
Open the Workday connect form
Enter your Tenant Name
mycompany. Saving without it fails with: Invalid Workday configuration: tenant name is requiredEnter the OAuth credentials
Invalid Workday configuration: client ID is required, Invalid Workday configuration: client secret is required, and Invalid Workday configuration: refresh token is requiredEnter the endpoints
https://wd2-impl-services1.workday.com/ccx/api/mycompany. It must start with https:// and contain /ccx/api/ - Serval derives every REST and SOAP endpoint from this one URL. Errors on create: Invalid Workday configuration: REST API base URL is required or Invalid Workday configuration: REST API base URL must start with https://. When editing: REST API base URL must start with https:// or Invalid REST API base URL formatToken Endpoint (required) - for example, https://wd2-impl-services1.workday.com/ccx/oauth2/token. Must start with https://. Errors on create: Invalid Workday configuration: token endpoint is required or Invalid Workday configuration: token endpoint must start with https://. When editing: Token endpoint must start with https:// or Invalid token endpoint formatEnter the SOAP fields
https://wd2-impl-services1.workday.com/ccx/service/amn1/Human_Resources/v28.2. ISU Username (required by the form) - for example, ServalIntegration. ISU Password (required by the form) - stored encrypted.(Optional) Name the connection
HR Service Account. This is how the connection appears in Serval. Leave it blank to use the tenant name and ISU Username, for example mycompany (ServalIntegration). Serval identifies a Workday connection by its tenant and ISU Username, so each Integration System User gets its own connection and a Serval workspace can connect several service accounts to the same tenant without any extra setup.(Optional) Configure per-user OAuth
https://wd2-impl-services1.workday.com/<tenant>/authorize). Leave them blank if this connection only uses the service account. These endpoints are validated when the user OAuth flow runs (not at save): both the authorize and token endpoints must be HTTPS URLs on *.workday.com or *.myworkday.com.Save the connection
Verifying the connection
Four health checks verify the connection on demand: List Workday Workers - lists up to 10 workers through the Staffing API using the service-account credential, verifying REST connectivity and worker-read permissions.- Success:
Successfully listed [number] workers - Failure:
Unable to list workers.- on permission errors (401/403) it addsThe API credentials may be invalid or the integration user may not have the required permissions.; on Workday server errors (500/502/503) it addsWorkday returned a server error. This is likely a temporary issue - please try again later.
- Success:
Successfully listed [number] supervisory organizations - Failure:
Unable to list supervisory organizations.- with the same conditional permission and server-error suffixes as above.
SELECT worker, fullName FROM allWorkers LIMIT 1) to verify Workday Query Language access.
- Success:
Successfully executed WQL query (returned [number] result(s)) - Failure:
Unable to execute WQL query.- with the same conditional permission and server-error suffixes as above.
- Success:
Successfully connected to Workday SOAP API (retrieved [number] worker(s)) - Failure:
Unable to connect to Workday SOAP API.- with SOAP-specific suffixes: on authentication errors,The ISU username or password may be invalid. Please check your integration configuration.; on forbidden errors,The ISU does not have permission to access the Staffing SOAP service. Please check Workday security group assignments.; on WSDL errors,Could not connect to the WSDL URL. Please verify the WSDL URL is correct and accessible.; on connection errors,Could not connect to Workday. Please verify the WSDL URL and network connectivity.; otherwise the generic permission and server-error suffixes.
Gotchas and troubleshooting
Every Workday action suddenly fails at once
Every Workday action suddenly fails at once
A call fails with 403 permission denied (Workday code S22)
A call fails with 403 permission denied (Workday code S22)
- The API client’s Scope (Functional Areas) - the ceiling on which functional areas that client may ever touch.
- The account’s domain security policies - the ISU’s security group for service-account calls, or the individual’s own Workday permissions for per-user calls.
- Check the right client. Service-account calls use the client from Register API Client for Integrations; per-user calls use the separate Register API Client one. Each has its own scope, and it is easy to widen one while the other is the cause.
- Match the scope to the endpoint’s domain, not its URL. A functional area is a bundle of security domains, and the domain securing an endpoint often belongs to a different area than the REST path suggests -
/supervisoryOrganizationsis secured by organization data, not Staffing. The endpoint’s “Secured by” line in the Workday REST Services Directory is authoritative. - Activate pending security changes. Domain policy edits do not take effect until you run Activate Pending Security Policy Changes.
- Reconnect after a per-user scope change. Scope is bound at consent time, so users who connected before the change keep the old scope until they reconnect. Service-account calls need no equivalent step - Serval fetches a fresh access token on every call, so scope changes there apply immediately.
The WQL health check fails but everything else passes
The WQL health check fails but everything else passes
The SOAP check fails even though the form saved without errors
The SOAP check fails even though the form saved without errors
The REST API Base URL is the keystone field
The REST API Base URL is the keystone field
/ccx/api/; if it doesn’t, SOAP endpoint derivation fails with an Unexpected API domain format error. If anything looks wrong across the board, verify this field first against the View API Clients task in Workday.Editing the connection cleared a field
Editing the connection cleared a field
Connecting a second service account to the same tenant
Connecting a second service account to the same tenant
<tenant> (<ISU Username>); set a Connection Name on each to tell them apart more easily. If you created the app instance ahead of time (for example through Catalyst) and then connect Workday credentials to it, the credentials attach to that app instance and its existing name and external instance ID are kept.Per-user OAuth quirks
Per-user OAuth quirks
*.workday.com or *.myworkday.com, since the client secret travels to these URLs. If someone tries to connect their personal Workday account before the app is configured, the attempt fails with: workday connection has no user-auth OAuth app configured (set the User-Auth OAuth Client ID/Secret). Other endpoint errors include: workday connection is missing the user-auth authorize/token endpoint, workday user-auth authorize endpoint "<url>" must use https, and workday user-auth authorize endpoint "<url>" is not an allowed workday host. An as-user workflow action fails at run time if the acting user has not connected their personal Workday account. User tokens are refreshed only near expiry and always against the exact connection that minted them.Following an older setup guide?
Following an older setup guide?
https://wd2-impl-services1.workday.com/ccx/service/amn1/Human_Resources/v28.2), not a bare /ccx address.Need help? Contact support@serval.com for assistance with your Workday integration.

