diff --git a/Flexexport.class.php b/Flexexport.class.php
index 3d23c67762594466ae7735a04f1ab76546a24d5e..512bcbe59201e7842803aec15f8c149b05bf3c81 100644
--- a/Flexexport.class.php
+++ b/Flexexport.class.php
@@ -62,17 +62,7 @@ class Flexexport extends StudIPPlugin implements SystemPlugin
 
     public function loadJavascript()
     {
-        if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-            PageLayout::addHeadElement(
-                'script',
-                [
-                    'type' => 'text/javascript',
-                    'src' => $this->getPluginUrl() . '/assets/Flexexport.js'
-                ]
-            );
-        } else {
-            $this->addScript('assets/Flexexport.js');
-        }
+        $this->addScript('assets/Flexexport.js');
     }
 
 
diff --git a/classes/decorators/CourseDateDecorator.class.php b/classes/decorators/CourseDateDecorator.class.php
index 0d617a9c8ddf6bedf877008ebd86c41bda1fbcee..7caadbe738ac58795fcebcde08ce3cf86d8a3a59 100644
--- a/classes/decorators/CourseDateDecorator.class.php
+++ b/classes/decorators/CourseDateDecorator.class.php
@@ -213,19 +213,10 @@ class CourseDateDecorator extends Decorator
         }
         if ($this->fields['room_name']->isEnabled()) {
             $room_name = '';
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                //RRV1
-                $room = $course_date->room_assignment->resource;
-                if ($room) {
-                    $room_name = $room->getName();
-                }
-            } else {
-                //RRV2
-                if ($course_date->room_booking->resource) {
-                    $room = $course_date->room_booking->resource->getDerivedClassInstance();
-                    if ($room instanceof \Room) {
-                        $room_name = $room->name;
-                    }
+            if ($course_date->room_booking->resource) {
+                $room = $course_date->room_booking->resource->getDerivedClassInstance();
+                if ($room instanceof \Room) {
+                    $room_name = $room->name;
                 }
             }
             $result[$this->fields['room_name']->getDisplayName()] = $room_name;
diff --git a/classes/exporters/CourseDateAndRoomBookingExporter.class.php b/classes/exporters/CourseDateAndRoomBookingExporter.class.php
index 3c3a3b2892a9169fe60a16e420b9c41f922c684d..05a8ae159ebd5016e8c526a962741bbae056f41c 100644
--- a/classes/exporters/CourseDateAndRoomBookingExporter.class.php
+++ b/classes/exporters/CourseDateAndRoomBookingExporter.class.php
@@ -70,44 +70,20 @@ class CourseDateAndRoomBookingExporter extends Exporter
         $template->set_attribute('hide_past_events', $this->config->getParameter('hide_past_events'));
         $template->set_attribute('hide_exdates_without_comment', $this->config->getParameter('hide_exdates_without_comment'));
 
-        $building_search = null;
-        if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-            //The old resource management system.
-            $building_category_name = \Config::get()->FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME;
-            $db = \DBManager::get();
-            $building_search = new \QuickSearch(
-                'selected_building_id',
-                new \SQLSearch(
-                    sprintf(
-                        "SELECT resources_objects.resource_id AS id, resources_objects.name AS name
-                        FROM resources_objects
-                        INNER JOIN resources_categories rc
-                        ON resources_objects.category_id = rc.category_id
-                        WHERE
-                        rc.name = %s
-                        AND
-                        resources_objects.name LIKE :input
-                        ORDER BY resources_objects.name",
-                        $db->quote($building_category_name)
-                    )
-                )
-            );
-        } else {
-            $building_search = new \QuickSearch(
-                'selected_building_id',
-                new \SQLSearch(
-                    "SELECT resources.id, resources.name
-                    FROM resources
-                    INNER JOIN resource_categories rc
-                    ON resources.category_id = rc.id
-                    WHERE
-                    rc.class_name = 'Building'
-                    AND
-                    resources.name LIKE :input
-                    ORDER BY resources.name"
-                )
-            );
-        }
+        $building_search = new \QuickSearch(
+            'selected_building_id',
+            new \SQLSearch(
+                "SELECT resources.id, resources.name
+                FROM resources
+                INNER JOIN resource_categories rc
+                ON resources.category_id = rc.id
+                WHERE
+                rc.class_name = 'Building'
+                AND
+                resources.name LIKE :input
+                ORDER BY resources.name"
+            )
+        );
         $building_search->fireJSFunctionOnSelect('STUDIP.Flexexport.selectItem');
         $building_search->setAttributes(
             [
@@ -118,41 +94,18 @@ class CourseDateAndRoomBookingExporter extends Exporter
 
         $selected_buildings = [];
         if ($this->config->getParameter('building_ids')) {
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                //The old resource management system.
-                $building_category_name = \Config::get()->FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME;
-                $get_buildings_stmt = $db->prepare(
-                    "SELECT `resource_id` AS id, ro.`name` AS name
-                    FROM resources_objects ro
-                    INNER JOIN resources_categories rc
-                    ON ro.category_id = rc.category_id
-                    WHERE
-                    rc.name = :building_category_name
-                    AND
-                    ro.resource_id IN ( :building_ids )
-                    ORDER BY ro.name ASC"
-                );
-                $get_buildings_stmt->execute(
-                    [
-                        'building_category_name' => $building_category_name,
-                        'building_ids' => $this->config->getParameter('building_ids')
-                    ]
-                );
-                $selected_buildings = $get_buildings_stmt->fetchAll(\PDO::FETCH_OBJ);
-            } else {
-                $selected_buildings = \Building::findBySql(
-                    "INNER JOIN resource_categories rc
-                    ON resources.category_id = rc.id
-                    WHERE
-                    rc.class_name = 'Building'
-                    AND
-                    resources.id IN ( :building_ids )
-                    ORDER BY resources.name ASC",
-                    [
-                        'building_ids' => $this->config->getParameter('building_ids')
-                    ]
-                );
-            }
+            $selected_buildings = \Building::findBySql(
+                "INNER JOIN resource_categories rc
+                ON resources.category_id = rc.id
+                WHERE
+                rc.class_name = 'Building'
+                AND
+                resources.id IN ( :building_ids )
+                ORDER BY resources.name ASC",
+                [
+                    'building_ids' => $this->config->getParameter('building_ids')
+                ]
+            );
         }
         $template->set_attribute('selected_buildings', $selected_buildings);
 
@@ -348,86 +301,23 @@ class CourseDateAndRoomBookingExporter extends Exporter
         $room_ids = [];
         if ($building_ids) {
             //Get all IDs of relevant rooms.
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                //The old resource management system.
-                $building_category_name = \Config::get()->FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME;
-
-                $get_room_ids_stmt = $db->prepare(
-                    "SELECT DISTINCT `resource_id` FROM `resources_objects`
-                    INNER JOIN `resources_categories` rc
-                    ON rc.category_id = `resources_objects`.category_id
-                    WHERE
-                    rc.`is_room` > '0'
-                    AND
-                    `parent_id` IN (
-                        SELECT `resource_id` FROM `resources_objects`
-                        INNER JOIN `resources_categories` rc
-                        ON rc.category_id = `resources_objects`.category_id
-                        WHERE rc.`name` = :building_category_name
-                        AND `resource_id` IN ( :building_ids )
-                    )"
-                );
-                $get_room_ids_stmt->execute(
-                    [
-                        'building_category_name' => $building_category_name,
-                        'building_ids' => $building_ids
-                    ]
-                );
-                $room_ids = $get_room_ids_stmt->fetchAll(\PDO::FETCH_COLUMN, 0);
-                //Now run another statement to get all room resources that may
-                //lie on layer below the already retrieved rooms. This is useful
-                //in case there are resource labels between the rooms and the
-                //buildings.
-                $get_2nd_room_ids_stmt = $db->prepare(
-                    "SELECT DISTINCT `resource_id` FROM `resources_objects`
-                    INNER JOIN `resources_categories` rc
-                    ON rc.`category_id` = `resources_objects`.`category_id`
-                    WHERE
-                    rc.`is_room` > '0'
-                    AND
-                    `parent_id` IN (
-                        SELECT `resource_id` FROM `resources_objects`
-                        WHERE `parent_id` IN ( :building_ids )
-                    )"
-                );
-                $get_2nd_room_ids_stmt->execute(['building_ids' => $building_ids]);
-                $second_layer_room_ids = $get_2nd_room_ids_stmt->fetchAll(\PDO::FETCH_COLUMN, 0);
-                $room_ids = array_merge(
-                    $room_ids,
-                    $second_layer_room_ids
-                );
-            } else {
-                //The new room management system.
-                $buildings = \Building::findMany($building_ids);
-                if ($buildings) {
-                    foreach ($buildings as $building) {
-                        $rooms = $building->findChildrenByClassName('Room');
-                        if (!$rooms) {
-                            continue;
-                        }
-                        foreach ($rooms as $room) {
-                            $room_ids[$room->id] = $room->id;
-                        }
+            $buildings = \Building::findMany($building_ids);
+            if ($buildings) {
+                foreach ($buildings as $building) {
+                    $rooms = $building->findChildrenByClassName('Room');
+                    if (!$rooms) {
+                        continue;
+                    }
+                    foreach ($rooms as $room) {
+                        $room_ids[$room->id] = $room->id;
                     }
                 }
             }
         } else {
             //Get all IDs of all rooms.
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                //Old resource management system.
-                $room_ids = $db->query(
-                    "SELECT DISTINCT `resource_id` FROM `resources_objects`
-                    INNER JOIN `resources_categories` rc
-                    ON rc.category_id = `resources_objects`.category_id
-                    WHERE
-                    rc.`is_room` > '0'"
-                )->fetchAll(\PDO::FETCH_COLUMN, 0);
-            } else {
-                //New room management system.
-                $rooms = \Room::findAll();
-                foreach ($rooms as $room) {
-                    $room_ids[] = $room->id;
-                }
+            $rooms = \Room::findAll();
+            foreach ($rooms as $room) {
+                $room_ids[] = $room->id;
             }
         }
         $with_room_name = array_key_exists('room_name', $this->enabled_field_config);
@@ -474,11 +364,7 @@ class CourseDateAndRoomBookingExporter extends Exporter
             $fields_sql[] = "IF (r.`name` IS NOT NULL AND r.`name` <> '', r.`name`, `termine`.`raum`) AS room_name";
         }
         if ($with_booking_description) {
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                $fields_sql[] = "rb.`user_free_name` AS booking_description";
-            } else {
-                $fields_sql[] = "rb.`description` AS booking_description";
-            }
+            $fields_sql[] = "rb.`description` AS booking_description";
         }
         $course_dates_stmt_sql .= implode(', ', $fields_sql) . ' ';
         $course_dates_stmt_sql .= "FROM `termine` ";
@@ -488,40 +374,23 @@ class CourseDateAndRoomBookingExporter extends Exporter
             } else {
                 $course_dates_stmt_sql .= "LEFT JOIN ";
             }
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                $course_dates_stmt_sql .= "`resources_assign` rb
-                    ON `termine`.`termin_id` = rb.`assign_user_id` ";
-                if ($building_ids) {
-                    $course_dates_stmt_sql .= "INNER JOIN ";
-                } else {
-                    $course_dates_stmt_sql .= "LEFT JOIN ";
-                }
-                $course_dates_stmt_sql .= "`resources_objects` r
-                    ON rb.`resource_id` = r.`resource_id` ";
+            $course_dates_stmt_sql .= "`resource_bookings` rb
+                ON `termine`.`termin_id` = rb.`range_id` ";
+            if ($building_ids) {
+                $course_dates_stmt_sql .= "INNER JOIN ";
             } else {
-                $course_dates_stmt_sql .= "`resource_bookings` rb
-                    ON `termine`.`termin_id` = rb.`range_id` ";
-                if ($building_ids) {
-                    $course_dates_stmt_sql .= "INNER JOIN ";
-                } else {
-                    $course_dates_stmt_sql .= "LEFT JOIN ";
-                }
-                $course_dates_stmt_sql .= "`resources` r
-                    ON rb.`resource_id` = r.`id` ";
+                $course_dates_stmt_sql .= "LEFT JOIN ";
             }
+            $course_dates_stmt_sql .= "`resources` r
+                ON rb.`resource_id` = r.`id` ";
         }
 
         if ($institute_ids) {
             $course_dates_stmt_sql .= "INNER JOIN `seminare`
                 ON `termine`.`range_id` = `seminare`.`seminar_id` ";
         } else if ($building_ids && !$with_room_name && !$with_booking_description) {
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                $course_dates_stmt_sql .= "INNER JOIN `resources_assign` rb
-                    ON `termine`.`termin_id` = rb.`assign_user_id` ";
-            } else {
-                $course_dates_stmt_sql .= "INNER JOIN `resource_bookings` rb
-                    ON `termine`.`termin_id` = rb.`range_id` ";
-            }
+            $course_dates_stmt_sql .= "INNER JOIN `resource_bookings` rb
+                ON `termine`.`termin_id` = rb.`range_id` ";
         }
         if (!$institute_ids && $with_course_name) {
             $course_dates_stmt_sql .= "LEFT JOIN `seminare`
@@ -649,306 +518,207 @@ class CourseDateAndRoomBookingExporter extends Exporter
 
         $result = [];
 
-        if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-            //The old resource management system.
-            //use lib/resources/lib/AssignEventList.class.php
-
-            $room_name_stmt = $db->prepare(
-                'SELECT `name` FROM `resources_objects`
-                WHERE `resource_id` = :id'
-            );
-
-            //Extra performance penalty for the old room management system:
-            //After retrieving all relevant resource bookings, we have to filter
-            //out those that are already retrieved via course dates.
-            //To do that, we need to get all course date IDs into an array.
-            $course_date_ids = [];
-            foreach ($course_dates as $course_date) {
-                $course_date_ids[] = $course_date['course_date_id'];
-            }
-            $booking_data = [];
-            foreach ($room_ids as $room_id) {
-                $booking_data_object = new \AssignEventList(
-                    $bookings_stmt_params['begin'],
-                    $bookings_stmt_params['end'],
-                    $room_id
-                );
-                while ($event = $booking_data_object->nextEvent()) {
-                    if (in_array($event->assign_user_id, $course_date_ids)) {
-                        //The booking belongs to a course date that has already
-                        //been retrieved.
-                        continue;
-                    }
-                    if ($hide_past_events) {
-                        //Extra check, maybe a bug in AssignEventlist:
-                        if ($event->end < $begin->getTimestamp()) {
-                            continue;
-                        }
-                    }
-                    $course_date_id = '';
-                    $course_id = '';
-                    if (\CourseDate::exists($event->assign_user_id)) {
-                        $course_date_id = $event->assign_user_id;
-                    }
-                    if (\Course::exists($event->assign_user_id)) {
-                        $course_id = $event->assign_user_id;
-                    }
-                    $now = time();
-                    $data = [];
-                    if ($with_begin) {
-                        $data['begin'] = $event->begin;
-                    }
-                    if ($with_end) {
-                        $data['end'] = $event->end;
-                    }
-                    if ($with_course_name) {
-                        if ($course_id) {
-                            $course = \Course::find($course_id);
-                            $data['course_name'] = $course->name;
-                        } else {
-                            //No such course.
-                            $data['course_name'] = '';
-                        }
-                    }
-                    if ($with_course_date_id) {
-                        $data['course_date_id'] = $course_date_id;
-                    }
-                    if ($with_course_id) {
-                        $data['course_id'] = $course_id;
-                    }
-                    if ($with_status) {
-                        $data['status'] =
-                            ($event->begin > $now) && ($event->begin <= ($now + 600))
-                            ? 'upcoming'
-                            : (
-                                ($event->begin <= $now) && ($event->end >= $now)
-                                ? 'running'
-                                : (($event->end < $now) ? 'past' : 'takes_place')
-                            );
-                    }
-                    if ($with_today) {
-                        $data['today'] = (date('dmY', $event->begin) == date('dmY', $now)
-                                       || date('dmY', $event->end) == date('dmY', $now));
-                        }
-                    if ($with_room_name) {
-                        $room_name_stmt->execute(['id' => $event->resource_id]);
-                        $data['room_name'] = $room_name_stmt->fetchColumn();
-                    }
-                    if ($with_booking_description) {
-                        $data['booking_description'] = $event->user_free_name;
-                    }
-                    $booking_data[] = $data;
-                }
+        if ($building_ids) {
+            $bookings_stmt_sql = "SELECT ";
+            $fields_sql = [];
+            if ($with_begin) {
+                $fields_sql[] = "rbi.`begin` AS begin";
             }
-            $result = array_merge(
-                $course_dates,
-                $booking_data
-            );
-        } else {
-            //New room management system.
-            if ($building_ids) {
-                $bookings_stmt_sql = "SELECT ";
-                $fields_sql = [];
-                if ($with_begin) {
-                    $fields_sql[] = "rbi.`begin` AS begin";
-                }
-                if ($with_end) {
-                    $fields_sql[] = "rbi.`end` AS end";
-                }
-                if ($with_course_name) {
-                    $fields_sql[] = '`seminare`.`name` AS course_name';
-                }
-                if ($with_course_date_id || $with_course_id) {
-                    $fields_sql[] = "rb.`range_id` AS range_id";
-                }
-                if ($with_status) {
-                    $fields_sql[] = "IF (
-                        rbi.`begin` > UNIX_TIMESTAMP() AND rbi.`begin` <= UNIX_TIMESTAMP() + 600,
-                        'upcoming',
-                        IF (
-                            rbi.`begin` <= UNIX_TIMESTAMP() AND rbi.`end` >= UNIX_TIMESTAMP(),
-                           'running',
-                           IF (rbi.`end` < UNIX_TIMESTAMP(), 'past', 'takes_place')
-                        )
-                    ) AS status";
-                }
-                if ($with_today) {
-                    $fields_sql[] = "IF (
-                        (
-                            FROM_UNIXTIME(rbi.`begin`, GET_FORMAT(DATE, 'ISO')) = CURRENT_DATE()
-                            OR
-                            FROM_UNIXTIME(rbi.`end`, GET_FORMAT(DATE, 'ISO')) = CURRENT_DATE()
-                        ),
-                        '1',
-                        '0'
-                    ) AS today";
-                }
-                if ($with_room_name) {
-                    $fields_sql[] = "r.name AS room_name";
-                }
-                if ($with_booking_description) {
-                    $fields_sql[] = "rb.`description` AS booking_description";
-                }
-                $bookings_stmt_sql .= ' ' . implode(', ', $fields_sql) . ' ';
-                $bookings_stmt_sql .= "FROM
-                    `resource_booking_intervals` rbi
-                    INNER JOIN `resource_bookings` rb
-                    ON rbi.`booking_id` = rb.`id` ";
-                if ($with_room_name) {
-                    $bookings_stmt_sql .= "INNER JOIN `resources` r
-                    ON r.`id` = rbi.`resource_id` ";
-                }
-                $bookings_stmt_sql .= "
-                    WHERE
-                    rbi.`resource_id` IN ( :room_ids )
-                    AND
-                    (
-                        rbi.`begin` BETWEEN :begin AND :end
-                        OR
-                        rbi.`end` BETWEEN :begin AND :end
+            if ($with_end) {
+                $fields_sql[] = "rbi.`end` AS end";
+            }
+            if ($with_course_name) {
+                $fields_sql[] = '`seminare`.`name` AS course_name';
+            }
+            if ($with_course_date_id || $with_course_id) {
+                $fields_sql[] = "rb.`range_id` AS range_id";
+            }
+            if ($with_status) {
+                $fields_sql[] = "IF (
+                    rbi.`begin` > UNIX_TIMESTAMP() AND rbi.`begin` <= UNIX_TIMESTAMP() + 600,
+                    'upcoming',
+                    IF (
+                        rbi.`begin` <= UNIX_TIMESTAMP() AND rbi.`end` >= UNIX_TIMESTAMP(),
+                        'running',
+                        IF (rbi.`end` < UNIX_TIMESTAMP(), 'past', 'takes_place')
                     )
-                    AND rb.`range_id` NOT IN (
-                        SELECT `termin_id` FROM `termine`
-                        WHERE
-                        `date` BETWEEN :begin AND :end
-                        OR
-                        `end_time` BETWEEN :begin AND :end
-                    )";
-
-                $bookings_stmt = $db->prepare($bookings_stmt_sql);
-                //Get all buildings and then store all room-IDs of the rooms
-                //that lie in the selected buildings.
-                $buildings = \Building::findMany($this->building_ids);
-                if (!$buildings) {
-                    //No data can be generated.
-                    return [];
-                }
-                $bookings_stmt_params['room_ids'] = $room_ids;
-            } else {
-                $bookings_stmt_sql = "SELECT ";
-                $fields_sql = [];
-                if ($with_begin) {
-                    $fields_sql[] = "rbi.`begin` AS begin";
-                }
-                if ($with_end) {
-                    $fields_sql[] = "rbi.`end` AS end";
-                }
-                if ($with_course_name) {
-                    $fields_sql[] = '`seminare`.`name` AS course_name';
-                }
-                if ($with_course_date_id || $with_course_id) {
-                    $fields_sql[] = "rb.`range_id` AS range_id";
-                }
-                if ($with_status) {
-                    $fields_sql[] = "IF (
-                        rbi.`begin` > UNIX_TIMESTAMP() AND rbi.`begin` <= UNIX_TIMESTAMP() + 600,
-                        'upcoming',
-                        IF (
-                            rbi.`begin` <= UNIX_TIMESTAMP() AND rbi.`end` >= UNIX_TIMESTAMP(),
-                           'running',
-                           IF (rbi.`end` < UNIX_TIMESTAMP(), 'past', 'takes_place')
-                        )
-                    ) AS status";
-                }
-                if ($with_today) {
-                    $fields_sql[] = "IF (
-                        (
-                            FROM_UNIXTIME(rbi.`begin`, GET_FORMAT(DATE, 'ISO')) = CURRENT_DATE()
-                            OR
-                            FROM_UNIXTIME(rbi.`end`, GET_FORMAT(DATE, 'ISO')) = CURRENT_DATE()
-                        ),
-                        '1',
-                        '0'
-                    ) AS today";
-                }
-                if ($with_room_name) {
-                    $fields_sql[] = "r.name AS room_name";
-                }
-                if ($with_booking_description) {
-                    $fields_sql[] = "rb.`description` AS booking_description";
-                }
-                $bookings_stmt_sql .= ' ' . implode(', ', $fields_sql) . ' ';
-                $bookings_stmt_sql .= "FROM
-                    `resource_booking_intervals` rbi
-                    INNER JOIN `resource_bookings` rb
-                    ON rbi.`booking_id` = rb.`id` ";
-                if ($with_course_name) {
-                    $bookings_stmt_sql .= "LEFT JOIN `seminare`
-                        ON rb.`range_id` = `seminare`.`seminar_id` ";
-                }
-                if ($with_room_name) {
-                    $bookings_stmt_sql .= "INNER JOIN `resources` r
-                        ON r.`id` = rbi.`resource_id` ";
-                }
-                $bookings_stmt_sql .= "
-                    WHERE
+                ) AS status";
+            }
+            if ($with_today) {
+                $fields_sql[] = "IF (
                     (
-                        rbi.`begin` BETWEEN :begin AND :end
+                        FROM_UNIXTIME(rbi.`begin`, GET_FORMAT(DATE, 'ISO')) = CURRENT_DATE()
                         OR
-                        rbi.`end` BETWEEN :begin AND :end
+                        FROM_UNIXTIME(rbi.`end`, GET_FORMAT(DATE, 'ISO')) = CURRENT_DATE()
+                    ),
+                    '1',
+                    '0'
+                ) AS today";
+            }
+            if ($with_room_name) {
+                $fields_sql[] = "r.name AS room_name";
+            }
+            if ($with_booking_description) {
+                $fields_sql[] = "rb.`description` AS booking_description";
+            }
+            $bookings_stmt_sql .= ' ' . implode(', ', $fields_sql) . ' ';
+            $bookings_stmt_sql .= "FROM
+                `resource_booking_intervals` rbi
+                INNER JOIN `resource_bookings` rb
+                ON rbi.`booking_id` = rb.`id` ";
+            if ($with_room_name) {
+                $bookings_stmt_sql .= "INNER JOIN `resources` r
+                ON r.`id` = rbi.`resource_id` ";
+            }
+            $bookings_stmt_sql .= "
+                WHERE
+                rbi.`resource_id` IN ( :room_ids )
+                AND
+                (
+                    rbi.`begin` BETWEEN :begin AND :end
+                    OR
+                    rbi.`end` BETWEEN :begin AND :end
+                )
+                AND rb.`range_id` NOT IN (
+                    SELECT `termin_id` FROM `termine`
+                    WHERE
+                    `date` BETWEEN :begin AND :end
+                    OR
+                    `end_time` BETWEEN :begin AND :end
+                )";
+            $bookings_stmt = $db->prepare($bookings_stmt_sql);
+            //Get all buildings and then store all room-IDs of the rooms
+            //that lie in the selected buildings.
+            $buildings = \Building::findMany($this->building_ids);
+            if (!$buildings) {
+                //No data can be generated.
+                return [];
+            }
+            $bookings_stmt_params['room_ids'] = $room_ids;
+        } else {
+            $bookings_stmt_sql = "SELECT ";
+            $fields_sql = [];
+            if ($with_begin) {
+                $fields_sql[] = "rbi.`begin` AS begin";
+            }
+            if ($with_end) {
+                $fields_sql[] = "rbi.`end` AS end";
+            }
+            if ($with_course_name) {
+                $fields_sql[] = '`seminare`.`name` AS course_name';
+            }
+            if ($with_course_date_id || $with_course_id) {
+                $fields_sql[] = "rb.`range_id` AS range_id";
+            }
+            if ($with_status) {
+                $fields_sql[] = "IF (
+                    rbi.`begin` > UNIX_TIMESTAMP() AND rbi.`begin` <= UNIX_TIMESTAMP() + 600,
+                    'upcoming',
+                    IF (
+                        rbi.`begin` <= UNIX_TIMESTAMP() AND rbi.`end` >= UNIX_TIMESTAMP(),
+                        'running',
+                        IF (rbi.`end` < UNIX_TIMESTAMP(), 'past', 'takes_place')
                     )
-                    AND rb.`range_id` NOT IN (
-                        SELECT `termin_id` FROM `termine`
-                        WHERE
-                        `date` BETWEEN :begin AND :end
+                ) AS status";
+            }
+            if ($with_today) {
+                $fields_sql[] = "IF (
+                    (
+                        FROM_UNIXTIME(rbi.`begin`, GET_FORMAT(DATE, 'ISO')) = CURRENT_DATE()
                         OR
-                        `end_time` BETWEEN :begin AND :end
-                    )";
-
-                $bookings_stmt = $db->prepare($bookings_stmt_sql);
+                        FROM_UNIXTIME(rbi.`end`, GET_FORMAT(DATE, 'ISO')) = CURRENT_DATE()
+                    ),
+                   '1',
+                   '0'
+                ) AS today";
+            }
+            if ($with_room_name) {
+                $fields_sql[] = "r.name AS room_name";
+            }
+            if ($with_booking_description) {
+                $fields_sql[] = "rb.`description` AS booking_description";
             }
