Microsoft Entra 预配如何与 Workday 集成

Microsoft Entra Directory 用户预配服务Workday HCM 集成,便于管理用户的标识生命周期。 Microsoft Entra ID 提供三个预生成集成:

本文介绍集成的工作原理,以及如何为不同的 HR 方案自定义预配行为。

建立连接

限制 Workday API 对 Microsoft Entra 终结点的访问

Microsoft Entra 预配服务使用基本身份验证连接到 Workday Web 服务 API 终结点。

为了进一步保护 Microsoft Entra 预配服务与 Workday 之间的连接,可以限制访问,使指定的集成系统用户仅从允许的 Microsoft Entra IP 范围访问 Workday API。 与 Workday 管理员联系,在 Workday 租户中完成以下配置。

  1. 下载 Azure 公有云的最新 IP 范围
  2. 打开文件并搜索标记 Microsoft Entra ID
  3. 复制 addressPrefixes 元素中列出的所有 IP 地址范围,并使用范围生成 IP 地址列表。
  4. 登录 Workday 管理门户。
  5. 访问“维护 IP 范围”任务,为 Azure 数据中心创建新的 IP 范围。 将 IP 范围指定为逗号分隔的列表(使用 CIDR 表示法)。
  6. 访问“管理身份验证策略”任务以创建新的身份验证策略。 在身份验证策略中,使用身份验证允许列表指定 Microsoft Entra IP 范围以及允许从此 IP 范围进行访问的安全组。 保存更改。
  7. 访问“激活所有挂起的身份验证策略更改”任务以确认更改。

使用受约束的安全组限制对 Workday 中工作人员数据的访问

通过配置 Workday 集成系统用户的默认步骤可获取检索 Workday 租户中所有用户的权限。 在某些集成方案中,可能需要限制访问。 例如,仅从 Get_Workers API 调用返回某些监督组织中的用户。

可通过与 Workday 管理员协作并配置受约束的集成系统安全组来限制访问。 有关 Workday 的详细信息,请参阅 Workday 社区此文章需要 Workday 社区访问权限)。

使用受约束的 ISSG(集成系统安全组)来限制访问这一策略在以下方案中很有用:

  • 分阶段推出方案:拥有大型 Workday 租户,并计划分阶段推出 Workday 到 Microsoft Entra ID 的自动预配。 在此方案中,建议配置受约束的 ISSG 以便只有范围内的员工对 Azure AD 可见,而不使用 Microsoft Entra ID 范围筛选器排除不在当前阶段范围内的用户。
  • 多个预配作业方案:拥有大型 Workday 租户和多个 AD 域,每个域支持不同的业务单位/部门/公司。 为支持此拓扑,需要运行多个 Workday 到 Microsoft Entra 预配作业,其中每个作业都预配一组特定的工作人员。 在此方案中,建议配置受约束的 ISSG 以使相关工作人员数据对 Microsoft Entra ID 可见,而不使用 Microsoft Entra ID 范围筛选器来排除工作人员数据。

Workday 测试连接查询

若要测试与 Workday 的连接,Microsoft Entra ID 将发送以下 Get_Workers Workday Web 服务请求。

<!-- Test connection query tries to retrieve one record from the first page -->
<!-- Replace version with Workday Web Services version present in your connection URL -->
<!-- Replace timestamps with the UTC time corresponding to the test connection event -->
<Get_Workers_Request p1:version="v21.1" xmlns:p1="urn:com.workday/bsvc" xmlns="urn:com.workday/bsvc">
  <p1:Request_Criteria>
    <p1:Transaction_Log_Criteria_Data>
      <p1:Transaction_Date_Range_Data>
        <p1:Updated_From>2021-01-19T02:28:50.1491022Z</p1:Updated_From>
        <p1:Updated_Through>2021-01-19T02:28:50.1491022Z</p1:Updated_Through>
      </p1:Transaction_Date_Range_Data>
    </p1:Transaction_Log_Criteria_Data>
    <p1:Exclude_Employees>true</p1:Exclude_Employees>
    <p1:Exclude_Contingent_Workers>true</p1:Exclude_Contingent_Workers>
    <p1:Exclude_Inactive_Workers>true</p1:Exclude_Inactive_Workers>
  </p1:Request_Criteria>
  <p1:Response_Filter>
    <p1:As_Of_Effective_Date>2021-01-19T02:28:50.1491022Z</p1:As_Of_Effective_Date>
    <p1:As_Of_Entry_DateTime>2021-01-19T02:28:50.1491022Z</p1:As_Of_Entry_DateTime>
    <p1:Page>1</p1:Page>
    <p1:Count>1</p1:Count>
  </p1:Response_Filter>
  <p1:Response_Group>
    <p1:Include_Reference>1</p1:Include_Reference>
    <p1:Include_Personal_Information>1</p1:Include_Personal_Information>
  </p1:Response_Group>
</Get_Workers_Request>

完全同步的工作原理

在 Workday 驱动预配的上下文中,完全同步是指从 Workday 提取所有标识并确定要向每个工作人员对象应用哪些预配规则的过程。 首次启动预配时,以及在 Microsoft Entra 管理中心或使用图形 API 重启预配时,会发生完全同步。

Microsoft Entra ID 将发送以下 Get_Workers Workday Web 服务请求来检索工作人员数据。 此查询将在 Workday 事务日志中查找所有日期有效的(自完全同步运行时间对应的日期开始的)工作人员条目。

<!-- Workday full sync query -->
<!-- Replace version with Workday Web Services version present in your connection URL -->
<!-- Replace timestamps with the UTC time corresponding to full sync run -->
<!-- Count specifies the number of records to return in each page -->
<!-- Response_Group flags derived from provisioning attribute mapping -->

<Get_Workers_Request p1:version="v21.1" xmlns:p1="urn:com.workday/bsvc" xmlns="urn:com.workday/bsvc">
  <p1:Request_Criteria>
    <p1:Transaction_Log_Criteria_Data>
      <p1:Transaction_Type_References>
        <p1:Transaction_Type_Reference>
          <p1:ID p1:type="Business_Process_Type">Hire Employee</p1:ID>
        </p1:Transaction_Type_Reference>
        <p1:Transaction_Type_Reference>
          <p1:ID p1:type="Business_Process_Type">Contract Contingent Worker</p1:ID>
        </p1:Transaction_Type_Reference>
      </p1:Transaction_Type_References>
    </p1:Transaction_Log_Criteria_Data>
  </p1:Request_Criteria>
  <p1:Response_Filter>
    <p1:As_Of_Effective_Date>2021-01-19T02:29:16.0094202Z</p1:As_Of_Effective_Date>
    <p1:As_Of_Entry_DateTime>2021-01-19T02:29:16.0094202Z</p1:As_Of_Entry_DateTime>
    <p1:Count>30</p1:Count>
  </p1:Response_Filter>
  <p1:Response_Group>
    <p1:Include_Reference>1</p1:Include_Reference>
    <p1:Include_Personal_Information>1</p1:Include_Personal_Information>
    <p1:Include_Employment_Information>1</p1:Include_Employment_Information>
    <p1:Include_Organizations>1</p1:Include_Organizations>
    <p1:Exclude_Organization_Support_Role_Data>1</p1:Exclude_Organization_Support_Role_Data>
    <p1:Exclude_Location_Hierarchies>1</p1:Exclude_Location_Hierarchies>
    <p1:Exclude_Cost_Center_Hierarchies>1</p1:Exclude_Cost_Center_Hierarchies>
    <p1:Exclude_Company_Hierarchies>1</p1:Exclude_Company_Hierarchies>
    <p1:Exclude_Matrix_Organizations>1</p1:Exclude_Matrix_Organizations>
    <p1:Exclude_Pay_Groups>1</p1:Exclude_Pay_Groups>
    <p1:Exclude_Regions>1</p1:Exclude_Regions>
    <p1:Exclude_Region_Hierarchies>1</p1:Exclude_Region_Hierarchies>
    <p1:Exclude_Funds>1</p1:Exclude_Funds>
    <p1:Exclude_Fund_Hierarchies>1</p1:Exclude_Fund_Hierarchies>
    <p1:Exclude_Grants>1</p1:Exclude_Grants>
    <p1:Exclude_Grant_Hierarchies>1</p1:Exclude_Grant_Hierarchies>
    <p1:Exclude_Business_Units>1</p1:Exclude_Business_Units>
    <p1:Exclude_Business_Unit_Hierarchies>1</p1:Exclude_Business_Unit_Hierarchies>
    <p1:Exclude_Programs>1</p1:Exclude_Programs>
    <p1:Exclude_Program_Hierarchies>1</p1:Exclude_Program_Hierarchies>
    <p1:Exclude_Gifts>1</p1:Exclude_Gifts>
    <p1:Exclude_Gift_Hierarchies>1</p1:Exclude_Gift_Hierarchies>
    <p1:Include_Management_Chain_Data>1</p1:Include_Management_Chain_Data>
    <p1:Include_Transaction_Log_Data>1</p1:Include_Transaction_Log_Data>
    <p1:Include_Additional_Jobs>1</p1:Include_Additional_Jobs>
  </p1:Response_Group>
