Upgrading the Data to Microsoft Dynamics NAV 2018

Applies to: Microsoft Dynamics NAV 2018. See Microsoft Dynamics NAV 2017 version.

This topic describes the tasks required for upgrading the following database versions to Microsoft Dynamics NAV 2018:

  • Microsoft Dynamics NAV 2013
  • Microsoft Dynamics NAV 2013 R2
  • Microsoft Dynamics NAV 2015
  • Microsoft Dynamics NAV 2016
  • Microsoft Dynamics NAV 2017

You use data conversion tools provided with Microsoft Dynamics NAV 2018 to convert the old data with the old version’s table and field structure, so that it functions together with the new version’s table and field structure. Mainly, only table objects and table data are modified during the data upgrade process. Other objects, such as pages, reports, codeunits, and XMLports are upgraded as part of the application code upgrade process.

The data upgrade process described in this article leads you through the database conversion (technical upgrade) and then the upgrade of the actual data, which is achieved by using the upgrade toolkit/upgrade codeunits.

Prerequisites

Before you start the upgrade tasks, make sure you meet the following prerequisites:

  1. Your computer uses the same codepage as the data that will be upgraded.

    If you use conflicting codepages, some characters will not display in captions, and you might not be able to access the upgraded database. This is because Dynamics NAV must remove incorrect metadata characters to complete the data upgrade. In this case, after upgrade, you must open the database in the development environment on a computer with the relevant codepage and compile all objects. This adds the missing characters again.

    Optionally, you can export the captions before the upgrade. For more information, see How to: Add Translated Strings for Conflicting Text Encoding Formats.

  2. You have a FOB file(s) that contains the upgraded application code and upgrade toolkit. The upgrade toolkit includes upgrade codeunits for handling the data upgrade. The upgrade toolkit can be in the same FOB file as the application code or in a separate FOB file.

    For more information about upgrading the application code, see Upgrading the Application Code.

    For W1 versions, you can find the default upgrade toolkit objects in the UpgradeToolKit\Data Conversion Tools folder on the Microsoft Dynamics NAV 2018 installation media (DVD). Choose the FOB that matches the Dynamics NAV version from which you are upgrading:

    Version FOB Remarks
    Microsoft Dynamics NAV 2013 Upgrade7001100.FOB This file can be found on the Microsoft Dynamics NAV 2018 Cumulative Update 2 installation media (DVD). It is not available with later cumulative updates.
    Microsoft Dynamics NAV 2013 R2 Upgrade7101100.FOB and Upgrade710HF1100.FOB This file can be found on the Microsoft Dynamics NAV 2018 Cumulative Update 2 installation media (DVD). It is not available with later cumulative updates.
    Microsoft Dynamics NAV 2015 Upgrade8001100.FOB
    Microsoft Dynamics NAV 2016 Upgrade9001100.FOB
    Microsoft Dynamics NAV 2017 Upgrade10001100.FOB

    For local versions, you will find the upgrade toolkit objects in the UpgradeToolKit\Local Objects folder. The files follow the same naming convention except they include the 2-letter local version, such as Upgrade10001100.DK.fob for Denmark or Upgrade10001100.DE.fob for Germany.

  3. You have exported the permission sets (except SUPER) and permissions as XML files.

    To exclude the SUPER permission set when running XMLPort 9171, add the filter Role ID is <>SUPER.

    For more information, see How to: Export and Import Permission Sets and Permissions.

  4. (Optional) Make a copy of the web.config file for all Dynamics NAV Web Server instances for the Microsoft Dynamics NAV Web client. With Microsoft Dynamics NAV 2018, Dynamics NAV Web Server instances run on Microsoft .NET Core. With this change, the instances now use a .json type file (called navsettings.json) instead of the web.config file.

  5. (Optional) If the old Dynamics NAV application uses data encryption, you exported the encryption key file that it used for the data encryption.

    For more information, see How to: Export and Import Encryption Keys.

Note

If the old Dynamics NAV application uses Payment Services for Microsoft Dynamics ERP, be aware that this was discontinued in Microsoft Dynamics NAV 2017. This means that most of the objects that are associated with this feature will be deleted during the upgrade. Some objects you will have to manually delete.

Task 1: Prepare the old database

  1. Use the Microsoft Dynamics NAV Development Environment that matches the old database to build all application objects.

    For more information, see How to: Build Server Application Objects.

  2. Unlock all application objects.

    For more information, see How to: Unlock an Object.

  3. Synchronize the database schema by using the development environment or Dynamics NAV Administration Shell that matches the old database.

    For more information, see How to: Synchronize the Tenant Database with the Application Database.

Task 2: Create a full SQL backup of the old database on SQL Server

You must create a full backup of the old database in the SQL Server. Alternatively, you can make a copy of the old database and perform the upgrade tasks on the copy.

For more information, see Create a Full Database Backup (SQL Server).

Task 3 Uninstall all V1 extensions in old database

Open the Microsoft Dynamics NAV Administration Shell that matches to old database, and run these commands:

  1. To get a list of the V1 extensions that are installed, run this command:

    Get-NAVAppInfo -ServerInstance <ServerInstanceName> -Tenant <TenantID> |ft
    

    Replace <ServerInstanceName> with the name of the Microsoft Dynamics NAV Server instance that the database connects to. Replace <TenantID> with the tenant ID of the database. If you do not have a multitenant server instance, use default.

    Make a note of the V1 extensions that you will uninstall because you will reinstall these later, after you upgrade the database.

  2. For each Extension V1, run this command to uninstall it:

    Uninstall-NAVApp -ServerInstance <ServerInstanceName> -Name <Name> -Version <N.N.N.N>
    

    Replace <Name> and <N.N.N.N> with the name and version of the Extension V1 as it appeared in the previous step.

Task 4: Upload the Microsoft Dynamics NAV 2018 license to the old database

By using the Microsoft Dynamics NAV Development Environment that matches the old database, upload the Microsoft Dynamics NAV 2018 license to the database.

For more information, see Uploading a License File for a Specific Database.

Task 5: Delete all objects except tables from the old database

In the development environment version that matches the database, open the old database, open Object Designer, select all objects except tables, and then choose Delete.

You can also use the DeleteObjects command of the finsql.exe.

Task 6: Uninstall (optional) the old product and install the new product

Uninstall the old Dynamics NAV, and then install Microsoft Dynamics NAV 2018.

As a minimum, you must install the following Microsoft Dynamics NAV 2018 components: Client (with the Development Environment), Modern Development Environment, Administration Tools, Server, and SQL Server Components. You can install these components by choosing the Custom option during Setup. For more information, see Custom Option.

Task 7: Clear Dynamics NAV Server instance and debugger breakpoint records from old database

Clear all records from the dbo.Server Instance and dbo.Debugger Breakpoint tables in the database in SQL Server.

  1. If you did not uninstall the old Dynamics NAV, make sure that you stop the old Microsoft Dynamics NAV Server instance, and close any tools that connect to the database, such as the Dynamics NAV Administration Tool and development environment.

  2. Using SQL Server Management Studio, open and clear the dbo.Server Instance and dbo.Debugger Breakpoint tables of the old database. For example, you can run the following SQL query:

    DELETE FROM [<My NAV Database Name>].[dbo].[Server Instance]
    DELETE from [<My NAV Database Name>].[dbo].[Debugger Breakpoint]
    

Task 8: Convert the old database to the Microsoft Dynamics NAV 2018 format

If the database is on Azure SQL Database, you must first add your user account to the dbmanager database role on master database. This membership is only required for converting the database, and can be removed afterwards.

To convert the old database to the Microsoft Dynamics NAV 2018 format, run the Microsoft Dynamics NAV 2018 development environment as an administrator, open the old database, and follow the conversion instructions.

If you do not run the development environment as an administrator, you will get an error and the conversion will be stopped.

Important

Do not run schema synchronization at this time.

Task 9: Import the upgraded application objects and upgrade toolkit objects into the converted database

Using the Microsoft Dynamics NAV 2018 development environment, import the application objects that you want in the Microsoft Dynamics NAV 2018 database. This includes the application objects FOB file (from the application code upgrade) and the upgrade toolkit objects FOB file.

  1. Import the application objects FOB file first, and then import the upgrade toolkit FOB file.

    For more information, see How to: Import Objects.

  2. When you import the FOB file, if you experience metadata conflicts, the Import Worksheet windows appears.

    Review the Worksheet page. For more information, see Import Worksheet.

    Choose Replace All, and then OK to continue.

  3. IMPORTANT When prompted about table synchronization, set the Synchronize Schema option to Later.

Task 10: Connect a Microsoft Dynamics NAV 2018 Server instance to the converted database

