组织者 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