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


From MoodleDocs

workplacelogo.png This feature is part of Moodle Workplace, which is available through Moodle Partners.


Programs are entities that contain a list of courses that are required to be completed by users. These courses can be grouped into a hierarchical structure and can be arranged in a specific order within the program. To access the Programs tool, select Programs from the Workplace launcher.

Moodle Workplace

Programs list

This list shows all existing programs according to their "Active" or "Archived" status. Active programs are the ones we can modify and are available to users. Archived programs cannot be edited and are not available to users. Only archived programs can be deleted from the system but doing so we will lose related data in reports.

On this page we can also duplicate a program, which includes all configuration and content but excludes user allocations.

Creating a new program

To create a new program press the "Add new program" button and choose a name and description for your program. In case you have previously created program custom fields they will appear at the end of this form. Once this step is complete, we can configure the program content and allocate users.

Adding courses

Courses can be added to your program from the program "Content" tab. We can either add individual courses, or group them together in "sets".

  • To add a course click the add button and select "Course". You can select as many courses as you want.
  • To add "sets" of courses click the add button and select "Set". Give your set a name and select which courses you want to add to it. See the section on completion below to define how the set should be completed by a user

You can use drag-and-drop o re-order elements within the program in order to set a specific order.


Each program, and course sets within it, can define how they should be considered as being completed by the user:

  • All in order - the user must complete all courses in the order specified
  • All in any order - the user must complete all courses in no particular order
  • At least X - the user must complete at least X number of the courses


Under the program "Schedule" tab, we can define the availability and allocation times for the program. The "Allocation window" defines when a user can be allocated to a program. The "Availability" section defines a start and end date during which time a user can access the program. The due date is the time by which the user should have completed the program. Each of the times can be set relative to another, for example a users start date could be considered to be immediately after their allocation date with a due date one month later.

User allocation

Users can be manually allocated to a program from the "Users" tab. This page also lists all allocated users from other sources (such as via a Certification). For those users allocated to a program via a certification, the status of the certification is also shown.

On this page we can also modify allocation dates (start date, due date and end date) individually for each user, suspend a user allocation and reset a user's program (caution: this will reset all program set/course completion for the user).

Dynamic rules

The Dynamic rules tab gives quick access to some rules which affect this program and are created by default. This will allow the site administrator to do things like sending a notification to the user when they're allocated to the program, issuing a certificate or a badge, granting a competency upon program completion, or sending a reminder when the program is overdue. Set actions for these predefined rules and click the toggle button to activate them.

User Dashboard

When a user logs into Moodle Workplace and visits their Dashboard they will see all the active programs they have been allocated to, showing their completion status and allowing easy access to the courses contained within the program. User will have to complete courses in each set according to the completion criteria previously defined in the program content page.

Workplace dashboard

Program reset

A manager is able to reset a program for an individual user from the program users list. This will reset all courses that are part of this program. The users' course completion data, individual assignments, grades and ratings will be reset. Data related to collaborative activities inside program courses will not be reset - this includes workshop, forum, assignment group submissions and collaborative wikis.

A course reset report is also available from the Report builder. To generate it a manager just needs to go into the Report builder tool and create a new report using the “Course reset for individual user” report source.

Shared courses

Sharing courses between tenants

In the default Workplace installation users do not have the capability moodle/category:viewcourselist outside of their tenant's category. This means that the Tenant administrator or Programs Manager will not see courses outside of their own tenant's course category when they add courses to the programs.

However the site can be configured so that there is a "Shared" course category that overrides permissions and allows users to browse courses there, or a special user could be created who creates programs for different tenants and has access to all courses. In any case, it is possible to add the same course to different programs that belong to different tenants.

A manager who manages the program will see the "attention" icon next to the courses that do not belong to the current tenant's course category. It is highly recommended to have all shared courses in "Separate groups" mode and force the group mode for all activities.

The Programs enrolment method will always allocate users from different tenants into different groups. Groups will be created automatically based on the name of the tenant. They can be manually renamed later without affecting the allocation of future students.

Sharing courses between programs

Even within the same tenant, multiple programs may use the same course. By default users enrolled into the same course via different programs will not be in different groups, however it is possible to specify in Program settings that a group has to be created in each program course for the users allocated to the program.

The same can be done for certifications. Each certification can have their own groups in the courses. For example, a new certification may be created for each cohort of students taking the same program and by separating them into groups the manager can ensure that they don't see forum posts or other activity from other cohorts.