Chat now with support
Chat with Support

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 AWS IAM 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 JFrog Artifactory xMatters Discourse Testrail ChipSoft PingOne Platform Azure DevOps UKG PRO Atlassian Cloud 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 AWS IAM 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 a Service Principal for the Azure Infrastructure Connector Workday permissions needed to integrate via the Starling Connector Configuring integration application in DocuSign Creating integration Connect Client in Coupa Retrieving Azure DevOps Personal Access Token (PAT) Setup integration system and field override service in Workday Retrieving Atlassian Cloud API Key and Directory ID

Values for customer-specific configuration parameters in Workday HR connector

For many of the customer-specific configuration parameters default values are provided while configuring a connector in Starling Connect portal. Below are the details with which the customer can identify and provide the values to the configuration parameters if customer needs to override the default values. The values can be identified from the XML response from the Workday target system for the resources.

The values for the configuration are customer specific, for example 'OrganizationSubTypeID for CostCenter' for a cutomer could be either 'Cost_Center' / 'Cost Center' depending on their WorkdayHR instance configuration.

NOTE:

  • The default value for custom attributes, which is customer specific, has been set to 'N/A', however the customer can set the appropriate value if in use.

Configuration Parameters

Default Value

XML data to be analyzed

Method to identify the value for configuration parameter

Additional Names Types N/A Employee

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Name_Data/wd:Additional_Name_Data/wd:Name_Type_Reference/wd:ID[@type='Additional_Name_Type_ID'])/text()

Business Process Types

Hire Employee;Contract Contingent Worker

Employee

wd:Worker/wd:Worker_Data/wd:Transaction_Log_Entry_Data/wd:Transaction_Log_Entry/wd:Transaction_Log_Data/wd:Transaction_Log_Type_Reference[string(wd:Transaction_Log_Type_Reference/wd:ID/@type\)='Business_Process_Type' /text()='{value_for_the_UI_config_field_Business_Process_Type}']/Transaction_Log_Type_Reference/wd:ID[@type='Business_Process_Type']/text()

Certification Names N/A Employee

wd:Worker/wd:Worker_Data/wd:Qualification_Data/wd:Certification/wd:Certification_Data/wd:Certification_Name/text()

CustomIDTypeID for Code Of Conduct

Code_of_Conduct

Employee

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/@type\)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@type='Custom_ID_Type_ID'])/text()='{value_for_the_UI_config_field_CustomIDTypeID for Code Of Conduct}']/wd:ID/text()

CustomIDTypeID for Date Joined Industry

Date_Joined_Industry

Employee

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/@type\)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@type='Custom_ID_Type_ID'])/text()='{value_for_the_UI_config_field_CustomIDTypeID for Date Joined Industry}']/wd:ID/text()

CustomIDTypeID for External ID

N/A

Employee

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/@type\)='Custom_ID_Type_ID' and contains('{value_for_the_UI_config_field_CustomIDTypeID for Code Of Conduct}', string(wd:ID_Type_Reference/wd:ID[@type='Custom_ID_Type_ID'])/text())]/wd:ID/text()

Future Hire Interval

3

Employee

N/A

OrganizationRoleID for Department Head

N/A

Employee

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_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Reference/wd:ID/@type\)='Organization_Role_ID' and string(wd:Organization_Type_Reference/wd:ID[@type='Organization_Type_ID'])/text()='{value_for_the_UI_config_field_OrganizationTypeID for DepartmentHead}' and string(wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Data/wd:Assignment_From)/text()='Assigned']/wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Reference/wd:ID[@type='Organization_Role_ID']/text()

OrganizationSubTypeID for Asset Class

ORGANIZATION_SUBTYPE_DEPARTMENT_GROUP

Employee

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 Asset Class}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationSubTypeID for Company

Company

Employee

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 Company}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationSubTypeID for CostCenter

Cost_Center

Employee

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 CostCenter}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationSubTypeID for Department

Department

Employee

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 Department}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationSubTypeID for Desk

ORGANIZATION_SUBTYPE_DESK

Employee

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 Desk}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationSubTypeID for Division

Division

Employee

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 Division}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationSubTypeID for Personal Assistant

N/A

Employee

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 Personal Assistant}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationSubTypeID for Region

Region

Employee

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 Region}']/Organization_Subtype_Reference/wd:ID[@type='Organization_Subtype_ID']/text()

OrganizationType reference ID for Location Hierarchy

LOCATION_HIERARCHY

Organization

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

OrganizationTypeID for Asset Class

AssetClass

Employee

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 Asset Class}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for Company

COMPANY

Employee

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 Company}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for CostCenter

COST_CENTER

Employee

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 CostCenter}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for Department

SUPERVISORY

