지금 지원 담당자와 채팅
지원 담당자와 채팅

Starling Connect Hosted - One Identity Manager Administration Guide

About this guide One Identity Starling Connect overview One Identity Starling Supported cloud applications Working with connectors Connector versions Salesforce Facebook Workplace SAP Cloud Platform JIRA Server RSA Archer SuccessFactors Amazon S3 AWS ServiceNow Dropbox Crowd Atlassian JIRA Confluence Trello Box Pipedrive SuccessFactors HR NutShell Insightly Egnyte SugarCRM Oracle IDCS Statuspage Zendesk Sell Workbooks DocuSign Citrix ShareFile Zendesk Azure AD Google Workspace Concur Tableau GoToMeeting Coupa AWS Cognito Okta DataDog Hideez Opsgenie Informatica Cloud Services AppDynamics Marketo Workday HR OneLogin PingOne Aha! SAP Litmos HackerRank Slack ActiveCampaign Webex Apigee Databricks Hive PagerDuty Dayforce Smartsheet Pingboard SAP Cloud for Customer Azure Infrastructure Oracle Fusion Cloud Majesco LuccaHR OpenText Appendix: Creating a service account in Google Workspace Appendix: Setting a trial account on Salesforce Registering the application, providing necessary permissions, retrieving Client Id and Client Secret from the Azure AD tenant Generating a private key for service account in GoToMeeting Configuring Amazon S3 AWS connector to support entitlements for User and Group Configuring Box connector to support additional email IDs for users One Identity Manager E2E integration needs for Hideez connector Configuring custom attributes for ServiceNow v.1.0 Configuring custom attributes for Coupa v.1.0 Configuring custom attributes in connectors Disabling attributes Configuring a connector that uses the consent feature Synchronization and integration of Roles object type with One Identity Manager Synchronization and integration of Workspaces object type with One Identity Manager Synchronization and integration of Products object type with One Identity Manager User centric membership Creating multi-valued custom fields in One Identity Manager Synchronization and assignment of PermissionSets to Users with One Identity Manager Connectors that support password attribute in User object Connectors that do not support special characters in the object ID Creating an app for using SCIM on Slack Enterprise Grid Organization Creating a Webex integration application, providing necessary scopes, retrieving Client Id and Client Secret Retrieving the API key from Facebook Workplace Outbound IP addresses Values for customer-specific configuration parameters in Workday HR connector Initiate an OAuth connection to SuccessFactors Creating custom editable/upsertable attributes in Successfactors employee central Custom Foundation Objects in Successfactors HR connector Configuring additional datetime offset in connectors How to Create custom attribute for Users in SuccessFactors portal SAP Cloud for Customer - Steps to add custom fields at One Identity Manager attributes Creating Service Principal to authenticate the Azure resource management REST APIs for Azure Infrastructure connector

Mappings

The Marketo connector allows you to connect Marketo with One Identity Starling enabling you to take advantage of the features and products available with Starling Connect that complement and enhance the services provided by Marketo.

Marketo provides marketing automation software for all types of digital marketing. It provides services to capture the interaction with each customer, enabling users to identify the most profitable channels and campaigns.

Supervisor configuration parameters

To configure the connector, following parameters are required:

Supported objects and operations

Users

Table 242: Supported operations for Users
Operation VERB

Create(Invite) User

POST

Update User PUT
Delete User DELETE
Get User GET
Get All Users GET
Add RoleAndWorkspace to User PUT

Remove RoleAndWorkspace from User

PUT

Roles

Table 243: Supported operations for Roles

Operation

VERB

Get all Roles GET

Workspaces

Table 244: Supported operations for Workspaces

Operation

VERB

Get all Workspaces GET

Mandatory fields

This section lists the mandatory fields required to create a User or Group:

Users

  • FirstName

  • LastName

  • EmailAddress

  • accessRoleId

  • WorkspaceId

The user and group mappings are listed in the tables below.

Table 245: User mapping
SCIM Parameter Marketo parameter
Id userid
UserName userid
DisplayName firstName + lastName
name.GivenName firstName
name.FamilyName lastName
emails[].value emailAddress
Active isLocked == false
Extension.rolesAndWorkspaces[].accessRoleId userRoleWorkspaces[].accessRoleId
Extension.rolesAndWorkspaces[].accessRoleName userRoleWorkspaces[].accessRoleName
Extension.rolesAndWorkspaces[].workspaceId userRoleWorkspaces[].workspaceId
Extension.rolesAndWorkspaces[].workspaceName userRoleWorkspaces[].workspaceName

Roles

Table 246: Roles mapping
SCIM parameter Marketo parameter
id id
name name
description description
Type type

Meta.Created

createdAt

Meta.LastModified

updatedAt

Workspaces

Table 247: Workspaces mapping
SCIM parameter Marketo parameter
id id
name name
description description
Status Status

Meta.Created

createdAt

Meta.LastModified

updatedAt

Connector limitations

  1. Create User is a multiple steps operation.
    1. Once the Create User request is successfully submitted to One Identity Manager, the user will receive an email on the email ID mentioned in the request.
    2. User must click on the link provided in the email and set a password.
    3. User is now activated and will be available at the target instance.
  2. To Create a User, at least one pair of accessRoleId and WorkspaceId must be provided.
  3. One Identity Manager must have multi-value arrays of string type to hold the values of the User properties: accessRoleId, accessRoleName, WorkspaceId and WorkspaceName.
  4. Update User is a multiple steps operation.
    1. Only confirmed Users can be updated.
    2. One round of full synchronization is required before submitting the UPDATE request on a newly created User. This must be done to synchronize the User details after activation. This applies to newly created Users only, however existing User UPDATE will work as usual.

  5. Roles and Workspaces endpoints are used only to retrieve data from target and store it in One Identity Manager and can not to be used to assign or unassign Roles and Workspaces to a User.
  6. Connector supports cursor pagination and hence TotalResults are not returned.
  7. Duplicate User CREATE request will return Internal Server Error: 500 with the message System Error: This userid is in use. Choose another email for already existing activated User. However, error 409 is returned if the User is not activated.
  8. The pagination scenarios are not tested for Marketo Connector due to unavailability of adequate target system instance.

Synchronization and integration of Roles object type with One Identity Manager

For more information, see Synchronization and integration of Roles object type with One Identity Manager.

Synchronization and integration of Workspaces object type with One Identity Manager

For more information, see Synchronization and integration of Workspaces object type with One Identity Manager.

Add Roles ID and Workspaces ID to create and update users for Marketo connector

To create a user successfully using Marketo connector, you must provide valid values for mandatory properties such as Roles ID and Workspaces ID in the request. Roles ID and Workspaces ID are the sub-attributes of the main attribute RolesAndWorkspaces, which is a complex multi-valued string attribute defined under User extensions in the connector schema.

One Identity Manager must have fields where you can enter complex multi-value array values but it does not display such fields by default. However, it is possible to create custom multi-value array fields. For more information, see Creating multi-valued custom fields in One Identity Manager.

NOTE: The above example of creating multi-valued custom fields is one of the various ways to achieve the configuration required for adding Roles ID and Workspaces ID to create and update Users. There may be other ways to achieve this integration based on the customization options that One Identity Manager provides.

Connector limitations

The Marketo connector allows you to connect Marketo with One Identity Starling enabling you to take advantage of the features and products available with Starling Connect that complement and enhance the services provided by Marketo.

Marketo provides marketing automation software for all types of digital marketing. It provides services to capture the interaction with each customer, enabling users to identify the most profitable channels and campaigns.

Supervisor configuration parameters

To configure the connector, following parameters are required:

Supported objects and operations

Users

Table 242: Supported operations for Users
Operation VERB

Create(Invite) User

POST

Update User PUT
Delete User DELETE
Get User GET
Get All Users GET
Add RoleAndWorkspace to User PUT

Remove RoleAndWorkspace from User

PUT

Roles

Table 243: Supported operations for Roles

Operation

VERB

Get all Roles GET

Workspaces

Table 244: Supported operations for Workspaces

Operation

VERB

Get all Workspaces GET

Mandatory fields

This section lists the mandatory fields required to create a User or Group:

Users

  • FirstName

  • LastName

  • EmailAddress

  • accessRoleId

  • WorkspaceId

Mappings

The user and group mappings are listed in the tables below.

Table 245: User mapping
SCIM Parameter Marketo parameter
Id userid
UserName userid
DisplayName firstName + lastName
name.GivenName firstName
name.FamilyName lastName
emails[].value emailAddress
Active isLocked == false
Extension.rolesAndWorkspaces[].accessRoleId userRoleWorkspaces[].accessRoleId
Extension.rolesAndWorkspaces[].accessRoleName userRoleWorkspaces[].accessRoleName
Extension.rolesAndWorkspaces[].workspaceId userRoleWorkspaces[].workspaceId
Extension.rolesAndWorkspaces[].workspaceName userRoleWorkspaces[].workspaceName

Roles

Table 246: Roles mapping
SCIM parameter Marketo parameter
id id
name name
description description
Type type

Meta.Created

createdAt

Meta.LastModified

updatedAt

Workspaces

Table 247: Workspaces mapping
SCIM parameter Marketo parameter
id id
name name
description description
Status Status

Meta.Created

createdAt

Meta.LastModified

