If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Moodle Workplace 3.11 release notes

From MoodleDocs

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


See our Moodle Workplace 3.11 new features page in the user documentation for an introduction to Moodle Workplace 3.11 with screenshots.

Major features

Moodle Workplace 3.11 is based on top of Moodle LMS 3.11 and has all the new features of the open-source version. It is also fully tested with PHP 8 and has the Accessibility toolkit (that also works with the Workplace own course format and activity modules). In addition, it contains all exclusive features from Moodle Workplace:

  • New Report Builder audience UI: The audiences UI has been completely refactored making it easier to introduce new audience types following the same approach as in Dynamic Rules conditions and actions: There are three new types of audiences available for system roles, cohorts and manually added users.
  • New Report Builder Scheduling: Following audiences, Report Builder scheduling has been refactored too. Now you can just pick any existing audiences as recipients to easily schedule a report for them.
  • New My Learning and My Teams blocks: Learning Overview and Teams can now be added as standard blocks to the dashboard, bringing more customisation to the Workplace dashboard.
  • SAML2 in Workplace: Moodle Workplace brings higher compatibility for the auth_saml2 plugin, the first step to make it multi-tenant. Workplace 3.11 is compatible with the next SAML2 version that will be released soon.

Other interesting features

  • Dynamic rules condition for Competencies
  • Appointments completion based on booking
  • Web services for updating Departments and Positions
  • New completion UI in Workplace course format
  • Improved Organisation Structure UI for a large number of elements
  • Setting to disable live data in custom reports edition

Upgrade notes for 3.11

Report Builder Audiences and Schedules

Due to the changes introduced in the audience and schedules, audiences and schedules from versions prior to 3.11 need to be upgraded following this process (see Upgrading audience and schedules prior to 3.11):

  • Audiences: report audiences based on job department/position will be converted to the new "job" audience type.
  • Schedules: New audiences will be automatically created for previously defined report schedule recipients for job department, position and manually added users. Each of these audiences will automatically be added to the new schedule as recipients.

Note recipient emails are no longer supported in schedules. Where previous schedules used these, the person who created the schedule will receive an email notifying that changes. The email will include a link to this page.

As an alternative to external email addresses, consider creating users with the 'No Login' authentication method.

The same process will be followed when importing Report Builder audience and schedules prior to 3.11 using the Migration tool.

My Learning and My Teams blocks

New blocks "My learning" and "My teams" are optional and can be used instead of "Teams" and "Learning" tabs on the dashboard, however be careful not to use a tab and the respective block at the same time as it is confusing and the UI controls may conflict. In order to switch from using tabs to blocks:

  • Go to "Site administration > Appearance > Themes > Workplace" and disable the Teams and Learning tabs
  • Go to "Site administration > Plugins > Blocks > Manage blocks" and enable "My teams" and "My learning" blocks
  • Go to "Site administration > Appearance > Default dashboard page", switch to edit mode and add new blocks to the default dashboard. Reset dashboard for existing users if necessary.

If the Teams and Learning tabs were already disabled in your settings at the moment of upgrade, the new blocks will be enabled and you won't need to perform steps 1 and 2.

New Workplace installations will have tabs enabled and blocks disabled.


See our Moodle Workplace 3.11.1 new features page in the user documentation for an introduction to Moodle Workplace 3.11.1 with screenshots.

Major features

  • Per-tenant dashboards: Now it’s possible to define a specific dashboard for each tenant with the same editing capabilities Moodle already implements in the core Dashboard. Thanks to this, tenants administrators will be able to manage their tenant’s dashboard and reset the configuration for users in the tenant.
  • Multi-tenant SAML2: auth_saml2 now supports per-tenant configuration in Workplace. You can limit IDPs to individual tenants and also configure fields locking per tenant.
  • Configure different user profile fields per tenant: We have extended multi-tenancy support in user profile fields to allow the definition of different user profile fields per each tenant. Additionally various reports around Workplace now display profile fields defined as identity fields.

