diff --git a/app/controllers/settings/general.php b/app/controllers/settings/general.php
index e1c783f4b7a5b0dae042a5b92050ab9cd68f5314..24c6e5df049510774b5033b71a20150c23849d58 100644
--- a/app/controllers/settings/general.php
+++ b/app/controllers/settings/general.php
@@ -31,6 +31,12 @@ class Settings_GeneralController extends Settings_SettingsController
         PageLayout::setTitle(_('Allgemeine Einstellungen anpassen'));
         Navigation::activateItem('/profile/settings/general');
         SkipLinks::addIndex(_('Allgemeine Einstellungen anpassen'), 'layout_content', 100);
+        $this->show_room_management_autor_config = Config::get()->RESOURCES_ENABLE
+                                                && (
+                                                    ResourceManager::userHasGlobalPermission($this->user, 'autor')
+                                                    ||
+                                                    RoomManager::userHasRooms($this->user, 'autor')
+                                                );
     }
 
     /**
@@ -63,6 +69,9 @@ class Settings_GeneralController extends Settings_SettingsController
         $this->config->store('SKIPLINKS_ENABLE', Request::int('skiplinks_enable'));
         $this->config->store('TOUR_AUTOSTART_DISABLE', Request::int('tour_autostart_disable'));
         $this->config->store('WIKI_COMMENTS_ENABLE', Request::int('wiki_comments_enable'));
+        if ($this->show_room_management_autor_config) {
+            $this->config->store('RESOURCES_CONFIRM_PLAN_DRAG_AND_DROP', Request::int('resources_confirm_plan_drag_and_drop'));
+        }
 
         if (Config::get()->WYSIWYG) {
             $this->config->store('WYSIWYG_DISABLED', !Request::int('wysiwyg_enabled'));
diff --git a/app/views/resources/room_planning/booking_plan.php b/app/views/resources/room_planning/booking_plan.php
index 6750af148215339436c2a9a62d103fd25cd9456d..5792a2a2abcaa4af3b8c0dbf922dd8c2671479d4 100644
--- a/app/views/resources/room_planning/booking_plan.php
+++ b/app/views/resources/room_planning/booking_plan.php
@@ -88,7 +88,14 @@
                         'display_all_requests' => $display_all_requests ? 1 : 0
                     ]
                 ]
-            ]
+            ],
+            'confirm' => (
+                UserConfig::get($GLOBALS['user']->id)->RESOURCES_CONFIRM_PLAN_DRAG_AND_DROP
+                ? [
+                    'drop' => _('Wollen Sie die Buchung wirklich ändern?')
+                ]
+                : []
+            )
         ],
         ['class' => 'resource-plan'],
         'resources-fullcalendar'
diff --git a/app/views/room_management/planning/index.php b/app/views/room_management/planning/index.php
index 5e79966b1917c1852fd62c2e0fc83d4a6623266f..321d3a6af7d1e7e29965813b46b51bd1693bfabe 100644
--- a/app/views/room_management/planning/index.php
+++ b/app/views/room_management/planning/index.php
@@ -70,7 +70,14 @@
                         'display_all_requests' => $display_all_requests ? 1 : 0
                     ]
                 ]
-            ]
+            ],
+            'confirm' => (
+                UserConfig::get($GLOBALS['user']->id)->RESOURCES_CONFIRM_PLAN_DRAG_AND_DROP
+                ? [
+                    'drop' => _('Wollen Sie die Buchung wirklich ändern?')
+                ]
+                : []
+            )
         ],
         ['class' => 'resource-plan room-group-booking-plan'],
         'resources-fullcalendar'
diff --git a/app/views/settings/general.php b/app/views/settings/general.php
index 4bf2fc3b007ee7238eb882e754e338553f21c306..5348975873a8d340d26adb5949cd071bd3ce8e36 100644
--- a/app/views/settings/general.php
+++ b/app/views/settings/general.php
@@ -142,6 +142,21 @@ $start_pages = [
     </fieldset>
 <? endif; ?>
 
+    <? if ($show_room_management_autor_config) : ?>
+        <fieldset>
+            <legend><?= _('Raumverwaltung') ?></legend>
+            <label>
+                <input type="checkbox" name="resources_confirm_plan_drag_and_drop"
+                       value="1"
+                       <?= $config->RESOURCES_CONFIRM_PLAN_DRAG_AND_DROP ? 'checked' : '' ?>>
+                <?= _('Nach dem Verschieben einer Buchung per Drag & Drop im Belegungsplan eine Sicherheitsabfrage anzeigen') ?>
+                <?= tooltipIcon(
+                    _('Wenn diese Einstellung aktiviert ist, wird die Buchung erst dann verschoben, wenn die Sicherheitsabfrage mit „Ja“ beantwortet wurde.')
+                ) ?>
+            </label>
+        </fieldset>
+    <? endif ?>
+
     <footer>
         <?= \Studip\Button::create(_("Speichern")) ?>
     </footer>
diff --git a/db/migrations/20210603_add_config_resources_confirm_plan_drag_and_drop.php b/db/migrations/20210603_add_config_resources_confirm_plan_drag_and_drop.php
new file mode 100644
index 0000000000000000000000000000000000000000..1bbfc1d41d994f68df901cbbfebb783cf462dd43
--- /dev/null
+++ b/db/migrations/20210603_add_config_resources_confirm_plan_drag_and_drop.php
@@ -0,0 +1,43 @@
+<?php
+
+
+class AddConfigResourcesConfirmPlanDragAndDrop extends Migration
+{
+    public function description()
+    {
+        return 'Add configuration RESOURCES_CONFIRM_PLAN_DRAG_AND_DROP';
+    }
+
+
+    public function up()
+    {
+        $db = DBManager::get();
+
+        $db->exec(
+            "INSERT INTO `config`
+            (`field`, `value`, `type`, `range`,
+            `section`,
+            `mkdate`, `chdate`,
+            `description`)
+            VALUES
+            ('RESOURCES_CONFIRM_PLAN_DRAG_AND_DROP', '0', 'boolean', 'user',
+            'resources', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(),
+            'Soll beim Verschieben von Buchungen im Belegungsplan eine Sicherheitsabfrage erscheinen?')"
+        );
+    }
+
+
+    public function down()
+    {
+        $db = DBManager::get();
+
+        $db->exec(
+            "DELETE FROM `config_values`
+            WHERE `field` = 'RESOURCES_CONFIRM_PLAN_DRAG_AND_DROP'"
+        );
+        $db->exec(
+            "DELETE FROM `config`
+            WHERE `field` = 'RESOURCES_CONFIRM_PLAN_DRAG_AND_DROP'"
+        );
+    }
+}
diff --git a/resources/assets/javascripts/lib/fullcalendar.js b/resources/assets/javascripts/lib/fullcalendar.js
index 8c3c1232b9996815ffad153aed302a55ed5639c3..c6b1b5d734adbcb6302a67b35bcd191cfb872ff7 100644
--- a/resources/assets/javascripts/lib/fullcalendar.js
+++ b/resources/assets/javascripts/lib/fullcalendar.js
@@ -443,20 +443,38 @@ class Fullcalendar
                 info.event.source.refetch();
             },
             eventDrop (info) {
-                if ($(info.view.context.calendar.el).hasClass('institute-plan')) {
-                    var start = info.event.start;
-                    var cal_start = info.view.activeStart;
-                    if ((start.getHours() - cal_start.getHours()) % 2 === 1) {
-                        info.event.moveDates('-01:00');
+                let handle_drop = function() {
+                    if ($(info.view.context.calendar.el).hasClass('institute-plan')) {
+                        var start = info.event.start;
+                        var cal_start = info.view.activeStart;
+                        if ((start.getHours() - cal_start.getHours()) % 2 === 1) {
+                            info.event.moveDates('-01:00');
+                        }
+                        STUDIP.Fullcalendar.institutePlanDropEventHandler(info);
+                    } else {
+                        if (info.view.viewSpec.options.studip_functions.drop_event) {
+                            info.view.viewSpec.options.studip_functions.drop_event(info);
+                        } else {
+                            STUDIP.Fullcalendar.defaultDropEventHandler(info);
+                        }
+                        info.event.source.refetch();
                     }
-                    STUDIP.Fullcalendar.institutePlanDropEventHandler(info);
-                } else {
-                    if (info.view.viewSpec.options.studip_functions.drop_event) {
-                        info.view.viewSpec.options.studip_functions.drop_event(info);
+                };
+
+                let calendar_config = JSON.parse(info.view.context.calendar.el.dataset.config);
+                if (calendar_config.confirm) {
+                    if (calendar_config.confirm.drop) {
+                        STUDIP.Dialog.confirm(calendar_config.confirm.drop)
+                            .done(handle_drop)
+                            .fail(function() {
+                                //Revert the dropped element:
+                                info.revert();
+                            });
                     } else {
-                        STUDIP.Fullcalendar.defaultDropEventHandler(info);
+                        handle_drop();
                     }
-                    info.event.source.refetch();
+                } else {
+                    handle_drop();
                 }
             },
             eventRender (info) {