> For the complete documentation index, see [llms.txt](https://help.security.gallagher.com/knowledge-hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.security.gallagher.com/knowledge-hub/deployment-resources/engineering-and-design-reference/migrate-and-upgrade/migrate-command-centre-to-a-new-server.md).

# Migrate Command Centre to a new server

Move Command Centre to a new server and update controller addressing, databases, and customizations.

### Server name and IP address

Set the server name and IP address **before** installing Command Centre. The name can be changed later, but that complicates Certificates, Workstation connections, REST API connections, EDI imports, and Controller connections. See [Server - Changing the Command Centre Server Name](https://github.com/GGLSecDev/gitbook-spaces/tree/main/tech-support/products/cc-software/configure/server-configuration/server-changing-the-command-centre-ser.md).

### Migrate to a new server with a different IP

The controllers must learn the new address before they will communicate.

Leave the controller software version on the new server at "none selected" or at its current version. Wait until the controller is online, then upgrade the software version. Ensure **DIP switches 2 and 3 are OFF**.

On the **original** server, set the new address under the controller's **Server Address** tab, check **Use different IP for Server**, and enter the new address. If the controller's own IP address and IP configuration need to change, do that at the same point.

![Controller 6000 Properties, Server Address tab, with Use different IP for Server ticked and the new server address entered](https://3862776825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Feem9HLOjc53n2VxEz3Cq%2Fuploads%2Fuptix6anSnnVdMa2lLc5%2FSECHUB-iut-migration-01-controller-server-address-tab.png?alt=media\&token=cef2e9a0-509d-42ad-ab05-7bc70c83687c)

Controller Defaults (File → Server Properties → Controller Defaults) apply system wide. **Default Server Address** affects all controllers. **Attempt to automatically detect the Command Centre Server IP address** enables auto discovery. **Use a different address** accepts a DNS hostname or an IP address. A controller set to "Default" uses the global default address.

![Controller Defaults, Default Server Address, showing Attempt to automatically detect the Command Centre Server IP address selected and the Use a different address field](https://3862776825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Feem9HLOjc53n2VxEz3Cq%2Fuploads%2F0gOgUgdCcMDa6KGkTwfj%2FSECHUB-iut-migration-02-controller-defaults-server-address.png?alt=media\&token=19602d0f-ced1-4b6e-9913-d4ec7211b09c)

{% hint style="warning" %}
**Stop and disable the Controller Service on the original server**, so both servers are not talking to the same controllers. Two running Controller Services generate errors that the controller is being contacted by two servers. Overriding the controller to disable communications is not sufficient.
{% endhint %}

### Upgrade while migrating

* Always upgrade the original server as high as is practical first.
* Do not attach databases from an older version to a newer server.
* If the original server cannot be upgraded, use an interim server.

Take a safe copy of the databases before upgrading further.

### Configuration files

This covers mainly third party configuration files. Some Command Centre customisations do have individual files that should be backed up when moving to a new server. Refer to the documentation that comes with the customisations.

Older systems that used the Import/Export feature, which has effectively been superseded by the EDI interface, need the Import/Export folders copied from wherever they are on the old server to the new server. Update the permissions on those folders as appropriate.

{% hint style="warning" %}
**Important.** Fully read the instructions and warnings in the customisations before performing an upgrade.
{% endhint %}

### Customizations still installed on the original server

This is the case where the database backups, or just a backup, of the original server were taken with the customisations **still installed**. That is not ideal, but it is not usually a complete showstopper.

**Working with detached databases.** On the new server, with blank databases, install the customisations **before attaching** the databases that were detached from the original. This should allow you to start the services and work forward.

{% hint style="warning" %}
**Important.** The customisations being installed need to be the **same version** as the one installed on the original server.
{% endhint %}

**Working with a backup.** If you are working with a backup from the original server, the backup utility **will not allow you to restore without removing the customisations**. This can be overcome with SQL Management Studio.

{% hint style="info" %}
This only works with versions 7.70 and above.
{% endhint %}

1. Start SQL Management Studio and connect to the SQL instance.
2. Right-click on **Databases** and select **Restore Database...**

   ![SQL Server Management Studio Object Explorer with the Databases right-click menu open and Restore Database highlighted](https://3862776825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Feem9HLOjc53n2VxEz3Cq%2Fuploads%2FOU15B2IVVpAOFPZXSPSf%2FSECHUB-iut-migration-03-ssms-restore-database-menu.png?alt=media\&token=a15de600-9194-4947-911a-6be77f3bc4af)
3. Select **General**, then **Device**, then browse (...) to the backup you wish to restore. Select **Files** and click **Add**. Select your backup file and click **OK**.

   ![Restore Database dialog with Device selected, the Select backup devices dialog set to File media type, and the Locate Backup File browser showing Gallagher.FTBackup selected under C:\Backups](https://3862776825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Feem9HLOjc53n2VxEz3Cq%2Fuploads%2FkOrkCcCwhupnVQ0ZxyUG%2FSECHUB-iut-migration-04-ssms-select-backup-device-file.png?alt=media\&token=25a8e91f-288b-4b26-8364-bb18b12169bd)
4. SQL Management Studio processes the file and prompts with the restore-plan screen. Click **OK** to continue.

   ![Restore Database dialog for CCFTCentral showing the backup device path, destination database and the restore plan with the full backup set ticked](https://3862776825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Feem9HLOjc53n2VxEz3Cq%2Fuploads%2F8S4rvVHOfvYzX1FSy7Ai%2FSECHUB-iut-migration-05-ssms-restore-plan-ccftcentral.png?alt=media\&token=1de80a9e-5879-43a8-8539-889b0215fd38)
5. You should be presented with the confirmation dialog.

   ![Microsoft SQL Server Management Studio message: Database 'CCFTCentral' restored successfully](https://3862776825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Feem9HLOjc53n2VxEz3Cq%2Fuploads%2Fk1VrmbHtK10quHkMvhXE%2FSECHUB-iut-migration-06-ssms-restored-successfully.png?alt=media\&token=d4ff3c6a-1b59-4aec-b677-d68c7d9a8b33)

You should now be able to start the services. You may need to apply the recovery code first.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.security.gallagher.com/knowledge-hub/deployment-resources/engineering-and-design-reference/migrate-and-upgrade/migrate-command-centre-to-a-new-server.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
