On September 1st we moved more than 30,000 accounts off the platform they had lived on for years.
The first users to log in after the move used the same email and password as always. The app was new, but it already knew them: their clubs, their roles and their history. From the first login, they felt at home.
More than 30,000 accounts moved in one night. The number was the easy part. The hard part was everything connected to each account: its relations with all systems.
The connections were the hard part
Every account is connected to a lot of other things. A user can have platform roles: player, coach, referee, club director, event producer, supporter or guardian. They can be in several clubs, and in each one they are a player, a coach or staff. One account can manage other accounts, and each managed account is still its own user.
Think of one user who coaches an under-14 team at one club, plays for an adult team at another and manages the accounts of two other users. All of that is one account.
We went deep into understanding this data. Before the migration, we had already rebuilt the data structure for the new platform, and that made the move harder. Instead of copying the data, we had to rebuild it to fit the new structure, step by step and in the right order.
- Step 1Seasons
- Step 2Users
- Step 3Assigned roles
- Step 4Managed accounts
- Step 5Clubs
- Step 6Club memberships
- Step 7XP and career stats
Moving identity, documents and assets
Every user also had to move to a new identity pool. The problem: you cannot copy passwords out of the old one. It is built so passwords never leave it. And asking 30,000 users to reset their password right when clubs sign up for the new season was not an option.
Their data was already waiting on the new platform. Only their identity had to catch up, and it did when they typed the password they already had. When a user signs in and the new identity pool does not know them yet, we check their password against the old identity pool. If it matches, we create their account in the new identity pool with the same password and log them in. We also know which users just moved over, so a user who has used the app for four years gets a special welcome screen.
The files moved too. Documents, club logos and player avatars were carried over and linked to the right users and clubs, so on the first login every avatar and logo was already in place.
To the user, it was just a normal login. That is the whole point of “without them noticing”.
How we knew we got it right
We thought about this migration from the user's side. Every match a user played, and the XP they earned, is their history, and they want to keep it. Then we waited for the first reactions.