分享方式:


Microsoft Entra 布建如何與 SAP SuccessFactors 整合

Microsoft Entra 使用者布建服務SAP SuccessFactors Employee Central 整合,以管理使用者的身分識別生命週期。 Microsoft Entra ID 提供三個預先建置的整合:

本文說明整合的運作方式,以及如何針對不同的 HR 案例自定義布建行為。

Microsoft Entra 也支援 SuccessFactors 的單一登錄。 如需詳細資訊,請參閱 Microsoft Entra 單一登錄 (SSO) 與 SuccessFactors 整合。

建立連線能力

Microsoft Entra 布建服務會使用基本身份驗證來連線到 Employee Central OData API 端點。 設定 SuccessFactors 布建應用程式時,請使用 [管理員 認證] 區段中的 [租使用者 URL] 參數來設定 API 數據中心 URL

若要進一步保護 Microsoft Entra 布建服務和 SuccessFactors 之間的連線,請在 SuccessFactors IP 允許列表中新增 Microsoft Entra IP 範圍:

  1. 下載 Azure 公用雲端的最新 IP 範圍
  2. 開啟檔案並搜尋標記 Microsoft Entra ID
  3. 複製元素 addressPrefixes 內所列的所有 IP 位址範圍,並使用範圍來建置您的 IP 位址限制清單。
  4. 將 CIDR 值轉譯為 IP 範圍。
  5. 登入 SuccessFactors 管理入口網站,將 IP 範圍新增至允許清單。 請參閱 SAP 支援附註 2253200。 您現在可以 在此工具中輸入IP範圍

支持的實體

對於 SuccessFactors 中的每個使用者,Microsoft Entra 布建服務會擷取下列實體。 每個實體都會使用 OData API $expand 查詢參數展開,如擷 取規則 數據行中所述。 某些實體預設會展開,而某些實體只有在對應中存在特定屬性時才會展開。

# SuccessFactors 實體 OData 節點 擷取
1 PerPerson *root node* 一律
2 PerPersonal personalInfoNav 永遠
3 PerPhone phoneNav 永遠
4 PerEmail emailNav 永遠
5 EmpEmployment employmentNav 永遠
6 User employmentNav/userNav 永遠
7 EmpJob employmentNav/jobInfoNav 永遠
8 EmpEmploymentTermination activeEmploymentsCount 永遠
9 User's manager employmentNav/userNav/manager/empInfo 永遠
10 FOCompany employmentNav/jobInfoNav/companyNav 只有當或 companyId 屬性已對應時company
11 FODepartment employmentNav/jobInfoNav/departmentNav 只有當或 departmentId 屬性已對應時department
12 FOBusinessUnit employmentNav/jobInfoNav/businessUnitNav 只有當或 businessUnitId 屬性已對應時businessUnit
13 FOCostCenter employmentNav/jobInfoNav/costCenterNav 只有當或 costCenterId 屬性已對應時costCenter
14 FODivision employmentNav/jobInfoNav/divisionNav 只有當或 divisionId 屬性已對應時division
15 FOJobCode employmentNav/jobInfoNav/jobCodeNav 只有當或 jobCodeId 屬性已對應時jobCode
16 FOPayGrade employmentNav/jobInfoNav/payGradeNav 只有當屬性已對應時payGrade
17 FOLocation employmentNav/jobInfoNav/locationNav 只有當屬性已對應時location
18 FOCorporateAddressDEFLT employmentNav/jobInfoNav/addressNavDEFLT 如果對應包含下列其中一個屬性: officeLocationAddress, officeLocationCity, officeLocationZipCode
19 FOEventReason employmentNav/jobInfoNav/eventReasonNav 只有當屬性已對應時eventReason
20 EmpGlobalAssignment employmentNav/empGlobalAssignmentNav 只有在對應時才assignmentType
21 EmploymentType Picklist employmentNav/jobInfoNav/employmentTypeNav 只有在對應時才employmentType
22 EmployeeClass Picklist employmentNav/jobInfoNav/employeeClassNav 只有在對應時才employeeClass
23 EmplStatus Picklist employmentNav/jobInfoNav/emplStatusNav 只有在對應時才emplStatus
24 AssignmentType Picklist employmentNav/empGlobalAssignmentNav/assignmentTypeNav 只有在對應時才assignmentType
25 Position employmentNav/jobInfoNav/positionNav 只有在對應時才positioNav
26 Manager User employmentNav/jobInfoNav/managerUserNav 只有在對應時才managerUserNav

完整同步處理的運作方式

根據屬性對應,在完整同步處理期間,Microsoft Entra 布建服務會傳送下列 「GET」 OData API 查詢,以擷取所有作用中和終止背景工作角色的有效數據。

參數 描述
OData API 主機 將 HTTPs 附加至 租使用者 URL。 範例: https://api4.successfactors.com
OData API 端點 /odata/v2/PerPerson
OData $format查詢參數 json
OData $filter查詢參數 (personEmpTerminationInfoNav/activeEmploymentsCount ne null) and (lastModifiedDateTime le <CurrentExecutionTime>)
OData $expand查詢參數 此參數值取決於對應的屬性。 範例: employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/jobInfoNav/companyNav/countryOfRegistrationNav,employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav
OData customPageSize 查詢參數 100

