The Room Reservations module was developed for use by academic libraries to manage access to and use of their study rooms.

All academic libraries have rooms set aside for student study and collaboration. These rooms are often available on a first come, first serve basis. Many libraries would like to have a room reservation system that would allow students to better plan their use of these often scarce resources, but setting up and administering such a system without computer support is a very difficult and time consuming undertaking.

The Room Reservation module was created to meet this need. It allows any library to very quickly put together a reservation system customized to its own particular requirements. And once the system has been set up, it performs all the functions necessary to manage the use of group study rooms with practically no involvement from the library staff.

Although this application was written specifically for use by academic libraries, it could also be useful to any facility that provides rooms that can be reserved and used on a short term basis.

Set Up

For the library or facility creating the application, set up is easy and straightforward. Records need to be created for each of the rooms that can be reserved. The facility hours have to be entered so that reservations are only made for the actual hours that the rooms are available. Messages need to be written that will be sent to the students or other users when a reservation is made. And various parameters have to be set that reflect the facility’s policies regarding reservations, such as:

• what is the longest length of time for any reservation
• how many reservations can be made by a single user
• how far ahead of time can a room be reserved


Once the module has been set up, it is also very easy and intuitive for students or other customers to use. The application presents the user with a calendar of rooms and time slots showing when the facility is open and which rooms are available. It’s a simple matter to find an available room, click the block that corresponds to the room and time desired, and secure the reservation by filling out a short form. Users are able to completely manage the reservation process by themselves. It is rare that a user needs to seek additional assistance from anyone in the facility staff.

Sponsor - D6

This module was sponsored by Randall Library at the University of North Carolina Wilmington. A customized version has been in use since February 2012 by students, faculty, and staff to reserve space in the library's group study rooms.

Sponsor - D7

The D7 port of this module was done by LiquidCMS for Squared Design Labs and MIT (Massachusetts Institute of Technology).

Additional enhancements/fixes have been funded by:
Conservatorio di Milano, Milan, IT
Herrick District Library, Holland, MI, US

Similar Modules

There are a number of other reservation type modules available, including Simple Reservation, Reservation, Reservations, and Checkfront. Simple Reservation is indeed a simple application that could be useful in a number of situations. As the project page states, it could be used for “hotel rooms, boats, cars,airplanes, basically anything you can think of which can be reserved by one individual.” The other modules were created for very specific purposes. Reservation is for reserving individual seats at a theater or restaurant. Reservations can be used with items that are priced, inventoried, checked out, and then checked back in. Checkfront was designed for renting rooms in a bed and breakfast.

What distinguishes this module from the others is that it was created specifically to meet the requirements of academic libraries with a number of rooms that students use for individual and group study. The most challenging requirement for such a system is to provide students with a quick way to review all of the available room choices. In a facility with 10 study rooms that is open 24 hours a day, there are almost 500 different half hour time slots that can possibly be reserved.
At most libraries, there is often a very high demand for study rooms. The available reservations fill up quickly. As reservations are made, it becomes more difficult to find a suitable room that is available at the same time that a group of students is free to work. Users need an easy way to find open rooms and select the choice that best meets their needs. The reservation calendar within the Room Reservation module makes this process simple and intuitive.

Study rooms are typically used by a group of students. The reservation calendar also makes it easy for an individual student to find and remember the location of his or her group without searching through the entire library.

Room Reservations also contains a number of additional features needed to make such a system work at an academic library, including room descriptions, configurable facility hours, customizable confirmation and reminder messages, and and several options for enforcing various library policies.

Drupal 8 Version

I fully intend to redo this module from scratch for D8; but as of Nov 2016 D8 still seems too flaky to work with. Once they have a decently stable version of D8, I will port.

The plan for D8 version:

NOTE: D8 version renamed to: Reserve.

- convert to use of 2 entities: reservation and reservation entity category
- and 1 reservation category field which can be added to any entity to allow booking that entity

This should make it possible to book pretty much anything and provide multiple booking calendars. For example, book people, rooms and cameras.

My current idea is to have each bundle get its own calendar. So possibly:

Room Calendar: (user makes their own Room node bundle)
- large rooms (reservation category, RC)
-- Room 100 (a node of bundle Room, tagged with large rooms RC)
-- Room 101
- small rooms (reservation category)
-- Room 200
-- Room 201

Camera Calendar (user makes their own Camera node bundle)
- video cameras
-- Video Camera 1
-- Video Camera 2
- still cameras
-- Canon 3E #1
-- Canon 3E #2

Consultants Calendar (users on site, user could use std field role permissions module to limit the RC field on user to users in specific role)
- IT (RC)
-- tom
-- jane
- Marketing (RC)
-- nancy
-- beth

Some other ideas i am toying with changing from how D7 version works:
- allow configurable size timeslots

Drupal 7 Version

Some major changes and additions were done for the port of this project to D7:


  • std Drupal fields are now used as well as nodes for rooms, categories and reservations. This allows many standard Drupal modules to be used such as Views.
  • the original pages for My Reservations and Room Listings have now been replaced by views - there is most likely a lot of "dead" code still included in the D7 code; it is of 2 types:
  • 1. code which is and won't be required anymore due to architecture changes such as using fields/nodes - but that I haven't gotten around to cleaning out yet
  • 2. features from the D6 version which have not yet been ported over to D7 (but which will hopefully be done at some point by us or anyone nice enough to contribute, or contribute by funding us or someone else). This is mostly the notification system.

New Features:

  • major node/field architecture changes to better align with D7 way of doing things and use of Views where applicable.
  • repeat booking feature: can book all days from current day until day selected or can book all day of the week until day selected.
  • private booking: allow the group name (i.e. Reservation title) to be hidden
  • expanded user permissions
  • use date popup calendar to select calendar date
  • more options for both extended and standard book ahead limits which allows admins to pre-book rooms up to a year in advance
  • fix how default hours works (i don't think it worked correctly in D6 version)
  • use Qtip to show Room descriptions on hover:

New Features (7.x-2.x):

  • modify how perms are handled to allow better integration with other modules implementing hook_node_access()
  • allow definition of setup/takedown buffers (per category)
  • add support for minimum advanced booking limit (per category)


We have not yet ported over the notification system that was part of the original D6 version of this module (feel free to provide a patch or funding).

Supporting organizations: 
port to D7

Project information