【问题标题】:Query deleted records via SF OData API?通过 SF OData API 查询已删除的记录?
【发布时间】:2021-10-25 02:36:06
【问题描述】:

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

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

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

【问题讨论】:

  • 您使用什么 API?标准 SF 还是您的自定义?
  • @Suncatcher 我正在使用标准 SF OData API。
  • 所以您为 SG Central 对象启用了 API 并使用了一些 these ones?是否也只有标准对象或 MDF 需要跟踪删除?
  • 是的,基本上我正在使用您提到的链接中所有可用的 API(OData V2 API)以及我们制作的自定义 MDF API。我也想跟踪标准对象和 MDF 的删除。

标签: odata database-replication sap-successfactors


【解决方案1】:

OData API 无法处理此任务。

SF OData API doc中提取:

在以下情况下不要使用我们的 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 类型的更多信息:

【讨论】:

  • 谢谢。我知道 SOAP Compound Employee API 并尝试使用此 API 来解决我的任务。事实上,如果实体包含在 CompoundEmployee API 中,它可以帮助删除一些记录,但限制是背景元素,非员工实体仍然无法捕获,例如。 Background_element_award、picklist、cost_center 等。我至少会处理 BG 元素以确保员工信息的完整性,您是否有任何见解可以将 BG 元素添加到 Compound Employee API 中?非常感谢。
  • 不清楚你想做什么,要么删除记录,要么记录它们的删除。背景元素只是人物简介 UI 元素,仅此而已,它们不存储数据,它们公开 MDF 对象。如果实体存在于OData API Data Dictionary 中,那么它可以被 OData API 审计跟踪,如果这是allowed by API settings。这也适用于 MDF 选项列表。添加了如何启用审计日志的信息,请参阅问题
  • 你的意思是背景元素(我从管理业务配置-->员工资料-->背景元素创建的)也是 MDF 对象吗?我以为他们是不同的。是的,它们出现在 OData API 中,我需要跟踪它们的删除。 1. Background 元素是否可以添加到 SOAP Compound Employee 中并从 SOAP API 中使用? 2. 我是否可以得出结论,如果数据在 Compound Employee 中可用,我们可以从 SOAP Compound Employee API 中跟踪删除,否则我们必须从 API 审计日志中跟踪删除?谢谢。
  • 1.是的。 2. 是的。 SFAPI 数据字典的行为与 OData 数据字典相同,您可以查询其中存在的任何自定义 MDF(成本中心、选项列表等)。如果您错过了 SFAPI DD 中的自定义 MDF 实体,您可以添加它(请参阅 SAP Note 2597777 了解如何)并且不要忘记将 supportedOperations 设置为 UPSERT、DELETE、QUERY。总而言之,您最初的问题是关于 OData API,而不是 SOAP API,如果您对 SFAPI 感兴趣,请提出一个新问题
  • 非常感谢。我会进一步研究 SFAPI 并在必要时提出新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
  • 2016-11-28
  • 2015-01-04
  • 2016-11-30
  • 1970-01-01
相关资源
最近更新 更多