</Get_Workers_Request>

Response_Group 节点用于指定要从 Workday 提取哪些工作人员属性。 有关 Response_Group 节点中每个标志的说明,请参阅 Workday Get_Workers API 文档

Response_Group 节点中指定的某些标志值是基于 Workday Microsoft Entra 预配应用程序中配置的属性来计算的。 有关用于设置标志值的条件,请参阅受支持的实体部分。

来自 Workday 的针对上述查询的 Get_Workers 响应内容包括工作人员记录数和页面计数。

  <wd:Response_Results>
    <wd:Total_Results>509</wd:Total_Results>
    <wd:Total_Pages>17</wd:Total_Pages>
    <wd:Page_Results>30</wd:Page_Results>
    <wd:Page>1</wd:Page>
  </wd:Response_Results>

为检索结果集的下一页,下一个 Get_Workers 查询将页码指定为 Response_Filter 中的参数 。

  <p1:Response_Filter>
    <p1:As_Of_Effective_Date>2021-01-19T02:29:16.0094202Z</p1:As_Of_Effective_Date>
    <p1:As_Of_Entry_DateTime>2021-01-19T02:29:16.0094202Z</p1:As_Of_Entry_DateTime>
    <p1:Page>2</p1:Page>
    <p1:Count>30</p1:Count>
  </p1:Response_Filter>

Microsoft Entra 预配服务将处理每个页面,并在完全同步期间循环访问所有有效的工作人员。对于从 Workday 导入的每个工作人员条目:

  • 应用 XPATH 表达式以从 Workday 检索属性。
  • 应用属性映射和匹配规则,以及
  • 该服务确定要在目标 (Microsoft Entra ID / Active Directory) 中执行的操作。

处理完成后,它会将与完全同步的起始时间相关的时间戳作为水印保存。 此水印用作增量同步周期的起点。

增量同步的工作原理

完全同步后,Microsoft Entra 预配服务会维护 LastExecutionTimestamp 并用它来创建增量查询以检索增量更改。 在增量同步期间,Microsoft Entra ID 将以下类型的查询发送到 Workday:

查询手动更新

以下 Get_Workers 请求将查询在上次执行时间与当前执行时间之间发生的手动更新。

<!-- Workday incremental sync query for manual updates -->
<!-- Replace version with Workday Web Services version present in your connection URL -->
<!-- Replace timestamps with the UTC time corresponding to last execution and current execution time -->
<!-- Count specifies the number of records to return in each page -->
<!-- Response_Group flags derived from provisioning attribute mapping -->

<Get_Workers_Request p1:version="v21.1" xmlns:p1="urn:com.workday/bsvc" xmlns="urn:com.workday/bsvc">
  <p1:Request_Criteria>
    <p1:Transaction_Log_Criteria_Data>
      <p1:Transaction_Date_Range_Data>
        <p1:Updated_From>2021-01-19T02:29:16.0094202Z</p1:Updated_From>
        <p1:Updated_Through>2021-01-19T02:49:06.290136Z</p1:Updated_Through>
      </p1:Transaction_Date_Range_Data>
    </p1:Transaction_Log_Criteria_Data>
  </p1:Request_Criteria>
  <p1:Response_Filter>
    <p1:As_Of_Effective_Date>2021-01-19T02:49:06.290136Z</p1:As_Of_Effective_Date>
    <p1:As_Of_Entry_DateTime>2021-01-19T02:49:06.290136Z</p1:As_Of_Entry_DateTime>
    <p1:Count>30</p1:Count>
  </p1:Response_Filter>
  <p1:Response_Group>
    <p1:Include_Reference>1</p1:Include_Reference>
    <p1:Include_Personal_Information>1</p1:Include_Personal_Information>
    <p1:Include_Employment_Information>1</p1:Include_Employment_Information>
    <p1:Include_Organizations>1</p1:Include_Organizations>
    <p1:Exclude_Organization_Support_Role_Data>1</p1:Exclude_Organization_Support_Role_Data>
    <p1:Exclude_Location_Hierarchies>1</p1:Exclude_Location_Hierarchies>
    <p1:Exclude_Cost_Center_Hierarchies>1</p1:Exclude_Cost_Center_Hierarchies>
    <p1:Exclude_Company_Hierarchies>1</p1:Exclude_Company_Hierarchies>
    <p1:Exclude_Matrix_Organizations>1</p1:Exclude_Matrix_Organizations>
    <p1:Exclude_Pay_Groups>1</p1:Exclude_Pay_Groups>
    <p1:Exclude_Regions>1</p1:Exclude_Regions>
    <p1:Exclude_Region_Hierarchies>1</p1:Exclude_Region_Hierarchies>
    <p1:Exclude_Funds>1</p1:Exclude_Funds>
    <p1:Exclude_Fund_Hierarchies>1</p1:Exclude_Fund_Hierarchies>
    <p1:Exclude_Grants>1</p1:Exclude_Grants>
    <p1:Exclude_Grant_Hierarchies>1</p1:Exclude_Grant_Hierarchies>
    <p1:Exclude_Business_Units>1</p1:Exclude_Business_Units>
    <p1:Exclude_Business_Unit_Hierarchies>1</p1:Exclude_Business_Unit_Hierarchies>
    <p1:Exclude_Programs>1</p1:Exclude_Programs>
    <p1:Exclude_Program_Hierarchies>1</p1:Exclude_Program_Hierarchies>
    <p1:Exclude_Gifts>1</p1:Exclude_Gifts>
    <p1:Exclude_Gift_Hierarchies>1</p1:Exclude_Gift_Hierarchies>
    <p1:Include_Management_Chain_Data>1</p1:Include_Management_Chain_Data>
    <p1:Include_Additional_Jobs>1</p1:Include_Additional_Jobs>
  </p1:Response_Group>
