1

我正在通过 OData API 将 Successfactors 员工中心数据(包括 FO、MDF、BG 元素等)复制到本地数据库以进行第三方集成。

它能够通过过滤最后修改日期来跟踪更改的记录。但是,已删除的记录无法从 OData API 中捕获。因此,当删除相应的 EC 记录时,我无法删除本地数据库中的记录。

有什么方法可以从 API 或其他来源获取已删除的记录?谢谢。

4

1 回答 1

1

OData API 无法处理此任务。

从SF OData API 文档中提取:

在以下情况下不要使用我们的 OData API:

● 您的系统不能使用 OData API 或 SOAP 进行初始数据加载。在这种情况下,您将使用 CSV 进行导入/导出。通过 FTP 实现自动化也是一种可能。

您只需要员工复制字段级增量、快照或读取修改后的员工,那么 SOAP Compound Employee API 是您的首选工具。您可以在实施 Employee Central Compound Employee API 指南中找到更多信息。

● 您只需要读取数据,那么 SOAP Compound Employee API 也是您的首选工具。

但是,使用 SFAPI(SuccessFactors CompoundEmployee API)很容易。SFAPI 有一个特殊的参数 changedSegmentsOnly 它完全符合您的要求,API 在增量传输中仅返回操作代码不等于 NO_CHANGE 的更改段。

例如,您查询更改的员工数据:

<urn:query>
 <urn:queryString>select person,
                         personal_information,
                         address_information,
                         email_information,
                         phone_information,
                         employment_information,
                         job_information,
                         compensation_information,
                         paycompensation_recurring,
                         paycompensation_non_recurring,
                         direct_deposit,
                         national_id_card,
                         payment_information
                         from CompoundEmployee
                         where person_id_external = 'cgrant'
 </urn:queryString>
 <urn:param>
     <urn:name>resultOptions</urn:name>
     <urn:value>changedSegmentsOnly</urn:value>
</urn:param>
 <urn:param>
     <urn:name>maxRows</urn:name>
     <urn:value>50</urn:value>
 </urn:param>
</urn:query>

此 API 查询将返回所有已更改或删除的员工。

在此处输入图像描述

之后,您可以按该字段过滤您的回复。

附录:对 MDF 实体的任何更改,无论是标准的还是自定义的,都可以通过 OData 审计日志进行跟踪。如何启用它们:

  1. 转到 API 中心中的此设置

在此处输入图像描述

  1. 启用此开关。它也可以为 SFAPI 启用

在此处输入图像描述

  1. 这样,所有 API 调用负载都将被保存,您将能够看到每次调用更改了哪些实体

在此处输入图像描述

先决条件:对象必须对 API 可见并且必须启用 MDF 版本历史

有关 SuccessFactors 的 API 类型的更多信息:

于 2021-10-29T14:50:41.907 回答