Views:

Dynamics 365 Release - 9.0.2.438+

Starting from around the weekend of Saturday 9th June 2018 Microsoft started pushing out the silent release 9.0.0.438. This contains a bug in the Microsoft Web API where the Microsoft internal cache throws an error when working with one of the core North52 entities.

This bug affects all North52 client-side formulas, so it's a big deal.  We have tried a couple of different techniques but we cannot get around the bug with a set of manual steps that end users could apply. 

Given that a Microsoft solution maybe days to weeks away we have decided to fall back to the old Organization Data REST API that Microsoft provides as it does not contain the bug. We still use this API internally for customers pre 2016 so its proven, solid and still supported.

This means that if you are on Dynamics 365 - 9.0.2.438 or higher and using North52 client-side formulas you will need to download the latest release of North52 BPA - 1.0.0.558 in order to resolve the issue. Note this release became available for download at 16:00 (UTC) on the 11th of June 2018. 


Download North52 BPA Solution


A support case has been logged with Microsoft (Ticket Number: 118061118360178) and we will update this KB article when we have further information. Thank you for your patience and if you have any questions email support@north52.com

 

Technical Details

Example: Web API Call

https://yourorgname.crm.dynamics.com/api/data/v9.0/north52_formulacalculations?$select=north52_result&$filter=north52_name%20eq%20%27wlO|%27%20and
%20north52_parameters%20eq%20%27{}%27%20and%20north52_targetentityid%20eq%20%27{2A09388B-916A-E811-A95D-0022480187F0}%27%20and
%20north52_formulatype%20eq%20%272|1033|a837e4a7-01b8-4f82-a475-be9abd67e667|Web|1|2%27

Error Message

{"error":{"code":"0x80040203","message":"entityName","innererror":{"message":"entityName","type":"Microsoft.Crm.CrmArgumentNullException","stacktrace":" 
 at Microsoft.Crm.Metadata.ServerDynamicMetadataCache.TryGetEntity(String entityName, NameMappingType mapping)\r\n
 at Microsoft.Crm.Metadata.DynamicMetadataCache.GetEntity(String entityName, NameMappingType mapping)\r\n  
 at Microsoft.Crm.Extensibility.OData.CrmODataUtilities.GetEdmEntityNameFromCrmEntityName(String entityName)\r\n
 at Microsoft.Crm.Extensibility.ODataV4.Converters.TypeConverters.EdmEntityConversionContext.Create(String logicalName, IEdmModel edmModel, Entity entity, Boolean isDeltaEntity)\r\n 
 at Microsoft.Crm.Extensibility.OData.TypeConverters.EdmEntityCollectionTypeConverter.ConvertToEdmTypeInternal(EntityCollection xrmEntityCollection)\r\n
 at Microsoft.Crm.Extensibility.OData.TypeConverters.EdmTypeConverterBase`2.ConvertToEdmType(Object crmTypeValue)\r\n 
 at Microsoft.Crm.Extensibility.OData.EdmTypeConverter.ConvertToEdmEntityObjectCollection(EntityCollection xrmEntityCollection, String edmEntityName, IEdmModel edmModel, Boolean fillDerivedEntityProperties, Boolean fillAllProperties, Boolean noLock, List`1 navigationPropertyNames)\r\n 
 at Microsoft.Crm.Extensibility.OData.CrmODataServiceDataProvider.RetrieveEdmEntityCollection(CrmODataExecutionContext context, String entityCollectionName, String castedEntityName, ODataQueryOptions queryOptions)\r\n
 at Microsoft.Crm.Extensibility.OData.EntityController.<>c__DisplayClass35_0.<GetEntitySetInternal>b__1()\r\n 
 at Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute(ILogger logger, EventId eventId, ActivityType activityType, Action action)\r\n 
 at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute(ILogger logger, XrmTelemetryActivityType activityType, Action action)\r\n 
 at Microsoft.Crm.Extensibility.OData.EntityController.GetEntitySetInternal(String entitySetName, String castedEntityName, CrmODataExecutionContext context, CrmEdmEntityObjectCollection crmEdmEntityObjectCollection, ODataQueryOptions queryOptions)\r\n   at Microsoft.Crm.Extensibility.OData.EntityController.GetEntitySetImplementation(String entitySetName)\r\n 
 at Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger logger, EventId eventId, ActivityType activityType, Func`1 func)\r\n 
 at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult](ILogger logger, XrmTelemetryActivityType activityType, Func`1 func)\r\n  
 at lambda_method(Closure , Object , Object[] )\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)\r\n
 at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n
 -- End of stack trace from previous location where exception was thrown ---\r\n 
 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n 
 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 
 at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\r\n
 --- End of stack trace from previous location where exception was thrown ---\r\n  
 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n  
 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 
 at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n
 --- End of stack trace from previous location where exception was thrown ---\r\n  
 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n 
 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 
 at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()","internalexception":{"message":"Value cannot be null.\r\nParameter name: entityName","type":"System.ArgumentNullException","stacktrace":""}}}}