是否可以通过externalId更新/删除用户

时间:2016-02-04 13:38:59

标签: salesforce scim

我们正在尝试开发支持SCIM的配置系统,以便将企业云用户(ECS)中的数据配置到Salesforce(云服务提供商-CSP)。我们遵循SCIM 1.1标准。

我们能做什么:

我们可以使用Salesforce自动生成的userId字段

对User对象执行CRUD操作

确切问题:

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

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

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

可能的解决方法:

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

有没有办法通过externalId更新/删除用户 你能指导我们吗? 非常感谢....

2 个答案:

答案 0 :(得分: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字段

答案 1 :(得分:1)

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