Migrate Zervicepoint to new server
This guide is for a single server setup.
This guide is for migrating your Zervicepoint environment, to a new server. Including databases, servicebus and workflow manager.
Server1 = Old server
Server2 = New server
Step-by-step guide
-
Install the new server. Requirements - Zervicepoint Docs
Checklist:
-
Service accounts, verify that the service accounts have the same permissions on the new server.
-
Credentials, (Run "cmdkey /list" in powershell to see what credentials that users have.)
-
Powershell modules, that your Zervicepoint uses.
-
Firewall, you need the same port openings for the Server2
-
Check what plugins that you have installed on Server1. (Can be found in "add or remove programs" if you search for Zervicepoint)
-
Check the version of service bus and workflow manager on Server1, install the same on the Server2.
-
Certificate that Zervicepoint uses.
Check those and make sure the new server have the same.
-
-
Take copy of PrimarySymmeticKey on Server1
Get-SBNamespace | Select-Object Name, PrimarySymmetricKey
Save this for later
-
Stop zervicepoint on Server1
Stop-Service ProcessSystem,ProvisioningSystemInventory,ProvisioningSystem
-
Open workflow manager configuration on Server1 and choose “Leave Workflow Manager Farm”
-
DNS Change DNS A/CNAME record from Server1 ip to Server2 ip
-
SQL
Take back up of the following databases (Server1):
-
SbGatewayDatabase
-
SBMessageContainer01
-
WFInstanceManagementDB
-
WFResourceManagementDB
-
ZervicePoint
And then restore them to the (Server2).
-
-
Install Zervicepoint Zervicepoint Installer - Zervicepoint Docs
Make sure you are installing the same version of Zervicepoint on the new server.
(You can start the installation wizard on Server1 and use as a template for what settings to use on Server2, but do not go past the "summary step" on Server1)
Complete the installation on Server2
-
Check files
Compare these files, change on Server2 if needed:
Check under appsettings that everything looks to be correct.
Search for Server1 name and replace with Server2 name if you find any.
C:\Program Files\Zipper\ZervicePoint\ClientWebService\Zipper.ZervicePoint.ProvisioningSystem.Inventory.exe.config
C:\Program Files\Zipper\ZervicePoint\ProcessSystem\Zipper.ZervicePoint.ProcessSystem.WorkflowService.exe.config
C:\Program Files\Zipper\ZervicePoint\ProvisioningSystem\Zipper.ZervicePoint.ProvisioningSystem.Service.exe.config
C:\Program Files\Zipper\ZervicePoint\Web\ClientWebService\Web.config
-
Plugins
Install the same plugins on Server2
Copy the provider files from Server1 to Server2. Check the paths in the XML files, they need to match with where the files are placed.
-
Certificate
Go to Worker settings under store setting in admin web. Generate a new certificate for token signing and save. Download the certificate and install it on the server.
Update (DataSignCertThumbPrint and TokenCertThumbPrint) the thumbprint in:
With the thumbprint from the new certificateC:\Program Files\Zipper\ZervicePoint\Web\ClientWebService\Web.config
Also you might need to change the name from Server1 to Server2 in these files:
Check the Name (HERE), make sure it is Server2C:\Program Files\Zipper\ZervicePoint\ProcessSystem\Zipper.ZervicePoint.ProcessSystem.WorkflowService.exe.config
<workflowHost host="HERE" connectUsingServiceAccount="true"/> <add name="ZervicePoint" providerName="System.Data.SqlClient" connectionString="Data Source=HERE;Initial Catalog=ZervicePoint;Integrated Security=True"/> <add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=HERE;StsEndpoint=HERE;RuntimePort=9354;ManagementPort=9355"/>
C:\Program Files\Zipper\ZervicePoint\Web\ProcessSystem\Web.config
Check the Name(HERE), make sure it is Server2
<add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=HERE;StsEndpoint=HERE;RuntimePort=9354;ManagementPort=9355"/> <add name="ZervicePoint" providerName="System.Data.SqlClient" connectionString="data source=HERE;initial catalog=ZervicePoint;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"/>
-
Workflow manager and service bus.
On Server2: Start PowerShell as admin
Import-Module WorkflowManager
Change “domain\account” to your Domain\serviceaccount$myKey = ConvertTo-SecureString "CertificateAutoGenerationKey from **Server1**" -AsPlainText -Force
Replace myServerName\myInstanceName with Server2 SQL connection string
Restore-SBFarm -RunAsAccount "domain\account" -GatewayDBConnectionString "Data Source=Server2;Initial Catalog=SbGatewayDatabase;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=myServerName\myInstanceName;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False" -AdminGroup "BUILTIN\Administrators" -CertificateAutoGenerationKey $myKey -Verbose
Replace myServerName\myInstanceName with Server2 SQL connection string
Restore-SBMessageContainer -ContainerDBConnectionString "Data Source=Server2;Initial Catalog=SBMessageContainer01;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=Server2;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False" -Id 1
Replace myServerName\myInstanceName with Server2 SQL connection string
Restore-SBGateway -GatewayDBConnectionString "Data Source=Server2;Initial Catalog=SbGatewayDatabase;Integrated Security=True;Encrypt=False" -SBFarmDBConnectionString "Data Source=Server2;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False" -Verbose
$myPassword = ConvertTo-SecureString "Password for servicebus service account" -AsPlainText -Force
Replace myServerName\myInstanceName with Server2 SQL connection string
Replace myServerName\myInstanceName with Server2 SQL connection stringAdd-SBHost -EnableFirewallRules $TRUE -RunAsPassword $myPassword -CertificateAutoGenerationKey $myKey -SBFarmDBConnectionString "Data Source=myServerName\myInstanceName;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False"
Change “domain\account” to your Domain\serviceaccount
Use the key you got from Server1 when you ran (Get-SBNamespace | Select-Object Name, PrimarySymmetricKey )Restore-WFFarm -RunAsAccount "domain\account" -InstanceDBConnectionString "Data Source=Server2;Initial Catalog=WFInstanceManagementDB;Integrated Security=True;Asynchronous Processing=True;Encrypt=False" -ResourceDBConnectionString "Data Source=Server2;Initial Catalog=WFResourceManagementDB;Integrated Security=True;Asynchronous Processing=True;Encrypt=False" -WFFarmDBConnectionString "Data Source=Server2;Initial Catalog=WFManagementDB;Integrated Security=True;Encrypt=False" -InstanceStateSyncTime "Friday, Jan 24, 2020 06:30:00 PM" -ConsistencyVerifierLogPath "c:\temp\log.txt" -CertificateAutoGenerationKey $myKey -Verbose –SkipConsistencyVerification
Set-SBNamespace -Name "WorkflowDefaultNamespace" -PrimarySymmetricKey "KEY" Set-SBNamespace -Name "ZervicePoint" -PrimarySymmetricKey "KEY"
$SBClientConfiguration = Get-SBClientConfiguration -Namespaces "WorkflowDefaultNamespace" -Verbose;
Add-WFHost -WFFarmDBConnectionString "Data Source=Server2;Initial Catalog=WFManagementDB;Integrated Security=True;Encrypt=False" -RunAsPassword $myPassword -EnableFirewallRules $TRUE -CertificateAutoGenerationKey $myKey -SBClientConfiguration $SBClientConfiguration –Verbose
-
Test and verify
Get-WFFarm Get-WFFarmStatus Get-SBFarm Get-SBFarmStatus
Restart service ZevicePoint Process Service
Restart-Service ProcessSystem
Create a test order and verify that everything is correct.