diff --git a/mo/users.py b/mo/users.py
index 0754725cac8bc947e871b91f55e936fa6bdfb9a7..ef89b1ae49b0224fbfc7360b1ac8e782f0438c58 100644
--- a/mo/users.py
+++ b/mo/users.py
@@ -467,12 +467,3 @@ def request_reset_password(user: db.User, client: Optional[str]) -> Optional[db.
             details={'action': 'ask-reset'},
         )
     return rr
-
-
-def reset_user_dsn(user: db.User) -> None:
-    if user.dsn_id:
-        logger.info(f'Uživatel #{user.user_id}: Reset DSN')
-        user.dsn_id = None
-        conn = db.get_session().connection()
-        dsn_table = db.EmailDSN.__table__
-        conn.execute(dsn_table.delete().where(dsn_table.c.user_id == user.user_id))
diff --git a/mo/util_dsn.py b/mo/util_dsn.py
index 64fe8cd7a760abf451e64ad5a44fa09947c9c4f4..165530f055f47fee780bcfe5bc2f9dc5bbcf8e33 100644
--- a/mo/util_dsn.py
+++ b/mo/util_dsn.py
@@ -7,6 +7,7 @@ from typing import Optional
 import mo
 import mo.config as config
 import mo.db as db
+from mo.util import logger
 
 
 dsn_explanation = {
@@ -48,3 +49,12 @@ def expire_dsns() -> None:
                  .where(dsn_table.c.dsn_id.not_in(select(user_table.c.dsn_id))))
 
     sess.commit()
+
+
+def reset_user_dsn(user: db.User) -> None:
+    if user.dsn_id:
+        logger.info(f'Uživatel #{user.user_id}: Reset DSN')
+        user.dsn_id = None
+        conn = db.get_session().connection()
+        dsn_table = db.EmailDSN.__table__
+        conn.execute(dsn_table.delete().where(dsn_table.c.user_id == user.user_id))
diff --git a/mo/web/acct.py b/mo/web/acct.py
index deefa8cc564a10e922596e9942bb5df773bfb6d0..a90723018688e1c4e0b4aa3e198997534b970646 100644
--- a/mo/web/acct.py
+++ b/mo/web/acct.py
@@ -555,14 +555,14 @@ class Reg2:
             },
         )
 
-        mo.users.reset_user_dsn(user)
+        mo.util_dsn.reset_user_dsn(user)
         self.spend_request_and_commit()
         return True
 
     def validate_email(self) -> None:
         user = self.rr.user
         app.logger.info(f'Reg2: Uživatel #{user.user_id} potvrzuje email <{user.email}>')
-        mo.users.reset_user_dsn(user)
+        mo.util_dsn.reset_user_dsn(user)
         self.spend_request_and_commit()
 
     def change_passwd(self, new_passwd: str):
@@ -572,7 +572,7 @@ class Reg2:
         app.logger.info(f'Reg2: Uživatel #{user.user_id} si resetoval heslo')
         mo.users.set_password(user, new_passwd, reset=True)
         mo.users.login(user)
-        mo.users.reset_user_dsn(user)
+        mo.util_dsn.reset_user_dsn(user)
         self.spend_request_and_commit()
 
     def spend_request_and_commit(self):
diff --git a/mo/web/org_users.py b/mo/web/org_users.py
index 43f104b0b3c1b082b66767fca301d78c10e9fe18..be60c783a6446dca3effc800f4cd187d2d354be0 100644
--- a/mo/web/org_users.py
+++ b/mo/web/org_users.py
@@ -21,6 +21,7 @@ from mo.imports import GlobalOrgsImport
 import mo.rights
 from mo.rights import Right, Rights
 import mo.util
+import mo.util_dsn
 import mo.users
 from mo.web import app
 import mo.web.fields as mo_fields
@@ -525,7 +526,7 @@ def org_user_edit(id: int):
             if sess.is_modified(user):
                 changes = db.get_object_changes(user)
                 if 'email' in changes:
-                    mo.users.reset_user_dsn(user)
+                    mo.util_dsn.reset_user_dsn(user)
                 app.logger.info(f"Uživatel #{id} změněn: {changes}")
                 mo.util.log(
                     type=db.LogType.user,