updatedAt

  1. Create User is a multiple steps operation.
    1. Once the Create User request is successfully submitted to One Identity Manager, the user will receive an email on the email ID mentioned in the request.
    2. User must click on the link provided in the email and set a password.
    3. User is now activated and will be available at the target instance.
  2. To Create a User, at least one pair of accessRoleId and WorkspaceId must be provided.
  3. One Identity Manager must have multi-value arrays of string type to hold the values of the User properties: accessRoleId, accessRoleName, WorkspaceId and WorkspaceName.
  4. Update User is a multiple steps operation.
    1. Only confirmed Users can be updated.
    2. One round of full synchronization is required before submitting the UPDATE request on a newly created User. This must be done to synchronize the User details after activation. This applies to newly created Users only, however existing User UPDATE will work as usual.

  5. Roles and Workspaces endpoints are used only to retrieve data from target and store it in One Identity Manager and can not to be used to assign or unassign Roles and Workspaces to a User.
  6. Connector supports cursor pagination and hence TotalResults are not returned.
  7. Duplicate User CREATE request will return Internal Server Error: 500 with the message System Error: This userid is in use. Choose another email for already existing activated User. However, error 409 is returned if the User is not activated.
  8. The pagination scenarios are not tested for Marketo Connector due to unavailability of adequate target system instance.

Synchronization and integration of Roles object type with One Identity Manager

For more information, see Synchronization and integration of Roles object type with One Identity Manager.

Synchronization and integration of Workspaces object type with One Identity Manager

For more information, see Synchronization and integration of Workspaces object type with One Identity Manager.

Add Roles ID and Workspaces ID to create and update users for Marketo connector

To create a user successfully using Marketo connector, you must provide valid values for mandatory properties such as Roles ID and Workspaces ID in the request. Roles ID and Workspaces ID are the sub-attributes of the main attribute RolesAndWorkspaces, which is a complex multi-valued string attribute defined under User extensions in the connector schema.

One Identity Manager must have fields where you can enter complex multi-value array values but it does not display such fields by default. However, it is possible to create custom multi-value array fields. For more information, see Creating multi-valued custom fields in One Identity Manager.

NOTE: The above example of creating multi-valued custom fields is one of the various ways to achieve the configuration required for adding Roles ID and Workspaces ID to create and update Users. There may be other ways to achieve this integration based on the customization options that One Identity Manager provides.

Workday HR

The WorkdayHR connector allows you to connect WorkdayHR with One Identity Starling enabling you to take advantage of the features and products available with Starling Connect that complement and enhance WorkdayHR’s cloud-based human resource management services.

Supervisor configuration parameters

