How to include custom data with Workday Get_Workers requests
Get_Workers is a very popular web service to use. A common pattern with vendors is to ask you to configure an integration system with a field override service, share some tenant details with them, and then they are able to retrieve all the worker data they need to run their application.
This post is an end to end walkthrough of how/why vendors are able to capture custom field data. Steps 1-5 capture the configuration in Workday. Steps 6 & 7 "reveal" what happens on the vendor side.
Step 1: Create a field override service
Search for and run the task Create Integration Field Override Service. Give it a name and select "Worker" for the business object. Add one or more fields (rows) to the service.
Step 2: Create an integration system
You can create a new integration system or attach the field override service to an existing integration system. For this example, I'll create a new integration with the task Create Integration System. Give it a name and select Cloud Integration Template for the template type
Step 3: Attach the field override service to the integration system
From the integration system in step 2... Related Actions >> Integration System >> Configure Integration Services. In the Custom Integration Services section, add a row and select the field override service from step 1.
Step 4: Configure the field overrides
From the integration system in step 2... Related actions >> Integration System >> Configure Integration Field Overrides. Configure which Workday fields show up on the integration field override fields. From here you can select custom object fields or any other field you want to retrieve.
Step 5: Get the integration system ID
You need to retrieve the integration system ID. This is in a collapsible field on the front page of the integration system and also available through Related actions >> Integration IDs >> View IDs. In this example, my integration system ID is SGTestFieldOverrides
.
Step 6: Create a Get_Workers SOAP request
Now we need to make a SOAP request for Get_Workers that references our integration system with the custom field override service. (This is a bit of integration inception). The integration system ID is referenced inside the wd:Field_And_Parameter_Criteria_Data
section of the request.
<?xml version="1.0" ?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<wd:Get_Workers_Request xmlns:wd="urn:com.workday/bsvc" wd:version="v43.0">
<wd:Request_References>
<wd:Worker_Reference>
<wd:ID wd:type="Employee_ID">12345</wd:ID>
</wd:Worker_Reference>
</wd:Request_References>
<wd:Request_Criteria>
<wd:Field_And_Parameter_Criteria_Data>
<wd:Provider_Reference>
<wd:ID wd:type="Integration_System_ID">SGTestFieldOverrides</wd:ID>
</wd:Provider_Reference>
</wd:Field_And_Parameter_Criteria_Data>
</wd:Request_Criteria>
<wd:Response_Filter>
<wd:Page>1</wd:Page>
<wd:Count>1</wd:Count>
</wd:Response_Filter>
<wd:Response_Group>
<wd:Exclude_Cost_Centers>true</wd:Exclude_Cost_Centers>
<wd:Exclude_Cost_Center_Hierarchies>true</wd:Exclude_Cost_Center_Hierarchies>
<wd:Exclude_Companies>true</wd:Exclude_Companies>
</wd:Response_Group>
</wd:Get_Workers_Request>
</env:Body>
</env:Envelope>
Step 7: Review the response
If everything goes well, Workday will return a response with the field override fields that were configured in the previous steps. Workday only returns the text representation of the value, not the reference IDs. If you need reference ID's, you'll have to explicitly return them with a lookup related value calculate field.
The response content will look something like this:
<wd:Integration_Field_Override_Data>
<wd:Field_Reference>
<wd:ID wd:type="WID">0d8d...</wd:ID>
<wd:ID
wd:type="Integration_Document_Field_Name"
wd:parent_type="Integration_Document_Name"
wd:parent_id="SG Worker FO Service">Field 1</wd:ID>
</wd:Field_Reference>
<wd:Value>Virtual</wd:Value>
</wd:Integration_Field_Override_Data>