New variable types in NAV2016

Even though we are getting used to the DotNet variable type, Microsoft Dynamics NAV 2016 has several new types available.

This is what NAV2015 supported:

And now, in Microsoft Dynamics NAV 2016:

DefaultLayout – That goes together with the REPORT.DEFAULTLAYOUT function. A variable of type “DefaultLayout” can hold the different types of reports (Word, RDLC etc.)

FilterPageBuilder – Used by the new dynamics request pages. This rabbit hole looks quite interesting.

ObjectType – Being used as a parameter to the GETURL function.

ReportFormat – Being used as a parameter to the REPORT.SAVEAS function.

TableConnectionType – Being used with the REGISTERTABLECONNECTION and UNREGISTERTABLECONNECTION methods. Options can be CRM or ExternalSQL

TextEncoding – This one is really nice. CREATEINSTREAM and CREATEOUTSTREAM can now take an extra parameter for encoding. So now there is no more need for StreamReader and StreamWriter constructs with System.Text.Encoding help. Now this is done by NAV.

All of these are just Option fields (not the FilerPageBuilder) with a fixed OptionString – Not really necessary and does not, standalone, bring any new functionality to NAV. But each of them are related to new features or functionality and that is always interesting. I’m getting back to the FilterPageBuilder later.

I’m still missing “BlobRef” as a variable type, or if I cannot get that – just give me CREATEINSTREAM and CREATEOUTSTREAM on FieldRef, please Microsoft, that would even clean up a lot of your code with all the TempBlob you got going.

FOREACH Statement available in NAV2016

A very used statement in C# is the foreach statement. A loop that traverse any structure with a enumerator. This is now present in NAV2016, only on dotnet variables so far.

Here is an example from the OCR/Document module of NAV0216.

An outer loop of all the child nodes in a xml node, and the an inner loop of all the “DocumentId” childs of the first node.

        ChildNode := XMLNode.SelectSingleNode('BatchExternalId');
        ExternalBatchId := ChildNode.InnerText;
        IF (ExternalBatchFilter = '') OR (ExternalBatchFilter = ExternalBatchId) THEN
          FOREACH ChildNode IN XMLNode.SelectNodes('DocumentId') DO BEGIN
            DocId := ChildNode.InnerText;


Another example, goes through all the elements of an dotnet Array:

        Name := FilterPageBuilder.ADDTABLE(GetTableCaption(Table),Table);

So far, it looks like FOREACH is only present in “new” objects in NAV2016.

NAV 2016 is released :)

Today Microsoft announced the general availability of Microsoft Dynamics NAV 2016, a milestone release of Microsoft’s business management solution for small and midsized organizations. Microsoft Dynamics NAV 2016 offers significant new capabilities in mobility, business insight, and cloud services, as well as deeper interoperability with Microsoft Azure, Microsoft Dynamics CRM and Office 365.

New capabilities in Microsoft Dynamics NAV 2016 will help SMBs:

  • Enable mobile workers on any device with new streamlined, easy-to-use native apps for all form factors of devices – phones, tablets, and mouse and keyboard – running Android, iOS, or Windows.
  • Increase business insight with pre-built Microsoft Power BI dashboards and data connections that give teams instant access to key performance indicators in an intuitive, easy to use environment designed for secure collaboration.
  • Grow sales, improve customer service, and streamline order-to cash-processes through native integration with Microsoft Dynamics CRM Online.
  • Take advantage of enterprise class scalability, security, and availability in the cloud with the new option to deploy Microsoft Dynamics NAV on Microsoft Azure SQL Database, Microsoft’s industry-leading database-as-a-service in the cloud offering.
  • Digitize their businesses with expanded document management, workflow, and Optical Character Recognition (OCR) capabilities designed to help SMBs automate processes and eliminate paper-based transactions.
  • Tap into the power of the cloud more easily with expanded extensibility and connectivity capabilities to help customers and partners more easily integrate Microsoft Dynamics NAV with other cloud-based services.

I’ve start blogging about the many new features very soon :)


Mouse over in debugger …


If you get multiple entries when hovering the mouse over a variable name in the Microsoft Dynamics NAV  2015 debugger  – you are out of luck.

The debugger does not perform a lexical parsing of the source, so it will just search the variable space, and in cause of multiple hits, it will show them all.