</Get_Workers_Request>

查询有效日期更新和终止

以下 Get_Workers 请求将查询在上次执行时间与当前执行时间之间发生的有效日期更新。

<!-- Workday incremental sync query for effective-dated updates -->
<!-- Replace version with Workday Web Services version present in your connection URL -->
<!-- Replace timestamps with the UTC time corresponding to last execution and current execution time -->
<!-- Count specifies the number of records to return in each page -->
<!-- Response_Group flags derived from provisioning attribute mapping -->

<Get_Workers_Request p1:version="v21.1" xmlns:p1="urn:com.workday/bsvc" xmlns="urn:com.workday/bsvc">
  <p1:Request_Criteria>
    <p1:Transaction_Log_Criteria_Data>
      <p1:Transaction_Date_Range_Data>
        <p1:Effective_From>2021-01-19T02:29:16.0094202Z</p1:Effective_From>
        <p1:Effective_Through>2021-01-19T02:49:06.290136Z</p1:Effective_Through>
      </p1:Transaction_Date_Range_Data>
    </p1:Transaction_Log_Criteria_Data>
  </p1:Request_Criteria>
  <p1:Response_Filter>
    <p1:As_Of_Effective_Date>2021-01-19T02:49:06.290136Z</p1:As_Of_Effective_Date>
    <p1:As_Of_Entry_DateTime>2021-01-19T02:49:06.290136Z</p1:As_Of_Entry_DateTime>
    <p1:Page>1</p1:Page>
    <p1:Count>30</p1:Count>
  </p1:Response_Filter>
  <p1:Response_Group>
    <p1:Include_Reference>1</p1:Include_Reference>
    <p1:Include_Personal_Information>1</p1:Include_Personal_Information>
    <p1:Include_Employment_Information>1</p1:Include_Employment_Information>
    <p1:Include_Organizations>1</p1:Include_Organizations>
    <p1:Exclude_Organization_Support_Role_Data>1</p1:Exclude_Organization_Support_Role_Data>
    <p1:Exclude_Location_Hierarchies>1</p1:Exclude_Location_Hierarchies>
    <p1:Exclude_Cost_Center_Hierarchies>1</p1:Exclude_Cost_Center_Hierarchies>
    <p1:Exclude_Company_Hierarchies>1</p1:Exclude_Company_Hierarchies>
    <p1:Exclude_Matrix_Organizations>1</p1:Exclude_Matrix_Organizations>
    <p1:Exclude_Pay_Groups>1</p1:Exclude_Pay_Groups>
    <p1:Exclude_Regions>1</p1:Exclude_Regions>
    <p1:Exclude_Region_Hierarchies>1</p1:Exclude_Region_Hierarchies>
    <p1:Exclude_Funds>1</p1:Exclude_Funds>
    <p1:Exclude_Fund_Hierarchies>1</p1:Exclude_Fund_Hierarchies>
    <p1:Exclude_Grants>1</p1:Exclude_Grants>
    <p1:Exclude_Grant_Hierarchies>1</p1:Exclude_Grant_Hierarchies>
    <p1:Exclude_Business_Units>1</p1:Exclude_Business_Units>
    <p1:Exclude_Business_Unit_Hierarchies>1</p1:Exclude_Business_Unit_Hierarchies>
    <p1:Exclude_Programs>1</p1:Exclude_Programs>
    <p1:Exclude_Program_Hierarchies>1</p1:Exclude_Program_Hierarchies>
    <p1:Exclude_Gifts>1</p1:Exclude_Gifts>
    <p1:Exclude_Gift_Hierarchies>1</p1:Exclude_Gift_Hierarchies>
    <p1:Include_Management_Chain_Data>1</p1:Include_Management_Chain_Data>
    <p1:Include_Additional_Jobs>1</p1:Include_Additional_Jobs>
  </p1:Response_Group>
