Workday Connector 16.4 Examples | MuleSoft Documentation
# Workday Connector 16.4 Examples
The following examples show how to configure Workday Connector using Anypoint Studio:
  * Add a Fund to the Financial Management Service
  * Create a Position Request


## Before You Begin
You must have:
  * Access to Workday
  * Your Workday username, password, and tenant name


## Add a Fund to the Workday Financial Management Service
This example uses the **Invoke** operation to insert a fund in the Workday financial management service.
### Configure HTTP Listener
Configure **HTTP Listener** to initiate a Mule flow when a call is made to the `/` account path on localhost, port 8081.
This example uses variables for some field values. You can either:
  * Replace the variables with their values in the code.
  * Provide the values for each variable in a properties file and then refer to that file from the connector configuration.


If you don’t know how to use a properties file, see Configuring Property Placeholders.
To configure **HTTP Listener** :
  1. Create a new Mule project in Studio.
  2. In the **Mule Palette** view, search for `http` and select the **Listener** operation:
Select the Listener operation in the Mule Palette view.
  3. Drag the **Listener** operation onto the canvas.
  4. In the **Listener** configuration, click **+** next to the **Connector configuration** field to add a global element.
  5. Click **OK** to accept the defaults.
  6. Set the **Path** field to `/`:
Figure 1. Set the Path field in the Listener configuration.


### Add a Transform Message Component to Attach the Metadata
To add and configure a **Transform Message** component:
  1. In the **Mule Palette** view, search for `transform` and select **Transform Message** :
Figure 2. Select Transform Message in the Mule Palette view.
  2. Drag the **Transform Message** component onto the canvas, to the right of the **Listener** component.
  3. In the **Transform Message** configuration, overlay the brackets in the **Output** section with this XML:
```
%dw 2.0
output application/xml
ns ns0 urn:com.workday/bsvc
---
{
 ns0#Put_Fund_Request @(ns0#Add_Only: true, ns0#version: "v36.0"): {
  ns0#Fund_Data: {
   ns0#Fund_Name: "I.M.F",
   ns0#Fund_Type_Reference: {
    ns0#ID @(ns0#'type': 'Fund_Type_ID'): "FUND_TYPE-6-3"
   }
  }
 }
}
```



The following XML shows sample input to the **Transform Message** component
```
<ns0:Put_Fund_Request xmlns:ns0="urn:com.workday/bsvc" Add_Only="true" version="v36.0">
 <ns0:Fund_Data>
  <ns0:Fund_Name>I.M.F</ns0:Fund_Name>
  <ns0:Fund_Type_Reference>
   <ns0:ID type="Fund_Type_ID">FUND_TYPE-6-3</ns0:ID>
  </ns0:Fund_Type_Reference>
 </ns0:Fund_Data>
</ns0:Put_Fund_Request>
```

The following screenshot shows the corresponding output, as it appears in the **Output** section of the **Transform Message** configuration:
Figure 3. Output in the Transform Message configuration
### Add and Configure the Financial Management Operation
  1. In the **Mule Palette** view, search for `workday` and select the **Financial management** operation.
  2. Drag the **Financial management** operation onto the canvas, to the right of the **Transform Message** component.
  3. In the **Financial management** configuration, click **+** next to the **Connector configuration** field to add a global element.
  4. Configure the global element as follows:
     * **Configuration Name** : `My_Workday_Connection`
     * **Connection** : `Basic authentication api`
     * **Password** : `${workday.password}`
     * **Host Name** : Leave the default, `impl-cc.workday.com`
     * **Tenant Name** : `${workday.tenantName}`
     * **Username** : `${workday.userName}`
  5. Click **Test Connection** to ensure your username, password, and tenant name are correct.
  6. Click **OK**.
  7. In the properties window, select `Put_Fund` in the **Operation** field.


### Add a Logger Component to Display the Response in the Mule Console
  1. In the **Mule Palette** view, search for `logger` and select **Logger (Core)**.
  2. Drag the **Logger** component onto the canvas, to the right of the **Financial management** component.
  3. Configure the following fields:
**Display Name** | Enter `Log Response`.  
---|---  
Enter ``#[payload]``.  
Leave the default, `INFO`.  
  4. Save the project.
  5. Test the app by sending a request to `/` on port 8081.
  6. You will receive an XML response similar to this one:


```
<wd:Put_Fund_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v36.0">
  <wd:Fund_Reference wd:Descriptor="I.M.F">
    <wd:ID wd:type="WID">THE_WID_ID_NUMBER</wd:ID>
    <wd:ID wd:type="Fund_ID">FUND-6-399</wd:ID>
  </wd:Fund_Reference>
</wd:Put_Fund_Response>
```

### XML for the Financial Management Example
Paste this code into the Studio XML editor to quickly load the flow for this example into your Mule app:
```
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns:workday="http://www.mulesoft.org/schema/mule/workday"
 xmlns="http://www.mulesoft.org/schema/mule/core"
 xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.mulesoft.org/
 schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/workday
http://www.mulesoft.org/schema/mule/workday/current/mule-workday.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<workday:config name="My_Workday_Connection" doc:name="Workday Config" >
		<workday:basic-authentication-api-connection password="${workday.password}" tenantName="${workday.tenantName}" userName="${workday.userName}" />
	</workday:config>
	<configuration-properties doc:name="Configuration properties" doc:id="72d0bd1d-5f2f-4a1b-8beb-d9a6eb596273" file="mule-artifact.properties" />
	<flow name="workday-13-test-exampleFlow" >
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/"/>
		<ee:transform doc:name="Transform Message" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/xml
ns ns0 urn:com.workday/bsvc
---
{
 ns0#Put_Fund_Request @(ns0#Add_Only: true, ns0#version: "v36.0"): {
  ns0#Fund_Data: {
   ns0#Fund_Name: "I.M.F",
   ns0#Fund_Type_Reference: {
    ns0#ID @(ns0#'type': 'Fund_Type_ID'): "FUND_TYPE-6-3"
   }
  }
 }
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<workday:financial-management doc:name="Financial management" doc:id="8b0142df-896d-4074-9b4c-c0934648cd78" config-ref="My_Workday_Connection" operation="Put_Fund"/>
		<logger level="INFO" doc:name="Log Response" message="#[payload]"/>
	</flow>
</mule>
```
## Create a Workday Position Request
To create a Workday position request:
  1. Create a Mule app in Studio.
  2. Add and configure HTTP Listener as a source for your flow.
  3. Set the **Path** field to `/create_position` and use the default configuration for the HTTP Listener connection.
  4. Add the **Transform** component to your flow.
  5. Provide this transformation script to DataWeave:
```
%dw 2.0
ns ns0 urn:com.workday/bsvc

output application/xml
---
{
 ns0#Create_Position_Request: {
  ns0#Business_Process_Parameters: {
   ns0#Auto_Complete: true,
   ns0#Run_Now: true
  },
  ns0#Create_Position_Data: {
   ns0#Supervisory_Organization_Reference: {
    ns0#ID @("ns0:type": "Organization_Reference_ID"): "SUPERVISORY_ORGANIZATION-6-226"
   },
   ns0#Position_Data: {
    ns0#Job_Posting_Title: "General Manager"
   },
   ns0#Position_Group_Restrictions_Data: {
    ns0#Availability_Date: "2019-07-06",
    ns0#Earliest_Hire_Date: "2019-07-08"
   },
   ns0#Edit_Assign_Organization_Sub_Process: {
    ns0#Business_Sub_Process_Parameters: {
     ns0#Skip: true
    }
   },
   ns0#Request_Default_Compensation_Sub_Process: {
    ns0#Business_Sub_Process_Parameters: {
     ns0#Skip: true
    }
   },
   ns0#Assign_Pay_Group_Sub_Process: {
    ns0#Business_Sub_Process_Parameters: {
     ns0#Skip: true
    }
   },
   ns0#Assign_Costing_Allocation_Sub_Process: {
    ns0#Business_Sub_Process_Parameters: {
     ns0#Skip: true
    }
   }
  }
 }
}
```

  6. From the **Mule palette** view, select the connector and drag the **Recruiting** operation next to **Transform**.
  7. On the properties window:
     * In the **Operation** , field select `Create_Position`.