You use the Microsoft Dynamics NAV Server Administration tool for Microsoft Dynamics NAV 2018 or Set-NAVServerConfiguration cmdlet in the Microsoft Dynamics NAV Administration Shell to connect a Microsoft Dynamics NAV Server instance to the converted database.

The service account that is used by the Microsoft Dynamics NAV Server instance must be a member of the db_owner role in the Dynamics NAV database on SQL Server or Azure SQL Database.

Important

When upgrading a large database, you should increase the SQL Command Timeout setting for the Microsoft Dynamics NAV Server instance, to avoid timeouts during schema synchronization. The default setting is 30 minutes.

For more information, see How to: Connect a Microsoft Dynamics NAV Server Instance to a Database and Giving the account necessary database privileges in SQL Server.

Task 11: Compile all objects that are not already compiled

  1. In the development environment, set it to use the Microsoft Dynamics NAV Server instance that connects to the database.

    For more information, see How to: Change the Microsoft Dynamics NAV Server Instance or Database Information.

  2. Use the development environment or finsql.exe to compile all objects that are not already compiled. This includes the imported application objects, data tables, and system tables.

    Important

    Choose to run schema synchronization later. For example, in Object Designer, choose Tools, choose Compile, set the Synchronize Schema option to Later, and then choose OK. For more information, see Compiling Objects.

  3. (Microsoft Dynamics NAV 2016 and earlier only) If you get errors on the following table objects, use the Object Designer to delete the objects because they are no longer used.

    • Table 470 Job Queue (replaced by the Task Scheduler)
    • Table 824 DO Payment Connection Details
    • Table 825 DO Payment Connection Setup
    • Table 827 DO Payment Credit Card
    • Table 828 DO Payment Credit Card Number
    • Table 829 DO Payment Trans. Log Entry
    • Table 1510 Notification Template
When you delete a table object, in the **Delete** confirmation dialog box that appears, set the **Synchronize Schema** option to **Force**.

> [!IMPORTANT] 
> In this step, it is very important that you do not use the **Sync. Schema For All Tables** option from the **Tools** menu.
  1. (Microsoft Dynamics NAV 2016 and earlier only) If the old database includes test runner codeunits, you will get errors on these codeunits that the OnBeforeTestRun and OnAfterTestRun trigger signatures are not valid. To fix these issues, you change the signature of the OnBeforeTestRun and OnAfterTestRun triggers to include the TestPermission parameter.

    For more information, see Resolving OnBeforeTestRun and OnAfterTestRun Trigger Errors When Converting a Database.

    The triggers for codeunit 130400 CAL Test Runner and 130402 CAL Command Line Test Runner will be updated for you during the data upgrade.

Task 12: Run the schema synchronization on the imported objects

Synchronize the database schema with validation. You can run the schema synchronization from the Microsoft Dynamics NAV Development Environment or Microsoft Dynamics NAV Administration Shell.

For more information, see How to: Synchronize the Tenant Database with the Application Database.

Task 13: Run the data upgrade process

A data upgrade runs the upgrade toolkit objects, such as upgrade codeunits and upgrade tables, to migrate business data from the old table structure to the new table structure. You can start the data upgrade from the Microsoft Dynamics NAV Development Environment or Microsoft Dynamics NAV Administration Shell.

Note

In the last phase of data upgrade, all companies will be initialized by running codeunit 2 Company Initialization. This is done automatically. If you want to skip company initialization, then use the Start-NavDataUpgrade cmdlet and set the -SkipCompanyIntitialization parameter.

From the development environment:

Open development environment as an administrator. On the Tools menu, choose Data Upgrade, and then choose Start and follow the instructions.

If you do not run the development environment as an administrator, you will get an error and the data upgrade will be stopped.

To view the progress of the data upgrade, on the Tools menu, choose Data Upgrade, and then choose Show Progress.

From the Microsoft Dynamics NAV Administration Shell:

Open the Microsoft Dynamics NAV Administration Shell as an administrator, and then run Start-NavDataUpgrade cmdlet as follows:

Start-NavDataUpgrade -ServerInstance <ServerInstanceName> -Force  

Replace <ServerInstanceName> with the name of the Microsoft Dynamics NAV Server instance that is connected to the database.

To view the progress of the data upgrade, you can run Get-NavDataUpgrade cmdlet with the –Progress switch.

