Dynamics NAV has an important benefit which it is customizable by partners, value-added resellers (VARs) and even customers. The customization is traditionally been carried out by over-layering NAV application code. As Dynamics NAV (Dynamics 365 Business Central) is moving to the cloud with more agile servicing and frequent updates, less intrusive customization model is a must to make Dynamics NAV updates less likely to impact customized solutions. Hence, a new model called Dynamics NAV Extensions has introduced and it’s going to replace customization method.
Dynamics NAV Extensions tend to help developers or ISVs to extend their functionality of NAV without touching Microsoft’s original source code. The greatest advantage is no longer to merge all the customized object when it comes to a cumulative update on Dynamics NAV. Eventually easier while facing issues in upgrading Dynamics NAV.
Dynamics NAV Extension is the future and it had arrived.
Barriers to editing Dynamics NAV extensions
Dynamics NAV Extensions are application files that contain additional table, functionality, report layouts, permissions, and more. The application can be easily installed, uninstalled and upgraded without affecting the Dynamics NAV source code.
Dynamics NAV Extension can protect your code as once the Application is created it’s not easy for others to view the code of the extension. Viewing the source code of an extension through the debugger is possible, but not through the development environment. It’s not possible to modify an extension unless you have the source code.
Dynamics NAV Extensions use Microsoft Visual Studio Code which helps to create a modern development environment that supports better functionality. We’re able to add our own events, raise them and then subscribe them in another extension.
How Dynamics NAV Extensions can make Dynamics NAV upgrades easier
In most cases, NAV Extensions should help developers to upgrade without any problem. Why this happen in most cases? Because during any Dynamics NAV upgrade we used to have in CAL environment, we’re able to upgrade most of the codes without conflicts.
However, there are few scenarios where we need to rethink our solution. Examples:
- New functionality in an upgraded version of NAV can replace your extension. However, they probably can co-exist.
- Microsoft redesigns part of a solution for example, we are upgrading to NAV 2018, a major redesign of NAV 2018 isn’t that much of a problem, credits to the event subscriber. Decent code design always helps. If we have been using extensions, we would have been using events anyway, so this wouldn’t cause any major issue.
NAV Extensions after the release of Dynamics NAV 2018
The built-in Visual Designer in Dynamics NAV 2018 and Visual Studio Code are expected to replace the familiar C/SIDE environment as the main development tool. It means we need to learn a new way of development, a new language (with old components, though) and a new way of deploying customizations.
An era of “copy-paste-modify” has come to an end, the “reference-and-extend” had arrived.
The CAL customizations often introduce challenges when upgrading Dynamics NAV. It’s exponentially harder to upgrade a solution from one version to the next when changes have been made to the underlying solution. Dynamics NAV Extensions, particularly the latest version – Extensions 2.0 – solves this problem.
Instead of modifying the original source code, Dynamics NAV Extensions are written in parallel with the solution source. The integration with the source code is handled with events subscriber.
An extension can add new objects and extend existing objects that are present in the original solution. The extension code is then packaged into an app file, which we can easily deploy to our solution. This allows us to upgrade the underlying solution and, as long the events remain, the extension will behave in the same way from version to version.
We can have multiple extensions installed. It’s also possible to make a dependency reference from one extension to another. That means we’re allow to make customization on top of another extension.
Microsoft In-App Designer
In the web-client, we can switch to In-App Designer mode. This enables us to change the look and feel of the client quickly and easily.
Microsoft In-App Designer includes a wide range of important features, such as:
- Adding a field from the source table to a page
- Moving a field to another position on a page
- Removing a field from a page
- Previewing your design in desktop, tablet, and phone clients
- Saving the changes for the tenant or saving as an extension package file in Visual Studio Code.
Erik Ernst, a Microsoft Dynamics NAV MVP, commented, “Personally, I’m thrilled about these new extensions. Not so much because they are special or fantastic. But because they allow me easily to remove them again, or simply not install them. The future direction is clear. Some years down the road, then we will only have the World-Wide version. Localizations are just Extensions, either coming from Microsoft or ISVs.”
A statement from Microsoft added, “There are no plans to stop partners from modifying NAV. But you can see it as an option to transform gradually and get your developers used to using Dynamics NAV Extensions when possible, which will also have a side effect of making upgrades easier. So, it should be more of a journey than a hard point in time when you must move from one way of doing things to another.”
We believe that Dynamics NAV Extensions is the solution for many of the pain points that most of the NAV developers have today. Indeed, they are not completely fixed yet, but in the near future they will be! That applies to on-premise, for customizations, and for your private and public cloud.