Session Booking

From MoodleDocs
Session Booking
Type General plugins (Local)
Set N/A
Downloads Plugins directory link unavailable at present
Maintainer(s) Mustafa Hajjar

What is Session Booking?

Session Booking is a plugin that allows aviation training organizations (ATO) manage instructor-led training sessions. The plugin allows student pilots to post their availability for instructor-led sessions, and instructors to book sessions against students availability. It provides a workflow that starts with students posting availability time slots, instructors booking against student posted time slots, and finally instructors grading assignments associated with joint sessions.

Session booking workflow

The plugin also allows course managers in assigning students to specific instructors, and monitor instructor participation in instructor-led sessions. In addition, student sessions are prioritized based on a weighted scoring mechanism based on four variables: session recency, lesson completion, course activity, and availability posting. Also, priority can be configured to give more weight to any of the four variables in the plugin settings.

The module was created and is currently maintained by Mustafa Hajjar.



  • The plugin requires three roles are defined to benefit from certain access restricted capability.
  1. Instructor role: [shortname=instructor] ARCHETYPE: Teacher (non-editing)
  2. Senior Instructor: [shortname=seniorinstructor] ARCHETYPE: Teacher (editing)
  3. Flight Training Manager: [shortname= flighttrainingmanager] ARCHETYPE: Manager

Moodle plugins install

1. Download session-booking zip

2. Site administration > Plugins > Install plugins

3. Drop or upload the zip file

CLI install

$ cd [path-to-moodle]\local
$ mkdir booking
$ cd booking
$ git clone


Session booking has multiple settings that can be set to configure the plugin's behavior. There are two kinds of settings for Session booking, one set that affects the plugin behavior that is only accessible to site administrators 'Plugin settings', and the other set is specific to each course and accessible to course managers 'Course settings'.

Plugin settings

  • First session time: indicates the starting hour for availability posting.
  • Last session time: indicates the ending hour for availability posting.
  • Availability posting weeks lookahead: indicates how many weeks ahead a student can post.
  • Wait period: indicates the standard wait period after last session and for on-hold, suspension, and instructor overdue session calculation.
  • Recency prioritization: is a multiplier for weighing recency in prioritization score.
  • Slot count prioritization: is a multiplier for weighing availability posting count in prioritization score.
  • Course activity prioritization: is a multiplier for weighing course activity in prioritization score.
  • Lesson completion prioritization: is a multiplier for weighing lesson completion in prioritization score.

Course settings

  • Use session booking: is a checkbox that indicates whether or not to enable 'Session booking' for the course.
  • Training type: Dual and Multi-crew type training.
  • Posting wait restriction: A restriction period in days between the last conducted session and the next time a student can post availability (0 = disable restriction).
  • On-hold restriction: A restriction period in days after which inactive students will be automatically placed on-hold (0 = disable restriction).
  • Suspension restriction: A restriction period in days after which inactive students will be automatically suspended from the course (0 = disable restriction).
  • Instructor session overdue notification: A period in days after which inactive instructors will be automatically sent a notification (0 = disable restriction).
  • Home airport ICAO: the course's home airport ICAO code.
  • Training Aircraft ICAO: the course training aircraft ICAO(s).
  • Course Exercise custom titles: allows course managers to add custom labels to the progression view vs. the exercise (assignment) name.


Roles and capabilities are supported since the version for Moodle 1.9.

Capability Description Status
local/booking:view an instructor can view session booking. implemented in 1.0
local/booking:availabilityview a student can post availability (add and delete). implemented in 1.0
local/booking:logbookview a student can view own log book entries. implemented in 1.0
local/booking:participationview a course manager can instructor participation in instructor-led session booking. implemented in 1.0
local/booking:studentnotification an instructor can send email notifications to student, including booking notifications, session cancellations. implemented in 1.0
local/booking:instructornotification a student can send email notifications to instructors with booked session confirmation. implemented in 1.0

Note: a Beta User role can be defined at soft-launch with capability '/local/booking:availabilityview' while removing the capability from students during the beta period.


The following are the highlights and key features of Session Booking:

  • Allows instructors to book students based on their recorded availability.
  • Allows students to record and manage their weekly availability for sessions.
  • Allows course managers in assigning students to instructors.
  • Tracks instructor participation in conducting student sessions.
  • Tracks flight data and tracks student pilot log book entries.
  • Manages email communication between students and instructors.
  • Provides a dashboard for instructors and course administrators to visualize student progression throughout the course.
  • Provides a custom student prioritization mechanism for booking sessions based on student's session recency, course activity, availability posting, and lesson completion.
  • Provides session calendar integration with Moodle, Google, and Outlook Live calendars, including (ics) standard iCal calendar file download.
  • Provides simple course specific logbook and EASA format.
  • Allows for Administration and flight time analysis reporting.
  • Allows for configuration-specific integration with external data sources for PIREP, aircraft, and fleet lookup.
  • Provides automatic notification for student inactivity warnings, placement on-hold, suspension and instructor inactivity.
  • Provides course-specific student profile with relevant information along with administration functions to manage logbook entries, on-hold management, overdue restriction override, keep alive for inactive students placed on-hold.