The data upgrade process runs CheckPreconditions and Upgrade functions in the upgrade codeunits. If any of the preconditions are not met or an upgrade function fails, you must correct the error and resume the data upgrade process. If CheckPreconditions and Upgrade functions are executed successfully, codeunit 2 is automatically run to initialize all companies in the database unless you set the -SkipCompanyIntitialization parameter.

Task 14: Import upgraded permission sets and permissions by using the Roles and Permissions XMLports

You import the permission sets and permissions XML files.

  1. Delete all permission sets in the database except the SUPER permission set.

    In Object Designer, run page 9802 Permission Sets, and then delete the permission sets.

  2. Run XMLport 9171 and XMLport 9172 to import the permission sets and permission XML files.

    For more information, see How to: Export and Import Permission Sets and Permissions.

Task 15: Set the language of the customer database

In the development environment, choose Tools, choose Language, and then select the language of the original customer database.

Task 16: Register client control add-ins

The database is now fully upgraded and is ready for use. However, Microsoft Dynamics NAV 2018 includes the following client control add-ins.

  • Microsoft.Dynamics.Nav.Client.BusinessChart
  • Microsoft.Dynamics.Nav.Client.DynamicsOnlineConnect
  • Microsoft.Dynamics.Nav.Client.FlowIntegration
  • Microsoft.Dynamics.Nav.Client.OAuthIntegration
  • Microsoft.Dynamics.Nav.Client.PageReady
  • Microsoft.Dynamics.Nav.Client.PingPong
  • Microsoft.Dynamics.Nav.Client.SocialListening
  • Microsoft.Dynamics.Nav.Client.TimelineVisualization
  • Microsoft.Dynamics.Nav.Client.VideoPlayer
  • Microsoft.Dynamics.Nav.Client.WebPageViewer

To use these add-ins, they must be registered in table 2000000069 Client Add-in. Depending on the version that you upgraded from, all the add-ins might not be registered after the upgrade process. You can register missing control add-ins in the Control Add-ins page in the Microsoft Dynamics NAV Windows client. The assemblies (.dlls) for these add-ins are in subfolders to the Add-ins folder of the Dynamics NAV Server installation, which by default is C:\Program Files\Microsoft Dynamics NAV\110\Service\Add-ins. For more information, see How to: Register a Windows Client Control Add-in.

Task 17: Publish and install/upgrade extensions

