This guide was written to explain the overall migration process of migrating from The Things Network V2 to The Things Stack Community Edition in a several easy-to-follow steps.
Note:Since version 3.13 (released in May, 2021), The Things Network V2 routes traffic back and forth to The Things Stack Community Edition. When migrating your gateways to The Things Stack Community Edition, the coverage of the public community network won’t be impacted.
The Things Stack Community Edition is a LoRaWAN Network Server which is free to use for The Things Network community members. The Community Edition is designed for testing and evaluating LoRaWAN projects and is managed by The Things Industries. The Community Edition comes without guarantees and only includes community support, hence is not suitable for commercial usage. Join The Things Network Forum or Slack for community support.
For commercial LoRaWAN projects, it is recommended to use an SLA-backed version of The Things Stack, as it includes professional support. Click here to learn more.
Generally, the process of migrating from The Things Network V2 to The Things Stack Community Edition depends on few things:
- Type of devices you are using - ABP or OTAA
- If you are able to migrate your gateway at the moment, or you want to use Packet Broker to route your traffic (and migrate your gateway later)
- How many devices you wish to migrate, i.e. if you want to migrate them one by one or in bulk
- If you wish to migrate your devices with or without an active session from V2
Let us assume that your gateway and device are connected to The Things Network V2.
In this section, we will first consider migrating your end device, then your gateway to The Things Stack Community Edition. Along the way, we will highlight differences between the aforementioned use cases and recommend some best practices. You will also need to add your applications, integrations and payload formatters in The Things Stack Community Edition.
Video Migrate from The Things Network V2 to The Things Stack #
Log in to The Things Stack Community Edition #
To be able to continue following steps below, you first need to log in to The Things Stack Community Edition Console by first selecting a cluster that is closest to you geographically. You can then log in with your The Things Network credentials via The Things ID.
Add an application in The Things Stack Community Edition #
To migrate your end device, you first need to add an application on the The Things Stack Community Edition. The
Application ID does not neccessarily have to be the same as the one in The Things Network V2.
Add your payload formatters and integrations #
After adding an application in The Things Stack Community Edition, you also need to re-add the associated elements, like payload formatters (known as coders and decoders in The Things Network V2) and integrations. The concept remained the same as in The Things Network V2, with slight improvements.
The format of payload coders and decoders from the The Things Network V2 is still supported in The Things Stack Community Edition.
Ready for Migration #
Next, you need to migrate your end device(s) to The Things Stack Community Edition. Depending on the number of devices you want to migrate, choose the right method for the migration.
Info:This guide refers only to The Things Network V2 and The Things Stack Community Edition deployments. The full migration process that covers all V2 and The Things Stack deployments is described here.
Migrating a single end device can be easily done through The Things Stack Community Edition Console. This is convenient if you have a small number of devices, so you can migrate them one by one. See Migrate End Devices using The Things Stack Community Edition Console guide for details.
Migrating end devices in bulk can only be performed with the
ttn-lw-migrate tool. See Migrate End Devices using the Migration Tool guide for details.
Note:We highly recommend to test the migration on a single end device or a small batch of end devices first, just to make sure the migration process is succesful and that you are getting an expected result.
Depending on your use case, you might want to: