Workday — From Zero to Hero
A practical, visual guide that takes you from never having opened Workday to confidently navigating tenants, building reports, writing calculated fields, and extracting data for downstream analytics. Designed for HR Data Analysts and reporting professionals.
What Is Workday?
Workday is a cloud-based enterprise software platform that runs Human Capital Management (HCM), Finance, Payroll, and Planning for thousands of organizations worldwide. Unlike older "ERP" systems (SAP, Oracle EBS, PeopleSoft), Workday was built from the ground up as a single object-oriented database, accessed through a web browser, with one unified data model shared across HR and Finance.
The Tenant Concept
Every customer of Workday is given one or more tenants. A tenant is your private, isolated copy of Workday — your data, your configuration, your security. You will typically see three:
Production (PROD)
The live tenant where real employees, real pay, and real transactions happen.
Implementation (IMPL)
A sandbox-like tenant for configuration and design work. Often refreshed from Production.
Sandbox / Preview
Used to test the next Workday release (Workday updates twice per year — R1 in March, R2 in September).
High-Level Architecture
The Workday Modules You'll Encounter
| Module | What It Does | Common Objects |
|---|---|---|
| HCM Core HR | Workers, positions, jobs, supervisory orgs, life-cycle events. | Worker, Position, Job Profile, Sup Org |
| HCM Compensation | Pay components, merit cycles, bonus plans, stock. | Compensation Plan, Comp Grade, Plan Assignment |
| HCM Talent & Performance | Goals, performance reviews, succession. | Performance Review, Goal, Talent Card |
| HCM Recruiting | Job requisitions, candidates, offers. | Job Requisition, Candidate, Job Application |
| HCM Absence & Time | PTO, leave, timesheets. | Time Off, Absence Case, Time Block |
| HCM Payroll | Earnings, deductions, taxes, pay results. | Pay Result, Earning, Deduction |
| FIN Financials | GL, AP, AR, journals. | Journal, Ledger Account, Company |
| FIN Procurement | Purchase orders, suppliers, requisitions. | Purchase Order, Supplier, Spend Category |
| FIN Projects | Project tracking, billing. | Project, Project Plan, Project Resource |
| Shared Worktags | The tagging system that ties HCM and Finance together. | Cost Center, Region, Program, Fund, etc. |
Navigation Basics
Workday is driven by three things you'll use every minute:
🔍 The Search Bar
Top of every page. Type a worker, a report name (e.g. "Headcount"), or a task (e.g. "Hire Employee"). Search is your fastest way around.
⋯ Related Actions
The orange/yellow icon next to any object. Click it to see every action you can take on that object (edit, transfer, view history…).
📋 Inbox & Notifications
Inbox = work waiting for you to action. Notifications = informational alerts (e.g., your report finished running).
The Workday Data Model — Business Objects
Workday is object-oriented. Everything — every worker, every position, every cost center, every journal line — is an instance of a Business Object. If you've used Salesforce, think of Business Objects as the equivalent of "tables" — but smarter, because they know how they relate to other objects.
Object vs. Instance
The 12 Business Objects You Must Know
| # | Business Object | What It Represents | Key Fields |
|---|---|---|---|
| 1 | Worker HCM | An employee or contingent worker. The center of HCM. | Employee ID, Hire Date, Full Name, Position, Manager |
| 2 | Position HCM | A "seat" in the organization. Can be filled or unfilled. | Position ID, Job Profile, Sup Org, Position Status |
| 3 | Job Profile HCM | The job template (title, family, compensation grade). | Job Code, Job Family, Management Level, Comp Grade |
| 4 | Supervisory Organization HCM | The reporting hierarchy. Every position lives in one. | Org ID, Manager, Parent Org, Org Type |
| 5 | Location Shared | Physical or virtual work location. | Location Code, Country, Time Zone, Address |
| 6 | Compensation Plan HCM | Salary, hourly, allowance, bonus, stock plans. | Plan ID, Amount, Currency, Frequency |
| 7 | Job Requisition HCM | An open job posting in Recruiting. | Req ID, Hiring Manager, Status, Target Hire Date |
| 8 | Pay Result HCM | The outcome of a payroll run for a worker. | Period, Gross, Net, Earnings, Deductions |
| 9 | Company FIN | A legal entity. Used everywhere in Finance. | Company ID, Currency, Country |
| 10 | Cost Center FIN | Where costs (including labor) accumulate. | Cost Center ID, Hierarchy, Manager |
| 11 | Ledger Account FIN | A GL account (assets, liabilities, expenses, revenue). | Account Number, Account Type, Posting Rule |
| 12 | Journal / Journal Line FIN | A financial transaction posted to the ledger. | Journal #, Debit, Credit, Ledger Account, Worktags |
Worktags — the Bridge Between HCM and Finance
Worktags are the secret sauce of Workday. A Worktag is a tag (like a hashtag) that gets attached to almost every transaction — an expense, a payroll cost, a journal line. They classify where a cost lives without bloating your GL chart of accounts.
How Objects Relate — The Core HCM Map
Understanding object relationships is the single most important skill in Workday reporting. Pick the wrong starting object and you'll either get duplicate rows or miss data. Here is the map you must memorize.
The Core HCM Relationship Map
Cardinality — One-to-Many vs Many-to-One
| Relationship | Cardinality | Reporting Impact |
|---|---|---|
| Worker → Position | 1 : 1 (active) | One row per worker — clean. |
| Position → Job Profile | Many : 1 | Many positions share one profile. Group/filter by profile freely. |
| Worker → Compensation Plan | 1 : Many | One worker can have salary + bonus + stock. If you report from the Plan side you'll get multiple rows per worker. |
| Worker → Sup Org (via Position) | Many : 1 | Many workers in one org. Used for headcount roll-ups. |
| Worker → Dependent | 1 : Many | Reporting from Worker = one row; from Dependent = many. |
| Worker → Pay Result | 1 : Many (per period) | Always pick the right primary object — Worker for headcount, Pay Result for $ totals. |
Effective Dating — the Workday Time Machine
Almost every object in Workday is effective-dated. That means Workday stores not just what something is, but when it became that. You can ask "What was the org chart on December 31?" and get a correct answer.
Data Sources — Where Reports Start
A Data Source is a pre-built query that returns a set of instances of a Business Object, often filtered for performance or security. Every report in Workday starts by choosing a Data Source. Choose well and the rest of the report is easy. Choose poorly and you'll fight the report forever.
Anatomy of a Data Source
Primary vs. Related Business Objects
The Primary BO determines the grain of your report — what one row represents. Related BOs are reached by "dot-walking" from the primary (e.g., Worker → Primary Position → Job Profile → Job Family).
Primary Business Object
Defines 1 row in the report. Determines security domain. Cannot be changed without rebuilding the report.
Related Business Object
Reached via reference fields. Adds columns but never adds rows (as long as the relationship is single-instance).
The 10 Data Sources You'll Use Most
| Data Source | Primary BO | Best For |
|---|---|---|
| All Workers | Worker | Anything where you want both employees and contingent workers, active or not. |
| All Active & Terminated Workers | Worker | Attrition reports, history, year-over-year. |
| All Employees | Worker | Employees only — excludes contingent. |
| Workers as of a Date (Indexed) | Worker | Historical snapshots. Fast — indexed sources are pre-computed. |
| All Positions | Position | Position management — filled, unfilled, freeze status. |
| All Job Requisitions | Job Requisition | Recruiting pipeline, time-to-fill. |
| All Compensation | Comp Plan Assignment | Salary, bonus, stock detail (one row per plan assignment). |
| All Pay Results | Pay Result | Payroll totals by period. |
| All Journal Lines | Journal Line | GL detail — the foundation of Finance reporting. |
| Worker History | Worker Event | Every change ever made to a Worker — hires, transfers, terminations. |
Indexed Data Sources — When You Need Speed
If a data source name ends in (Indexed), Workday has pre-computed it. They run dramatically faster but have one rule: any filter you add must use indexed fields. Otherwise the index is bypassed and you lose the speed benefit.
Fields — The Building Blocks of Reports
A Field is one column on a Business Object. When you build a report, you're really just picking which fields of which business object to display, filter, sort, and group by. Workday gives you thousands of fields out of the box.
Field Types
| Type | Example | How It Behaves in Reports |
|---|---|---|
| Text | Full Name, Employee ID | Filter with contains / equals; cannot aggregate. |
| Numeric | Annual Salary, Headcount | Can sum, average, min, max. |
| Currency | Base Pay Amount | Numeric + ISO currency code; respect currency conversion. |
| Date | Hire Date, Termination Date | Filter by absolute or relative date; supports date math. |
| Boolean | Is Manager | True/False; great for filters and counts. |
| Reference | Position, Manager, Cost Center | Points to another Business Object — you can dot-walk through it. |
| Multi-Instance Reference | Dependents, Worktags, Comp Plans | Returns many values per row. Renders as a comma list unless flattened. |
Single-Instance vs Multi-Instance
Dot-Walking — Reaching Related Fields
"Dot-walking" is Workday slang for following reference fields. If the primary object is Worker and you want the worker's manager's email, you walk: Worker → Manager → Work Email. In the field picker this looks like "Manager > Work Email".
Two Field Lists You Need to Know
Delivered Fields
Built into Workday by default. Stable across releases. Always prefer these first.
Calculated Fields
Custom fields you (or your team) define. Used when no delivered field gives you what you need. Covered next module.
Calculated Fields — Workday's Power Tool
A Calculated Field is a custom field defined by a function. You build them once, then use them in any report, dashboard, integration, or business process. They are the difference between a junior Workday user and a senior one.
The Calculated Field Workflow
The 12 Function Types You Will Actually Use
| Function | What It Does | Example Use Case |
|---|---|---|
| Date Difference | Days/months/years between two dates. | Tenure = today − hire date. |
| Date Add / Subtract | Add or subtract a duration from a date. | Next review date = last review + 12 months. |
| Extract Single Instance | From a multi-instance field, return ONE based on a rule. | Pick the "Primary" Compensation Plan only. |
| Lookup Related Value | Return a field value from a related object. | Manager's email; Cost Center hierarchy parent. |
| Concatenate Text | Stitch multiple text fields together. | "LastName, FirstName (Employee ID)" |
| Substring | Pull characters from a text field. | Country code from Employee ID prefix. |
| Format Number / Date / Text | Convert to a specific display format. | Fiscal-year format YYYY-Q#. |
| Arithmetic Calculation | + − × ÷ on numeric fields. | Total comp = base + bonus + stock. |
| True/False Condition | Return Yes/No based on a logical test. | "Is Eligible for Bonus?" |
| Evaluate Expression | Multi-branch IF/THEN/ELSE. | Tenure band: 0-1 yr, 1-3 yrs, 3-5 yrs, 5+ yrs. |
| Count Related Instances | Count how many related rows exist. | Number of direct reports. |
| Sum Related Instances | Sum a numeric field across related rows. | Sum of YTD earnings across pay results. |
Worked Example 1 — Tenure in Years
Function: Date Difference
Business Object: Worker
Start Date: Worker → Continuous Service Date
End Date: Today (or report's Effective Date)
Output Unit: Years
Output Type: Numeric (1 decimal)
Result for Jane Doe (hired 2021-04-12, today 2026-06-03):
5.1 years
Worked Example 2 — Tenure Bands (IF/THEN/ELSE)
Function: Evaluate Expression
Business Object: Worker
Return Type: Text
When Tenure (Years) is less than 1 → "0–1 yr (New Hire)"
When Tenure (Years) is less than 3 → "1–3 yrs"
When Tenure (Years) is less than 5 → "3–5 yrs"
When Tenure (Years) is less than 10 → "5–10 yrs"
Otherwise → "10+ yrs (Tenured)"
Worked Example 3 — Manager Email (Lookup Related Value)
Function: Lookup Related Value
Business Object: Worker
Lookup Field: Manager (reference field on Worker)
Return Field: Work Email Address
Result: Jane Doe → looks up her manager (Mark Lee) → returns
mark.lee@company.com
Worked Example 4 — Full Name + ID (Concatenate Text)
Function: Concatenate Text
Business Object: Worker
Inputs:
1. Worker → Last Name
2. ", "
3. Worker → First Name
4. " ("
5. Worker → Employee ID
6. ")"
Result: "Doe, Jane (10042)"
Best Practices
- Name with a prefix — e.g. "CF_Tenure_Years". Makes them easy to find vs. delivered fields.
- Reuse, don't rebuild — before creating a new CF, search the tenant. Someone probably built it already.
- Build on Worker when possible — the most reusable.
- Avoid nested calculated fields when speed matters — they cascade and slow large reports.
- Document the purpose in the Description field of every CF you create.
Report Types — Choosing the Right Tool
Workday gives you six report types. Picking the right type at creation time matters — you can't easily convert between them later.
The Six Report Types
| Type | Best For | Output | Difficulty |
|---|---|---|---|
| Simple | Quick lists, one data source, no prompts. | Flat table | Easy |
| Advanced | Most production reports — prompts, sub-filters, charts, sharing. | Flat table + chart + drill-down | Medium |
| Matrix | Pivot-style — count/sum sliced by 1–2 dimensions. | Cross-tab + drill-down | Medium |
| Composite | Multiple sub-reports stitched into one (e.g., P&L statement). | Stacked sections | Hard |
| Search | Searchable index for end-users — typeahead from the search bar. | Search results | Medium |
| Transposed | Pivot rows ↔ columns when comparing across entities side-by-side. | Rotated table | Medium |
Decision Tree — Which Type?
Standard vs Custom Reports
Standard (Delivered)
Shipped by Workday. Cannot be modified directly, but you can Copy Standard Report to Custom and edit the copy. Great starting point.
Custom
Built by you or your team. Fully editable. Must be secured (more on this in Module 10).
Build Your First Report — Step by Step
The Recipe
- Search "Create Custom Report" in the global search bar. Open the task.
- Name the report. Use a convention like
RPT_HCM_Headcount_by_CostCenter_v1. Future you will thank you. - Report Type: Advanced.
- Data Source: "All Active Employees" (Primary BO = Worker, built-in filter = Active = TRUE).
- Optional Filter Field: leave blank — we'll add filters in step 7.
- Columns tab — add fields in this order:
- Worker → Employee ID
- Worker → Full Name
- Worker → Primary Position → Job Profile → Job Title
- Worker → Cost Center (via Worktags) → Cost Center Name
- Worker → Hire Date
- Calculated Field: CF_Tenure_Years (from Module 6)
- Calculated Field: CF_Tenure_Band (from Module 6)
- Filter tab — add: Cost Center → Cost Center Hierarchy → contains → "EMEA" (just so we focus the test set).
- Prompts tab — promote Effective Date and Cost Center to runtime prompts so end-users can re-slice.
- Sort tab — sort by Cost Center Name (asc), then Hire Date (desc).
- Output tab — enable Excel and CSV. Optionally enable a bar chart on Tenure Band.
- Share tab — share with the security group "HR Analysts". Mark "Run as the user who runs the report" for proper row-level security.
- Save & Run. If it returns in < 5 seconds for 1,000+ rows, you have a healthy report.
What Each Tab Actually Controls
| Tab | Purpose | Common Mistake |
|---|---|---|
| Columns | The fields that appear as columns. | Adding multi-instance fields here without flattening → duplicate rows. |
| Filter | Hard-coded conditions that always apply. | Putting end-user choices here instead of in Prompts. |
| Sub Filter | Filters on related multi-instance objects (rare but powerful). | Confusing with main Filter — sub-filters apply per row of a related object. |
| Prompts | Runtime questions to the user. | Forgetting to mark a prompt as "Required" → empty results. |
| Sort | Default ordering. | Sorting on a calculated field → slow on large data sets. |
| Output | Formats: Excel, CSV, PDF, chart. | Enabling everything when only Excel is needed. |
| Share | Who can run the report. | Sharing with "All Users" — security violation. |
Run-Time Prompts vs Filters — the Single Most Confused Topic
Advanced Reporting — Matrix, Composite, Performance
Matrix Reports — Pivots Inside Workday
A Matrix is a pivot table. You pick one or two grouping fields and one or more measures (count, sum, average). Workday produces a cross-tab plus a drill-down to the underlying detail.
Composite Reports — When You Need Multiple Sections
A Composite report stitches together several "sub-reports" (each one usually a Matrix) into a single document. Classic use case: a one-page HR Operations Dashboard with sections for Headcount, New Hires, Terminations, Open Reqs, and Cost Center Spend — all in one PDF.
Sub-Filters & Sub-Totals
Sub-Filter: filters at the related-object level. Example: from Worker, return only those Pay Results where pay period is current quarter (rather than all history). Sub-Totals: on Matrix and grouped Advanced reports, you can add row/column sub-totals, averages, and percent of total.
Performance Tuning Checklist
- Use an indexed data source if available.
- Filter early — push your most selective filter to the very top of the Filter tab.
- Avoid calculated fields in Filter — they prevent index use.
- Limit dot-walks to ≤ 3 hops where possible.
- Schedule heavy reports overnight; deliver via Drive or email.
- Use Report Performance task to inspect long-running reports.
- Cache wisely — repeat-run reports benefit from server cache; first run is always slower.
Security & Extracting Data (to Power BI & Beyond)
Security in Two Layers
Domain Security
Controls who can see fields on Business Objects. If you don't have access to the "Worker Compensation" domain, no report will show salary — even your own. Granted via Security Groups (e.g., HR Partner, Manager, HR Analyst).
Report-Specific Security
Controls who can run a particular report. Set on the Share tab. Always run as the user — never as a service account — so domain security still applies row-by-row.
Four Ways to Get Data Out of Workday
| Method | Best For | How It Works |
|---|---|---|
| Manual Export | Ad-hoc downloads. | Run report → Export to Excel/CSV. |
| EIB (Enterprise Interface Builder) | Scheduled inbound/outbound files (SFTP, email, attachment). | Wrap a report or web service in an EIB, schedule it. |
| RaaS (Report as a Service) | Real-time data pull from external tools (Power BI, Tableau). | Enable "Web Service" on a custom report → unique URL → external tool authenticates and pulls. |
| Prism Analytics / Data Lake | High-volume analytics, blending Workday + non-Workday data. | Stream BOs into Prism tables; query with the Prism API or Power BI connector. |
The RaaS → Power BI Pattern
RaaS Setup Checklist
- Build the source report as an Advanced report. Avoid Matrix/Composite — they don't expose clean tabular data.
- Enable Web Service in the report's Advanced tab. Workday generates a unique URL.
- Create an Integration System User (ISU) with a strong password and an Integration System Security Group (ISSG).
- Grant the ISSG the minimum domain access needed (data scopes only — not modify rights).
- Test the URL in a browser with the ISU credentials — confirm you get XML/JSON.
- In Power BI Desktop: Get Data → Web → paste URL + Basic auth. Use Power Query to flatten.
- Publish + schedule refresh via an On-Premises Data Gateway or service principal.
When to use Prism instead of RaaS
If your dataset is > ~250k rows, refreshes more than hourly, or needs to be blended with non-Workday data (Excel, SQL Server, Salesforce), the right answer is usually Prism Analytics. RaaS is excellent for < 100k row extracts; Prism scales to millions.
One-Page Workday Cheat Sheet
Object → Data Source Map
| Worker | All Workers / All Active Employees |
| Position | All Positions |
| Requisition | All Job Requisitions |
| Comp | All Compensation |
| Pay | All Pay Results |
| GL | All Journal Lines |
Calculated Field Quick-Pick
| Tenure | Date Difference |
| Manager email | Lookup Related Value |
| "Lastname, Firstname" | Concatenate Text |
| Tenure band | Evaluate Expression |
| Headcount = 1 flag | True/False Condition |
| # direct reports | Count Related Instances |
Report Type Quick-Pick
| Throwaway list | Simple |
| Most production reports | Advanced |
| Pivot / cross-tab | Matrix |
| Multi-section dashboard | Composite |
| Search-bar typeahead | Search |
| Side-by-side compare | Transposed |
Extract Method Quick-Pick
| Ad-hoc | Export to Excel |
| Scheduled file | EIB |
| Live BI pull | RaaS |
| Large analytics | Prism |
Glossary
| BO | Business Object — the data model unit (Worker, Position…). |
| Instance | A single row/record of a Business Object. |
| Tenant | Your private copy of Workday (Prod / Impl / Sandbox). |
| Data Source | The pre-built query that starts every report. |
| Primary BO | The object whose instances = one row in the report. |
| Related BO | An object reachable by dot-walking from the Primary BO. |
| Worktag | A tag attached to transactions (Cost Center, Region, Program…). |
| Calculated Field (CF) | A custom field defined by a function; reusable everywhere. |
| EIB | Enterprise Interface Builder — file-based integration tool. |
| RaaS | Report as a Service — exposes a report as a web service URL. |
| ISU / ISSG | Integration System User / Security Group — service accounts for integrations. |
| Effective Date | The "as-of" date Workday uses to return time-correct data. |
| Domain | A security bucket controlling field-level access. |