---
title: Change, upgrade, or remove OpenLM Router
description: Upgrade OpenLM Router in OpenLM Platform, move it to a new host, or remove it in the right order so that no FlexLM client loses its license server.
product: OpenLM Platform
---

The Router sits in the license path, so the order of the steps matters when you upgrade, move, or remove it. Clients that still point at a Router you stopped can't check out licenses. This page gives the safe order for each change.

## Before you begin

Confirm these prerequisites:

- You can run `docker compose` on the Router host, in the directory that holds your `docker-compose.yml` and `.env` files.
- You know which clients point at the Router. They use `port@router-host` in `LM_LICENSE_FILE`, in a vendor-specific variable, or in a `licpath.lic` file. See [Point clients at the Router](https://www.openlm.com/documentation/cloud/deployment-operations/router/configuration#point-clients-at-the-router).
- You can open **LicOps Configuration** in OpenLM Platform. It is under **Licenses and Features** in the **Navigation** menu.

## Upgrade OpenLM Router

To upgrade the Router to a newer build:

1. Pin the new tag of each Router image in `docker-compose.yml`. To see which builds exist, see [Find the newest build](https://www.openlm.com/documentation/cloud/deployment-operations/router/deployment#find-the-available-builds). OpenLM releases the two images separately, so their tags can differ.
2. Pull the images and recreate the containers:

   ```bash
   docker compose pull routerapi routerui
   docker compose up -d routerapi routerui
   ```

3. Confirm that the Router applied its configuration again:

   ```bash
   curl http://localhost:8100/readyz
   ```

   When `boundPorts` matches `desiredPorts`, the Router is ready for clients.

The configuration lives in MongoDB and in OpenLM Platform, not in the container. It survives the replacement, and the listen ports reopen as the Router starts. Expect the same brief interruption as any other restart: open sessions drop and FlexLM clients reconnect.

## Change a failover pair or the Platform connection

You change a failover pair in **LicOps Configuration**, not on the Router. See [Define a failover pair](https://www.openlm.com/documentation/cloud/deployment-operations/router/configuration#define-a-failover-pair). To change the Platform connection, open the Router UI and update **Platform Connection**. See [Connect the Router to the Platform](https://www.openlm.com/documentation/cloud/deployment-operations/router/configuration#connect-the-router-to-openlm-platform).

## Move OpenLM Router to a new host

A new Router has its own identity. The Router creates it on the first start and stores it in MongoDB, and OpenLM Platform treats a Router with a new identity as a different Router. To move without an outage, run both Routers for a short time and move the clients in between:

1. Deploy the new Router on the new host with its own empty MongoDB database. See [Deploy OpenLM Router](https://www.openlm.com/documentation/cloud/deployment-operations/router/deployment).
2. Create a new Router client in **Identity** for it, and connect it to OpenLM Platform. See [Connect the Router to the Platform](https://www.openlm.com/documentation/cloud/deployment-operations/router/configuration#connect-the-router-to-openlm-platform).
3. In **LicOps Configuration**, define the failover pairs again. The Platform creates an empty starting configuration for a new Router. Use new listen ports, or the same ports if the old Router is stopped first.
4. Point a test workstation at the new Router and run `lmutil lmstat`. See [Point clients at the Router](https://www.openlm.com/documentation/cloud/deployment-operations/router/configuration#point-clients-at-the-router).
5. Point the remaining clients at the new Router.
6. Remove the old Router as described in [Remove OpenLM Router](#remove-openlm-router).

**LicOps Configuration** works with one Router at a time: the one that reported most recently. While both Routers report, the page can switch between them. Finish the move quickly and stop the old Router as soon as the clients have moved. See [Why does LicOps Configuration show the wrong Router?](https://www.openlm.com/documentation/cloud/deployment-operations/router/troubleshooting#why-does-licops-configuration-show-the-wrong-router).

## Remove OpenLM Router

To take a Router out of service, repoint the clients first and stop the Router last. Do the steps in this order:

1. Point every client back at the license server, or at another Router. Change `LM_LICENSE_FILE`, the vendor-specific variables, and any `licpath.lic` files, as described in [Point clients at the Router](https://www.openlm.com/documentation/cloud/deployment-operations/router/configuration#point-clients-at-the-router). Check each application with `lmutil lmstat` against the license server.
2. Check that no client still uses the Router. Clients that keep a direct fallback entry keep working while the Router is down. Clients without one lose their licenses as soon as you stop it.
3. Delete the failover pairs that you no longer need. In **LicOps Configuration**, select a pair in **Port Mappings**, then select **Delete**.
4. Stop the Router. A retired Router that keeps running keeps reporting to OpenLM Platform, and **LicOps Configuration** then shows that Router's pairs.

   ```bash
   docker compose stop
   ```

5. Delete the Router's identity client. In OpenLM Platform, select **Navigation**, then **Identity**. Select **Authorization**, select the entry for this Router, select **Delete**, and confirm. After you delete it, nothing can sign in with that authorization file.
6. Remove the containers.

   ```bash
   docker compose down
   ```

   This keeps the Docker volumes, so the MongoDB and Redis data stay on the host. Add `-v` only when you are sure that you will never reuse this Router. MongoDB holds the Router's identity, its encrypted Platform connection, and its failover history. If you delete the database, a Router you start later is a different Router.

If you plan to start the same Router again, keep the MongoDB volume and don't delete the identity client in step 5.

:::note[Next step]
To add the Router back or to protect another application, continue to [Configure OpenLM Router](https://www.openlm.com/documentation/cloud/deployment-operations/router/configuration).
:::

## Related

- [Deploy OpenLM Router](https://www.openlm.com/documentation/cloud/deployment-operations/router/deployment)
- [Operate OpenLM Router](https://www.openlm.com/documentation/cloud/deployment-operations/router/operations)
- [Troubleshoot OpenLM Router](https://www.openlm.com/documentation/cloud/deployment-operations/router/troubleshooting)
