Microsoft Teams synchronisation
This module synchronises data imported into Flow with Microsoft Teams. It can:
- Create teams based on courses
- Ensure team names and other details are standardised
- Create channels based on course-groups
- Assign team owners and members based on course lecturers and participants
- Create online meetings or calendar events based on course events
- Write a message in the correct channel when an event is about to start
- Organise online meetings through the daemon user, the event's lecturer, or the Microsoft account of the event's room
- Create online meetings for events without creating teams or channels
- Track attendance in online meetings and automatically save it to the Digital Attendance List, if the module is enabled
Setup
-
Ensure your importer is configured correctly and all data you want to synchronise with Microsoft Teams is imported into Flow.
-
Set the required system configuration values in your Flow server.
| key | description |
|---|---|
teamsModuleAzureInstance | The URL of the Azure login. Defaults to https://login.microsoftonline.com/%s. Only change if you are using a custom Azure instance. |
teamsModuleGraphApiUrl | Defaults to https://graph.microsoft.com/. Only change if you are using a custom Graph API instance. |
teamsModuleAzureTenantId | The UID of the university's tenant. Eg 225b1136-xxxx-xxxx-xxxx-xxxxxxxxxxxx. |
emailSubdomain | The email domain of the university. Eg. "@university.onmicrosoft.com" or "@edu.uni.com". Also used for the demo user's email addresses. |
-
Complete the interactive MS Teams setup at
https://\<your-flow-server.com\>/ms-teams/setup. This requires an Azure administrator account. You need to run some Powershell commands.- If lecturers or room accounts organise online meetings, the
Flow-Teams-Module-Access-Policyapplication access policy must be granted globally, as described in the setup step for the event creation permission. - The daemon user is only optional when team synchronisation is disabled with
teamsModuleSyncTeamsGroupsAndUsersand room accounts organise online meetings. In every other case, Flow requires it.
- If lecturers or room accounts organise online meetings, the
-
Set the remaining system configuration values.
| key | description |
|---|---|
teamsSyncModuleEnabled | Enable the MS Teams Sync Module. It automatically creates teams, channels and events in MS Teams. Only enable after the required configuration values are set and the setup is completed. |
teamsAttendanceModuleEnabled | Enable the attendance saving feature to track attendance of members of online events and automatically save it to the Digital Attendance List. Only works if teamsSyncModuleEnabled is true. Only enable after the relevant configuration values are set. |
| Optional configuration | |
teamsSyncModuleDefaultCourseEventSyncSetting | Select the default behaviour for handling Flow events. Valid values are CreateEvents (creates events with invite-mails and calendar entries for participants), CreateOnlineMeetings (creates anonymous online meetings and posts the invite link to the event's channel), DontSync (doesn't sync Flow events to MS Teams). |
teamsSyncModuleEventRequestResponseFromAttendees | When enabled, attendees will be asked to confirm their attendance for events. Defaults to false. This only applies if teamsSyncModuleDefaultCourseEventSyncSetting is set to CreateEvents. |
teamsModuleSyncTeamsGroupsAndUsers | Synchronise teams, channels, and their members. Defaults to true. When disabled, Flow only creates online meetings for events, see Online-meeting-only mode. |
teamsModuleFlavor | Client-specific team naming, team description, and messages posted to teams. Possible values: Generic (default) and Campus02. |
teamsSyncModuleRemoveExtraChannels | Remove surplus channels during synchronisation. Defaults to false. |
teamsSyncModuleRemoveExtraTeamAndChannelMembers | Remove surplus team members and channel members during synchronisation. Defaults to false. |
teamsSyncModuleSemesterRemovalStrategy | Specifies what to do when data of a semester is to be deleted. Possible values: DELETE to delete teams associated with courses of this semester, ARCHIVE to only archive the teams, NONE to do nothing. Defaults to NONE. |
| Automatically populated configuration | |
teamsModuleDaemonUserId | The UID of the daemon user. Eg. b843c948-xxxx-xxxx-xxxx-xxxxxxxxxxxx. |
teamsModuleDaemonUserInitialPassword | The initial password of the daemon user. Flow generates it and only uses it when the daemon user is created during setup. |
teamsModuleTeamsAppInternalId | The internal ID of the Teams application in the organisation. |
Online meetings
Flow creates online meetings for events of type ONLINE_TEAMS, as provided by the
importer, when their course is synchronised with CreateOnlineMeetings
or Flow runs in online-meeting-only mode. The settings in this section control who organises these meetings, when Flow
creates them, and what participants can do in them.
Meeting organiser
teamsModuleMeetingOrganizer determines on whose behalf Flow creates online meetings and calendar events:
| value | description |
|---|---|
DaemonUser | The daemon user created during setup organises every meeting. This is the default. |
Lecturer | The event's lecturer organises the meeting. If the event has no single lecturer or their Microsoft Teams account cannot be found, the daemon user organises it instead. |
RoomAccount | The Microsoft account of the event's room organises the meeting. The importer must provide it for each event as msTeamsMeeting.roomAccountUpn. If the room account cannot be found, Flow skips the meeting and lists it in the synchronisation logs. |
When a room account organises a meeting, Flow adds the event's lecturers as co-organisers so they can present and manage
the meeting. A meeting can have up to 10 co-organisers. When there are more, the lecturers take precedence over the
accounts configured in teamsModuleAdditionalMeetingCoorganizers.
Online-meeting-only mode
When teamsModuleSyncTeamsGroupsAndUsers is disabled, Flow does not create teams or channels and does not manage their
members. It only creates online meetings for events, regardless of the course or default event synchronisation setting,
and does not post channel messages.
In this mode, events that share the same foreignId, take place on the same date, and have the same organiser share one
online meeting. A lesson that is imported once per group therefore gets a single meeting link.
Creation timing
| key | description |
|---|---|
teamsModuleOnlineMeetingCreationTiming | When an event's online meeting is created. ShortlyBeforeStart (default) creates it about 30 minutes before the event starts. RollingWindow creates it as soon as the event starts within the configured window. Ignored by courses that create calendar events. |
teamsModuleOnlineMeetingCreationWindowWeeks | How many weeks ahead online meetings are created when the creation timing is RollingWindow. Defaults to 2. |
Meeting roles and access
| key | description |
|---|---|
teamsModuleAdditionalMeetingPresenters | Comma-separated UPNs added as presenters to every online meeting, for example IT support accounts. When set, only these accounts and the organisers may present. |
teamsModuleAdditionalMeetingCoorganizers | Comma-separated UPNs added as co-organisers to every online meeting, for example technicians who edit recordings. Unlike presenters, co-organisers can manage breakout rooms and edit and share the recording. They count towards the limit of 10 co-organisers. |
When the importer does not provide per-event meeting settings, Flow applies these defaults:
- If a room account organises the meeting or additional presenters are configured, only the organisers and presenters may present.
- If a room account organises the meeting, the meeting chat is enabled and users of your organisation bypass the lobby.
- Otherwise, the Microsoft Teams defaults of the organiser apply.
Presenters, co-organisers, lobby, and chat settings apply to online meetings only, not to calendar events created with
CreateEvents.
Recording and transcription
| key | description |
|---|---|
teamsModuleAutoRecordMeetings | Record online meetings automatically. Defaults to false. The importer can override this for individual events. |
teamsModuleAllowTranscription | Allow transcription in online meetings, so recordings get a transcript and subtitles. Defaults to false. The importer can set the spoken language per event; otherwise the organiser's default language applies. The organiser's Microsoft Teams policy must allow transcription as well. |
teamsModuleAddEventForeignIdToMeetingSubject | Append the event's foreignId to the subject of the online meeting or calendar event, so staff can match a meeting to their timetable. Defaults to false. Events without a foreignId keep the plain subject. |
Per-event settings from the importer
The API importer can provide an optional msTeamsMeeting object for
each event of type ONLINE_TEAMS; its fields are described there. When a field is not set, the global setting or default
described above applies.
The event's foreignId identifies it in the source system and is set directly on the event.
Join links in Flow
When teamsModuleShowOnlineMeetingUrlInEvents is enabled, Flow shows an event's online meeting link in the Online
column of the events view. It takes precedence over the onlineUrl provided by the importer, which Flow shows while the
event has no online meeting. Defaults to false.
Notes
- Once this module is enabled, course settings can override selected Microsoft Teams synchronisation behaviour.
- Synchronisation runs every six hours and may take several hours to complete, depending on the number of courses and students. The first few runs take longer because the teams must be created.
- Most string formatting is currently hard-coded but can be made configurable upon your request.
- The format of team names is
"$semester $name [$courseNumber]" - The format of team mail nicknames is
"${courseNumber}_$semester", so a full mail is for example0835VD1006_21W@university.com
- The format of team names is
Troubleshooting
During synchronisation, the module may encounter errors caused by Graph API outages or an invalid configuration. These errors are displayed with further information in Microsoft Teams synchronization logs at the bottom of the System Configuration page.
If something does not work as expected or the synchronisation does not match your requirements, please contact us.