Employee

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 Department}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for DepartmentHead

SUPERVISORY

Employee

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_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Reference/wd:ID/@type\)='Organization_Role_ID' and string(wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Reference/wd:ID[@type='Organization_Role_ID'])/text()= '{value_for_the_UI_config_field_OrganizationRoleID for Department Head}' and string(wd:Organization_Support_Role_Data/wd:Organization_Support_Role/wd:Organization_Role_Data/wd:Assignment_From)/text()='Assigned']/wd:Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for Desk

ORGANIZATION_TYPE_DESK

Employee

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 Desk}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for Division

SUPERVISORY

Employee

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 Division}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for Personal Assistant

N/A

Employee

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 Personal Assistant}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

OrganizationTypeID for Region

REGION

Employee

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 Region}']/Organization_Type_Reference/wd:ID[@type='Organization_Type_ID']/text()

SAM Account ID Type

N/A

Employee

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/@type\)='Custom_ID_Type_ID' and string(wd:ID_Type_Reference/wd:ID[@type='Custom_ID_Type_ID'])/text()='{value_for_the_UI_config_field_CustomIDTypeID for SAM Account ID Type}']/wd:ID/text()

Mobile Device Type ID

Mobile

Employee

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Phone_Device_Type_Reference/wd:ID[@wd:type="Phone_Device_Type_ID"]/text()='value for Mobile Device Type ID'

Landline Device Type ID

Landline

Employee

wd:Worker/wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Phone_Data/wd:Phone_Device_Type_Reference/wd:ID[@wd:type="Phone_Device_Type_ID"]/text()='value for Landline Device Type ID'

OrgTypeID for Custom Organizations

Supervisory Employee

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()

OrgSubTypeID for Custom Organizations

N/A Employee

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()

OrganizationTypeID for Matrix

Matrix Employee

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()

OrganizationSubTypeID for Matrix

Matrix Employee

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()

Additional configuration for update

This section is applicable only when “Use Change Contact Information API for Update” is enabled on the Starling portal.

This configuration uses individual update API of WorkdayHR, Change_Home_Contact_Information for home and Change_Work_Contact_Information for work. This configuration will not resolve any existing business process dependency configured on WorkdayHR.

During provisioning of the contact details for an employee, the country information is mandatory since it will be used in extraction of ISO and International phone Code. The country information will be available in the Employees Endpoint in the attribute “addresses~country”.

When the Use Change Contact Information API for Update configuration is enabled the following One Identity Manager synchronization editor mappings is required to provision the contact details(cell phone, business phone).

Please follow the below steps for provisioning of contact information

  1. New mapping set must be created between One Identity Manager DialogCountry table and Employee endpoint on the target system. This mapping set is only meant for loading the DialogCountry table for ISO and International phone code extraction.

  2. In provisioning mapping set of Employee endpoint, create two new virtual attributes on One Identity Manager end.

    1. Create a virtual attribute vrtISOCode of type script and provide the below script in the read section.

      vrtISOCode Script

      Imports VI.Projector.Connection
       
      Dim phoneCode As ISystemObject = SystemObject.Connection.QueryObject(SystemQuery. _
      From("DialogCountry"). _
      Select("Iso3166_3","Telephone"). _
      Filter(String.Format("UID_DialogCountry='{0}'", $UID_DialogCountry$.ToString) _
      ) _
      ).Result.FirstOrDefault
       
      return phoneCode.GetValue("Iso3166_3").AsString
       
    2. Create a virtual attribute vrtInternationalPhoneCode of type script and provide the below script in the read section.

      VIProjectConn

      Imports VI.Projector.Connection
       
      Dim phoneCode As ISystemObject = SystemObject.Connection.QueryObject(SystemQuery. _
      From("DialogCountry"). _
      Select("Iso3166_3","Telephone"). _
      Filter(String.Format("UID_DialogCountry='{0}'", $UID_DialogCountry$.ToString) _
      ) _
      ).Result.FirstOrDefault
       
      return phoneCode.GetValue("Telephone").AsString

       

  3. Map the vrtISOCode to target system employee attribute phoneNumbers ~ countryPhoneISOCode or phoneNumbersWork ~ countryPhoneISOCode for home and work respectively.

  4. Map the vrtInternationalPhoneCode to target system employee attribute phoneNumbers ~ internationalPhoneCode or phoneNumbersWork ~ internationalPhoneCode for home and work respectively.

Configuration changes required for update operation in Employees V3

