0

我们正在尝试开发一个启用 SCIM 的供应系统,用于将数据从企业云订阅者 (ECS) 供应到 Salesforce(云服务提供商-CSP)。我们遵循 SCIM 1.1 标准。

我们能做什么:

我们能够使用 Salesforce 自动生成的 userId 字段对用户对象执行 CRUD 操作

确切的问题:

我们无法使用 ECS 提供的 externalId 更新/删除用户对象。尝试如下...但它不工作,Unknown_Exception被抛出...

XXX/my.salesforce.com/services/scim/v1/Users/701984?fields=externalId

请注意,由于某些合规性原因,无法将 Salesforce 用户 ID 存储在 ECS 的数据库中。所以我们必须完全依赖 externalId 。

可能的解决方法:

Step1:根据 Salesforce 中的 externalId 读取 userId Step2:使用 Step1 中获取的 salesforce UserId 更新 User 对象。但是这两个步骤的过程肯定会降低性能。

有什么方法可以通过 externalId 更新/删除用户,请您指导我们.. 非常感谢....

4

2 回答 2

2

我意识到这是旧线程,但想指出您可以使用外部 ID 从 REST 更新用户。上述问题中的端点不正确。以下是它的设置方式,作为 PATCH 请求发送:

[instance]/services/data/v37.0/sobjects/user/[external_id__c]/[external id value]
  • 实例 = 您的实例,即https://test.salesforce.com/
  • external_id__c = 用户自定义外部 ID 字段的 API 名称
  • 外部 ID 值 = 用户外部 ID 的值

笔记:

  • Salesforce 使用正文中没有内容的 HTTP 204 状态代码进行响应,这对于补丁请求不常见,但它是“成功”响应
  • 用户的外部 id 必须是自定义字段,确保将其设置为 UNIQUE
  • 确保拨打电话的用户的个人资料/权限集具有管理用户权限并有权访问外部 ID 字段
于 2017-02-28T16:52:04.367 回答
1

对于其他应用程序来说,先搜索然后对返回的对象执行更新也是很常见的模式。你的解决方法对我来说似乎很好。您担心什么性能问题?您是否担心 Salesforce 无法处理更多请求,或者您是否担心应用程序中的响应时间较长,因为您需要发出多个请求?您是否实际测量过额外的通话费用?

于 2016-02-05T02:18:38.047 回答