With the new release of Microsoft Dynamics NAV 2016, there is a lot to blog about.  Let me start by trying to list down all the new features in this new release. Though, I’m actually quite sure I’m not going to be able to, because there are just that many .. and as Vjeko mentioned in his recent blog post, there are many things that were not announced explicitly, but are also in this new release. OK, here it goes …

For Consultants

There are quite some functional additions to the product. Now, I didn’t follow these sessions at Directions EMEA, and I’m not a functional consultant at all (focusing on technical parts is already hard enough ;-)), but let me try to list a few application additions to the product:

Power BI

Finally, Power BI is supporting Microsoft Dynamics NAV .. . This means that when you enter your powerbi.com, you have a new service available, which is called “Microsoft Dynamics NAV”, like you see here:

This would imply that we finally have a decent integration, including data refresh! As far as I know, this is crucial, but was not possible until now!

Download Exchange Rates

Exactly what it says – The application is now able to download the exchange rates and add it in the Exchange Rate tables. Can’t imagine this hasn’t been built by many partners – we had our own solution for this for years!

OCR Service (Lexmark)

Another service Microsoft Dynamics NAV 2016 uses, is an OCR Service from Lexmark, and is integrated in the “Incoming Documents” functionality.  As such, you’re able to send a scanned (or picture) purchase document, and the OCR will try to extract valuable data from the picture.

Integration with CRM

 You probably all have experimented with the old CRM Connector, and came to the conclusion: it sucked! No flexibility, not stable, … we tried to implement it a few times, but always had to turn to third party solutions, which is hard to sell for customers that buy 2 Dynamics products.. .

Now, with NAV2016, there is finally a decent way to connect NAV with CRM by adding a new type of table, being a CRM table. In a way, we are able to connect to a CRM Online table, which means we can code against it like it was a normal table in NAV. So the entire CRM integration is actually just coded in C/AL. Which means: readable, extendable! In 10 minutes, you can have an out-of-the-box connection with CRM Online.  And a few minutes later, you can have even a customized CRM Connector, that matches your customer’s needs.

Improved Web Client

The Web Client has been improved on more than 60 points.To only mention a few:

  • Tabs are extractable
  • You can switch companies
  • You can switch languages

Universal App

We all knew the tablet app, and loved it, right! Well, now there is a “Universal App”, which means: one app for all appliences. It serves as a tablet app (in tablet mode), on a phone it acts as a phone app .. Yes indeed! A PHONE APP! Which looks something like this:


One of the biggest new things in NAV! Based on Eventing (see later in this post), you are able to create your own workflows. Configurable as you like it. You’re able to create your own workflow-events (either in code and using the workflow framework, or using pre-configured workflows) with conditions, and responses (like mail, notification or whatever).

I have been blogging about it here, but that’s just a small post about a big feature. I strongly recommend to dive into it. It’s a great framework, and you can apply lots of things on it!

The only remark might be is that you’ll probably have to add code to make it work like you want. But that’s ok. It should be treated as a framework instead of a complete solution anyway (in my opinion)!

For Developers

There are also quite some changes and additions on platform and development level. Let’s try to go over them:

Application Test Toolset

I’m very excited about this addition. The Test Toolset has been out there for years – but now it’s supported, extended and released for all supported countries. The framework has been extended, and out-of-the-box, there are about 15000 tests available!

Ability to use Camera and GPS in C/AL

It is even possible to code against the camera and GPS in G/AL! Just look at the how-to’s in the help:

  • How to: Implement the Camera in C/AL
  • How to: Implement Location in C/AL


This is a few days of topics to explain this. Eventing is something very common in the .Net world, but now, with Eventing in NAV, we can benefit from it as well. Eventing consists of “publishers” and “subscribers”. A publisher raises an event in code when something happens, like “OnBeforePostDocument” in codeunit 80. A subscriber is a function that subscribes to an event. In a way, we can create a function, add the property “subscriber” to it, and assign it to a specific published event where we want to assign the function to. This would mean, when the published events gets executed, all the “attached” subscriber functions get executed as well.

Customization Extensions

