diff --git a/mo/web/org_users.py b/mo/web/org_users.py
index 0066ba8fa0987f619afdb59e74909ba9a7fbe9a1..f0abd8eb2dbfb7a5c738fad2b941cfcf182bf824 100644
--- a/mo/web/org_users.py
+++ b/mo/web/org_users.py
@@ -329,10 +329,6 @@ class ResendInviteForm(FlaskForm):
             flash('Tento uživatel už má účet aktivovaný.', 'danger')
 
 
-class UpgradeToOrgForm(FlaskForm):
-    upgrade = SubmitField()
-
-
 @app.route('/org/org/<int:id>/', methods=('GET', 'POST'))
 def org_org(id: int):
     sess = db.get_session()
@@ -440,19 +436,6 @@ def org_user(id: int):
             resend_invite_form.do(user)
             return redirect(url_for('org_user', id=id))
 
-    upgrade_form: Optional[UpgradeToOrgForm] = None
-    if rr.can_edit_user:
-        upgrade_form = UpgradeToOrgForm()
-        if upgrade_form.upgrade.data and upgrade_form.validate_on_submit():
-            try:
-                mo.users.change_user_to_org(user, reason='web')
-                sess.commit()
-                flash('Účet změněn na organizátorský.', 'success')
-                return redirect(url_for('org_org', id=user.user_id))
-            except mo.CheckError as e:
-                flash(str(e), 'danger')
-                return redirect(url_for('org_user', id=user.user_id))
-
     participants = sess.query(db.Participant).filter_by(user_id=user.user_id)
     participations = (
         sess.query(db.Participation, db.Contest, db.Round)
@@ -470,7 +453,6 @@ def org_user(id: int):
         can_incarnate=g.user.is_admin,
         participants=participants, participations=participations,
         resend_invite_form=resend_invite_form,
-        upgrade_form=upgrade_form,
     )
 
 
@@ -852,3 +834,39 @@ def org_user_dsn(user_id: int):
             .all())
 
     return render_template('org_user_dsn.html', user=user, dsns=dsns)
+
+
+class UpgradeToOrgForm(FlaskForm):
+    upgrade = SubmitField()
+
+
+@app.route('/org/user/<int:user_id>/upgrade', methods=('GET', 'POST'))
+def org_user_upgrade(user_id: int):
+    sess = db.get_session()
+    user = mo.users.user_by_uid(user_id)
+    if not user:
+        raise werkzeug.exceptions.NotFound()
+
+    rr = g.gatekeeper.rights_generic()
+    if not rr.can_edit_user(user):
+        raise werkzeug.exceptions.Forbidden()
+
+    if user.is_org or user.is_admin:
+        flash('Účet již je organizátorský.', 'warning')
+        return redirect(url_for('org_org', id=user.user_id))
+
+    form = UpgradeToOrgForm()
+    if form.validate_on_submit():
+        try:
+            mo.users.change_user_to_org(user, reason='web')
+            sess.commit()
+            flash('Účet změněn na organizátorský.', 'success')
+            return redirect(url_for('org_org', id=user.user_id))
+        except mo.CheckError as e:
+            flash(str(e), 'danger')
+            return redirect(url_for('org_user', id=user.user_id))
+
+    return render_template(
+        'org_user_upgrade.html', user=user,
+        form=form,
+    )
diff --git a/mo/web/templates/org_user.html b/mo/web/templates/org_user.html
index 301211481b1c5b610b4f1f4c2b71baebc9b2f564..a0cf2cd402353ce9100cb3b7fdd2cd3adf8324c3 100644
--- a/mo/web/templates/org_user.html
+++ b/mo/web/templates/org_user.html
@@ -32,12 +32,8 @@
 	</button>
 </form>
 {% endif %}
-{% if upgrade_form %}
-<form method=POST class='btn-group' onsubmit='return confirm("Změnit účastnický účet na organizátorský?");'>
-	{{ upgrade_form.csrf_token }}
-	<button class="btn btn-default" type='submit' name='upgrade' value='yes'>
-		Změnit na organizátora
-	</button>
+{% if can_edit and not (user.is_admin or user.is_org) %}
+	<a class="btn btn-default" href="{{ url_for('org_user_upgrade', user_id=user.user_id) }}">Změnit na organizátora</a>
 </form>
 {% endif %}
 {% if g.user.is_admin %}
diff --git a/mo/web/templates/org_user_upgrade.html b/mo/web/templates/org_user_upgrade.html
new file mode 100644
index 0000000000000000000000000000000000000000..a7daf6bd480b85642b704c6a308ad39ad4cc6f0d
--- /dev/null
+++ b/mo/web/templates/org_user_upgrade.html
@@ -0,0 +1,24 @@
+{% extends "base.html" %}
+{% import "bootstrap/wtf.html" as wtf %}
+{% block title %}Změna účtu na organizátorský{% endblock %}
+{% block body %}
+
+<p>
+	Chystáte se převést účet {{ user.full_name() }} ({{ user.email }}) na organizátorský.
+</p>
+
+<p>
+	<b>Opravdu si to přejete udělat? Pozor, tato změna je nevratná.</b>
+</p>
+
+<div class='btn-group' role='group'>
+<form method=POST class='btn-group'>
+	<button class="btn btn-primary" type='submit' name='upgrade' value='yes'>
+		Provést
+	</button>
+	{{ form.csrf_token }}
+	<a class="btn btn-default" href="{{ url_for('org_user', id=user.user_id) }}">Vrátit se zpět</a>
+</form>
+</div>
+
+{% endblock %}