注意

在完整初始同步處理期間,會擷取 SAP SuccessFactors 的作用中和終止背景工作角色。

對於每個 SuccessFactors 使用者,布建服務會使用對應中定義的相符屬性,在目標中尋找帳戶 (Microsoft Entra ID / 內部部署的 Active Directory)。 例如:如果 personIdExternal 對應至 employeeId 且設定為比對屬性,則布建服務會使用 personIdExternal 值來搜尋具有 employeeId 篩選條件的使用者。 如果找到使用者相符專案,則會更新目標屬性。 如果找不到相符專案,則會在目標中建立新的專案。

若要驗證 OData API 端點針對特定 personIdExternal傳回的數據,請使用 API 資料中心伺服器 URL 更新 SuccessFactorsAPIEndpoint API 查詢中的 ,並使用 Postman 之類的工具來叫用查詢。 如果 「in」 篩選無法運作,您可以嘗試 「eq」 篩選條件。

https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson?$format=json&
$filter=(personIdExternal in '[personIdExternalValue]')&
$expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,
phoneNav,phoneNav/phoneTypeNav,emailNav,employmentNav/jobInfoNav/businessUnitNav,employmentNav/jobInfoNav/companyNav,
employmentNav/jobInfoNav/companyNav/countryOfRegistrationNav,employmentNav/jobInfoNav/costCenterNav,
employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav,employmentNav/jobInfoNav/jobCodeNav,
employmentNav/jobInfoNav/locationNav,employmentNav/jobInfoNav/locationNav/addressNavDEFLT,employmentNav/jobInfoNav/payGradeNav,
employmentNav/empGlobalAssignmentNav,employmentNav/empGlobalAssignmentNav/assignmentTypeNav,employmentNav/jobInfoNav/emplStatusNav,
employmentNav/jobInfoNav/employmentTypeNav,employmentNav/jobInfoNav/employeeClassNav,employmentNav/jobInfoNav/eventReasonNav

增量同步處理的運作方式

完整同步處理之後,Microsoft Entra 布建服務會 LastExecutionTimestamp 維護並使用它來建立差異查詢,以擷取累加變更。 每個 SuccessFactors 實體中都有時間戳屬性,例如 、、 和 latestTerminationDate,都會評估為查看 變更是否落在 和 CurrentExecutionTime之間。 endDatestartDatelastModifiedDateTimeLastExecutionTimestamp 如果是,則會將專案變更視為有效且已處理以進行同步處理。

以下是 Microsoft Entra ID 用來查詢 SuccessFactors 以進行累加變更的 OData API 要求範本。 您可以更新變數 SuccessFactorsAPIEndpointLastExecutionTimestamp並在CurrentExecutionTime要求範本中使用 Postman 之類的工具來檢查傳回的數據。 或者,您也可以啟用 OData API 稽核記錄,從 SuccessFactors 擷取實際的要求承載。

