Example script
This is an example Script to simplify the upgrade. Please keep in mind to update it to your needs. The example is always based on the current update.
#Disable DataEncryption if needed
#DATA UPGRADE
#Task 5 Prepare Database
#This has to be done in BC14
$ServerInstance14 = 'NAV'
Get-NavAppinfo $ServerInstance14 -Tenant default | Uninstall-NavApp
Get-NavAppinfo $ServerInstance14 | Unpublish-NavApp
Get-NavAppinfo $ServerInstance14 -SymbolsOnly | Unpublish-NavApp
Stop-Navserverinstance $ServerInstance14
#Use BC19 AdminShell from here
#Task 6: Convert version 14 database
$DatabaseServer = "localhost"
$DatabaseName = "timber"
Invoke-NAVApplicationDatabaseConversion -DatabaseServer $DatabaseServer -DatabaseName $DatabaseName
#Task 7: Configure version 19 server for DestinationAppsForMigration
$ServerInstance19 = 'BC'
$DatabaseName = "timber"
$DestinationAppSettings = '[{"appId": "d23917bc-4ed3-4b3c-acbe-73d61c87d3d0","name": "MigrationExtension","publisher": "acadon AG"}]'
Set-NAVServerConfiguration $ServerInstance19 -KeyName DatabaseName -KeyValue $DatabaseName
Set-NAVServerConfiguration $ServerInstance19 -KeyName "DestinationAppsForMigration" -KeyValue $DestinationAppSettings
Set-NavServerConfiguration $ServerInstance19 -KeyName "EnableTaskScheduler" -KeyValue false
Restart-NAVServerInstance $ServerInstance19
#Task 8: Import License
$ServerInstance19 = 'BC'
$LicenseFile = "C:\BC19.flf"
Import-NAVServerLicense $ServerInstance19 -LicenseFile $LicenseFile
Restart-NAVServerInstance $ServerInstance19
#Task 9: Increase application version
$ServerInstance19 = 'BC'
$ApplicationVersion = '19.0.29539.0'
Set-NavApplication $ServerInstance19 -ApplicationVersion $ApplicationVersion -force
#Task 10: Publish symbols and DestinationAppsForMigrations
$ServerInstance19 = 'BC'
$MigrationApp1Path = 'C:\temp\Update\acadon AG_MigrationExtension_1.0.0.0.app'
$EmptyAppsFolderPath = 'C:\temp\Update\EmptyApps'
Publish-NavApp $ServerInstance19 -Path $MigrationApp1Path -SkipVerification
Get-Childitem $EmptyAppsFolderPath -recurse -Filter *.app | % {Publish-NavApp $ServerInstance19 -Path $_.fullname -SkipVerification}
Restart-NAVServerInstance $ServerInstance19
#Task 11: Synchronize tenant
$ServerInstance19 = 'BC'
$MigrationAppName = 'MigrationExtension'
Sync-NAVTenant $ServerInstance19 -Mode Sync
Sync-NAVApp $ServerInstance19 -Name $MigrationAppName
# Sync empty Apps
Get-NAVAppInfo $ServerInstance19 -Tenant Default -TenantSpecificProperties | Where-Object { $_.SyncState -eq 'NotSynced' } | Sync-NAVApp
#Task 12: Install DestinationAppsForMigration and move tables
$ServerInstance19 = 'BC'
Start-NAVDataUpgrade $ServerInstance19 -FunctionExecutionMode Serial [-SkipAppVersionCheck]
Restart-NAVServerInstance $ServerInstance19
#Install Empty Apps
Get-NAVAppInfo $ServerInstance19 -Tenant Default -TenantSpecificProperties | Where-Object { $_.IsInstalled -eq $false } | Install-NAVApp -Tenant Default
#Task 13: Publish final extensions
$ServerInstance19 = 'BC'
$AppFolder = "C:\temp\Update\Apps\"
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_MigrationExtension_1.0.0.1.app") -SkipVerification
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "Microsoft_System Application.app") -SkipVerification
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "Microsoft_Base Application_19.0.29895.0.app") -SkipVerification
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_Timber_19.0.0.0.app") -SkipVerification
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_aco_19.0.0.0.app") -SkipVerification
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_ADDM_19.0.0.0.app") -SkipVerification
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_doc.box_19.0.0.0.app") -SkipVerification
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_edi_19.0.0.0.app") -SkipVerification
Publish-NAVApp $ServerInstance19 -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_PIM_19.0.0.0.app") -SkipVerification
#Task 14: Synchronize final extensions
$ServerInstance19 = 'BC'
$AppFolder = "C:\temp\Update\Apps\"
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "Microsoft_System Application.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "Microsoft_Base Application_19.0.29895.0.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_Timber_19.0.0.0.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_aco_19.0.0.0.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_ADDM_19.0.0.0.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_doc.box_19.0.0.0.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_edi_19.0.0.0.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_PIM_19.0.0.0.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_MigrationExtension_1.0.0.1.app")
Sync-NAVApp $ServerInstance19 -Name $App.Name -Version $App.Version
#Task 15: Upgrade on table migration extension
$ServerInstance19 = 'BC'
$AppFolder = "C:\temp\Update\Apps\"
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_MigrationExtension_1.0.0.1.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
#Task 16: Clean sync and unpublish table migration extensions
$ServerInstance19 = 'BC'
$AppFolder = "C:\temp\Update\Apps\"
$MigrationAppName = 'MigrationExtension'
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_MigrationExtension_1.0.0.1.app")
Uninstall-NavApp $ServerInstance19 -Name $App.Name -Version $App.Version
Sync-NavApp $ServerInstance19 -Name $App.Name -Version $App.Version -Mode clean
Get-NavAppInfo $ServerInstance19 -Name $MigrationAppName | Unpublish-NavApp
#Task 17: Upgrade final extensions
$ServerInstance19 = 'BC'
$AppFolder = "C:\temp\Update\Apps\"
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "Microsoft_System Application.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "Microsoft_Base Application_19.0.29895.0.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_Timber_19.0.0.0.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_aco_19.0.0.0.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_ADDM_19.0.0.0.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_doc.box_19.0.0.0.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_edi_19.0.0.0.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
$App = Get-NavAppInfo -Path (Join-Path -Path $AppFolder -ChildPath "acadon AG_acadon_PIM_19.0.0.0.app")
Start-NAVAppDataUpgrade $ServerInstance19 -Name $App.Name -Version $App.Version
#Post-upgrade tasks
$ServerInstance19 = 'BC'
Set-NavServerConfiguration $ServerInstance19 -KeyName "EnableTaskScheduler" -KeyValue true
Restart-NAVServerInstance $ServerInstance19
#Unpublish apps
$EmptyAppsFolderPath = 'C:\temp\Update\EmptyApps'
Get-Childitem $EmptyAppsFolderPath -recurse -Filter *.app | % { Get-NavAppInfo -Path $_.FullName } | % {Unpublish-NavApp $ServerInstance19 -Name $_.Name -Version $_.Version }