#sql-server #ssis #dynamics-crm #ssms #kingswaysoft
#sql-server #ssis #dynamics-crm #ssms #kingswaysoft
Вопрос:
Я переношу некоторую базу данных из SSMS в CRM Online. И проблема в том, что в базе данных SSMS есть systemuser, которые были удалены в CRM Online, или, что еще хуже, systemuser имеет новый идентификатор GUID. В этом случае я попытался найти сходства. Я обнаружил, что системные пользователи из обеих систем имеют одинаковое значение в поле «internalemailaddress». Поэтому я использовал его в своем пункте назначения Dynamics CRM. И добавил значение для «необязательного значения по умолчанию».
И этот код ошибки вышел: вызов службы CRM вернул ошибку: никакие изменения для пользователя ‘SYSTEM’ или ‘INTEGRATION’ не разрешены.
На другом сайте я мог бы использовать полное имя, что я и сделал с «необязательным значением по умолчанию».
И это дало мне этот код ошибки: вызов службы CRM вернул ошибку: systemuser с Id = 11111-111-AAAA-BBBB-123456789 не существует
и
Вызов службы CRM вернул ошибку: произошла непредвиденная ошибка.
И когда я ничего не пишу в «Необязательном значении по умолчанию», я получаю это сообщение об ошибке: KingswaySoft.IntegrationToolkit.DynamicsCrm.Исключение LookupFailureException: не удалось выполнить поиск текста для поля ‘managerid’, объект ‘systemuser’ не содержит записи со значением » для поля ‘fullname’ (инструментарий интеграции SSIS для Microsoft Dynamics 365, версия 11.1.073 — DtsDebugHost, версия 15.02000 93)
Кто-нибудь знает проблему и решение? Я был бы очень благодарен.
Ответ №1:
Моей первой ошибкой было то, что я попытался указать идентификатор GUID в «internalEmailAddress». Чтобы решить эту проблему, я выполнил ЛЕВОЕ СОЕДИНЕНИЕ, где я получаю всех пользователей Territory и их SystemUsers. Мой SQL-запрос:
SELECT Territory.*, ModifiedBy.InternalEMailAddress as M_EMail,
CreatedBy.InternalEMailAddress as C_EMail, ManagerId.InternalEMailAddress as Manager_Email
FROM TerritoryBase as Territory
LEFT JOIN SystemUser as ModifiedBy
ON Territory.ManagerId = ModifiedBy.SystemUserId
LEFT JOIN SystemUser as CreatedBy
ON Territory.CreatedBy = CreatedBy.SystemUserId
LEFT JOIN SystemUser as ManagerId
ON Territory.ManagerId = ManagerId.SystemUserId
Затем в пункте назначения я назначил столбцы типа:
Source Destination
C_Email CreatedBy
M_Email ModifiedBy
Manager_Email ManagerId
И редактор поиска текста похож:
InternalEmailAddress (электронная почта от SystemUser)
Это решило проблему, но я все равно получил эту ошибку: вызов службы CRM вернул ошибку: никакие изменения для пользователя ‘SYSTEM’ или ‘INTEGRATION’ не разрешены.
Проблема с этим кодом ошибки заключалась в том, что у меня было несколько SystemUser на территории в поле «ManagerID», которого не было в онлайн-CRM. И поскольку я ввел «значение параметра по умолчанию», все отсутствующие SystemUsers были назначены 1 SystemUser. И в CRM вы не можете назначить 1 SystemUser для поля ManagerID большего количества территорий. Таким образом, конечным результатом было не заполнять поле, если пользователь не существовал.
Но если вам нужно назначить SystemUser для поля ManagerID, тогда вы должны назначить SystemUsers вручную с помощью «Производного столбца».