diff --git a/bin/merge-users b/bin/merge-users
index 396ab39c34688c30711eefdef5ee820b6836f82f..650827b778c1a51eb392c75289106299313df11b 100755
--- a/bin/merge-users
+++ b/bin/merge-users
@@ -34,31 +34,19 @@ 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__.update().where(db.Participant.user_id == suid).values(user_id=duid))
+src_pants = sess.query(db.Participant).filter_by(user_id=suid)
+dst_pants = sess.query(db.Participant).filter_by(user_id=duid)
+for pant in src_pants:
+    if any(d.year == pant.year for d in dst_pants):
+        print(f"Účast v ročníku {pant.year} koliduje, zdrojovou zahazuji")
+        sess.delete(pant)
+sess.flush()
 
-if test_contest:
-    conn.execute(db.Participation.__table__.delete().where(and_(db.Participation.user_id == suid, db.Participation.contest_id == test_contest_id)))
+conn.execute(db.Participant.__table__.update().where(db.Participant.user_id == suid).values(user_id=duid))
 
 conn.execute(db.Participation.__table__.update().where(db.Participation.user_id == suid).values(user_id=duid))