问题描述
我正在将一些数据库从 SSMS 迁移到 CRM Online。问题是,SSMS 数据库中有 systemuser,它们在 CRM Online 中被删除,或者更糟的是 systemuser 有一个新的 GUID。在这种情况下,我试图寻找相似之处。我发现,来自两个系统的系统用户在“内部电子邮件地址”字段中具有相同的值。所以我在我的 Dynamics CRM Destination 中使用了它。并为“可选默认值”添加了一个值。
然后这个错误代码出来了: CRM 服务调用返回错误:不允许修改“SYstem”或“INTEGRATION”用户。
在另一个站点上,我可以使用全名,这是我使用“可选默认值”所做的。
这给了我这个错误代码: CRM 服务调用返回错误:systemuser With Id = 11111-111-AAAA-BBBB-123456789 不存在
和
当我没有在“可选默认值”中写入任何内容时,我收到此错误消息:KingswaySoft.IntegrationToolkit.DynamicsCrm.LookupFailureException:“managerid”字段的文本查找失败,实体“systemuser”不包含记录'fullname' 字段的值为 ''(适用于 Microsoft Dynamics 365 的 SSIS 集成工具包,v11.1.0.7311 - DtsDebugHost,v15.0.2000.93)
有人知道问题和解决方案吗? 我将不胜感激。
解决方法
我的第一个错误是,我试图在“internalEmailAddress”中提供 GUID。为了解决这个问题,我做了一个 LEFT JOIN,在那里我得到了所有 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
然后在 Destination 中,我分配了如下列:
Source Destination
C_Email CreatedBy
M_Email ModifiedBy
Manager_Email ManagerId
文本查找编辑器就像: InternalEmailAddress(E-Mail from SystemUser)
这解决了问题,但我仍然收到此错误: CRM 服务调用返回错误:不允许修改“SYSTEM”或“INTEGRATION”用户。
此错误代码的问题是,我在“ManagerId”字段中的区域中有多个 SystemUser,而在线 CRM 中不存在这些系统用户。并且由于我设置了“默认选项值”,因此所有缺少的 SystemUser 都分配给了 1 个 SystemUser。而在 CRM 中,您不能将 1 个 SystemUser 分配给更多 Territory 的 ManagerId 字段。因此,如果用户不存在,最终结果是不填写该字段。
但是如果您需要将 SystemUser 分配给 ManagerId 字段,那么您应该使用“派生列”手动分配 SystemUser。