Step 1 – Renumbering | ForNAV App Building

Ok, so as I wrote earlier this week I have been asked to build an App for ForNAV to provide with a set of “superior” reports that work optimized with the designer.

To do that I first build a prototype based on an initial interview and the prototype was approved. You can find the prototype on GitHub and run the reports in a NAV2017 database using the free download on

Continue reading

Posted in Dynamics NAV, ForNAV | Tagged | Leave a comment

New Blog Series | Building the ForNAV App

There is so much to blog about when you are a Dynamics NAV developer, it’s almost unreal and I can imagine that a lot of bloggers don’t know where to start.

I am in that situation and very fortunate to have found something to hold on to.

Continue reading

Posted in Dynamics NAV | Leave a comment

Creating Advanced ForNAV Reports

Please join me in the second ForNAV webinar where I show you how to create a new Sales Invoice document report, copy it to a Sales Credit Memo and sychronize them afterwards.


Posted in Dynamics NAV | Leave a comment

How to build a ForNAV report in just a few minutes


When people think about ForNAV they think about complete report conversion in three clicks. For a good reason because it does a brilliant job in that and it was also the marketing message when the company started.


But did you know ForNAV has a designer that completely matches the NAV DNA? Simple, Intuitive and it allows you to create a report in just a few minutes. Because the ForNAV designer is built specifically for NAV it understands the NAV Design Patterns and allows you to do things you could only dream of before.

ForNAV is designer with Dynamics NAV in mind so it understands FlowFields and GroupTotals. There is no need to create complex queries in SQL. Even the Dataset in NAV does not need to have fields defined.

I hope that makes you curious. Watch this YouTube video and learn all.

Posted in Dynamics NAV | Leave a comment

Say “Hello World” in AL for Visual Studio Code

The very first piece of AL Code for Visual Studio Code has just gone VIRAL! GitHub admins see above normal forking of this great branch. Check it out and see what our language of the future looks like!

Microsoft starts teasing us while we eagerly wait for the December PREVIEW.

// ---------------------------------------------------------------

// Copyright (c) Microsoft Corporation. All rights reserved.

// Licensed under the MIT License. See License.txt in the project root for license information.

// ---------------------------------------------------------------

// Codeunit for creating random greetings

codeunit 70051100 GreetingsManagement


    // Get a translated 'Hello World' string.

    // Thanks to

    local procedure GetHelloWorldText(GreetingNo : Integer) : Text;


        case GreetingNo of

            0:  exit('Afrikaans: Hallo wêreld');

            1:  exit('Arabic: مرحبا بالعالم');

            2:  exit('Bulgarian: Здравей, свят');

            3:  exit('Cantonese: 世界你好');

            4:  exit('Greek: Γεια σου κόσμε');

            5:  exit('Korean: 전 세계 여러분 안녕하세요');

            6:  exit('Thai: หวัดดีชาวโลก');

            7:  exit('Hindi: हैलो वर्ल्ड');

            8:  exit('Japanese: ハローワールド');


            exit('Hello, World'); // Default to the good old one.



    // Gets a random greeting.

    procedure GetRandomGreeting() : Text;






If you don’t know what I’m talking about. Get out from under your rock and see some daylight. Microsoft is moving the good old C/AL programming language to “AL” programming in Visual Studio Code with a new compiler.

I already have a whole series of blog posts about this ready since the new compiler has all capabilities to make my dream come true. Design Patterns as templates to be used just like C# templates. The compiler is crazy smart and will be the vehicle to make upgrading more predictable in the future.


As part of the NAV TechDays YouTube channel you can also see the session about the designer as well as the preview in the Keynotes.


For Readers

If you like reading more than watching, then go to the blog of Arend Jan.

Posted in Dynamics NAV | Leave a comment

NAV2017 | Why is it so damn fast!

This week after NAVTechDays I started upgrading one of my more complex customers to NAV2017. We have several reasons to do this.

#1 – Outlook Add-In

Eventually we want to use the Outlook Add-In for a project next year to improve the sales data and reduce invoice errors.

#2 – Notifications

My first reason was to use Notifications. I had already built something like Notifications in the classic client which was very easy with the Wysiwyg controls and we lost this when upgrading to NAV2016.

#3 – Job Queue

Then we got another reason. Job Queues. In NAV2016 they sometimes keep hanging over maintenance jobs in the weekend or during other scheduled or unscheduled system tasks.

