Calendar Resource Management

July 27, 2026 · View on GitHub

REUSE status

Calendar Resource Management is a Nextcloud app for managing shared resources—such as buildings, floors, meeting rooms, general resources, and vehicles—for use with the 🗓️ Nextcloud Calendar app.

  • For users: View room availability for selected time slots and choose an appropriate location when booking events.
  • For administrators: Configure resource details such as capacity, accessibility, contact information, and group restrictions through CLI commands.
  • Calendar integration: Make configured resources available in Nextcloud Calendar.

Installation

The app is distributed through the app store and you can install it right from your Nextcloud installation.

Release tarballs are also hosted at https://github.com/nextcloud-releases/calendar_resource_management/releases.

Configuration

Use php occ from the Nextcloud installation directory to manage resources. Create parent entities before dependent ones:

  1. Create a building.
  2. Create one or more floors in that building.
  3. Create rooms on a floor, or create general resources and vehicles associated with a building.

Boolean options default to false when omitted. Each create command prints the ID of the new record as its final line; use that ID when creating dependent records or restrictions.

CommandPurposeRequired argumentsOptional argumentsNotes
calendar-resource:building:createCreate a building.display_name--address, --description, --wheelchair-accessibleCreate a building before adding floors, general resources, or vehicles.
calendar-resource:story:createCreate a floor in a building.building_id, display_namestory is the command’s internal term for a floor.
calendar-resource:room:createCreate a room on a floor.story_id, uid, display_name, email, room_type--contact-person-user-id, --capacity, --room-number, --has-phone, --has-video-conferencing, --has-tv, --has-projector, --has-whiteboard, --wheelchair-accessibleThe room uid and email address must be unique.
calendar-resource:resource:createCreate a general resource associated with a building.uid, building_id, display_name, email, resource_type--contact-person-user-idThe UID and email address must be unique.
calendar-resource:vehicle:createCreate a vehicle associated with a building.uid, building_id, display_name, email, vehicle_type, vehicle_make, vehicle_model--contact-person-user-id, --is-electric, --range, --seating-capacityThe UID and email address must be unique.
calendar-resource:restriction:createRestrict a room, general resource, or vehicle to a group.entity_type, entity_id, group_identity_type must be room, resource, or vehicle. Creating a restriction marks the entity as restricted.
calendar-resource:restrictSet or clear the restricted flag for a room, general resource, or vehicle.entity_type, entity_id, restrictedrestricted accepts on/off, true/false, or 1/0.
calendar-resource:resources:listList configured buildings, floors, rooms, resources, vehicles, and restrictions.
calendar-resource:resource:deleteDelete an entity and its associated records.type, idValid types are building, story, room, vehicle, resource, and restriction.

Example: create a meeting room

php occ calendar-resource:building:create \
  --address="Testweg 23, 12345 Berlin, Germany" \
  "Berlin office"

php occ calendar-resource:story:create 1 "Second floor"

php occ calendar-resource:room:create \
  --wheelchair-accessible=1 \
  --capacity=25 \
  --room-number=201 \
  --contact-person-user-id="demouser" \
  1 \
  "berlin-office-room-201" \
  "Meeting room 201" \
  "room.berlin.office.201@example.invalid" \
  "Meeting room"

The room email address must be unique. If no real mailbox is required, use a unique placeholder address such as room.berlin.office.201@example.invalid.

Changes are made available to Nextcloud Calendar through the app’s Calendar integration. Ensure that Nextcloud background jobs are configured correctly.

Database tables

The following tables store the entities managed by this app. They are implementation details and should not normally be modified directly; use the OCC commands above or the app’s data layer instead.

EntityDatabase tableRelated command(s)
Buildingscalresources_buildingscalendar-resource:building:create
Floors (story)calresources_storiescalendar-resource:story:create
Roomscalresources_roomscalendar-resource:room:create
General resourcescalresources_resourcescalendar-resource:resource:create
Vehiclescalresources_vehiclescalendar-resource:vehicle:create
Group restrictionscalresources_restrictscalendar-resource:restriction:create