组织者活动聚会名称为空

时间:2019-02-28 18:18:06

标签: c# dynamics-crm dynamics-crm-online dynamics-365 dynamics-crm-365

这是一个有趣的问题。我想知道任何设置都可以使这种效果有所不同,也可以通过任何变通方法来解决。

我们有不同的Dynamics 365 CRM联机实例,但是所有实例都与从Prod刷新的实例相同。最近开发的插件代码在整个环境中的行为有所不同。

var organizers = (EntityCollection)appointment["organizer"];
Entity record = organizers.Entities[0];
EntityReference organizer = (EntityReference)record["partyid"];

在创建约会时,创建后的异步插件代码读取了organizer-活动方字段之一,但结果却大不相同。尽管systemuserid是相同的,但名称是正确地来自Dev中的该实体引用,但在其他环境中为null

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

那确实是一个奇怪的问题。如果您没有从PROD更新其他组织,我想说的是插件注册中可能注册了其他图像。

由于代码,环境,插件注册,甚至记录ID相同,因此可能值得购买Microsoft支持票证。

同时,一种解决方法是检查Name是否为null,如果是,则检索Name。这是对该系统的另一个调用,但是当您查看Microsoft是否可以提供任何见解时,它将允许您继续进行操作。

答案 1 :(得分:0)

MS认为这是一个错误,但实际上,这种上下文差异是在传统的Web UI和UCI之间发现的。仅适用于约会实体,因为存在一些oData响应已知问题-UCI目标实体缺少格式化值。

我从QA团队那里获得了插件探查器日志,因此我没有意识到他们正在UCI中进行测试,但我在Web中进行了测试,因此快速观察显示了重放/调试时的区别。

无论如何,直到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