</Get_Workers_Request>

查询未来日期的聘用信息

如果上述任何查询返回了未来日期的聘用信息,则使用以下 Get_Workers 请求提取有关未来日期的新聘用的信息。 新聘用信息的 WID 属性用于执行查找,并且有效日期设置为入职日期和时间。

注意

Workday 中未来日期的雇用将“活动”字段设置为“0”,并在雇用日期更改为“1”。 连接器设计用于查询在雇用日期生效的未来雇用信息,这就是为什么它总是获取未来雇用员工配置文件并将“活动”字段设置为“1”。 这使你可以提前为未来雇用设置 Microsoft Entra 配置文件,并预先填充所有正确的信息。 如果你想延迟为未来雇用启用 Microsoft Entra 帐户,请使用转换函数 DateDiff

<!-- Workday incremental sync query to get new hire data effective as on hire date/first day of work -->
<!-- Replace version with Workday Web Services version present in your connection URL -->
<!-- Replace timestamps hire date/first day of work -->
<!-- Count specifies the number of records to return in each page -->
<!-- Response_Group flags derived from provisioning attribute mapping -->

<Get_Workers_Request p1:version="v21.1" xmlns:p1="urn:com.workday/bsvc" xmlns="urn:com.workday/bsvc">
  <p1:Request_References>
    <p1:Worker_Reference>
      <p1:ID p1:type="WID">7bf6322f1ea101fd0b4433077f09cb04</p1:ID>
    </p1:Worker_Reference>
  </p1:Request_References>
  <p1:Response_Filter>
    <p1:As_Of_Effective_Date>2021-02-01T08:00:00+00:00</p1:As_Of_Effective_Date>
    <p1:As_Of_Entry_DateTime>2021-02-01T08:00:00+00:00</p1:As_Of_Entry_DateTime>
    <p1:Count>30</p1:Count>
  </p1:Response_Filter>
  <p1:Response_Group>
    <p1:Include_Reference>1</p1:Include_Reference>
    <p1:Include_Personal_Information>1</p1:Include_Personal_Information>
    <p1:Include_Employment_Information>1</p1:Include_Employment_Information>
    <p1:Include_Organizations>1</p1:Include_Organizations>
    <p1:Exclude_Organization_Support_Role_Data>1</p1:Exclude_Organization_Support_Role_Data>
    <p1:Exclude_Location_Hierarchies>1</p1:Exclude_Location_Hierarchies>
    <p1:Exclude_Cost_Center_Hierarchies>1</p1:Exclude_Cost_Center_Hierarchies>
    <p1:Exclude_Company_Hierarchies>1</p1:Exclude_Company_Hierarchies>
    <p1:Exclude_Matrix_Organizations>1</p1:Exclude_Matrix_Organizations>
    <p1:Exclude_Pay_Groups>1</p1:Exclude_Pay_Groups>
    <p1:Exclude_Regions>1</p1:Exclude_Regions>
    <p1:Exclude_Region_Hierarchies>1</p1:Exclude_Region_Hierarchies>
    <p1:Exclude_Funds>1</p1:Exclude_Funds>
    <p1:Exclude_Fund_Hierarchies>1</p1:Exclude_Fund_Hierarchies>
    <p1:Exclude_Grants>1</p1:Exclude_Grants>
    <p1:Exclude_Grant_Hierarchies>1</p1:Exclude_Grant_Hierarchies>
    <p1:Exclude_Business_Units>1</p1:Exclude_Business_Units>
    <p1:Exclude_Business_Unit_Hierarchies>1</p1:Exclude_Business_Unit_Hierarchies>
    <p1:Exclude_Programs>1</p1:Exclude_Programs>
    <p1:Exclude_Program_Hierarchies>1</p1:Exclude_Program_Hierarchies>
    <p1:Exclude_Gifts>1</p1:Exclude_Gifts>
    <p1:Exclude_Gift_Hierarchies>1</p1:Exclude_Gift_Hierarchies>
    <p1:Include_Management_Chain_Data>1</p1:Include_Management_Chain_Data>
    <p1:Include_Additional_Jobs>1</p1:Include_Additional_Jobs>
  </p1:Response_Group>
