【问题标题】:Is it possible to update/delete User by externalId是否可以通过 externalId 更新/删除用户
【发布时间】:2016-02-04 13:38:59
【问题描述】:

我们正在尝试开发支持 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 更新/删除用户 你能指导我们吗? 非常感谢....

【问题讨论】:

    标签: salesforce scim


    【解决方案1】:

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

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

    注意事项:

    • Salesforce 以 HTTP 204 状态代码响应,正文中没有内容,这对于补丁请求不常见,但它是“成功”响应
    • 用户的外部 id 必须是自定义字段,确保已设置 独一无二的
    • 确保拨打电话的用户的个人资料/权限集 拥有管理用户权限并可以访问外部 id 字段

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 亲爱的 Bertold,非常感谢您的快速回复。我们实际上担心响应时间较长,因为我们需要多个请求。感谢您告知我们这是 Provisioning 中的常见做法。由于似乎没有其他办法,我们将继续使用解决方法。谢谢
      • 我会考虑一些事情来最小化响应时间的影响:1)在调用之间保持连接打开,2)使用连接池,3)缓存查找(外部 ID 到用户 ID ) 在内存中以减少对 SalesForce 的调用。我希望这会有所帮助。
      • 当然,当然。我们将遵循您的所有建议。非常感谢你
      猜你喜欢
      • 2016-04-27
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      相关资源
      最近更新 更多