Table of Contents
The ability for Paradox to create candidate applications to specific requisitions in Workday using Paradox conversations and/or forms.
Client requirements
To enable the Workday Dynamic Chat to Apply integration, the client will need to provide additional setup beyond our standard requirements. Our Standard ISU and Client setup instructions can be found here. Please share a PDF copy of this document.
Baseline requirements
- Client 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 clients will be on datacenter wd5.
- https://{{data_center_id}}-impl-services1.workday.com/ccx/service/{{client_workday_tenant_ID}}/Recruiting/{{version}}
- Be sure that the body of your requests is using the same version as specified in the endpoint URL.
- Client to create an Integration System User (ISU) and assign to an Integration System Security Group (ISSG). Client 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 | Candidate Data: Job Application | Recruiting |
| Get and Put | Candidate Data: Attachments | Recruiting |
| Get and Put | Candidate Data: Questionnaires | Recruiting |
| View Only | Job Postings | Recruiting |
| Get Only | Job Postings | Recruiting |
| View Only | Job Postings: External | Recruiting |
| Get Only | Job Postings: External | Recruiting |
| View Only | Job Postings: Internal | Recruiting |
| Get Only | Job Postings: Internal | Recruiting |
| Get Only | Job Requisitions for Recruiting | Recruiting |
| View Only | Job Requisitions for Recruiting | Recruiting |
| Get Only | Manage: Evergreen Requisitions | Recruiting |
| View Only | Set Up: Career Sites | Recruiting |
| View Only | Set Up: Recruiting | Recruiting |
| View and Modify | Custom Report Creation | System |
| View Only | Questionnaire | System |
| View Only | Questionnaire Results | System |
| View and Modify | Workday Query Language | System |
| Get Only | Worker Data: Public Worker Reports | System |
- Client to make sure Paradox Integration System Security Group has security permission to any Web Service needed for the implementation.
- Due to current limitations with Applicant Flows, you should evaluate based on your client use case if Groups or Applicant flows will be used. For most clients and their design/integrations, Group Management can be used.
Chat to Apply-specific requirements
-
OAuth Application Setup:
- The client must set up an OAuth application within their system.
- This setup will generate an OAuth refresh token, which needs to be assigned to the Integration System User (ISU) account created for our standard application. Refer to the ISU Requirements for detailed instructions. To find the refresh token, the client can navigate to the View API Client report and view API Clients for Integrations.
-
Information Needed from the Client: After creating the OAuth application, the client must provide the following details to complete the integration:
- REST Host/Endpoint
- Token Host/Endpoint (for obtaining the OAuth token)
- Client ID
- Client Secret
- Refresh Token
Account configuration process
Step #1: Enable Client Setup settings

- Navigate to the Integrations section of Client Setup.
- Enable the External ATS Integration setting.
- Select Workday.
- Toggle on Dynamic Chat to Apply: Workday Dynamic Chat to Apply Integration.
- Save the page.
- Navigate to the Job Management section.
- Toggle on Applicant Flows.
- Note: If not already set up, this will require having a job feed set up as well as a master feed for the Applicant Flow to target.
- Save the page.
Step #2: Create a dynamic ATS conversation
Create a dynamic ATS conversation that will be used as the Chat to Apply conversation and that will retrieve questions from Workday to use within a conversation.
Step #3: Set up a Workday connected app
- Navigate to the Integrations Center.
- Open the Connected Apps section.
- Click the Connect Workday button in the Workday card.
- Enter the information outlined here.
-
Notes:
- Please ensure Basic Authentication is Toggled Off to avoid Oauth Authentication errors.
- Workday Demo Tenant in Olivia Prod pointing to our paradox_dpt1 tenant uses the following ISU/ISSG/API Client:
- ISU_PDX_DC2A
ISSG_PDX_DC2A
Api Client - PDX_DC2A_WD
- ISU_PDX_DC2A
-
Notes:
- Click Save.
Note for the REST Host:
The URL that the client provides will likely look like the following: https://wd2-impl-services1.workday.com/ccx/api/v1/paradox_dpt1. You will need to update this to https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3/paradox_dpt1.
- Use what they provide up to /api/ then follow that with /recruiting/v3/<tenant_name>
Solution design considerations
When leveraging Workday Dynamic Chat to Apply, it is important to note the following:
-
Limitations:
- We do not have the ability to store candidates' answers in attributes within our system. Consequently, we cannot automatically route candidates based on their responses (e.g., answering “Favorably”).
-
Workaround:
- To address this limitation, the client must set up routing rules within Workday. These rules will route candidates based on their questionnaire responses. For example, candidates can be:
- Dispositioned
- Reviewed
- Invited to a screen or interview
- Workday documentation on autorouting that can be provided to the client.
- To address this limitation, the client must set up routing rules within Workday. These rules will route candidates based on their questionnaire responses. For example, candidates can be:
By setting up these routing rules in Workday, clients can ensure candidates are processed correctly based on the information provided during the dynamic chat interaction.
Dynamic Chat to Apply API calls
This provides comprehensive details about the API calls used within our Workday Dynamic Chat to Apply solution. It covers the request and response patterns, potential modifications, and general information on how each API call integrates into the overall solution.
Workday APIs utilized in this integration include:
- GET Candidates
- PUT Candidate
- GET Questionnaire
[WORKDAY] 1. get candidate
This POST API call leverage Workdays Get_Candidates_Request SOAP Web Service. Within this call, we are passing the candidates email and the req ID they are currently applying to. If Workday returns True, then that means this candidate has already applied for this requisition, so we will stop the productized integration flow as well as halt the current capture/C2A Conversation.
This request can be used if the client would like a duplicate check to take place.
- This request would run after Capture Complete, since we cannot currently run integrations in the middle of a conversation. Use the request with
<wd:Job_Requisition_Reference>to check if the candidate applied to that specific requisition before and use step #2 response mapping if so. - You would then map the following field in the response to a custom attribute. If value is zero, then you would proceed with making the PUT Candidate request.
$.env:Envelope.env:Body.wd:Get_Candidates_Response.wd:Response_Results.wd:Total_Results
- Use this request without the
<wd:Job_Requisition_Reference>element to check if the candidate email already has a Workday Candidate Profile. You can then save the candidate ID in the response to use/reference in the PUT Candidate Request.-
Note: You will want to add two response mappings on this request. If there are multiple Candidate Profiles with the same email, then this second response mapping will capture the latest ID. If there is only one match, the first response mapping will capture the ID.
$.env:Envelope.env:Body.wd:Get_Candidates_Response.wd:Response_Data.wd:Candidate.wd:Candidate_Data.wd:Candidate_ID$.env:Envelope.env:Body.wd:Get_Candidates_Response.wd:Response_Data.wd:Candidate[-1].wd:Candidate_Data.wd:Candidate_ID
-
Note: You will want to add two response mappings on this request. If there are multiple Candidate Profiles with the same email, then this second response mapping will capture the latest ID. If there is only one match, the first response mapping will capture the ID.
- If a candidate who goes through Chat to Apply and has already applied to a requisition through Workday, and there is a need to save the existing job application to the candidate in the CEM, then the response mapping function below can be used to find the existing job application ID for the specific candidate and req.
=selector(
=findwhere( '$.env:Envelope.env:Body.wd:Get_Candidates_Response.wd:Response_Data.wd:Candidate.wd:Candidate_Data.wd:Job_Application_Data',
'$.wd:Job_Applied_To_Data.wd:Job_Requisition_Reference.wd:ID[1].#text',
'==',
'#__job_req_id'
),
'.wd:Job_Applied_To_Data.wd:Job_Application_ID')
)Sample Request #1
<?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:Body>
<wd:Get_Candidates_Request xmlns:wd="urn:com.workday/bsvc" wd:version="v42.0">
<wd:Request_Criteria>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="Job_Requisition_ID">R-00471</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Candidate_Email_Address>drew.fuller+dc2a@paradox.ai</wd:Candidate_Email_Address>
</wd:Request_Criteria>
<wd:Response_Group>
<wd:Exclude_All_Attachments>1</wd:Exclude_All_Attachments>
</wd:Response_Group>
</wd:Get_Candidates_Request>
</env:Body>
</env:Envelope>Sample Request #2
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<wd:Get_Candidates_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v42.0">
<wd:Request_Criteria>
<wd:Candidate_Email_Address>drew.fuller+dc2a@paradox.ai</wd:Candidate_Email_Address>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="WID">abf2dc971f5d100ab1c45cb864710000</wd:ID>
<wd:ID wd:type="Job_Requisition_ID">R-00471</wd:ID>
</wd:Job_Requisition_Reference>
</wd:Request_Criteria>
<wd:Response_Group>
<wd:Exclude_All_Attachments>1</wd:Exclude_All_Attachments>
</wd:Response_Group>
<wd:Response_Results>
<wd:Total_Results>0</wd:Total_Results>
<wd:Total_Pages>0</wd:Total_Pages>
<wd:Page_Results>0</wd:Page_Results>
</wd:Response_Results>
</wd:Get_Candidates_Response>
</env:Body>
</env:Envelope>
[WORKDAY] 1. get candidate by email only
This POST API call utilizes Workday's Get_Candidates_Request SOAP web service. In this call, the candidate's email is passed as a parameter to check if a profile already exists in Workday. If a match is found, Workday returns a candidate ID, which can be stored in an attribute within our response mapper section. This ID is then used in subsequent API calls, such as the Post Candidate API call, to prevent the creation of duplicate profiles and avoid potential profile merge issues in the future.
To capture the candidate ID, you will want to set up the following two response mappings and assign them to the same attribute.
$.env:Envelope.env:Body.wd:Get_Candidates_Response.wd:Response_Data.wd:Candidate.wd:Candidate_Reference.wd:ID[1].#text$.env:Envelope.env:Body.wd:Get_Candidates_Response.wd:Response_Data.wd:Candidate[0].wd:Candidate_Reference.wd:ID[1].#text
Endpoint Example: https://wd2-impl-services1.workday.com/ccx/service/paradox_dpt1/Recruiting/v42.0
Sample Request #1
<?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:Body>
<wd:Get_Candidates_Request xmlns:wd="urn:com.workday/bsvc" wd:version="v42.0">
<wd:Request_Criteria>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="Job_Requisition_ID">R-00471</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Candidate_Email_Address>drew.fuller+dc2a@paradox.ai</wd:Candidate_Email_Address>
</wd:Request_Criteria>
<wd:Response_Group>
<wd:Exclude_All_Attachments>1</wd:Exclude_All_Attachments>
</wd:Response_Group>
</wd:Get_Candidates_Request>
</env:Body>
</env:Envelope>Sample Request #2
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<wd:Get_Candidates_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v42.0">
<wd:Request_Criteria>
<wd:Candidate_Email_Address>drew.fuller+dc2a@paradox.ai</wd:Candidate_Email_Address>
</wd:Request_Criteria>
<wd:Response_Group>
<wd:Exclude_All_Attachments>1</wd:Exclude_All_Attachments>
</wd:Response_Group>
<wd:Response_Results>
<wd:Total_Results>1</wd:Total_Results>
<wd:Total_Pages>1</wd:Total_Pages>
<wd:Page_Results>1</wd:Page_Results>
<wd:Page>1</wd:Page>
</wd:Response_Results>
<wd:Response_Data>
<wd:Candidate>
<wd:Candidate_Data>
<wd:Candidate_ID>CANDIDATE-6-5992</wd:Candidate_ID>
<wd:Name_Data>
<wd:Legal_Name>
<wd:Name_Detail_Data>
<wd:First_Name>Andy</wd:First_Name>
<wd:Last_Name>Dynamic</wd:Last_Name>
</wd:Name_Detail_Data>
</wd:Legal_Name>
</wd:Name_Data>
<wd:Contact_Data>
<wd:Phone_Device_Type_Reference>
<wd:ID wd:type="WID">d691375437c848aea9d5b0874353bfd7</wd:ID>
<wd:ID wd:type="Phone_Device_Type_ID">Mobile</wd:ID>
</wd:Phone_Device_Type_Reference>
<wd:Country_Phone_Code_Reference>
<wd:ID wd:type="WID">db8d3ca6446c11de98360015c5e6daf6</wd:ID>
<wd:ID wd:type="Country_Phone_Code_ID">USA_1</wd:ID>
</wd:Country_Phone_Code_Reference>
<wd:Phone_Number>6028823728</wd:Phone_Number>
<wd:Email_Address>drew.fuller+dc2a@paradox.ai</wd:Email_Address>
</wd:Contact_Data>
<wd:Status_Data>
<wd:Do_Not_Hire>0</wd:Do_Not_Hire>
<wd:Withdrawn>0</wd:Withdrawn>
</wd:Status_Data>
<wd:Job_Application_Data>
<wd:Job_Application_Reference>
<wd:ID wd:type="WID">19f43d4f2e109001d04b7692b5d30003</wd:ID>
<wd:ID wd:type="Job_Application_ID">JOB_APPLICATION-6-6015</wd:ID>
</wd:Job_Application_Reference>
<wd:Job_Applied_To_Data>
<wd:Job_Application_ID>JOB_APPLICATION-6-6015</wd:Job_Application_ID>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="WID">e1bcaf26d7664c1b973d6ab528c5c32f</wd:ID>
<wd:ID wd:type="Job_Requisition_ID">R-00015</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Job_Application_Date>2024-09-12T19:33:47.196-07:00</wd:Job_Application_Date>
<wd:Stage_Reference>
<wd:ID wd:type="WID">31350d72f899430fb446b410c1e368cd</wd:ID>
<wd:ID wd:type="Recruiting_Stage_ID">REVIEW</wd:ID>
</wd:Stage_Reference>
<wd:Workflow_Step_Reference>
<wd:ID wd:type="WID">1944fad761171017be197ac835ba3076</wd:ID>
<wd:ID wd:type="Workflow_Step_ID">Job_Application_for_Global_Modern_Services_step_b_Action_Review_from</wd:ID>
</wd:Workflow_Step_Reference>
<wd:Status_Timestamp>2024-09-12T19:33:47.196-07:00</wd:Status_Timestamp>
</wd:Job_Applied_To_Data>
<wd:Resume_Data>
<wd:Summary>Paradox Summary Field</wd:Summary>
</wd:Resume_Data>
</wd:Job_Application_Data>
</wd:Candidate_Data>
</wd:Candidate>
</wd:Response_Data>
</wd:Get_Candidates_Response>
</env:Body>
</env:Envelope>
[WORKDAY] 2. get job
This API leverages Workdays Get_Job_Postings_Request SOAP API. This API call passes in the Job Req ID that the candidate is applying to and is returned information around the job posting. The information that we store in an attribute for subsequent API calls is the Job Posting Reference WID.
Endpoint Example: https://wd2-impl-services1.workday.com/ccx/service/paradox_dpt1/Recruiting/v42.0
Sample Request #1
<?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:Body>
<wd:Get_Job_Postings_Request xmlns:wd="urn:com.workday/bsvc" wd:version="v41.0">
<wd:Request_Criteria>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="Job_Requisition_ID">R-00015</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Show_Only_Active_Job_Postings>1</wd:Show_Only_Active_Job_Postings>
<wd:Show_Only_External_Job_Postings>1</wd:Show_Only_External_Job_Postings>
</wd:Request_Criteria>
</wd:Get_Job_Postings_Request>
</env:Body>
</env:Envelope>Sample Request #2
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<wd:Get_Job_Postings_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v41.0">
<wd:Request_Criteria>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="WID">e1bcaf26d7664c1b973d6ab528c5c32f</wd:ID>
<wd:ID wd:type="Job_Requisition_ID">R-00015</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Show_Only_Active_Job_Postings>1</wd:Show_Only_Active_Job_Postings>
<wd:Show_Only_External_Job_Postings>1</wd:Show_Only_External_Job_Postings>
</wd:Request_Criteria>
<wd:Response_Results>
<wd:Total_Results>1</wd:Total_Results>
<wd:Total_Pages>1</wd:Total_Pages>
<wd:Page_Results>1</wd:Page_Results>
<wd:Page>1</wd:Page>
</wd:Response_Results>
<wd:Response_Data>
<wd:Job_Posting>
<wd:Job_Posting_Reference>
<wd:ID wd:type="WID">3fb6a1af43741001d1982a8fcdec0001</wd:ID>
<wd:ID wd:type="Job_Posting_ID">JOB_POSTING-6-985</wd:ID>
</wd:Job_Posting_Reference>
<wd:Job_Posting_Data>
<wd:Job_Posting_ID>JOB_POSTING-6-985</wd:Job_Posting_ID>
<wd:Job_Posting_Title>Web Content Manager</wd:Job_Posting_Title>
<wd:Job_Posting_Description><h3><span class="emphasis">It's fun to work in a company where people truly <b>BELIEVE</b> in what they're doing!</span></h3><p style="text-align:inherit"></p><p style="text-align:left"><i>We're committed to bringing passion and customer focus to the business.</i></p><p style="text-align:inherit"></p><p>Responsible developing the voice for all aspects of the organization’s online presence. In addition to writing, editing, and proofreading site content, this person will also work closely with the creative team to maintain site standards with regard to new development. The website content manager will also be responsible for crafting site promotions, email newsletters, and online outreach campaigns. The content manager will work closely with technical, business development, and marketing members of our organization, so strong communication skills are needed. The ideal candidate will also have experience managing online marketing and outreach campaigns. Tasks require a strong attention to detail and ability to work under tight deadlines.</p><p></p><p><i>If you like wild growth and working with happy, enthusiastic over-achievers, you&#39;ll enjoy your career with us</i><i>!</i></p></wd:Job_Posting_Description>
<wd:Job_Posting_Site_Reference>
<wd:ID wd:type="WID">63520c99ec6a1019d5c4501f93021f7a</wd:ID>
<wd:ID wd:type="Job_Posting_Site_ID">External</wd:ID>
</wd:Job_Posting_Site_Reference>
<wd:External_Job_Path>https://paradox-dpt1.wd2.myworkdayjobs-impl.com/External/job/Chicago/Web-Content-Manager_R-00015-1</wd:External_Job_Path>
<wd:External_Apply_URL>https://paradox-dpt1.wd2.myworkdayjobs-impl.com/External/job/Chicago/Web-Content-Manager_R-00015-1/apply</wd:External_Apply_URL>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="WID">e1bcaf26d7664c1b973d6ab528c5c32f</wd:ID>
<wd:ID wd:type="Job_Requisition_ID">R-00015</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Job_Requisition_ID>R-00015</wd:Job_Requisition_ID>
<wd:Job_Posting_Remote_Type_Data>
<wd:Remote_Type_Reference>
<wd:ID wd:type="WID">e7578f902ca110020edb2bd6aad10000</wd:ID>
<wd:ID wd:type="Job_Requisition_Remote_Type_ID">JOB_REQUISITION_REMOTE_TYPE-6-1</wd:ID>
</wd:Remote_Type_Reference>
<wd:External_Name>Hybrid</wd:External_Name>
</wd:Job_Posting_Remote_Type_Data>
<wd:Job_Posting_Location_Data>
<wd:Primary_Location_Reference>
<wd:ID wd:type="WID">bbe6fe31a26b44d49f42222ca99e0e83</wd:ID>
<wd:ID wd:type="Location_ID">Chicago</wd:ID>
</wd:Primary_Location_Reference>
</wd:Job_Posting_Location_Data>
<wd:Job_Posting_Start_Date>2024-09-12</wd:Job_Posting_Start_Date>
<wd:Primary_Posting>0</wd:Primary_Posting>
<wd:Forecasted_Payout>0</wd:Forecasted_Payout>
<wd:Job_Family_Reference>
<wd:ID wd:type="WID">b118641502744071a1d4037e9182b5c3</wd:ID>
<wd:ID wd:type="Job_Family_ID">MK_Marketing_Services</wd:ID>
</wd:Job_Family_Reference>
<wd:Time_Type_Reference>
<wd:ID wd:type="WID">900fa8d9ae6f45a0a788545a85878f40</wd:ID>
<wd:ID wd:type="Position_Time_Type_ID">Full_time</wd:ID>
</wd:Time_Type_Reference>
<wd:Job_Type_Reference>
<wd:ID wd:type="WID">9459f5e6f1084433b767c7901ec04416</wd:ID>
<wd:ID wd:type="Employee_Type_ID">Regular</wd:ID>
</wd:Job_Type_Reference>
<wd:Supervisory_Organization_Reference>
<wd:ID wd:type="WID">dd15e2212f0144afbe8f3e86ae46d877</wd:ID>
<wd:ID wd:type="Organization_Reference_ID">SUPERVISORY_Marketing_Services_Group</wd:ID>
</wd:Supervisory_Organization_Reference>
<wd:Similar_Jobs_Reference>
<wd:ID wd:type="WID">3fb6a1af43741001d189a45a2e8f0001</wd:ID>
<wd:ID wd:type="Job_Posting_ID">JOB_POSTING-6-984</wd:ID>
</wd:Similar_Jobs_Reference>
<wd:Similar_Jobs_Reference>
<wd:ID wd:type="WID">3fb6a1af43741001d186cfd314430001</wd:ID>
<wd:ID wd:type="Job_Posting_ID">JOB_POSTING-6-983</wd:ID>
</wd:Similar_Jobs_Reference>
<wd:Hiring_Requirement_Data>
<wd:Recruiting_Start_Date>2021-12-27</wd:Recruiting_Start_Date>
<wd:Target_Hire_Date>2023-02-01</wd:Target_Hire_Date>
<wd:Job_Profile_Reference>
<wd:ID wd:type="WID">699c3212aaa8492eb7539f56725cf537</wd:ID>
<wd:ID wd:type="Job_Profile_ID">Web_Content_Manager</wd:ID>
</wd:Job_Profile_Reference>
<wd:Worker_Type_Reference>
<wd:ID wd:type="WID">d588c41a446c11de98360015c5e6daf6</wd:ID>
<wd:ID wd:type="Worker_Type_ID">EE</wd:ID>
</wd:Worker_Type_Reference>
<wd:Position_Worker_Type_Reference>
<wd:ID wd:type="WID">9459f5e6f1084433b767c7901ec04416</wd:ID>
<wd:ID wd:type="Employee_Type_ID">Regular</wd:ID>
</wd:Position_Worker_Type_Reference>
<wd:Remote_Type_Reference>
<wd:ID wd:type="WID">e7578f902ca110020edb2bd6aad10000</wd:ID>
<wd:ID wd:type="Job_Requisition_Remote_Type_ID">JOB_REQUISITION_REMOTE_TYPE-6-1</wd:ID>
</wd:Remote_Type_Reference>
<wd:Primary_Location_Reference>
<wd:ID wd:type="WID">bbe6fe31a26b44d49f42222ca99e0e83</wd:ID>
<wd:ID wd:type="Location_ID">Chicago</wd:ID>
</wd:Primary_Location_Reference>
<wd:Primary_Job_Posting_Location_Reference>
<wd:ID wd:type="WID">bbe6fe31a26b44d49f42222ca99e0e83</wd:ID>
<wd:ID wd:type="Location_ID">Chicago</wd:ID>
</wd:Primary_Job_Posting_Location_Reference>
<wd:Additional_Locations_Reference>
<wd:ID wd:type="WID">e6848733cd2c4fd1b34c2301321fc0f1</wd:ID>
<wd:ID wd:type="Location_ID">Boston</wd:ID>
</wd:Additional_Locations_Reference>
<wd:Time_Type_Reference>
<wd:ID wd:type="WID">900fa8d9ae6f45a0a788545a85878f40</wd:ID>
<wd:ID wd:type="Position_Time_Type_ID">Full_time</wd:ID>
</wd:Time_Type_Reference>
<wd:Scheduled_Weekly_Hours>40</wd:Scheduled_Weekly_Hours>
<wd:Spotlight_Job>0</wd:Spotlight_Job>
<wd:Referral_Payment_Plan_Reference>
<wd:ID wd:type="WID">f349d83544df4e9aa4cd5025a49036c7</wd:ID>
<wd:ID wd:type="One-Time_Payment_Plan_ID">Standard_Referral</wd:ID>
</wd:Referral_Payment_Plan_Reference>
</wd:Hiring_Requirement_Data>
</wd:Job_Posting_Data>
</wd:Job_Posting>
</wd:Response_Data>
</wd:Get_Job_Postings_Response>
</env:Body>
</env:Envelope>
[WORKDAY] 3. get job detail
This API calls into Workday's REST Job Posting API and passes the job posting reference WID as a path parameter (retrieved in the previous integration). We capture the ID that is returned from this QPI call and use it to retrieve the questionnaire(s).
When running the productized integration for the first time, pay extra attention to this REST API call. A failure will indicate that either the productized integration or REST API client (client side) was configured incorrectly. If it does not run, this likely means the token API call failed and you will need to double check your credentials. If you receive a permission error, it may be a missing client-side configuration piece. If so, please ask your client to double check that they have not skipped a skip in this Dynamic Chat to Apply documentation.
Endpoint Example: https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3/paradox_dpt1/jobPostings?jobPosting=3fb6a1af43741001d1982a8fcdec0001
Sample Request #1
GET Request against the REST API Endpoint: https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3/paradox_dpt1/jobPostings?jobPosting=3fb6a1af43741001d1982a8fcdec0001Sample Request #2
{
"total": 1,
"data": [
{
"id": "9dc4d03e08f6101331a572cbbc15bd97",
"primaryLocation": {
"id": "bbe6fe31a26b44d49f42222ca99e0e83",
"descriptor": "Chicago",
"country": {
"descriptor": "United States of America",
"alpha3Code": "USA"
},
"region": {
"descriptor": "Illinois",
"code": "IL"
}
},
"title": "Web Content Manager",
"timeType": {
"id": "900fa8d9ae6f45a0a788545a85878f40",
"descriptor": "Full time"
},
"categories": [
{
"id": "d3bfb62d3bd344c8abf95b8be88d6137",
"descriptor": "Marketing"
}
],
"company": {
"id": "dd15e2212f0144afbe8f3e86ae46d877",
"descriptor": "Marketing Services"
},
"jobDescription": "<h3><span class=\"emphasis\">It's fun to work in a company where people truly <b>BELIEVE</b> in what they're doing!</span></h3><p style=\"text-align:inherit\"></p><p style=\"text-align:left\"><i>We're committed to bringing passion and customer focus to the business.</i></p><p style=\"text-align:inherit\"></p><p>Responsible developing the voice for all aspects of the organization’s online presence. In addition to writing, editing, and proofreading site content, this person will also work closely with the creative team to maintain site standards with regard to new development. The website content manager will also be responsible for crafting site promotions, email newsletters, and online outreach campaigns. The content manager will work closely with technical, business development, and marketing members of our organization, so strong communication skills are needed. The ideal candidate will also have experience managing online marketing and outreach campaigns. Tasks require a strong attention to detail and ability to work under tight deadlines.</p><p></p><p><i>If you like wild growth and working with happy, enthusiastic over-achievers, you'll enjoy your career with us</i><i>!</i></p>",
"jobSite": {
"id": "63520c99ec6a1019d5c4501f93021f7a",
"descriptor": "External Careers"
},
"jobType": {
"id": "9459f5e6f1084433b767c7901ec04416",
"descriptor": "Regular"
},
"url": "https://paradox-dpt1.wd2.myworkdayjobs-impl.com/External/job/Chicago/Web-Content-Manager_R-00015-1",
"remoteType": {
"id": "e7578f902ca110020edb2bd6aad10000",
"name": "Hybrid"
},
"spotlightJob": false,
"startDate": "2024-09-12"
}
]
}
[WORKDAY] 4. get questionnaire
The information returned from this API call will be the questions and possible answers displayed to the candidate. This request uses the ID from the previous API call to gather all of the questionnaire data that we need to display to the candidate as well as create a candidate back into their workday tenant. This includes the questions, question type, possible answers and answer reference IDs.
Sample Request #1
GET Request against the REST API Endpoint: https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3/paradox_dpt1/jobPostings/9dc4d03e08f6101331a572cbbc15bd97/questionnaireSample Request #2
{
"total": 1,
"data": [
{
"id": "c81416c97633106649aa4ec8d11b2820",
"descriptor": "Leadership Questionnaire-External",
"referenceIdValue": "QUESTIONNAIRE-16-10",
"questions": [
{
"id": "c81416c97633106649aa4f455e672829",
"descriptor": "Management Experience for Leadership Questionnaire-External",
"order": "b",
"required": false,
"displayOption": {
"descriptor": "Dropdown",
"id": "0516ace60e49100011c1cdcb9c892dff"
},
"possibleAnswers": [
{
"id": "6f18602ceddc100f1a15654e53ec18d1",
"order": "a",
"descriptor": "None"
},
{
"order": "b",
"id": "6f18602ceddc100f1a156571c27018d2",
"descriptor": "1-3 Years"
},
{
"order": "c",
"id": "6f18602ceddc100f1a156582a46f18d3",
"descriptor": "3-5 Years"
},
{
"descriptor": "More than 5 years",
"order": "d",
"id": "6f18602ceddc100f1a1565952bec18d4"
}
],
"type": {
"descriptor": "Multiple Choice - Single Select",
"id": "c4d9bd57996c10002583f04b9fc30042"
},
"body": "How many years of experience do you have as the direct manager of a team?"
},
{
"id": "c81416c97633106649aa4f289b432824",
"descriptor": "Management scope for Leadership Questionnaire-External",
"order": "a",
"required": false,
"displayOption": {
"descriptor": "Dropdown",
"id": "0516ace60e49100011c1cdcb9c892dff"
},
"possibleAnswers": [
{
"descriptor": "Not applicable",
"order": "a",
"id": "0ffbba5c9ec310648664f571d15d07cb"
},
{
"order": "b",
"id": "0ffbba5c9ec310648664f58773f507cc",
"descriptor": "Up to three (3) people"
},
{
"descriptor": "Between four (4) and seven (7) people",
"order": "c",
"id": "0ffbba5c9ec310648664f59c8ef407cd"
},
{
"order": "d",
"id": "0ffbba5c9ec310648664f5bbc1b307ce",
"descriptor": "More than seven (7) people"
}
],
"type": {
"descriptor": "Multiple Choice - Single Select",
"id": "c4d9bd57996c10002583f04b9fc30042"
},
"body": "What is the largest sized team you have directly managed?"
}
],
"name": "Leadership Questionnaire-External"
}
]
}
[WORKDAY] 5. post candidate
This productized integration, specifically the Put_candidate call, is our primary method for creating candidates in Workday. It's important to note that this API call includes macros to handle questionnaire logic and resume logic, ensuring these data points are sent to Workday consistently. While we encourage customizing the API call to meet client requirements, extra caution should be exercised when modifying the two predefined macros related to questionnaire and resume handling. The API call offers flexibility in candidate identification: you can modify it to send either a Candidate_Reference (for candidates who have applied to another role inside the client's Workday tenant) or Name_Data for new candidates.
To implement this, use conditional logic based on the value received from the [WORKDAY] 1. get candidate by email only API call. If this call returns a Candidate_ID, pass it as the Candidate_Reference; if null, send the standard Name_Data. The Put_candidate API call comes pre-populated with response mapping to capture the Job Application ID and Candidate ID, and you have the option to add more mappings if needed.
Endpoint Example: https://wd2-impl-services1.workday.com/ccx/service/paradox_dpt1/Recruiting/v42.0
Sample Request #1
<?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:Body>
<wd:Put_Candidate_Request
xmlns:wd="urn:com.workday/bsvc" wd:Add_Only="true" wd:version="v38.0">
<wd:Candidate_Data>
<wd:Name_Data>
<wd:Legal_Name>
<wd:Name_Detail_Data>
<wd:First_Name>Tycho</wd:First_Name>
<wd:Middle_Name></wd:Middle_Name>
<wd:Last_Name>Barr</wd:Last_Name>
</wd:Name_Detail_Data>
</wd:Legal_Name>
</wd:Name_Data>
<wd:Contact_Data>
<wd:Phone_Device_Type_Reference>
<wd:ID wd:type="Phone_Device_Type_ID">Mobile</wd:ID>
</wd:Phone_Device_Type_Reference>
<wd:Country_Phone_Code_Reference>
<wd:ID wd:type="Country_Phone_Code_ID">USA_1</wd:ID>
</wd:Country_Phone_Code_Reference>
<wd:Phone_Number>9548549509</wd:Phone_Number>
<wd:Email_Address>sylvia.miller101+@paradox.ai</wd:Email_Address>
</wd:Contact_Data>
<wd:Job_Application_Data>
<wd:Job_Applied_To_Data>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="Job_Requisition_ID">R-00201</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Stage_Reference>
<wd:ID wd:type="Recruiting_Stage_ID">REVIEW</wd:ID>
</wd:Stage_Reference>
<wd:Source_Reference>
<wd:ID wd:type="Applicant_Source_ID">APPLICANT_SOURCE-6-40</wd:ID>
</wd:Source_Reference>
</wd:Job_Applied_To_Data>
<wd:Resume_Data>
<wd:Summary>Paradox Testing Summary Field</wd:Summary>
<wd:Questionnaire_Response_Data>
<wd:Response_Data>
<wd:Questionnaire_Reference>
<wd:ID wd:type="Questionnaire_ID">QUESTIONNAIRE-6-102</wd:ID>
</wd:Questionnaire_Reference>
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>a</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">QUESTION_MULTIPLE_CHOICE_ANSWER-6-416</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>b</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">QUESTION_MULTIPLE_CHOICE_ANSWER-6-419</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>c</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">QUESTION_MULTIPLE_CHOICE_ANSWER-6-424</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
</wd:Response_Data>
</wd:Questionnaire_Response_Data>
</wd:Resume_Data>
</wd:Job_Application_Data>
</wd:Candidate_Data>
</wd:Put_Candidate_Request>
</env:Body>
</env:Envelope>Sample Request #2
{
"env:Envelope": {
"@xmlns:env": "http://schemas.xmlsoap.org/soap/envelope/",
"env:Body": {
"wd:Put_Candidate_Response": {
"@xmlns:wd": "urn:com.workday/bsvc",
"@wd:version": "v38.0",
"wd:Candidate_Reference": {
"wd:ID": [{
"@wd:type": "WID",
"#text": "2a0120d8be36900211bbae2974ab0000"
}, {
"@wd:type": "Candidate_ID",
"#text": "CANDIDATE-6-5975"
}]
},
"wd:Candidate_Job_Application_Data": {
"wd:Job_Application_Reference": {
"wd:ID": [{
"@wd:type": "WID",
"#text": "2a0120d8be36900211bbaf5cbeff0003"
}, {
"@wd:type": "Job_Application_ID",
"#text": "JOB_APPLICATION-6-5998"
}]
},
"wd:Job_Requisition_Reference": {
"wd:ID": [{
"@wd:type": "WID",
"#text": "f29eb31600011066e31f5b471b74280d"
}, {
"@wd:type": "Job_Requisition_ID",
"#text": "R-00201"
}]
}
}
}
}
}
}
PUT Candidate
This request is made to create the candidate and job application in Workday.
Requirements:
- The client should add the requisition questionnaire IDs to the job feed so we know what questionnaires to send in the request. Clients can have multiple questionnaires per requisition.
- Contact a Paradox Admin to create a job feed ticket that explicitly calls out what fields the questionnaire ID(s) are in on the job feed and that they have been mapped to Available Job Feed Data Fields during the job feed ticket process.
- You will need to use the GET Questionnaire request to build the order of the application questions and to retrieve the answer ID for each question.
- Note: You may not need to use this endpoint based on the mapping the client provides. However, this endpoint is useful for troubleshooting and can help you identify if the client provided incorrect mapping of ids / question order / etc.
Callouts:
- The shorter the application, the better. Because a lot of our data is consumed through conversation and Workday requires specific IDs for most questions, it can become challenging with complex applications.
- If the client needs to collect work experience, education, or other complex data, the client will need to collect this candidate data from a Paradox form and not through a conversation.
- If work experience or education is required, it is best to capture this data in a Paradox form where we can control the data structure.
- When configuring the questionnaire answer data, the answers need to be sent in a specific order. For example "a, a.a, b, c, d, e, f". Workday also supports the use of conditional questions. This will be established by having the order be something like "a, a.a". You can utilize the GET Questionnaire request to see the format of the questions of any Questionnaire ID.
Example PUT Candidate Conditional Question configuration:
In this example, if the candidate’s system attribute of bne_relative = YES, then we would send the conditional question of Crew - Relative Details. If the candidate’s system attribute of bne_relative does not equal YES, then we would not send the conditional question response.
Conditional Configuration Example
<!-- Question E: Crew - Relative -->
{{ questionnare_block(bne_relative, 'e', 'BNE Relative (Management)') }}
<!-- Conditional Question E.A: Crew - Relative Details -->
{% if bne_relative|upper == 'YES' %}
{{ questionnare_block(bne_relative_details, 'e.a') }}
{% endif %}
Sample Integration Center configuration:
The macro at the top of the request will determine if the structure of the questionnaire answer response is a multiple-choice format (multi select or single select), a free text format, or a date. Since multiple choice questions need specific IDs (retrieved in the GET questionnaire requests), a Mapped Values section will need to be created to make sure we are passing the right ID.
The type provided will determine how the answer in the payload will be formatted.
You will define this in the body of the request as single, multi, text, or date.
Sample Integration Center Request: PUT Candidate Request
{% set phone_country_code, phone_country_code_str, phone_national_number = phone_number|extract_phone_number %}
{%- macro questionnare_block(value, order, type, mapname) -%}
{% if type == 'text' -%}
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>{{order}}</wd:Question_Order>
<wd:Answer_Text>{{value|escape}}</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
{% elif type == 'single' -%}
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>{{order}}</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">{{value|mapvalue(mapname)}}</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
{% elif type == 'multi' -%}
{%- set split = value.split(' and ') -%}
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>{{order}}</wd:Question_Order>
{% for split in split -%}
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">{{split|mapvalue(mapname)}}</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
{% endfor -%}
</wd:Questionnaire_Answer_Data>
{% elif type == 'date' -%}
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>{{order}}</wd:Question_Order>
<wd:Answer_Date>{{value | regex_replace('[\D]', '') | int | strftime("%Y-%m-%dT00:00:00")}}</wd:Answer_Date>
</wd:Questionnaire_Answer_Data>
{% endif %}
{%- endmacro -%}
<?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.isu_user}}</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}}</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</env:Header>
<env:Body>
<wd:Put_Candidate_Request xmlns:wd="urn:com.workday/bsvc" wd:Add_Only="true" wd:version="v38.2">
{% if __ex_id_1 -%}
<wd:Candidate_Reference>
<wd:ID wd:type="Candidate_ID">{{__ex_id_1}}</wd:ID>
</wd:Candidate_Reference>
{% endif -%}
<wd:Candidate_Data>
<wd:Name_Data>
<wd:Legal_Name>
<wd:Name_Detail_Data>
<wd:First_Name>{{first_name| unidecode | regex_replace("[^A-Za-z]","")}}</wd:First_Name>
<wd:Last_Name>{{last_name| unidecode | regex_replace("[^A-Za-z]","")}}</wd:Last_Name>
</wd:Name_Detail_Data>
</wd:Legal_Name>
</wd:Name_Data>
<wd:Contact_Data>
<wd:Phone_Device_Type_Reference>
<wd:ID wd:type="Phone_Device_Type_ID">Mobile</wd:ID>
</wd:Phone_Device_Type_Reference>
<wd:Country_Phone_Code_Reference>
<wd:ID wd:type="Country_Phone_Code_ID">{{ [phone_country_code_str, phone_country_code]|join("_") }}</wd:ID>
</wd:Country_Phone_Code_Reference>
<wd:Phone_Number>{{ phone_national_number }}</wd:Phone_Number>
<wd:Email_Address>{{email|escape}}</wd:Email_Address>
</wd:Contact_Data>
<wd:Job_Application_Data>
<wd:Job_Applied_To_Data>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="Job_Requisition_ID">{{__job_req_id}}</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Stage_Reference>
<wd:ID wd:type="Recruiting_Stage_ID">REVIEW</wd:ID>
</wd:Stage_Reference>
<! -- optional to Pass, client may prefer a hardcoded value so they know canidate came through olivia. This field is not free text so the source has to exist in Workday and client has to provide the ID value to pass -->
<wd:Source_Reference>
<wd:ID wd:type="Applicant_Source_ID">Paradox</wd:ID>
</wd:Source_Reference>
<! -- PERSONAL INFORMATION DATA SECTION OPTIONAL - ONLY APPLICABLE IF EEO QUESTIONS WILL BE ASKED. -->
<! -- CLIENT WILL NEED TO PROVIDE IDS / POSSIBLE VALUES that you will need to Map Against Paradox Values -->
{% if (eeo_gender) and (eeo_gender != 'skip') -%}
<wd:Personal_Information_Data>
<wd:Gender_Reference>
<wd:ID wd:type="Gender_Code">{{eeo_gender | mapvalue('eeo_gender')}}</wd:ID> Gender_Code
</wd:Gender_Reference>
<wd:Disability_Status_Reference>
<wd:ID wd:type="Self_Identification_of_Disability_Status_ID">{{eeo_disability_status | mapvalue('eeo_disability')}}</wd:ID>
</wd:Disability_Status_Reference>
<wd:Veterans_Status_Reference>
<wd:ID wd:type="Armed_Forces_Status_ID">{{eeo_veteran_status | mapvalue('eeo_veteran')}}</wd:ID>
</wd:Veterans_Status_Reference>
<wd:Ethnicity_Reference>
<wd:ID wd:type="Ethnicity_ID">{{eeo_race | mapvalue('eeo_race')}}</wd:ID>
</wd:Ethnicity_Reference>
{% if eeo_ethnicity == 'Hispanic or Latino' -%}
<wd:Hispanic_or_Latino>true</wd:Hispanic_or_Latino>
{% else -%}
<wd:Hispanic_or_Latino>false</wd:Hispanic_or_Latino>
{% endif %}
</wd:Personal_Information_Data>
{% elif eeo_gender == 'skip' -%}
<wd:Personal_Information_Data>
<wd:Gender_Reference>
<wd:ID wd:type="Gender_Code">Not_Declared</wd:ID> Gender_Code
</wd:Gender_Reference>
<wd:Disability_Status_Reference>
<wd:ID wd:type="Self_Identification_of_Disability_Status_ID">DECLINE_REV_2023</wd:ID>
</wd:Disability_Status_Reference>
<wd:Veterans_Status_Reference>
<wd:ID wd:type="Armed_Forces_Status_ID">I_DO_NOT_WISH_TO_SELFIDENTIFY</wd:ID>
</wd:Veterans_Status_Reference>
<wd:Ethnicity_Reference>
<wd:ID wd:type="Ethnicity_ID">Not_Specified</wd:ID>
</wd:Ethnicity_Reference>
<wd:Hispanic_or_Latino>false</wd:Hispanic_or_Latino>
</wd:Personal_Information_Data>
{% endif -%}
</wd:Job_Applied_To_Data>
{% if __long_id|get_resume_filename -%}
<wd:Resume_Attachment_Data>
<wd:Filename>{{__long_id|get_resume_filename}}</wd:Filename>
<wd:File_Content>{{__long_id|get_base64_resume_content}}</wd:File_Content>
</wd:Resume_Attachment_Data>
{% endif -%}
<wd:Resume_Data>
<wd:Questionnaire_Response_Data>
<!-- BUILD AS MANY elif conditions as needed to account for your different Questionnaires -->
{% if __job_feed_data.FIELD-MAPPED-TO-QUESTIONNAIRE == 'QUESTIONNAIRE-1' -%}
<wd:Response_Data>
<wd:Questionnaire_Reference>
<wd:ID wd:type="Questionnaire_ID">__job_feed_data.FIELD-MAPPED-TO-QUESTIONNAIRE</wd:ID>
</wd:Questionnaire_Reference>
{{ questionnare_block(pqus_interested_location, 'a', 'multi','PQUS Interested Location') }}
{{ questionnare_block(pqus_work_eligibility_18, 'b', 'single','PQUS Work Eligibility 18+') }}
{{ questionnare_block(pqus_work_eligibility_part_2, 'c', 'single','PQUS Work Eligibility Part 2') }}
{{ questionnare_block(pqus_relatives, 'd', 'single','PQUS Relatives') }}
{% if pqus_relatives_follow_up -%}
{{ questionnare_block(pqus_relatives_follow_up, 'd.a', 'text') }}
{% endif -%}
{{ questionnare_block(wd_grad_date, 'e', 'date') }}
</wd:Response_Data>
{% elif __job_feed_data.FIELD-MAPPED-TO-QUESTIONNAIRE == 'QUESTIONNAIRE-2' -%}
<wd:Response_Data>
<wd:Questionnaire_Reference>
<wd:ID wd:type="Questionnaire_ID">__job_feed_data.FIELD-MAPPED-TO-QUESTIONNAIRE</wd:ID>
</wd:Questionnaire_Reference>
{{ questionnare_block(pqus_interested_location, 'a', 'multi','PQUS Interested Location') }}
{{ questionnare_block(pqus_work_eligibility_18, 'b', 'single','PQUS Work Eligibility 18+') }}
</wd:Response_Data>
{% endif -%}
</wd:Questionnaire_Response_Data>
<!-- Only Need to Repeat this Section if you have Secondary Questionnaires -->
<!-- BUILD AS MANY elif conditions as needed to account for your different Questionnaires -->
{% if __job_feed_data.FIELD-MAPPED-TO-SECONDARY-QUESTIONNAIRE -%}
<wd:Questionnaire_Response_Data>
{% if __job_feed_data.FIELD-MAPPED-TO-SECONDARY-QUESTIONNAIRE == 'SECONDARY-1' -%}
<wd:Response_Data>
<wd:Questionnaire_Reference>
<wd:ID wd:type="Questionnaire_ID">__job_feed_data.FIELD-MAPPED-TO-SECONDARY-QUESTIONNAIRE</wd:ID>
</wd:Questionnaire_Reference>
{{ questionnare_block(sqcca_high_school_diploma, 'a', 'single','SQCCA High School Diploma') }}
{{ questionnare_block(sqcca_customer_service_experience_explained, 'b', 'text') }}
</wd:Response_Data>
{% endif -%}
</wd:Questionnaire_Response_Data>
{% endif -%}
</wd:Resume_Data>
</wd:Job_Application_Data>
</wd:Candidate_Data>
</wd:Put_Candidate_Request>
</env:Body>
</env:Envelope>
Sample Request with data filled out
<?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>******</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>
</env:Header>
<env:Body>
<wd:Put_Candidate_Request xmlns:wd="urn:com.workday/bsvc" wd:Add_Only="true" wd:version="v36.0">
<wd:Candidate_Data>
<wd:Name_Data>
<wd:Legal_Name>
<wd:Name_Detail_Data>
<wd:First_Name>Cory</wd:First_Name>
<wd:Last_Name>Test</wd:Last_Name>
</wd:Name_Detail_Data>
</wd:Legal_Name>
</wd:Name_Data>
<wd:Contact_Data>
<wd:Phone_Device_Type_Reference>
<wd:ID wd:type="Phone_Device_Type_ID">Mobile</wd:ID>
</wd:Phone_Device_Type_Reference>
<wd:Country_Phone_Code_Reference>
<wd:ID wd:type="Country_Phone_Code_ID">USA_1</wd:ID>
</wd:Country_Phone_Code_Reference>
<wd:Phone_Number>5059199833</wd:Phone_Number>
<wd:Email_Address>julia+1123@paradox.ai</wd:Email_Address>
</wd:Contact_Data>
<wd:Job_Application_Data>
<wd:Job_Applied_To_Data>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="Job_Requisition_ID">JR-1033</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Stage_Reference>
<wd:ID wd:type="Recruiting_Stage_ID">REVIEW</wd:ID>
</wd:Stage_Reference>
<wd:Source_Reference>
<wd:ID wd:type="Applicant_Source_ID">ZipRecruiter</wd:ID>
</wd:Source_Reference>
</wd:Job_Applied_To_Data>
<wd:Resume_Data>
<wd:Questionnaire_Response_Data>
<wd:Response_Data>
<wd:Questionnaire_Reference>
<wd:ID wd:type="Questionnaire_ID">HVAC/Service Tech</wd:ID>
</wd:Questionnaire_Reference>
<!-- Question: Text Consent -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>a</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes - I would like to receive text messages. (Application - Text Message Consent)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: Previous Worker -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>b</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes (Application - Previous Worker)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: Previous Jobs - Reason for Leaving -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>c</wd:Question_Order>
<wd:Answer_Text>Job was too cool</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC - Age Minimum -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>d</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes (HVAC - Age Minimum (18))</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: Crew - Relative -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>e</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">No (Crew - Relative)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Conditional Question: Crew - Relative
-->
<!-- Question: HVAC - Swearing at Work -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>f</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">No (HVAC - Swearing at Work)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC - Under the Influence -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>g</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes (HVAC - Under the Influence)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: Background Check - Felony -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>h</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">No (Background Check - Felony)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Conditional Question: Background Check - Felony Details
-->
<!-- Question: HVAC - Drug Screen -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>i</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes (HVAC - Drug Screen)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC - Behavior -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>j</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes (HVAC - Behavior)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC - Alcohol -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>k</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes (HVAC - Alcohol)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: Previous Crew - Start Date -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>l</wd:Question_Order>
<wd:Answer_Text>Tomorrow</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
<!-- Question: Previous Crew - HVAC Experience -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>m</wd:Question_Order>
<wd:Answer_Text>all of the experience</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
<!-- Question: Management - References -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>n</wd:Question_Order>
<wd:Answer_Text>none</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC Troubleshooting and Repair -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>o</wd:Question_Order>
<wd:Answer_Text>repair</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
<!-- Question: Applicant Serial Number -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>p</wd:Question_Order>
<wd:Answer_Text>repair</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
</wd:Response_Data>
</wd:Questionnaire_Response_Data>
<wd:Questionnaire_Response_Data>
<wd:Response_Data>
<wd:Questionnaire_Reference>
<wd:ID wd:type="Questionnaire_ID">HVAC - Ranking</wd:ID>
</wd:Questionnaire_Reference>
<!-- Question: HVAC - Salary Requirements -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>a</wd:Question_Order>
<wd:Answer_Text>$40,000</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC - Hours -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>b</wd:Question_Order>
<wd:Answer_Text>40</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC - Driver's License -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>c</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes (HVAC - Driver's License)</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC - EPA Refrigerant Handling -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>d</wd:Question_Order>
<wd:Answer_Text>Yes</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
<!-- Question: HVAC - Location -->
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>e</wd:Question_Order>
<wd:Answer_Text>Yes</wd:Answer_Text>
</wd:Questionnaire_Answer_Data>
</wd:Response_Data>
</wd:Questionnaire_Response_Data>
</wd:Resume_Data>
</wd:Job_Application_Data>
</wd:Candidate_Data>
</wd:Put_Candidate_Request>
</env:Body>
</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:Put_Candidate_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v36.0">
<wd:Candidate_Reference>
<wd:ID wd:type="WID">4423ae209be9818fb391751ab4018d1c</wd:ID>
<wd:ID wd:type="Candidate_ID">C-495</wd:ID>
</wd:Candidate_Reference>
<wd:Candidate_Job_Application_Data>
<wd:Job_Application_Reference>
<wd:ID wd:type="WID">4423ae209be981248b52771ab401961c</wd:ID>
<wd:ID wd:type="Job_Application_ID">JOB_APPLICATION-6-2282</wd:ID>
</wd:Job_Application_Reference>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="WID">f37fb423803501ec2c42574e70014002</wd:ID>
<wd:ID wd:type="Job_Requisition_ID">JR-1033</wd:ID>
</wd:Job_Requisition_Reference>
</wd:Candidate_Job_Application_Data>
</wd:Put_Candidate_Response>
</env:Body>
</env:Envelope>
Response data that should be saved:
-
__ex_id_1and__application_idare standard Paradox system attributes. -
workday_widwould be a custom attribute.
Key changes:
-
workday_wid:4423ae209be9818fb391751ab4018d1c(this is the candidate’s long workday Candidate ID) -
__ex_id_1:C-495(this is the candidate’s short workday Candidate ID) -
__application_id:JOB_APPLICATION-6-2282(this is the candidate’s job application ID)
Response mapping:
ex_id: $.env:Envelope.env:Body.wd:Put_Candidate_Response.wd:Candidate_Reference.wd:ID[$.@wd:type=>"Candidate_ID"].#text
-
application_id:
$.env:Envelope.env:Body.wd:Put_Candidate_Response.wd:Candidate_Job_Application_Data.wd:Job_Application_Reference.wd:ID[$.@wd:type=>"Job_Application_ID"].#text -
=get_wd_app_id_by_reqid($.env:Envelope.env:Body.wd:Put_Candidate_Response, #__job_req_id)-
Note:
Application_idwill need two responses saved.
-
Note:
GET Questionnaires
This request is made to get the details about a requisitions questionnaire(s). These are essentially the application questions for the position.
This can be helpful for troubleshooting during build/testing. This endpoint only provides IDs , so cannot be used to build a dynamic chat to apply experience.
Requirements:
- The client should add the requisition questionnaire IDs to the job feed so we know what questionnaires to send in the request. Clients can have multiple questionnaires per requisition.
- The client needs to give the Paradox ISU access to the Questionnaire Domain.
Callouts:
If you place the below code into the Tests tab in Postman, it will reformat the GET questionnaire response to a more consumable format to help with implementation. The updated format will be under Console.
Code
var jsonObject = xml2Json(responseBody);
var q = jsonObject
['env:Envelope']
['env:Body']
['wd:Get_Questionnaires_Response']
['wd:Response_Data']
['wd:Questionnaire']
['wd:Questionnaire_Data'];
var q_id = q['wd:Questionnaire_ID'];
var questions = q['wd:Questions_for_Questionnaire_Data'].map(item => ({
question: item['wd:Question_Setup_Reference']['wd:ID'][1]._,
order: item['wd:Order'],
choices: (item['wd:Score_for_Question_Multiple_Choice_Answers'] || []).map(a => a['wd:Question_Multiple_Choice_Answer_Reference']['wd:ID'][1]._)
}));
console.log(JSON.stringify({q_id, questions }, null, 2));Console Data reformatted
{
"q_id": "Management Ranking - Hardee's and Highway Diner",
"questions": [
{
"question": "Management Ranking - Manager Experience",
"order": "a",
"choices": [
"2 or more years (Management Ranking - Manager Experience)",
"Less than one year (Management Ranking - Manager Experience)",
"None (Management Ranking - Manager Experience)"
]
},
{
"question": "Management Ranking - Restaurant Manager Experience",
"order": "b",
"choices": [
"2 or more years (Management Ranking - Restaurant Manager Experience)",
"Less than one year (Management Ranking - Restaurant Manager Experience)",
"None (Management Ranking - Restaurant Manager Experience)"
]
},
{
"question": "Management Ranking - Driver's License",
"order": "c",
"choices": [
"Yes, I have an active valid driver's license. (Management Ranking - Driver's License)",
"No my license is currently suspended or revoked. (Management Ranking - Driver's License)",
"I do not have a valid driver's license. (Management Ranking - Driver's License)"
]
},
{
"question": "Management Ranking - Salary Requirements",
"order": "d",
"choices": [
"$20,000 - $30,000 (Management Ranking - Salary Requirements)",
"$31,000 - $40,000 (Management Ranking - Salary Requirements)",
"$41,000 - $50,000 (Management Ranking - Salary Requirements)",
"$50,000 or Above (Management Ranking - Salary Requirements)"
]
},
{
"question": "Management Ranking - Availability",
"order": "e",
"choices": [
"Any shift any day (Management Ranking - Availability)",
"Not available any shift any day (Management Ranking - Availability)",
"Not available to work weekends (Management Ranking - Availability)"
]
}
]
}Sample request: GET Questionnaire request
<?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>********</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>
</env:Header>
<env:Body>
<wd:Get_Questionnaires_Request xmlns:wd="urn:com.workday/bsvc" wd:version="v36.2">
<wd:Request_References>
<wd:Questionnaire_Reference>
<wd:ID wd:type="Questionnaire_ID">HVAC/Service Tech</wd:ID>
</wd:Questionnaire_Reference>
</wd:Request_References>
</wd:Get_Questionnaires_Request>
</env:Body>
</env:Envelope>Sample success response: GET Questionnaire response
<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<wd:Get_Questionnaires_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v36.2">
<wd:Request_References>
<wd:Questionnaire_Reference>
<wd:ID wd:type="WID">bc133eecccdf0137335890e5fd019606</wd:ID>
<wd:ID wd:type="Questionnaire_ID">HVAC/Service Tech</wd:ID>
</wd:Questionnaire_Reference>
</wd:Request_References>
<wd:Response_Results>
<wd:Total_Results>1</wd:Total_Results>
<wd:Total_Pages>1</wd:Total_Pages>
<wd:Page_Results>1</wd:Page_Results>
<wd:Page>1</wd:Page>
</wd:Response_Results>
<wd:Response_Data>
<wd:Questionnaire>
<wd:Questionnaire_Reference>
<wd:ID wd:type="WID">bc133eecccdf0137335890e5fd019606</wd:ID>
<wd:ID wd:type="Questionnaire_ID">HVAC/Service Tech</wd:ID>
</wd:Questionnaire_Reference>
<wd:Questionnaire_Data>
<wd:Questionnaire_ID>HVAC/Service Tech</wd:Questionnaire_ID>
<wd:Questionnaire_Name>HVAC/Service Tech Updated</wd:Questionnaire_Name>
<wd:Questionnaire_Type_Reference>
<wd:ID wd:type="WID">083f23d396dd1000034a88b6acda0046</wd:ID>
<wd:ID wd:type="Questionnaire_Type_ID">RECRUITING</wd:ID>
</wd:Questionnaire_Type_Reference>
<wd:Inactive>0</wd:Inactive>
<wd:Questions_for_Questionnaire_Data>
<wd:Question_Setup_Reference>
<wd:ID wd:type="WID">a2b8c9558c7e01d185b908c9c0002303</wd:ID>
<wd:ID wd:type="Question_Setup_ID">Application - Text Message Consent</wd:ID>
</wd:Question_Setup_Reference>
<wd:Order>a</wd:Order>
<wd:Required>0</wd:Required>
<wd:Score_for_Question_Multiple_Choice_Answers>
<wd:Question_Multiple_Choice_Answer_Reference>
<wd:ID wd:type="WID">a2b8c9558c7e01cfb12509c9c0002603</wd:ID>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes - I would like to receive text messages. (Application - Text Message Consent)</wd:ID>
</wd:Question_Multiple_Choice_Answer_Reference>
<wd:Score>0</wd:Score>
</wd:Score_for_Question_Multiple_Choice_Answers>
<wd:Score_for_Question_Multiple_Choice_Answers>
<wd:Question_Multiple_Choice_Answer_Reference>
<wd:ID wd:type="WID">a2b8c9558c7e01db003c09c9c0002903</wd:ID>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">No - I do not want to receive text messages. (Application - Text Message Consent)</wd:ID>
</wd:Question_Multiple_Choice_Answer_Reference>
<wd:Score>0</wd:Score>
</wd:Score_for_Question_Multiple_Choice_Answers>
</wd:Questions_for_Questionnaire_Data>
<wd:Questions_for_Questionnaire_Data>
<wd:Question_Setup_Reference>
<wd:ID wd:type="WID">bc133eecccdf01b9b29f81af02028e07</wd:ID>
<wd:ID wd:type="Question_Setup_ID">Application - Previous Worker</wd:ID>
</wd:Question_Setup_Reference>
<wd:Order>b</wd:Order>
<wd:Required>0</wd:Required>
<wd:Score_for_Question_Multiple_Choice_Answers>
<wd:Question_Multiple_Choice_Answer_Reference>
<wd:ID wd:type="WID">bc133eecccdf01cfefcf81af02028f07</wd:ID>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">Yes (Application - Previous Worker)</wd:ID>
</wd:Question_Multiple_Choice_Answer_Reference>
<wd:Score>0</wd:Score>
</wd:Score_for_Question_Multiple_Choice_Answers>
<wd:Score_for_Question_Multiple_Choice_Answers>
<wd:Question_Multiple_Choice_Answer_Reference>
<wd:ID wd:type="WID">bc133eecccdf01ea45fb81af02029007</wd:ID>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">No (Application - Previous Worker)</wd:ID>
</wd:Question_Multiple_Choice_Answer_Reference>
<wd:Score>0</wd:Score>
</wd:Score_for_Question_Multiple_Choice_Answers>
</wd:Questions_for_Questionnaire_Data>
<wd:Questions_for_Questionnaire_Data>
<wd:Question_Setup_Reference>
<wd:ID wd:type="WID">a2b8c9558c7e0197563529c9c0007104</wd:ID>
<wd:ID wd:type="Question_Setup_ID">Previous Jobs - Reason for Leaving</wd:ID>
</wd:Question_Setup_Reference>
<wd:Order>c</wd:Order>
<wd:Required>0</wd:Required>
</wd:Questions_for_Questionnaire_Data>
</wd:Questionnaire_Data>
</wd:Questionnaire>
</wd:Response_Data>
</wd:Get_Questionnaires_Response>
</env:Body>
</env:Envelope>Workday Dynamic Chat to Apply additions to create a candidate
This section explores the different objects and fields that you can add onto the out of the box Integration. Please use this postman collection as a helpful resource to see all available fields and the full structure of Put_Candidate Web Service.
EEO data
EEO data that we will pass in the integration must come from the Workday tenant, as it is not a free text field. Gathering this from the client is recommended as it can be a nice intro to discuss what EEO data should be collected during the application process. Alternatively, you can use Get_References request below to get all possible reference ID’s from the clients Tenant
Get References Request
<env:Body>
<wd:Get_References_Request wd:version="v38.0">
<wd:Request_Criteria>
<wd:Reference_ID_Type>Ethnicity_ID</wd:Reference_ID_Type>
</wd:Request_Criteria>
</wd:Get_References_Request>
</env:Body>EEO Data
<wd:Personal_Information_Data>
<wd:Gender_Reference>
<wd:ID wd:type="Gender_Code">{{Attribute}}</wd:ID>
</wd:Gender_Reference>
<wd:Ethnicity_Reference>
<wd:ID wd:type="Ethnicity_ID">{{Attribute}}</wd:ID>
</wd:Ethnicity_Reference>
<wd:Veterans_Status_Reference>
<wd:ID wd:type="Armed_Forces_Status_ID">{{Attribute}}</wd:ID>
</wd:Veterans_Status_Reference>
<wd:Disability_Status_Reference>
<wd:ID wd:type="Self_Identification_of_Disability_Status_ID">{{Attribute}}</wd:ID>
</wd:Disability_Status_Reference>
</wd:Personal_Information_Data>
Work experience
Some clients may want/require previous work experience to be passed to Workday when we create the candidate in their tenant. The PUT Candidate WS accepts multiple Experience_Data object, so if the candidate provides multiple experiences, you can repeat the Experience_Data instance below
Work Experience Section (Single Instance)
<wd:Experience_Data>
<wd:Company_Name>{{Attribute}}</wd:Company_Name>
<wd:Title>{{Attribute}}</wd:Title>
<wd:Location>{{Attribute}}</wd:Location>
<wd:Start_Month>{{Attribute}}</wd:Start_Month>
<wd:Start_Year>{{Attribute}}</wd:Start_Year>
<wd:Currently_Work_Here>{{Attribute}}</wd:Currently_Work_Here>
<wd:Description>{{Attribute}}</wd:Description>
</wd:Experience_Data>Work Experience Section (Multi-Instance)
<wd:Experience_Data>
<wd:Company_Name>{{Attribute}}</wd:Company_Name>
<wd:Title>{{Attribute}}</wd:Title>
<wd:Location>{{Attribute}}</wd:Location>
<wd:Start_Month>{{Attribute}}</wd:Start_Month>
<wd:Start_Year>{{Attribute}}</wd:Start_Year>
<wd:Currently_Work_Here>{{Attribute}}</wd:Currently_Work_Here>
<wd:Description>{{Attribute}}</wd:Description>
</wd:Experience_Data>
{% if exp_company_2 %}
<wd:Experience_Data>
<wd:Company_Name>{{exp_company_2}}</wd:Company_Name>
<wd:Title>{{Attribute}}</wd:Title>
<wd:Location>{{Attribute}}</wd:Location>
<wd:Start_Month>{{Attribute}}</wd:Start_Month>
<wd:Start_Year>{{Attribute}}</wd:Start_Year>
<wd:Currently_Work_Here>{{Attribute}}</wd:Currently_Work_Here>
<wd:Description>{{Attribute}}</wd:Description>
</wd:Experience_Data>
{% endif %}Test integration
If you would like to test out Workday's dynamic Chat to Apply integration, the CEM account Jimmy has it configured in Olivia Staging. It is connected to our Workday Test Tenant. You can also leverage this account to view the request/response logic and mappings within Productized Integration logs inside of the Integration Center.
If you would like to explore in more detail the different API calls that are made as part of the productized integration please review the Postman Collection below.
Workday Dynamic Chat to Apply – Postman Collection
{
"info": {
"_postman_id": "e0f31942-0a4d-4fa1-b775-1e078643d36b",
"name": "Workday Dynamic Chat to Apply",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "32638840"
},
"item": [
{
"name": "SOAP",
"item": [
{
"name": "GET Job Postings (Req)",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<env:Envelope xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\"\n xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n <env:Header>\n <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\n <wsse:UsernameToken>\n <wsse:Username>ISU_ParadoxWDIntegration@paradox_dpt1</wsse:Username>\n <wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">Pdx~202109_wd!itg01</wsse:Password>\n </wsse:UsernameToken>\n </wsse:Security>\n </env:Header>\n <env:Body>\n <wd:Get_Job_Postings_Request xmlns:wd=\"urn:com.workday/bsvc\" wd:version=\"v41.0\">\n <wd:Request_Criteria>\n <wd:Job_Requisition_Reference>\n <wd:ID wd:type=\"Job_Requisition_ID\">R-00477</wd:ID>\n </wd:Job_Requisition_Reference>\n <wd:Show_Only_Active_Job_Postings>1</wd:Show_Only_Active_Job_Postings>\n <wd:Show_Only_External_Job_Postings>1</wd:Show_Only_External_Job_Postings>\n </wd:Request_Criteria>\n </wd:Get_Job_Postings_Request>\n </env:Body>\n</env:Envelope>",
"options": {
"raw": {
"language": "xml"
}
}
},
"url": {
"raw": "https://wd2-impl-services1.workday.com/ccx/service/paradox_dpt1/Recruiting/v38.0",
"protocol": "https",
"host": [
"wd2-impl-services1",
"workday",
"com"
],
"path": [
"ccx",
"service",
"paradox_dpt1",
"Recruiting",
"v38.0"
]
}
},
"response": []
},
{
"name": "GET Candidates",
"event": [
{
"listen": "prerequest",
"script": {
"exec": [
""
],
"type": "text/javascript"
}
}
],
"protocolProfileBehavior": {
"disabledSystemHeaders": {}
},
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "SOAPAction",
"value": "\"#GET\"",
"type": "text",
"disabled": true
},
{
"key": "Content-Type",
"value": "text/xml",
"type": "text",
"disabled": true
}
],
"body": {
"mode": "raw",
"raw": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<env:Envelope xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\"\n xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n <env:Header>\n <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\n <wsse:UsernameToken>\n <wsse:Username>ISU_ParadoxWDIntegration@paradox_dpt1</wsse:Username>\n <wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">Pdx~202109_wd!itg01</wsse:Password>\n </wsse:UsernameToken>\n </wsse:Security>\n </env:Header>\n <env:Body>\n <wd:Get_Candidates_Request xmlns:wd=\"urn:com.workday/bsvc\" wd:version=\"v38.0\">\n <wd:Request_Criteria>\n <wd:Applicant_Source_Reference>\n <wd:ID wd:type=\"Applicant_Source_ID\">APPLICANT_SOURCE-6-40</wd:ID>\n </wd:Applicant_Source_Reference>\n <wd:Job_Requisition_Reference>\n <wd:ID wd:type=\"Job_Requisition_ID\">R-00015</wd:ID>\n </wd:Job_Requisition_Reference>\n <wd:Candidate_Email_Address>drew.fuller+wdcapturedemo09@paradox.ai</wd:Candidate_Email_Address>\n </wd:Request_Criteria>\n <wd:Response_Group>\n <wd:Exclude_All_Attachments>false</wd:Exclude_All_Attachments>\n </wd:Response_Group>\n </wd:Get_Candidates_Request>\n </env:Body>\n</env:Envelope>",
"options": {
"raw": {
"language": "xml"
}
}
},
"url": {
"raw": "https://wd2-impl-services1.workday.com/ccx/service/paradox_dpt1/Recruiting/v38.0",
"protocol": "https",
"host": [
"wd2-impl-services1",
"workday",
"com"
],
"path": [
"ccx",
"service",
"paradox_dpt1",
"Recruiting",
"v38.0"
]
}
},
"response": []
},
{
"name": "PUT Candidate",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<env:Envelope xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\"\n xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n <env:Header>\n <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\n <wsse:UsernameToken>\n <wsse:Username>ISU_ParadoxWDIntegration@paradox_dpt1</wsse:Username>\n <wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">Pdx~202109_wd!itg01</wsse:Password>\n </wsse:UsernameToken>\n </wsse:Security>\n </env:Header>\n\t<env:Body>\n <wd:Put_Candidate_Request xmlns:wd=\"urn:com.workday/bsvc\" wd:Add_Only=\"true\" wd:version=\"v38.0\">\n <wd:Candidate_Data>\n <wd:Name_Data>\n <wd:Legal_Name>\n <wd:Name_Detail_Data>\n <wd:First_Name>James</wd:First_Name>\n <wd:Middle_Name></wd:Middle_Name>\n <wd:Last_Name>Flowerstest</wd:Last_Name>\n </wd:Name_Detail_Data>\n </wd:Legal_Name>\n </wd:Name_Data>\n <wd:Contact_Data>\n \t<wd:Phone_Device_Type_Reference>\n <wd:ID wd:type=\"Phone_Device_Type_ID\">Mobile</wd:ID>\n </wd:Phone_Device_Type_Reference>\n <wd:Country_Phone_Code_Reference>\n <wd:ID wd:type=\"Country_Phone_Code_ID\">USA_1</wd:ID>\n </wd:Country_Phone_Code_Reference>\n <wd:Phone_Number>4802871799</wd:Phone_Number>\n\t\t\t\t\t<wd:Email_Address>james.flowers+112@paradox.ai</wd:Email_Address>\n </wd:Contact_Data>\n <wd:Job_Application_Data>\n <wd:Job_Applied_To_Data>\n <wd:Job_Requisition_Reference>\n <wd:ID wd:type=\"Job_Requisition_ID\">R-00015</wd:ID>\n </wd:Job_Requisition_Reference>\n <wd:Stage_Reference>\n <wd:ID wd:type=\"Recruiting_Stage_ID\">REVIEW</wd:ID>\n </wd:Stage_Reference>\n <wd:Source_Reference>\n <wd:ID wd:type=\"Applicant_Source_ID\">APPLICANT_SOURCE-6-40</wd:ID>\n </wd:Source_Reference>\n </wd:Job_Applied_To_Data>\n <wd:Resume_Data>\n <wd:Summary>Paradox Testing Summary Field</wd:Summary>\n <wd:Questionnaire_Response_Data>\n <wd:Response_Data>\n <wd:Questionnaire_Reference>\n <wd:ID wd:type=\"WID\">c81416c97633106649aa4ec8d11b2820</wd:ID>\n </wd:Questionnaire_Reference>\n <wd:Questionnaire_Answer_Data>\n <wd:Question_Order>a</wd:Question_Order>\n <wd:Multiple_Choice_Answer_Data>\n <wd:Multiple_Choice_Answer_Reference>\n <wd:ID wd:type=\"WID\">0ffbba5c9ec310648664f5bbc1b307ce</wd:ID>\n </wd:Multiple_Choice_Answer_Reference>\n </wd:Multiple_Choice_Answer_Data>\n </wd:Questionnaire_Answer_Data>\n <wd:Questionnaire_Answer_Data>\n <wd:Question_Order>b</wd:Question_Order>\n <wd:Multiple_Choice_Answer_Data>\n <wd:Multiple_Choice_Answer_Reference>\n <wd:ID wd:type=\"WID\">6f18602ceddc100f1a1565952bec18d4</wd:ID>\n </wd:Multiple_Choice_Answer_Reference>\n </wd:Multiple_Choice_Answer_Data>\n </wd:Questionnaire_Answer_Data>\n </wd:Response_Data>\n </wd:Questionnaire_Response_Data>\n\t\t\t\t\t </wd:Resume_Data>\n </wd:Job_Application_Data>\n </wd:Candidate_Data>\n </wd:Put_Candidate_Request>\n </env:Body>\n</env:Envelope>",
"options": {
"raw": {
"language": "xml"
}
}
},
"url": {
"raw": "https://wd2-impl-services1.workday.com/ccx/service/paradox_dpt1/Recruiting/v38.0",
"protocol": "https",
"host": [
"wd2-impl-services1",
"workday",
"com"
],
"path": [
"ccx",
"service",
"paradox_dpt1",
"Recruiting",
"v38.0"
]
}
},
"response": []
},
{
"name": "MOVE Candidate",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<env:Envelope xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\"\n xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n <env:Header>\n <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">\n <wsse:UsernameToken>\n <wsse:Username>ISU_ParadoxWDIntegration@paradox_dpt1</wsse:Username>\n <wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">Pdx~202109_wd!itg01</wsse:Password>\n </wsse:UsernameToken>\n </wsse:Security>\n </env:Header>\n\t<env:Body>\n <wd:Move_Candidate_Request xmlns:wd=\"urn:com.workday/bsvc\">\n <wd:Dynamic_Business_Process_Parameters>\n <wd:Next_Step_Reference>\n \t<wd:ID wd:type=\"Workflow_Step_ID\">JOB_APPLICATION_FOR_GLOBAL_MODERN_SERVICES_STEP_F_INTERVIEW_ACTION</wd:ID>\n </wd:Next_Step_Reference>\n </wd:Dynamic_Business_Process_Parameters>\n <wd:Move_Candidate_Data>\n <wd:Job_Application_Reference>\n <wd:ID wd:type=\"Job_Application_ID\">JOB_APPLICATION-6-2946</wd:ID>\n </wd:Job_Application_Reference>\n </wd:Move_Candidate_Data>\n </wd:Move_Candidate_Request>\n </env:Body>\n</env:Envelope>",
"options": {
"raw": {
"language": "xml"
}
}
},
"url": {
"raw": "https://wd2-impl-services1.workday.com/ccx/service/paradox_dpt1/Recruiting/v38.0",
"protocol": "https",
"host": [
"wd2-impl-services1",
"workday",
"com"
],
"path": [
"ccx",
"service",
"paradox_dpt1",
"Recruiting",
"v38.0"
]
}
},
"response": []
}
]
},
{
"name": "REST",
"item": [
{
"name": "AUTH",
"item": [
{
"name": "Workday OAuth Token (ISU)",
"event": [
{
"listen": "test",
"script": {
"exec": [
"// Set the new auth token in the environment variable",
"pm.test(\"Retreived Access Token\", function () {",
" const { access_token } = pm.response.json() || {};",
" pm.expect(access_token).to.be.a('string');",
" pm.collectionVariables.set(\"access_token\", access_token);",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"exec": [],
"type": "text/javascript"
}
}
],
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"auth": {
"type": "noauth"
},
"method": "GET",
"header": [],
"body": {
"mode": "urlencoded",
"urlencoded": [
{
"key": "client_id",
"value": "{{client_id_rest}}",
"type": "text"
},
{
"key": "client_secret",
"value": "{{client_secret_rest}}",
"type": "text"
},
{
"key": "grant_type",
"value": "refresh_token",
"type": "text"
},
{
"key": "refresh_token",
"value": "{{refesh_token_ISUrest}}",
"type": "text"
}
]
},
"url": {
"raw": "https://wd2-impl-services1.workday.com/ccx/oauth2/paradox_dpt1/token",
"protocol": "https",
"host": [
"wd2-impl-services1",
"workday",
"com"
],
"path": [
"ccx",
"oauth2",
"paradox_dpt1",
"token"
]
}
},
"response": []
}
]
},
{
"name": "Chat To Apply",
"item": [
{
"name": "Job Posting (Rest) SINGLE",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3/paradox_dpt1/jobPostings?jobPosting=cf04954a81b510355f09813e53eb0001",
"protocol": "https",
"host": [
"wd2-impl-services1",
"workday",
"com"
],
"path": [
"ccx",
"api",
"recruiting",
"v3",
"paradox_dpt1",
"jobPostings"
],
"query": [
{
"key": "jobPosting",
"value": "cf04954a81b510355f09813e53eb0001"
}
]
}
},
"response": []
},
{
"name": "Job Posting Questionnaire (Rest)",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3/paradox_dpt1/jobPostings/124ca08c9d8e100203b55e26011f0000/questionnaire",
"protocol": "https",
"host": [
"wd2-impl-services1",
"workday",
"com"
],
"path": [
"ccx",
"api",
"recruiting",
"v3",
"paradox_dpt1",
"jobPostings",
"124ca08c9d8e100203b55e26011f0000",
"questionnaire"
]
}
},
"response": []
},
{
"name": "Job Posting (Rest) ALL",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3/paradox_dpt1/jobPostings",
"protocol": "https",
"host": [
"wd2-impl-services1",
"workday",
"com"
],
"path": [
"ccx",
"api",
"recruiting",
"v3",
"paradox_dpt1",
"jobPostings"
]
}
},
"response": []
}
]
}
]
}
],
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
""
]
}
}
],
"variable": [
{
"key": "client_id_rest",
"value": "MTY0M2JhZTgtZTkxZi00MWYzLWE1YWEtYjdhYTk1NDA1OWE4",
"type": "string"
},
{
"key": "client_secret_rest",
"value": "12z6z2y52jcaa96r44gogc8l99gqvnf7xsjs5m18pvtge3dtk6sjeo5dg18eu18k0mqhx2inlxrplalcpvi0z9ra1j2vjb5208ny",
"type": "string"
},
{
"key": "refresh_token_rest",
"value": "yx7a1irmg1f5gkckqh0u8ajyeq7do7m0natrmispzdtjkkua2gcqc9lfuxcex3syc10cyhsr3knb9rh1m1kcb6su1oj5knnr8tn",
"type": "string"
},
{
"key": "client_id_rest_client",
"value": "OWUzMGRkNmYtZGQ1YS00YWNlLTkzODItYzg3YjRjMTczMzll",
"type": "string"
},
{
"key": "client_secret_rest_client",
"value": "8fr1lsxqemyu7u4nbvmyf1jx1z1nxyr68xyfkr7g9jq1lsrxv90pxnknntrf37s6z25r2swgkitmfpt2948s5k3n5t7baj3z2hl",
"type": "string"
},
{
"key": "refesh_token_ISUrest",
"value": "fqnp0a3z7we661ianfgccug42m2noli1kwbrnfwaeufs31wlf8jtxkx9n79q90h5nrbx6hhlrd8uaibo7iu6r2btrb8i1xiiuaj",
"type": "string"
},
{
"key": "access_token",
"value": "",
"type": "string"
}
]
}Demo tenant
By visiting this link, you can invoke Job Search and go through Chat to Apply for 3 of the jobs that are returned in the result set.
-
Note: As of the last update, only the following jobs are configured for Chat to Apply:
- Web Content Manager
- Forklift Operator (will auto-schedule a 60 min in person interview if answer is Yes to application questions or will move the candidate to review if answer is No to the application questions)
- Manufacturing Supervisor
- Customer Service Representative (includes EEO questions and will auto-schedule a 30 min virtual with Round Robin Group if answer is Yes to age 18 question)
- Regional Sales Manager (resume is required, not optional)
- Director of Finance (will link out to Workday to apply; the conversation will ask for basic contact information and then the application-specific questions)
Technical details
The integration for this just makes a PUT Candidate API call to Workday from Paradox at the Capture Complete status. Once the API response is received from Workday, we will capture the Workday Candidate and Application IDs to store on the Candidate Profile in the CEM.
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:Put_Candidate_Request xmlns:wd="urn:com.workday/bsvc" wd:Add_Only="true" wd:version="v38.0">
<wd:Candidate_Data>
<wd:Name_Data>
<wd:Legal_Name>
<wd:Name_Detail_Data>
<wd:First_Name>{{first_name}}</wd:First_Name>
<wd:Middle_Name></wd:Middle_Name>
<wd:Last_Name>{{last_name}}</wd:Last_Name>
</wd:Name_Detail_Data>
</wd:Legal_Name>
</wd:Name_Data>
<wd:Contact_Data>
<wd:Phone_Device_Type_Reference>
<wd:ID wd:type="Phone_Device_Type_ID">Mobile</wd:ID>
</wd:Phone_Device_Type_Reference>
<wd:Country_Phone_Code_Reference>
<wd:ID wd:type="Country_Phone_Code_ID">USA_1</wd:ID>
</wd:Country_Phone_Code_Reference>
<wd:Phone_Number>{{phone_number}}</wd:Phone_Number>
<wd:Email_Address>{{email}}</wd:Email_Address>
</wd:Contact_Data>
<wd:Job_Application_Data>
<wd:Job_Applied_To_Data>
<wd:Job_Requisition_Reference>
<wd:ID wd:type="Job_Requisition_ID">r-00015</wd:ID>
</wd:Job_Requisition_Reference>
<wd:Stage_Reference>
<wd:ID wd:type="Recruiting_Stage_ID">REVIEW</wd:ID>
</wd:Stage_Reference>
<wd:Source_Reference>
<wd:ID wd:type="Applicant_Source_ID">APPLICANT_SOURCE-6-40</wd:ID>
</wd:Source_Reference>
</wd:Job_Applied_To_Data>
<wd:Resume_Data>
<wd:Questionnaire_Response_Data>
<wd:Response_Data>
<wd:Questionnaire_Reference>
<wd:ID wd:type="Questionnaire_ID">QUESTIONNAIRE-16-10</wd:ID>
</wd:Questionnaire_Reference>
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>a</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">{{wd_teamsize|mapvalue('teamsize')}}</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
<wd:Questionnaire_Answer_Data>
<wd:Question_Order>b</wd:Question_Order>
<wd:Multiple_Choice_Answer_Data>
<wd:Multiple_Choice_Answer_Reference>
<wd:ID wd:type="Question_Multiple_Choice_Answer_ID">{{wd_mgryears|mapvalue('mgryears')}}</wd:ID>
</wd:Multiple_Choice_Answer_Reference>
</wd:Multiple_Choice_Answer_Data>
</wd:Questionnaire_Answer_Data>
</wd:Response_Data>
</wd:Questionnaire_Response_Data>
</wd:Resume_Data>
{% if __long_id|get_resume_filename %}
<wd:Resume_Attachment_Data>
<wd:Filename>{{__long_id|get_resume_filename}}</wd:Filename>
<wd:File_Content>{{__long_id|get_base64_resume_content}}</wd:File_Content>
</wd:Resume_Attachment_Data>
{% endif %}
</wd:Job_Application_Data>
</wd:Candidate_Data>
</wd:Put_Candidate_Request>
</env:Body>
</env:Envelope>WD D2CA troubleshooting