Also something that is difficult to explain in a few words. A Customization Extension can be seen as an enhanced fob file which only contains delta’s. This is a very rudimentary description, but really .. If you hold yourself to a few limitations (which will be blogged about a lot), you are able to create a so-called “navx”-file. This navx file contains information/deltafiles/permissionset/.. , and can be published and installed to other databases.

It can even be installed on specific tenants, which makes it possible that you do specific customizations to specific tenants in a multitenant environment.

Again, this is just a short description, but actually it’s a huge thing! I have had a session on best practices about these extensions at Directions EMEA, and will be doing the same session on Directions US. A lot more to come about this topic!

The new Code Editor

Great for developers: finally we have code completion and intellisense as coding editor within C/SIDE – already in the year 2016! :-). I won’t go too deep into it. Vjeko has explained this extensively on his blog.

Now, if you would – for some weird reason – prefer the old code editor, there is still a way. Just start the finsql.exe with the option “useoldeditor:yes”, like:

And then the new shortcuts which everyone loves:

  • CTRL+G opens the “Globals” window
  • CTRL+L opens the (guess what ..) “locals” window
  • CTRL+Z is undo (and you can do multiple :-))
  • CTRL+Y is redo

A non-NAV developer is not amazed, I know, and he shouldn’t be – but we are, aren’t we :-).

Posting Preview

Another finance addition. In a way, we’re able to see what a posting we result into. The result is a kind of “navigate” window with the different entries that it results into. Like:

You can drill down to each entry.


A try-catch for NAV! Yes, really! One thing to notice, though .. When a Try-function fails, the transaction is NOT rolled back! This is something to keep in mind! This is by design. You catch the error, not the transaction!

Microsoft Dynamics NAV Managed Service for Partners

THE big secret. Microsoft is taking the infrastructure-challenge for setting up multitenant cloud services based on NAV out of our hands. This was a big hurdle, so this service is a big help for partners. I truly believe that. I haven’t got any details yet on how to start using it and such, or any screenshots, but I’ll try to figure out.
a few remarks on this one may be: it is only intended for multitenant solutions, and you HAVE to upgrade to a new Cumulative Update at least each three months!

A few small additions to NAV2016 as mentioned by my colleague on his blog (more info to find there):

Multiple Namespaces in XMLPorts

The ability to add multiple namespaces

Automatic Deployment of Add-Ins

We can now add an Add-in as a zip file to the Add-in table, and NAV will make sure they get deployed to the clients, when necessary.

64 bit client

Which will result in faster processing for memory-intensive operations, like (for example) reports.


Like an AutoIncrement, this BigInteger field with type “Timestamp=Yes” will maintain itself .. On each modify, a new timestamp value will be added to the record. This is great for interfacing, to find out which records have changed since a specific timestamp.


Only for .Net objects, but very useful! Used to loop .Net collections!


Really good addition to be able to test a certain varaible wheter it is Temorary or not.. . I think we were only able to do this on a RecRef – will, now we can do it on a Record-Variable as well! Thanks, Soren, to get this added!


Same for the “RECORDID” property – we do not have to use the RecordRef anymore to get to the RECORDID.

Some known issues

As any major release, it comes with a few pitfalls. I want to be thorough, so I don’t want to keep things from you. Here are the known issues at this moment:

  • Installing NAV2016 will overwrite the 2015 administration tool. Arend Jan blogged about that here: http://kauffmann.nl/index.php/2015/10/07/nav-2016-installation-overwrites-nav-2015-administration-tool/ . He also mentioned how to fix it!
  • Apparently, the GetDatabaseTableTriggerSetup is executed every time it enters a table, instead of only once per table. This has been mentioned on Twitter, but I have not had the time to confirm it yet, though. This might result in some performance issues!
  • In the Customization Extensions there are a few issues that will be fixed in the next CU, which are causing the data upgrade to fail:
    • Ability to work with AutoIncrement
    • Ability to work with FlowFields

As far as I know, all issues that were reported will be fixed in Cu1. But that’s not a promise ;-), that’s an assumption (which is mother of all….).

OK, guys and girls! Hope you liked it, hope it’s somewhat complete. Probably not. If not, please drop me a comment!