Whilst I was at work on friday 2nd and everyone else seemed to be still on Christmas holiday, I was reading Develop 1 Limited Blog by CRM MVP Scott Durow
Scott Durow has written a framework called SparkleXRM and he has updated it, which you can read about here
The interesting thing I noticed (and I am probably slow on the update here) is he had to make two versions available one for CRM 2011 and one CRM 2015.
This line stuck out
Now that CRM2015 does not support installing CRM2011 solutions I’ve had to branch and make both CRM2011 and CRM2015 versions available
Hmm I didn’t know and hadn’t thought about CRM 2011 solutions and CRM 2015. I have some study notes for solutions for CRM 2013 CRM 2013 – Understanding Solutions and how they work but what about CRM 2015.
There is an msdn article called Maintain managed solutions for CRM 2015 and the article has this about version compatability.
Any solution exported from a newer version of Microsoft Dynamics CRM cannot be imported into an older version of Microsoft Dynamics CRM. This includes major and minor versions. You can install solutions exported from Microsoft Dynamics CRM 2011 and earlier releases of Microsoft Dynamics CRM Online into Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM Online 2015 Update. Solutions exported from Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM Online 2015 Update cannot be imported into earlier versions.
Like most MSDN articles is great for cold hard facts, but it’s written to be consumed by robots and computers, which is my way of saying I sometimes find MSDN articles and CRM SDK very factual but bordering on being hard to understand to non robots. I will preface this by saying writing documentation is a very difficult job the Microsoft do a great job overall.
I read the article, found it useful/interesting/hard to understand, I reread the article and then thought that didn’t sound right because I thought you couldn’t import CRM 2011 solutions into CRM 2015.
What’s the truth about CRM 2011 solutions and CRM 2015
I dangerously decided to use the potentially unreliable world of the internet to find out the truth.
I first came to this forum post
This picture definitely seems to say suggest you cannot import CRM 2011 solutions into CRM 2015. Microsoft uses package version numbers, which is confusing because what are package version numbers
Package Version numbers
I will take a quick side track from the main topic to understand the package version numbers. There is an MSDN article called Export a solution for a specific CRM version and this talks about new functionality brought in with CRM 2013 Service Pack 1.
CRM 2013 Service Pack 1 was a major enhancement to CRM 2013 (duh that’s why it was a service pack and not a rollup Hosk) and I’m guessing it must have rejigged some fundamental functionality inside CRM 2013. So solutions created in CRM 2013 service pack 1 and higher would have dependancies on the new functionality in CRM 2013 service pack 1 which wouldn’t be available in CRM 2013 environments earlier than service pack 1 and CRM 2011 environments.
To combat this Microsoft added some functionality to allow you to export solutions which would work in older versions.
The MSDN article has this table which shows us the package version number
|IntroducedVersion Value||Solution components introduced|
|18.104.22.168||Before Microsoft Dynamics CRM 2013 and Microsoft Dynamics CRM Online Fall ‘13|
|22.214.171.124||Microsoft Dynamics CRM 2013 and Microsoft Dynamics CRM Online Fall ‘13|
|126.96.36.199||Microsoft Dynamics CRM 2013 Service Pack 1 and CRM Online Spring ‘14|
I believe CRM 2015 is version 7
Back to Solutions
CRM MVP Jason Latimmer answered the forum post
That was a mistake in the SDK – solutions exported from CRM 2011 won’t be able to be imported into CRM 2015.
CRM 2011 solutions imported into a CRM 2013 environment will function as expected (assuming they use CRM 2015 supported methods) when the organization is upgraded to CRM 2015.
So this suggests you cannot import CRM 2011 solutions in CRM 2015
Next I found this blog post
Not solutions but upgrades must be CRM 2013 Service Pack 1 or higher
Upgrades to Microsoft Dynamics CRM 2015 must start from Microsoft Dynamics CRM 2013 plus Service Pack 1 or higher.
Finally I finished with Feridun’s knowledge base
CRM 2013 managed and unmanaged solutions (6.0 and 6.1) can be imported into CRM 2015 (but not CRM 2011)
The verdict seems to be you cannot import CRM 2011 solutions in CRM 2015. This makes logical sense when you consider the changes in CRM 2013 and many of the customizations could be different.
If you had a CRM 2011 solution the best practice would be to upgrade to a CRM 2013/CRM 2015 to check it still worked as expected
So what does this mean
For most people this doesn’t mean anything but if you have a solution you have developed and you want the solution to work in CRM 2015 and earlier versions of CRM then you will need to have two versions.
This probably won’t affect many people because I can’t think of many solutions which would not have changed from CRM 2011 to CRM 2013 (let alone CRM 2015) due to the major GUI rethink in CRM 2013.
It is likely tools and code not touching the front end and using core functionality could be the same. Core plugin code hasn’t changed much in the from CRM 2011 to CRM 2015 but there is a possibility the CRM 2011 code could be using deprecated methods or the SDK code works differently in CRM 2015.
I would advise people to upgrade the solutions and test the customizations because you can’t be sure they work as expected until you try them.
It does mean if you will need to have two solutions, one CRM 2011 solution and one CRM 2015 solution, in the same way Scott Durow has created two solutions
Why did I blog about this
The likelihood is most people will never have to worry about this scenario, but this is the sort of problem that crops up when people assume they can load up their CRM 2011 solution into CRM 2015. When you try to do it, you get errors, a bit of head scratching before you need to import an unmanaged solution into CRM 2013 which you could then export to a managed solution and into CRM 2015.
This is the same version hop you run into if you want to upgrade a CRM version up more than one version e.g. CRM 2011 to CRM 2015, you first have to upgrade to CRM 2013 before you can upgrade to CRM 2015.
Whislt thinking about solutions, I was thought about upgrading to CRM 2015 and read this blog post CRM 2013 to CRM 2015 Server Upgrade
The blog mentions the upgrade path of CRM must go from CRM 2013 Service Pack 1 to CRM Server 2015.
The only supported upgrade path to Microsoft Dynamics CRM Server 2015 is from Microsoft Dynamics CRM 2013 Service Pack 1 (SP1).
The blog also mentions CRM 2013 server roles are not compatible with a CRM 2015 deployment. So if I understand the blog correctly it means when you upgrade one server to CRM 2015 the other servers (if you have multiple servers) will become disable and need upgrading too.
I’m not sure when you would have a scenario where you only upgrade some servers but the point about a CRM 2013 server must be at Service pack 1 before upgrading it’s certainly useful to know.
Why Apply rollups before upgrading
When you upgrade CRM two versions e.g. CRM 2011 to CRM 2015, the best practice is to apply the highest rollup or a particular recommended rollup to a certain level before upgrading,
The reason for this is when rollups are applied to CRM they not only include new CRM dll’s/new code and functionality but behind the scenes they can make changes to the CRM database, adding and removing fields.
Adding/removing fields is one reason why you should never create customizations directly agaisnt the CRM database because fields or tables (in reality tables rarely change, but they could!) could be changed/removed during any upgrade or patch release.
Random solution facts
whilst looking for more details on this problem I found this MSDN article, which has a couple of random size issues I wasn’t aware of
Maximum size of solution to import
For Microsoft Dynamics CRM Online the maximum size for a solution is 29.296 MB.
For on-premises organizations, the default maximum size for a solution is 6 MB, but this can be increased as needed.
Hey Ben! Additional random Solution Fact: at least in CRM 2011/13, the maximum solution import size is controlled by the e-mail attachment size limit. (of course, right? :/)
Well, actually, compatibility between 2011 and 2015 really depends on components included in the solution and API methods invoked in included plugins.
The “workflow field lookup” solution (https://workflowfieldlookup.codeplex.com/) is really handy for many workflow applications. I needed that kind of custom actions for a project I currently work on, but targeted to a CRM 2015 instance:
– Unzipped the solution
– Replaced the first XML markup line in solution.xml by a CRM 2015 “ImportExportXml” compatible attributes (i.e. )
– replaced solution.xml by the modified one in the solution zip file.
– Imported the solution… bingo (until now)! Solution correctly imported.
– Before writing this comment, I of course did a quick test and executed a simple workflow with one of the custom actions provided in the workflow field lookup solution, and it works !
I do not say that every 2011 solution could be imported in a 2015 instance this way, but one should first test this in a lab instance and see if it works or not.
In my case, I could have grabbed source code and generate a new fully 2015 compatible solution since “workflow field lookup” was taken from CodePlex, but it was actually faster doing the “tricky way” explained above, and also not everyone has access to source code so it is a good alternate way of upgrading.
When I see that a 2011 installed solution is still compatible once a server is upgraded to 2013 and then 2015, I feel that doing it the way explained above should also work every time. But do not forget to test first as I already advised.
Very interesting, I haven’t heard of anyone using this method before.
The downside is your crm instance might not be supported if Microsoft can work out you have modified the solution files
You are right. I should have mentioned this, but I do not see many differences between a 2011 and 2015 solution except the manifest header. If I encounter any problems or other concerns with this approach, I will post new comments about it during the next few months i work on this project.
Besides that, this is a typical example of compatibility (I believe) ensured since there is only a plugin involved with no other customization included. There are lots of controls enforced while importing a solution that should prevent incompatibility problems when starting an import process. For example, lets say an attribute that does not exist anymore is customized in a 2011 solution, you should have an error when the solution is checked by the import process.