# Migrate your CCT token pools from CCIP v1 to v2 (Burn & Mint) using Foundry
Source: https://docs.chain.link/ccip/evm/tutorials/cross-chain-tokens/migrate-from-v1-to-v2-burn-mint-foundry
Last Updated: 2026-06-11

> For the complete documentation index, see [llms.txt](/llms.txt).

## Guide Versions

- [Foundry (Burn & Mint migration)](/ccip/evm/tutorials/cross-chain-tokens/migrate-from-v1-to-v2-burn-mint-foundry)

- [Hardhat (Burn & Mint migration)](/ccip/evm/tutorials/cross-chain-tokens/migrate-from-v1-to-v2-burn-mint-hardhat)

This migration guide helps you upgrade a deployed **Burn & Mint** Cross-Chain Token (CCT) setup from **CCIP v1 (1.5.x / 1.6.x)** to **CCIP 2.0**, while keeping your existing token addresses and minimizing disruption.

This guide uses Foundry scripts inside our [docs-cct-foundry](https://github.com/smartcontractkit/docs-cct-foundry) repository.

> **NOTE: Finality and v2 features are optional**

In this guide you will:

1. Confirm prerequisites and record your existing CCIP v1 deployment details.
2. Deploy new CCIP 2.0 `Burn Mint` token pools on each chain.
3. Configure the v2 pools to accept messages from **both** the old v1 pools and the new v2 pools.
4. Cut over CCIP routing by calling [`TokenAdminRegistry`](https://github.com/smartcontractkit/chainlink-ccip/tree/contracts-ccip-v2.0.0/chains/evm/contracts/tokenAdminRegistry/TokenAdminRegistry.sol).setPool on each chain.
5. Validate transfers end-to-end, then optionally clean up legacy configuration.

## Before You Begin

## Migration Guide

> **TIP: Set these variables once for cleaner copy/paste**
>
> This guide uses explicit addresses so you don’t need local `script/deployments/` files. Start by exporting
> your token addresses, then we’ll export the v1/v2 pool addresses as we discover them.
>
> ```bash filename="Terminal"
> export ETHEREUM_SEPOLIA_TOKEN=0x...
> export ETHEREUM_TESTNET_SEPOLIA_ARBITRUM_1_TOKEN=0x...
> ```

> **CAUTION: Educational Example Disclaimer**
>
> This page includes an educational example to use a Chainlink system, product, or service and is provided to
> demonstrate how to interact with Chainlink's systems, products, and services to integrate them into your own. This
> template is provided "AS IS" and "AS AVAILABLE" without warranties of any kind, it has not been audited, and it may be
> missing key checks or error handling to make the usage of the system, product or service more clear. Do not use the
> code in this example in a production environment without completing your own audits and application of best practices.
> Neither Chainlink Labs, the Chainlink Foundation, nor Chainlink node operators are responsible for unintended outputs
> that are generated due to errors in code.