Category Archives: General

Everything that does not fit in one of the categories

ANNOUNCING: New Book | Learning Dynamics NAV Patterns

Since Packt Publishing put it on their website, I might as well reveal a secret project I’ve been working on for the last couple of months, almost a year.

My new book Learning Dynamics NAV Patterns is about to be released. I am in the final stages of processing reviews.

Learning Dynamics NAV Patterns

You can order the book here.

The book is a written version of the Master Class for Application Architecture and Patterns I am currently teaching accross the globe and contains a lot of information about the Dynamics NAV DNA in a structured, easy to follow way. Things that have been in the product, some 30 years, some only one or two releases.

It also contains coding best practices, anti-patterns and refactoring methodologies and finaly a real world example of how to apply patterns while architecting a solution, working with Delta files and using Visual Studio Online to host your IP in the cloud.

The book is a more abstract and technical version of my first book Microsoft Dynamics NAV 2013 Application Design. All the things I learned from being part of the Design Patterns project and Partner Ready Software have been applied to this hands on bundled work. I would like to thank all other members from the teams for their inspiration during the meetings and brainstorm sessions and I hope they enjoy the way the efforts are combined and for everyone to grab although the book is my view and solely my opinion on the matter. The book would have also been worse without the reviewers. One in particular who shall remain anonimous had a big impact on the final version.

I’ve also read countless articles about clean code, object orriented programming and design patterns. I can’t mention them all but I would like to thank everyone for sharing their views and vision with the world.

Please (pre) order the book and enjoy.

Mark Brummel


NAV 2015 | Import FOB, back to MS-DOS?

Although I understand the investments in Multi-Tenancy from a Microsoft perspective it does not always make our live easier.

Today during the import of a Fob at a customer I am upgrading to NAV2015 I got this message.


I don’t even run a Multi-Tenant system. This means I have to start PowerShell and run this command.

Although I love the power of PowerShell, I hate using it. Why isn’t this available from the development environment?

This case was getting even more strange since the error PowerShell gave was on a table that was not affected by the fob. The Object name already exists. I could only solve the issue with changing the tablename.

Where is the simplicity in that.

Sorry for my rant, but maybe this post helps someone having the same issue.

NAV2015 | Performance Tuning

This post also applies to NAV2013, any version since we moved to the new SQL client and dropped classic client.

I am currently in progress of upgrading two of my oldest customers. One with 10 and one with 15 years of data. Large databases, highly customised and tuned for performance to perfection what can be done in those versions.

One of the things you promise these customers is better performance, since NAV2013 and beyond are the fastest versions of Navision ever.

However, after the initial data upgrade and making all the pages more or less usable this is not just the case. Actually the performance is completely terrible. Rubbish.

Ai ai.

The reasoning behind this is relatively simple. Microsoft has made a couple of changes to the way it talks and works with SQL Server that make old performance tuning tips work less and new tips to be required.


First of all we have the “OUTER APPLY”. This is an actual JOIN between flowfields and tables that happens when running pages. Instead of fetching flowfields row by row Navision now creates one query that joins all the flowfields. This can cause the system to slow down if SQL is not optimised for joins.

Learning to optmise SQL for joins is basic knowlegde for DBA’s. Something I learned from sessions organised by SQL Skills. Its all about creating indexes that have the fields from the where clause. Covering indexes also make huge differences.

Second we have the statistics. It used to be best practice to turn off auto create statistics beacuse Navision used cursors. Well, it does no longer do that. We can now safely turn on the default values and not worry about updating them asynchronously.

Lastly there is paralelism on the SQL Box. This used to be set to 1 for NAV databases. Don’t do that anymore. Because of the “OUTER APPLY” we actually bennefit from multiple CPU treads.


Lessons learned? Well this is not my first NAV2013 implementation/upgrade. I learned all this the hard way while emailing back and forth with my former SQL Perform friends. I actually think I had one of the first 100GB+ NAV2013 databases after an early upgrade.

NAV2013 and newer are the fastest versions ever, but performance tuning is an art. It always was and always will be.


Can you screw it up? Yes off course. As a user could Navigate to an Item Ledger Entry in classic client, remove the filter and place a new one and blow up the system, in NAV2013 they can accidentaly sort on an unindexed column. In the last scenario SQL Server will generate and use statistics, but statistics cannot replace indexes.

Enjoy this summer read.

My 10th MVP Award, a decade with the Dynamics NAV Community

Last wednesday I was a happy man. Around 4:30 CET I got an email from Microsoft saying that I got awarded as MVP. And this was the 10th time I got that email.

In those 10 years I had periods where I did not even notice that email because it went to spam until a few days later, or until my MSDN subscription (one of the cool benefits of the award) was discontinued because I did not renew it.

But this one is special. Being part of this journey for a decade now. A lot has happened in those 10 years that are a direct result of the award. Traveling to cool places, meeting interesting people, making friends and last but not least, learning how Microsoft works.

I am not easy to work with. After I finished my last book I apologised for being me to the project manager since I gave her a hard time, and I know I did. I am very strong in my opinions and it takes some serious effort to change those opinions.

The community has evolved tremendously in the last 10 years as has Microsoft in dealing with it. Most changes are great changes. Some are not.

Please keep a close eye on my blog or MSDynamicsWord. I am working on an article of how the community around Dynamics NAV evolved in the last 10 years and hopefully giving people a few tips and tricks in how to keep standing in the ecosystem that we know today.

Thank you for everyone that reads my blog, asks questions on the forums and visits my presentations at events all accross the globe.

Vintage Dynamics NAV #1 | Functions

One of my key values is loyalty. I am very loyal to my customers and my customers are loyal to me.

This means with a history of two decades in the product you run into your own old code every now and then. This happened today as you can see in this screenshot:


Some objects have not changed since 2003 and when I opened I noticed this:


Now to all of you who are relatively new to the product, you might think that the C/AL editor can be improved by implementing Notepad instead.

However, there used to be a time not so long ago that NAV did not have GoToDefinition. One of these treats you get used to very quickly.

Even longer ago it was not even possible to use Search on Function names in objects.

To work around this issue I always put the function name as a comment in the function first.

This looks very awkward now, but it was very useful back in those days.

Compared to that, Notepad would have been an improvement to the C/AL Editor.

To Navigate or Not To Navigate

Seriously, I love the people at Microsoft working on our product, well, most of them.

But, every now and then you can really see that the company is like a country and not everything works like it should.

I am currently doing a project in NAV2015 where we changed the posting routines and added journals and entries. Thus we needed to change Navigate and test. I did that without thinking.

However when I started to train end users I noticed something funny.


Navigate has always been in the product, at least as long as I can remember.

Back in the 1990’s it was a unique selling point of the product. It looked like this:


This screencapture is Navision 2.0 (On a windows 8.1 machine, yes it works like a charm).

NAV 2015

On NAV 2015 looking for Navigate, an end user finds this:


Seriously. What do you want an honest blogger to say without hurting the feelings of my friends in Vedbaek?

It looks like it is introduced in NAV2013


In 2009 the option was called “Related Information” which makes more sense and is more intuitive.


Microsoft can you please fix this?

We’re back to be found | Dynamics NAV Community

Oh my, I was almost ready to blog about it. We were completely lost!

“What do you mean?”, I hear you say.

Dynamics NAV is, as far as I know, the only product on the community website with a Wiki and with one of the last updates, we were gone missing.

Fortunately we are back and on a really nice place.


Thanks Bogdana and Dustin for this nice spot.

Remember, the wiki is a community project. If you want to contribute, don’t hesitate to sign up!