Illustrative photo by Stem List on Unsplash, not a photo of the players discussed.
Three players can change organizations without becoming three new teammates.
On March 20, 2025, NAVI announced that Uxako, Hiarka and zhidan, previously of GoNext Esports, would represent NAVI in Apex Legends. Its announcement also listed Esteves33 as coach and recalled the players' ALGS: 2024 Championship victory earlier that February.
This is a historical example, not a current-roster update. For anyone building an esports tracker, it exposes a useful modeling problem: the organization label changed, but the player trio continued.
Start with three separate questions
Before choosing tables, decide what your page is trying to describe:
- Which people were in a lineup?
- Which organization did that lineup represent at the relevant time?
- Which competition entry earned a particular result?
Those questions overlap, but they are not interchangeable. A profile showing today's organization cannot reliably tell you the organization under which a player won a past tournament.
A practical model might separate these records:
| Record | Captures | Avoids |
|---|---|---|
| Player | Stable identity plus display-name history | Treating a handle change as a new person |
| Lineup snapshot | Player IDs observed together at a dated point | Treating a new organization as automatically a new lineup |
| Representation evidence | Organization, lineup, source and relevant dates | Turning an announcement date into an invented contract start |
| Competition entry | Event, represented organization and actual participants | Crediting an old result to a player's newest employer |
These are proposed design choices, not a description of NAVI's internal systems.
Keep the evidence date honest
A minimal evidence record could look like this:
{
"game": "Apex Legends",
"organization_announced": "NAVI",
"players_named": ["Uxako", "Hiarka", "zhidan"],
"coach_named": "Esteves33",
"announcement_date": "2025-03-20",
"contract_effective_date": null,
"source_url": "https://navi.gg/en/publications/apex-navi-new-team-march-25"
}
The null is intentional. The public announcement establishes what NAVI announced on March 20. It does not, by itself, establish the effective date of every underlying contract.
For a production tracker, resolve handles to stable player IDs and retain the source text used for that resolution. The display names above make the example readable; they are not a recommendation to use names as database primary keys.
Also keep coaches distinct from active player slots. A useful continuity view can show both without counting a coach as a fourth Apex player.
Preserve the result as it happened
The championship happened before the NAVI announcement. The result should remain attached to the historical competition entry rather than being relabeled whenever the players' current organization changes.
A player page can still say that the individual won that championship. An organization page answers a different question: what did entries representing that organization achieve?
Both views are valuable. The error is letting one silently stand in for the other.
This matters for ordinary fan-facing features too. A roster-change notification should be able to distinguish “same trio, new organization” from “one player replaced” and “a completely new lineup.” Otherwise, an accurate database can still produce a misleading headline.
Test the story your joins produce
Before shipping the tracker, try these fixtures:
- Updating a player's current organization leaves older competition entries unchanged.
- The same three stable player IDs under another organization register player continuity and an organization change.
- Replacing one active player creates a different lineup snapshot.
- A coach-only change is visible without changing the active player count.
- An unknown effective date stays unknown; it is not filled from a nearby announcement.
- A historical page displays its as-of date rather than presenting itself as today's roster.
These checks establish data consistency, not team chemistry or future performance. A shared lineup does not prove that tactics, roles, support or results stayed the same. Those need their own evidence.
My preference is simple: preserve the people, the badge and the competition entry separately, then make the UI say which one changed.
If you were building a roster notification, which would you show first: player continuity or organization change?
Primary source: NAVI's March 20, 2025 announcement.
Full KRI ZEK Q1 2025 roster retrospective.
Download Altered Brilliance: https://play.google.com/store/apps/details?id=tech.krizek.alteredbrilliance
Global website: https://global.krizek.tech
Pre-register for Arzenal Human Health: https://play.google.com/store/apps/details?id=tech.krizek.arzenal
Join The Power Of Gaming: https://discord.gg/sbYSPcCqJn
Top comments (0)