diff --git a/mo/web/org_place.py b/mo/web/org_place.py
index a1bd66178175da146ffbb4d8e6769cf962c71886..28fb9bab4f7adfb960e4c806a61b0feb8142a9ca 100644
--- a/mo/web/org_place.py
+++ b/mo/web/org_place.py
@@ -13,6 +13,7 @@ import mo.imports
 import mo.rights
 import mo.util
 from mo.web import app
+import mo.web.fields as mo_fields
 import wtforms.validators as validators
 
 
@@ -177,14 +178,14 @@ def org_place_edit(id: int):
 
 
 class PlaceMoveForm(FlaskForm):
-    code = wtforms.StringField(validators=[validators.DataRequired()], render_kw={'autofocus': True})
+    new_parent = mo_fields.Place(validators=[validators.DataRequired()], render_kw={'autofocus': True})
     submit = wtforms.SubmitField('Najít místo')
     reset = wtforms.HiddenField()
     move = wtforms.HiddenField()
 
 
 class PlaceMoveConfirmForm(FlaskForm):
-    code = wtforms.HiddenField()
+    new_parent = mo_fields.Place(widget = wtforms.widgets.HiddenInput())
     reset = wtforms.SubmitField('Zrušit')
     move = wtforms.SubmitField('Přesunout')
 
@@ -206,42 +207,44 @@ def org_place_move(id: int):
 
     form = PlaceMoveForm()
     form_confirm = None
-    if form.validate_on_submit():
+    if not form.validate_on_submit():
+        if form.new_parent.place_error:
+            search_error = form.new_parent.place_error
+    else:
         if form.reset.data:
             return redirect(url_for('org_place_move', id=id))
 
-        new_parent = db.get_place_by_code(form.code.data)
-        if not new_parent:
-            search_error = 'Místo s tímto kódem se nepovedlo nalézt'
+        new_parent = form.new_parent.place
+        new_parents = reversed(g.gatekeeper.get_parents(new_parent))
+        (_, levels) = db.place_type_names_and_levels[place.type]
+
+        rr = g.gatekeeper.rights_for(new_parent)
+        if not rr.can_edit_place(new_parent):
+            search_error = 'Nemáte právo k editaci vybraného nadřazeného místa, přesun nelze uskutečnit'
+        elif (new_parent.level + 1) not in levels:
+            search_error = f'Toto místo ({place.type_name()}) nelze přemístit pod vybrané místo ({new_parent.type_name()}), dostalo by se na nepovolený level'
+        elif new_parent.place_id == place.parent:
+            search_error = 'Žádná změna, místo je zde již umístěno'
+        elif form.move.data:
+            # Everything is OK, if submitted with 'move' do the move
+            place.parent = new_parent.place_id
+            place.level = new_parent.level + 1
+            changes = db.get_object_changes(place)
+            mo.util.log(
+                type=db.LogType.place,
+                what=id,
+                details={'action': 'move', 'changes': changes},
+            )
+            app.logger.info(f"Place {id} moved, changes: {changes}")
+            db.get_session().commit()
+            flash('Místo úspěšně přesunuto', 'success')
+            return redirect(url_for('org_place', id=id))
         else:
-            new_parents = reversed(g.gatekeeper.get_parents(new_parent))
-            (_, levels) = db.place_type_names_and_levels[place.type]
-
-            rr = g.gatekeeper.rights_for(new_parent)
-            if not rr.can_edit_place(new_parent):
-                search_error = 'Nemáte právo k editaci vybraného nadřazeného místa, přesun nelze uskutečnit'
-            elif (new_parent.level + 1) not in levels:
-                search_error = f'Toto místo ({place.type_name()}) nelze přemístit pod vybrané místo ({new_parent.type_name()}), dostalo by se na nepovolený level'
-            elif new_parent.place_id == place.parent:
-                search_error = 'Žádná změna, místo je zde již umístěno'
-            elif form.move.data:
-                # Everything is OK, if submitted with 'move' do the move
-                place.parent = new_parent.place_id
-                place.level = new_parent.level + 1
-                changes = db.get_object_changes(place)
-                mo.util.log(
-                    type=db.LogType.place,
-                    what=id,
-                    details={'action': 'move', 'changes': changes},
-                )
-                app.logger.info(f"Place {id} moved, changes: {changes}")
-                db.get_session().commit()
-                flash('Místo úspěšně přesunuto', 'success')
-                return redirect(url_for('org_place', id=id))
-            else:
-                # OK but not confirmed yet, display the confirm form
-                form_confirm = PlaceMoveConfirmForm()
-                form_confirm.code.data = form.code.data
+            # OK but not confirmed yet, display the confirm form
+            form_confirm = PlaceMoveConfirmForm()
+            form_confirm.new_parent.data = form.new_parent.data
+            # tady se používá hnusný trik, že políčko new_parents z PlaceMoveConfirmForm se
+            # parsuje jako new_parents z PlaceMoveForm
 
     return render_template(
         'org_place_move.html',