Note: You are currently viewing documentation for Moodle 3.11. Up-to-date documentation for the latest stable version of Moodle may be available here: Session Booking.

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.



$ sudo apt-get update
$ sudo apt-get install pdftk
  • 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

Authorized Training Organization (ATO)

  • Name: the name of the ATO using the plugin.
  • Website: the official website for the ATO.
  • Email: contact email for the ATO.
  • Logo URL: the ATO logo URL.

Availability posting

  • 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.

Booking prioritization

  • 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.
  • Course outcome: The outcome of the course or rating for completing the course.
  • 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.
  • Examiner form URL: the URL for the skills test evaluation form. Leave empty if the course has no completion evaluation or assessment.
  • Training Aircraft ICAO: the course training aircraft ICAO(s).
  • Course Exercise 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] blue button next to the active booking, which will in turn prompt the instructor to provide a comment to the student regarding the cancellation.

In the case where a student misses a scheduled session without prior notification, the instructor can report the student as a 'no-show' from the 'My Bookings' section by clicking the [No-show] red button next to that active booking. At which case, a warning notification is sent to the student and a similar copy is sent to all instructors. In the event that a student is reported again within a three-month period, they are immediately suspended for a period of 30-days, and automatically reinstated after that period ends. A third no-show occurrence within that three-month period, the student is indefinitely suspended, and a notification is sent to all instructor recommending the student be unenroll from the course.

Note: At no time does the plugin automatically unenrolls a student from the course, which in turn deletes the student's course progress data.

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

Student profile

A student profile specific to session booking operation can be accessed from the Session Booking page by clicking on the student's name. The profile page shows student's basic information, progress, and allows instructors to endorse students for a skill test once qualified. For courses subscribing for restrictions, the profile page allows instructors to suspend a student, put a student on-hold, keep active, and override availability wait time restrictions. The reporting section of the profile provides access to both Moodle standard Outline and Complete reports along with some audit reports. The audit reports allows an instructor to view Mentor report containing student progress and mentor feedback. The Theory examination report provides the student exam results. Lastly, the Practical Examination report shows the student's feedback from the skills test ride (check ride).

Student profile
Student profile


The following are email notifications sent from the plugin:

Immediate notifications

  • Session booked notification: notifies the student that a session has been booked by the instructor.
  • Booked session instructor confirmation: a confirmation to the instructor of the student booked session.
  • Student confirmation of booked session: notifies the instructor that the student confirmed the booked session.
  • Student logbook entry notification: notifies the student whenever a logbook entry is recorded by the instructor.
  • Student session cancellation notification: notifies the student that the instructor cancelled the booked session.

Activity notifications

  • Student inactive warning notification: notifies the student warning him/her one week before the posting wait period date.
  • Student on-hold warning notification: notifies the student when becoming inactive after the posting wait period had passed.
  • Student placed on-hold notification: notifies the student of being placed on-hold after the On-hold restriction period had passed.
  • Student suspended notification: notifies the student of being suspended after the suspension restriction period had passed.
  • Instructor session overdue notification: notifies the instructor when becoming inactive after the posting wait period had passed.

Scheduled notifications

  • Student availability posting notification: notifies instructors of availability slot posting by a student.
  • Student recommendation notification: notifies examiners of a student being recommended for the skills test (if applicable).
  • Graduating students notification: sends a congratulatory message to all students and instructors of a graduating student.

Note: Any user can edit their preference for receiving these notifications from the user's profile Notification preferences.

Note: Activity and scheduled notifications are processed part of the server tasks, and their frequency can be changed from their default values in the Administrator settings / Server/ Scheduled tasks page.

Calendars integration

Session calendar integration with Moodle, Google, and Outlook Live calendars, including (ics) standard iCal calendar file download. Some calendar providers such as Google will require you to provide a privacy policy accessible to users describing how their calendar is being accessed. Below is an example of the BA Virtual Session Booking privacy policy:

Privacy Policy for BAVirtual Session Booking

Google calendar

Requires OAuth2 verification by Google and Moodle OAuth 2 Services setup as well:

  • Add the text 'Calendar' as the service Name. i.e. 'Google Calendar'
  • Select [Internal services only] for This service will be used
  • Scopes should be [openid] for the Scopes included in a login request
  • Other settings can remain as the default

Microsoft Outlook Live calendar

Requires OAuth2 verification by Microsoft and Moodle OAuth 2 Services setup as well:

iCal calendar

External data source integration

The plugin provides the ability to integrate PIREP data, pilot verification, and aircraft fleet and engine-type with external databases to be pulled for logbook entry recording. This integration is configured through a JSON file (config.json) included in the plugin distribution to map internal plugin data structure to the external databases. The file structure starts with the "integrations" tag and a nested tree representing the type of data being integrated, the source tables, fields, and primary/foreign key pairs. Illustration below :

integration json.png


How to book a session with a student sooner than the preset restriction wait period?

From the student's course profile accessible from the Session Booking page click on the hyperlink of the student's name. Click on the 'Restriction override' rocker button, and after that the student can post availability slots prior to the waiting period.

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

From the student's course profile accessible from Session Booking page by clicking on the hyperlink of the student's name. Click on the 'Keep active' rocker button, and after that the student will stay in the active students list until his/her next session booking, after that the 'Keep active' button will be turned off automatically.

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.