Job Queues got improved in NAV2017 and are now part of platform and multithreaded. They came a long way since they ran as a Form with a Timer.

Funny detail is that the system table is not called Job Scheduler just like the first one.

Platform Upgrade

Since we have a huge amount of users in multiple locations and countries and quite a large database we decided to break the upgrade down in smaller pieces and start with a platform upgrade.

This is quite easy and does not take more than a few minutes but during testing I ran into this error message:

“Call to the function ‘LOCKTABLE’ is not allowed inside the call to ‘TryPrint’ when it is used as a TryFunction.”

This made me smile since I actually managed to implement try functions during transactions. I have to fix this but I decided to move that to a later point in time when I do the Application upgrade.


NAV2017 has a new key called DisableWriteInsideTryFunctions which by default is set to TRUE. This is perfect but not when you run a platform upgrade since NAV2016 actually supported this.

Why no Full Upgrade

The reason not to go for full upgrade is end-user training. The UI of NAV2017 has changed so much and I don’t have time to train all the users in the timeframe I want the platform improvements to work.

It’s not because merging is a lot of work. In NAV2016 we have implemented a lot of events where possible and hooks where there were no events.

Isolate Job Queue

You can upgrade Job Queue to the NAV2017 objects quite easily since they are isolated. The only change is in Codeunit 41 where is calls into a Job Queue Codeunit.

If you don’t remove this reference NAV will do an App Crash with no usefull log.

So what about performance

The very first second I spun up the 2017 instance and started testing everything just felt so much more responsive. This was noticable since the database runs on a very slow file system. (To be fixed in December by adding more HP)

Building the Dynamics 365 for Financials service

The session high on my list for NAVTechDays was this one. I ended up having to miss it because I got stuck at our booth.

This was the 3rd video I watched from NAVTechDays and definately one of the the most interesting ones. I never realised Microsoft had made such big performance improvements to the core stack that on-prem customers would benefit from.

Saas = Simplicity

The reason I love NAV is because its simplicity. Something I felt was getting lost last few years by adding components like PowerShell and Azure.

Saas takes all of this away and makes NAV simple again. I will blog more about this in following blogs as I will continue to explore NAV2017, Dynamics 365 and AppSource in my new role as CTO of the Dynamics App Alliance.


Posted in Dynamics NAV | 2 Comments

NAV2017 ApplicationArea | The Mistery of Disapearing Controls

Last week, before going to NAVTechDays I was asked to teach a ForNAV class in Switzerland. NAV2017 was just released so I decided to use that for the examples.

While doing some preparation I ran a few reports and it looked fine until I realised I could not design reports from the Windows Client anymore.

This is a very popular feature of the product where you can design reports as an end user without having to go through the development environment as long as you have access to the ForNAV Designer. Continue reading

Posted in Dynamics NAV | 5 Comments

Grab Your Power License | Create Table 1

Small changes that makes a big difference seems to be the slogan for NAV2017.

One of these small changes that have been asked for a long time is to make it easier for partners to upgrade their customers by allowing us to add/remove fields and objects within the Microsoft number ranges which are 1..49999.

This has been a restriction for three decades.

Great News!!!

Continue reading

Posted in Dynamics NAV | 1 Comment

Why SQL Server 2016 Management Studio Understands Navision

I spend a lot of my time in SQL Server Management Studio. I rarely ever run tables anymore from Object Desingner and run most of my data conversions directly in T-SQL.

Why? Because it is so much faster, I can script things, save and restore scripts, share accross customers etc.

One of the pain points of working with SQL Server Queries has Always been the full companyname in front of the real table name. For this reason Intellisense was more or less useless for NAV databases.

This is fixed in SSMS 2016!

When you type

select * from Custom

SQL Server Management Studio will show this


How cool is that!

You can download SSMS 2016 for free here



Posted in Dynamics NAV, Product News, Tips and Tricks | 1 Comment

How I fell in love with ForNAV

By Mark Brummel, product specialist at ForNAV

The project situation

When one of my customers asked me to upgrade them from NAV 2009 R2 classic to NAV 2016, I was convinced that we would do all the reports with RDLC. For two reasons:

The project started mid-2015 and at that time RDLC was the only option. I had done several other upgrades from classic to role tailored using RDLC reports with the help of external resources.

Continue reading

Posted in Dynamics NAV | 7 Comments