/ /

Microsoft Teams AirSync

The Microsoft Teams AirSync connector imports your Teams communication history — channels, messages, members, and file attachments — into DevRev. It supports both one-time imports and ongoing incremental syncs.

Note: Syncing is one-way — Teams → DevRev only. Changes made in DevRev are not pushed back to Teams.


Supported objects

MS Teams object

DevRev equivalent

Synced?

User (internal)

DevUser

User (guest / external)

Contact

Channel

DM

Channel membership

Group / Group members

Channel message

Comment

Channel reply

Comment (thread)

Message attachment

Artifact on comment

✅ (when Import Attachments is on)

Personal chat (1:1 DM)

DM

✅ (App Flow only)

Group chat

DM

✅ (App Flow only)

Meeting transcript

Artifact on comment

✅ (App Flow, requires additional setup)


Snap-in Configurations

The following options are available for configuring the snap-in:

Option

Default

Description

Import Attachments

Off

Import file attachments (images, documents shared in channel messages).

Extract Meeting Transcripts

On

Import channel meeting transcripts as .vtt attachment files on the meeting's channel message. App Flow only. Requires Step 4 (Application Access Policy) and the three additional transcript permissions from Step 2.

Import All Teams (App Flow)

Off

When on with the App Flow: all accessible teams in the tenant are imported as a single sync unit. When off with the App Flow: each accessible team appears as an individual sync unit for you to choose. Has no effect on the Delegated User Flow.

Import Personal Chats

Off

When on with the App Flow: imports 1:1 direct messages, group chats, and meeting chats.

Import Disabled Users

Off

Include chats for disabled (deactivated) user accounts. When off, chats that involve only disabled users are skipped; their messages to active users are still captured via those active users' chat threads.


Two authentication flows

The connector supports two connection types. Choose the one that matches your needs.

Delegated User Flow

Client Credential (App) Flow

How it authenticates

Individual user's Microsoft account (OAuth)

Azure app registration with client secret

Teams it can access

Only teams the signed-in user belongs to

All teams in the Microsoft 365 tenant

Team selection

Individual teams listed as separate sync units

All teams as a single sync, or individual teams

Personal chats / DMs

❌ Not supported

✅ Supported (opt-in)

Meeting transcripts

❌ Not supported

✅ Supported (requires additional setup)

Best for

Quick, single-user setup with limited scope

Organization-wide imports; full feature coverage


Delegated User Flow

The Delegated User Flow uses an individual Microsoft account to authenticate. It is scoped to the teams that account is a member of.

When to use

Use this flow when you want a simple OAuth sign-in setup and only need to import the teams you personally belong to. It does not support personal chats or meeting transcripts.

Installing the snap-in and creating a connection

  1. Go to Settings → Integrations → Snap-ins, search for Microsoft Teams, and click Add → Install.

  2. Navigate to Settings → Integrations → AirSyncs.

  3. Click Start AirSync and select Microsoft Teams.

  4. Choose MS Teams Connection, provide a connection name, and click Next.

  5. A Microsoft OAuth consent window will open for the application DevRev MS Teams.

  6. Sign in with your Microsoft account and grant the requested permissions. If you are not a Microsoft Entra tenant administrator, contact your Entra administrator to review and grant admin consent for the requested permissions on behalf of the organization.

Selecting teams and starting the import

After the connection is created, the teams the signed-in user belongs to are listed as individual sync units.

  1. Select the teams you want to import.

  2. Choose your DevRev destination.

  3. Review the pre-configured field mappings and click Next.

  4. Wait for the extraction and import to complete.

Limitations

  • Access is limited to teams the authenticated user is a member of.

  • Each team is listed as a separate sync unit — there is no "import all at once" option.

  • Personal chats (1:1 DMs, group chats, meeting chats) are not supported.

  • Meeting transcripts are not supported.


Client Credential (App) Flow

The Client Credential Flow uses an Azure application registration with a client secret to authenticate as the application itself — not as an individual user. This gives the connector access to all teams in the Microsoft 365 tenant.

This is the recommended flow for organization-wide imports. It is the only flow that supports personal chats and meeting transcripts.

When to use

