Workday RaaS Configuration
Configure Report-as-a-Service reports in Workday for worker, position, and compensation data extraction.
Overview
Report-as-a-Service (RaaS) is the primary extraction mechanism for Workday HCM data. RaaS exposes custom Workday reports as REST endpoints, returning JSON (or CSV/XML) results that VersionForge consumes. You create a custom report in Workday, share it with your Integration System User, and VersionForge calls the report URL with optional filter parameters.
Which Reports to Expose
Most VersionForge implementations use a single comprehensive worker report that combines data from several Workday business objects. At minimum, you need these data points for headcount and compensation planning:
| Data Category | Key Fields | Workday Data Source | |---|---|---| | Worker identity | Employee ID, name, hire date, termination date, worker type | Worker business object | | Position | Position ID, job profile, job family, management level | Position business object | | Compensation | Base pay, total compensation, pay rate type, currency | Compensation Plan business object | | Organization | Supervisory org, cost center, company, location | Organization Assignment |
A single "All Workers" report with columns spanning these categories is easier to maintain than four separate reports. VersionForge handles the field mapping and dimensional splitting downstream.
Creating the RaaS Report
Create a Custom Report
In Workday, search for Create Custom Report. Choose report type Advanced, and set the data source to All Active and Terminated Workers. This ensures you capture the full workforce population, including recent terminations needed for attrition analysis.
Name the report descriptively -- for example, "VersionForge Worker Extract".
Add Report Columns
Add columns for each field your planning model requires. Recommended columns:
Employee_ID(Worker reference)Legal_Name_First_Name,Legal_Name_Last_NameHire_Date,Termination_DateWorker_Type(Employee vs Contingent)Position_ID,Job_Profile,Job_Family_Group,Management_LevelSupervisory_Organization(used for chunked extraction)Cost_Center_ID,Company,LocationBase_Pay,Total_Compensation,Pay_Rate_Type,Compensation_Currency
Add a Supervisory Organization Prompt
Add a report prompt (filter) for Supervisory Organization. Make it optional. VersionForge passes this parameter during chunked extraction to request workers one org at a time. Without this prompt, the report returns all workers in a single response, which can time out for large tenants.
Share the Report with Your ISU
Under the report's Share settings, grant access to the Integration System Security Group you created during connector setup. The ISU must be able to both view the report definition and execute it via RaaS.
Enable RaaS Delivery
On the Advanced tab of the report, check Enable As Web Service. This generates the RaaS URL. The URL follows this pattern:
https://{tenantUrl}/ccx/service/customreport2/{tenant}/{isuUsername}/{reportName}?format=jsonCopy this URL -- you will paste it into the VersionForge sync profile as
raasReportUrl.
Output Format Settings
Configure the report to output JSON. VersionForge parses the JSON response and maps each row to a RawRecord with the employee ID as the sourceRecordId. The JSON response structure looks like:
{
"rows": [
{
"employee_id": "100234",
"legal_name_first_name": "Jane",
"legal_name_last_name": "Doe",
"supervisory_organization": "Finance - US",
"base_pay": 120000,
"compensation_currency": "USD"
}
]
}
Incremental vs Full Extraction
Full extraction pulls all workers from the report. This is the default for initial loads and is recommended for monthly syncs where you want a complete workforce snapshot.
Incremental extraction uses the since filter on the sync profile to only extract workers whose records changed after a given timestamp. This is faster for daily or weekly syncs in large tenants, but requires that your RaaS report includes a Last_Modified column and that you add a corresponding date prompt.
Incremental extraction can miss workers who were transferred between supervisory orgs if the transfer does not update the worker's Last_Modified timestamp. For headcount accuracy, run a full extraction at least once per month.
Testing Your Report
Before configuring the sync profile in VersionForge, test the RaaS URL directly:
curl -H "Authorization: Bearer {access_token}" \
"https://{tenantUrl}/ccx/service/customreport2/{tenant}/{isu}/{report}?format=json&supervisory_organization=Finance"
You should receive a JSON response with the rows array populated. If you get a 403, verify the ISU's security group has access to the report and the "Reports: Deliver Reports" domain permission.