diff --git a/bin/merge-users b/bin/merge-users
index 539268117a362064c4d04cfef149799321c5d2da..6a06e5bd466f42dbb18050425ecf280660426a3e 100755
--- a/bin/merge-users
+++ b/bin/merge-users
@@ -1,6 +1,7 @@
 #!/usr/bin/env python3
 
 import argparse
+from sqlalchemy import and_
 
 import mo.db as db
 import mo.users
@@ -33,10 +34,31 @@ print(f"Slučuji UID {suid} do UID {duid}")
 sess = db.get_session()
 conn = sess.connection()
 
+test_round = sess.query(db.Round).filter_by(category='T').one_or_none()
+if test_round is not None:
+    test_submits = (sess
+                    .query(db.Solution)
+                    .join(db.Task)
+                    .filter(db.Solution.user_id == suid)
+                    .filter(db.Task.round == test_round)
+                    .filter(db.Round.category == 'T')
+                    .all())
+    if test_submits:
+        mo.util.die("Zdrojový účastník něco odevzdal v testovací soutěži, nutno vyřešit ručně")
+    test_contest = sess.query(db.Contest).filter_by(round=test_round).one_or_none()
+    test_contest_id = test_contest.contest_id if test_contest is not None else None
+else:
+    test_contest = None
+    test_contest_id = None
+
+sess.flush()
+
 conn.execute(db.Log.__table__.update().where(db.Log.changed_by == suid).values(changed_by=duid))
 
 conn.execute(db.Participant.__table__.delete().where(db.Participant.user_id == suid))
 
+conn.execute(db.Participation.__table__.delete().where(and_(db.Participation.user_id == suid, db.Participation.contest_id == test_contest_id)))
+
 conn.execute(db.Participation.__table__.update().where(db.Participation.user_id == suid).values(user_id=duid))
 
 conn.execute(db.UserRole.__table__.update().where(db.UserRole.user_id == suid).values(user_id=duid))