Microsoft Dynamics NAV Events and Extensions
Being a non-technical person in a Dynamics NAV world, I have never really understood the difference between Events and Extensions that first became available in Microsoft’s version, NAV 2016. Sure, I get the implications: customizations AND easy upgrades. The beauty of Dynamics NAV (Navision) is that it IS customizable.
Businesses are unique and run their operations in very different ways. Being able to tailor NAV to run the way you run your business is what has made it such a popular ERP solution for so many years. However, as NAV’s technology platform has changed to keep up with the times, and as developers have continued coding versus using new functionality in the core application as it has become available, upgrades can be very costly for heavily modified installations. And let’s face it, eventually, you’re going to have to upgrade.
So, how do Events and Extensions fit into the Dynamics NAV puzzle? There is quite a bit of technical information available on Events and Extensions, but what do they mean to the layperson? I asked around the office and here is my understanding now.
Dynamics NAV Events
A Dynamics NAV Event is a hook into NAV. It gives developers a prebuilt way to add a customization to NAV without touching any of the base code from Microsoft. These Events are sprinkled throughout the system in the really important areas. For example, where records need to be inserted/created, where actions need to be performed such as releasing a sales order, to validate information such as checking a credit limit, or in any place where the Event (code) needs to change the value of a field.
Developers should use an Event to write their customizations without impacting NAV base objects whenever possible. The new development best practice is to use Events for modifications and modify the base code as a last resort. Events simply stated is how NAV developers link their code to base NAV.
With this new development standard, it will be much easier and less costly to keep current on the latest version of Dynamics NAV while keeping your customizations. Think about it, you upgrade base NAV (Microsoft’s code), then re-apply your existing Events. This also makes it easier to deploy NAV in the cloud using a public NAV service offering if desired.
Dynamics NAV Extensions
An Extension is code basically rolled up with a bow on it so that it is very easy to install. Extensions use Events to interface with NAV. The downside (or upside depending on your point of view) is that the use of Extensions makes it impossible for outside developers to change the code, or for anyone to see the code. Only code that has been written using one of the Events (hooks) can be rolled up as an Extension.
Why would a developer use an Extension? To make it available as an app on AppSource, to hide their code to protect it, and to make it a simple task to install it when a base NAV upgrade is done.
Tying It All Together
As an existing user of Dynamics NAV, what does all this mean to you? It means your next customization should be created using Events because this is the new development standard and gives you the option to either deploy via the traditional FOB method or as an Extension (or an app in AppSource). The key is getting away from modifying base code to ease the burden of future upgrades
If your customization will never, ever need to be modified, it means that it could be an Extension. But, do you need it to be? If you are an ISV, perhaps. As an end user, I don’t see the upside. Remember, once the Extension package is created it is set and no one can see it, including which fields the Extension is creating or affecting. Obviously, these changes to NAV will impact future development work. So, if you are only interested in created customs for your specific organization, it is probably best to stick with just the Event technology for now.
If you found this helpful, feel free to share it and check out our Dynamics NAV How-To blogs and our YouTube channel.