We want to perform a large migration on a chain composed with standard pallets ( balance, babe, ... ) to a most recent substrate tag which is polkadot-v0.9.18.

Is there a way to call all the migrations at once or do we need to upgrade version by version until we are at the desired one ?

If yes how do we trigger all those updates at once in our runtime directly ? ( not like nick pallet one )

  • Please share links to your source and describe your exact flow for performing migrations? 3.0.0 to polkadot-v0.9.18 included many migrations IIRC, and thus you will need to make sure you capture those that might have been removed in the meantime, as is the practice when no longer needed I believe.
    – Nuke
    Commented Apr 29, 2022 at 14:39
  • We can take for example the node of the substrate repository. Starting the network with 3.0.0 and wanting to upgrade to polkadot-v0.9.18. That will fit many scenario for the standard pallet library upgrade.
    – Dubs
    Commented Apr 30, 2022 at 5:46

1 Answer 1


In general the complexity of your migration depends on how old your current Substrate instance is from the current Substrate instance.

Substrate / Polkadot provides migration logic for each new Polkadot release, however, these migrations are not necessarily designed to be merged into one super-migration, nor are they really indexed in a way for users from arbitrary version A to migrate to arbitrary version B.

The best example of a hardcore migration can be found with Edgeware:


Where all migrations from point A to B were reviewed, evaluated, and re-executed on the chain to get them fully up to date. This would require multiple different runtime upgrades and migrations, basically re-executing all the historical upgrades one by one.

My suggestion:

  • If you have launched a live chain, you should be upgrading that chain at the same cadence as Polkadot launches upgrades, making sure to make the appropriate migrations each time.

  • If your chain is just a testnet, probably the best thing to do is just reset your chain, and migrate any specific data you want manually onto the new chain.

  • So basically if we take the same polkadot release ( polkadot-v0.8.29 ) that is equal to the latest major substrate 3.0.0, we can then upgrade the node by incrementing the polkadot release one by one ( with runtime change of course ) and it would work as a proper way to migrate.
    – Dubs
    Commented Apr 30, 2022 at 6:19
  • Also including runtime migrations which were included in those Polkadot releases, but yeah, that should work. Stuff like this: github.com/paritytech/polkadot/pull/5374/files
    – Shawn Tabrizi
    Commented Apr 30, 2022 at 6:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.