https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson/$count?$format=json&$filter=(personEmpTerminationInfoNav/activeEmploymentsCount ne null) and
((lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') or
(personalInfoNav/startDate ge datetimeoffset'<LastExecutionTimestamp>' and personalInfoNav/startDate le datetimeoffset'<CurrentExecutionTime>') or
((personalInfoNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and personalInfoNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') and (personalInfoNav/startDate le datetimeoffset'<CurrentExecutionTime>' and (personalInfoNav/endDate ge datetimeoffset'<CurrentExecutionTime>' or  personalInfoNav/endDate eq null))) or
(employmentNav/startDate ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/startDate le datetimeoffset'<CurrentExecutionTime>') or
((employmentNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') and (employmentNav/startDate le datetimeoffset'<CurrentExecutionTime>' and (employmentNav/endDate ge datetimeoffset'<CurrentExecutionTime>' or employmentNav/endDate eq null))) 
(employmentNav/jobInfoNav/startDate ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/jobInfoNav/startDate le datetimeoffset'<CurrentExecutionTime>') or
((employmentNav/jobInfoNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/jobInfoNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') and (employmentNav/jobInfoNav/startDate le datetimeoffset'<CurrentExecutionTime>' and (employmentNav/jobInfoNav/endDate ge datetimeoffset'<CurrentExecutionTime>' or employmentNav/jobInfoNav/endDate eq null))) or
(phoneNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and phoneNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') or
(emailNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and emailNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>') or
(personEmpTerminationInfoNav/latestTerminationDate ge datetimeoffset'<previousDayDateStartTime24hrs>' and personEmpTerminationInfoNav/latestTerminationDate le datetimeoffset'<previousDayDateTime24hrs>') or
(employmentNav/userNav/lastModifiedDateTime ge datetimeoffset'<LastExecutionTimestamp>' and employmentNav/userNav/lastModifiedDateTime le datetimeoffset'<CurrentExecutionTime>'))
&$expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/userNav/manager/empInfo,employmentNav/jobInfoNav/companyNav,employmentNav/jobInfoNav/departmentNav,employmentNav/jobInfoNav/locationNav,employmentNav/jobInfoNav/locationNav/addressNavDEFLT,employmentNav/jobInfoNav/locationNav/addressNavDEFLT/stateNav&customPageSize=100

預先僱用處理的運作方式

本節說明 SAP SuccessFactors 連接器如何處理預先僱用記錄(未來有僱用日期/開始日期的員工)。 假設 SuccessFactors Employee Central 中有員工標識碼為 “1234” 的預先僱用,開始日期為 2023 年 6 月 1 日。 讓我們進一步假設此預先僱用記錄是先在 Employee Central 或 2023 年 5 月 15 日上線課程模組中建立的。 當布建服務第一次在 2023 年 5 月 15 日觀察到此記錄時(無論是完整同步或增量同步的一部分),此記錄仍處於預先雇用狀態。 因此,SuccessFactors 不會傳送與使用者相關聯的所有屬性(例如:userNav/username)。 只有與 、、 lastnamepersonIdExternalfirstnamestartDatecompanyName用戶有關的最低數據可用。 若要順利處理預先僱用,必須符合下列必要條件:

  1. 屬性 personIdExternal 必須設定為主要比對標識碼(joining 屬性)。 如果您將不同的屬性 (例如: userName) 設定為聯結屬性,則布建服務將無法擷取預先雇用資訊。
  2. 屬性 startDate 必須可用,且其 JSONPath 必須設定為 $.employmentNav.results[0].startDate$.employmentNav.results[-1:].startDate
  3. 僱用前記錄必須在員工中心的下列其中一個州:『主動』(t)、『非使用中』(f),或『active_external_suite』(e)。 如需這些狀態的詳細資訊, 請參閱 SAP 支援附註2736579

注意

對於沒有組織歷程記錄的預先僱用人員,[0] 和 [-1:] 索引都適用於 startDate。 對於重新僱用或轉換的預聘人員,我們無法確定性地告訴訂單,這可能會導致某些重新僱用/轉換的員工在實際開始日期進行處理。 這是連接器的已知限制。

在完整同步處理或增量同步或隨選布建期間,當布建服務遇到預先僱用記錄時,它會將下列 OData 查詢傳送至 SuccessFactors,並將 “asOfDate” 篩選設定為使用者的 startDate(例如OfDate=2023-06-01)。

https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson?$format=json&$
filter=(personIdExternal in '1234' and employmentNav/userNav/status in 't','f','e')&asOfDate=2023-06-01&$
expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,phoneNav,emailNav,employmentNav/userNav/manager/empInfo,employmentNav/jobInfoNav/companyNav,employmentNav/jobInfoNav/costCenterNav,employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav,employmentNav/

如果您要觀察預先僱用處理的問題,您可以使用上述 OData 要求格式來查詢您的 SuccessFactors 實例,以取代 API 端點, personIdExternal 並使用 asOfDate 對應至測試案例的值進行篩選。

讀取屬性數據

當 Microsoft Entra 布建服務查詢 SuccessFactors 時,它會擷取 JSON 結果集。 JSON 結果集包含儲存在 Employee Central 中的許多屬性。 根據預設,布建架構會設定為只擷取這些屬性的子集。

若要擷取更多屬性,請遵循列出的步驟:

  1. 流覽至 企業應用程式 ->SuccessFactors 應用程式 ->Provisioning ->Edit Provisioning ->attribute-mapping 頁面

  2. 向下捲動,然後按兩下 [ 顯示進階選項]。

  3. 按兩下 SuccessFactors 的 [編輯屬性] 清單。

    注意

    如果 SuccessFactors 的 [編輯屬性清單] 選項未顯示在 Microsoft Entra 系統管理中心,請使用 URL https://portal.azure.com/?Microsoft_AAD_IAM_forceSchemaEditorEnabled=true 來存取頁面。

  4. 此檢視中的 API 運算式數據行會顯示連接器所使用的 JSONPath 運算式。

    API-Expression

  5. 您可以編輯現有的 JSONPath 值,或將具有有效 JSONPath 表達式的新屬性新增至架構。

下一節提供編輯 JSONPath 值的常見案例清單。

處理不同的 HR 案例

JSONPath 是 JSON 的查詢語言,類似於適用於 XML 的 XPath。 如同 XPath,JSONPath 允許從 JSON 承載擷取和過濾數據。

藉由使用 JSONPath 轉換,您可以自定義 Microsoft Entra 布建應用程式的行為,以擷取自定義屬性,並處理重新擷取、背景工作轉換和全域指派等案例。

本節涵蓋如何針對下列 HR 案例自定義布建應用程式:

擷取更多屬性

預設的 Microsoft Entra SuccessFactors 布建應用程式架構隨附 90 個以上的預先定義屬性。 若要將更多 SuccessFactors 屬性新增至布建架構,請使用所列的步驟:

  1. 使用 OData 查詢,從 Employee Central 擷取有效測試用戶的數據。

     https://[SuccessFactorsAPIEndpoint]/odata/v2/PerPerson?$format=json&
     $filter=(personIdExternal in '[personIdExternalValue]')&
     $expand=employmentNav/userNav,employmentNav/jobInfoNav,personalInfoNav,personEmpTerminationInfoNav,
     phoneNav,phoneNav/phoneTypeNav,emailNav,employmentNav/jobInfoNav/businessUnitNav,employmentNav/jobInfoNav/companyNav,
     employmentNav/jobInfoNav/companyNav/countryOfRegistrationNav,employmentNav/jobInfoNav/costCenterNav,
     employmentNav/jobInfoNav/divisionNav,employmentNav/jobInfoNav/departmentNav,employmentNav/jobInfoNav/jobCodeNav,
     employmentNav/jobInfoNav/locationNav,employmentNav/jobInfoNav/locationNav/addressNavDEFLT,employmentNav/jobInfoNav/payGradeNav,
     employmentNav/empGlobalAssignmentNav,employmentNav/empGlobalAssignmentNav/assignmentTypeNav,employmentNav/jobInfoNav/emplStatusNav,
     employmentNav/jobInfoNav/employmentTypeNav,employmentNav/jobInfoNav/employeeClassNav,employmentNav/jobInfoNav/eventReasonNav
    
  2. 判斷與 屬性相關聯的 Employee Central 實體

    • 如果屬性是 EmpEmployment 實體的一部分,請在 employmentNav 節點下尋找 屬性。
    • 如果屬性是 User 實體的一部分,請在 employmentNav/userNav 節點下尋找 屬性。
    • 如果屬性是 EmpJob 實體的一部分,請在 employmentNav/jobInfoNav 節點下尋找 屬性。
  3. 建構與 屬性相關聯的 JSON 路徑,並將這個新屬性新增至 SuccessFactors 屬性清單。

    • 範例 1:假設您想要新增屬性 okToRehire,這是實體的一 employmentNav 部分,然後使用 JSONPath $.employmentNav.results[0].okToRehire
    • 範例 2:假設您想要新增屬於 userNav 實體的屬性 timeZone,然後使用 JSONPath$.employmentNav.results[0].userNav.timeZone
    • 範例 3:假設您想要新增屬於 jobInfoNav 實體的屬性 flsaStatus,然後使用 JSONPath$.employmentNav.results[0].jobInfoNav.results[0].flsaStatus
  4. 儲存架構。

  5. 重新啟動佈建。

擷取自定義屬性

根據預設,Microsoft Entra SuccessFactors 布建應用程式中會預先定義下列自定義屬性:

  • User (userNav) 實體中的 custom01-custom15
  • customString1-customString15 from the EmpEmployment (employmentNav) entity called empNavCustomString1-empNavCustomString15
  • customString1-customString15 from the EmpJobInfo (jobInfoNav) entity called empJobNavCustomString1-empNavJobCustomString15

假設在您的 Employee Central 實例中,EmpJobInfo 中的 customString35 屬性會儲存位置描述。 您想要將此值流向 Active Directory physicalDeliveryOfficeName 屬性。 若要設定此案例的屬性對應,請使用下列步驟:

  1. 編輯 SuccessFactors 屬性清單,以新增名為 empJobNavCustomString35 的新屬性。
  2. 將此屬性的 JSONPath API 運算式設定為: $.employmentNav.results[0].jobInfoNav.results[0].customString35
  3. 在 Microsoft Entra 系統管理中心儲存並重載對應變更。
  4. 在 [屬性對應] 刀鋒視窗中,將 empJobNavCustomString35 對應physicalDeliveryOfficeName
  5. 儲存對應。

擴充此案例:

  • 如果您想要從 User 實體對應 custom35 屬性,請使用 JSONPath$.employmentNav.results[0].userNav.custom35
  • 如果您想要從 EmpEmployment 實體對應 customString35 屬性,請使用 JSONPath$.employmentNav.results[0].customString35

將僱用狀態對應至帳戶狀態

根據預設,Microsoft Entra SuccessFactors 連接器會使用 activeEmploymentsCount 物件的欄位 PersonEmpTerminationInfo 來設定帳戶狀態。 您可能會遇到下列其中一個屬性的問題。

  1. 有一個已知問題,連接器可能會在工作的最後一天停用終止背景工作角色的帳戶。
  2. PersonEmpTerminationInfo如果物件設定為 Null,則在終止期間,AD 帳戶停用無法運作,因為布建引擎會篩選掉物件設定為 Null 的personEmpTerminationInfoNav記錄。

如果您發生上述任一問題,或偏好將僱用狀態對應至帳戶狀態,您可以更新對應以展開 emplStatus 欄位,並使用欄位中 emplStatus.externalCode存在的就業狀態代碼。 根據 SAP 支援附註2505526,以下是您可以在布建應用程式中擷取的就業狀態代碼清單。

  • A = 作用中
  • D = 休眠
  • U = 未付休假
  • P = 帶薪休假
  • S = 已暫停
  • F = Furlough
  • O = 捨棄
  • R = 已淘汰
  • T = 已終止

使用步驟來更新對應以擷取這些程序代碼。

  1. 開啟 SuccessFactors 布建應用程式的屬性對應刀鋒視窗。

  2. 在 [ 顯示進階選項] 下,按兩下 [ 編輯 SuccessFactors] 屬性清單

  3. 尋找 屬性 emplStatus ,並將 JSONPath 更新為 $.employmentNav.results[0].jobInfoNav.results[0].emplStatusNav.externalCode。 更新會讓連接器擷取數據表中的僱用狀態代碼。

  4. 儲存變更。

  5. 在 [屬性對應] 刀鋒視窗中,更新帳戶狀態旗標的表達式對應。

    布建作業 帳戶狀態屬性 對應表達式
    SuccessFactors 至 Active Directory 使用者布建 accountDisabled Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
    SuccessFactors 至 Microsoft Entra 使用者布建 accountEnabled Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
  6. 儲存變更。

  7. 使用隨選布建來測試組態。

  8. 確認同步處理如預期般運作之後,請重新啟動布建作業。

處理背景工作轉換和重新擷取案例

關於背景工作轉換案例: 背景工作轉換是將現有全職員工轉換為承包商或承包商到全職員工的程式。 在此案例中,Employee Central 會新增新的 EmpEmployment 實體,以及相同 Person 實體的新 User 實體。 在先前 EmpEmployment 實體底下巢狀的用戶實體會設定為 null。

關於重新擷取案例: 在 SuccessFactors 中,有兩個選項可以處理重新僱用員工:

  • 選項 1:在 Employee Central 中建立新的人員配置檔
  • 選項 2:在 Employee Central 中重複使用現有的人員配置檔

如果您的 HR 程式使用選項 1,則不需要變更布建架構。 如果您的 HR 程式使用選項 2,則 Employee Central 會新增新的 EmpEmployment 實體,以及相同 Person 實體的新 User 實體。

您可以處理這兩個案例,以便在轉換或重新產生時顯示新的僱用數據。 使用所列的步驟大量更新佈建應用程式架構:

  1. 開啟 SuccessFactors 布建應用程式的屬性對應刀鋒視窗。

  2. 向下捲動,然後按兩下 [ 顯示進階選項]。

  3. 按兩下 [檢閱您的架構] 連結,以開啟架構編輯器。

    此螢幕快照顯示開啟架構編輯器的 [檢閱您的架構] 連結。

  4. 按兩下 [ 下載] 連結,在編輯之前儲存架構的複本。

    顯示 [架構編輯器] 的螢幕快照,其中已選取 [下載] 以儲存架構的複本。

  5. 在架構編輯器中,按 Ctrl-H 鍵開啟 find-replace 控件。

  6. 在 [尋找] 文本框中,複製並貼上值 $.employmentNav.results[0]

  7. 在取代文字框中,複製並貼上值 $.employmentNav.results[-1:]。 此 JSONPath 運算式會傳回最新的 EmpEmployment 記錄。

    find-replace-conversion

  8. 按兩下 [全部取代] 選項以更新架構。

  9. 儲存架構。

  10. 上述程式會更新所有 JSONPath 表達式,如下所示:

    • 舊 JSONPath: $.employmentNav.results[0].jobInfoNav.results[0].departmentNav.name_localized
    • 新的 JSONPath: $.employmentNav.results[-1:].jobInfoNav.results[0].departmentNav.name_localized
  11. 使用隨選布建來測試組態。

  12. 確認同步處理如預期般運作之後,請重新啟動布建作業。

注意

上述方法只有在 SAP SuccessFactors 以遞增順序傳回雇用物件時才能運作,其中最新的就業記錄一律是雇用Nav 結果數位中的最後一筆記錄。 SuccessFactors 無法保證傳回多個雇用記錄的順序。 如果您的 SuccessFactors 實例有多個對應至背景工作角色的雇用記錄,且您一律想要擷取與使用中僱用記錄相關聯的屬性,請使用下一節所述的步驟。

擷取目前的使用中就業記錄

使用 或 $.employmentNav.results[-1:]$.employmentNav.results[0] JSONPath 根目錄來擷取僱用記錄可在大部分情況下運作,並讓設定保持簡單。 不過,視您的 SuccessFactors 實例設定方式而定,可能需要更新此設定,以確保連接器一律擷取最新的使用中雇用記錄。

本節說明如何更新 JSONPath 設定,以絕對擷取使用者的目前使用中雇用記錄。 它也會處理背景工作角色轉換和重新擷取案例。

  1. 開啟 SuccessFactors 布建應用程式的屬性對應刀鋒視窗。

  2. 向下捲動,然後按兩下 [ 顯示進階選項]。

  3. 按兩下 [檢閱您的架構] 連結,以開啟架構編輯器。

  4. 按兩下 [ 下載] 連結,在編輯之前儲存架構的複本。

  5. 在架構編輯器中,按 Ctrl-H 鍵開啟 find-replace 控件。

  6. 執行下列尋找取代作業。 執行尋找取代作業時,請確定沒有前置或尾端空格。 如果您使用 [-1:] 索引而非 [0],請據以更新 字串到尋找 欄位。

    要尋找的字串 要用於取代的字串 用途
    $.employmentNav.results[0].jobInfoNav.results[0].emplStatus $.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P' )].emplStatusNav.externalCode 有了這個 find-replace,我們會新增擴充 emplStatusNav OData 物件的能力。
    $.employmentNav.results[0].jobInfoNav.results[0] $.employmentNav..jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')] 使用此尋找取代時,我們會指示連接器一律擷取與作用中 SuccessFactors EmpJobInfo 記錄相關聯的屬性。 會忽略與 SuccessFactors 中終止/ 非使用中記錄相關聯的屬性。
    $.employmentNav.results[0] $.employmentNav..results[?(@.jobInfoNav..results[?(@.emplStatusNav.externalCode == 'A' || @.emplStatusNav.externalCode == 'U' || @.emplStatusNav.externalCode == 'P')])] 使用此尋找取代時,我們會指示連接器一律擷取與作用中 SuccessFactors Employment 記錄相關聯的屬性。 會忽略與 SuccessFactors 中終止/ 非使用中記錄相關聯的屬性。
  7. 儲存架構。

  8. 上述程式會更新所有 JSONPath 表達式。

  9. 若要讓前置處理能夠運作,與 startDate 屬性相關聯的 JSONPath 必須使用 [0][-1:] 索引。 在 [ 顯示進階選項] 下,按兩下 [ 編輯 SuccessFactors] 屬性清單。 尋找 屬性 startDate ,並將其設定為 值 $.employmentNav.results[-1:].startDate

  10. 儲存架構。

  11. 若要確保終止如預期般處理,您可以在屬性對應區段中使用下列其中一個設定。

    布建作業 帳戶狀態屬性 如果帳戶狀態是以 「activeEmploymentsCount」 為基礎的表達式 如果帳戶狀態是以 「emplStatus」 值為基礎,則要使用的運算式
    SuccessFactors 至 Active Directory 使用者布建 accountDisabled Switch([activeEmploymentsCount], "False", "0", "True") Switch([emplStatus], "True", "A", "False", "U", "False", "P", "False")
    SuccessFactors 至 Microsoft Entra 使用者布建 accountEnabled Switch([activeEmploymentsCount], "True", "0", "False") Switch([emplStatus], "False", "A", "True", "U", "True", "P", "True")
  12. 儲存您的變更。 1.

  13. 使用隨選布建來測試組態。

  14. 確認同步處理如預期般運作之後,請重新啟動布建作業。

處理全域指派案例

當 Employee Central 中的用戶處理全域指派時,SuccessFactors 會新增 EmpEmployment 實體,並將 assignmentClass 設定為 “GA”。 它也會建立新的 User 實體。 因此,用戶現在具有:

  • 一個 EmpEmployment + 使用者實體,對應到主工作分派,且 assignmentClass 設定為 “ST” 和
  • 另一個 EmpEmployment + 用戶實體,該實體對應至全域指派,其中 assignmentClass 設定為 “GA”

若要擷取屬於標準指派和全域指派使用者配置檔的屬性,請使用所列的步驟:

  1. 開啟 SuccessFactors 布建應用程式的屬性對應刀鋒視窗。

  2. 向下捲動,然後按兩下 [ 顯示進階選項]。

  3. 按兩下 [檢閱您的架構] 連結,以開啟架構編輯器。

  4. 按兩下 [ 下載] 連結,在編輯之前儲存架構的複本。

  5. 在架構編輯器中,按 Ctrl-H 鍵開啟 find-replace 控件。

  6. 在 [尋找] 文本框中,複製並貼上值 $.employmentNav.results[0]

  7. 在取代文字框中,複製並貼上值 $.employmentNav.results[?(@.assignmentClass == 'ST')]。 請注意 == 運算符周圍的空格符,這對成功處理 JSONPath 表達式很重要。

  8. 按兩下 [全部取代] 選項以更新架構。

  9. 儲存架構。

  10. 上述程式會更新所有 JSONPath 表達式,如下所示:

    • 舊 JSONPath: $.employmentNav.results[0].jobInfoNav.results[0].departmentNav.name_localized
    • 新的 JSONPath: $.employmentNav.results[?(@.assignmentClass == 'ST')].jobInfoNav.results[0].departmentNav.name_localized
  11. 重載應用程式的屬性對應刀鋒視窗。

  12. 向下捲動,然後按兩下 [ 顯示進階選項]。

  13. 按兩下 SuccessFactors 的 [編輯屬性] 清單。

  14. 新增屬性以擷取全域指派數據。 例如:如果您想要擷取與全域指派配置檔相關聯的部門名稱,您可以新增屬性 globalAssignmentDepartment ,並將 JSONPath 表達式設定為 $.employmentNav.results[?(@.assignmentClass == 'GA')].jobInfoNav.results[0].departmentNav.name_localized

  15. 您現在可以將兩個部門值都流向 Active Directory 屬性,或使用表達式對應選擇性地流動值。 範例:如果存在,表達式會將AD部門屬性的值設定為 globalAssignmentDepartment,否則會將值設定為與標準指派相關聯的部門

    • IIF(IsPresent([globalAssignmentDepartment]),[globalAssignmentDepartment],[department])
  16. 儲存對應。

  17. 使用隨選布建來測試組態。

  18. 確認同步處理如預期般運作之後,請重新啟動布建作業。

處理並行作業案例

當 Employee Central 中的使用者有並行/多個作業時,有兩 個 EmpEmploymentUser 實體, 其中 assignmentClass 設定為 “ST”。 若要擷取屬於這兩個作業的屬性,請使用列出的步驟:

  1. 開啟 SuccessFactors 布建應用程式的屬性對應刀鋒視窗。
  2. 向下捲動,然後按兩下 [ 顯示進階選項]。
  3. 按兩下 SuccessFactors 的 [編輯屬性] 清單。
  4. 假設您想要提取與工作 1 和作業 2 相關聯的部門。 預先定義的屬性 部門 已經擷取第一個作業的部門值。 您可以定義名為 secondJobDepartment 的新屬性, 並將 JSONPath 表達式設定為 $.employmentNav.results[1].jobInfoNav.results[0].departmentNav.name_localized
  5. 您現在可以將兩個部門值都流向 Active Directory 屬性,或使用表達式對應選擇性地流動值。
  6. 儲存對應。
  7. 使用隨選布建來測試組態。
  8. 確認同步處理如預期般運作之後,請重新啟動布建作業。

擷取位置詳細數據

SuccessFactors 連接器支持擴充位置物件。 若要以特定語言展開和擷取位置物件屬性,例如作業層級或位置名稱,您可以使用 JSONPath 表達式,如下所示。

屬性名稱 JSONPath 表達式
positionJobLevel $.employmentNav.results[0].jobInfoNav.results[0].positionNav.jobLevel
positionNameFR $.employmentNav.results[0].jobInfoNav.results[0].positionNav.externalName_fr_FR
positionNameDE $.employmentNav.results[0].jobInfoNav.results[0].positionNav.externalName_de_DE

在上線課程模組中布建使用者

從 SAP SuccessFactors 到內部部署 Active Directory 和 Microsoft Entra ID 的輸入使用者布建現在支援預先布建 SAP SuccessFactors 上線 2.0 模組中存在的預存專案。 當 Microsoft Entra 布建服務在未來開始日期遇到新的雇用設定檔時,它會查詢 SAP SuccessFactors 以取得具有下列其中一個狀態代碼的新進員工: activeinactiveactive_external_suite。 狀態代碼 active_external_suite 會對應至 SAP SuccessFactors Onboarding 2.0 模組中存在的預存專案。 如需這些狀態代碼的描述,請參閱 SAP 支援附註2736579

布建服務的預設行為是在上線課程模組中處理預先工作。

如果您想要排除在上線模塊中處理預先工作,請更新布建作業組態,如下所示:

  1. 開啟 SuccessFactors 布建應用程式的屬性對應刀鋒視窗。
  2. 在 [顯示進階選項] 下,編輯 SuccessFactors 屬性清單以新增名為 userStatus的新屬性。
  3. 將此屬性的 JSONPath API 運算式設定為: $.employmentNav.results[0].userNav.status
  4. 儲存架構以返回屬性對應刀鋒視窗。
  5. 編輯來源物件範圍以套用範圍篩選 userStatus NOT EQUALS
  6. 儲存對應,並驗證範圍篩選條件是否使用隨選布建運作。

在 SuccessFactors 中啟用 OData API 稽核記錄

Microsoft Entra SuccessFactors 連接器會使用 SuccessFactors OData API 來擷取變更並布建使用者。 如果您觀察到布建服務的問題,並想要確認從 SuccessFactors 擷取的數據,您可以在 SuccessFactors 中啟用 OData API 稽核記錄。 從稽核記錄擷取 Microsoft Entra ID 所傳送的要求承載。 若要進行疑難解答,您可以在Postman之類的工具中複製此要求承載,並將其設定為使用連接器所使用的相同 API 使用者,並查看它是否從 SuccessFactors 傳回所需的變更。

回寫案例

本節涵蓋不同的回寫案例。 它會根據在 SuccessFactors 中設定電子郵件和電話號碼的方式,建議設定方法。

電話和電子郵件回寫的支援案例

# 案例需求 電子郵件主要
旗標值
商務電話
主要旗標值
手機
主要旗標值
商務電話
對應
手機
對應
1 * 僅將商務電子郵件設定為主要電子郵件。
* 未設定電話號碼。
true true false [未設定] [未設定]
2 * 在 SuccessFactors 中,商務電子郵件和商務電話是主要專案
* 一律將 Microsoft Entra 電話號碼流動至商務電話和行動電話。
true true false telephoneNumber 行動
3 * 在 SuccessFactors 中,商務電子郵件和行動電話是主要
* 一律將 Microsoft Entra 電話號碼流動至商務電話和行動電話
true false true telephoneNumber 行動
4 * 在 SuccessFactors 商務電子郵件中是主要電子郵件。
* 在 Microsoft Entra ID 中,檢查工作電話號碼是否存在,如果有,請檢查行動電話號碼是否也存在。 只有在行動電話號碼不存在時,才會將公司電話號碼標示為主要電話號碼。
true 使用表示式對應: IIF(IsPresent([telephoneNumber]), IIF(IsPresent([mobile]),"false", "true"), "false") 使用表示式對應: IIF(IsPresent([mobile]),"false", "true") telephoneNumber 行動
5 * 在 SuccessFactors 商務電子郵件和商務電話中是主要。
* 在 Microsoft Entra ID 中,如果有行動裝置可用,請將它設定為商務電話,否則請使用 phoneNumber。
true true false IIF(IsPresent([mobile]), [mobile], [telephoneNumber]) [未設定]
  • 如果回寫屬性對應中沒有電話號碼的對應,則回寫中只會包含電子郵件。
  • 在員工中心的新進職期間,可能無法使用商務電子郵件和電話號碼。 如果在上線期間將商務電子郵件和商務電話設定為主要,您可以在新進員工建立期間設定商務電話和電子郵件的虛擬值。 經過一段時間之後,回寫應用程式會更新值。

使用 UserID 啟用回寫

SuccessFactors 回寫應用程式會使用下列邏輯來更新 User 物件屬性:

  • 在第一個步驟中,它會在變更集中尋找 userId 屬性。 如果存在,則會使用 「UserId」 進行 SuccessFactors API 呼叫。
  • 如果 找不到userId ,則預設會使用 personIdExternal 屬性值。

SuccessFactors 中的 personIdExternal 屬性值通常符合 userId 屬性值。 不過,在重新擷取和背景工作角色轉換等案例中,SuccessFactors 中的員工可能會有兩個僱用記錄,一個作用中,一個非使用中。 在這種情況下,若要確保回寫會更新使用中的使用者配置檔,請依照所述更新 SuccessFactors 布建應用程式的設定。 此組態可確保 連接器可見的變更集中一律會出現 userId ,並用於 SuccessFactors API 呼叫中。

  1. 將 SuccessFactors 開啟至 Microsoft Entra 使用者布建應用程式,或將 SuccessFactors 開啟至內部部署 AD 使用者布建應用程式。
  2. 確定 extensionAttribute[1-15] 在 Microsoft Entra ID 中一律會 userId 儲存每個工作者作用中就業記錄的 。 記錄會將 SuccessFactors userId 屬性對應至 extensionAttribute[1-15] Microsoft Entra ID 中的 。

    輸入UserID屬性對應

  3. 如需 JSONPath 設定的相關指引,請參閱處理背景工作轉換和重新擷取案例一節,以確保作用中僱用記錄的 userId 值流入 Microsoft Entra ID。
  4. 儲存對應。
  5. 執行布建作業,以確保 userId 值會流入 Microsoft Entra ID。

    注意

    如果您使用 SuccessFactors 來 內部部署的 Active Directory 使用者布建,請設定 Microsoft Entra 連線,將 userId 屬性值從 內部部署的 Active Directory 同步至 Microsoft Entra ID。

  6. 在 Azure 入口網站 中開啟 SuccessFactors 回寫應用程式。
  7. 將包含 userId 值的所需 extensionAttribute 對應至 SuccessFactors userId 屬性。

    回寫UserID屬性對應

  8. 儲存對應。
  9. 移至 [屬性對應 -> 進階 -> 檢閱架構 ] 以開啟 JSON 架構編輯器。
  10. 下載架構復本做為備份。
  11. 在架構編輯器中,按 Ctrl-F 並搜尋包含 userId 對應的 JSON 節點,其會對應至來源 Microsoft Entra 屬性。
  12. 將 flowBehavior 屬性從 “FlowWhenChanged” 更新為 “FlowAlways”,如下所示。

    對應流程行為更新

  13. 儲存對應,並使用隨選布建來測試回寫案例。

電話和電子郵件回寫不支援的案例

  • 在 Employee Central 中,在上架個人電子郵件和個人電話期間,會設定為主要。 回寫應用程式無法切換此設定,並將商務電子郵件和商務電話設定為主要。
  • 在 Employee Central 中,商務電話會設定為主要。 回寫應用程式無法變更此設定,並將行動電話設定為主要手機。
  • 回寫應用程式無法讀取目前的主要旗標設定,並且對寫入作業使用相同的值。 一律會使用屬性對應中設定的旗標值。

下一步