← Back to Blog

Upgrading Dynamics CRM

Covers high-level points on upgrading Dynamics CRM that can be used to form a project plan.

Upgrading your Dynamics CRM System

In-place upgrade notes:

  • If you’re planning an in place upgrade, then you should verify that you fit these qualifications
    • Little to no customizations or a good amount of confidence that your current customization’s code base will upgrade without any issues into the next version. Due to object model changes between versions or other Microsoft CRM Systems, customizations may stop working once Microsoft CRM System is upgraded.
      • The CRM SDK for the version you’re upgrading to should be downloaded and the section titled “What’s new for developers” should be reviewed along with “What’s changing in the next release” if that section is present.
    • Have the ability to restore all related environments if something happens, including:
      • SQL Backups of CRM SQL Organization and Config Databases
      • Windows Backups of CRM Application Server (IIS Server)

On-premise Upgrade to new environment:

  • Stand up your new environment and install the version you’re upgrading to; or the next version you’re able to upgrade to if jumping versions (ex: from 2011 you must first go to 2013 and then 2015 and then 2016)
    • If you’re upgrading from 2011 to 2016 and system downtime would be an issue, you would probably want to stand up application servers for all CRM versions in the upgrade path. This will allow you to perform dry runs during the testing period without having to perform installations each time. This will save you time and you can decommission the interim versions after the upgrade is completed.
    • Backup your production SQL and restore it to your upgrade SQL environment
    • Import the organization into the first upgrade environment
      • Make note of all upgrade errors and resolutions during your dry run upgrade so that you may resolve these quickly during your live upgrade run.
      • Repeat for each upgrade version in the chain.
    • It’s a good idea to set up SQL backups for this new environment since it will become your production environment.
    • Once you’ve reached your final target version on your first dry run, create an unmanaged solution where you will put all of your code fixes.
      • Users should be testing this version while your current version is still in production and submitting errors and bugs so they can be tracked and resolved. It is a good idea to have a person or team responsible for testing. They should be assigned a list of items to test which they can sign off on when completed.
    • It’s a good idea to perform a second dry run to test the upgrade process again and test importing your unmanaged solution to be sure it has no errors. This is a key because the second dry run is your first time to test importing your unmanaged solution of upgrade fixes.
      • Be sure to export your unmanaged solution from your upgrade environment prior to performing a second dry.
  • Customizations that generally need review:
    • Javascript and HTML Webresources
    • .NET code for plugins or workflow assemblies
    • 3rd party solutions (managed and unmanaged)
    • Custom reports
    • Integrations
    • Anything accessing the database directly should always be querying objects which begin the ‘Filter’ moniker (i.e. Filtered Views)
    • Any code or reports that use the extensionbase tables. These tables no longer exist in 2016. You should use filtered views or the base tables only.
  • Pre live run upgrade tasks against production (these should be done before you begin the LIVE upgrade…these tasks do not apply to the dry run upgrades)
    • Disable/Stop production IIS (prevents users from logging into CRM system once the upgrade begins)
    • Disable Async CRM Services (prevents active async operations when you take your final SQL backup)
    • Disable E-mail router service (should fail anyways with CRM IIS stopped but this will cover your basis)
    • Make any DNS updates if you’re keeping your production URL for the new upgraded version
    • Export your upgraded version’s unmanaged solution which contains all of the fixes to make the upgraded version work without issues.
    • Backup your production SQL database and restore to upgrade SQL instance to begin the upgrade process as you’ve done twice in previous dry runs
    • Once you reach your target upgrade version, import your unmanaged solution and publish all customizations.
      • Import any other solutions provided by 3rd parties for upgrades
    • Setup e-mail router service (generally you wouldn’t have tested the e-mail router during the dry runs since it can send out e-mail via workflow rules)
    • Enable async service and verify no errors in the event log
    • Test outlook and web client connectivity; upgrade outlook clients for end-users.