ERR_WORKDAY_WORKER_NOTFOUND on Workday: Workday integration returns 'VALIDATION_ERROR: Worker not found' or 'Invalid_ID' when referencing an employee record — the worker exists in Workday but the API call fails to locate them. Root cause: Workday uses multiple distinct identifier types for workers: the Workday ID (a system-generated UUID), the Employee ID (a human-readable number like 'E12345'), the Worker Reference ID (used in SOAP API calls), and the External ID (a custom identifier for integration purposes). Worker not found errors occur when an integration uses the wrong identifier type, references a worker by Employee ID in a context that requires a Workday Reference ID, or when the worker's record has been terminated and the integration is not filtering for active workers only. Additionally, Workday's multi-tenant architecture means that worker IDs from a sandbox tenant are not valid in the production tenant. Step 1: Identify which identifier type your integration is using. In Workday SOAP API calls, workers are referenced using a Worker_Reference element with a specific ID type. The most common ID types are: Employee_ID (the human-readable number), Workday_ID (the UUID), and WID (Workday Internal ID). In the REST API, workers are referenced by their Workday ID in the URL path. Check your integration's API call to confirm which ID type you are sending. If you are sending an Employee ID in a field that expects a Workday ID, the lookup will fail even if the worker exists. Step 2: Verify the worker exists and is active in Workday. Log in to Workday and search for the worker using the search bar. If the worker appears in search results, note their Workday ID (visible in the URL when you open their profile). If the worker does not appear, they may have been terminated — in Workday, terminated workers are not returned by default in API queries. To include terminated workers, add the Include_Terminated_Workers flag to your SOAP request or use the ?includeTerminated=true parameter in REST API calls. Step 3: Use the correct tenant URL for production vs sandbox. Workday has separate tenants for production and sandbox/implementation environments, and worker IDs are not shared between them. A worker's Workday ID in the sandbox tenant is completely different from their ID in production. Check your integration's API endpoint URL: production tenants use wd2.myworkday.com or wd5.myworkday.com, while sandbox tenants use wd2-impl.workday.com or wd5-impl.workday.com. If your integration was developed against sandbox and is now pointing at production, all worker references will fail. Step 4: Implement a worker lookup by Employee ID before referencing. If your integration receives Employee IDs from an external system and needs to look up the Workday ID, use the Get_Workers SOAP operation with the Employee_ID filter. The response returns the worker's full reference including their Workday ID. Cache this mapping (Employee ID to Workday ID) in your integration to avoid repeated lookups on every sync cycle. Step 5: Handle the effective date requirement for worker data. Many Workday API operations require an effective date parameter. If you query worker data without specifying an effective date, Workday uses the current date. If a worker was hired after the current date (a future-dated hire) or if you are querying historical data, the worker may not appear in results for the current date. Add an explicit effective date to your API calls: for current data, use today's date; for historical data, use the date of the event you are querying. Step 6: Enable integration system user permissions in Workday. Workday integrations run under an Integration System User (ISU) account, not a regular user account. The ISU must be granted specific domain security permissions to access worker data. In Workday, go to Maintain Domain Security Policies, search for Worker Data domains, and verify your ISU has Get access to the relevant domains (e.g., Worker Data: All Positions, Worker Data: Current Staffing Information). Missing domain permissions cause Worker not found errors even when the worker exists, because the ISU cannot see the worker's record.