Microsoft is trying to make our life easier from an upgrade perspective with merge commandlets and upgrade codeunits. This is nice but sometimes you run into situations that are not fixable with tools like these.

I am currently upgrading one of my older customers from NAV2009R2 classic to NAV2016. Some code goes back to 3.60 and reports to 2.x.

During this upgrade I run into a number of issues that are disruptive to merge commandlets, even if I were using pages, even if I were using extensions and eventing.


This has everyting to do with Microsoft refactoring. There are three major application areas they have refactored that blow up my upgrade.

  • Dimensions
  • SMTP Email
  • Excel Buffer

This post is about the last one. I’ll write another blog about the SMTP Buffer. Dimensions we all know, I don’t think I have to write more of that.

Excel Buffer

The Excel Buffer has always been one of my best friends. It allows you to very quickly create “reports” for customers without writing a report, especially if you combine it with temporary tables.

I’ve written a few times about the Excel Buffer.

Microsoft has changed the way the Excel Buffer works. This screenshot displays NAV2009R2:


It is the code that exports the Account Schedule to Excel.

This is NAV2016CU1:


You can see that CreateBook now has parameters and WriteSheet has one parameter removed.

This kind of stuff is hard to fix with the merge commandlets. You have to go through all of your code that is using this and fix it.

Clean Code

This piece of code can probably be simplified into one new function. Instead of writing the same 10 lines in each report, create a function that takes an argument table and does the magic. This will make the next upgrade easier.

Trust me, I know what I am talking about. (I have to fix this at “you don’t want to know how many places”).