组织者 activity 派对名称为空
Organizer activity party name coming as null
有趣的问题来了。我想知道任何设置都会造成这种差异或任何解决方法才能使其正确。
我们有不同的 Dynamics 365 CRM 在线实例,但所有实例都是相同的,因为它们是从 Prod 刷新的。最近开发的插件代码在不同环境中表现不同。
var organizers = (EntityCollection)appointment["organizer"];
Entity record = organizers.Entities[0];
EntityReference organizer = (EntityReference)record["partyid"];
创建约会时,post-create async 插件代码读取了 organizer
- activity 派对字段之一,但结果非常不同。尽管 systemuserid
相同,但该名称在 Dev 中正确地来自该实体引用,但在其他环境中为 null
。
这确实是一个奇怪的问题。如果您没有从 PROD 刷新其他组织,我会说可能在插件注册中注册了不同的图像。
由于代码、环境、插件注册甚至记录 ID 都相同,因此这可能值得一张 Microsoft 支持票。
同时,解决方法是检查名称是否为空,如果是,则检索名称。这是对系统的另一次调用,但会允许您在查看 Microsoft 是否可以提供任何见解的同时继续进行。
MS 认为这是一个错误,但实际上这种上下文差异是在经典网络 UI 和 UCI 之间确定的。仅适用于约会实体,因为某些 oData 响应已知问题 - UCI 目标实体缺少格式化值。
我从我的 QA 团队那里得到了插件分析器日志,所以我没有意识到他们在 UCI 中进行测试,但我在网络中进行了测试,所以快速观察显示了 replay/debugging 中的差异。
无论如何,在 MS 优先考虑并修复此错误之前,我有以下解决方法来解决此问题。
#region Workaround for fixing UCI app EntityReference coming as empty string
if (string.IsNullOrEmpty(organizer.Name))
{
ctLog.Log("organizer.Name is empty");
fetch = string.Format(@"<fetch>
<entity name='systemuser' >
<attribute name='fullname' />
<filter type='and' >
<condition attribute='systemuserid' operator='eq' value='{0}' />
</filter>
</entity>
</fetch>", organizer.Id);
ctLog.Log("fetch built");
results = userOrgService.RetrieveMultiple(new FetchExpression(fetch));
ctLog.Log("results count: " + results.Entities.Count);
if (results.Entities.Count > 0)
{
organizer.Name = results.Entities[0].GetAttributeValue<string>("fullname");
}
}
#endregion
有趣的问题来了。我想知道任何设置都会造成这种差异或任何解决方法才能使其正确。
我们有不同的 Dynamics 365 CRM 在线实例,但所有实例都是相同的,因为它们是从 Prod 刷新的。最近开发的插件代码在不同环境中表现不同。
var organizers = (EntityCollection)appointment["organizer"];
Entity record = organizers.Entities[0];
EntityReference organizer = (EntityReference)record["partyid"];
创建约会时,post-create async 插件代码读取了 organizer
- activity 派对字段之一,但结果非常不同。尽管 systemuserid
相同,但该名称在 Dev 中正确地来自该实体引用,但在其他环境中为 null
。
这确实是一个奇怪的问题。如果您没有从 PROD 刷新其他组织,我会说可能在插件注册中注册了不同的图像。
由于代码、环境、插件注册甚至记录 ID 都相同,因此这可能值得一张 Microsoft 支持票。
同时,解决方法是检查名称是否为空,如果是,则检索名称。这是对系统的另一次调用,但会允许您在查看 Microsoft 是否可以提供任何见解的同时继续进行。
MS 认为这是一个错误,但实际上这种上下文差异是在经典网络 UI 和 UCI 之间确定的。仅适用于约会实体,因为某些 oData 响应已知问题 - UCI 目标实体缺少格式化值。
我从我的 QA 团队那里得到了插件分析器日志,所以我没有意识到他们在 UCI 中进行测试,但我在网络中进行了测试,所以快速观察显示了 replay/debugging 中的差异。
无论如何,在 MS 优先考虑并修复此错误之前,我有以下解决方法来解决此问题。
#region Workaround for fixing UCI app EntityReference coming as empty string
if (string.IsNullOrEmpty(organizer.Name))
{
ctLog.Log("organizer.Name is empty");
fetch = string.Format(@"<fetch>
<entity name='systemuser' >
<attribute name='fullname' />
<filter type='and' >
<condition attribute='systemuserid' operator='eq' value='{0}' />
</filter>
</entity>
</fetch>", organizer.Id);
ctLog.Log("fetch built");
results = userOrgService.RetrieveMultiple(new FetchExpression(fetch));
ctLog.Log("results count: " + results.Entities.Count);
if (results.Entities.Count > 0)
{
organizer.Name = results.Entities[0].GetAttributeValue<string>("fullname");
}
}
#endregion