The views and opinions expressed in this blog are those solely of the author(s) and do not necessarily reflect Microsoft’s current policy, position, or branding. For official announcements and guidance on Dynamics 365 apps and services, please visit the Microsoft Dynamics 365 Blog.
Choose your path Increase your proficiency with the Dynamics 365 applications that you already use and learn more about the apps that interest you. Up your game with a learning path tailored to today's Dynamics 365 masterminds and designed to prepare you for industry-recognized Microsoft certifications.
Visit Microsoft Learn
2020 release wave 1Discover the latest updates and new features to Dynamics 365 planned through September 2020
Release overview guides and videos Release Plan | Preview 2020 Release Wave 1 TimelineWatch the 2020 Release Wave 1 virtual launch event
Ace your Dynamics 365 deployment with packaged services delivered by expert consultants. | Explore service offerings
Connect with the ISV success team on the latest roadmap, developer tool for AppSource certification, and ISV community engagements | ISV self-service portal
The FastTrack program is designed to help you accelerate your Dynamics 365 deployment with confidence.
FastTrack Program | Finance TechTalks | Customer Engagement TechTalks | Upcoming TechTalks
In this article I will talk about testing patches and how .NET versions can cause odd errors.
I had a customer who was using CRM 2013 Service patch 1 and wanted to test their customizations still worked when CRM 2013 SP1 rollup 3 was applied.
Testing a new CRM service pack or rollup involves using a new server and CRM instance.
You can have many CRM organisations deployed on one CRM server but if you upgrade the CRM server it will effect all the CRM organisations and I don’t know any method to roll back rollups.
To understand the question you need to think what happens (could happen) when you apply a rollup
Microsoft might change the whole structure of the CRM database between service patches and rollups, which is one of the reasons Microsoft recommends you do not write any code/customizations/reports which run directly against the CRM database. Microsoft provide filtered views and the CRM SDK for you to integrate the CRM database.
I think during the CRM 2013 update Microsoft used to have base and extension tables for each entity. e.g.
Here is some more information on the merging of tables, which explains how you can run the table merging as a separate job but you have to do it.
Run the base and extension table merge as a separate operation
I have written before about unsupported customizations before – Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM. The primary reason you should avoid unsupported customizations is if you have to escalate an issue to Microsoft they offer limited support if you have unsupported customizations (because those customizations might be the cause of the behaviour/bug)
Usually (but not always)
New functionality doesn’t usually break anything but sometimes existing functionality might change.
The key point is the CRM SDK will have changed,
With one hand Microsoft giveth new functionality and the other hand they take functionality away (depreciate).
I applied the rollup to CRM 2013 SP 1 rollup 3 but when I tried to test CRM, I noticed I was getting unusual errors. The core functionality of CRM was working but I was getting errors when the plugins triggered calls to WCF web services. Below is the error
The Web Service plug-in failed in OrganizationId: 3666c2e6-04f4-e411-80c9-000c292122be; SdkMessageProcessingStepId: 2ccabb1b-ea3e-db11-86a7-000a3a5473e8; EntityName: incident; Stage: 30; MessageName: Create; AssemblyName:
Inner Exception: System.TypeLoadException: Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib, Version=126.96.36.199, Culture=neutral, PublicKeyToken=b77a5c561934e089′.
at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle typeInstantiationContext, RuntimeTypeHandle methodInstantiationContext)
To find this error I had to turn on tracing and look into the event logs because CRM was not giving much information.
I have highlighted the key part of the error.
This article was useful
Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib
This seemed a classic DLL type error, this usually occur when you there are differences between .NET versions or DLL’s deployed.
In this particular scenario I could compare the .NET version installed on the working CRM environment and the .NET version and other DLL’s in the new upgraded environment.
So I needed to check the .NET version, Microsoft has a great page on this
How to: Determine Which .NET Framework Versions Are Installed
Be careful because you have to read it carefully. I was checking the .NET versions in regedit (full instructions in the link above) and the folder said v4. I was expecting a 4.5 folder, so I assumed it was version 4.
Its a better to know facts rather than making assumptions particularly when trying to find a problem. In the example above I assumed the .NET versions where the same, which meant I then wasted time investigating other parts of the server and DLL’s looking for potential problems.
If I had read the article more carefully it more carefully I would have noticed this very important section
The value of the Release DWORD indicates which version of the .NET Framework is installed.
The folder will be v4 but if this has been updated it will have a new Release registry value and the number in this registry settings tells you what version of .NET is installed
I found there was a DWORD value in the working CRM Server which indicates I had 4.5.1 installed
I checked on the server I was updating CRM 2013 SP 1 to rollup 3 and it only had .NET framework 4
What was happening was the web services were compiled with .NET 4.5 but when they tried to run on the new server it couldn’t find the correct dll versions, this caused the odd errors.
Don’t make assumptions – Know don’t assume.
If web services are not working check the .NET versions and look for the secret DWORD registry setting Release.
Business Applications communities