---
title: Managing the topology
description: The following sections describe common topology management operations.
component: pingdirectory
version: 11.0
page_id: pingdirectory:pingdirectory_server_administration_guide:pd_ds_manage_topology
canonical_url: https://docs.pingidentity.com/pingdirectory/11.0/pingdirectory_server_administration_guide/pd_ds_manage_topology.html
revdate: September 13, 2023
page_aliases: ["pd_ds_add_server_to_topology.adoc", "pd_ds_replace_data_for_replicating_domain.adoc"]
section_ids:
  adding-a-server-to-the-topology: Adding a server to the topology
  before-you-begin: Before you begin
  about-this-task: About this task
  steps: Steps
  example: Example:
  example-2: Example:
  replacing-the-data-for-a-replicating-domain: Replacing the data for a replicating domain
  about-this-task-2: About this task
  steps-2: Steps
  example-3: Example:
  result: Result:
  example-4: Example:
  example-5: Example:
  example-6: Example:
---

# Managing the topology

The following sections describe common topology management operations.

When enabling or disabling replication within a topology that contains multiple product versions, you must run the `dsreplication` tool from the server root location of a member of the topology that has the oldest product version.

## Adding a server to the topology

### Before you begin

You must:

* Have an existing PingDirectory server topology.

* Ensure that more than 50% of servers in the topology and the new server are online.

### About this task

The commands are identical for initial enablement between two servers where one server contains data for the replication domain stored in the `userRoot` backend. If database encryption is being used on the servers in the topology, the server being initialized must have a copy of the `encryption-settings` backend from the source server.

### Steps

1. To enable replication for the base distinguished name (DN), or base DNs, run `dsreplication enable` using an existing server as `host1` and the new server as `host2`.

   #### Example:

   ```shell
   $ bin/dsreplication enable \
     --host1 austin01.example.com --port1 1389 \
     --bindDN1 "cn=Directory Manager" --bindPassword1 password \
     --replicationPort1 8989 --host2 austin03.example.com --port2 1389 \
     --bindDN2 "cn=Directory Manager" --bindPassword2 password \
     --replicationPort2 8989 --baseDN dc=example,dc=com --adminUID admin \
     --adminPassword password --no-prompt
   ```

2. (Optional) To compare the configurations between the two hosts used in the `dsreplication enable` command, run `config-diff`.

   |   |                                                                                                 |
   | - | ----------------------------------------------------------------------------------------------- |
   |   | Ensure settings are consistent across the topology and are also consistent with the new system. |

   #### Example:

   ```shell
   $ bin/config-diff --sourceLocal \
     --targetHost austin03.example.com \
     --targetBindDN "cn=directory manager" \
     --targetBindPassword pass --targetPort 1389
   ```

## Replacing the data for a replicating domain

### About this task

In case the data for the entire replication domain, such as the backend, needs to be replaced, perform the following steps:

### Steps

1. With all servers online, run `dsreplication pre-external-initialization` against any server in the topology.

   #### Example:

   ```shell
   $ bin/dsreplication pre-external-initialization --hostname austin01.example.com \
      --port 1389 --baseDN dc=example,dc=com --adminUID admin \
      --adminPassword password --no-prompt
   ```

   #### Result:

   Replication is stopped for the domain. No writes are made by clients to any of the servers.

2. To replace the data for `dc=example,dc=com`, use `import-ldif`.

   1. (Optional) To overwrite the existing data for the domain, use the `--overwriteExistingEntries` option.

   2. (Optional) To ensure that the input LDIF is free of any replication attributes, use the `--excludeReplication` option.

      #### Example:

      In this example, you perform the `import-ldif` with the server offline using the `--excludeReplication` and `--overwriteExistingEntries` options.

      ```shell
      $ bin/import-ldif --ldifFile new-data.ldif --backendID userRoot --excludeReplication --overwriteExistingEntries
      ```

3. To initialize the other servers in the topology, run `dsreplication initialize` using the server that has the new data as the source host.

   #### Example:

   ```shell
   $ bin/dsreplication initialize --hostSource austin01.example.com --portSource 1389 \
      --hostDestination budapest01.example.com --portDestination 1389 \
      --adminUID admin --adminPassword password --baseDN dc=example,dc=com \
      --no-prompt
   ```

4. From any server in the topology, run `dsreplication post-external-initialization` once.

   |   |                                             |
   | - | ------------------------------------------- |
   |   | All servers in the topology must be online. |

   #### Example:

   ```shell
   $ bin/dsreplication post-external-initialization --hostname austin01.example.com \
      --port 1389 --baseDN dc=example,dc=com --adminUID admin \
      --adminPassword password --no-prompt
   ```
