Release 3.10.6 for Moodle 3.10
Release 3.10.6 of Microsoft plugins for Moodle 3.10.
NOTE - This is a major upgrade of the plugins, and requires Azure app changes. Refer to this page for Azure app change details.
This release contains:
- Teams Classes LTI app support: Major change in the Moodle course and Microsoft Teams integration feature to support Teams Classes LTI.
- Drop "System API user" connection method: The only connection method supported going forward is application access.
- Multi-tenant SSO alternative domain name support: Support login of additional tenant users whose UPN contains non-initial domain names.
- Remove filter_oembed from the suite: Remove filter_oembed from the Microsoft plugins suite.
- Other bug fixes and small changes.
Teams Classes LTI app support
This release contains a complete rewrite of the course sync feature in the plugins. The main changes include:
- Renamed the "Create user groups in Microsoft 365" (\local_o365\task\groupcreate) scheduled task to "Sync Moodle courses to Microsoft Teams" (\local_o365\task\coursesync).
- The option to sync a Moodle course to groups only but not Teams is removed. If a sync of a course is enabled, it will always sync to a group, and a Team if a suitable owner is found.
- The decision whether to create a standard team or a class team is controlled by whether the hosting tenant has an education license, rather than configuration setting made by Moodle site admin. The check to determine whether the hosting tenant has an education license is performed automatically by the plugin using Graph API calls.
- The Graph APIs used to create/update/archive/delete groups/teams connected to Moodle courses, as well as those used to manage initial and subsequent group/team ownership/membership changes, are all updated according to LMS integration guidelines provided by Microsoft. Notably, the integration will always create a group first, and try to create a Team from the group when appropriate Team owner is found.
- If the hosting tenant has an education license, additional education specific attributes will be stamped in the group created, which will allow Moodle users use the Teams Classes LTI app by adding the Team as an external tool in the course using mod_lti.
NOTE this requires several configuration changes in both local_o365 settings and Azure app permissions. Refer to this page for Azure app change details.
Drop "System API user" connection method
The support for "System API user" connection method has officially ended since this release. The decision was made for two main reasons:
- Increasing number of Graph APIs used in the integration support only application permissions, which effectively means the feature cannot be achieved if "System API user" connection is selected, which would depend on delegated permissions.
- Using the "System API user" connections for Teams integration has the unexpected outcomes that the system API user is added as owner of all Teams created.
Most Moodle site should be using "Application access" connection method now, which are unaffected by this change. For those sites currently using "System API user" connection method, site admins will be given the chance to make the change. Changes in Azure app permissions may be required as part of the migration.
Multi-tenant SSO alternative domain name support
Previously SSO integration for additional tenants stores only the original domain name of the additional tenants (the one used when creating the tenant), and if users from the additional tenants are created using UPN other than the original domain name, the users are not being recognised in the multi-tenant SSO process.
This release introduces a change to save the ID of the additional tenant, along with all registered domains, so that users from additional tenants can be recognised regardless the domain name in their UPN.
NOTE this requires Moodle site admins updating multi-tenant configurations.
Remove filter_oembed from the suite
Plugin filter_oembed is removed from the Microsoft plugins suite as it is not a required plugins anymore. Some features in the filter_oembed plugin still require the other plugins in the suite to work though.
Bug fixes and small changes
- Force field mapping of email profile field to avoid users being created without email and cannot update own email, #1953.
- Improvement in handling sync of Outlook calendar all day events into Moodle, #1434.
- Fix error output on the SDS sync configuration page when Moodle and Microsoft 365 integration is not fully configured #1957.
- Update the logic used to allow only one run of user suspension/deletion part in the user sync task #1944.
- Prevent duplicate user mapping records being create, #1723.
- Bug fix in the Graph API call to list teams, #1904.
- Bug fix in applying user field mappings for installations with only auth_oidc and not local_o365, #1925.
- Bug fix in the observer function to delete group/team when the connected Moodle course is deleted, #1979.
- Bug fix in database queries handling empty return values in SDS and user sync features, #1981.
- Fix broken upgrade script in the local_o365 plugin, #1985.
- Add null privacy provider to theme_boosto365teams, #1923, thanks to @golenkovm.
- Fix inconsistency in database field type in local_onenote, #246.
- Move profile photo sync and timezone sync from block_microsoft to observer functions in local_o365, #1945.
- Bug fix in handling response in some Graph API calls that paginate response values using skip tokens, #1746.
- Force a user sync task run after the Azure application ID site configuration is updated, in order to rebuild user connection records.
- Prevent various local_o365 scheduled tasks from failing when the Moodle and Microsoft 365 integration is not fully configured.
- Update PowerShell script to create new Azure app with required permissions.
- Update validation of the sync of language profile fields in user sync.
- Clean up old SDS schools disabled for sync.
- Remove hardcoded role checks in bot question implementations.
- Add missing delegated permission check required by the calendar sync.
- Fix UI for the "Provide admin consent" button on local_o365 configuration page.