12.1 Building Custom Reports: Types, Columns, Sorting, Filters & Prompts
Key Takeaways
- Copy Standard Report to Custom Report clones a delivered Report Writer report along with its data source, columns, filters, and built-in prompts; it requires the Custom Report Creation domain and cannot copy XpressO reports or reports on deprecated data sources.
- Sorting is layered: the primary sort orders rows and each subsort orders rows within the previous level, which is what produces readable grouped output.
- Filter rows combine And/Or, field, operator, and comparison type, and parentheses are required whenever And and Or are mixed or the returned population will be wrong.
- Built-in prompts are delivered by the data source or attached to a field and appear automatically, while configured prompts come from filter rows the designer set to prompt the user at runtime.
- Report performance is driven by data source breadth, whether primary filters hit indexed fields, filter order, calculated-field nesting depth, and related business object traversal.
12.1 Building Custom Reports: Types, Columns, Sorting, Filters & Prompts
Quick Answer: Workday's Report Writer is an embedded, real-time analytics engine that queries the in-memory object database directly without third-party extraction tools or relational SQL joins. The platform delivers several distinct report types: Simple Reports (basic single-level lists that can be permanently converted to Advanced), Advanced Reports (the primary enterprise workhorse supporting Related Business Objects, runtime prompts, and Report-as-a-Service/RaaS exports), Matrix Reports (two-dimensional summarization tables with interactive drill-down), and Composite Reports (multi-source cross-domain reports that combine sub-reports across HCM and Financials using a Control Field). Specialized formats include Transposed Reports (rotating axes) and Trending Reports (historical point-in-time analysis).
Workday Report Writer Architecture
Traditional enterprise resource planning (ERP) platforms isolate reporting within separate data warehouses, relational reporting replicas, or third-party business intelligence suites (such as SAP BusinessObjects, Cognos, or SQL Server Reporting Services). In contrast, Workday builds reporting natively into the core application layer through the Workday Report Writer.
Native In-Memory Analytics Engine
Because Workday operates on an in-memory object-oriented database, custom reports query active object instances residing directly in RAM. This delivers three core architectural advantages:
- Zero ETL Latency: Transactions committed in Workday (e.g., completing a Hire or Promotion event) are immediately queryable in custom reports. There are no overnight batch extracts, staging tables, or data warehouse synchronization delays.
- Total Security Inheritance: Custom reports do not bypass or duplicate the Workday security model. When a user runs a custom report, the Report Writer evaluates the user's assigned Domain Security Policies in real time. If a user lacks "View" permission on a field (such as
Base PayorDate of Birth), the field displays as blank or is hidden entirely. Row-level access is governed by the user's constrained role-based security groups. - Object Navigation via Pointers: Rather than executing expensive SQL
JOINoperations across relational tables with foreign keys, Report Writer follows direct memory pointers between a Primary Business Object (PBO) and Related Business Objects (RBOs), minimizing computational overhead.
Creating Custom Reports (Create Custom Report Task)
To build a report, administrators and report designers execute the Create Custom Report task. During initial configuration, the designer defines three immutable or foundational parameters:
- Report Name: Must be unique across custom reports in the tenant.
- Report Type: Determines structural behavior, grouping, aggregation, and web service capabilities.
- Data Source: Determines the Primary Business Object and the initial dataset population.
Starting from a Delivered Report: Copy Standard Report to Custom Report
Building from a blank Create Custom Report task is rarely the fastest route. Workday delivers thousands of standard reports, and the Copy Standard Report to Custom Report task clones one of them into an editable custom report — inheriting its data source, its column set, its filters, and any built-in prompts — so the designer only has to modify what differs.
Rules the exam tests:
- The user must have access to the Custom Report Creation security domain to copy a standard report.
- Only Report Writer reports can be copied. XpressO reports cannot, and neither can reports built on deprecated data sources or fields.
- The copy is a snapshot, not a live link. Later Workday enhancements to the standard report do not flow into the custom copy, and the copy does not inherit future fixes.
- Once copied, columns are freely added, removed, reordered, and relabelled; the underlying data source can be changed only within the constraints of the report type.
When to copy versus build from scratch:
| Situation | Approach |
|---|---|
| A delivered report is 80% right and needs two extra columns | Copy Standard Report to Custom Report |
| The delivered report uses a deprecated data source | Build new with Create Custom Report |
| You need a different Primary Business Object than any delivered report offers | Build new with Create Custom Report |
| You need the delivered report's logic but as a web service | Copy, then enable as web service on the Advanced tab |
Columns, Sorting and Subsorting
A custom report's Columns tab defines what is displayed, in what order, and under what heading. Two controls that look cosmetic have real behavioural consequences:
- Column order determines the order of fields in the output — including in the XML/JSON payload when the report is exposed as a web service, which downstream integrations parse positionally or by alias.
- Column heading override changes the display label only; it does not rename the underlying field.
Sorting is configured on the Sort tab, not on the Columns tab, and is layered:
| Level | What It Controls | Example |
|---|---|---|
| Sort | The primary ordering of rows | Sort by Supervisory Organization ascending |
| Subsort | Ordering within each primary sort value | Within each organization, subsort by Hire Date descending |
| Additional subsorts | Further tie-breaking within the previous level | Then by Worker alphabetically |
Subsort is what produces readable grouped output: managers reading a headcount report expect their own org's workers ordered by seniority, not scattered. On the exam, a scenario describing "rows grouped by department but in unpredictable order inside each department" is a missing subsort, not a filter or data source problem.
Filters: Operators, Comparison Types and Evaluation Order
Report filters are built as rows on the Filter tab, each row composed of four parts:
- And/Or — how this row combines with the previous one
- Field — the attribute being tested, from the PBO or a related business object
- Operator —
in the selection list,not in the selection list,greater than,less than,is empty,is not empty, and so on - Comparison Type and Comparison Value — whether the field is compared against a specific value the designer types, a prompted value supplied at runtime, or another field on the report
Parentheses group rows so that mixed And/Or logic evaluates as intended. A AND B OR C and A AND (B OR C) return different populations, and reports returning "too many rows" almost always have ungrouped mixed Boolean logic.
Filter order matters for performance. Workday evaluates filter rows in sequence, so placing the most restrictive, indexed, non-calculated condition first shrinks the working set before expensive conditions are evaluated. A filter on a nested calculated field placed first forces that calculation across the entire data source population.
Built-In Prompts vs. Configured Prompts
Candidates lose points here because they assume every prompt is something the designer created. There are two distinct origins:
| Built-In Prompt | Configured Prompt | |
|---|---|---|
| Where it comes from | Delivered with the data source, or attached to a field and added automatically when that field is added to the report definition | Created by the designer on the Prompts tab from a filter row whose comparison type is "prompt the user" |
| Can it be removed? | Not directly — it is part of the data source or field definition | Yes — change or delete the filter row |
| Typical example | An "Effective as of Date" prompt on a worker data source; an organization prompt attached to an org field | A Location prompt the designer exposed so managers can scope the report themselves |
On the Prompts tab, the designer controls the runtime experience: the Instructions field supplies on-screen guidance, Prompt Defaults pre-populate values, and Populate Undefined Prompt Defaults adds any prompt not yet listed to the defaults grid so it can be given a default. A prompt default can be a specific value or a value calculated at runtime (for example, "today"), which is what makes a scheduled report stay current instead of re-running the same frozen date range forever.
Exam Tip: Built-in prompts also come across when you copy a standard report. If a scenario says a prompt "appeared by itself" on a copied report, the answer is that it is a built-in prompt from the data source or a field, not a misconfiguration.
Factors That Impact Report Performance
Report performance is an explicit exam topic, and the drivers are predictable:
| Factor | Effect | Remedy |
|---|---|---|
| Data source choice | A broad standard data source scans far more instances than a targeted one | Choose the narrowest data source that contains the needed PBO |
| Indexed vs. standard data source | Indexed sources answer in sub-seconds, but only when the primary filters are on indexed fields | Filter on indexed fields; move other tests to secondary filters |
| Filter placement | Expensive conditions evaluated across the full population | Put the most restrictive, non-calculated filter first |
| Nested calculated fields | Each nesting layer is recomputed per instance at runtime | Flatten nesting; reuse delivered fields where they exist |
| Related business object traversal | Each RBO hop multiplies in-memory work, and multi-instance hops multiply rows | Limit RBO depth; avoid unnecessary 1:M traversal |
| Output volume | Very large result sets strain rendering and export | Add prompts so users scope the run; schedule large extracts off-hours |
| Report type | Composite reports execute every sub-report before combining | Reserve composite for genuine cross-domain needs |
Core Report Types: Mechanics, Strengths & Limitations
Workday provides multiple report types tailored to specific analytical and integration use cases.
+-----------------------------------------------------------------------------------------+
| WORKDAY REPORT WRITER |
+-----------------------------------------------------------------------------------------+
| | |
v v v
+--------------------+ +--------------------+ +--------------------+
| SIMPLE REPORT | | ADVANCED REPORT | | MATRIX REPORT |
| - Flat list | | - PBO + RBOs | | - 2D Pivot table |
| - Single object |------->| - Prompts & filters| | - Aggregations |
| - One-way upgrade | (Conv) | - RaaS Web Service | | - Drill-down detail|
+--------------------+ +--------------------+ +--------------------+
|
v (Sub-Reports)
+--------------------+
| COMPOSITE REPORT |
| - Cross-Domain |
| - HCM + Financials |
| - Control Data Set |
+--------------------+
1. Simple Report
A Simple Report is designed for quick, flat listings of data residing exclusively on a single business object.
- Scope: Single-level reporting only. It cannot traverse to Related Business Objects (RBOs) to retrieve secondary attributes.
- Feature Constraints: Simple reports do not support user-defined runtime prompts, sub-filtering, sub-totals, grouping breaks, or Report-as-a-Service (RaaS) XML/JSON exposition.
- The One-Way Upgrade Rule (Exam Trap): A Simple report can be upgraded to an Advanced report at any time using the
Report > Convert to Advanced Reportrelated action. However, this conversion is strictly one-way. Once converted to an Advanced report, it can never be converted back to a Simple report. - Best Use Case: Rapid ad-hoc verification of baseline fields, such as pulling a simple directory list of Location names and addresses for administrative review.
2. Advanced Report
The Advanced Report is the primary, most powerful, and most frequently deployed report type in Workday HCM.
- Multi-Level Object Traversal: Allows designers to select a Primary Business Object (PBO) and navigate across multiple levels of Related Business Objects (RBOs) (e.g.,
Worker->Primary Position->Supervisory Organization->Cost Center). - Complex Filtering & Prompts: Supports nested Boolean filtering (
AND,OR, parentheses grouping) and runtime prompts (allowing end users to dynamically filter by Organization, Location, or Date Range at execution time). - Sorting, Grouping & Totaling: Allows multi-column sorting, grouping by specific attributes (e.g., grouping employees by Department), and generating summary totals (counts, sums, averages).
- Report-as-a-Service (RaaS): Advanced reports can be exposed as web services by enabling the
Enable as Web Servicecheckbox on the Advanced tab. This generates REST and SOAP endpoints delivering real-time XML, JSON, or CSV payloads to downstream integration platforms (such as Workday Studio, EIBs, or third-party middleware).
3. Matrix Report
A Matrix Report provides two-dimensional pivot table summarization and multidimensional data aggregation.
- Cross-Tabular Architecture: Groups data by row dimensions (e.g., Supervisory Organization) and column dimensions (e.g., Worker Type, Gender, or Management Level).
- Aggregation Metrics: Calculates summary metrics at the intersection of rows and columns, such as
Count,Sum,Average,Minimum,Maximum, orStandard Deviation. - Drill-Down Interactivity: End users can click on any summarized numerical cell or metric in the matrix to view the underlying operational records. When designing a Matrix report, the author specifies a Drill Down Report (typically a pre-configured Advanced report) that opens seamlessly upon clicking a metric cell.
- Visualization & Charting: Matrix reports natively feed embedded charts (bar, column, line, pie, donut, heatmap) on Workday Dashboards and Worklets.
4. Composite Report
A Composite Report combines data from multiple independent sub-reports across different functional domains, business objects, or data sources into a unified presentation.
- Cross-Domain Reporting: Solves the challenge of reporting across disconnected functional areas that share no direct object relationship pointer. For example, merging HCM operational headcount with Financial ledger expenses, or combining Payroll actual costs with Financial planning budgets.
- Control Data Set & Control Fields: A Composite report relies on a Control Data Set with a designated Control Field (such as
Cost Center,Company, orFiscal Period). The Control Field acts as the common anchor or pivot along which rows are aligned. - Sub-Reports: The designer embeds multiple underlying sub-reports (typically Advanced or Matrix reports). Sub-Report A might pull active worker headcount; Sub-Report B pulls total salary expenditure from Payroll; Sub-Report C pulls operational revenue from Financials.
- Cross-Report Mathematical Formulas: Columns in a Composite report can execute mathematical formulas across columns derived from different sub-reports. For example:
[Sub-Report C: Revenue] / [Sub-Report A: Headcount] = Revenue per Employee.
5. Transposed Report
A Transposed Report inverts the standard row-and-column presentation by rotating rows into columns and columns into rows.
- Use Case: Conducting side-by-side comparative evaluations of a small number of instances. For example, comparing three final job candidates across identical competencies, or comparing five health insurance benefit plans side-by-side across coverage attributes and premium tiers.
6. Trending Report
A Trending Report evaluates workforce data over discrete historical time intervals (e.g., month-over-month headcount, rolling 12-month attrition).
- Underlying Mechanism: Requires specialized Trending Data Sources that store historical snapshots or periodic balance captures rather than standard live operational data sources. Standard operational sources reflect only the active effective moment, whereas trending sources evaluate historical states across defined reporting slices.
Report Types Architectural Comparison Matrix
| Feature / Attribute | Simple Report | Advanced Report | Matrix Report | Composite Report | Transposed Report |
|---|---|---|---|---|---|
| Primary Business Object (PBO) | Single BO only | Single PBO | Single PBO | Multiple (via Sub-Reports) | Single PBO |
| RBO Traversal Support | No | Yes (Multi-level) | Yes (In drill-down/grouping) | Yes (Within sub-reports) | Yes |
| Runtime User Prompts | No | Yes | Yes | Yes | Yes |
| Grouping & Sub-totals | No | Yes | Yes (Two-dimensional) | Yes (Via Control Fields) | No |
| Pivot / Data Aggregation | No | No (Listing only) | Yes (Pivot summarization) | Yes (Cross-sub-report formulas) | No (Axis rotation) |
| Drill-Down to Instances | N/A | Direct instance links | Interactive drill-down | Interactive drill-down | Direct instance links |
| Enable as Web Service (RaaS) | No | Yes | Yes | No | No |
| Downgrade / Type Conversion | Can upgrade to Adv | Cannot downgrade | Cannot downgrade | Cannot downgrade | Cannot downgrade |
Report-as-a-Service (RaaS) & Integration Readiness
When external systems require data from Workday, creating an Advanced Report enabled as a web service is often the preferred integration approach.
+---------------------------------------------------------------------------------------+
| WORKDAY TENANT |
| |
| +------------------------+ Enable as Web Service +-----------------------+ |
| | Custom Advanced Report | -----------------------------> | RaaS REST/SOAP WSDL | |
| +------------------------+ +-----------------------+ |
+-----------------------------------------------------------------------|---------------+
| HTTPS Request
v (Basic/OAuth2)
+-----------------------+
| Enterprise Middleware |
| MuleSoft / Boomi / EIB|
+-----------------------+
RaaS Configuration Rules
- The custom report must be an Advanced or Matrix report type.
- The
Enable as Web Servicecheckbox must be flagged in the report definition. - Each column must have an unambiguous, web-service-safe Web Service Alias (XML tag name) defined without spaces or illegal characters.
- Downstream systems authenticate using an Integration System User (ISU) whose assigned security groups grant View access to all data sources and fields referenced in the report.
Certification Pitfalls & Common Exam Traps
- The XpressO Copy Trap: A scenario asks why
Copy Standard Report to Custom Reportdoes not offer a particular delivered report. Only Report Writer reports can be copied — XpressO reports and reports on deprecated data sources cannot. - The "Where Did This Prompt Come From" Trap: A copied report displays a prompt the designer never configured. That is a built-in prompt delivered by the data source or attached to a field, not a defect and not removable from the Prompts tab.
- The Missing Subsort Trap: Output is correctly grouped by organization but unordered inside each group. The fix is a subsort on the Sort tab, not a new filter, a different data source, or a matrix report.
- The Irreversible Conversion Trap: Exam questions often ask: "An administrator converts a Simple report to an Advanced report to add runtime prompts, but later decides the prompts are unneeded and wants to convert it back to Simple. How is this accomplished?" The answer is that it cannot be converted back. The conversion from Simple to Advanced is strictly irreversible; the designer would have to build a new Simple report from scratch.
- RaaS on Simple Reports Trap: If a scenario asks why an administrator cannot see the "Enable as Web Service" option on a custom report, verify the report type. Simple reports do not support RaaS; the report must first be converted to an Advanced report.
- Composite vs. Advanced for Cross-Domain Data: When an exam item asks how to report on both HCM Worker turnover and Financial Cost Center operational budget variances in a single report, the correct choice is a Composite Report. An Advanced report is bound to a single Primary Business Object and cannot natively combine disparate financial and HCM datasets without a common object join.
- Matrix vs. Advanced for Executive Dashboards: When an executive requires a headcount summary grouped by Region and Department with the ability to click any number to view the underlying employee list, the correct answer is a Matrix Report with a configured Drill-Down Report, not an Advanced report with page breaks.
An HR Analyst creates a Simple custom report to list active office locations. Two weeks later, leadership requests that the report include runtime prompts for Country and the ability to drill down into the primary Facilities Manager (a Related Business Object). How should the analyst proceed?
The Chief Financial Officer and Chief People Officer require a single executive summary report that displays active employee headcount alongside actual departmental salary expenditures and general ledger operating budget balances. Which Workday report architecture must be selected to fulfill this requirement?
A business analyst needs to build an interactive dashboard component that displays worker headcount aggregated by Supervisory Organization across rows and Management Level across columns, while allowing executive users to click on any count to view the underlying worker details. Which report type should the analyst configure?
A report designer copies a delivered headcount report using Copy Standard Report to Custom Report. When the new report runs, it displays an 'Effective as of Date' prompt that the designer never created and cannot find on the Prompts tab filter rows. What is the correct explanation?
An advanced report against a large worker population takes several minutes to run. Its first filter row tests a three-layer nested calculated field, and later rows filter on Location and Worker Type. Which change most directly improves performance?