So when you hit something like this, you got to perform your own parsing – In my case, this came from a piece of code that used the WITH <?> DO statement.

New logo circulating, what is Dynamics CS?


So this picture is circulating on Twitter – a simplification of the Dynamics logos, nice -But I do have one question? What is “Microsoft Dynamics CS” ?

A new product in the family ?

Just a logo for CustomerSource ?

A typo, should have been Dynamics C5 ? (Correct answer, thanks you internet)

Just a mock up added to make it a even 6 and a nicer layout ?

Tweet me @eHougaard if you got a suggestion ?

Good books on NAV Development

Now that the summer is over, it’s time to read a good book. Here are a couple of recommendations on the subject of NAV development.


This is one of the best no-nonsense books on NAV development you can get. Read it, understand it, and you’re ready to development with Dynamics NAV 2015. Dave has been using NAV since it was called Navision and Navigator – he knows the pedigree of the system and its history.

The book takes you through all the normal aspects of developing a customer solution with NAV – and uses best practice and sound patterns in all the solutions suggested.

Each chapter concludes with a small questionnaire that covers the content of chapter.

This book is one of the essentials for every NAV developer – I recommend it highly !

Get it here

So now you can develop in NAV, then it becomes important to do it correctly.  And one way is to use design patterns. My good friend Mark Brummel is preaching about them every chance he gets, and with good reason, reusing the way NAV is already working is one of the most important paths to a successful project.

Pick up his new book in October on Design Patterns – I know I will.


And Marks old book on NAV application design is still a good source of knowledge, don’t let the “2013” title fool you, its still very relevant for 2015 (and 2016).


Introducing Erik’s ClientUserSettings.config Editor

One of the things that Microsoft has chosen to hide well is the configuration of the role tailored client. There is a file called ClientUserSettings.config that is hidden away on your PC. This file controls how the client connects to the service tier. Most of the times you don’t need to change anything in the file, but sometimes it is needed.

If you are a NAV developer it can happen quite often of you got installations with different authentication styles or other settings.

The file is located under AppData, a hidden folder, under your user account.

I got tired of searching and editing this file, so I created a small utility that would help me, introducing Erik’s ClientUserSettings Editor.

Simply run this program, it will search your PC for all .config files (in case your got more than one version of NAV installed)


It will show all parameters in the file with values in the right column.


If you got more than one config file on your PC, select the correct on from the combo box in the top.


And as an extra little bonus, I’ve added the help text from Microsoft’s website to each field, so when editing, you’ll get a helping tooltip presented.

As soon as you have enter a value in a field the file is saved and ready to use.

Download from here: EriksNAVClientConfigEditor

Windows 10 on Lenovo X1 Carbon Touch (2014)

I just spend 3 hours trying to upgrade to Windows 10 on my lenovo X1 Carbon touch (2014 model).

The upgrade failed with error code 80240020 – Lots of suggestion on the net about deleting all content from the download folder in c:\windows\softwaredistribution. That didn’t work :(

The culprit turned out to be the driver for the builtin 4G LTE modem. From Sierra Wireless, the EM7345. This software have not been update by Lenovo System Update.

Download from:

Microsoft Dynamics NAV and Windows 10

So July 29 2015 is the big day for Windows 10.  I have tested all the versions of NAV I have available on Windows 10 and the list is basically the same as with Windows 8.

The first version I tried was “Navision 3.56a” – The character based predecessor to Microsoft Dynamics NAV.


That worked fine (With the NAVIN.EXE executable).

After this, Financials 1.30 was up, but a rather disappointing result. FIN.EXE does not start, it ask for elevated permissions, and the bombs out.


The same things happens for:

Financials 2.00
Financials 2.60
Attain 3.01
Microsoft MBS Navision 4.00sp3

The oldest version that works with Windows 10 is:

Microsoft Dynamics NAV 5.0


This is not really a surprise, since Windows Vista, Windows 7 and Windows 8 had the same problem. But after the Windows 10 team showed that even Microsoft Office 95 worked on Windows 10, I had my hope up for the select few that still runs Financials 2.60 and therefor have to stay on XP for now.

Anyway, the rest just works, 2009, 2009SP1, 2009R2, 2013, 2013R2, 2015 and the beta of NAV2016 also works fine on Windows 10.