Dynamics CRM: создание пользователей с определенными идентификаторами GUID - PullRequest
2 голосов
/ 23 февраля 2010

В целях интеграции наши пользователи в Dynamics CRM должны иметь те же GUID, что и в остальной части нашей среды (несколько пользовательских веб-приложений, построенных на ASP.NET и SQL Server 2005). Но когда мы пытаемся создать нового пользователя Dynamics с определенным GUID, Dynamics просто игнорирует его и создает свой собственный (шаблон, который заставляет меня поверить, что он использует NEWSEQUENTIALID () внутри, как если бы пользователь был создан с помощью пользовательского интерфейса). ). Но для других типов (например, свяжитесь с нами) Dynamics принимает 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. :-(

Edit:

Я уже задавал этот вопрос на форуме Microsoft CRM .

Ответы [ 3 ]

2 голосов
/ 24 февраля 2010

Я знаю, что это не идеально, но в качестве обходного пути вы можете добавить пользовательский атрибут к объекту systemuser и сохранить там свой идентификатор интеграции.

1 голос
/ 02 апреля 2010

Не зная больше о вашем решении, я могу вам сказать, что вам не нужны жестко запрограммированные запросы везде, как вы пытаетесь это сделать. Когда я пришел к моему нынешнему клиенту, они пытались сделать то же самое, и это была серьезная PITA.
У меня ушло около дня, чтобы заменить весь код, который использовал жестко запрограммированные запросы для различных сущностей, простой процедурой поиска, которая получает сущность по любому ключу (имя пользователя в вашем случае), которое вы хотите, а затем получаете идентификатор сущности из этого. Больше не нужно пытаться делать то, что вы должны пытаться делать в первую очередь.

0 голосов
/ 10 октября 2010

Мне потребовалось около дня, чтобы заменить весь код, который использовал жестко запрограммированные запросы для различных сущностей, простой процедурой поиска, которая получает сущность по любому ключу (имя пользователя в вашем случае)

Как интересно. Вы ищете пользователя John Doe по строкам 'John', 'Doe'. И что мне делать, если я получил ДВА "Джона Доу" в моей компании?

...