Skip to main content

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​

  1. Ensure your importer is configured correctly and all data you want to synchronise with Microsoft Teams is imported into Flow.

  2. Set the required system configuration values in your Flow server.

keydescription
teamsModuleAzureInstanceThe URL of the Azure login. Defaults to https://login.microsoftonline.com/%s. Only change if you are using a custom Azure instance.
teamsModuleGraphApiUrlDefaults to https://graph.microsoft.com/. Only change if you are using a custom Graph API instance.
teamsModuleAzureTenantIdThe UID of the university's tenant. Eg 225b1136-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
emailSubdomainThe email domain of the university. Eg. "@university.onmicrosoft.com" or "@edu.uni.com". Also used for the demo user's email addresses.
  1. 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-Policy application 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 teamsModuleSyncTeamsGroupsAndUsers and room accounts organise online meetings. In every other case, Flow requires it.
  2. Set the remaining system configuration values.

keydescription
teamsSyncModuleEnabledEnable 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.
teamsAttendanceModuleEnabledEnable 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
teamsSyncModuleDefaultCourseEventSyncSettingSelect 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).
teamsSyncModuleEventRequestResponseFromAttendeesWhen enabled, attendees will be asked to confirm their attendance for events. Defaults to false. This only applies if teamsSyncModuleDefaultCourseEventSyncSetting is set to CreateEvents.
teamsModuleSyncTeamsGroupsAndUsersSynchronise teams, channels, and their members. Defaults to true. When disabled, Flow only creates online meetings for events, see Online-meeting-only mode.
teamsModuleFlavorClient-specific team naming, team description, and messages posted to teams. Possible values: Generic (default) and Campus02.
teamsSyncModuleRemoveExtraChannelsRemove surplus channels during synchronisation. Defaults to false.
teamsSyncModuleRemoveExtraTeamAndChannelMembersRemove surplus team members and channel members during synchronisation. Defaults to false.
teamsSyncModuleSemesterRemovalStrategySpecifies 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
teamsModuleDaemonUserIdThe UID of the daemon user. Eg. b843c948-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
teamsModuleDaemonUserInitialPasswordThe initial password of the daemon user. Flow generates it and only uses it when the daemon user is created during setup.
teamsModuleTeamsAppInternalIdThe 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:

valuedescription
DaemonUserThe daemon user created during setup organises every meeting. This is the default.
LecturerThe 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.
RoomAccountThe 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​

keydescription
teamsModuleOnlineMeetingCreationTimingWhen 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.
teamsModuleOnlineMeetingCreationWindowWeeksHow many weeks ahead online meetings are created when the creation timing is RollingWindow. Defaults to 2.

Meeting roles and access​

keydescription
teamsModuleAdditionalMeetingPresentersComma-separated UPNs added as presenters to every online meeting, for example IT support accounts. When set, only these accounts and the organisers may present.
teamsModuleAdditionalMeetingCoorganizersComma-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​

keydescription
teamsModuleAutoRecordMeetingsRecord online meetings automatically. Defaults to false. The importer can override this for individual events.
teamsModuleAllowTranscriptionAllow 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.
teamsModuleAddEventForeignIdToMeetingSubjectAppend 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.

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 example 0835VD1006_21W@university.com

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.