---
title: Migrating a Node Operator Record
slug: migrating-node-operators
description: Consolidate or rotate node operator principals with migrate-node-operator-directly — atomically moving nodes and allowance onto a new operator record, with no NNS proposal and no hardware changes.
tags:
  - node-provider
  - maintenance
  - runbook
  - registry
  - governance
date: 2026-07-22
related:
  - node-provider-maintenance
  - changing-node-provider-or-dc-principal
  - node-provider-documentation
  - removing-node-from-registry
---

A **node operator** is a principal authorised to manage a set of
nodes that belong to a given node provider in a given data center.
Over time a provider can end up with several legacy operator records,
need to retire the HSM that holds an operator key, or want to rotate
that key for security. Node operator migration folds one operator
record into another: it repoints every node and moves all of the
allowance onto the target record, atomically, in the registry. No
NNS proposal is required, and no hardware is restarted or relocated
&mdash; only the registry records change.

> [!NOTE]
> Migration is a direct registry call, not a governance action. It
> is authenticated by the node provider that owns the records, and
> it takes effect immediately once accepted.

## When to use this

- **HSM retirement or replacement** &mdash; move the nodes off an
  operator key held on a device you are decommissioning.
- **Consolidating legacy records** &mdash; collapse several old
  operator records under a single principal.
- **Key rotation** &mdash; move nodes onto a freshly generated
  operator key for security.

## Before you start

The migration is subject to ownership, locality, and timing rules:

- Only the **node provider that owns the records** can initiate the
  migration.
- If the new (target) operator record already exists, it must belong
  to the **same node provider**.
- Both records must reside in the **same data center** (matching
  `dc_id`).
- The old operator record must have **existed for at least 12
  hours**. This is a spam-prevention measure, so a record cannot be
  created and immediately migrated away.

## Procedure

### Step 1 &mdash; Identify the two operator principals

Note the principal of the **old** node operator record (the one
being emptied) and the principal of the **new** node operator record
that will own the nodes afterwards.

### Step 2 &mdash; Set up authentication

Define an `AUTH` array with the node provider key that owns the
operator records. Use a PEM key file:

```bash
AUTH=(
  "--secret-key-pem"
  <path-to-key-pem>
)
```

or an HSM:

```bash
AUTH=(
  "--use-hsm"
  "--slot"
  <hsm-key-slot>
  "--key-id"
  <hsm-key-id>
  "--pin"
  <hsm-pin>
)
```

### Step 3 &mdash; Execute the migration

Run `migrate-node-operator-directly`, passing the old and new
operator principals from step 1:

```bash
ic-admin --nns-urls https://ic0.app ${AUTH[@]} migrate-node-operator-directly \
  --old-node-operator-id <old-node-operator-principal> \
  --new-node-operator-id <new-node-operator-principal>
```

## What the migration changes

The registry update is atomic. On success:

- Every node record whose `node_operator_id` matched the old record
  is repointed to the new operator principal.
- The new operator record is created or updated with the combined
  `node_allowance`, `rewardable_nodes`, and `max_rewardable_nodes`
  of both records.
- The old operator record is deleted.

The nodes themselves are untouched &mdash; nothing restarts, and no
machine moves.

## Verification

Confirm on the [IC Dashboard](https://dashboard.internetcomputer.org/)
that the affected nodes now list the new node operator, that the
allowance has carried over, and that the old operator record no
longer appears.

## Related

- [Node Provider Maintenance Guide](/wiki/node-provider-maintenance/) &mdash; the parent runbook.
- [Changing the Node Provider or Data-Center Principal](/wiki/changing-node-provider-or-dc-principal/) &mdash; the proposal-based flow for replacing a lost provider principal or operator HSM.
- [Node Provider Documentation](/wiki/node-provider-documentation/) &mdash; the role overview and the node operator concept.
- [Removing a Node From the Registry](/wiki/removing-node-from-registry/) &mdash; retiring nodes rather than moving them to another operator.