If the changes does not exist by default, please follow the below sample steps to configure the WorkdayHR sync project and Person Table in OneIM.

  1. Extend the Person Table with 3 new additional columns - WorkPhoneLandline, WorkPhoneMobile, Primary Device Type

    • WorkPhoneLandline - It is to store multiple non primary work landline numbers

    • WorkPhoneMobile - It is to store multiple non primary work mobile numbers

    • Primary Device Type - It is to indicate which one of the phone number (landline/mobile) is primary

  2. In the column properties of workPhoneLandline and WorkPhoneMobile created above in Person table, naviagte to value settings tab and enable the Multi-value column check box from designer.

  3. In the column properties of PrimaryDeviceType created above in Person table, navigate to value settings. Add two permitted values Phone and PhoneMobile. Also enable the defined list of values check box.

  4. In synchronisation editor, select the WorkDayhr project and create two new variables - MobileDevice and LandlineDevice.

    • MobileDevice - This is the customer specific value "Phone_Device_Type_ID" for mobile phone number.

    • LandlineDevice - This the customer specific value "Phone_Device_Type_ID" for landline phone number.

  5. In Employees mapping set, create a new variable vrtPrimaryDeviceType on OneIM side and add the following Read Script

    If($PrimaryDeviceType$.Contains("Mobile"))

    Return $dprMobileDevice$

    Else

    Return $dprLandlineDevice$

    End If

  6. In Employees mapping set, create new mappings for non primary numbers

    • WorkPhoneLandline on the left to workPhoneLandline on the right, towards the target system direction

    • Newly created workPhoneMobile on the left to workPhoneMobile on the right, towards the target system direction

    • vrtISOCode on the left to CountryIsoCode on the right, towards the target system direction

    • vrtInternationalCode on the left to CountryPhoneCode on the right, towards the target system direction

  7. Create mappings for Primary phone number:

    Mapping from left to right direction

    • Phone to WorkPhonePrimary with a condition "Left.PrimaryDeviceType = Phone"

    • Mobile Phone to WorkPhonePrimary with a condition "Left.PrimaryDeviceType = PhoneMobile"

    Mapping from right to left direction

    • WorkPhonePrimary to phone with a condition "right.primaryDeviceType = $dprLandlineDevice$"

    • WorkPhonePrimary to Mobile Phonewith a condition "right.primaryDeviceType = $dprMobileDevice$"

NOTE: ISOCode, InternationalCode and primaryDeviceType is mandatory to update the values in the target system

Initiate an OAuth connection to SuccessFactors

Detailed steps to configure an OAuth client are described in this SAP Blog.

The brief notes of the steps to be followed are:

  1. Create an interface User ID

  2. Grant the necessary permissions to the User ID

    1. Create Permission Role

    2. Create Permission Group

    • If necessary access rights are not available for steps 1 and / or 2, the alternative steps are:

      • Use the default admin account "sfadmin" to configure the OAuth authentication.

      • Find the permission role "sfapi". By default, "sfadmin" would have the needed permission mapped already to this role.

      • Add "sfadmin" under the permission group "sfapi" following the step 2 (refer SAP Blog).

      • Similarly provide the linkage between the permission role "sfapi" and permission group "sfapi" and vice versa following the detailed information provided under step 2 (refer SAP Blog).

  3. Register the OAuth2 Client

    1. Go to "Admin Centre", under Company Settings, click the link – "Manage OAuth2 Client Applications".

    2. Click on "Register Client Application".

    3. Generate X.509 certificate and download a copy of the X.509 certificate on your machine.

    4. Open the certificate file using text editor. The X.509 certificate has 2 parts – the private key and the certificate. Get the characters between —–BEGIN ENCRYPTED PRIVATE KEY—– and —–END ENCRYPTED PRIVATE KEY—– in the step for Registering the OAuth client.

    5. Go to the OAuth application and take the API key.

    6. Use the API Key (for Client Id configuration parameter) and Private Key from the X.509 certificate (for Client Secret configuration parameter) while configuring the Starling Connector.

 

Creating custom editable/upsertable attributes in Successfactors employee central

NOTE: As a prerequisite, the SuccessFactors Instance should be enabled for the Employee Central Module which is a part of the HCM suite for SAP SuccessFactors.

  1. Go to Admin Center on SuccessFactors Portal, select Manage Business Configuration under tools as following:

    Portal | AdminCenter | Tools | Manage Business Configuration

  2. Select any of the object table from left side and add new custom attribute to it.

    Make sure the visibility of the newly added custom attribute is set to "Edit", only then it will be upsertable.

    "Visibility": "Edit"

Making the custom attribute upsertable

  1. To check the upsertable status of any attribute, follow below path:

    Portal | Admin Center | Tools | OData API Data Dictionary

  2. Filter the entity by name

    The Name to be used for filtering some of the entity types are:

    • employmentInfo → EmpEmployment

    • jobInfo → EmpJob

    • personalInfo → PerPersonal

    • personRelationshipInfo → PerPersonRelationship

  3. Find the custom attribute and set "sap:upsertable" to True.

 