Use the App Flow when you need to:

  • Import all teams in your organization, not just the ones you belong to.

  • Import personal chats (1:1 DMs, group chats, meeting chats).

  • Import channel meeting transcripts or personal chat call transcripts.

Prerequisites

  • A Microsoft Entra ID (Azure AD) account with the Application Administrator, Cloud Application Administrator, or Global Administrator role. Admin consent for the required permissions is mandatory and can only be granted by an administrator.

  • If importing meeting transcripts: the Microsoft Teams Administrator or Global Administrator role to run the PowerShell commands in Step 4 below.

  • Access to the DevRev organization where the MS Teams AirSync snap-in is installed.


Step 1 — Register the application in Microsoft Entra

  1. Go to https://entra.microsoft.com and sign in with an administrator account.

  2. In the left navigation, open Entra ID → App registrations.

  3. Click + New registration.

  4. Fill in:

    • Name: e.g. DevRev - MS Teams AirSync (any name; for your reference only)

    • Supported account types: select Accounts in this organizational directory only (Single tenant)

    • Redirect URI: leave blank

  5. Click Register.

  6. On the application's Overview page, copy and save:

    • Application (client) ID → this is your Client ID

    • Directory (tenant) ID → this is your Tenant ID


Step 2 — Add API permissions and grant admin consent

The snap-in requires read-only Microsoft Graph Application permissions.

  1. In your app registration, open API permissions.

  2. Click + Add a permission → Microsoft Graph → Application permissions.

  3. Add the permissions for your intended feature set (search by name, tick the box, then Add permissions):

Required for all imports (channels, messages, attachments):

Permission

Purpose

Channel.ReadBasic.All

List channels in each team

ChannelMember.Read.All

Read channel membership

ChannelMessage.Read.All

Read channel messages and replies

Files.Read.All

Read file attachments stored in Teams/SharePoint

GroupMember.Read.All

Discover the teams (groups) in your tenant

Organization.Read.All

Read your tenant name (shown on the connection)

Team.ReadBasic.All

Read team names, descriptions, and membership

TeamMember.Read.All

Read team membership

User.Read.All

Enumerate all directory users (required for tenant-wide sync)

Additional — required if importing personal chats (when Import Personal Chats is enabled):

Permission

Purpose

Chat.Read.All

Read 1:1, group, and meeting chat messages

Additional — required if importing meeting transcripts (when Extract Meeting Transcripts is enabled):

Permission

Purpose

CallTranscripts.Read.All

Read call transcripts for personal chat calls

OnlineMeetings.Read.All

Read meeting metadata (subject, start/end times)

OnlineMeetingTranscript.Read.All

Read channel meeting transcript content (.vtt files)

  1. Confirm all rows show Type = Application.

  2. Click ✔ Grant admin consent for your tenant and confirm.

  3. Verify every row shows a green Granted for tenant status.

This step is mandatory. Application permissions do not take effect until an administrator grants tenant-wide consent. If any permission shows "Not granted", the import will fail with 403 errors.


Step 3 — Create a client secret

  1. In your app registration, open Certificates & secrets.

  2. On the Client secrets tab, click + New client secret.

  3. Enter a description (e.g. DevRev connection) and choose an expiry (e.g. 12 or 24 months).

  4. Click Add.

  5. Immediately copy the secret Value (not the Secret ID) and store it securely. The value is shown only once — if you navigate away you must create a new secret.

Note the expiry date. When the secret expires, syncs will stop working until you create a new secret and update the connection in DevRev.


Step 4 — Authorize the app for meeting transcripts (PowerShell)

Skip this step if you are not importing meeting transcripts. If you skip it, also turn off Extract Meeting Transcripts in snap-in settings — otherwise transcript fetches will return 403 Forbidden (the rest of the sync — channels, messages, attachments — still works normally).

Microsoft requires apps to be explicitly authorized via a Teams Application Access Policy before they can read meeting and transcript data. Graph permissions alone are not sufficient — without this policy, every call to /onlineMeetings and /transcripts returns 403 Forbidden.

This step requires the Microsoft Teams Administrator or Global Administrator role.

Install the Microsoft Teams PowerShell module (one-time)

Install-Module -Name MicrosoftTeams -Force -AllowClobber

If the module is already installed, ensure you are on v5.0 or later:

Update-Module -Name MicrosoftTeams

Create and grant the policy