To configure the connector, following parameters are required:

  • Connector name

  • Tenant

  • API Version

  • Username

  • Password
  • WorkdayHR instance URL (Cloud application's instance URL used as target URI in the payload)

  • Customer-specific configuration parameters must be configured based on the Workday HR instance.

    • OrganizationTypeID for Department

    • OrganizationTypeID for Division

    • OrganizationTypeID for Desk

    • OrganizationTypeID for CostCenter

    • OrganizationTypeID for Company

    • OrganizationTypeID for Region

    • OrganizationTypeID for Personal Assistant

    • OrganizationTypeID for Asset Class

    • OrganizationTypeID for DepartmentHead

    • OrganizationSubTypeID for Department

    • OrganizationSubTypeID for Division

    • OrganizationSubTypeID for Desk

    • OrganizationSubTypeID for CostCenter

    • OrganizationSubTypeID for Company

    • OrganizationSubTypeID for Region

    • OrganizationSubTypeID for Personal Assistant

    • OrganizationSubTypeID for Asset Class

    • OrganizationRoleID for Department Head

    • CustomIDTypeID for Date Joined Industry

    • CustomIDTypeID for Code Of Conduct

    • CustomIDTypeID for External ID

    • Certification Names

    • Additional Names Types

    • OrganizationType reference ID for Location Hierarchy

    • SAMAccount ID Type

    • Mobile Device Type ID

    • Landline Device Type ID

    • OrgTypeID for Custom Organizations

    • OrgSubTypeID for Custom Organizations

    • OrganizationTypeID for Matrix

    • OrganizationSubTypeID for Matrix

    • Future Hire Interval

    • Business Process Types

    • Retry Server Call

      IMPORTANT:

      • Retry Server Call is used to make a retry request to WorkdayHR target instance in-case of failures related to the instance being unreachable at a given point in time.
      • By Default the value is set to false. The customer can enable it in-case such failures are encountered.
    • Increase Request Time out

      IMPORTANT:The default request time out is 100 seconds, please enable this option if time out exception occurs.

  • Use Change Contact Information API for Update.

    IMPORTANT:

    • This configuration defines which update API will be used to update the contact details including email, cell phone and business phone. When the configuration is enabled the Change_Work_Contact_Information API and Change_Home_Contact_Information API would be used to update the work and home contact information respectively.

    • By default, the configuration would be disabled and the update will use Maintain_Contact_Information API.

    • For additional information on update configurations in One Identity Manager, refer Additional configuration for update.

NOTE:

Supported objects and operations

Employees

Table 248: Supported operations for Employees

Operation

VERB

Get Employee GET
Get All Employees GET

Update Employee

PUT

NOTE:

  • The Get Employee endpoint fetches the primary work email, primary cellphone and landline for home and work. The Update Employee endpoint sets the default value for email to type work and public to false, when the values for type and public flag are not provided. IsPrimary is always set to true.

Locations

Table 249: Supported operations for Locations

Operation

VERB

Get Location GET
Get All Locations GET

CustomOrgs

Table 250: Supported operations for CustomOrgs

Operation

VERB

Get CustomOrg GET
Get All CustomOrgs GET

NOTE:

  • CustomOrgs is a single endpoint that provides information on Departments, SubDivisions, Divisions, Desks, LegalEntities and CostCenters.
  • To extract specific entities from CustomOrgs you must create the mappings, workflow steps and set up the filter.
  • For more information, see OneIM_CloudHRSystems_Administration guide on the Support site.

JobClassifications

Table 251: Supported operations for JobClassifications

Operation

VERB

Get JobClassification GET
Get All JobClassifications GET

FutureDatedEmployees

Table 252: Supported operations for FutureDatedEmployees

Operation

VERB

Get FutureDatedEmployees GET
Get All FutureDatedEmployees GET

NOTE:

  • The Get All FutureDatedEmployees endpoint is dependent on the Starling UI config parameters Business process type and Future Hire Interval.

  • The FutureDatedEmployees endpoint does not support any filters.

DeltaSyncEmployees

Table 253: Supported operations for DeltaSyncEmployees

Operation

VERB

Get DeltaSyncEmployees GET
Get All DeltaSyncEmployees GET GET

NOTE: This endpoint is only for supporting the delta sync.

Positions

Table 254: Supported operations for Positions

Operation

VERB

Get Position GET
Get All Position GET

NOTE: This Endpoint requires additional permission for the API.

Mappings

Endpoint Mapping

Table 255: Target system objects mapping
Target system objects SCIM endpoints
Workers Employees
Locations Locations
Organizations CustomOrgs

Job Classification Groups

JobClassifications

Attributes Mapping

Different mappings associated with this connector are listed in the tables below:

Table 256: Employees mapping
SCIM parameter WorkDayHR parameter

AdditionalNames.details[]

Additional_Name_Type_ID;First_Name;Last_Name

Addresses.country

Worker/Worker_Data/Personal_Data/Contact_Data/Address_Data[@Defaul ted_Business_Site_Address=1]/Country_Reference/ID[@wd:type='ISO_31 66-1_Alpha-3_Code']/text()

Addresses.countryCode2

wd:Worker/Worker_Data/Personal_Data/Contact_Data/Address_Data[@Defaulted_Business_Site_Address=1]/Country_Reference/ID[@wd:type='ISO_31 66-1_Alpha-2_Code']/text()

Addresses.locality

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Addre ss_Data[@wd:Defaulted_Business_Site_Address=1]/wd:Municipality/text()

Addresses.postalCode

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/Address_ Data[@Defaulted_Business_Site_Address=1]/Postal_Code/text()

Addresses.region

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Addre ss_Data[@wd:Defaulted_Business_Site_Address=1]/wd:Country_Region_Descriptor/text()

Addresses.streetAddress

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Addre ss_Data[@wd:Defaulted_Business_Site_Address=1]/@wd:Formatted_Address

assetClass

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_AssetClass>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@wd:type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_AssetClass>']/wd:Organization_Reference/wd:ID[@wd:type='WID']/text()

businessUnitWID

wd:Worker/wd:Worker_ Data/wd:Organization_Data/wd:Worker_Organization_Data/wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text()='Business_Unit'/ID [@type='WID']/text()

Certificates.certificateDetails[]

Certification_Name;Certification_ID;Certification_Skill_ID;Issued_Date;Expiry_Date

codeOfConduct

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<CodeOfConductValue>']/wd:ID/text()

company

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organiz

ation_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Company>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Company>']/Organization_Reference/ID[@type='WID']/text()

costCenter

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_CostCenter>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_CostCenter>']/Organization_Reference/ID[@type='WID']/text()

dateJoinedIndustry

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<DateJoinedIndustryValue>']/wd:ID/text()

dateOfBirth

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Birth_Date/text()

daysUnemployed

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/daysUnemployed/text()

department

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_for_Department>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Department>']/Organization_Reference/ID[@type='WID']/text()

departmentHeadID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_DepartmentHead>' and string(wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Reference/wd:ID[@wd:type='Organization_Role_ID']/text())='<OrganizationRoleID_For_DepartmentHead>' and string(wd:Organization_Support_Role_Data/wd:Organization_Support_Role/Organization_Role_Data/Assignment_From/text())='assigned']/wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Data/Worker_Reference/ID[@wd:type='WID']/text()

desk

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Desk>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Desk>']/Organization_Reference/ID[@type='WID']/text()

DisplayName

wd:Worker/wd:Worker_Descriptor/text()

division

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_for_Division>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Division>']/Organization_Reference/ID[@type='WID']/text()

Emails.value

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Email _Address_Data/wd:Email_Address/text()

endDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:End_Date/text()

estimatedLeaveEndDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data[wd:On_Leave='1']/wd:Estimated_Leave_End_Date/text()

externalID

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<ExternalIDValue>']/wd:ID/text()

externalIDDescription

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<ExternalIDValue>']/wd:Custom_Description/text()

externalIDType

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data/wd:ID_Type_Reference[string(wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<ExternalIDValue>']/wd:ID[@wd:type='Custom_ID_Type_ID']/text()

fullTimeEquivalentPercentage

/wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Data/wd:Full_Time_Equivalent_Percentage/text()

Gender

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Gender_Reference/wd:ID[@wd:type="Gender_Code"]/text()

hireDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Hire_Date/text()

hireReason

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Hire_Reason_Reference/wd:ID/[@wd:type='General_Event_Subcategory_ID']/text()

hireRescinded

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/hireRescinded/text()

Id

wd:Worker/wd:Worker_Reference/wd:ID[@wd:type='WID']/text()

isContingentWorker

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd :Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID/@w d:type='Contingent_Worker_Type_ID'

isEmployee

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd :Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID/@w d:type='Employee_Type_ID'

jobClassificationReference.id

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data

[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Classification_Summary_Data/wd:Job_Classification_Reference/wd:ID[@wd:type='WID']

jobClassificationReference.referenceID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data

[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Classification_Summary_Data/wd:Job_Classification_Reference/wd:ID[@wd:type='Job_Classification_Reference_ID']

jobClassifications.id

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Classification_Summary_Data/wd:Job_Group_Reference/wd:ID[@wd:type='WID']

jobFamilyID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Data/wd:Job_Profile_Summary_Data/wd:Job_Family_Reference/wd:ID[@wd:type='Job_Family_ID']/text()

jobProfileID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Profile_Summary_Data/wd:Job_Profile_Reference/wd:ID[wd:type='Job_Profile_ID']/text()

jobTitle

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Business_Title/text()

lastHierarchicalManagerWID

wd:Worker/wd:Worker_

Data/wd:Management_Chain_Data/wd:Worker_Supervisory_Management_Chain_Data/wd:Management_Chain_Data/wd:Manager/wd:Worker_Reference/wd:ID[@wd:type='WID']/text()

leaveAbsenceType

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data[wd:On_Leave='1']/wd:Leave_of_Absence_Type_Reference/wd:ID[@wd:type='Leave_of_Absence_Type_ID']/text()

leaveEndDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data[wd:On_Leave='1']/wd:Leave_End_Date/text()

leaveStartDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data[wd:On_Leave='1']/wd:Leave_Start_Date/text()

localFirstName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Local_Name_Detail_Data/wd:First_Name/text()

localLastName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Local_Name_Detail_Data/wd:Last_Name/text()

localTerminationReasonID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Local_Termination_Reason_Reference/wd:ID/[@wd:type='Local_Termination_Reason_ID']/text()

managementLevelID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Profile_Summary_Data/wd:Management_Level_Reference/wd:ID[wd:type='Management_Level_ID']/text()

managerEmployeeID

wd:Worker/wd:Worker_ Data/wd:Employment_Data/wd:Worker_ Job_Data[@wd:Primary_ Job=1]/wd:Position_Data/wd:Manager_as_ of_last_detected_manager_change_ Reference/wd:ID[@wd:type='Employee_ID']/text()

managerId

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Manager_as_of_last_detected_manager_change_Reference/wd:ID[@wd:type='WID']/text()

Name.FamilyName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Legal_Na me_Data/wd:Name_Detail_Data/wd:Last_Name /text()

Name.Formatted

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Legal_Na me_Data/wd:Name_Detail_Dat/@wd:Formatted_Name

Name.GivenName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Legal_Na me_Data/wd:Name_Detail_Data/wd:First_Name/text()

notReturning

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/notReturning/text()

onLeave

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data/wd:On_Leave

OrganizationSubTypeID for Cost Center Hierarchy

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID'])/text()=’{value_for_the_UI_config_field_OrganizationSubTypeID for Cost Center Hierarchy}']/Organization_Type_Reference/wd:ID[@type='Organization_subType_ID']/text()

OrganizationSubTypeID for Matrix

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Type_Reference/wd:ID[@type='Organization_Type_ID'])/text()='{value_for_the_UI_config_field_OrganizationTypeID for Matrix}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationTypeID for Cost Center Hierarchy

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Subtype_Reference/wd:ID[@type='Organization_type_ID'])/text()=’{value_for_the_UI_config_field_OrganizationTypeID for Cost Center Hierarchy}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for Matrix

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID'])/text()='{value_for_the_UI_config_field_OrganizationSubTypeID for Matrix}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrgSubTypeID for Custom Organizations

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID'])/text()=’{value_for_the_UI_config_field_OrgSubTypeID for Custom Organizations}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrgTypeID for Custom Organizations

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Type_Reference/wd:ID[@type='Organization_Type_ID'])/text()=’{value_for_the_UI_config_field_OrgTypeID for Custom Organizations}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

originalHireDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Orignial_Hire_Date/text(

personalAssistantID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_PersonalAssistant>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@wd:type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_PersonalAssistant>']/wd:Organization_Reference/wd:ID[@wd:type='WID']/text()

PhoneNumbers.businessPhone

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[string(wd:Phone_Device_Type_ID/wd:ID[@wd:type='Phone_Device_Type_ID'])=<Landline_ Device_Type_ID>]/wd:Phone_Number/text() wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID'])='Home']

PhoneNumbers.cellPhone

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[string(wd:Phone_Device_Type_ID/wd:ID[@wd:type='Phone_Device_Type_ ID'])=<Mobile_ Device_Type_ID>]/wd:Phone_Number /text() wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID'])='Home']

PhoneNumbersWork.businessPhone

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[string(wd:Phone_Device_Type_ID/wd:ID[@wd:type='Phone_Device_Type_ID'])=<Landline_ Device_Type_ID>]/wd:Phone_Number/text()

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID'])='Work']

PhoneNumbersWork.cellPhone

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[string(wd:Phone_Device_Type_ID/wd:ID[@wd:type='Phone_Device_Type_

ID'])=<Mobile_Device_Type_ID>]/wd:Phone_Number/text()

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID'])='Work']

positionReferenceWID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Position_Reference/wd:ID[@wd:type='WID']

preferredCommunicationLanguageReference

/wd:Worker/wd:Worker_Data/wd:User_Account_Data/wd:Preferred_Communication_Language_Reference/text()

preferredFirstName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:First_Name/text()

preferredLastName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Last_Name/text()

preferredLastNameSuffix

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Suffix_Data/wd:Hereditary_Suffix_Reference/wd:Descriptor/text()

preferredMiddleName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Middle_Name/text()

primaryTerminationCategoryID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Primary_Termination_Category_Reference/wd:ID/[@wd:type='Termination_Category_ID']/text()

primaryTerminationSubCategoryID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Primary_Termination_Reason_Reference/wd:ID/[@wd:type='Termination_Subcategory_ID']/text()

region

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Region>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@wd:type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Region>']/wd:Organization_Reference/wd:ID[@wd:type='WID']/text()

rehire

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/rehire/text()

retired

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/Retired/text()

returnUnknown

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/returnUnknown/text()

samAccountName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<SAMAccountID>']/wd:ID/text()

startDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Start_Date/text()

status

Active (A): wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/Active/text()='1' Or Terminated (L): wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/Terminated/text()='1'

terminationDate

wd:Worker/wd:Worker_Data/wd:Employment_Data[string(wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID/@wd:type)='Employee_Type_ID']/wd:Worker_Status_Data/Termination_Date/text() or wd:Worker/wd:Worker_Data/wd:Employment_Data[string(wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID/@wd:type)='Contingent_Worker_Type_ID']/wd:Worker_Contract_Data/Contract_End_Date/text()

terminationLastDayOfWork

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/Termination_Last_Day_Of_Work/text()

title

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Position_Title/text()

userId

wd:Worker/wd:Worker_Data/wd:User_ID/text()

userLanguageReference

/wd:Worker/wd:Worker_Data/wd:User_Account_Data/wd:User_Language__Reference/text()

UserName

wd:Worker/wd:Worker_Data/wd:User_ID/text()

workerId

wd:Worker/wd:Worker_Data/wd:Worker_ID/text()

workerType

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd

:Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID[@w d:type='Employee_Type_ID' Or @wd:type='Contingent_Worker_Type_ID']/text()

Table 257: FutureDatedEmployees Mapping

SCIM Parameter

WorkDayHR Parameter

managerID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data/wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Data/wd:Worker_Reference/wd:ID[@wd:type='WID']

NOTE:

  • All the other SCIM Parameter mapping is same as the Employees Mapping.
Table 258: DeltaSyncEmployees Mapping
   

NOTE:

  • All the SCIM Parameter mapping is same as the Employees Mapping.
Table 259: Locations Mapping

SCIM Parameter

WorkDayHR Parameter

Addresses.country

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Refer ence/ID[@type='ISO_3166-1_Alpha-3_Code']/text()

Addresses.countryCode2

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Reference/ID[@type='ISO_3166-1_Alpha-2_Code']/text()

Addresses.locality

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Municipality/

text()

Addresses.postalCode

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Postal_Code/t ext()

Addresses.region

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Region_Descriptor/text()

Addresses.streetAddress

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/@Formatted_Addre ss

addressLineData.addressData

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Address_Line_Data/text()

countryRegionCode2

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Region_Reference/wd:ID[@wd:type='ISO_3166-2_Code']

countryRegionCode

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Region_Reference/wd:ID[@wd:type='ISO_3166-2_Country-Region_Code']

citySubDivisionData.citySubdivisionData

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Submunicipality_Data/text()

Emails.value

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Email_Address_Data/wd:Email_A ddress/text()

fax

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Phone_Data[string(Phone_Devic e_Type_Reference/ID[@wd:type='Phone_Device_Type_ID']/text())='Fax']/wd:Phone_ Number/text()

Id

wd:Location/Location_Reference/ID[@type='WID']/text()

locationID

wd:Location/wd:Location_Data/wd:Location_ID/text()

name

wd:Location/wd:Location_Data/wd:Location_Name/text()

regionSubDivisionData.regionSubdivisionData

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Subregion_Data/text()

status

wd:Location/wd:Location_Data/wd:Inactive/text()

telephone

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Phone_Data[string(Phone_Devic e_Type_Reference/ID[@wd:type='Phone_Device_Type_ID']/text())='Landline']/wd:P hone_Number/text()

Table 260: CustomOrgs Mapping

SCIM Parameter

WorkDayHR Parameter

companyReferenceID

wd:Organization/wd:Organization_Data/wd:Supervisory_Data/wd:Organization_Assignments_Data[string(wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Company>']/Organization_Reference/ID[@wd:type='WID']/text()

costCenterID

wd:Organization/wd:Organization_Data/wd:Supervisory_Data/wd:Organization_Assignments_Data[string(wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_CostCenter>']/Organization_Reference/ID[@wd:type='WID']/text()

Id

wd:Organization/Organization_Reference/ID[@type='WID']/text()

lastModifiedOn

wd:Organization/wd:Organization_Data/Last_Updated_DateTime/text()

locationID

wd:Organization/wd:Organization_Data/Supervisory_Data/Location_Reference/ID[@type='WID']/text()

managerReferenceID

wd:Organization/wd:Organization_Data/wd:Manager_Reference/wd:ID[@wd:type='WID']/text()

Meta.LastModified

wd:Organization/wd:Organization_Data/Last_Updated_DateTime/text()

name

wd:Organization/wd:Organization_Data/wd:Name/text()

organizationCode

wd:Organization/wd:Organization_Data/wd:Organization_Code/text()

organizationOwnerID

wd:Organization/wd:Organization_Data/Organization_Owner_Reference/ID[@type='WID']/text()

organizationTypeReferenceID

wd:Organization/wd:Organization_Data/Organization_Type_Reference/ID[@type='Organization_Type_ID']/text()

referenceID

wd:Organization/wd:Organization_Data/wd:Reference_ID/text()

regionReferenceID

wd:Organization/wd:Organization_Data/wd:Supervisory_Data/wd:Organization_Assignments_Data[string(wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Region>']/Organization_Reference/ID[@wd:type='WID']/text()

status

wd:Organization/wd:Organization_Data/wd:Inactive/text()

type

wd:Organization/wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

includedInOrganizationReferenceWID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Position_Reference/wd:ID[@wd:type='WID']

Table 261: JobClassifications

SCIM Parameter

WorkDayHR Parameter

groupId

Job_Classification_Group/Job_Classification_Group_Data/ID/text()

groupName

Job_Classification_Group/Job_Classification_Group_Name_Data/ Job_Classification_Group_Name/text()

Id

Job_Classification_Group/Job_Classification_Group_Reference/ID[@type='WID']/text()

inActive

Job_Classification_Group/Job_Classification_Group_Data/Inactive/text()

Table 262: Positions

SCIM Parameter

WorkDayHR Parameter

ID

wd:Position/wd:Position_Reference/wd:Employment_Data/ID[@type='WID']/text()

jobPostingTitle

wd:Position/wd:Position_Data/wd:Position_Definition_Data/wd:Job_Posting_Title/text()

jobDescriptionSummary

wd:Position/wd:Position_Data/wd:Position_Definition_Data/wd:Job_Description_Summary/text()

positionID

wd:Position/wd:Position_Data/wd:Position_Definition_Data/wd:Position_ID/text()

Filter Resource

Workday Employee resource response does not provide 'meta.lastModified' in the response. This makes impossible to get the revision filtered employees list. The full employee list without revision filters will be too slow for frequent synchronizations. As a work-around for this the Workday HR connector has been modified to support filtering only on the Employees endpoint. Even though the intension to support filtering is only on 'meta.lastModified', the connector has been modified to support some more attributes for filtering. Below are the details on the supported attributes and operations on filter functionality on the Employee resource on the SCIM connector.

NOTE:

WorkdayHR supports two kind of updates -

  • Manual update- when an employee record is updated manually on workdayHR.

  • effective update - when an employee is updated manually with an effective date and workdayHR updates the record as the effective date is reached

A new endpoint DeltaSyncEmployees has been added to support these two updates using combination of two filters - meta.lastModified and manualupdate

Supported attributes for Filtering Employee Resource

Table 263: Supported attributes for Filtering Employee Resource
Attribute Supported Operations
addresses.country eq (equal to)
assetClass eq
company eq
costCenter eq
department eq
desk eq
division eq

futurehire

eq

meta.lastModified

gt (greater than)

ge (greater than or equal to)

personalAssistantID

eq

region

eq

status

eq

manualUpdate

eq

NOTE: As the WorkDayHR API supports only filtering of Active Employees, Status filter has been implemented to support only Active employees. Filtering of inactive employees is not supported. Valid values for Status filter is 'A' for active Employees.

NOTE: manualUpdate is only applicable for DeltaSyncEmployees endpoint

More information about Filtering Resource

  • As the Workday API supports only AND conditions in the request filter criteria, the connector has been implemented to support only AND in SCIM filter condition.

  • In the connector filter functionality, any invalid or non-supported filter criteria will be ignored in the filter. If no valid criteria found, then normal LIST employees will be carried out.

  • Due to timezone differences there is a considerable difference in the Workday returned date time data and the local date time date. Since the Workday documentation do not mention on the supported timezone, as a work around, 1 day is subtracted from current date time while implementing the filter in the Workday HR connector for meta.lastModified. Similarly 1 day is subtracted from the meta.lastModified value in the filter criteria while making a request to the target system.

  • The filter functionality searches generously for the filter condition and values instead of performing a greedy and strict match. For example: the meta.lastModified with below are some of the valid formats:

    filter=meta.lastModified gt xxxx-xx-xxTxx:xx:xx

    filter=meta.lastModified gt xxxx-xx-xx xx:xx:xx

    filter=meta.lastModified gt xxxx-xx-xxTxx:xx:xx.xxx

    filter=meta.lastModified gt "xxxx-xx-xxTxx:xx:xx"

    filter=meta.lastModified gt xxxx-xx-xx xx:xx:xxZ

    filter=meta.lastModified gt xxxx-xx-xxTxx:xx:xx.xxxZ

    filter=meta.lastModified gt 'xxxx-xx-xxTxx:xx:xx'

For more information about Filter Resource, see Workday documentation of filtering on Workers endpoints.

One IM Configuration for Delta Synchronization

Modifying the FullProjection process

  1. In Designer, locate the 'DPR_DPRProjectionStartInfo_Run_Synchronization' process click to edit it. Under 'Pre-script for generating' add the script as mentioned below:

    'Starling Delta Sync Handling (search sync project variables with their names staring with dprRevisionDate and put the corresponding revision data value in)

    Dim f = session.SqlFormatter

    Dim nameSchema as String

    Dim nameVariable as String

    Dim variableValue as String

    values("OverrideVariables") = ""

     

    'search project variables dprRevisionDate*

    Dim qVariables = Query _

    .From("DPRSystemVariable") _

    .Orderby("UID_DPRSystemVariable") _

    .Where( f.AndRelation( _

    f.Comparison("Name", "dprRevisionDate%", ValType.String, CompareOperator.Like, FormatterOptions.IgnoreCase), _

    f.UidComparison("UID_DPRSystemVariableSet", $UID_DPRSystemVariableSet$, CompareOperator.Equal))) _

    .Select("Name")

    Dim colVariables = Session.Source.GetCollection(qVariables)

     

    If colVariables.Count > 0 then

    'fetching revision data from last synchronization of that sync project configuration

    Dim qRevStore = Query _

    .From("DPRRevisionStore") _

    .Where( f.AndRelation( _

    f.UidComparison("UID_DPRProjectionConfig", $UID_DPRProjectionConfig$, CompareOperator.Equal), _

    f.UidComparison("UID_DPRSystemVariableSet", $UID_DPRSystemVariableSet$, CompareOperator.Equal))) _

    .Select("Value", "SchemaTypeKey")

     

    Dim colRevStore = Session.Source.GetCollection(qRevStore)

    Dim dictRevStore = new System.Collections.Generic.Dictionary(of String, String)()

     

    For Each elemRevStore As IEntity In colRevStore

    nameSchema = elemRevStore.GetValue("SchemaTypeKey").String 'Schema[FTP#C04A6567-9EAE-4121-973E-AF1EE514D728].Type[Employees]

    If string.IsNullOrEmpty(nameSchema) OrElse not nameSchema.Contains(".") then

    Continue For

    End If

    nameSchema = nameSchema.Split("."c)(1)

     

    dictRevStore.Add(nameSchema, elemRevStore.GetValue("Value").String)

    Next

     

    'put the revision date into the variables if available, else provide the revision data as 1900-01-01

    Dim lstVariables = new System.Collections.Generic.List(of String)()

    For Each elemVariable As IEntity In colVariables

    nameVariable = elemVariable.GetValue("Name").String 'e.g. dprRevisionDateEmployees

    nameSchema = string.Format("Type[{0}]", nameVariable.Trim().Substring(15)) 'e.g. Type[Employees]

     

    If dictRevStore.TryGetValue(nameSchema, variableValue) then

    values(nameVariable) = variableValue.Replace(" ", "T")

    Else

    values(nameVariable) = "1900-01-01"

    End If

    lstVariables.Add(nameVariable)

    Next

    values("OverrideVariables") = string.Join(";", lstVariables.ToArray())

    End If

  2. Under 'Run Synchronization' select 'Parameters' tab and provide the below script under 'OverrideVariables'.

    If not String.IsNullOrEmpty(values("OverrideVariables").ToString()) then

    Imports System.Data.Common

    Dim sb as DbConnectionStringBuilder = new DbConnectionStringBuilder(false)

    For each varName as String in values("OverrideVariables").ToString().Split(";"c)

    sb.Add(varName, values(varName).ToString())

    Next

    Value = sb.ConnectionString

    End if

  3. 'Commit to database' and then 'Compile database'.

Modifying the synchronization project

  1. Make sure that the local cache is turned off for the Synchronization project.

    NOTE: This is applicable for employees and DeltaSyncEmployees endpoint.

  2. Select the SCIM synchronization project and select 'Variables' to add a new variable similar to 'dprRevisionDateEmployees' (the variable name should be dprRevisionDate<schema name>).

  3. Create a new 'Schema Class' from the supported endpoints in the 'Target system'. For example: "Employees for Delta Sync".

  4. On the Schema Class set the System Filter: meta.LastModified gt $dprRevisionDate<Schema name>$. Under 'Select Objects' tab, use 'meta_lastModified' as the attribute, '>' as the operator and $dprRevisionDate<Schema name>$ as the text field value.

    NOTE:

    To get the all the updates from DeltaSyncEmployee Endpoint, please follow the additional step

    • Create two new 'Schema Class' from Employee in the 'Target system'. For example:

      "Manual Update Employees for Delta Sync" & "Effective Update Employees for Delta Sync"

    • On the respective Schema Classes set the System Filter: meta.LastModified gt

    $dprRevisionDateDeltaSyncEmployees$ and manualUpdate eq 'true' for manualUpdate, meta.LastModified gt

    $dprRevisionDateDeltaSyncEmployees$ and manualUpdate eq 'false' for effective update.

    Under 'Select Objects' tab, use 'meta_lastModified' as the attribute, '>' as the operator and $dprRevisionDateDeltaSyncEmployees$ as the text field value.

  5. As required, other supported attributes also can be added under filters.

  6. Create a new Mapping using the new Schema Class dialog box.

  7. Create a new Workflow using the new mapping. This workflow updates the existing records based on the revision filter.

  8. To improve the syncs performance, remove the update steps from the existing default Initial sync Work Flow.

  9. Create a new Startup Config using the new workflow. Select 'One Identity Manager' for the 'Synchronization in direction'. Use 'default variable set' for the 'Variable Set'.

  10. Use hotfix #33601 on One Identity Manager version 8.1.2 and 8.1.4.

Connector limitations

  • It supports GET operation.
  • Currently, Update functionality is available only for the following attributes of the Employees object:

    NOTE:Update of phone information supports work and home based on the attribute being updated, phoneNumbersWork and phoneNumbers respectively.

    • cellPhone
    • businessPhone
    • email
    • username
    • SAMAccount ID (Custom ID for SAMAccount Name)

  • CREATE and DELETE operations are not supported by any object.

  • Any changes to the updatable employee attributes for contact information listed above will be performed effective immediately (EffectiveDate = today). Updates will only be successful if no future dated event is pending, that may conflict with the attribute update.

  • There is no meta.LastModified attribute available for Employees and Location endpoint. Delta sync could be performed by following the steps in One IM Configuration for Delta Synchronization.

  • When using futurehire filter, delta sync cannot be used as it will affect the future hire results returned from WorkdayHR API.

  • The target system WorkdayHR API supports:-

    • OR operation only within the same filter type.

    • AND operation only across different filter type.

    For example, costCenter and region belongs to Organization type. WorkdayHR API will perform OR operation and return employees that belong to either of the Organization. Conversely, in case of costCenter and country, WorkdayHR will perform AND operation and return employees that belong to Costcenter and Country.

Connector versions and features

The following subsections describe the different connector version(s) and features available with them.

Features available exclusively in Workday HR v.2.0

Following are the features that are available exclusively in Workday HRv.2.0:

  • The Employee endpoint is enhanced to support the PATCH operation to update the Employee details.

    NOTE:The supported attributes for Employee PATCH operation will be same as the UPDATE.

  • The Employee endpoint is enhanced to support the DELETE functionality for following attributes:

    • SamAccountName

    • Email

    • PhoneNumbers

    NOTE:Set the supported attributes value to blank in One Identity Manager to delete them from target system.

Supervisor configuration parameters

The WorkdayHR connector allows you to connect WorkdayHR with One Identity Starling enabling you to take advantage of the features and products available with Starling Connect that complement and enhance WorkdayHR’s cloud-based human resource management services.

To configure the connector, following parameters are required:

  • Connector name

  • Tenant

  • API Version

  • Username

  • Password
  • WorkdayHR instance URL (Cloud application's instance URL used as target URI in the payload)

  • Customer-specific configuration parameters must be configured based on the Workday HR instance.

    • OrganizationTypeID for Department

    • OrganizationTypeID for Division

    • OrganizationTypeID for Desk

    • OrganizationTypeID for CostCenter

    • OrganizationTypeID for Company

    • OrganizationTypeID for Region

    • OrganizationTypeID for Personal Assistant

    • OrganizationTypeID for Asset Class

    • OrganizationTypeID for DepartmentHead

    • OrganizationSubTypeID for Department

    • OrganizationSubTypeID for Division

    • OrganizationSubTypeID for Desk

    • OrganizationSubTypeID for CostCenter

    • OrganizationSubTypeID for Company

    • OrganizationSubTypeID for Region

    • OrganizationSubTypeID for Personal Assistant

    • OrganizationSubTypeID for Asset Class

    • OrganizationRoleID for Department Head

    • CustomIDTypeID for Date Joined Industry

    • CustomIDTypeID for Code Of Conduct

    • CustomIDTypeID for External ID

    • Certification Names

    • Additional Names Types

    • OrganizationType reference ID for Location Hierarchy

    • SAMAccount ID Type

    • Mobile Device Type ID

    • Landline Device Type ID

    • OrgTypeID for Custom Organizations

    • OrgSubTypeID for Custom Organizations

    • OrganizationTypeID for Matrix

    • OrganizationSubTypeID for Matrix

    • Future Hire Interval

    • Business Process Types

    • Retry Server Call

      IMPORTANT:

      • Retry Server Call is used to make a retry request to WorkdayHR target instance in-case of failures related to the instance being unreachable at a given point in time.
      • By Default the value is set to false. The customer can enable it in-case such failures are encountered.
    • Increase Request Time out

      IMPORTANT:The default request time out is 100 seconds, please enable this option if time out exception occurs.

  • Use Change Contact Information API for Update.

    IMPORTANT:

    • This configuration defines which update API will be used to update the contact details including email, cell phone and business phone. When the configuration is enabled the Change_Work_Contact_Information API and Change_Home_Contact_Information API would be used to update the work and home contact information respectively.

    • By default, the configuration would be disabled and the update will use Maintain_Contact_Information API.

    • For additional information on update configurations in One Identity Manager, refer Additional configuration for update.

NOTE:

Supported objects and operations

Employees

Table 248: Supported operations for Employees

Operation

VERB

Get Employee GET
Get All Employees GET

Update Employee

PUT

NOTE:

  • The Get Employee endpoint fetches the primary work email, primary cellphone and landline for home and work. The Update Employee endpoint sets the default value for email to type work and public to false, when the values for type and public flag are not provided. IsPrimary is always set to true.

Locations

Table 249: Supported operations for Locations

Operation

VERB

Get Location GET
Get All Locations GET

CustomOrgs

Table 250: Supported operations for CustomOrgs

Operation

VERB

Get CustomOrg GET
Get All CustomOrgs GET

NOTE:

  • CustomOrgs is a single endpoint that provides information on Departments, SubDivisions, Divisions, Desks, LegalEntities and CostCenters.
  • To extract specific entities from CustomOrgs you must create the mappings, workflow steps and set up the filter.
  • For more information, see OneIM_CloudHRSystems_Administration guide on the Support site.

JobClassifications

Table 251: Supported operations for JobClassifications

Operation

VERB

Get JobClassification GET
Get All JobClassifications GET

FutureDatedEmployees

Table 252: Supported operations for FutureDatedEmployees

Operation

VERB

Get FutureDatedEmployees GET
Get All FutureDatedEmployees GET

NOTE:

  • The Get All FutureDatedEmployees endpoint is dependent on the Starling UI config parameters Business process type and Future Hire Interval.

  • The FutureDatedEmployees endpoint does not support any filters.

DeltaSyncEmployees

Table 253: Supported operations for DeltaSyncEmployees

Operation

VERB

Get DeltaSyncEmployees GET
Get All DeltaSyncEmployees GET GET

NOTE: This endpoint is only for supporting the delta sync.

Positions

Table 254: Supported operations for Positions

Operation

VERB

Get Position GET
Get All Position GET

NOTE: This Endpoint requires additional permission for the API.

Mappings

Endpoint Mapping

Table 255: Target system objects mapping
Target system objects SCIM endpoints
Workers Employees
Locations Locations
Organizations CustomOrgs

Job Classification Groups

JobClassifications

Attributes Mapping

Different mappings associated with this connector are listed in the tables below:

Table 256: Employees mapping
SCIM parameter WorkDayHR parameter

AdditionalNames.details[]

Additional_Name_Type_ID;First_Name;Last_Name

Addresses.country

Worker/Worker_Data/Personal_Data/Contact_Data/Address_Data[@Defaul ted_Business_Site_Address=1]/Country_Reference/ID[@wd:type='ISO_31 66-1_Alpha-3_Code']/text()

Addresses.countryCode2

wd:Worker/Worker_Data/Personal_Data/Contact_Data/Address_Data[@Defaulted_Business_Site_Address=1]/Country_Reference/ID[@wd:type='ISO_31 66-1_Alpha-2_Code']/text()

Addresses.locality

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Addre ss_Data[@wd:Defaulted_Business_Site_Address=1]/wd:Municipality/text()

Addresses.postalCode

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/Address_ Data[@Defaulted_Business_Site_Address=1]/Postal_Code/text()

Addresses.region

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Addre ss_Data[@wd:Defaulted_Business_Site_Address=1]/wd:Country_Region_Descriptor/text()

Addresses.streetAddress

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Addre ss_Data[@wd:Defaulted_Business_Site_Address=1]/@wd:Formatted_Address

assetClass

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_AssetClass>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@wd:type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_AssetClass>']/wd:Organization_Reference/wd:ID[@wd:type='WID']/text()

businessUnitWID

wd:Worker/wd:Worker_ Data/wd:Organization_Data/wd:Worker_Organization_Data/wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text()='Business_Unit'/ID [@type='WID']/text()

Certificates.certificateDetails[]

Certification_Name;Certification_ID;Certification_Skill_ID;Issued_Date;Expiry_Date

codeOfConduct

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<CodeOfConductValue>']/wd:ID/text()

company

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organiz

ation_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Company>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Company>']/Organization_Reference/ID[@type='WID']/text()

costCenter

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_CostCenter>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_CostCenter>']/Organization_Reference/ID[@type='WID']/text()

dateJoinedIndustry

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<DateJoinedIndustryValue>']/wd:ID/text()

dateOfBirth

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Birth_Date/text()

daysUnemployed

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/daysUnemployed/text()

department

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_for_Department>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Department>']/Organization_Reference/ID[@type='WID']/text()

departmentHeadID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_DepartmentHead>' and string(wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Reference/wd:ID[@wd:type='Organization_Role_ID']/text())='<OrganizationRoleID_For_DepartmentHead>' and string(wd:Organization_Support_Role_Data/wd:Organization_Support_Role/Organization_Role_Data/Assignment_From/text())='assigned']/wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Data/Worker_Reference/ID[@wd:type='WID']/text()

desk

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Desk>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Desk>']/Organization_Reference/ID[@type='WID']/text()

DisplayName

wd:Worker/wd:Worker_Descriptor/text()

division

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_for_Division>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Division>']/Organization_Reference/ID[@type='WID']/text()

Emails.value

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Email _Address_Data/wd:Email_Address/text()

endDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:End_Date/text()

estimatedLeaveEndDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data[wd:On_Leave='1']/wd:Estimated_Leave_End_Date/text()

externalID

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<ExternalIDValue>']/wd:ID/text()

externalIDDescription

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<ExternalIDValue>']/wd:Custom_Description/text()

externalIDType

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data/wd:ID_Type_Reference[string(wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<ExternalIDValue>']/wd:ID[@wd:type='Custom_ID_Type_ID']/text()

fullTimeEquivalentPercentage

/wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Data/wd:Full_Time_Equivalent_Percentage/text()

Gender

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Gender_Reference/wd:ID[@wd:type="Gender_Code"]/text()

hireDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Hire_Date/text()

hireReason

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Hire_Reason_Reference/wd:ID/[@wd:type='General_Event_Subcategory_ID']/text()

hireRescinded

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/hireRescinded/text()

Id

wd:Worker/wd:Worker_Reference/wd:ID[@wd:type='WID']/text()

isContingentWorker

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd :Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID/@w d:type='Contingent_Worker_Type_ID'

isEmployee

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd :Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID/@w d:type='Employee_Type_ID'

jobClassificationReference.id

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data

[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Classification_Summary_Data/wd:Job_Classification_Reference/wd:ID[@wd:type='WID']

jobClassificationReference.referenceID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data

[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Classification_Summary_Data/wd:Job_Classification_Reference/wd:ID[@wd:type='Job_Classification_Reference_ID']

jobClassifications.id

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Classification_Summary_Data/wd:Job_Group_Reference/wd:ID[@wd:type='WID']

jobFamilyID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Data/wd:Job_Profile_Summary_Data/wd:Job_Family_Reference/wd:ID[@wd:type='Job_Family_ID']/text()

jobProfileID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Profile_Summary_Data/wd:Job_Profile_Reference/wd:ID[wd:type='Job_Profile_ID']/text()

jobTitle

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Business_Title/text()

lastHierarchicalManagerWID

wd:Worker/wd:Worker_

Data/wd:Management_Chain_Data/wd:Worker_Supervisory_Management_Chain_Data/wd:Management_Chain_Data/wd:Manager/wd:Worker_Reference/wd:ID[@wd:type='WID']/text()

leaveAbsenceType

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data[wd:On_Leave='1']/wd:Leave_of_Absence_Type_Reference/wd:ID[@wd:type='Leave_of_Absence_Type_ID']/text()

leaveEndDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data[wd:On_Leave='1']/wd:Leave_End_Date/text()

leaveStartDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data[wd:On_Leave='1']/wd:Leave_Start_Date/text()

localFirstName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Local_Name_Detail_Data/wd:First_Name/text()

localLastName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Local_Name_Detail_Data/wd:Last_Name/text()

localTerminationReasonID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Local_Termination_Reason_Reference/wd:ID/[@wd:type='Local_Termination_Reason_ID']/text()

managementLevelID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Job_Profile_Summary_Data/wd:Management_Level_Reference/wd:ID[wd:type='Management_Level_ID']/text()

managerEmployeeID

wd:Worker/wd:Worker_ Data/wd:Employment_Data/wd:Worker_ Job_Data[@wd:Primary_ Job=1]/wd:Position_Data/wd:Manager_as_ of_last_detected_manager_change_ Reference/wd:ID[@wd:type='Employee_ID']/text()

managerId

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Manager_as_of_last_detected_manager_change_Reference/wd:ID[@wd:type='WID']/text()

Name.FamilyName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Legal_Na me_Data/wd:Name_Detail_Data/wd:Last_Name /text()

Name.Formatted

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Legal_Na me_Data/wd:Name_Detail_Dat/@wd:Formatted_Name

Name.GivenName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Legal_Na me_Data/wd:Name_Detail_Data/wd:First_Name/text()

notReturning

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/notReturning/text()

onLeave

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Leave_Status_Data/wd:On_Leave

OrganizationSubTypeID for Cost Center Hierarchy

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID'])/text()=’{value_for_the_UI_config_field_OrganizationSubTypeID for Cost Center Hierarchy}']/Organization_Type_Reference/wd:ID[@type='Organization_subType_ID']/text()

OrganizationSubTypeID for Matrix

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Type_Reference/wd:ID[@type='Organization_Type_ID'])/text()='{value_for_the_UI_config_field_OrganizationTypeID for Matrix}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationTypeID for Cost Center Hierarchy

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Subtype_Reference/wd:ID[@type='Organization_type_ID'])/text()=’{value_for_the_UI_config_field_OrganizationTypeID for Cost Center Hierarchy}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for Matrix

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID'])/text()='{value_for_the_UI_config_field_OrganizationSubTypeID for Matrix}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrgSubTypeID for Custom Organizations

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID'])/text()=’{value_for_the_UI_config_field_OrgSubTypeID for Custom Organizations}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrgTypeID for Custom Organizations

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data[string(wd:Organization_Type_Reference/wd:ID/@type\)='Organization_Type_ID' and string(wd:Organization_Subtype_Reference/wd:ID/@type\)='Organization_Subtype_ID' and string(wd:Organization_Type_Reference/wd:ID[@type='Organization_Type_ID'])/text()=’{value_for_the_UI_config_field_OrgTypeID for Custom Organizations}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

originalHireDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Orignial_Hire_Date/text(

personalAssistantID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_PersonalAssistant>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@wd:type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_PersonalAssistant>']/wd:Organization_Reference/wd:ID[@wd:type='WID']/text()

PhoneNumbers.businessPhone

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[string(wd:Phone_Device_Type_ID/wd:ID[@wd:type='Phone_Device_Type_ID'])=<Landline_ Device_Type_ID>]/wd:Phone_Number/text() wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID'])='Home']

PhoneNumbers.cellPhone

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[string(wd:Phone_Device_Type_ID/wd:ID[@wd:type='Phone_Device_Type_ ID'])=<Mobile_ Device_Type_ID>]/wd:Phone_Number /text() wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID'])='Home']

PhoneNumbersWork.businessPhone

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[string(wd:Phone_Device_Type_ID/wd:ID[@wd:type='Phone_Device_Type_ID'])=<Landline_ Device_Type_ID>]/wd:Phone_Number/text()

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID'])='Work']

PhoneNumbersWork.cellPhone

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data[string(wd:Phone_Device_Type_ID/wd:ID[@wd:type='Phone_Device_Type_

ID'])=<Mobile_Device_Type_ID>]/wd:Phone_Number/text()

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference/wd:ID[@wd:type='Communication_Usage_Type_ID'])='Work']

positionReferenceWID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Position_Reference/wd:ID[@wd:type='WID']

preferredCommunicationLanguageReference

/wd:Worker/wd:Worker_Data/wd:User_Account_Data/wd:Preferred_Communication_Language_Reference/text()

preferredFirstName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:First_Name/text()

preferredLastName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Last_Name/text()

preferredLastNameSuffix

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Suffix_Data/wd:Hereditary_Suffix_Reference/wd:Descriptor/text()

preferredMiddleName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Preferred_Name_Data/wd:Name_Detail_Data/wd:Middle_Name/text()

primaryTerminationCategoryID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Primary_Termination_Category_Reference/wd:ID/[@wd:type='Termination_Category_ID']/text()

primaryTerminationSubCategoryID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/wd:Primary_Termination_Reason_Reference/wd:ID/[@wd:type='Termination_Subcategory_ID']/text()

region

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Organizations_Data/wd:Position_Organization_Data[string(wd:Organization_Data/wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Region>'] and string(wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@wd:type='Organization_Subtype_ID']/text())='<OrganizationSubTypeID_For_Region>']/wd:Organization_Reference/wd:ID[@wd:type='WID']/text()

rehire

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/rehire/text()

retired

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/Retired/text()

returnUnknown

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/returnUnknown/text()

samAccountName

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Identification_Data/wd:Custom_ID/wd:Custom_ID_Data[string(wd:ID_Type_Reference/wd:ID/@wd:type)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@wd:type='Custom_ID_Type_ID']/text())='<SAMAccountID>']/wd:ID/text()

startDate

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Start_Date/text()

status

Active (A): wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/Active/text()='1' Or Terminated (L): wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/Terminated/text()='1'

terminationDate

wd:Worker/wd:Worker_Data/wd:Employment_Data[string(wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID/@wd:type)='Employee_Type_ID']/wd:Worker_Status_Data/Termination_Date/text() or wd:Worker/wd:Worker_Data/wd:Employment_Data[string(wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID/@wd:type)='Contingent_Worker_Type_ID']/wd:Worker_Contract_Data/Contract_End_Date/text()

terminationLastDayOfWork

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Status_Data/Termination_Last_Day_Of_Work/text()

title

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Position_Title/text()

userId

wd:Worker/wd:Worker_Data/wd:User_ID/text()

userLanguageReference

/wd:Worker/wd:Worker_Data/wd:User_Account_Data/wd:User_Language__Reference/text()

UserName

wd:Worker/wd:Worker_Data/wd:User_ID/text()

workerId

wd:Worker/wd:Worker_Data/wd:Worker_ID/text()

workerType

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd

:Primary_Job=1]/wd:Position_Data/wd:Worker_Type_Reference/wd:ID[@w d:type='Employee_Type_ID' Or @wd:type='Contingent_Worker_Type_ID']/text()

Table 257: FutureDatedEmployees Mapping

SCIM Parameter

WorkDayHR Parameter

managerID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data/wd:Position_Organizations_Data/wd:Position_Organization_Data/wd:Organization_Data/wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Data/wd:Worker_Reference/wd:ID[@wd:type='WID']

NOTE:

  • All the other SCIM Parameter mapping is same as the Employees Mapping.
Table 258: DeltaSyncEmployees Mapping
   

NOTE:

  • All the SCIM Parameter mapping is same as the Employees Mapping.
Table 259: Locations Mapping

SCIM Parameter

WorkDayHR Parameter

Addresses.country

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Refer ence/ID[@type='ISO_3166-1_Alpha-3_Code']/text()

Addresses.countryCode2

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Reference/ID[@type='ISO_3166-1_Alpha-2_Code']/text()

Addresses.locality

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Municipality/

text()

Addresses.postalCode

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Postal_Code/t ext()

Addresses.region

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Region_Descriptor/text()

Addresses.streetAddress

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/@Formatted_Addre ss

addressLineData.addressData

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Address_Line_Data/text()

countryRegionCode2

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Region_Reference/wd:ID[@wd:type='ISO_3166-2_Code']

countryRegionCode

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Country_Region_Reference/wd:ID[@wd:type='ISO_3166-2_Country-Region_Code']

citySubDivisionData.citySubdivisionData

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Submunicipality_Data/text()

Emails.value

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Email_Address_Data/wd:Email_A ddress/text()

fax

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Phone_Data[string(Phone_Devic e_Type_Reference/ID[@wd:type='Phone_Device_Type_ID']/text())='Fax']/wd:Phone_ Number/text()

Id

wd:Location/Location_Reference/ID[@type='WID']/text()

locationID

wd:Location/wd:Location_Data/wd:Location_ID/text()

name

wd:Location/wd:Location_Data/wd:Location_Name/text()

regionSubDivisionData.regionSubdivisionData

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Address_Data/wd:Subregion_Data/text()

status

wd:Location/wd:Location_Data/wd:Inactive/text()

telephone

wd:Location/wd:Location_Data/wd:Contact_Data/wd:Phone_Data[string(Phone_Devic e_Type_Reference/ID[@wd:type='Phone_Device_Type_ID']/text())='Landline']/wd:P hone_Number/text()

Table 260: CustomOrgs Mapping

SCIM Parameter

WorkDayHR Parameter

companyReferenceID

wd:Organization/wd:Organization_Data/wd:Supervisory_Data/wd:Organization_Assignments_Data[string(wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Company>']/Organization_Reference/ID[@wd:type='WID']/text()

costCenterID

wd:Organization/wd:Organization_Data/wd:Supervisory_Data/wd:Organization_Assignments_Data[string(wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_CostCenter>']/Organization_Reference/ID[@wd:type='WID']/text()

Id

wd:Organization/Organization_Reference/ID[@type='WID']/text()

lastModifiedOn

wd:Organization/wd:Organization_Data/Last_Updated_DateTime/text()

locationID

wd:Organization/wd:Organization_Data/Supervisory_Data/Location_Reference/ID[@type='WID']/text()

managerReferenceID

wd:Organization/wd:Organization_Data/wd:Manager_Reference/wd:ID[@wd:type='WID']/text()

Meta.LastModified

wd:Organization/wd:Organization_Data/Last_Updated_DateTime/text()

name

wd:Organization/wd:Organization_Data/wd:Name/text()

organizationCode

wd:Organization/wd:Organization_Data/wd:Organization_Code/text()

organizationOwnerID

wd:Organization/wd:Organization_Data/Organization_Owner_Reference/ID[@type='WID']/text()

organizationTypeReferenceID

wd:Organization/wd:Organization_Data/Organization_Type_Reference/ID[@type='Organization_Type_ID']/text()

referenceID

wd:Organization/wd:Organization_Data/wd:Reference_ID/text()

regionReferenceID

wd:Organization/wd:Organization_Data/wd:Supervisory_Data/wd:Organization_Assignments_Data[string(wd:Organization_Type_Reference/wd:ID[@wd:type='Organization_Type_ID']/text())='<OrganizationTypeID_For_Region>']/Organization_Reference/ID[@wd:type='WID']/text()

status

wd:Organization/wd:Organization_Data/wd:Inactive/text()

type

wd:Organization/wd:Organization_Data/wd:Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

includedInOrganizationReferenceWID

wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=1]/wd:Position_Data/wd:Position_Reference/wd:ID[@wd:type='WID']

Table 261: JobClassifications

SCIM Parameter

WorkDayHR Parameter

groupId

Job_Classification_Group/Job_Classification_Group_Data/ID/text()

groupName

Job_Classification_Group/Job_Classification_Group_Name_Data/ Job_Classification_Group_Name/text()

Id

Job_Classification_Group/Job_Classification_Group_Reference/ID[@type='WID']/text()

inActive

Job_Classification_Group/Job_Classification_Group_Data/Inactive/text()

Table 262: Positions

SCIM Parameter

WorkDayHR Parameter

ID

wd:Position/wd:Position_Reference/wd:Employment_Data/ID[@type='WID']/text()

jobPostingTitle

wd:Position/wd:Position_Data/wd:Position_Definition_Data/wd:Job_Posting_Title/text()

jobDescriptionSummary

wd:Position/wd:Position_Data/wd:Position_Definition_Data/wd:Job_Description_Summary/text()

positionID

wd:Position/wd:Position_Data/wd:Position_Definition_Data/wd:Position_ID/text()

Filter Resource

Workday Employee resource response does not provide 'meta.lastModified' in the response. This makes impossible to get the revision filtered employees list. The full employee list without revision filters will be too slow for frequent synchronizations. As a work-around for this the Workday HR connector has been modified to support filtering only on the Employees endpoint. Even though the intension to support filtering is only on 'meta.lastModified', the connector has been modified to support some more attributes for filtering. Below are the details on the supported attributes and operations on filter functionality on the Employee resource on the SCIM connector.

NOTE:

WorkdayHR supports two kind of updates -

  • Manual update- when an employee record is updated manually on workdayHR.

  • effective update - when an employee is updated manually with an effective date and workdayHR updates the record as the effective date is reached

A new endpoint DeltaSyncEmployees has been added to support these two updates using combination of two filters - meta.lastModified and manualupdate

Supported attributes for Filtering Employee Resource

Table 263: Supported attributes for Filtering Employee Resource
Attribute Supported Operations
addresses.country eq (equal to)
assetClass eq
company eq
costCenter eq
department eq
desk eq
division eq

futurehire

eq

meta.lastModified

gt (greater than)

ge (greater than or equal to)

personalAssistantID

eq

region

eq

status

eq

manualUpdate

eq

NOTE: As the WorkDayHR API supports only filtering of Active Employees, Status filter has been implemented to support only Active employees. Filtering of inactive employees is not supported. Valid values for Status filter is 'A' for active Employees.

NOTE: manualUpdate is only applicable for DeltaSyncEmployees endpoint

More information about Filtering Resource

  • As the Workday API supports only AND conditions in the request filter criteria, the connector has been implemented to support only AND in SCIM filter condition.

  • In the connector filter functionality, any invalid or non-supported filter criteria will be ignored in the filter. If no valid criteria found, then normal LIST employees will be carried out.

  • Due to timezone differences there is a considerable difference in the Workday returned date time data and the local date time date. Since the Workday documentation do not mention on the supported timezone, as a work around, 1 day is subtracted from current date time while implementing the filter in the Workday HR connector for meta.lastModified. Similarly 1 day is subtracted from the meta.lastModified value in the filter criteria while making a request to the target system.

  • The filter functionality searches generously for the filter condition and values instead of performing a greedy and strict match. For example: the meta.lastModified with below are some of the valid formats:

    filter=meta.lastModified gt xxxx-xx-xxTxx:xx:xx

    filter=meta.lastModified gt xxxx-xx-xx xx:xx:xx

    filter=meta.lastModified gt xxxx-xx-xxTxx:xx:xx.xxx

    filter=meta.lastModified gt "xxxx-xx-xxTxx:xx:xx"

    filter=meta.lastModified gt xxxx-xx-xx xx:xx:xxZ

    filter=meta.lastModified gt xxxx-xx-xxTxx:xx:xx.xxxZ

    filter=meta.lastModified gt 'xxxx-xx-xxTxx:xx:xx'

For more information about Filter Resource, see Workday documentation of filtering on Workers endpoints.

One IM Configuration for Delta Synchronization

Modifying the FullProjection process

  1. In Designer, locate the 'DPR_DPRProjectionStartInfo_Run_Synchronization' process click to edit it. Under 'Pre-script for generating' add the script as mentioned below:

    'Starling Delta Sync Handling (search sync project variables with their names staring with dprRevisionDate and put the corresponding revision data value in)

    Dim f = session.SqlFormatter

    Dim nameSchema as String

    Dim nameVariable as String

    Dim variableValue as String

    values("OverrideVariables") = ""

     

    'search project variables dprRevisionDate*

    Dim qVariables = Query _

    .From("DPRSystemVariable") _

    .Orderby("UID_DPRSystemVariable") _

    .Where( f.AndRelation( _

    f.Comparison("Name", "dprRevisionDate%", ValType.String, CompareOperator.Like, FormatterOptions.IgnoreCase), _

    f.UidComparison("UID_DPRSystemVariableSet", $UID_DPRSystemVariableSet$, CompareOperator.Equal))) _

    .Select("Name")

    Dim colVariables = Session.Source.GetCollection(qVariables)

     

    If colVariables.Count > 0 then

    'fetching revision data from last synchronization of that sync project configuration

    Dim qRevStore = Query _

    .From("DPRRevisionStore") _

    .Where( f.AndRelation( _

    f.UidComparison("UID_DPRProjectionConfig", $UID_DPRProjectionConfig$, CompareOperator.Equal), _

    f.UidComparison("UID_DPRSystemVariableSet", $UID_DPRSystemVariableSet$, CompareOperator.Equal))) _

    .Select("Value", "SchemaTypeKey")

     

    Dim colRevStore = Session.Source.GetCollection(qRevStore)

    Dim dictRevStore = new System.Collections.Generic.Dictionary(of String, String)()

     

    For Each elemRevStore As IEntity In colRevStore

    nameSchema = elemRevStore.GetValue("SchemaTypeKey").String 'Schema[FTP#C04A6567-9EAE-4121-973E-AF1EE514D728].Type[Employees]

    If string.IsNullOrEmpty(nameSchema) OrElse not nameSchema.Contains(".") then

    Continue For

    End If

    nameSchema = nameSchema.Split("."c)(1)

     

    dictRevStore.Add(nameSchema, elemRevStore.GetValue("Value").String)

    Next

     

    'put the revision date into the variables if available, else provide the revision data as 1900-01-01

    Dim lstVariables = new System.Collections.Generic.List(of String)()

    For Each elemVariable As IEntity In colVariables

    nameVariable = elemVariable.GetValue("Name").String 'e.g. dprRevisionDateEmployees

    nameSchema = string.Format("Type[{0}]", nameVariable.Trim().Substring(15)) 'e.g. Type[Employees]

     

    If dictRevStore.TryGetValue(nameSchema, variableValue) then

    values(nameVariable) = variableValue.Replace(" ", "T")

    Else

    values(nameVariable) = "1900-01-01"

    End If

    lstVariables.Add(nameVariable)

    Next

    values("OverrideVariables") = string.Join(";", lstVariables.ToArray())

    End If

  2. Under 'Run Synchronization' select 'Parameters' tab and provide the below script under 'OverrideVariables'.

    If not String.IsNullOrEmpty(values("OverrideVariables").ToString()) then

    Imports System.Data.Common

    Dim sb as DbConnectionStringBuilder = new DbConnectionStringBuilder(false)

    For each varName as String in values("OverrideVariables").ToString().Split(";"c)

    sb.Add(varName, values(varName).ToString())

    Next

    Value = sb.ConnectionString

    End if

  3. 'Commit to database' and then 'Compile database'.

Modifying the synchronization project

  1. Make sure that the local cache is turned off for the Synchronization project.

    NOTE: This is applicable for employees and DeltaSyncEmployees endpoint.

  2. Select the SCIM synchronization project and select 'Variables' to add a new variable similar to 'dprRevisionDateEmployees' (the variable name should be dprRevisionDate<schema name>).

  3. Create a new 'Schema Class' from the supported endpoints in the 'Target system'. For example: "Employees for Delta Sync".

  4. On the Schema Class set the System Filter: meta.LastModified gt $dprRevisionDate<Schema name>$. Under 'Select Objects' tab, use 'meta_lastModified' as the attribute, '>' as the operator and $dprRevisionDate<Schema name>$ as the text field value.

    NOTE:

    To get the all the updates from DeltaSyncEmployee Endpoint, please follow the additional step

    • Create two new 'Schema Class' from Employee in the 'Target system'. For example:

      "Manual Update Employees for Delta Sync" & "Effective Update Employees for Delta Sync"

    • On the respective Schema Classes set the System Filter: meta.LastModified gt

    $dprRevisionDateDeltaSyncEmployees$ and manualUpdate eq 'true' for manualUpdate, meta.LastModified gt

    $dprRevisionDateDeltaSyncEmployees$ and manualUpdate eq 'false' for effective update.

    Under 'Select Objects' tab, use 'meta_lastModified' as the attribute, '>' as the operator and $dprRevisionDateDeltaSyncEmployees$ as the text field value.

  5. As required, other supported attributes also can be added under filters.

  6. Create a new Mapping using the new Schema Class dialog box.

  7. Create a new Workflow using the new mapping. This workflow updates the existing records based on the revision filter.

  8. To improve the syncs performance, remove the update steps from the existing default Initial sync Work Flow.

  9. Create a new Startup Config using the new workflow. Select 'One Identity Manager' for the 'Synchronization in direction'. Use 'default variable set' for the 'Variable Set'.

  10. Use hotfix #33601 on One Identity Manager version 8.1.2 and 8.1.4.

Connector limitations

  • It supports GET operation.
  • Currently, Update functionality is available only for the following attributes of the Employees object:

    NOTE:Update of phone information supports work and home based on the attribute being updated, phoneNumbersWork and phoneNumbers respectively.

    • cellPhone
    • businessPhone
    • email
    • username
    • SAMAccount ID (Custom ID for SAMAccount Name)

  • CREATE and DELETE operations are not supported by any object.

  • Any changes to the updatable employee attributes for contact information listed above will be performed effective immediately (EffectiveDate = today). Updates will only be successful if no future dated event is pending, that may conflict with the attribute update.

  • There is no meta.LastModified attribute available for Employees and Location endpoint. Delta sync could be performed by following the steps in One IM Configuration for Delta Synchronization.

  • When using futurehire filter, delta sync cannot be used as it will affect the future hire results returned from WorkdayHR API.

  • The target system WorkdayHR API supports:-

    • OR operation only within the same filter type.

    • AND operation only across different filter type.

    For example, costCenter and region belongs to Organization type. WorkdayHR API will perform OR operation and return employees that belong to either of the Organization. Conversely, in case of costCenter and country, WorkdayHR will perform AND operation and return employees that belong to Costcenter and Country.

Connector versions and features

The following subsections describe the different connector version(s) and features available with them.

Features available exclusively in Workday HR v.2.0

Following are the features that are available exclusively in Workday HRv.2.0:

  • The Employee endpoint is enhanced to support the PATCH operation to update the Employee details.

    NOTE:The supported attributes for Employee PATCH operation will be same as the UPDATE.

  • The Employee endpoint is enhanced to support the DELETE functionality for following attributes:

    • SamAccountName

    • Email

    • PhoneNumbers

    NOTE:Set the supported attributes value to blank in One Identity Manager to delete them from target system.

관련 문서

The document was helpful.

평가 결과 선택

I easily found the information I needed.

평가 결과 선택