我正在通过 OData API 将 Successfactors 员工中心数据(包括 FO、MDF、BG 元素等)复制到本地数据库以进行第三方集成。
它能够通过过滤最后修改日期来跟踪更改的记录。但是,已删除的记录无法从 OData API 中捕获。因此,当删除相应的 EC 记录时,我无法删除本地数据库中的记录。
有什么方法可以从 API 或其他来源获取已删除的记录?谢谢。
我正在通过 OData API 将 Successfactors 员工中心数据(包括 FO、MDF、BG 元素等)复制到本地数据库以进行第三方集成。
它能够通过过滤最后修改日期来跟踪更改的记录。但是,已删除的记录无法从 OData API 中捕获。因此,当删除相应的 EC 记录时,我无法删除本地数据库中的记录。
有什么方法可以从 API 或其他来源获取已删除的记录?谢谢。
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 审计日志进行跟踪。如何启用它们:
先决条件:对象必须对 API 可见并且必须启用 MDF 版本历史
有关 SuccessFactors 的 API 类型的更多信息: