Upgrade ForNAV OnPrem from DLL to Universal Code

This article describes upgrading ForNAV on-premise from DLL to Universal Code. Universal code extensions are extensions that are optimized to run on cloud and don’t use DLLs, the local file system, and other features that are only accessible for on-premise extensions.


You need to upgrade ForNAV to Universal Code before upgrading to BC22. Since there is no DLL installation of ForNAV available for BC22 there is no way of installing the correct pre upgrade version of the Customizable Report Pack.


There are some technical differences between the DLL style ForNAV reports and the new universal code reports:

  • The DLL style reports reference the ForNAV DLL.
  • In the DLL version of ForNAV, the custom layouts are based on RDLC files; in the universal code version, they are based on docx reports.

These differences make for a complex upgrade path. You must take the right steps in the right order. In this article, we walk you through all these steps.

The steps to take to upgrade are:

  • Upgrade the ForNAV Designer and the DLL-based ForNAV Customizable Report Pack to the latest version.
  • Run the ForNAV Universal Code upgrade wizard.
  • Uninstall the DLL-based Customizable Report Pack.
  • Install the Universal Code apps.
  • Upgrade and install your custom report extensions.

Please note:

All ForNAV reports and custom layouts will convert and run when converted to Business Central Cloud.

However, because the ForNAV rendering engine runs as a service and not a DLL, side-effects in section triggers and CurrReport.PageNo in AL-code are not supported and will give a warning when converted. These constructs can easily be reconstructed in JavaScript, which is run in the service, and the report will work as before.

Since Universal Code does not support dotnet, AL-Code referencing subclasses, methods and properties on the ReportForNav variable (ReportForNav.PrinterSettings. , … ) need to be replaced with the equivalent calls on the CurrReport variable in JavaScript (CurrReport.PrinterSettings. , … ). If the dotnet constructs are not replaced, the AL-Code will not compile after the conversion to Universal Code

The JavaScript functions – SetRange, SetFilter, and Get – only work under some conditions for universal code. To resolve this, the best thing to do is to replace the calls with property values on the JavaScript records.

If a report is converted from Classic, we cannot guarantee that the AL-code works without changes. If the report has AL-section triggers with logic having side-effects where the code sets values on global variables, which are used directly or indirectly in the dataset, these values might not be reflected in the dataset.

If a report is converted from Classic or a DLL based ForNAV report the matching xlf files most likely needs to be updated, since the hash-values (keys) in the xlf files depends on the structure of the AL-code. To get a working set of xlf files you can use the ForNAV Translation tool

Step 1

Upgrade the ForNAV Designer and the DLL-based ForNAV Customizable Report Pack to the latest version

Before upgrading the Customizable Report Pack, you must make sure you have the latest version of the ForNAV Designer installed.

You must also make sure you have the latest version of the DLL-based Customizable Report Pack installed. This ensures that all your layouts and settings are compatible with the Universal Code Customizable Report Pack.

You can find a step-by-step explanation of how to do this here: https://www.fornav.com/knowledge-base/update-fornav-on-premise-bc14-and-later/. You can skip step 5. We address upgrading your custom report extensions later in this article.

Step 2

Run the ForNAV Universal Code upgrade wizard

In the ForNAV Setup page, click Actions, ForNAV, Upgrade to Universal Code.

To start the upgrade wizard, you must accept that this upgrade is non-reversible and might cause data loss if the upgrade is not done correctly.


If you have custom report layouts that are not up-to-date, you cannot convert them to the universal code format. To upgrade the custom layouts, open the Reports ForNAV Designer, connect to the correct Business Central server, and click Extensions, Test RDLC layouts for cloud compatibility.


Some of your data, like ForNAV language settings and custom report layouts, will be deleted during the upgrade process. You must store these settings in a backup. The backup will be stored in the Business Central database. However, in case of any issues you must store a downloaded copy of the backup locally as well. To download a backup, in the wizard, click the Backup filename.



You must delete all RDLC custom report layouts. The installation of the universal code Report Pack will automatically convert and install them from the backup.


All your custom ForNAV reports still use the DLL. These extensions must be uninstalled and converted manually.

The upgrade wizard does not force you to back up your extensions. However, in a later step you need the extension app files or the Visual Studio Code source code for your extensions. To back up the app file of your extension, open the ForNAV Designer and download the extension files before uninstalling them.



Step 3

Uninstall the DLL-based Customizable Report Pack

After you have run the upgrade wizard, you can uninstall and unpublish the DLL version of the Customizable Report Pack. When you uninstall the report pack, you must NOT select the Delete Extension Data option. The extension contains the backed up data that will be converted and restored on installation.


Step 4

Install the Universal Code apps

You can now download and install the ForNAV Universal Code extensions.



Step 5

Upgrade and install your custom report extensions

Finally, you must upgrade your custom report extensions to the universal code version of ForNAV.

There are two ways of upgrading your extensions:

  • If you have an extension built in Visual Studio Code, you can use the ForNAV Converter to convert your reports. You can read more about the process in step 3 of this article: https://www.fornav.com/knowledge-base/update-fornav-from-on-premise-to-cloud/
  • If you created your extensions from the ForNAV Designer, you can automatically upgrade them by simply uploading the extensions that you downloaded earlier, using the ForNAV Designer. Occasionally, the automatic upgrade will fail. If this happens, ForNAV creates a Visual Studio Code project that you can convert manually.