</Get_Workers_Request>

正在检索工作人员数据属性

Get_Workers API 可以返回与工作人员关联的不同数据集。 Microsoft Entra 预配服务根据预配架构中配置的 XPATH API 表达式确定要从 Workday 中检索的数据集。 相应地,Response_Group 标志在 Get_Workers 请求中设置 。

该表提供了有关可用于检索特定数据集的映射配置指导。

# Workday 实体 默认包括 要在映射中指定以提取非默认实体的 XPATH 模式
1 Personal Data wd:Worker_Data/wd:Personal_Data
2 Employment Data wd:Worker_Data/wd:Employment_Data
3 Additional Job Data wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=0]
4 Organization Data wd:Worker_Data/wd:Organization_Data
5 Management Chain Data wd:Worker_Data/wd:Management_Chain_Data
6 Supervisory Organization SUPERVISORY
7 Company COMPANY
8 Business Unit BUSINESS_UNIT
9 Business Unit Hierarchy BUSINESS_UNIT_HIERARCHY
10 Company Hierarchy COMPANY_HIERARCHY
11 Cost Center COST_CENTER
12 Cost Center Hierarchy COST_CENTER_HIERARCHY
13 Fund FUND
14 Fund Hierarchy FUND_HIERARCHY
15 Gift GIFT
16 Gift Hierarchy GIFT_HIERARCHY
17 Grant GRANT
18 Grant Hierarchy GRANT_HIERARCHY
19 Business Site Hierarchy BUSINESS_SITE_HIERARCHY
20 Matrix Organization MATRIX
21 Pay Group PAY_GROUP
22 Programs PROGRAMS
23 Program Hierarchy PROGRAM_HIERARCHY
24 Region REGION_HIERARCHY
25 Location Hierarchy LOCATION_HIERARCHY
26 Account Provisioning Data wd:Worker_Data/wd:Account_Provisioning_Data
27 Background Check Data wd:Worker_Data/wd:Background_Check_Data
28 Benefit Eligibility Data wd:Worker_Data/wd:Benefit_Eligibility_Data
29 Benefit Enrollment Data wd:Worker_Data/wd:Benefit_Enrollment_Data
30 Career Data wd:Worker_Data/wd:Career_Data
31 Compensation Data wd:Worker_Data/wd:Compensation_Data
32 Contingent Worker Tax Authority Data wd:Worker_Data/wd:Contingent_Worker_Tax_Authority_Form_Type_Data
33 Development Item Data wd:Worker_Data/wd:Development_Item_Data
34 Employee Contracts Data wd:Worker_Data/wd:Employee_Contracts_Data
35 Employee Review Data wd:Worker_Data/wd:Employee_Review_Data
36 Feedback Received Data wd:Worker_Data/wd:Feedback_Received_Data
37 Worker Goal Data wd:Worker_Data/wd:Worker_Goal_Data
38 Photo Data wd:Worker_Data/wd:Photo_Data
39 Qualification Data wd:Worker_Data/wd:Qualification_Data
40 Related Persons Data wd:Worker_Data/wd:Related_Persons_Data
41 Role Data wd:Worker_Data/wd:Role_Data
42 Skill Data wd:Worker_Data/wd:Skill_Data
43 Succession Profile Data wd:Worker_Data/wd:Succession_Profile_Data
44 Talent Assessment Data wd:Worker_Data/wd:Talent_Assessment_Data
45 User Account Data wd:Worker_Data/wd:User_Account_Data
46 Worker Document Data wd:Worker_Data/wd:Worker_Document_Data

注意

表中列出的每个 Workday 实体都受 Workday 中的“域安全策略”保护。 如果在设置正确的 XPATH 后无法检索与实体关联的任何属性,请与 Workday 管理员联系,以确保为与预配应用相关联的集成系统用户配置相应的域安全策略。 例如,若要检索技术数据,需要具有对 Workday 域“工作人员数据: 技能和经验”的 Get 访问权限 。

下面是有关如何扩展 Workday 集成以满足特定要求的一些示例。

示例 1:检索成本中心和支付组信息

假设你想要从 Workday 检索以下数据集,并将其用于预配规则:

  • 成本中心
  • 成本中心层次结构
  • 支付组

默认情况下,不包括上述数据集。 检索这些数据集:

  1. 至少以应用程序管理员的身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“应用程序”>“企业应用程序”。

  3. 选择 Workday 到 Active Directory / Microsoft Entra 用户预配应用程序。

  4. 选择预配

  5. 编辑映射,并从高级部分打开 Workday 属性列表。

  6. 添加以下属性定义,并将其标记为“必需”。 这些属性不会映射到 Active Directory 或 Microsoft Entra ID 中的任何属性。 它们充当向连接器发送的信号,以检索成本中心、成本中心层次结构和薪酬组信息。

    属性名称 XPATH API 表达式
    CostCenterHierarchyFlag 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']='COST_CENTER_HIERARCHY']/wd:Organization_Reference/@wd:Descriptor
    CostCenterFlag 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']='COST_CENTER']/wd:Organization_Data/wd:Organization_Code/text()
    PayGroupFlag 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']='PAY_GROUP']/wd:Organization_Data/wd:Organization_Reference_ID/text()
  7. Get_Workers 响应中提供“成本中心”和“薪酬组”数据集后,可以使用 XPATH 值检索成本中心名称、成本中心代码和薪酬组。

    属性名称 XPATH API 表达式
    CostCenterName wd:Worker/wd:Worker_Data/wd:Organization_Data/wd:Worker_Organization_Data/wd:Organization_Data[wd:Organization_Type_Reference/@wd:Descriptor='Cost Center']/wd:Organization_Name/text()
    CostCenterCode wd:Worker/wd:Worker_Data/wd:Organization_Data/wd:Worker_Organization_Data/wd:Organization_Data[wd:Organization_Type_Reference/@wd:Descriptor='Cost Center']/wd:Organization_Code/text()
    PayGroup wd:Worker/wd:Worker_Data/wd:Organization_Data/wd:Worker_Organization_Data/wd:Organization_Data[wd:Organization_Type_Reference/@wd:Descriptor='Pay Group']/wd:Organization_Name/text()

示例 2:检索资格和技能数据

假设你想要检索与用户关联的认证。 此信息是限定数据集的一部分。 若要将此数据集作为 Get_Workers 响应的一部分获取,请使用以下 XPATH:

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

示例 3:检索预配组分配

假设你要检索分配给某个工作人员的预配组。 此信息是帐户预配数据集的一部分。 若要将此数据作为 Get_Workers 响应的一部分获取,请使用以下 XPATH:

wd:Worker/wd:Worker_Data/wd:Account_Provisioning_Data/wd:Provisioning_Group_Assignment_Data[wd:Status='Assigned']/wd:Provisioning_Group/text()

处理不同的 HR 方案

本部分介绍如何为以下 HR 方案自定义预配应用:

支持辅助角色转换

本部分介绍员工从全职员工 (FTE) 转为临时员工 (CW)(反之亦然)的情况下,Microsoft Entra 预配服务提供的支持。 根据 Workday 中处理员工转换的方式,可能需要考虑不同的实现方面。

场景 1:从 FTE 到 CW(或反向)的倒填日期转换

出于合理的业务原因,HR 团队可能会在 Workday 中倒填员工转换事务的日期。 示例包括工资单处理、预算合规性、法律要求和福利管理。 下面的示例演示了如何针对该方案处理预配。

  • 2023 年 1 月 15 日,Jane Doe 受聘成为临时员工。 HR 为 Jane 提供了全职岗位。
  • Jane 的合同更改的条款需要支持倒填日期事务,使其与本月初保持一致。 2023 年 1 月 15 日,HR 在 Workday 中启动倒填日期员工转换事务,生效日期为 2023 年 1 月 1 日。 现在,对于 Jane 来说,Workday 中有两份员工资料。 CW 资料处于非活动状态,而 FTE 资料处于活动状态。
  • Microsoft Entra 预配服务 2023 年 1 月 15 日在 Workday 事务日志中检测到此更改。 在接下来的同步周期中,服务将自动预配新 FTE 资料的属性。
  • 无需在预配应用配置中进行更改即可处理此场景。

方案 2:今天受雇为 CW/FTE 的员工立即更改为 FTE/CW

此场景与上一个场景类似,只不过 HR 执行立即生效的员工转换,而不是倒填日期事务。 Microsoft Entra 预配服务在 Workday 事务日志中检测到此更改。 在下一个同步周期中,服务会自动预配与活动 FTE 资料关联的属性。 无需在预配应用配置中进行更改即可处理此场景。

场景 3:雇用为 CW/FTE 的员工合同终止,在一段时间后重新以 FTE/CW 身份加入

