Workday ATS -> Ashby Recruiting API Migration Guide
Data migration from Workday uses several Workday APIs, each of which requires varying user and permission configuration.
The setup requires three steps:
- Configuring Ashby's Integration System User (ISU)
- Configuring domain and business process security for Ashby's ISU
- Creating the "API Client for Integrations" for Ashby
In each step, we advise you to copy down some important information that needs to be configured within Ashby to connect your Ashby and Workday instances. The prompts to copy information appear in warning callouts like this one.
For information on Workday integrations, see WorkdayWorkday integrations.
Configuring Ashby's ISU
- Log in to your Workday application using an administrator account.
- In the application's search box, search for "create user" and select Create Integration System User.
- Enter a username and password.
Copy down the username and password for future configuration within Ashby.
- Leave the Require New Password at Next Sign In checkbox unchecked. This user accesses Workday programmatically and does not need to set a new password.
- Leave Session Timeout Minutes at its default value of 0. This prevents the user's sessions from timing out prematurely.
- Select Do Not Allow UI Sessions. This prevents the account from logging into Workday.
If possible, make sure the password does not expire. Otherwise, Ashby's sync stops when the password expires. You can do this by going to the Maintain Password Rules task and adding Ashby's ISU to the System Users exempt from password expiration field.
Configure domain security for Ashby's ISU
Create a security group
In this step, you create an unconstrained integration system security group in Workday and assign the ISU created in the previous step to this group.
- In the search box, search for "security group" and select Create Security Group.
- Complete the Create Security Group task.
- Select Integration System Security Group (Unconstrained) from the Type of Tenanted Security Group dropdown.
- After the security group is created successfully, you see a page where you can assign members to the security group.
- Add the new ISU created in the previous step to this security group.
Configure domain security policy permissions
In this step, you grant domain security policy permissions that allow Ashby access to recruiting and HR data domains related to the Ashby Analytics integration.
- Enter "Security Group Membership and Access" in the search box and click the report link.
- Search for and select the security group created in the previous step.
- Click the ellipsis (...) next to the group name and select Security Group > Maintain Domain Permissions for Security Group.
- Add the following domains to the Domain Security Policies list.
In rows where multiple domains are listed, all domains after the first may be included or inherited by the first domain, depending on your Workday instance's security configuration. Where no reason is listed in a row, the reason from the nearest row above applies.
Domain Security Policy | Operation | Reason |
|---|---|---|
Organization: Cost Center | Get Only | Sync org relationships for jobs and job role assignees |
Manage: Organization Integration | Get Only | |
Manage: Organization Roles | Get Only | |
Staffing Organizations: Cost Center | Get Only | |
Worker Data: Organization Information Worker Data: Management Chain Worker Data: Organizations | Get Only | |
Worker Data: Active and Terminated Workers | Get Only | Sync basic worker information for Ashby user account and employee data |
Person Data: Legal Name | Get Only | |
Person Data: Preferred Name | Get Only | |
Person Data: Name | Get Only | |
Person Data: Home Email | Get Only | |
Person Data: Work Email | Get Only | |
Person Data: Home Contact Information | Get Only | |
Person Data: Public Work Email Address Integration | Get Only | |
Pre-Hire Data: Name and Contact Information Pre-Hire Data: Contact Information Pre-Hire Data: Names | Get Only | |
Worker Data: Public Worker Reports | Get Only | |
Worker Data: Worker ID | Get Only | |
Worker Data: Workers | Get Only | |
Worker Data: All Positions | Get Only | |
Worker Data: Current Staffing Information Worker Data: Historical Staffing Information | Get Only | Sync worker position data |
Worker Data: Employment Data | Get Only | |
Job Directory | Get Only | Sync job requisition data |
Job Information | Get Only | |
Job Profile: View | Get Only | |
Job Postings: External | Get Only | |
Job Postings: Internal | Get Only | |
Job Postings | Get Only | |
Job Requisitions for Recruiting | Get Only | |
Job Requisition Data | Get Only | |
Manage: Evergreen Requisitions | Get Only | |
All Prospects | Get Only | Sync prospect data |
Prospects Prospect Sharing | Get Only | |
Reports: Prospect | Get Only | |
Candidate Data: Job Application Candidate Data: Assessment Results Candidate Data: Bundle Resumes Candidate Data: Eligibility Results Candidate Data: Interview Feedback Comments Candidate Data: Interview Feedback Results Candidate Data: Language Skills Candidate Data: Offer Details Candidate Data: Quick Stats Candidate Data: Sharing Candidate Data: Attachments | Get Only | Sync candidate and application data, including resume files |
Candidate Data: Interview Schedule | Get Only | |
Candidate Data: Other Jobs | Get Only | |
Candidate Data: Questionnaires | Get Only | |
Candidate Data: Questionnaire Total Score | Get Only | |
Questionnaire Results | Get Only | |
Manage Pre-Hire Process: View Pre-Hire Interviews | Get Only | |
Candidate Data: Gender | Get Only | Sync candidate EEOC data |
Candidate Data: Ethnicity | Get Only | |
Candidate Data: Personal Information Candidate Data: Military Status Candidate Data: Nationalities Candidate Data: Sexual Orientation Candidate Data: Sexual Orientation & Gender | Get Only | |
Find Candidates: Internal and External | Get Only | |
Find Candidates: External | Get Only | |
Pre-Hire Data: Employment Agreement Employment Agreement: Employee Contracts | Get Only | Sync candidate offer data |
Pre-Hire Data: Start Date and Location | Get Only | |
Purge Person Data Purge Single Entity Data | Get Only | So we can delete candidates and applications that have been merged into others |
Manage: Recruiting Agency | Get Only | Sync recruiting agency data |
Integration Build | Get Only | Access to low-level identifiers to connect Workday objects together (e.g., a job to a location) |
Business Process Administration Business Process Definition View Business Process Delegation | Get Only | Access to business process history (for job application process history) |
Business Process Reporting | Get Only | |
Manage: Business Process Definitions | Get Only | |
Reporting Audits | Get Only | Allows running reports via REST API WQL |
Workday Query Language | View and Modify | "View and Modify" appears to be required here, even though we can only run queries that fetch data. |
Manage: Candidate Job Application Notes | Get Only | Sync job application notes |
Configure business process permissions
To see certain historical information for a job application, Ashby needs elevated access on recruiting-specific business processes.
To give Ashby the right access, you need to go to each business process as follows (using "job application" as an example in step 1):
- Go to bp: job application.
- Select Related Actions (the ... menu at the top) > Business Process Policy > Edit.
- Scroll down to Who Can Do Actions on Entire Business Process.
- Go to the View All section.
- Add the integration system security group you created in the previous steps.
Ashby needs this for the following recruiting business processes (substitute each of the following in your Workday search):
- "Assess Candidate"
- "Employment Agreement"
- "Interview"
- "Job Application"
- "Offer"
- "Rate Interview"
- "Ready for Hire"
- "Reference Check"
- "Review Candidate"
- "Screen"
Your Workday instance may not have a business process for each of these.
Create the "API Client for Integrations" for Ashby
To facilitate mapping the Workday recruiting process into Ashby, we need a report of candidate application history. We use this to understand stage transitions for candidates and build interview plans in Ashby.
We run this report using Workday Query Language (WQL) via Workday's REST API. Access to the REST API requires a special API client to be configured.
- Open the Register API Client for Integrations task via Workday search.
- Use the following configuration:
- Client Name: Ashby API Access
- Non-Expiring Refresh Tokens: ✅
- Scope: System, Recruiting, Staffing, and Pre-Hire Process (allows high-level access to recruiting and reporting data; data within is still guarded by domain security)
- Included Workday Owned Scope: ✅ (access to Workday-owned fields)
- Click Okay.
The client ID and secret are needed to configure REST API access for Ashby.
- On the page that appears, copy down the client ID and secret.
- Click the ... menu next to the client name in the blue header at the top, then select API Client > Manage Refresh Tokens for Integrations.
- In the Workday Account box in the dialog that appears, find and select Ashby's ISU, then click Okay.
- On the next page, check the Generate New Refresh Token box, then click Okay.
- Copy down the refresh token that appears on the next page.
The refresh token is needed to configure REST API access for Ashby.
- Go to the View API Clients report via Workday search.
- On this page, there are three endpoints at the top. Copy these down.
These endpoints are needed to configure REST API access for Ashby.
Collect final tenant information
Most of the Workday-side configuration is now complete. We just need to collect a few final pieces of information before configuring the connection in Ashby.
Workday tenant ID
Your Workday tenant ID is found in the URL when you're logged into Workday. For example, if the URL is https://impl.workday.com/example/d/home.html, your tenant ID is "example".
Copy your tenant ID for configuration within Ashby.
WSDL URL
Your Web Services Description Language (WSDL) URL can be found by following the Workday Public Web Services article.
In short:
- Type "Public Web Services" in the Workday search bar.
- Under Reports, select Public Web Services.
- From the Public Web Services list, select any entry and click the ellipsis icon to reveal a dropdown menu. Select Web Service > View WSDL, which displays the full WSDL in a separate window.
- The WSDL URL is the link in your browser bar.
Copy the WSDL URL for configuration within Ashby.
Configure the connection in Ashby
Now that you've collected all of the information needed, you're ready to configure the connection in Ashby.
Navigate to https://app.ashbyhq.com/admin/integrations/workday, where you see the screen below.
Steps
Your Workday tenant ID is case-sensitive. Take care when entering it in step 2.
- In the first box, paste the WSDL URL.
- In the Workday ISU Username field, enter the ISU username you created for Ashby, followed by @ and your tenant ID (e.g., Ashby_ISU@acme).
- In the Workday ISU Password field, paste the ISU password.
- In the Workday REST API Base URL field, paste the "host" part of the endpoints you copied when configuring the REST API client. It looks something like https://wd5-services1.myworkday.com, which is just the part of the URLs that ends in myworkday.com. They should all be the same, though yours may start with wd4-services1 for example.
- In the Workday REST API Client ID field, paste the client ID you copied when configuring the REST API client.
- In the Workday REST API Client Secret field, paste the client secret you copied when configuring the REST API client.
- In the Workday REST API Client Refresh Token field, paste the refresh token you copied when configuring the REST API client.
Once this is complete, let us know so we can monitor the initial sync and make sure all is well.
What is migrated from Workday?
Objects migrated
- Job requisitions (non-confidential)
- Evergreen job requisitions
- Teams and departments
- Locations
- Openings
- Candidates (non-confidential)
- Job considerations and applications
- Interview feedback ratings
- Sources
- Candidate attachments, including resumes
Resume attachments will be imported on the second sync (after the first successful full sync of candidates and job applications). Subsequent delta syncs will import the Resume immediately.
- Disposition reasons
- Work experience
- Education
- Contact information (name, email, phone, and social links)
- EEOC forms
- Employees (as inactive users, so they can be assigned hiring team roles)
Objects not migrated
- Job templates
- Job postings
- Custom fields
- Candidate tags
- Candidate pools
- Emails and messages
- Email templates
- Application forms
- Questionnaires for the candidate
- Confidential jobs
- Confidential prospects