Het uitvoeren van een ‘minor’ CU upgrade
Het uitvoeren van een maandelijkse cumulative update kunt u gemakkelijk doen via PowerShell. Op deze pagina vindt u de functies. Er is een pagina met variabelen. Deze is afgeschermd met een wachtwoord. U vindt deze hier. Voorbeelden hoe u deze functies kunt uitvoeren, vindt u hier.
#---------------------------------------------------------------------------------
#Beschikbare documentatie
#---------------------------------------------------------------------------------
#Released Updates for Microsoft Dynamics 365 Business Central 2022 Release Wave 2
#(BC21)
#Dynamics 365 Business Central on-premises 2023 release wave 1 updates (BC22)
#Installing a Business Central 2023 Release Wave 1 Update
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Laden van variables
#---------------------------------------------------------------------------------
$Script = "C:\NAV\Scripts\Performing a Minor Upgrade"
$Version = "220"
$Release = "W1"
$CURelease = "1"
$NewBcVersion = ""
$OldBcVersion = ""
Set-Location -Path $Script
. .\Variables.ps1
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Voorbereiden bestaande databases
#---------------------------------------------------------------------------------
function Prepare-Existing-Databases {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('Tenant1','Tenant2')]
$TenantId,
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance
)
Import-module $Module
Get-NAVAppInfo -ServerInstance $BcServerInstance
Get-NAVAppInfo -ServerInstance $BcServerInstance -Tenant $TenantId `
| % { Uninstall-NAVApp -ServerInstance $BcServerInstance -Tenant $TenantId `
-Name $_.Name -Version $_.Version -Force}
Unpublish-NAVApp -ServerInstance $BcServerInstance -Name System
Dismount-NAVTenant -ServerInstance $BcServerInstance -Tenant $TenantId `
-Force
Stop-NAVServerInstance -ServerInstance $BcServerInstance
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Installeren Business Central Components
#---------------------------------------------------------------------------------
#Verwijder eerst de huidige installatie van BC22 en installeer dan de nieuwe
#versie
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Converteer bestaande database naar het nieuwe platform
#---------------------------------------------------------------------------------
function Convert-existing-database-to-new-Platform {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('MSSURFACEBK03\BCDEMO','MSZBOOK15G03\BCDEMO')]
$DatabaseServer,
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT APP','BCNLMT APP')]
$ApplicationDatabase,
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance
)
Import-module $Module
Invoke-NAVApplicationDatabaseConversion -DatabaseServer $DatabaseServer `
-DatabaseName $ApplicationDatabase -Force
Set-NAVServerConfiguration -ServerInstance $BcServerInstance -KeyName `
Multitenant-KeyValue true
Set-NAVServerConfiguration -ServerInstance $BcServerInstance -KeyName `
DatabaseName -KeyValue $ApplicationDatabase
Restart-NAVServerInstance -ServerInstance $BcServerInstance
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Importeer Business Central Partner License
#---------------------------------------------------------------------------------
function Import-Business-Central-partner-license {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance
)
Import-module $Module
Import-NAVServerLicense -ServerInstance $BcServerInstance -LicenseFile `
$PartnerLicense
Restart-NAVServerInstance -ServerInstance $BcServerInstance
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Synchroniseer Business Central tenant
#---------------------------------------------------------------------------------
function Synchronize-tenant {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance,
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT CRONUSINT','BCNLMT CRONUSNL')]
$TenantDatabase,
[Parameter(Mandatory=$true)]
[ValidateSet('Tenant1','Tenant2')]
$TenantId
)
Import-module $Module
Mount-NAVTenant -ServerInstance $BCServerInstance -DatabaseName `
$TenantDatabase -Tenant $TenantId -Force -ErrorAction SilentlyContinue
Sync-NAVTenant -ServerInstance $BcServerInstance -Tenant $TenantId -Mode `
Sync -Force
Get-NavTenant -ServerInstance $BCServerInstance -Tenant $TenantId
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Upgrade System Application, Base Application en Application
#---------------------------------------------------------------------------------
function System-Application-Base-Application-Application {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance,
[Parameter(Mandatory=$true)]
[ValidateSet('Tenant1','Tenant2')]
$TenantId
)
Import-module $Module
Publish-NAVApp -ServerInstance $BcServerInstance -Path $SystemAppPath
Publish-NAVApp -ServerInstance $BcServerInstance -Path $BaseAppPath
Publish-NAVApp -ServerInstance $BcServerInstance -Path $ApplicationAppPath
Sync-NAVApp -ServerInstance $BcServerInstance -Tenant $TenantId -Name `
"System Application" -Version $NewBcVersion
Sync-NAVApp -ServerInstance $BcServerInstance -Tenant $TenantId -Name `
"Base Application" -Version $NewBcVersion
Sync-NAVApp -ServerInstance $BcServerInstance -Tenant $TenantId -Name `
"Application" -Version $NewBcVersion
Start-NAVAppDataUpgrade -ServerInstance $BcServerInstance -Tenant `
$TenantId -Name "System Application" -Version $NewBcVersion
Start-NAVAppDataUpgrade -ServerInstance $BcServerInstance -Tenant `
$TenantId -Name "Base Application" -Version $NewBcVersion
Start-NAVAppDataUpgrade -ServerInstance $BcServerInstance -Tenant `
$TenantId -Name "Application" -Version $NewBcVersion
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Publiceer en installeer Microsoft extensies
#---------------------------------------------------------------------------------
function Publish-and-install-Microsoft-extensions {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance,
[Parameter(Mandatory=$true)]
[ValidateSet('Tenant1','Tenant2')]
$TenantId
)
Import-module $Module
$Folders = "C:\NAV\Software\BC$Version.$CURelease\$Release\Applications\"
$files = gci $Folders -Filter *.app -Recurse -Exclude "*test*", `
"*Performance Toolkit*","*Tests*","*Library*"
foreach ($file in $files)
{
Copy-Item $file.PSPath -Destination $Destination
}
$Extensions = @(Get-ChildItem -Path $Destination -Filter *.app)
Publish-NavApp -ServerInstance $BCServerInstance -Path `
"$Destination\Microsoft_Email - Outlook REST API.app"
ForEach ($Extension in $Extensions)
{
Publish-NavApp -ServerInstance $BCServerInstance -Path `
$Extension.FullName
Write-Host $Extension.FullName
}
ForEach ($Extension in $Extensions)
{
(Get-ChildItem -Path "$Destination\*" -Name -Exclude "*.txt") `
| Out-File "$Destination\Output1.txt"
(Get-Content -Path "$Destination\Output1.txt") -replace `
"Microsoft_" | Out-File "$Destination\Output2.txt"
(Get-Content -Path "$Destination\Output2.txt") -creplace '.app' `
| Out-File "$Destination\Output3.txt"
}
[System.IO.StreamReader]$sr = `
[System.IO.File]::Open("$Destination\Output3.txt", `
[System.IO.FileMode]::Open)
while (-not $sr.EndOfStream)
{
$line = $sr.ReadLine()
#Install-NavApp -ServerInstance $BCServerInstance -Tenant `
#$TenantId -Name $Line -Version $NewVersion -Force
Sync-NAVApp -ServerInstance $BcServerInstance -Tenant `
$TenantId -Name $line -Version $NewBcVersion -Force
#Start-NAVAppDataUpgrade -ServerInstance $BcServerInstance `
#-Tenant $TenantId -Name $Line -Version $NewBcVersion -Force
}
$sr.Close()
Return 0
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Upgraden control add-ins
#---------------------------------------------------------------------------------
function Upgrade-control-add-ins {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance
)
Import-module $Module
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.BusinessChart' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'BusinessChart\Microsoft.Dynamics.Nav.Client.BusinessChart.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.FlowIntegration' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'FlowIntegration\Microsoft.Dynamics.Nav.Client.FlowIntegration.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.OAuthIntegration' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'OAuthIntegration\Microsoft.Dynamics.Nav.Client.OAuthIntegration.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.PageReady' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'PageReady\Microsoft.Dynamics.Nav.Client.PageReady.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.PowerBIManagement' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'PowerBIManagement\Microsoft.Dynamics.Nav.Client.PowerBIManagement.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.RoleCenterSelector' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'RoleCenterSelector\Microsoft.Dynamics.Nav.Client.RoleCenterSelector.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.SatisfactionSurvey' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'SatisfactionSurvey\Microsoft.Dynamics.Nav.Client.SatisfactionSurvey.zip')
#Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
#'Microsoft.Dynamics.Nav.Client.SocialListening' -PublicKeyToken `
#31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
#'SocialListening\Microsoft.Dynamics.Nav.Client.SocialListening.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.VideoPlayer' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'VideoPlayer\Microsoft.Dynamics.Nav.Client.VideoPlayer.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.WebPageViewer' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'WebPageViewer\Microsoft.Dynamics.Nav.Client.WebPageViewer.zip')
Set-NAVAddIn -ServerInstance $BcServerInstance -AddinName `
'Microsoft.Dynamics.Nav.Client.WelcomeWizard' -PublicKeyToken `
31bf3856ad364e35 -ResourceFile ($AppName = Join-Path $AddinsFolder `
'WelcomeWizard\Microsoft.Dynamics.Nav.Client.WelcomeWizard.zip')
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Update applicatie versie
#---------------------------------------------------------------------------------
function Update-application-version {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance,
[Parameter(Mandatory=$true)]
[ValidateSet('Tenant1','Tenant2')]
$TenantId
)
Import-module $Module
Set-NAVApplication -ServerInstance $BcServerInstance -ApplicationVersion `
$NewBCVersion -Force
Sync-NAVTenant -ServerInstance $BcServerInstance -Mode Sync -Tenant `
$TenantId -Force
Start-NAVDataUpgrade -ServerInstance $BcServerInstance `
-FunctionExecutionMode Serial -Tenant $TenantId -Force
Set-NAVServerConfiguration -ServerInstance $BcServerInstance -KeyName `
SolutionVersionExtension -KeyValue "437dbf0e-84ff-417a-965d-ed2bb9650972" `
-ApplyTo All
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Importeer de klant licentie
#---------------------------------------------------------------------------------
function Import-the-customer-license {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance,
[Parameter(Mandatory=$true)]
[ValidateSet('Tenant1','Tenant2')]
$TenantId
)
Import-module $Module
Import-NAVServerLicense -ServerInstance $BcServerInstance -LicenseFile `
$CustomerLicense -Database Default
Import-NAVServerLicense -ServerInstance $BcServerInstance -LicenseFile `
$CustomerLicense -Database Master
Import-NAVServerLicense -ServerInstance $BcServerInstance -LicenseFile `
$CustomerLicense -Database NavDatabase
Import-NAVServerLicense -ServerInstance $BcServerInstance -LicenseFile `
$CustomerLicense -Database Tenant -Tenant $TenantId
Restart-NAVServerInstance -ServerInstance $BCServerInstance -Force
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Synchroniseer Business Central tenant
#---------------------------------------------------------------------------------
function Mount-Dismount-Synch-tenant {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance,
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT CRONUSINT','BCNLMT CRONUSNL')]
$TenantDatabase,
[Parameter(Mandatory=$true)]
[ValidateSet('Tenant1','Tenant2')]
$TenantId,
[Parameter(Mandatory=$true)]
[ValidateSet('cronusint.melsbergmans.nl','cronusnl.melsbergmans.nl')]
$AlternateId,
[Parameter(Mandatory=$true)]
[ValidateSet('CRONUS International Ltd.','CRONUS Nederland BV')]
$Company,
[Parameter(Mandatory=$true)]
[ValidateSet('MSSURFACEBK03\BCDEMO','MSZBOOK15G03\BCDEMO')]
$DatabaseServer,
[Parameter(Mandatory=$true)]
[ValidateSet('https://cronusint.melsbergmans.nl',`
'https://cronusnl.melsbergmans.nl')]
$ValidAudiencesTenant
)
Import-module $Module
Dismount-NAVTenant -ServerInstance $BCServerInstance -Tenant $TenantId `
-Force
Mount-NAVTenant –ServerInstance $BcServerInstance -Id $TenantId `
–DatabaseServer $DatabaseServer -AadTenantId $TenantAADId -AlternateId `
$AlternateId `
-DatabaseName $TenantDatabase -OverwriteTenantIdInDatabase -DefaultCompany `
$Company -DefaultTimeZone UTC -DisplayName $Company -ValidAudiences `
$ValidAudiencesTenant -EnvironmentType Production -AllowAppDatabaseWrite `
-NasServicesEnabled `
-RunNasWithAdminRights -Force
Sync-NAVTenant -ServerInstance $BcServerInstance -Tenant $TenantId -Mode `
Sync -Force
Get-NavTenant -ServerInstance $BCServerInstance -Tenant $TenantId -Force
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Uitvoeren van maintenance
#---------------------------------------------------------------------------------
function Performing-Maintenance {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance
)
Import-module $Module
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ODataServicesPort -KeyValue $ODataServicesPort
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ManagementServicesPort -KeyValue $ManagementServicesPort
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
SnapshotDebuggerServicesPort -KeyValue $SnapshotDebuggerServicesPort
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ClientServicesPort -KeyValue $ClientServicesPort
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
DeveloperServicesPort -KeyValue $DeveloperServicesPort
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
SOAPServicesPort -KeyValue $SOAPServicesPort
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ManagementApiServicesPort -KeyValue $ManagementApiServicesPort
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
PublicODataBaseUrl -KeyValue $PublicODataBaseUrl
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
AppIdUri -KeyValue $AppIdUri
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ExcelAddInAzureActiveDirectoryClientId -KeyValue `
$ExcelAddInAzureActiveDirectoryClientId
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ExtendedSecurityTokenLifetime -KeyValue $ExtendedSecurityTokenLifetime
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
NASServicesStartupCodeunit -KeyValue $NASServicesStartupCodeunit
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
PublicSOAPBaseUrl -KeyValue $PublicSOAPBaseUrl
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
PublicWebBaseUrl -KeyValue $PublicWebBaseUrl
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ServicesCertificateThumbprint -KeyValue $ServicesCertificateThumbprint
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ServicesDefaultCompany -KeyValue $ServicesDefaultCompany
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ValidAudiences -KeyValue $ValidAudiencesServer
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
WSFederationLoginEndpoint -KeyValue $WSFederationLoginEndpoint
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ClientServicesCredentialType -KeyValue $NSTClientServicesCredentialType
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
DeveloperServicesEnabled -KeyValue $DeveloperServicesEnabled
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
SOAPServicesEnabled -KeyValue $SOAPServicesEnabled
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ODataServicesEnabled -KeyValue $ODataServicesEnabled
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
DeveloperServicesSSLEnabled -KeyValue $DeveloperServicesSSLEnabled
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
SOAPServicesSSLEnabled -KeyValue $SOAPServicesSSLEnabled
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ODataServicesSSLEnabled -KeyValue $ODataServicesSSLEnabled
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ManagementApiServicesPort -KeyValue $ManagementApiServicesPort
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
Multitenant -KeyValue $Multitenant
Set-NavServerConfiguration -ServerInstance $BcServerInstance -KeyName `
ADOpenIdMetadataLocation -KeyValue $ADOpenIdMetadataLocation
Set-NavWebServerInstanceConfiguration -WebServerInstance $BcServerInstance `
-KeyName AadAuthorityUri -KeyValue $AadAuthorityUri
Set-NavWebServerInstanceConfiguration -WebServerInstance $BcServerInstance `
-KeyName AadApplicationId -KeyValue $AadApplicationId
Set-NavWebServerInstanceConfiguration -WebServerInstance $BcServerInstance `
-KeyName DnsIdentity -KeyValue $DnsIdentity
Set-NavWebServerInstanceConfiguration -WebServerInstance $BcServerInstance `
-KeyName ClientServicesCredentialType -KeyValue `
$WebClientServicesCredentialType
Restart-NAVServerInstance -ServerInstance $BCServerInstance
IISRESET
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Uninstall old extensions
#---------------------------------------------------------------------------------
function Uninstall-Unpublish-OldExtensions {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance
)
Import-module $Module
Get-NAVAppInfo -ServerInstance $BcServerInstance -Version $OldBcVersion `
| % {Unpublish-NAVApp -ServerInstance $BcServerInstance -Name `
$_.Name -Version $OldBcVersion} -ErrorAction SilentlyContinue
}
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#Herstart de NST-service
#---------------------------------------------------------------------------------
function Restart-NST-service {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[ValidateSet('BCW1MT','BCNLMT')]
$BCServerInstance
)
Import-module $Module
Restart-NAVServerInstance -ServerInstance $BcServerInstance
}
#---------------------------------------------------------------------------------