员工以临时员工的身份开始在公司工作,离开公司,然后在几个月后以全职员工身份重新加入公司是很常见的情况。 下面的示例演示了如何针对此场景处理预配。

  • 2023 年 1 月 1 日,John Smith 以临时员工的身份开始工作。 由于没有与 John 的 WorkerID(匹配属性)关联的 AD 帐户,预配服务会为他创建一个新的 AD 帐户并将 John 的临时员工 WID (WorkdayID) 链接到他的 AD 帐户。
  • John 的合同于 2023 年 1 月 31 日结束。 在 1 月 31 日结束之后运行的预配周期中,将禁用 John 的 AD 帐户。
  • John 申请了另一个职位,并决定从 2023 年 5 月 1 日开始,以全职员工的身份重新加入公司。 HR 于 2023 年 4 月 15 日以预聘员工身份输入 John 的信息。 现在,对于 John 来说,Workday 中有两份员工资料。 CW 资料处于非活动状态,而 FTE 资料处于活动状态。 这两条记录的 WorkerID 相同,但 WID 不同。
  • 4 月 15 日,在增量周期内,Microsoft Entra 预配服务会自动将 AD 帐户的所有权转移到活动的员工资料。 在这种情况下,系统会从 AD 帐户中取消链接临时员工资料,并在 John 的活动员工资料和其 AD 帐户之间建立新的链接。
  • 无需在预配应用配置中进行更改即可处理此场景。

场景4:员工为有效 CW/FTE 状态的预填日期的转换

有时,HR 发起未来日期的员工转换事务时,员工可能已经是有效的临时员工。 下面的示例演示了如何针对此场景处理预配,以及支持此方案所需的配置更改。

  • 2023 年 1 月 1 日,John Smith 以临时员工的身份开始工作。 由于没有与 John 的 WorkerID(匹配属性)关联的 AD 帐户,预配服务会为他创建一个新的 AD 帐户并将 John 的临时员工 WID (WorkdayID) 链接到他的 AD 帐户。

  • 1 月 15 日,HR 发起将 John 从临时员工转为全职员工的事务,并将于 2023 年 2 月 1 日起生效。

  • 由于 Microsoft Entra 预配服务可自动处理将来日期的雇用,因此它会在 1 月 15 日处理 John 的新全职员工资料,并使用全职雇佣详细信息在 AD 中更新 John 的资料(即使他仍属于临时员工)。

  • 要避免此行为并确保在 2023 年 2 月 1 日预配 John 的 FTE 详细信息,请执行以下配置更改。

    配置更改

    1. 让 Workday 管理员创建名为“未来日期转换”的预配组。
    2. 在 Workday 中实现逻辑,将员工/临时员工记录与将来的日期转换添加到此预配组。
    3. 更新 Microsoft Entra 预配应用以读取此预配组。 请参阅检索预配组,了解相关的说明
    4. 在 Microsoft Entra ID 中创建范围筛选器,排除属于此预配组的员工资料。
    5. 在 Workday 中实现逻辑,以便在转换日期生效时,Workday 从 Workday 中的预配组中删除相关的员工/临时员工记录。
    6. 使用此配置,现有员工/临时员工记录将继续有效,并且预配更改将仅在转换当天发生。

注意

在初始完全同步期间,你可能会注意到,与上一个非活动辅助角色配置文件关联的属性值流向转换后的辅助角色的 AD 帐户。 这是暂时性的,在完全同步过程中,它最终会由活动员工资料中的属性值覆盖。 完全同步完成并且预配作业达到稳定状态后,将始终在增量同步期间选取活动员工资料。

检索国际作业分配和辅助作业详细信息

默认情况下,Workday 连接器检索与工作人员的主作业相关联的属性。 连接器还支持检索与国际工作分配或辅助工作关联的 Additional Job Data

使用以下步骤检索与国际工作分配关联的属性:

  1. 将 Workday 连接 URL 设置为使用 Workday Web Service API 版本 30.0 或更高版本。 在 Workday 预配应用中相应地设置正确的 XPATH 值
  2. 使用 Worker_Job_Data 节点上的选择器 @wd:Primary_Job=0 以检索正确的属性。
    • 示例 1:若要获取 SecondaryBusinessTitle,请使用 XPATH wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=0]/wd:Position_Data/wd:Business_Title/text()
    • 示例 2:若要获取 SecondaryBusinessLocation,请使用 XPATH wd:Worker/wd:Worker_Data/wd:Employment_Data/wd:Worker_Job_Data[@wd:Primary_Job=0]/wd:Position_Data/wd:Business_Site_Summary_Data/wd:Location_Reference/@wd:Descriptor

后续步骤