Player Import, Merge & Management
As your club grows, duplicate player profiles are inevitable. A player signs up through self-service under "Mike Smith" and later gets imported as "Michael Smith." Left unchecked, duplicates fragment match history and skew ratings.
ServeLeague's player merge combines two profiles into one, transferring every match, rating snapshot, league membership, team assignment, and achievement atomically. This guide covers identifying duplicates, merging, and the broader admin tools for roster hygiene.
Identifying Duplicate Players
Before you can merge, you need to find the duplicates. There are a few common ways they appear:
- Name variations: "Bob Jones" vs "Robert Jones," or "Li Wei" vs "Wei Li"
- Re-imports: a CSV import creates a new profile because the name doesn't exactly match an existing one
- Multiple sign-ups: a player claims a new profile instead of finding their existing one
To spot duplicates, go to Admin → Players and use the search bar. Typing "smith" will surface all Smiths so you can compare.

[!TIP] Sort by rating or matches played. Duplicates often have lopsided numbers. One profile has 50 matches while the other has 3.
Understanding the Merge Process
A merge always involves two players:
| Role | What happens |
|---|---|
| Keep player | Survives the merge. Receives all matches, league memberships, team assignments, grades, achievements, and rating snapshots from the other player. Retains their own name, ratings, and profile. |
| Delete player | Removed after the merge. All their data is transferred to the keep player, then their profile is permanently deleted. |
Choose the keep player carefully. If one profile is linked to a user account (the player has logged in and claimed it), that should almost always be the keep player. The merge preview will show you which profile, if any, has a linked account.
What Exactly Gets Transferred?
The merge is atomic: either everything succeeds or nothing changes. Here's the full list of what moves from the deleted player to the kept player:
- Match references: every singles and doubles match
- League memberships: transferred unless the keep player is already in that league
- Team memberships & captaincies: same conflict-resolution as leagues
- Grade assignments: transferred or deduplicated by block
- Rating snapshots: merged by date and type
- Weekly rating gains: overlapping weeks are summed; unique weeks transfer
- Rating history: full progression timeline
- Achievements & milestones: deduplicated by type (see Achievements and Milestones)
- Club records: player, partner, and opponent references updated
- Drop-in data: check-ins and match results
- Activity feed: reassigned to the surviving profile
- Member record: transfers if the keep player doesn't already have one
[!IMPORTANT] A player who is currently in an active drop-in session (not yet completed or cancelled) cannot be merged. Wait for the session to finish first.
Step 1: Preview the Merge
Go to either player's profile in Admin → Players, then select Merge Player from the actions menu. You'll be prompted to search for the other player.
ServeLeague shows a merge preview comparing both profiles:

The preview displays:
- Name and ratings (singles, doubles, merit) for each player
- Match count: how many matches each profile has
- Linked user account: whether either profile is connected to a login
- Active status: whether the player is currently active or deactivated
Review this carefully. The keep player's name and ratings persist after the merge.
Step 2: Execute the Merge
Once you've reviewed the preview, click Merge Players. The operation:
- Transfers all match references to the keep player
- Resolves conflicts in leagues, teams, grades, and snapshots
- Sums overlapping weekly rating gains
- Moves the member record if applicable
- Deletes the duplicate profile
Everything happens in a single atomic transaction. If anything fails, the database rolls back, so there are no partial merges.

After the merge, you'll see a confirmation showing how many matches were reassigned.
[!TIP] After merging, you may want to re-finalize any sessions where the duplicated player had matches. This recalculates ratings with the consolidated match history.
Club Admin vs Super Admin Merge
ServeLeague offers merge capabilities at two levels:
Club Admin Merge
Available to any club administrator. Merges two player profiles within your club, the standard workflow described above.
- Accessible from Admin → Players → [Player] → Merge
- Both players must belong to the same club
Super Admin Merge
Available only to platform super admins, with two additional capabilities:
- Cross-club player merge: merge player profiles that may exist in different clubs (e.g., a player who was accidentally created in the wrong club)
- Account merge: merge two user accounts (not player profiles alone), transferring all club memberships, player links, and login credentials from one account to another

The super admin merge is available from Super Admin Panel → Commands. It accepts player IDs or email addresses and supports dry run mode for account merges.
Bulk Operations and Deactivation
Not every duplicate needs a merge. Sometimes you need to clean up your roster.
Deactivating Players
Deactivation is a soft delete: the player is hidden from active lists and match submission, but their history is preserved. Deactivating also lapses their linked member record.

To deactivate a player:
- Go to Admin → Players
- Find the player and open their profile
- Click Deactivate (or switch their active status)
Deactivated players can be reactivated at any time. Use this for players who have left the club or for seasonal players between competition periods.
Bulk Delete
For cleaning up test data or removing profiles with no match history, use bulk delete:
- In Admin → Players, select multiple players using the checkboxes
- Click Delete Selected
- Confirm the operation

[!WARNING] Permanent deletion cannot be undone. Only use bulk delete for profiles that have no match history you want to preserve. For players with matches, use merge or deactivate instead.
Players Can Self-Manage
Players can switch their own active status from their profile. When deactivated, they won't appear in match submission lists but their history remains intact.
Re-Importing After a Merge
If you regularly import player data from an external system (e.g., a national federation CSV), be aware of how imports interact with merges:
- Import matching is by name: the import service matches incoming rows to existing players using case-insensitive name comparison
- After a merge, the deleted player's name no longer exists. If your CSV still contains that name, the next import will create a new profile for it
- Solution: Update your source CSV to use only the surviving player's name, or clean up any newly created duplicates with another merge
[!TIP] After a major merge cleanup, do a test import with a small CSV to verify that your source data aligns with the current roster names.
The import service will update existing players' ratings if they already exist (matched by name) and create new profiles for unrecognized names. Up to 500 players can be imported in a single batch.

Summary
Player management in ServeLeague is designed to be safe:
- Merge combines two profiles atomically, and all data transfers to the surviving player
- Preview before merging to verify which profile to keep
- Deactivate to preserve history while hiding from active lists
- Bulk delete only for profiles with no meaningful data
- Re-import carefully after merges to avoid recreating duplicates
What's Next
- Importing Players in Bulk: learn the CSV format, field mapping, and historical rating import
- Member Tags and Segmentation: organize your roster with custom tags for targeted communications
- Statistics and Reports: explore the analytics available once your player data is consolidated