Workday connector
|
You can only use Workday connector version 1.5.20.29 and later with:
Learn more in Changed functionality. |
Workday is a multi-tenant SaaS application. The Workday connector synchronizes user accounts between IDM and Workday’s cloud-based HR system. The connector integrates with Workday’s Human Resources WSDL, primarily using the Get_Workers operation to read worker data.
The connector supports reading a wide range of worker attributes, including personal, employment, and organizational data. For a complete list of available data, refer to Specific worker data and Specific organizational data. By default, the connector retrieves a minimal attribute set for performance reasons. Use XPath transformations to extract and map additional attributes.
The connector supports:
-
Reconciliation of users and organizations from Workday to an IDM repository.
-
LiveSync of users from Workday to IDM or Advanced Identity Cloud.
-
Limited updates to users in Workday.
To use the connector, you need a Workday instance with the required permissions and a set of credentials, including a username, password, tenant name, and hostname.
Install the Workday connector
|
To check for an Advanced Identity Cloud application for this connector, refer to: |
You can download any connector from Backstage, but some are included in the default deployment for Advanced Identity Cloud, IDM, or RCS. When using an included connector, you can skip installing it and move directly to configuration.
| Connector | IDM | RCS |
|---|---|---|
No |
No |
Download the connector .jar file from Backstage.
-
If you are running the connector locally, place it in the
/path/to/openidm/connectorsdirectory, for example:mv ~/Downloads/workday-connector-1.5.20.33.jar /path/to/openidm/connectors/
-
If you are using a remote connector server (RCS), place it in the
/path/to/openicf/connectorsdirectory on the RCS.
Configure the Workday connector
Create a connector configuration using the IDM admin UI:
-
From the navigation bar, click Configure > Connectors.
-
On the Connectors page, click New Connector.
-
On the New Connector page, type a Connector Name.
-
From the Connector Type drop-down list, select Workday Connector - 1.5.20.33.
-
Complete the Base Connector Details.
For a list of all configuration properties, refer to Workday Connector Configuration. -
Click Save.
When your connector is configured correctly, the connector displays as Active in the admin UI.
Refer to this procedure to create a connector configuration over REST.
Alternatively, copy the sample configuration file /path/to/openidm/samples/example-configurations/provisioners/provisioner.openicf-workday.json to your project’s conf/ directory, and set enabled to true. Edit the configurationProperties to specify the connection to the Workday instance, for example:
"configurationProperties" : {
"hostname" : "example.workday.net",
"tenant" : "example-tenant",
"username" : "admin",
"password" : "Passw0rd",
...
}
Connection properties
| For a list of all configuration properties, refer to Workday Connector Configuration. |
Set at least the following properties:
| Property | Description |
|---|---|
|
The fully qualified hostname of the Workday instance. The connector uses this value to construct the endpoint URL. |
|
The Workday tenant name. The connector uses this value to construct the endpoint URL and the complete username in the form |
|
The username for the Workday instance. Don’t include the tenant. The connector constructs the full |
|
The password for the Workday instance. |
|
The time (in milliseconds) the connector waits to send a request. Requests that exceed this timeout throw an exception. Default: |
|
The time (in milliseconds) the connector waits to receive a response. Because Workday responses can be large, set this value carefully to avoid premature timeouts. Default: |
Data retrieval properties
The configurationProperties also control which data the connector retrieves, using boolean include... and exclude... properties.
- Worker types
-
By default, the connector retrieves all worker types. Use the following properties to exclude specific types:
-
excludeContingentWorkers: Excludes contingent workers. Default:false. -
excludeEmployees: Excludes regular employees. Default:false. -
excludeInactiveWorkers: Excludes inactive workers. Default:false.
-
- Specific worker data
-
The
Get_Workersoperation returns a large amount of data per worker, organized into sections such as Personal, Employment, Role, and Organization data. For performance reasons, set all of these tofalseinitially, then enable only what you need.Properties list
-
includeWorkerDocuments -
includeDevelopmentItems -
includeRoles -
includeQualifications -
includeTransactionLogData -
includeCareer -
includeContingentWorkerTaxAuthorityFormInformation -
includeUserAccount -
includeFeedbackReceived -
includeEmployeeContractData -
includeSkills -
includeAccountProvisioning -
includeGoals -
includeSuccessionProfile -
includeBackgroundCheckData -
includeEmployeeReview -
includeManagementChainData -
includeOrganizations -
includePhoto -
includeRelatedPersons -
includeBenefitEligibility -
includeTalentAssessment -
includeBenefitEnrollments -
includeCompensation
-
- Specific organizational data
-
When
includeOrganizationsistrue, you can exclude specific organizational data subsections. By default, all organizational data is included. To exclude a subsection, set its property totrue. For performance reasons, set all of these totrueinitially, then selectively enable only what you need.Properties list
-
excludeCompanies -
excludeBusinessUnits -
excludeCustomOrganizations -
excludeMatrixOrganizations -
excludeGiftHierarchies -
excludeCostCenterHierarchies -
excludeGrants -
excludeProgramHierarchies -
excludeFunds -
excludeOrganizationSupportRoleData -
excludeGifts -
excludeBusinessUnitHierarchies -
excludeCostCenters -
excludePrograms -
excludeSupervisoryOrganizations -
excludeRegionHierarchies -
excludeTeams -
excludeLocationHierarchies -
excludeRegions -
excludePayGroups -
excludeFundHierarchies -
excludeGrantHierarchies
-
Date filtering properties
The following optional properties control date filtering for Workday queries.
| For a list of all configuration properties, refer to Workday Connector Configuration. |
| Property | Description | Accepted values |
|---|---|---|
|
Filters results to include only data that is effective as of a specific date or time. This property sets the |
A date or duration. |
|
Filters transaction log entries to include only those created on or after a specific date. This property sets the |
A date or the string |
|
Filters transaction log entries to include only those created on or before a specific date. This property sets the |
A date or duration. |
Date and duration formats
-
Date
-
Duration
An ISO 8601 date-time string, for example:
-
2026-02-27T00:00:00Z -
2026-12-23T08:00:00-07:00
An XML dayTimeDuration string. The connector calculates the effective date as the current date offset by the duration.
-
P5D: Five days from now -
P1DT12H: One day, 12 hours from now -
PT2H30M: Two hours, 30 minutes from nowUse the bare duration string only. Don’t use the full XPath function notation, such as xs:dayTimeDuration('P5D').
XPath transformations
| XPath transformations require ICF Framework and RCS version 1.5.20.24 or later and Workday connector version 1.5.20.26 or later. |
You can use XPath transformations to simplify and map Workday attributes directly to read-only connector object type properties. The xpathTransformations configuration property is an array of nested object configuration properties and must contain objectType, attribute, and transformation properties.
The XPath transformation implementation uses the javax.xml.xpath package, which supports the XPath 1.0 specification for transformation expressions.
An example XPath transformation:
{
"xpathTransformations": [
{
"objectType": "__ACCOUNT__", (1)
"attribute": "WORKER_NAME", (2)
"transformation": "ns1:Worker_Data/ns1:Personal_Data/ns1:Name_Data/ns1:Preferred_Name_Data/ns1:Name_Detail_Data/@ns1:Formatted_Name" (3)
},
{
"objectType": "__ACCOUNT__", (1)
"attribute": "USER_ID", (2)
"transformation": "ns1:Worker_Data/ns1:User_ID" (3)
}
]
}
| 1 | The ICF native objectType that the XPath-transformed property belongs to. |
| 2 | The target resource name (attribute) in the Workday object type. |
| 3 | The XPath transformation applied to extract or flatten the attribute value from Workday. |
Extension attributes
The Workday connector can retrieve extension attributes (custom attributes) from Workday. To retrieve extension attributes, use an XPath transformation to map them to a connector object type property. Refer to XPath transformations.
Workday remote connector
If you want to run this connector outside of PingOne Advanced Identity Cloud or IDM, you can configure the Workday connector as a remote connector. Java Connectors installed remotely on a Java Connector Server function identically to those bundled locally within PingOne Advanced Identity Cloud or installed locally on IDM.
You can download the Workday connector from here.
Refer to Remote connectors for configuring the Workday remote connector.
Configure connection pooling
The Workday connector uses ICF pooling to manage connections. Learn more about the different pooling mechanisms in Connectors by pooling mechanism.
Implementation specifics
For PATCH requests, the Workday connector supports only the replace operation. The connector doesn’t implement add or remove, so every PATCH request replaces the entire attribute value.
Test the Workday connector
When the connector is configured, test its status:
curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Accept-API-Version: resource=1.0" \
--request POST \
"http://localhost:8080/openidm/system/workday?_action=test"
{
"name": "workday",
"enabled": true,
"config": "config/provisioner.openicf/workday",
"connectorRef": {
"bundleVersion": "[1.5.0.0,1.6.0.0)",
"bundleName": "org.forgerock.openicf.connectors.workday-connector",
"connectorName": "org.forgerock.openicf.connectors.workday.WorkdayConnector"
},
"displayName": "Workday Connector",
"objectTypes": [
"employee",
"__ALL__"
],
"ok": true
}
A response of "ok": true confirms the connector can reach the Workday instance.
Use the Workday connector
Workers
To retrieve all workers:
curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Accept-API-Version: resource=1.0" \
--request GET \
"http://localhost:8080/openidm/system/workday/employee?_queryId=query-all-ids"
{
"result": [
{
"_id": "3aa5550b7fe348b98d7b5741afc65534",
"employeeID": "21001"
},
{
"_id": "0e44c92412d34b01ace61e80a47aaf6d",
"employeeID": "21002"
},
{
"_id": "3895af7993ff4c509cbea2e1817172e0",
"employeeID": "21003"
},
...
]
}
|
On the first retrieval, the following warning might appear in the console. You can safely ignore it: WARNING: Default key managers cannot be initialized: Invalid keystore format java.io.IOException: Invalid keystore format |
To retrieve a specific worker, include the user’s ID in the URL. For example:
curl \ --header "X-OpenIDM-Username: openidm-admin" \ --header "X-OpenIDM-Password: openidm-admin" \ --header "Accept-API-Version: resource=1.0" \ --request GET \ "http://localhost:8080/openidm/system/workday/employee/3aa5550b7fe348b98d7b5741afc65534"
Reconcile users from Workday to IDM
To reconcile users from Workday to IDM or Advanced Identity Cloud, set up a mapping between Workday and IDM managed users or Advanced Identity Cloud identities.
When you have created a mapping, run reconciliation using the admin UI or with a REST call similar to the following:
curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Accept-API-Version: resource=1.0" \
--request POST \
"http://localhost:8080/openidm/recon?_action=recon&mapping=systemWorkdayEmployee_managedUser&waitForCompletion=true"
{
"_id": "db2bc7f4-e9a8-4315-9dd1-e2cdcd85ae6e-33099",
"state": "SUCCESS"
}
Update users in the Workday system
The connector supports updates to system users only for the following properties:
-
Account credentials (
usernameandpassword) -
email -
mobile(telephone number)
The following command updates a user’s mobile number:
curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Accept-API-Version: resource=1.0" \
--header "Content-type: application/json" \
--request PATCH \
--data '[
{
"operation": "replace",
"field": "mobile",
"value": "+1 (415) 859-4366"
}
]' \
"http://localhost:8080/openidm/system/workday/employee/3aa5550b7fe348b98d7b5741afc65534"
OpenICF Interfaces Implemented by the Workday Connector
The Workday Connector implements the following OpenICF interfaces. For additional details, see ICF interfaces:
- Schema
-
Describes the object types, operations, and options that the connector supports.
- Script on Connector
-
Enables an application to run a script in the context of the connector.
Any script that runs on the connector has the following characteristics:
-
The script runs in the same execution environment as the connector and has access to all the classes to which the connector has access.
-
The script has access to a
connectorvariable that is equivalent to an initialized instance of the connector. At a minimum, the script can access the connector configuration. -
The script has access to any script arguments passed in by the application.
-
- Search
-
Searches the target resource for all objects that match the specified object class and filter.
- Sync
-
Polls the target resource for synchronization events, that is, native changes to objects on the target resource.
- Test
-
Tests the connector configuration.
Testing a configuration checks all elements of the environment that are referred to by the configuration are available. For example, the connector might make a physical connection to a host that is specified in the configuration to verify that it exists and that the credentials that are specified in the configuration are valid.
This operation might need to connect to a resource, and, as such, might take some time. Do not invoke this operation too often, such as before every provisioning operation. The test operation is not intended to check that the connector is alive (that is, that its physical connection to the resource has not timed out).
You can invoke the test operation before a connector configuration has been validated.
- Update
-
Updates (modifies or replaces) objects on a target resource.
Workday Connector Configuration
The Workday Connector has the following configurable properties:
Worker Response Configuration Properties
| Property | Type | Default | Encrypted(1) | Required(2) |
|---|---|---|---|---|
|
|
|
|
No |
Indicates if the Management Chain Data element is included in the response. |
||||
|
|
|
|
No |
Indicates if the Organization Data element is included in the response. |
||||
|
|
|
|
No |
Indicates if the Personal Data element is included in the response. |
||||
|
|
|
|
No |
Excludes the cost centers from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
Excludes the custom organizations from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
Indicates if the Role Data element is included in the response. |
||||
|
|
|
|
No |
Excludes the matrix organizations from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
Indicates if the Employment Data element is included in the response. |
||||
|
|
|
|
No |
Indicates that Account Provisioning Data will be included in the web service response. |
||||
|
|
|
|
No |
Excludes the business unit hierarchies from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
Indicates if the Related Person Data element is included in the response. |
||||
|
|
|
|
No |
Indicates if the Photo Data element is included in the response. |
||||
|
|
|
|
No |
Excludes the supervisory organizations from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
Excludes the teams from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
Indicates if the Transaction Log Data element is included in the response. |
||||
|
|
|
|
No |
Excludes the company organizations from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
Excludes the Business Units from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
Indicates if the Employee Contract element is included in the response. |
||||
|
|
|
|
No |
Indicates that User Account Data will be included in the web service response. |
||||
|
|
|
|
No |
Excludes the regions from the Organization Data element response. This can only be selected when the Include Organization Data boolean is also selected. |
||||
|
|
|
|
No |
If set to true, multiple managers in the management chain data are returned. |
||||
|
|
|
|
No |
If true, the data for Additional Jobs and International Assignments is included in the response. |
||||
(1) Whether the property value is considered confidential, and is therefore encrypted in IDM.
(2) A list of operations in this column indicates that the property is required for those operations.
Organization Response Configuration Properties
| Property | Type | Default | Encrypted(1) | Required(2) |
|---|---|---|---|---|
|
|
|
|
No |
Indicates whether the Staffing Restrictions Data element is included in the response. |
||||
|
|
|
|
No |
Indicates whether the Supervisory Data element is included in the response. |
||||
|
|
|
|
No |
Indicates whether the Hierarchy Data element is included in the response. |
||||
|
|
|
|
No |
Indicates whether the Roles Data element is included in the response. |
||||
(1) Whether the property value is considered confidential, and is therefore encrypted in IDM.
(2) A list of operations in this column indicates that the property is required for those operations.
Basic Configuration Properties
| Property | Type | Default | Encrypted(1) | Required(2) |
|---|---|---|---|---|
|
|
|
|
Yes |
The hostname for the Workday service. Example: https://[workday hostname]/ccx/service/[workday tenant]/. You need to configure the bracketed Workday hostname and tenant name to successfully connect to the proper instance. |
||||
|
|
|
|
No |
List of xpath transformations to connector attributes (Supported by framework versions greater than |
||||
|
|
|
|
Yes |
The tenant in URL for the Workday service. For example: https://[workday hostname]/ccx/service/[workday tenant]/. You need to configure the bracketed Workday hostname and tenant name to successfully connect to the proper instance. |
||||
|
|
|
|
Yes |
The username for logging into the Workday service. It will be concatenated with the tenant name (user@tenant) |
||||
|
|
|
Yes |
Yes |
The user password for logging into the Workday service |
||||
|
|
|
|
No |
Excludes terminated employees or contingent workers whose contracts have ended from the query response. |
||||
|
|
|
|
No |
Excludes contingent workers from the query response. |
||||
|
|
|
|
No |
Excludes employees from the query response. |
||||
|
|
|
|
No |
Specifies the amount of time, in seconds, that the client will attempt to establish a connection before it times out. Set to |
||||
|
|
|
|
No |
Specifies the amount of time, in seconds, that the client will wait for a response before it times out. Set to |
||||
|
|
|
|
No |
Sets the page size used for search operations. |
||||
|
|
|
|
No |
If defined, the connection to Workday goes through this HTTP proxy server. |
||||
|
|
|
|
No |
The HTTP proxy server port number. |
||||
|
|
|
|
No |
The file path to the XSL File to get the custom attributes. |
||||
|
|
|
|
No |
Optional configuration of Response_Filter/As_Of_Effective_Date element. Valid values are: |
||||
|
|
|
|
No |
Sets the Get_Workers_Request/Request_Criteria/Transaction_Log_Criteria_Data/Transaction_Date_Range_Data/Effective_From for every outbound query request. Valid value could be |
||||
|
|
|
|
No |
Sets the Get_Workers_Request/Request_Criteria/Transaction_Log_Criteria_Data/Transaction_Date_Range_Data/Effective_Through for every outbound query request. Valid value could be |
||||
|
|
|
|
No |
A list of external fields to add to the search/query criteria. |
||||
(1) Whether the property value is considered confidential, and is therefore encrypted in IDM.
(2) A list of operations in this column indicates that the property is required for those operations.