Get (Online) Ready

If your Microsoft Dynamics CRM organization is deployed on-premise and Online is not even a remote option, stop reading now, this post not for you. Or is it?

Most of my clients are enterprise level organizations with Microsoft Dynamics CRM deployed on-premise. But even in these organizations, Online is no longer a theoretic concept. Sooner or later, Online is coming…oh wait. it’s here.

Following are some tips which implemented today may render your migration to Online a bit easier in the future, but will probably make your life easier even while on-premise.

1. Keep it supported
There is an infinite number of unsupported customization methods and even more available for an on-premise deployment: direct database access, using database triggers, editing ASPX and CSS files, adding HTTP modules…the list goes on.
If you currently implement any of the methods mentioned above, start planning to replace it with a supported customization method, since these are not viable in Online deployment.

2. Get Sandboxed
Although on-premise you can register Plug-in and Custom Workflow Activities DLLs in full trust, I suggest registering these components to Sandbox mode.
In Online deployment, Plug-in and Custom Workflow Activities DLLs can only execute in sandbox, but even on-premise you can benefit from the sandbox isolation in security and performance aspects.
If you have code that exceeds sandbox limitations (file system/database access etc.), consider moving it to a different component such as an external Web Service.

3. Solution contained
Whenever possible, prefer a solution aware component rather than an external component. HTML (JavaScript, Images etc.) Web Resource over an external ASPX page, Action over a WCF/ASMX service. This will simplify your deployment process considerably even when moving a version between your on-premise test and production environments

4. Go Client
Whenever possible, prefer client side business logic over server side. Implementing business logic using JavaScript rather than Plug-in/Synchronous Workflow will yield better UX and reduce maintenance efforts in any deployment type:

  • There is a plethora of free utility JS libraries that can simplify and expedite your business logic implementation
  • JavaScript code does not require re-compilation
  • Debugging JavaScript code does not require in external tool (the browser developer tools will suffice)

Note that in Online deployment you can’t debug Plug-in/CWA components with the Attach To Process technique as server processes are not exposed.

5. Use modern APIs
Upgrade existing code to use the latest Microsoft Dynamics CRM APIs and end points. These APIs will last longer along with your business logic code and probably have performance and maintenance benefits.
When Online, old APIs and end points have higher probability to be decommissioned whether you like it or not.

6. Exposable Integration points
Integrating Microsoft Dynamics CRM with external on-premise applications is common in enterprise level applications.
Assuming some of these external applications will remain on-premise, make sure the integration points can be exposed directly or indirectly to Microsoft Dynamics CRM Online and vice versa in a secured and simple manner. Integrating an external application via a Web Service is preferred over consuming database stored procedures.

MSCRM On-Premises – the Rise and Fall of Rollups

MSCRM Rollups per Version

I recently made this diagram for a presentation regarding Microsoft Dynamics CRM 2016. Looking at it, I can’t help wondering about the future of Rollups as a package containing bug fixes and new features for On-premises deployments.

Microsoft wants you to migrate to the cloud. Microsoft Dynamics CRM Online offers many features which are not available for On-premises deployments. As with version 2015, some new features were deployed Online and were never made available for On-premises deployments.  If you wanted these features, you had to migrate Online or upgrade to version 2016.
In the last few years, Microsoft released a major version almost every year while the number of Rollups per version dropped from 18 (version 2011) to 1 (version 2015).

What does this mean for On-premise deployments? Are enterprise organizations expected to upgrade their Microsoft Dynamics CRM applications each year to get new and important features?

I think not. I’m guessing Microsoft will change its method for deploying new features for Microsoft Dynamics CRM.
Assuming Microsoft will keep offering the On-premises deployment type for a few more years, new features will not be packaged in Rollups anymore, but rather as smaller Solutions with longer backward compatibility span. I also expect major versions will become almost transparent for both Online and On-premises deployments. While Online Organization admins will have an option to activate these solutions, On-premises admins will be able to download and install when required.

Anyway, until we are all in cloud, Online deployment will always have a unique set of features.