When Microsoft introduced Dynamics 365 last year, customers were immediately able to benefit from the next generation of intelligent business applications that it brought with it. They could leverage the software to empower your employees, engage customers, and optimize operations.
Dynamics 365 also brought in some new concepts as compared to previous versions of Dynamics. For example, it introduced the concepts of projects and packages. Developers who have worked on .net in the past will likely be familiar with the concept of a package, which is essentially a deployment unit.
One important idea that has been introduced with Dynamics 365 is ‘Extensibility’ as a way of carrying out Dynamics updates.
How Extensibility Works
In earlier versions of Dynamics, upgrades were generally done through a process called overlayering. Overlayering is a process where the developer needed to create a new model overlaying the existing model, and any customizations were done on the upper layer.
This method brought about certain challenges. For example, upgrades took quite a lot of time thereby adding to the TCO and hampering the quality of interactions.
Also, while the cadence of the release of updates used to be 3-6 months earlier, the frequency today is much more in the cloud era. In such situations, overlayering can cause issues because compiling the entire software each time can cause considerable delays.
Extensibility helps address a number of these issues.
Advantages of Extensibility
There are several advantages that an extension model brings:
Application Lifecycle management: Extension models simplify and improve the performance of deployments, builds, test automation and delivery to customers. Even with frequent upgrades, the experience remains smooth.
Design time performance: Building your model or project doesn’t require you to recompile the entire application, unlike what is required in the overlayering method.
Servicing: In a cloud-based software, Microsoft is able to install, patch upgrade, and change internal APIs without affecting the customizations. Therefore, there is a considerable improvement in the quality of service.
Upgrades: Unlike overlayering, extensions reduce the cost of upgrading to a new version, as this approach eliminates costly code and metadata conflicts.
Click here to watch a detailed Webinar on Extensibility for Dynamics 365.
Microsoft has undertaken certain measures to bring the concept of extensibility to all users of Dynamics. For example, Microsoft has begun the process of sealing certain layers so that overlayering is no longer possible. It is being done in two ways. The soft seal – which means that overlayering will still be allowed, but the software will throw a compiler warning. The other is the hard seal. Once the hard seal is done, overlayering will not be allowed. This is currently in various stages of progress.
When it comes to Extensibility, there are three major options to extend Dynamics 365. The first is through Extensions, where we add new capabilities to existing objects. The second is Plugins, which enable replacement of a business logic. There could be extensions or implementations of abstract classes or interfaces. The third is Events. In this method, business logic gets executed by the event handler. Events are implemented as multicast delegates, event handlers execute within the TTS scope of the base method.
Of course, extensibility does come with its own set of challenges. For example, Enums are not extensible and require engineering work to enable extensibility. Also, Methods still are overlayered. While there is the option of Class augmentation, there are challenges there too. Microsoft has been working to address several of these challenges.
Overall, extensibility is a great way for hassle-free upgrades for Dynamics 365 in the cloud era. Click here to watch a detailed webinar to understand in-depth the process, advantages, and challenges of extensibility.