I have had a few people asking for this .. So I’m just going to share you my script that I always you to convert a Single Tenancy Demo Environment to a Multi Tenancy Demo Environment, with some (Empty) companies per Tenant and such.. .
And I’m going to make it easy on me .. there are no guarantees that it will work for you out-of-the-box .
The Script
#Preparing PowerShell Set-ExecutionPolicy RemoteSigned -Force Import-Module 'C:\Program Files\Microsoft Dynamics NAV\71\Service\NavAdminTool.ps1' #Parameters $ServerInstanceName = "DynamicsNAV71" #The current ServiceInstance $DatabaseServer = "localhost" #The Database Server where the database is located $Databasename = "NAV2013R2_BE" #The database that will be migrated to Multi-Tenancy $DemoCompanyName = "CRONUS BELGIË NV" #This company will be renamed to "MainCompany". The data of this company will be available in the Mult-Tenancy environment. $PathToDVD = 'C:\$installs\Dynamics.71.BE.1349272.DVD' #The path to the DVD #The Script $CurrentServerInstance = Get-NAVServerInstance -ServerInstance $ServerInstanceName $MainCompanyName = "MainCompany" $MainTenant = "MainTenant" Write-host "Preparing Companies - Rename and delete default companies" $CurrentServerInstance | Rename-NAVCompany -CompanyName $DemoCompanyName -NewCompanyName $MainCompanyName -Force $DemoCompanies = $CurrentServerInstance | Get-NAVCompany foreach ($DemoCompany in $DemoCompanies) { if (!($DemoCompany.CompanyName -like $MainCompanyName)) { $CurrentServerInstance | Remove-NAVCompany -CompanyName $DemoCompany.CompanyName -Force } } Write-host "Preparing Companies - Create a new company with data" $CurrentServerInstance | Copy-NAVCompany -SourceCompanyName $MainCompanyName -DestinationCompanyName "PRS Company Default" -Force Write-host "Preparing Companies - Creating 10 empty Waldo Companies" for ($i = 1; $i -le 10; $i++) { $CompanyName = 'Waldo Company'+$i $CurrentServerInstance | New-NAVCompany -CompanyName $CompanyName -Force } Write-host "Preparing Companies - Creating 3 empty PRS companies" for ($i = 1; $i -le 3; $i++) { $CompanyName = 'PRS Company'+$i $CurrentServerInstance | New-NAVCompany -CompanyName $CompanyName -Force } Write-host "Split the Application Database and Customer Data" Export-NAVApplication -DatabaseServer $DatabaseServer -DatabaseName $Databasename -DestinationDatabaseName "ApplicationDB" -Force Remove-NAVApplication -DatabaseServer $DatabaseServer -DatabaseName $Databasename -Force Write-host "Prepare NST for MultiTenancy" $CurrentServerInstance | Set-NAVServerInstance -stop $CurrentServerInstance | Set-NAVServerConfiguration -KeyName MultiTenant -KeyValue "true" $CurrentServerInstance | Set-NAVServerConfiguration -KeyName DatabaseName -KeyValue "" $CurrentServerInstance | Set-NAVServerInstance -start Write-host "Mount app" $CurrentServerInstance | Mount-NAVApplication -DatabaseServer $DatabaseServer -DatabaseName "ApplicationDB" Write-host "Create Tenants and move companies" Mount-NAVTenant -ServerInstance DynamicsNAV71 -Id $MainTenant -DatabaseName $Databasename -AllowAppDatabaseWrite -OverwriteTenantIdInDatabase import-module "$PathToDVD\WindowsPowerShellScripts\Multitenancy\NAVMultitenancySamples" -verbose Write-host "Move PRS Companies" $MoveToTenant = 'PRS Company' Get-NAVServerINstance | Get-NAVCompany -Tenant $MainTenant | Where-Object { $_."CompanyName" -like $MoveToTenant + '*' } | HowTo-MoveCompanyToTenant -ServerInstance $CurrentServerInstance.ServerInstance -FromDatabase 'NAV2013R2_BE' -OldTenantName $MainTenant -NewTenantName $MoveToTenant.Replace(" ","") -RemoveCompanyWhenMoved Write-host "Move Waldo Companies" $MoveToTenant = 'Waldo Company' Get-NAVServerINstance | Get-NAVCompany -Tenant $MainTenant | Where-Object { $_."CompanyName" -like $MoveToTenant + '*' } | HowTo-MoveCompanyToTenant -ServerInstance $CurrentServerInstance.ServerInstance -FromDatabase 'NAV2013R2_BE' -OldTenantName $MainTenant -NewTenantName $MoveToTenant.Replace(" ","") -RemoveCompanyWhenMoved
Some words of explanation
As you see, I’m usually working with a Belgian database. The “parameters” section should help you to easily change the script to your own needs.
Furtheron, I’m just going to keep 1 active company (Belgian version has 2), copy it to a PRS company, create 13 more companies and going to create multiple tenants with each tenant some companies.. . Just try it out, and see what happens .
The Result
It creates for you a Multi-Tenancy environment with three tenants:
- “MainTenant” will have 1 company, being “MainCompany”. Check With:
Get-NAVServerInstance | Get-NAVCompany -tenant “MainTenant”
- “prscompany” will have 4 companies. One with data (PRS Company). Check With:
Get-NAVServerInstance | Get-NAVCompany -tenant “prscompany”
- “waldocompany” will have 10 empty companies. Check with:
Get-NAVServerInstance | Get-NAVCompany -tenant “waldocompany”
Good luck!