Other interesting features

  • Report Builder Audiences and Schedules
    • Improve empty state for Report Builder audiences
    • Cohort audience type improvement
    • Disable schedules creation when there are no audiences defined for the Report
  • Improve performance for Course completion report sources
  • MyTeams block UI Improvements
  • Add filters to Programs and Certifications admin pages
  • Support for Production state setting in Workplace App
  • Improved multi-tenant authentication support in Workplace App

Upgrade notes for 3.11.1

Per-tenant dashboards

In Moodle Workplace 3.11.1 there is a new capability "Manage dashboard settings for the current tenant" (tool/tenant:managedashboard). This capability is allowed by default in the "Tenant administrator" role, however for security reasons it is not allowed if you upgrade Moodle Workplace from the previous versions. If you do want to grant it to the existing Tenant administrators, you will need to modify the "Tenant administrator" role.

Global administrators are always able to manage any tenant's dashboard.

By default all tenants' dashboards are "linked" to the site default dashboard and any modifications to the site default dashboard will appear for the new users in any tenant. Global administrator or tenant administrator with the proper capability can choose to create a personalised dashboard and then will be able to modify it.

Remember that any modifications to any default dashboards will not apply to existing users unless you reset users dashboards.

Course reset and recovering course grades

In Moodle Workplace 3.11.1 we have introduced a new site setting "Delete grades history during course reset" ($CFG->tool_wp_deletegradeshistory). This setting is enabled by default. This setting is important if you use recurring certifications or "Program reset" functionality.

Moodle LMS (and Moodle Workplace) has a setting "Recover grades default" ($CFG->recovergradesdefault). With this setting if you unenrol and then re-enrol a user into the same course they will not lose their grades since grades will be restored from the grades history. This will apply to any enrolment method, including course enrolments through MW Programs or MW Dynamic rules. It is a very useful setting and we recommend you enable it. However in the previous Moodle Workplace versions, it would conflict with the "Course reset" functionality (used in re-certifications and Program reset).

Multi-tenancy support in SAML2

The Moodle Workplace team have partnered with Catalyst to add multi-tenant support to the auth_saml2 plugin. The plugin can be downloaded from the git repository, remember to use the latest version since the last and important multi-tenancy features were only merged into the plugin on the day of 3.11.1 release (and at the time of writing the version in the plugins directory has not yet been updated)! Again, we appreciate very much the support and cooperation from Catalyst on this project!

Course completion report source

In Moodle Workplace 3.11.1 you will find two report sources "Course participants" and "Course enrolments". The first one used to be called "Course completions and enrolments", the second is the new one that was just added. It might be a little confusing during the upgrade but the new names better reflect the purpose:

  • "Course participants" report source will list each participant of the course once, even if they have multiple enrolments. This report can be slow on big systems because it calculates aggregation before the results are filtered.
  • "Course enrolments" report source may show duplicate records if the same learner is enrolled into the same course several times (for example, manually and via a program). However this report is noticeably faster, especially when the results are limited using conditions and filters. It is also usually easy to add aggregation showing each learner only once.

These two report sources have different default configurations that will help users better understand the difference.


This is an urgent release and does not contain any security fixes. It was released due to a regression identified in Moodle 3.11.1, 3.10.5 and other minors.


See our Moodle Workplace 3.11.3 new features page in the user documentation for an introduction to Moodle Workplace 3.11.3 with screenshots.

Major features

  • Responsive Layout for Custom Reports. We have introduced a Card view for Custom Reports that allows you to configure the report layout for narrow views when the block is in the sidebar or you’re just using a smaller device.
  • Report block. Now it’s possible to add blocks with embedded custom reports to any place blocks can be added in Moodle, with three different layout configurations: Cards, Table, or Adaptative (this lets Workplace choose the best layout in every situation).
  • Accordion layout for custom reports settings. We’ve improved the editing interface of the Report Builder with a new accordion layout for the different report configurations such as Filter, Conditions, Sorting, the Card View and many more to come.

