> For the complete documentation index, see [llms.txt](https://docs.lagoon.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lagoon.finance/vault/how-to/migrate-an-existing-vault-into-a-new-lagoon-vault.md).

# Migrate an existing vault into a new Lagoon vault

This tutorial will explain how to migrate an existing vault or fund into a Lagoon vault without needing an action from your shareholders.

Since v0.6.0, a vault can be deployed with a non-zero **Initial NAV**: the vault starts already valued at the NAV of your deprecated vault, and the matching shares are pre-minted to the curator address. The migration becomes a bookkeeping operation, there is no deposit request and no valuation trick involved.

Prerequisites:

* having the capacity to move the assets of the deprecated vault to the curator address of the future Lagoon vault.
* the deprecated vault shares should not be used in DeFi.

## Step 1: Pause the deprecated vault and take a snapshot of its shares repartition

We advise to pause the vault or at least freeze movement of shares to avoid loss of funds from your users.

In our case, here is the result of our snapshot:

<table><thead><tr><th width="249">address</th><th>amount of shares</th><th>% of the vault</th></tr></thead><tbody><tr><td>0x123</td><td>4</td><td>40%</td></tr><tr><td>0x456</td><td>6</td><td>60%</td></tr><tr><td>TOTAL</td><td>10</td><td>100%</td></tr></tbody></table>

*Concretely, the address 0x123 owns 4 shares out of the 10 total shares, which is equivalent to 40%.*

## Step 2: Compute the NAV of the deprecated vault

This is the value you will enter as the Initial NAV of the new vault, expressed in the underlying.

In our case, the deprecated vault is worth 100 USDC, so the value is `100`.

{% hint style="info" %}
The interface takes the amount as you would write it, `100` for 100 USDC. If you deploy programmatically, the `initialTotalAssets` parameter takes the raw amount instead, `100000000` for 100 USDC.
{% endhint %}

## Step 3: Create the Lagoon vault with an Initial NAV

[Follow this guide](/vault/deploy-your-vault.md) and set the **Initial NAV** field to the value computed at step 2. In our case, the vault address is 0xabc.

At initialization the vault sets its `totalAssets` to that value and mints the matching shares to the **curator address**, at a price per share of 1.

<figure><img src="https://2098527692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5vcVbvvRrtwZ0uaFrufF%2Fuploads%2Fgit-blob-dca792ee8d5f56553944dcd1098e9454decf0d47%2Finitial-nav-deploy.png?alt=media" alt=""><figcaption><p>The Initial NAV field of the deployment form</p></figcaption></figure>

{% hint style="danger" %}
The Initial NAV is trusted as is: the price per share guardrails and the valuation checks only apply to the later updates. A wrong value permanently misprices every share of the vault.
{% endhint %}

{% hint style="warning" %}
No asset is transferred by this operation. The vault underlying balance stays at 0 and the curator address is expected to hold the assets, which is what step 4 is about.
{% endhint %}

## Step 4: Move the assets to the curator address

Transfer the assets of the deprecated vault to the curator address of the new vault.

They do not have to be in the underlying: the curator address can receive the positions in kind, as long as their value matches the NAV you seeded at step 3. Once the migration is done, your Valuation Provider [updates the valuation](/vault/how-to/update-the-vault-valuation-and-settle-requests.md) as it would for any other vault.

## Step 5: Distribute the shares to the shareholders of the previous vault

The shares are already on the curator address, you only have to distribute them. Be careful, frontend could be compromised, review the transactions carefully. We are going to use the [disperse.app](https://disperse.app) but if you are more comfortable using blockchain explorers you can enter `disperse.app` in Etherscan to find directly the smart contract to interact with.

The address of the token you want to distribute is the address of the shares which is the address of the vault. In our case, 0xabc.

We will now distribute the 100 shares held by the curator address: 40 to the address 0x123 and 60 to the address 0x456. In disperse.app frontend it will be something like this:

<figure><img src="https://2098527692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5vcVbvvRrtwZ0uaFrufF%2Fuploads%2FO2Z447eBreGWFM3WejsM%2FScreenshot%202025-05-19%20at%2012.21.06.png?alt=media&amp;token=c24ba835-b53f-416d-8594-609337c79ce1" alt="" width="375"><figcaption></figcaption></figure>

You can now submit and execute the transaction.

## Final notes:

* the Lagoon Vault performance metrics will start from a price per share of 1 at deployment, meaning that you will have to reconcile the deprecated vault and the vault history to have the full picture of your performance.
* the deprecated vault shares will be worth 0, meaning that you should not do a migration on a vault whose shares are used in DeFi.
