Table of Contents
The status movements integration provides Paradox the ability to update a candidate’s status in Workday or Workday the ability to update a candidate’s status in Paradox.
Best practices for journey statuses
Candidate Received
When candidates apply directly in Workday, they should be created in Paradox.
- How: Upon application completion, when candidates in Workday land in Review, these candidates should be sent to Paradox into the status of Candidate Received.
-
Why: This allows both Paradox and Workday to be in sync, and the design doesn’t impact/rely on the different points in the Workday business process where the candidate could be created.
- Additional benefit: Users can use the browser extension as a scheduling alternative immediately after the candidate is created in Paradox (if not automated through the Workday integration).
Disposition status updates
Match all unique disposition step updates within Paradox.
- How: Set up a daily Workday Studio integration to update the candidate’s status in Paradox to match to a Disposition step in Workday Recruiting. You can set the Candidate Journey to have a custom stage of Disposition with individual disposition statuses.
- Why: This allows both Paradox and Workday to be in sync. This also ensures that Paradox reporting matches Workday reporting (rather than candidates just sitting in statuses (ex: Interview Complete)).
Configuration
Step #1: Enable Client Setup settings

Users with view access to Client Setup can complete the below steps.
- Select All Apps in the top left corner of the header and then Settings in its drop-down menu.
- When the Settings page opens, select Client Setup under the Paradox Tools section.
- From the left panel of Client Setup, scroll down to and open the Integrations section.
- Check to make sure that the External ATS Integration setting is enabled and that Workday is selected as the ATS.
- If enabled, move to step #2. If not, then contact a CS Representative for assistance.
Step #2: Request customer information
Baseline requirements
- Customer to provide Paradox with the endpoint URL that will be used for the integration. This will include the datacenter and tenant ID that will be used for testing. Most enterprise customers will be on datacenter wd5.
- https://{{data_center_id}}-impl-services1.workday.com/ccx/service/{{customer_workday_tenant_ID}}/Recruiting/{{version}}
- Be sure that the body of your requests is using the same version as specified in the endpoint URL.
- Customer to create an Integration System User (ISU) and assign to an Integration System Security Group (ISSG). Customer to provide username and password of Integration User to Paradox.
- The permissions listed below will need to be granted for this specific integration.
| Operation | Domain Security Policy | Functional Areas |
|---|---|---|
| Get and Put | Move Candidate | Recruiting |
- Customer to make sure Paradox Integration System Security Group has security permission to any Web Service needed for the implementation.
- Due to current limitations with Journey Targeting, you should evaluate based on your customer use case if Groups or Journey Targeting will be used. For most customers and their design/integrations, Group Management can be used.
Status movement-specific requirements
WORKDAY:
- The customer will need to provide Paradox with the workflow_step_ids for each status movement. The workflow_step_id is a unique value that tells Workday to move the candidate from one status to the other.
- The candidate’s job_application_id will need to be present in Paradox to make the request. This will be used to make sure we are updating the right candidate's application. This is normally received in the response from the PUT Candidate request (__application_id: JOB_APPLICATION-6-2282).
- Note: If the customer is not utilizing Chat to Apply, they will need to send the job_application_id when they create the candidate in Paradox via an inbound integration.
PARADOX:
- The customer can have the studio integration make a call to our Public API endpoints. Custom Inbound is no longer required.
- The customer will need to build an integration from Workday Studio to support this integration.
Step #3: Set up Candidate Journeys
Configure the Candidate Journeys used to move candidates through the hiring process. Click here to learn more.
Workday API
MOVE Candidate
This request is made to update the candidate’s status in Workday.
Paradox Requirements
- You will want to set up Mapped Values to map the Paradox Candidate Journey Status value to the corresponding Workday Workflow Step IDs.
Callouts
- If the status that needs to be updated is to a Disposition status, you need to send Disposition_Step_Reference instead of Next_Step_Reference under Dynamic_Business_Process_Parameters. This can also be configured as a separate integration in Integration Center.
Regular Next Step
<wd:Dynamic_Business_Process_Parameters>
<wd:Next_Step_Reference>
<wd:ID wd:type="Workflow_Step_ID">JOB_APPLICATION_DEFAULT_DEFINITION_STEP_J_SCREEN_ACTION_PHONE_SCREEN_COMPLETED</wd:ID>
</wd:Next_Step_Reference>
</wd:Dynamic_Business_Process_Parameters>Disposition Next Step
<wd:Dynamic_Business_Process_Parameters>
<wd:Disposition_Step_Reference>
<wd:ID wd:type="Workflow_Step_ID">JOB_APPLICATION_DEFAULT_DEFINITION_DISPOSITION_A</wd:ID>
</wd:Disposition_Step_Reference>
</wd:Dynamic_Business_Process_Parameters>Sample request: Integration Center example
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>{{globals.isu_user|escape}}</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">{{globals.isu_pw|escape}}</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<wd:Move_Candidate_Request xmlns:wd="urn:com.workday/bsvc">
<wd:Dynamic_Business_Process_Parameters>
<wd:Next_Step_Reference>
<wd:ID wd:type="Workflow_Step_ID">{{__journey_candidate_status | mapvalue('candJourneyStatus')}}</wd:ID>
</wd:Next_Step_Reference>
</wd:Dynamic_Business_Process_Parameters>
<wd:Move_Candidate_Data>
<wd:Job_Application_Reference>
<wd:ID wd:type="Job_Application_ID">{{__application_id}}</wd:ID>
</wd:Job_Application_Reference>
</wd:Move_Candidate_Data>
</wd:Move_Candidate_Request>
</soap-env:Body>
</soap-env:Envelope>Sample request: Data example
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>*******</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">*******</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<wd:Move_Candidate_Request xmlns:wd="urn:com.workday/bsvc">
<wd:Dynamic_Business_Process_Parameters>
<wd:Next_Step_Reference>
<wd:ID wd:type="Workflow_Step_ID">JOB_APPLICATION_DEFAULT_DEFINITION_STEP_J_SCREEN_ACTION_PHONE_SCREEN_COMPLETED</wd:ID>
</wd:Next_Step_Reference>
</wd:Dynamic_Business_Process_Parameters>
<wd:Move_Candidate_Data>
<wd:Job_Application_Reference>
<wd:ID wd:type="Job_Application_ID">JOB_APPLICATION-6-595009</wd:ID>
</wd:Job_Application_Reference>
</wd:Move_Candidate_Data>
</wd:Move_Candidate_Request>
</soap-env:Body>
</soap-env:Envelope>Sample success response
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<wd:Move_Candidate_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v35.0">
<wd:Event_Reference>
<wd:ID wd:type="WID">78ae0acf725201e10630ca066001c631</wd:ID>
</wd:Event_Reference>
</wd:Move_Candidate_Response>
</env:Body>
</env:Envelope>Paradox API
Update Candidate
This request is made to update the candidate’s status in Paradox.
Paradox Requirements
- You will need to provide the customer with the Update Candidate endpoint to use and the Appropriate Candidate Journey Status value that the Workday Studio Integration should send.
Callouts
- None
Paradox Public API Endpoint
Sample request: Post to Public API
POST: https://stgapi.paradox.ai/api/v1/public/candidates/C-499
{
"ex_id": "C-499",
"candidate_journey_status": "Offer: Offer Accepted",
"use_application_id_for_identity": true,
"job_application_id": "JOB_APPLICATION-6-2312"
}
Status movements: Paradox to Workday demo
This will allow you to move a candidate in the CEM and subsequently update the candidate in Workday. This will currently work for candidates that are in an Application Complete status and are moved to Review: Recruiter Call Back. This will move the candidate in Workday from Review to the Screen Stage with the step of Recruiter Call Back.
Technical details
The integration for this just makes a MOVE Candidate API call to Workday from Paradox when the candidate moves into the appropriate candidate journey status.
IC Request Build
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<env:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>{{globals.workday_username}}</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">{{globals.workday_password | escape}}</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</env:Header>
<env:Body>
<wd:Move_Candidate_Request xmlns:wd="urn:com.workday/bsvc">
<wd:Dynamic_Business_Process_Parameters>
<wd:Next_Step_Reference>
<wd:ID wd:type="Workflow_Step_ID">Job_Application_for_Global_Modern_Services_step_a_Action_Screen_from_Review</wd:ID>
</wd:Next_Step_Reference>
</wd:Dynamic_Business_Process_Parameters>
<wd:Move_Candidate_Data>
<wd:Job_Application_Reference>
<wd:ID wd:type="Job_Application_ID">{{__application_id}}</wd:ID>
</wd:Job_Application_Reference>
</wd:Move_Candidate_Data>
</wd:Move_Candidate_Request>
</env:Body>
</env:Envelope>