diff --git a/app/controllers/course/timesrooms.php b/app/controllers/course/timesrooms.php
index f24c2db2f52f76a2992f3e5a20a78bfc4f733c75..5ec99ccc632d9625fc8de3353ad48c44327bbd41 100644
--- a/app/controllers/course/timesrooms.php
+++ b/app/controllers/course/timesrooms.php
@@ -1124,7 +1124,8 @@ class Course_TimesroomsController extends AuthenticatedController
 
         if (in_array(Request::get('action'), ['room', 'freetext', 'noroom']) || Request::get('course_type')) {
             $success_cases = 0;
-            $errors = [];
+            $success_messages = [];
+            $error_messages = [];
             foreach ($singledates as $singledate) {
                 if ($singledate instanceof CourseExDate) {
                     continue;
@@ -1133,7 +1134,7 @@ class Course_TimesroomsController extends AuthenticatedController
                     $preparation_time = Request::get('preparation_time');
                     $max_preparation_time = Config::get()->RESOURCES_MAX_PREPARATION_TIME;
                     if ($preparation_time > $max_preparation_time) {
-                        $errors[] = sprintf(
+                        $error_messages[] = sprintf(
                             studip_interpolate(
                                 _('%{date}: Die eingegebene Rüstzeit überschreitet das erlaubte Maximum von %d Minuten!'),
                                 ['date' => $singledate->getFullName()]
@@ -1149,7 +1150,7 @@ class Course_TimesroomsController extends AuthenticatedController
                             try {
                                 $failure = !$singledate->bookRoom($room, intval($preparation_time));
                             } catch (ResourceBookingException $e) {
-                                $errors[] = sprintf(
+                                $error_messages[] = sprintf(
                                     _('Der angegebene Raum konnte für den Termin %1$s nicht gebucht werden: %2$s'),
                                     '<strong>' . htmlReady($singledate->getFullName()) . '</strong>',
                                     $e->getMessage()
@@ -1157,7 +1158,7 @@ class Course_TimesroomsController extends AuthenticatedController
                             } catch (ResourceBookingOverlapException $e) {
                                 $course = $e->getRange();
                                 if ($course instanceof Course) {
-                                    $errors[] = studip_interpolate(
+                                    $error_messages[] = studip_interpolate(
                                         _('Der Raum %{room_name} wird an dem Termin %{date} bereits durch die Veranstaltung %{course_name} belegt.'),
                                         [
                                             'room_name'   => $room->name,
@@ -1166,7 +1167,7 @@ class Course_TimesroomsController extends AuthenticatedController
                                         ]
                                     );
                                 } else {
-                                    $errors[] = studip_interpolate(
+                                    $error_messages[] = studip_interpolate(
                                         _('Der Raum %{room_name} wird an dem Termin %{date} bereits anderweitig belegt.'),
                                         [
                                             'room_name'   => $room->name,
@@ -1176,7 +1177,7 @@ class Course_TimesroomsController extends AuthenticatedController
                                 }
                             }
                             if ($failure) {
-                                $errors[] = sprintf(
+                                $error_messages[] = sprintf(
                                     _('Der angegebene Raum konnte für den Termin %s nicht gebucht werden!'),
                                     '<strong>' . htmlReady($singledate->getFullName()) . '</strong>'
                                 );
@@ -1195,44 +1196,44 @@ class Course_TimesroomsController extends AuthenticatedController
                     if ($singledate->room_booking instanceof ResourceBooking) {
                         $singledate->room_booking->delete();
                     }
-                    PageLayout::postSuccess(sprintf(
+                    $success_messages[] = sprintf(
                         _('Der Termin %s wurde geändert, etwaige Raumbuchungen wurden entfernt und stattdessen der angegebene Freitext eingetragen!'),
                         '<strong>' . htmlReady($singledate->getFullName()) . '</strong>'
-                    ));
+                    );
                 } elseif (Request::option('action') == 'noroom') {
                     $singledate->raum = '';
                     $singledate->store();
                     if ($singledate->room_booking instanceof ResourceBooking) {
                         $singledate->room_booking->delete();
                     }
-                    PageLayout::postSuccess(sprintf(
+                    $success_messages[] = sprintf(
                         _('Der Termin %s wurde geändert, etwaige freie Ortsangaben und Raumbuchungen wurden entfernt.'),
                         '<strong>' . htmlReady($singledate) . '</strong>'
-                    ));
+                    );
                 }
 
                 if (Request::get('course_type') != '') {
                     $singledate->date_typ = Request::get('course_type');
                     $singledate->store();
-                    PageLayout::postSuccess(sprintf(
+                    $success_messages[] = sprintf(
                         _('Die Art des Termins %s wurde geändert.'),
                         '<strong>' . htmlReady($singledate) . '</strong>'
-                    ));
+                    );
                 }
             }
-            if ($success_cases > 0) {
-                if (!$errors) {
-                    //Everything went well.
-                    PageLayout::postSuccess(_('Die Änderungen wurden gespeichert.'));
+            if ($success_cases > 0 || count($success_messages) > 0) {
+                if (!$error_messages) {
+                    // Everything went well.
+                    PageLayout::postSuccess(_('Die Änderungen wurden gespeichert.'), $success_messages);
                 } else {
-                    //Not everything went well.
-                    PageLayout::postWarning(_('Es konnten nicht alle Termine geändert werden.'));
+                    // Not everything went well.
+                    PageLayout::postWarning(_('Es konnten nicht alle Termine geändert werden.'), $success_messages);
                 }
             }
-            if ($errors) {
+            if ($error_messages) {
                 PageLayout::postError(
                     _('Die folgenden Fehler traten auf:'),
-                    $errors
+                    $error_messages
                 );
             }
         }