1

我正在将一些数据库从 SSMS 迁移到 CRM Online。问题是,SSMS 数据库中有 systemuser,在 CRM Online 中被删除,或者更糟糕的是 systemuser 有一个新的 GUID。在这种情况下,我试图寻找相似之处。我发现,来自两个系统的系统用户在“internalemailaddress”字段中具有相同的值。所以我在我的 Dynamics CRM Destination 中使用了它。并为“可选默认值”添加了一个值。

内部电子邮件地址

并且出现了这个错误代码:CRM 服务调用返回错误:不允许对“SYSTEM”或“INTEGRATION”用户进行修改。

在另一个站点上,我可以使用全名,这是我使用“可选默认值”所做的。

全名

这给了我这个错误代码:CRM 服务调用返回了一个错误:ID = 11111-111-AAAA-BBBB-123456789 的系统用户不存在

CRM 服务调用返回错误:发生意外错误。

当我没有在“可选默认值”中写入任何内容时,我收到以下错误消息: KingswaySoft.IntegrationToolkit.DynamicsCrm.LookupFailureException: Text lookup failed for 'managerid' field, entity 'systemuser' does not contain a record that has a “全名”字段的“”值(Microsoft Dynamics 365 的 SSIS 集成工具包,v11.1.0.7311 - DtsDebugHost,v15.0.2000.93)

有人知道问题和解决方案吗?我将不胜感激。

4

1 回答 1

0

我的第一个错误是,我试图在“internalEmailAddress”中提供 GUID。为了解决这个问题,我做了一个 LEFT JOIN,我得到了所有 Territory 和他们的 SystemUser。我的 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”用户进行修改。

这个错误代码的问题是,我在“ManagerId”字段中有多个 SystemUser,而在线 CRM 中不存在。而且由于我放置了“默认选项值”,因此所有缺少的 SystemUser 都分配给了 1 个 SystemUser。在 CRM 中,您不能将 1 个 SystemUser 分配给更多 Territory 的 ManagerId 字段。因此,如果用户不存在,最终结果是不填写该字段。

但是,如果您需要将 SystemUser 分配给 ManagerId 字段,那么您应该使用“派生列”手动分配 SystemUser。

于 2021-02-04T17:12:22.353 回答