This is designed to help you understand the configuration of Workday Dynamic Chat to Apply. Most of the data powering this productized integration is stored within the Integration Center > Connected Apps > Credentials Settings. Below is a breakdown of the required fields and their purposes
-
REST Host: This is the REST API endpoint that our system calls into for the following. If any of these API calls are failing, then a good place to start is by checking to make sure that this endpoint has been configured correctly. You should always see v3 within this endpoint. It's important that this endpoint belongs to the tenant that Paradox is integrating with.
[WORKDAY] 3. get job detail[WORKDAY] 4.1. get primary questionnaire[WORKDAY] 4.2. get secondary questionnaire[WORKDAY] 4.3. get supplemental questionnaire
-
SOAP Host: This API is used for the below API calls. Once again, when getting an error that eludes to an invalid service, or incorrect username/password, always confirm this endpoint specifically for the environment that Paradox is integrated with (commonly referred to as “pointing to”), is correct.
[WORKDAY] 1. get candidate by email only[WORKDAY] 1. get candidate[WORKDAY] 2. get job[WORKDAY] 5. post candidate
-
Token Host: This is the endpoint used to authenticate and obtain OAuth tokens. If users encounter errors related to token retrieval, ensure the Token Host is correctly set up for the environment and the corresponding tenant. The API call this is used for is
[WORKDAY] 0. get token. - Soap Username: This is the username for SOAP API authentication. It must correspond to an account with the necessary permissions to access the required Workday services. If login or access errors occur, confirm the username is correct and has the appropriate permissions. The format of this will always be ISU@tenant.
- Soap Password: This is the password associated with the SOAP username. Ensure it is entered correctly and securely stored. Password updates in Workday must also be reflected here to avoid authentication failures.
- Client ID (Rest API): The Client ID identifies the application making requests to the REST API. This value is unique to the integration and is provided during the application setup process in Workday. If issues arise, confirm that the correct Client ID has been configured.
- Client Secret (Rest API): The Client Secret is a credential paired with the Client ID. Together, they authenticate the application. Always ensure that the Client Secret is stored securely and updated in the integration settings whenever it changes in Workday.
- Grant Type: This value will always be Refresh Token.
- Refresh token: The Refresh Token is used to renew the access token without requiring a user to log in again. Ensure this token is current and valid, as an expired or revoked refresh token will prevent the integration from functioning.