Working with Workday HR, one of the central and most used objects is Worker. When building custom reports there are quite a few Worker Objects to choose from, and the differences are not always clear.
Here is what I found after working with a few of them. The differences between number 1 and 2 below, is great example of the nuances you will find within Workday Reporting.
- All Workers – Contains all active, terminated, and future workers. What no one will tell you is that this object shows terminated Worker’s information as it is at the time of the effective date used for the report. Most workers that are terminated will not have a Cost Center, Supervisory Organization, ect. This is because if they are separated from the organization they do not currently belong to a Supervisory Org.
- All Active and Terminated Workers – Returns and Active and Terminated Workers, but not Future hires. This object will show terminated workers information as of their last day. Terminated Workers returned from this object will have the Supervisory Organization, Cost Center, etc. from their primary position as it was on their last day of employment. This will not show changes that happen after the termination date.
- All Active Employees – will return active employees, but not contingent, terminated, or future workers.
- All Workers for HCM reporting – similar to all Active Employees.
- Get_Workers (Public API) – similar to All Workers.
- Indexed Workers – Indexed for performance. Returns all workers with the exception of Terminated. I have not actually used this object that much, so can not comment.
I mostly use a combination of All Active and Terminated Workers with All Workers, depending on what I’m looking at. Typically the All Active and Terminated Worker fields will make up the bulk of what I need, and I will add logic to substitute in All Worker fields for items like termination and retirement flag/date fields.
The way these objects handle the view of a worker post termination, is something I learned the hard way from working with data from both objects. Again this is a great example of why you will need extra time to validate your workday integrations/reports.