Skip to main content

Microsoft Teams Synchronization Module

This module allows synchronizing data that has been imported into Flow to Microsoft Teams. Specifically, it can do the following:

  • Create teams based on courses
    • Ensure team names and other details are standardized
  • 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
  • Track attendance in online meetings and automatically save it to the Digital Attendance List, if the module is enabled


  1. Ensure your importer is configured correctly and all data you wish to synchronize to Microsoft Teams is being imported into Flow.

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

teamsPluginAzureInstanceThe URL of the Azure login. Defaults to Only change if you are using a custom Azure instance.
teamsPluginGraphApiUrlDefaults to Only change if you are using a custom Graph API instance.
teamsPluginAzureTenantIdThe UID of the university's tenant. Eg 225b1136-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
emailSubdomainThe email domain of the university. Eg. "" or "". Also used for the demo user's email addresses.
  1. Complete the interactive MS Teams setup at https://\<\>/ms-teams/setup. This requires an Azure administrator account. You need to run some Powershell commands.

  2. Set the remaining system configuration values.

teamsSyncPluginEnabledEnable 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.
teamsAttendancePluginEnabledEnable the attendance saving feature to track attendance of members of online events and automatically save it to the Digital Attendance List.
Only works if teamsSyncPluginEnabled is true. Only enable after the relevant configuration values are set.
Optional configuration
teamsSyncPluginDefaultCourseEventSyncSettingSelect 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).
teamsPluginEventRequestResponseFromAttendeesWhen enabled, attendees will be asked to confirm their attendance for events. Defaults to false. This only applies if teamsSyncPluginDefaultCourseEventSyncSetting is set to CreateEvents.
teamsPluginRemoveExtraChannelsRemove surplus channels during synchronization. Defaults to false.
teamsPluginRemoveExtraTeamAndChannelMembersRemove surplus team members and channel members during synchronization. Defaults to false.
teamsPluginRemoveTeamsSpecifies what to do when a course is no longer present in Flow. Possible values: DELETE to also remove the team that is associated with it, ARCHIVE to only archive the team, NONE to do nothing.
teamsSemesterRemovalStrategySpecifies 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.
Automatically populated configuration
teamsPluginDaemonUserIdThe UID of the daemon user. Eg. b843c948-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
teamsPluginTeamsAppInternalIdThe internal id of the Teams application in the organization.


  • Once this module is enabled, you can use the course settings to override certain MS Teams Synchronization related things.
  • The synchronization runs every 6 hours and might take multiple hours to complete, depending on your number of courses and students. The first few runs will take longer because creating new teams takes considerable time.
  • Most string formatting is currently hard-coded but can be made configurable upon your request.
    • The format of team names is "[${courseNumber}] $name $semester"
    • The format of team mail nicknames is "${courseNumber}_$semester", so a full mail is for example


During synchronization, the module will likely encounter some errors that are caught and handled as well as possible. For example, the Graph API may have outages, the configuration might be set incorrectly, etc. These errors are displayed together with other information in the "Microsoft Teams synchronization logs" at the bottom of the System Configuration page.

If something does not work as expected or the synchronization does not match your requirements exactly, please contact us.