Other interesting features

  • “All users” audience for Custom Reports
  • Add preferred language to user creation form
  • Fixed bug in multi-tenant dashboards occurring when users don't have the capability to manage their own dashboards
  • Fixed calculation of recertification expiry date

Upgrading workplace to 3.11.3

Recertification expiry date language was inconsistent with functionality

In this release, we have fixed an incorrect behaviour related to the recertification expiry date where the new expiry date was being calculated using the previous certification completion date instead of the current one.

In some edge cases, this behaviour could lead to undesired course resets and notifications being sent at unexpected times, so we decided to change the way the expiry it’s calculated.


See our Moodle Workplace 3.11.4 new features page in the user documentation for an introduction to Moodle Workplace 3.11.4 with screenshots.

Major features

  • Cross-tenant Dynamic rules: now it’s possible to configure automations in the Share Space. You can create conditions and actions using Programs, Certifications and Organisation structure entities that are defined in the Shared space, as well as courses, cohorts and certificates that are shared (do not belong to any tenant's category). We will add the possibility to also use non-shared entities in future versions.
  • Audiences and Schedules in Shared Reports: Shared reports now include Audiences and Scheduling for better re-utilization across all tenants.
  • New Manager audience for Report Builder: this new audience type is now available in tenant and shared reports to create reports for Managers or Department Leads and send them schedules.
  • Multiselect for Departments, Positions, Programs and Certifications conditions in Dynamic Rules: we have updated several conditions to allow selecting multiple entities.

Other interesting features

  • Add option to specify the Enrolment method in Dynamic Rules unenroll action
  • Dynamic rule condition "User is certified" now has an additional option to trigger on every recertification
  • Rules sending notification on allocation will actually do so on the start date and not when the allocation was created (see upgrade notes below)
  • Fixed a bug causing some certification dates to be ignored during user upload
  • Ensure all Report builder filters are applied when their value changes
  • New plugin tool_datewatch to allow other plugins to execute a callback every time some date passes

Upgrading workplace to 3.11.4

We’ve introduced Important changes to the dynamic rule conditions checking if a user is allocated (or not allocated) to a program or certification and also enrolled (or not enrolled) in the course.

Now the user is only considered allocated (or enrolled) if the allocation is not suspended and within the start/end dates. This means, for example, that rules sending notification on allocation will actually do so on the start date and not when the allocation was created.


See our Moodle Workplace 3.11.5 new features page in the user documentation for an introduction to Moodle Workplace 3.11.5 with screenshots.

Major features

  • Program completion re-calculation: now it’s possible to re-calculate program completion status for users allocated to the program based on course completion, including those who already have completed the program. This is useful when adding a course to a program we want to make mandatory for all users.
  • Add mobile support to Course Certificate: the certificate module now is supported in the app natively, allowing users to view and download their certificates through the app.
  • Add condition direct report to the viewer in custom filtering: we’ve improved the “Relation to the report viewer” condition in Report Builder to include an option for “Direct reports” so now it will be easier for users to create reports for managers on their direct reports.

Other interesting features

  • Users can now login using email if their email is not unique across the site but is unique in the tenant selected in the login screen
  • Make “Manager” Report Builder audience available to admins
  • Fix several bugs related to Migration leading to some courses, activities and grades not being imported if the export file contains more than one course.
  • Pre-create appointment custom fields used in a template
  • Make Dynamic rule conditions based on user profile custom fields work for users who have the field not defined
  • Fix date formatting in custom reports when using column aggregation
  • Fix scheduled reports task failing after removing audiences
  • Fixed regression from 3.11.4 when program and certification data from the Dynamic Rules conditions were not passed to the outcomes (such as notifications and certificates).
  • Make sure that the "Other users" report under course participants does not show users from other tenants and exclude users with only the "Tenant user" role.
  • Fix error occurring on certification allocation if the user can be marked certified immediately.

Upgrading workplace to 3.11.5

  • During the upgrade, the frequency of the mod_appointment scheduled task will be set to run every hour instead of once per day
  • During the upgrade, several custom fields may be automatically created in mod_appointment if they are referenced in the notification templates (room, venue, location). You may choose to delete them manually and remove them from the notification templates.
  • If you have dynamic rules with conditions such as "User profile field not equal to …" they used to be skipped for the users who do not have this field at all. Since this bug was fixed in 3.11.5, the next scheduled task will trigger such rules for all previously skipped users.


See our Moodle Workplace 3.11.6 new features page in the user documentation for an introduction to Moodle Workplace 3.11.6 with screenshots.

Major features

  • Course last access condition: now it is possible to create automations based on the last access to courses using this new Dynamic Rules condition.
  • Add Preferred language to the "User profile field" condition: this new condition makes it possible to create automations based on the users’ language.
  • Allow default settings for My Learning block: now admins can set the default configuration for the My Learning block.
  • Relative Certificate issue expiry dates: Certificates feature now supports relative expiry dates  (Ex: 1 year after issue date) when issuing certificates in tool_certificate, configuring issue certificate action in Dynamic Rules and configuring the Course certificate activity expiry date.

Other interesting features

  • Improved statuses for on-going Appointment booking sessions
  • Added a filter for the list of appointments in the Appointments activity module
  • Improved login process when using email to log in if logging in by email is enabled
  • Fixed a bug preventing multi-language filters to work for dynamic rule notifications
  • Fixed a bug on the “Recertification period started" Dynamic Rules condition which wasn’t executed for the second re-certification
  • Fixed a bug about Tenants migration not preserving the appearance settings


Major features

  • Added Web Services to create, update, archive and restore tenants
  • Added Web Services to retrieve the list of certifications and user allocations
  • Show details of an error in the log report if a dynamic rule could not be applied to some users

Other interesting features

  • Fixed a bug in appointment upgrade task
  • Fixed an exception occurring when a custom report has duplicate audiences
  • Fixed error about Invalid response value error during app login


Major features

  • Support course certificate reissue after course reset
  • Option for Dynamic to apply to or to skip suspended users

Other interesting features

  • Prevent sign-up if the same email with different case is already registered
  • Fixed a bug in tenant archiving about users not being moved correctly to the Default tenant
  • Fixed an error about tag filters displaying incorrect results
  • Fixed permission check in tenant auth forms
  • Fixed the link for the header section on the appointment course reset page
  • Fixed a bug in Report Builder about different report progression being shown depending on connected user
  • Various fixes related to tests



  • Fixed error in Upload users tool when it contains course completion
  • Fixed filters throwing error on Access tab of a custom report in the report builder
  • Increase capacity for storing filters values in the users report for installations with a lot of profile fields
  • Correctly export ampersand (&) in CSV and other non-html formats when exporting custom reports



  • Fix javascript conflict when My teams block is added to the same dashboard as Report block



  • Notification dynamic rules to allow placeholder to refer to tenant login URL
  • Added the Relation to the report viewer condition to the Appointment report source
  • Fixed a bug causing course automatic enrolment on the Workplace app
  • Fixed a bug causing department leads with a past job to get notifications for their department users
  • Fixed a bug in Dynamic Rule condition "User is not in department" behaving unexpectedly when multiple departments were selected
  • Hidden programs now are not counted in the profile status tally


This is an ad-hoc release for some bug fixes and small improvements that have been backported by request.

Interesting features and fixes

  • Added "department" to User profile field condition in Dynamic Rules
  • Fixed a bug in Appointments about session deletion, resulting in removed user calendar entries for other sessions.
  • Archive course certificates during program reset


This is an ad-hoc release for some bug fixes and small improvements that have been backported by request.

Interesting features and fixes

  • Fixed random phpUnit error on test_upload_user_completion


This is an ad-hoc release for some bug fixes and small improvements that have been backported by request.

Interesting features and fixes

  • Fixed a bug where some events in other plugins could break tool_datewatch
  • Fixed a bug in causing ad-hoc reports scheduled to be stuck endlessly