Microsoft Dynamics NAV 2018 includes several extensions that you publish and install as part of the upgrade process. To enable these extensions, it is important that you follow the steps below.

  1. Download the system and test symbols file from the ModernDev folder on the DVD and the application symbols from here. Make a note of the path where you store the files.

  2. Publish the platform, test, and application symbols one file at a time to the Dynamics NAV server instance:

    Open the Microsoft Dynamics NAV Administration Shell as an administrator, and run the following command for each of the symbol files:

    Publish-NAVApp -ServerInstance <ServerInstanceName> -Path <SymbolFilePath> -PackageType SymbolsOnly
    
  3. Make sure that Enable loading application symbol references at server startup (EnableSymbolLoadingAtServerStartup) is set on the Dynamics NAV server instance.

    For more information, see Configuring Dynamics NAV Server.

  4. Generate the application symbol references for running Running C/SIDE and AL Side-by-Side:

    1. Open a command prompt, change to the directory where the finsql.exe file has been installed as part of Microsoft Dynamics NAV 2018, and then run the following command:

      finsql.exe Command=generatesymbolreference, Database=<MyDatabaseName>, ServerName=<DatabaseServerName>\<DatabaseInstance>
      

      Replace values for the Database and ServerName settings to suit.

      Note

      This command does not generate a file. It populates the Object Metadata table in the database.

    2. When you run the command, the console returns to an empty command prompt, and does not display or provide any indication about the status of the run. However, the finsql.exe may still be running in the background. It can take several minutes for the run to complete, and the symbols will not be generated until such time. You can see whether the finsql.exe is still running by using Task Manager and looking on the Details tab for finsql.exe.

      When the process ends, a file named navcommandresult.txt is saved to the Microsoft Dynamics NAV Windows client installation folder. If the command succeeded, the file will contain text like [0] [06/12/17 14:36:17] The command completed successfully in '177' seconds. If the command failed, another file named naverrorlog.txt will be generated. This file contains details about the error(s) that occurred.

      For more information about generation symbols, see Running C/SIDE and AL Side-by-Side.

  5. Publish all the extensions from the \Extensions folder of the Microsoft Dynamics NAV 2018 installation media (DVD):

    1. From the Microsoft Dynamics NAV Administration Shell, run the following command for each extension.

      Publish-NAVApp -ServerInstance <ServerInstanceName> -Path <ExtensionFileName> 
      

      V1 extensions have the file type .navx. V2 extensions have the file type .app.

    2. For each Extension V2, run the following command to synchronize its schema with the tenant database:

      Sync-NAVApp -ServerInstance <ServerInstanceName> -Name <Name> -Version <N.N.N.N>
      

      For more information about publishing extensions, see How to: Publish and Install an Extension.

  6. Upgrade the V1 extensions that you uninstalled previously in Task 3 by reinstalling them. From the Microsoft Dynamics NAV Administration Shell, run the following commands:

    1. To get a list of the published extensions on the server instance, run this command:

      Get-NAVAppInfo -ServerInstance <ServerInstanceName>
      
    2. To determine which V1 extensions to install, inspect the list that appears, and compare it with the list that you gathered in Task 3. V1 extensions are indicated by Extension Type : CSIDE.

      • If there is only one version of an extension, which matches the version in the old list, then go to step 6c to reinstall the version.
      • If there is a newer version of an extension and its Extension Type is also CSIDE, then go to step 6c to install and upgrade to the newer V1 extension.
      • If there is a newer version of an extension but its Extension Type is ModernDev, then go to step 6d to upgrade the old V1 extension to the V2 extension.
    3. For each V1 Extension that you want to reinstall or upgrade, run this command:

      Install-NAVApp -ServerInstance <ServerInstanceName> -Name <Name> -Version <N.N.N.N> –Tenant <TenantID>
      

      Replace <Name> and <N.N.N.N> with the name and version of the Extension V1 as it appeared in the previous step. For <TenantID>, in single-tenant deployments, you either specify default or you omit the –Tenant parameter.

      This will upgrade the V1 extensions.

      Optionally, if you installed a newer version of an extension, unpublish the old version:

      Unpublish-NAVApp -ServerInstance <ServerInstanceName> -Name <Name> -Version <N.N.N.N>
      
    4. For each V1 Extension that you want to upgrade to a V2 Extension, run these commands:

      Sync-NAVApp -ServerInstance <ServerInstanceName> -Name <Name> -Version <N.N.N.N>
      Start-NAVAppDataUpgrade -ServerInstance DynamicsNAV -Name ProswareStuff -Version <N.N.N.N>
      

      This will upgrade the V2 extensions.

      Optionally, unpublish the V1 extension.

      Unpublish-NAVApp -ServerInstance <ServerInstanceName> -Name <Name> -Version <N.N.N.N>
      
  7. For the Denmark (DK) local version of Microsoft Dynamics NAV 2018, you must install the following new V2 extensions to get all the local functionality.

    Name Publisher Version
    Payroll Data Import Definitions (DK) Microsoft 1.0.19502.0 (or later)
    Payment and Reconciliation Formats (DK) Microsoft 1.0.19502.0 (or later)
    Tax File Formats (DK) Microsoft 1.0.19502.0 (or later)

    For each Extension V2, run this command:

    Install-NAVApp -ServerInstance <ServerInstanceName> -Name <Name> -Version <N.N.N.N> 
    
  8. Recompile published V1 extensions.

    Use the Repair-NAVApp cmdlet of the Microsoft Dynamics NAV 2018 Administration Shell to compile the published extensions to make sure they are work with the new platform and application.

    For example, you can run the following command to recompile all extensions:

    Get-NAVAppInfo -ServerInstance <ServerInstanceName> | Repair-NAVApp
    

Task 18: Update the Dynamics NAV Web client configuration file (navsettings.json)

If you have installed the Microsoft Dynamics NAV Web Server components, populate the navsettings.json file for the Dynamics NAV Web Server instance with the settings of the old web.config file.

For more information, see Configuring Microsoft Dynamics NAV Web Client by Modifying the NavSettings.json File.

Task 19: Delete the upgrade objects

At this point, you have upgraded the database to Microsoft Dynamics NAV 2018. Now, you can delete the upgrade codeunits and upgrade table objects that you imported in task 9. This task is recommended but not required.

When you delete tables, on the Delete dialog box, set the Synchronize Schema option to Force.

See Also

Upgrading the Application Code
Automating the Upgrade Process using Sample Windows PowerShell Scripts
Synchronizing Table Schemas
Upgrading to Microsoft Dynamics NAV