Managing the custom attribute's visibility in the Employee Data

  1. Go to Admin Center | Manage Security | Manage Permission Roles.

  2. Select the role Employee Self Service, click on Permission under "Permission settings".

  3. Scroll down to get Employee Data, find the newly added custom attributes and provide the needed access levels (View / Edit).

  4. Save the changes.

Custom Foundation Objects in Successfactors HR connector

With Employee Central, there are a pre-defined set of Foundation Objects that are delivered such as Legal Entity, Business Unit, Cost Center, etc. There may be a business requirement to use more Foundation Objects in the Organization, Pay or Jobs Structure in the system. Using the Metadata Framework, you can create Custom Foundation Objects, which can be used in Employee Central > Job Information, to accommodate specific requirements which the pre-delivered set of Foundation objects may not cover.

Example Custom FO Configuration

  1. Log into the Test/Sandbox instance as a System Administrator - one that has access to Configure Object Definitions, Manage Business Configuration (BCUI), Manage Data and Test Users

  2. Navigate to Admin Center | Configure Object Definitions | Create New | Object Definition.

  3. Complete all the required fields.

    For example, you will need to provide a unique Code value which you will need later on. Also, provide a value if the Object should use Effective Dating or not, and what Status the object should have.

    1. Code: Typically the Code is entirely up to you, but you should try and use a Code that identifies the object easily (as the Code will be used in other area's of the EC configuration - which we will touch on later in this article).

    2. Effective Dating: It is a good idea to select Basic as Effective Dating (in line with the MDF Foundation Objects configuration). Please do not use the Multiple Changes per Day option.

    3. Status: This should always be set to Active (always)

  4. Once these options have been set, click Save at the bottom of the page.

    The Security, Business Rules and adding new fields can be done later.

  5. Click "Take Action" button in the top right can be used to edit the values if required.

Custom attributes with needed data types can be added.

If Security is set to Yes, then to access this object, it is needed to grant the necessary role-based permissions as this object is an role-based permission secured object.

Implementation in the Starling Connect Connector

New version

Successfactors HR connector has enhanced with a new version v9.0 to support the custom object types dynamically. Customer can input the names of the custom objects to be supported in the connector in the configuration parameter "Custom Object Types" separating each type name by semi colon (;).

NOTE: All schema attributes are considered to be read-only, non-mandatory, not case-exact and not unique.

Mapping

Table 471: Employee mapping
SCIM properties Successfactors properties

id

Base 64 encoded Composite Key or Simple Key of the object

meta.created

createdDateTime

meta.lastModified

lastModifiedDateTime

All other navigational and non-navigational attribute will have same names at both sides

Limitations

  • The connector implementation supports navigation attributes for custom object types with limitations. If any of the related entity type has not provided the needed rights to be accessed via APIs, the GET operation would fail. If any of the related entity type is not accessible via the 'Entity' API of Successfactors, the schemas in the connector will not have details regarding those types. This would lead to get a partial set of schemas for custom object types.

    NOTE:

    While parsing the schemas for a custom object entity, a new entity metadata to be requested to get the custom object's navigation attribute's schemas.

    For example: "cust_ObjectA" has a navigational attribute which is mentioned under "navigationProperties" in the metadata. Under "toRole" of the navigational attribute information there would be a property called "EntitySet" which gives the information to which entity it navigates. However, there would be some entities of which the schemas / metadata could not be retrieved. For example, if the custom object has an association to "Employee Profile User Info", then the entity set as per the "navigationProperties/toRole/EntitySet" value is "EPUserInfoConfig". An error "Entity Entity with the given key is not found." would be returned if the Entity API is triggered to get the schemas of this object type. Even though it is possible to expand the navigation attributes under custom object types using OData API, it is not possible to expand the metadata or schemas for all the navigation attributes using Entity API as well.

    Hence the connector would result in partial schemas and responses for custom object types with respect to the navigational attributes.

  • Even though the Starling Connector for Successfactors HR supports disabling attributes and adding custom attributes across all resource types, these features are not supported in custom object types as the schemas and mappings are always constructed dynamically.

  • The connector currently supports only READ operations on the custom objects.

  • The names of the custom object types to be configured in the Starling Connector are case-specific.

  • Navigation attributes under a navigation object of a custom object is not supported. For example cust_ObjectA has a navigation attribute of type Business Unit. Any complex or navigation attributes under this Business Unit type attribute will not be processed in the connector.

  • Due to multiple requests are being triggered to the target API to read the schemas and data dynamically, the connector functionalities involving custom object types are relatively slow to respond.

  • System generated attributes like "mdfSystemXxx", navigation attributes for created by user, last modified by user and so on are not handled in the connector.

Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating