Dynamics CRM:使用特定GUID创建用户

时间:2010-02-22 22:15:20

标签: dynamics-crm dynamics-crm-4

出于集成目的,Dynamics CRM中的用户需要具有与其他环境中相同的GUID(基于ASP.NET和SQL Server 2005构建的多个自定义Web应用程序)。但是当我们尝试使用某个GUID创建一个新的Dynamics用户时,Dynamics会忽略它并创建它自己的(其模式让我相信它在内部使用NEWSEQUENTIALID(),就像用户是通过UI创建的一样)。但对于其他类型(例如联系人),动态采用GUID没有问题。

我做错了什么,或者Dynamics总是忽略新用户创建的GUID?

CrmService service = GetService();

systemuser newUser = new systemuser();

Key newUserId = new Key();
newUserId.Value = new Guid("D630FA8D-A32F-4a37-BFEF-CE36CBA29009"); 
  // The GUID I would like Dynamics to use
newUser.systemuserid = newUserId;

Lookup bu = new Lookup();
bu.Value = new Guid("16B10365-0E18-DF11-B839-005056B60DD4"); 
  // The correct business unit ID.  Nothing to see here.
newUser.businessunitid = bu;

newUser.firstname = "John";
newUser.lastname = "Doe";
newUser.domainname = "DOMAIN\\jdoe";
  // Valid AD credentials too.  Names changed to protect the innocent.

Guid userId = service.Create(newUser);
Console.WriteLine("User created with GUID " + userId.ToString());
  // Dynamics creates the user with a completely different GUID. :-(

修改

我现在也问过这个问题on Microsoft's CRM forum

3 个答案:

答案 0 :(得分:2)

我知道这不太理想,但作为一种解决方法,您可以向系统用户实体添加自定义属性并在那里存储您的集成ID。

答案 1 :(得分:1)

在不了解您的解决方案的情况下,我可以告诉您,您不需要像您尝试的那样到处都需要硬编码。当我到达现在的客户时,他们正在尝试做同样的事情,这是一个严肃的PITA 我花了大约一天时间用一个简单的查找程序替换所有使用硬编码quids进行各种实体的代码,该程序通过你想要的任何键(你的用户名)来获取实体,然后从中获取实体的id。不再尝试做一些你应该首先尝试做的事情。

答案 2 :(得分:0)

  

我花了大约一天时间用一个简单的查找程序替换所有使用硬编码quids用于各种实体的代码,该程序通过任何键获取实体(在你的情况下是用户名)

多么有趣。你是用'John','Doe'字符串搜索John Doe的用户。如果我的公司里有两个“John Doe”,我该怎么办?