+            $bookings_stmt_sql .= ' ' . implode(', ', $fields_sql) . ' ';
+            $bookings_stmt_sql .= "FROM
+                `resource_booking_intervals` rbi
+                INNER JOIN `resource_bookings` rb
+                ON rbi.`booking_id` = rb.`id` ";
+            if ($with_course_name) {
+                $bookings_stmt_sql .= "LEFT JOIN `seminare`
+                    ON rb.`range_id` = `seminare`.`seminar_id` ";
+            }
+            if ($with_room_name) {
+                $bookings_stmt_sql .= "INNER JOIN `resources` r
+                    ON r.`id` = rbi.`resource_id` ";
+            }
+            $bookings_stmt_sql .= "
+                WHERE
+                (
+                    rbi.`begin` BETWEEN :begin AND :end
+                    OR
+                    rbi.`end` BETWEEN :begin AND :end
+                )
+                AND rb.`range_id` NOT IN (
+                SELECT `termin_id` FROM `termine`
+                WHERE
+                    `date` BETWEEN :begin AND :end
+                    OR
+                    `end_time` BETWEEN :begin AND :end
+                )";
 
-            $bookings_stmt->execute($bookings_stmt_params);
-            $result = $course_dates;
-            foreach ($bookings_stmt->fetchAll(\PDO::FETCH_ASSOC) as $row) {
-                //We must keep the key order or the CSV output formatter will
-                //ruin the output:
-                $result_row = [];
-                if ($with_begin) {
-                    $result_row['begin'] = $row['begin'];
-                }
-                if ($with_end) {
-                    $result_row['end'] = $row['end'];
-                }
-                if ($with_course_name) {
-                    $result_row['course_name'] = $row['course_name'];
-                }
-                if ($with_course_date_id) {
-                    $result_row['course_date_id'] = '';
-                }
-                if ($with_course_id) {
-                    $result_row['course_id'] = '';
-                }
-                if ($with_status) {
-                    $result_row['status'] = $row['status'];
-                }
-                if ($with_today) {
-                    $result_row['today'] = $row['today'];
-                }
-                if ($with_room_name) {
-                    $result_row['room_name'] = $row['room_name'];
-                }
-                if ($with_booking_description) {
-                    $result_row['booking_description'] = $row['booking_description'];
-                }
-                if (isset($row['range_id'])) {
-                    if ($row['range_id']) {
-                        //We must check whethet the range-ID represents a course-ID
-                        //or a course date ID.
-                        if ($with_course_date_id) {
-                            if (\CourseDate::exists($row['range_id'])) {
-                                $result_row['course_date_id'] = $row['range_id'];
-                            }
+            $bookings_stmt = $db->prepare($bookings_stmt_sql);
+        }
+
+        $bookings_stmt->execute($bookings_stmt_params);
+        $result = $course_dates;
+        foreach ($bookings_stmt->fetchAll(\PDO::FETCH_ASSOC) as $row) {
+            //We must keep the key order or the CSV output formatter will
+            //ruin the output:
+            $result_row = [];
+            if ($with_begin) {
+                $result_row['begin'] = $row['begin'];
+            }
+            if ($with_end) {
+                $result_row['end'] = $row['end'];
+            }
+            if ($with_course_name) {
+                $result_row['course_name'] = $row['course_name'];
+            }
+            if ($with_course_date_id) {
+                $result_row['course_date_id'] = '';
+            }
+            if ($with_course_id) {
+                $result_row['course_id'] = '';
+            }
+            if ($with_status) {
+                $result_row['status'] = $row['status'];
+            }
+            if ($with_today) {
+                $result_row['today'] = $row['today'];
+            }
+            if ($with_room_name) {
+                $result_row['room_name'] = $row['room_name'];
+            }
+            if ($with_booking_description) {
+                $result_row['booking_description'] = $row['booking_description'];
+            }
+            if (isset($row['range_id'])) {
+                if ($row['range_id']) {
+                    //We must check whethet the range-ID represents a course-ID
+                    //or a course date ID.
+                    if ($with_course_date_id) {
+                        if (\CourseDate::exists($row['range_id'])) {
+                            $result_row['course_date_id'] = $row['range_id'];
                         }
-                        if ($with_course_id) {
-                            if (\Course::exists($row['range_id'])) {
-                                $result_row['course_id'] = $row['range_id'];
-                            }
+                    }
+                    if ($with_course_id) {
+                        if (\Course::exists($row['range_id'])) {
+                            $result_row['course_id'] = $row['range_id'];
                         }
                     }
                 }
-                $result[] = $result_row;
             }
+            $result[] = $result_row;
         }
 
         uasort(
diff --git a/classes/exporters/CourseDateExporter.class.php b/classes/exporters/CourseDateExporter.class.php
index 9276b70bcdc8c113f33d62af2a72e788c65a4c65..efeb7404c10da4705356497a1d624271ec5e9925 100644
--- a/classes/exporters/CourseDateExporter.class.php
+++ b/classes/exporters/CourseDateExporter.class.php
@@ -290,11 +290,7 @@ class CourseDateExporter extends Exporter
             $fields_sql[] = "IF (r.`name` IS NOT NULL AND r.`name` <> '', r.`name`, `termine`.`raum`) AS room_name";
         }
         if ($with_booking_description) {
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                $fields_sql[] = "rb.`user_free_name` AS booking_description";
-            } else {
-                $fields_sql[] = "rb.`description` AS booking_description";
-            }
+            $fields_sql[] = "rb.`description` AS booking_description";
         }
         if ($with_course_name) {
             $fields_sql[] = "`seminare`.`name` AS course_name";
@@ -303,17 +299,10 @@ class CourseDateExporter extends Exporter
 
         $course_dates_stmt_sql .= "FROM `termine` ";
         if ($with_room_name || $with_booking_description) {
-            if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
-                $course_dates_stmt_sql .= "LEFT JOIN `resources_assign` rb
-                    ON `termine`.`termin_id` = rb.`assign_user_id`
-                    LEFT JOIN `resources_objects` r
-                    ON rb.`resource_id` = r.`resource_id` ";
-            } else {
-                $course_dates_stmt_sql .= "LEFT JOIN `resource_bookings` rb
-                    ON `termine`.`termin_id` = rb.`range_id`
-                    LEFT JOIN `resources` r
-                    ON rb.`resource_id` = r.`id` ";
-            }
+            $course_dates_stmt_sql .= "LEFT JOIN `resource_bookings` rb
+                ON `termine`.`termin_id` = rb.`range_id`
+                LEFT JOIN `resources` r
+                ON rb.`resource_id` = r.`id` ";
         }
 
         if ($institute_ids || $course_type || $with_course_name) {
diff --git a/migrations/03_remove_rrv1_compat.php b/migrations/03_remove_rrv1_compat.php
new file mode 100644
index 0000000000000000000000000000000000000000..630df85b7a7e3fdca458e2a5c7d1337cdc5f51f8
--- /dev/null
+++ b/migrations/03_remove_rrv1_compat.php
@@ -0,0 +1,26 @@
+<?php
+
+
+class RemoveRRV1Compat extends Migration
+{
+    protected function up()
+    {
+        $c = Config::get();
+        $c->delete('FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME');
+    }
+
+
+    protected function down()
+    {
+        $c = Config::get();
+        $c->create(
+            'FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME',
+            [
+                'type' => 'string',
+                'section' => 'Flexexport',
+                'value' => 'Gebäude',
+                'comment' => 'Name der Ressourcenkategorie für Gebäude. Diese Eigenschaft ist ab Stud.IP 4.5 irrelevant!'
+            ]
+        );
+    }
+}
diff --git a/plugin.manifest b/plugin.manifest
index fa6a0227ca8375d267639ea9f6bbe1657c9d5c63..6f9e7489589b951944e0d2456e93809cf702427b 100644
--- a/plugin.manifest
+++ b/plugin.manifest
@@ -1,7 +1,7 @@
 pluginname=Flexexport
 pluginclassname=Flexexport
 origin=data-quest
-version=0.7.2
-studipMinVersion=4.3
+version=0.7.3
+studipMinVersion=4.5
 studipMaxVersion=5.2.99
 description=Das Flexexport-Plugin erlaubt den Export von Stud.IP-Inhalten in verschiedenen Formaten.