Replace <APPLICATION_CLIENT_ID> with the Application (client) ID you copied in Step 1.

# 1. Sign in as a Teams Administrator (a browser window opens)
Connect-MicrosoftTeams

# 2. Create the policy
New-CsApplicationAccessPolicy `
  -Identity "DevRev-Snap-In-Policy" `
  -AppIds "<APPLICATION_CLIENT_ID>" `
  -Description "DevRev AirSync snap-in"

# 3. Grant the policy tenant-wide
Grant-CsApplicationAccessPolicy `
  -PolicyName "DevRev-Snap-In-Policy" `
  -Global

Verify

Get-CsApplicationAccessPolicy

You should see two entries:

Identity    : Global
AppIds      : {<APPLICATION_CLIENT_ID>}

Identity    : Tag:DevRev-Snap-In-Policy
AppIds      : {<APPLICATION_CLIENT_ID>}
Description : DevRev AirSync snap-in


Step 5 — Configure snap-in Settings and start the import

  1. Go to Settings → Integrations → Snap-ins and search for Microsoft Teams.

  2. Open the snap-in and click Configure in the top-right corner.

  3. Select the snap-in configuration that best suits your import preferences, and click Save.


Step 6 — Create the connection in DevRev

  1. In DevRev, navigate to Settings → Integrations → AirSync.

  2. Click Start AirSync and select Microsoft Teams.

  3. Click Add Connection, give it a name, and select the MS Teams App Connection tab.

  4. Fill in the three fields collected from Microsoft Entra:

Field

Value

Client ID

Application (client) ID from Step 1

Tenant ID

Directory (tenant) ID from Step 1

Client Secret

Secret Value from Step 3

  1. Click Next. DevRev validates the credentials by fetching your organization name from Microsoft. A successful save means the credentials and permissions are working.

  2. Select the sync unit(s) to import:

    • If Import All Teams (App Flow) is enabled: a single sync unit representing the entire tenant appears. Select it to import all accessible teams at once (plus personal chats, if that option is also enabled).

    • If Import All Teams (App Flow) is disabled: each accessible team appears as an individual sync unit. Select the teams you want to import.

  3. Choose your DevRev destination, review field mappings, and start the extraction.


What gets imported

Delegated User Flow

  • Channels (standard, private, and shared) corresponding to the selected Team

  • Channel messages and threaded replies

  • Channel members (internal)

  • File attachments on channel messages (when Import Attachments is on)

Client Credential (App) Flow — channels and teams

Everything above, plus:

  • All teams accessible in the tenant — not limited to one user's membership

  • Full directory-level user classification (internal vs. guest/external)

Client Credential (App) Flow — personal chats

When Import Personal Chats is enabled (App Flow + Import All Teams enabled):

  • 1:1 direct messages

  • Group chats

  • Meeting chats

Meeting transcripts

When Extract Meeting Transcripts is enabled (App Flow, with Application Access Policy in place):

  • Channel meeting transcripts as .vtt files attached to the meeting's channel message

  • Personal chat meeting/call transcripts (when Import Personal Chats is also enabled)


Post-import options

Option

Description

Sync to DevRev

Push new and modified Teams data to previously imported DevRev items.

View Report

View details on the initial import and any subsequent syncs.

Delete Import

Remove the import and all content it created.

Edit Connection

Change the connection used for future syncs.


Sync options

One-time sync

Settings → Integrations → AirSyncs → locate the import → ⋮ → Sync Microsoft Teams to DevRev

⚠️ May overwrite fields in previously imported DevRev items, even if they were modified in DevRev.

Periodic sync

Settings → Integrations → AirSyncs → locate the import → ⋮ → Set Periodic Sync

  • Default interval: once per hour

  • Enable automation for synced items — when active, newly created or updated items trigger webhooks, notifications, and Snap-ins as if they originated in DevRev. When disabled, no event-driven processes fire.

  • Events are not triggered during first-time imports or manual syncs, regardless of this setting.


Delete import

⚠️ Deletes all content created by the import — users, teams, channels, messages, chats, and attachments — even if those items were subsequently modified in DevRev. Re-importing after deletion is possible.

Settings → Integrations → AirSyncs → locate the import → ⋮ → Delete Import

Was this article helpful?