Ensure that the value for the **Operation** field is available as a menu item. The values become available once the connector loads the metadata. Do not type the value manually.
     * In the **Content** field, leave the default, `payload`.
  8. Set up, test, and save a Workday configuration for the connection to the Workday server, for example:
     * **Name** : `My Workday Config`
     * **Connection** : `Basic Authentication Api`
     * **Username** : `my_user_name`
     * **Password** : `my_password`
     * **Tenant Name** : `my_tenant_name`
     * **Host Name** : `impl-cc.workday.com`
If the connection test is unsuccessful, correct any invalid connection parameters and retest the connection.
  9. Add the **Logger** component to your flow and set `payload` as the message.
  10. Deploy and run the app.
  11. To test the app, execute a PUT request to `http://<Deployment_url>:8081/create_position` from a browser or an app such as cURL.
Use the following input in the request body:
```
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Create_Position_Request xmlns:ns0="urn:com.workday/bsvc">
 <ns0:Business_Process_Parameters>
  <ns0:Auto_Complete>true</ns0:Auto_Complete>
  <ns0:Run_Now>true</ns0:Run_Now>
 </ns0:Business_Process_Parameters>
 <ns0:Create_Position_Data>
  <ns0:Supervisory_Organization_Reference>
   <ns0:ID ns0:type="Organization_Reference_ID">SUPERVISORY_ORGANIZATION-6-226</ns0:ID>
  </ns0:Supervisory_Organization_Reference>
  <ns0:Position_Data>
   <ns0:Job_Posting_Title>General Manager</ns0:Job_Posting_Title>
  </ns0:Position_Data>
  <ns0:Position_Group_Restrictions_Data>
   <ns0:Availability_Date>2019-07-06</ns0:Availability_Date>
   <ns0:Earliest_Hire_Date>2019-07-08</ns0:Earliest_Hire_Date>
  </ns0:Position_Group_Restrictions_Data>
  <ns0:Edit_Assign_Organization_Sub_Process>
   <ns0:Business_Sub_Process_Parameters>
    <ns0:Skip>true</ns0:Skip>
   </ns0:Business_Sub_Process_Parameters>
  </ns0:Edit_Assign_Organization_Sub_Process>
  <ns0:Request_Default_Compensation_Sub_Process>
   <ns0:Business_Sub_Process_Parameters>
    <ns0:Skip>true</ns0:Skip>
   </ns0:Business_Sub_Process_Parameters>
  </ns0:Request_Default_Compensation_Sub_Process>
  <ns0:Assign_Pay_Group_Sub_Process>
   <ns0:Business_Sub_Process_Parameters>
    <ns0:Skip>true</ns0:Skip>
   </ns0:Business_Sub_Process_Parameters>
  </ns0:Assign_Pay_Group_Sub_Process>
  <ns0:Assign_Costing_Allocation_Sub_Process>
   <ns0:Business_Sub_Process_Parameters>
    <ns0:Skip>true</ns0:Skip>
   </ns0:Business_Sub_Process_Parameters>
  </ns0:Assign_Costing_Allocation_Sub_Process>
 </ns0:Create_Position_Data>
</ns0:Create_Position_Request>
</mule>
```



Workday responds as follows:
```
<wd:Create_Position_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v36.0">
 <wd:Event_Reference>
 <wd:ID wd:type="WID">WID_VALUE</wd:ID>
 </wd:Event_Reference>
 <wd:Position_Reference>
  <wd:ID wd:type="WID">WID_VALUE</wd:ID>
  <wd:ID wd:type="Position_ID">P-11158</wd:ID>
 </wd:Position_Reference>
</wd:Create_Position_Response>
```

The logger displays this message:
```
{Create_Position_Response={Event_Reference={ID=WID_VALUE}, Position_Reference={ID=P-11158}}}
```

## See Also
  * Introduction to Anypoint Connectors
  * MuleSoft Help Center