Availability posting


Students can post their availability on a weekly calendar view once a preset restriction wait period had passed after the student’s last instructor-led session. The calendar view can be accessed from Moodle's left navigation panel under the 'My availability' link. The navigation panel can be displayed by clicking the 'hamburger' icon to toggle the navigation drawer.


To post availability simply click and drag on any set of contiguous time slot in the active area of the displayed week. This will result in the selected time slots turning green as shown in the diagram below. To deselect the selected slot, simply click and drag again, and the selected time slots will turn back to a white background. Once all desired time slots are selected, click the [Save] button to record marked availability posts.


Students can copy previously saved postings of a week and paste them into a different week by navigating to the week containing the desired slots, clicking on the [Copy] button, navigating to a different week (previous or next), then clicking the [Paste] button. After pasting, make sure to click the [Save] button prior to navigating away from the current week or to a different page.


To delete all postings of a specific week, simply click on the [Clear] button, which will clear all posted availability time slots. Don't forget to [Save] before navigating away from the current week or to a different page.

All students view

The link at the bottom of the page [View everyone's availability] allows students to view all posted availability for everyone in the course for that week. Also, this gives an indication of the number of booked sessions during that week.

Availability posting
Availability posting

Note: postings are only visible to instructors when the current lesson and all past lessons have been completed.

Note: The local time can be set in the User Profile page under timezone to reflect the correct student timezone.

Pilot logbook

Upon completion of an instructor-led session, the instructor adds the flight time duration, session duration, and potentially solo flight time duration when applicable. Students can access their logbook from the left navigation panel under the 'My logbook' link. The view provides a summary of the total flight times, session times, and solo flight times. For each session a more detailed log data is displayed including flight date, flight durations, aircraft type, pilot callsign, the primary and secondary pilot in command, PIREP number, and finally departure and arrival airport ICAO code.

Student course logbook
Student course logbook
Student EASA logbook
Student EASA logbook

Booking sessions

Instructors can book against student posted availability from the left navigation menu under the 'Session booking' link. The view lists all active students, their session priority, booking & grading actions, and course progression for each student. Completed and graded sessions are marked in blue, tentatively booked sessions prior to student confirmation are marked in orange, and confirmed bookings are marked in green.

Booking a session

Grading and feedback

Instructor dashboard

At the bottom of the 'Session booking' page, the instructor can see two sections that lists the instructors active bookings under 'My active bookings', and assigned students under 'My assigned students'. The instructor can cancel any active booking by clicking on the [Cancel] button next to the active booking, which will in turn prompt the instructor to provide a comment to the student regarding the cancellation.

Course managers can find an added section at the bottom that lists instructors' participation in the course, which notes the instructor role(s), last instructor-led session with a student, and the days since last conducted session.

Session Booking
Session Booking

Inactive [Book] button indicates that the student has not completed pending lessons for the upcoming exercise (assignment). Once the student completes current and all past lessons, the [Book] button will turn active with a green background.

Logbook entry

Instructors should add a new log book entry after each graded session to be reflected in the student's logbook. Log book entries can be added by clicking on the info icon after it is graded. Existing log book entries can be edited or deleted when clicking on an existing graded session as shown below:

Relevant information

Instructor dashboard
Instructor dashboard

Calendars integration

Session calendar integration with Moodle, Google, and Outlook Live calendars, including (ics) standard iCal calendar file download.

Privacy Policy for BAVirtual Session Booking

Google calendar

Requires OAuth verification by Google.

Outlook Live calendar

Requires OAuth verification by Microsoft.

iCal calendar

External data source integration

The plugin provides capability to lookup PIREPs data for logbook recording, pilot verification of entered PIREPs, and aircraft fleet engine-type lookup. This integration is driven by a json configuration field in the plugin settings under Integrations.


How to override restriction for students during the posting wait period?

in the Session Booking interim page after clicking the Book button, click the 'Override' button with the label 'Restriction wait period'. After doing so the student can post availability period to the wait period.

How to override on-hold restriction to keep the student active?

This restriction can be overwritten by removing the 'OnHold' group from the student Participants list and adding the 'Keep Active' instead, to keep the student active after on-hold restriction period had passed.

How to stop graduated students from showing in the Session Booking page?

Add the graduating student to the 'Graduates' group to from the Participants list.

How to stop inactive instructors from showing in the Instructor Participation list in the Session Booking page?

Add the inactive instructor to the 'Inactive Instructors' group from the Participants list.

How to report a bug

Please, use the plugin's github repository issue tracking. Stamp collection if one of the components in "Non-core contributed modules" project. See the list of tracked issues at

Feature ideas and requests

Note: This section will be moved to the tracker feature requests.