# Microsoft Teams

Microsoft Teams is Microsoft's cloud-based team collaboration platform, part of the Microsoft 365 suite. It provides persistent chat channels, video conferencing, file storage, and integration with other Microsoft 365 services.

Microsoft Teams integration replicates data using the [Microsoft Graph API](https://learn.microsoft.com/en-us/graph/api/overview).

See the [Schema](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#Schema) section for a list of objects available for replication.

## Preparing for authentication

To access your data, you need to authenticate the connection with your account credentials.

Information noteMake sure that the account you use has read access to the tables you want to fetch.

To set up your Microsoft Teams account, you need:

* A Microsoft 365 account with Microsoft Teams deployed in your organization.
* An Azure subscription with access to the Azure portal ([portal.azure.com](https://portal.azure.com/)) or Entra Admin Center ([entra.microsoft.com](https://entra.microsoft.com/)).
* Permission to register applications and grant admin consent in your Microsoft Entra ID tenant (Global Administrator or Application Administrator role).

To register a Microsoft Entra ID application and grant API permissions:

1. Log into your [Microsoft Entra admin center](https://entra.microsoft.com/) account.

2. Navigate to Entra ID &gt; App registrations.

3. Click New registration.

4. Enter a name for the application (for example, QlikDataIntegration), select Accounts in this organizational directory only, and click Register.

5. On the application's Overview page, copy the Application (client) ID and the Directory (tenant) ID and paste them into a secured file.

6. Navigate to Certificates & secrets &gt; Client secrets &gt; New client secret.

7. Enter a description and expiration date, and click Add.

   Copy and paste the secret Value into a secured file.

8. Navigate to API permissions &gt; Add a permission &gt; Microsoft Graph &gt; Application permissions.

9. Add the following permissions:

   * `User.Read.All` — required for the `users` stream.
   * `Group.Read.All` — required for the `groups`, `group_members`, `group_owners`, `channels`, `channel_members`, `channel_tabs`, `channel_messages`, `channel_message_replies`, `conversations`, `conversation_threads`, and `conversation_posts` streams.
   * `Files.Read.All` — required for the `team_drives` stream.
   * `Reports.Read.All` — required for the `team_device_usage_report` stream.

10. Click Grant admin consent for [your organization] and confirm.

    All permissions must show a green “Granted” status before the connector will work.

## Creating the connection

For more information, see [Connecting to SaaS applications](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm).

1. Fill in the required connection properties.

2. Provide a name for the connection in Connection name.

3. Select Open connection metadata to define metadata for the connection when it has been created.

4. Click Create.

Connection settings

| Setting | Description |
| --- | --- |
| Data gateway | Select a Data Movement gateway if required by your use case.<br><br>Information note<br><br>This field is not available with the Qlik Talend Cloud Starter subscription, as it does not support Data Movement gateway. If you have another subscription tier and do not want to use Data Movement gateway, select None.<br><br>For information on the benefits of Data Movement gateway and use cases that require it, see [Qlik Data Gateway - Data Movement](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm). |
| Start Date | Enter the date, in the format `MM/DD/YYYY`, from which the data must be replicated from your source to your target. |
| Tenant ID | Directory (tenant) ID. |
| OAuth Application ID | Application (client) ID. |
| Application Secret | Client secret. |

## Limitations and considerations

* Authentication uses application (client credentials) permissions. A Global Administrator or Application Administrator must grant admin consent for all required API permissions.
* The `team_device_usage_report` stream calls the Microsoft Graph reports endpoint, which returns data for the past 28 days only. By default, Microsoft 365 anonymizes user identity columns (`user_principal_name`, `user_id`) in usage reports. To retrieve actual user identities, a tenant admin can enable Display concealed user, group, and site names in all reports in the Microsoft 365 admin center under Settings &gt; Org settings &gt; Services &gt; Reports.
* Incremental streams use a mix of server-side and client-side bookmark filtering. The `channel_messages` stream uses the Graph `/messages/delta` endpoint with a `$filter` query. The `team_device_usage_report` stream iterates day-by-day using a date URL parameter. The `channel_message_replies`, `conversations`, `conversation_threads`, `conversation_posts`, and `team_drives` streams retrieve all records and filter client-side because the underlying endpoints do not support `$filter` on the bookmark field.
* Groups without "Team" in the `resourceProvisioningOptions` property are excluded from Teams-specific stream queries (such as `channels`, `channel_messages`, `channel_members`, and so on).
* Field names are normalized from camelCase to snake\_case during extraction.
* Microsoft Graph API throttling limits apply. The connector handles rate limiting automatically with retry logic.

## Schema

Information note

Schemas and naming conventions can change from version to version. It is recommended to verify your version before continuing.

Depending on your destination, table and column names may not appear as they are outlined below.

### channel\_members

The `channel_members` table contains information about conversation members within a chat or channel in your Microsoft account.

| **Replication Method** | Full Table |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id<br><br>channel\_id |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/conversationmember-list?view=graph-rest-beta&tabs=http "Opens in new tab: Microsoft Teams API method") |

channel\_members table foreign keys

| Join channel\_members with | on |
| --- | --- |
| [channels](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channels) | ```<br>channel_members.channel_id = channels.id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>channel_members.channel_id = channel_tabs.channel_id<br>``` |
| [channel_messages](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-messages) | ```<br>channel_members.channel_id = channel_messages.channel_identity.channel_id<br>```<br><br>```<br>channel_members.user_id = channel_messages.from.user.id<br>```<br><br>```<br>channel_members.user_id = channel_messages.mentions.mentioned.user.id<br>```<br><br>```<br>channel_members.user_id = channel_messages.reactions.user.user.id<br>``` |
| [channel_message_replies](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-message-replies) | ```<br>channel_members.channel_id = channel_message_replies.channel_identity.channel_id<br>```<br><br>```<br>channel_members.user_id = channel_message_replies.from.user.id<br>```<br><br>```<br>channel_members.user_id = channel_message_replies.mentions.mentioned.user.id<br>```<br><br>```<br>channel_members.user_id = channel_message_replies.reactions.user.user.id<br>``` |
| [users](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#users) | ```<br>channel_members.user_id = users.id<br>``` |

channel\_members table schema

| **channel\_id**<br><br><br>STRING |
| --- |
| **display\_name**<br><br><br>STRING |
| **email**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **roles**<br><br>ARRAY<br><br>This is a nested data structure. |
| **user\_id**<br><br><br>STRING |

### channel\_message\_replies

The `channel_message_replies` table contains information about message replies within a channel in one of your Microsoft teams.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id<br><br>channel\_id<br><br>message\_id |
| **Replication Key** | created\_date\_time |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/channel-list-messagereplies?view=graph-rest-beta&tabs=http "Opens in new tab: Microsoft Teams API method") |

channel\_message\_replies table foreign keys

| Join channel\_message\_replies with | on |
| --- | --- |
| [channels](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channels) | ```<br>channel_message_replies.channel_identity.channel_id = channels.id<br>``` |
| [channel_members](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-members) | ```<br>channel_message_replies.channel_identity.channel_id = channel_members.channel_id<br>```<br><br>```<br>channel_message_replies.from.user.id = channel_members.user_id<br>```<br><br>```<br>channel_message_replies.mentions.mentioned.user.id = channel_members.user_id<br>```<br><br>```<br>channel_message_replies.reactions.user.user.id = channel_members.user_id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>channel_message_replies.channel_identity.channel_id = channel_tabs.channel_id<br>``` |
| [channel_messages](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-messages) | ```<br>channel_message_replies.channel_identity.channel_id = channel_messages.channel_identity.channel_id<br>```<br><br>```<br>channel_message_replies.from.user.id = channel_messages.from.user.id<br>```<br><br>```<br>channel_message_replies.mentions.mentioned.user.id = channel_messages.from.user.id<br>```<br><br>```<br>channel_message_replies.reactions.user.user.id = channel_messages.from.user.id<br>```<br><br>```<br>channel_message_replies.from.user.id = channel_messages.mentions.mentioned.user.id<br>```<br><br>```<br>channel_message_replies.mentions.mentioned.user.id = channel_messages.mentions.mentioned.user.id<br>```<br><br>```<br>channel_message_replies.reactions.user.user.id = channel_messages.mentions.mentioned.user.id<br>```<br><br>```<br>channel_message_replies.from.user.id = channel_messages.reactions.user.user.id<br>```<br><br>```<br>channel_message_replies.mentions.mentioned.user.id = channel_messages.reactions.user.user.id<br>```<br><br>```<br>channel_message_replies.reactions.user.user.id = channel_messages.reactions.user.user.id<br>``` |
| [users](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#users) | ```<br>channel_message_replies.from.user.id = users.id<br>```<br><br>```<br>channel_message_replies.mentions.mentioned.user.id = users.id<br>```<br><br>```<br>channel_message_replies.reactions.user.user.id = users.id<br>``` |

channel\_message\_replies table schema

| **attachments**<br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>content: STRING</li><li>content_type: STRING</li><li>content_url: STRING</li><li>id: STRING</li><li>name: STRING</li><li>thumbnail_url: STRING</li></ul> |
| --- |
| **body**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>content: STRING</li><li>content_type: STRING</li></ul> |
| **channel\_identity**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>channel_id: STRING</li><li>teamId: STRING</li></ul> |
| **chat\_id**<br><br><br>STRING |
| **created\_date\_time**<br><br><br>DATE-TIME |
| **deleted\_date\_time**<br><br><br>DATE-TIME |
| **etag**<br><br><br>STRING |
| **from**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>application: STRING</li><li>conversation: STRING</li><li>device: STRING</li><li>user: OBJECT, which is also a nested data structure.											<ul><li>display_name: STRING</li><li>id: STRING</li><li>user_identity_type: STRING</li></ul></li></ul> |
| **id**<br><br><br>STRING |
| **importance**<br><br><br>STRING |
| **last\_modified\_date\_time**<br><br><br>DATE-TIME |
| **locale**<br><br><br>STRING |
| **mentions**<br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>id: INTEGER</li><li>mention_text: STRING</li><li>mentioned: OBJECT, which is also a nested data structure.											<ul><li>application: STRING</li><li>conversation: STRING</li><li>device: STRING</li><li>user: OBJECT, which is also a nested data structure.													<ul><li>display_name: STRING</li><li>id: STRING</li><li>user_identity_type: STRING</li></ul></li></ul></li></ul> |
| **message\_type**<br><br><br>STRING |
| **policy\_violation**<br><br><br>STRING |
| **reactions**<br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>created_date_time: DATE-TIME</li><li>reaction_type: STRING</li><li>user: OBJECT, which is also a nested data structure.											<ul><li>application: STRING</li><li>conversation: STRING</li><li>device: STRING</li><li>user: OBJECT, which is also a nested data structure.													<ul><li>display_name: STRING</li><li>id: STRING</li><li>user_identity_type: STRING</li></ul></li></ul></li></ul> |
| **reply\_to\_id**<br><br><br>STRING |
| **subject**<br><br><br>STRING |
| **summary**<br><br><br>STRING |
| **web\_url**<br><br><br>STRING |

### channel\_messages

The `channel_messages` table contains information about messages in a channel, without replies, in your Microsoft account.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id<br><br>channel\_id |
| **Replication Key** | last\_modified\_date\_time |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/chatmessage-delta?view=graph-rest-beta&tabs=http "Opens in new tab: Microsoft Teams API method") |

channel\_messages table foreign keys

| Join channel\_messages with | on |
| --- | --- |
| [channels](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channels) | ```<br>channel_messages.channel_identity.channel_id = channels.id<br>``` |
| [channel_members](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-members) | ```<br>channel_messages.channel_identity.channel_id = channel_members.channel_id<br>```<br><br>```<br>channel_messages.from.user.id = channel_members.user_id<br>```<br><br>```<br>channel_messages.mentions.mentioned.user.id = channel_members.user_id<br>```<br><br>```<br>channel_messages.reactions.user.user.id = channel_members.user_id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>channel_messages.channel_identity.channel_id = channel_tabs.channel_id<br>``` |
| [channel_message_replies](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-message-replies) | ```<br>channel_messages.channel_identity.channel_id = channel_message_replies.channel_identity.channel_id<br>```<br><br>```<br>channel_messages.from.user.id = channel_message_replies.from.user.id<br>```<br><br>```<br>channel_messages.mentions.mentioned.user.id = channel_message_replies.from.user.id<br>```<br><br>```<br>channel_messages.reactions.user.user.id = channel_message_replies.from.user.id<br>```<br><br>```<br>channel_messages.from.user.id = channel_message_replies.mentions.mentioned.user.id<br>```<br><br>```<br>channel_messages.mentions.mentioned.user.id = channel_message_replies.mentions.mentioned.user.id<br>```<br><br>```<br>channel_messages.reactions.user.user.id = channel_message_replies.mentions.mentioned.user.id<br>```<br><br>```<br>channel_messages.from.user.id = channel_message_replies.reactions.user.user.id<br>```<br><br>```<br>channel_messages.mentions.mentioned.user.id = channel_message_replies.reactions.user.user.id<br>```<br><br>```<br>channel_messages.reactions.user.user.id = channel_message_replies.reactions.user.user.id<br>``` |
| [users](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#users) | ```<br>channel_messages.from.user.id = users.id<br>```<br><br>```<br>channel_messages.mentions.mentioned.user.id = users.id<br>```<br><br>```<br>channel_messages.reactions.user.user.id = users.id<br>``` |

channel\_messages table schema

| **attachments**<br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>content: STRING</li><li>content_type: STRING</li><li>content_url: STRING</li><li>id: STRING</li><li>name: STRING</li><li>thumbnail_url: STRING</li></ul> |
| --- |
| **body**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>content: STRING</li><li>content_type: STRING</li></ul> |
| **channel\_identity**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>channel_id: STRING</li><li>teamId: STRING</li></ul> |
| **chat\_id**<br><br><br>STRING |
| **created\_date\_time**<br><br><br>DATE-TIME |
| **deleted\_date\_time**<br><br><br>DATE-TIME |
| **etag**<br><br><br>STRING |
| **from**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>application: STRING</li><li>conversation: STRING</li><li>device: STRING</li><li>user: OBJECT, which is also a nested data structure.												<ul><li>display_name: STRING</li><li>id: STRING</li><li>user_identity_type: STRING</li></ul></li></ul> |
| **id**<br><br><br>STRING |
| **importance**<br><br><br>STRING |
| **lastModified\_date\_time**<br><br><br>DATE-TIME |
| **locale**<br><br><br>STRING |
| **mentions**<br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>id: INTEGER</li><li>mention_text: STRING</li><li>mentioned: OBJECT, which is also a nested data structure.											<ul><li>application: STRING</li><li>conversation: STRING</li><li>device: STRING</li><li>user: OBJECT, which is also a nested data structure.													<ul><li>display_name: STRING</li><li>id: STRING</li><li>userIdentity_type: STRING</li></ul></li></ul></li></ul> |
| **message\_type**<br><br><br>STRING |
| **policy\_violation**<br><br><br>STRING |
| **reactions**<br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>created_date_time: DATE-TIME</li><li>reaction_type: STRING</li><li>user: OBJECT, which is also a nested data structure.											<ul><li>application: STRING</li><li>conversation: STRING</li><li>device: STRING</li><li>user: OBJECT, which is also a nested data structure.													<ul><li>display_name: STRING</li><li>id: STRING</li><li>user_identity_type: STRING</li></ul></li></ul></li></ul> |
| **reply\_to\_id**<br><br><br>STRING |
| **subject**<br><br><br>STRING |
| **summary**<br><br><br>STRING |
| **web\_url**<br><br><br>STRING |

### channel\_tabs

The `channel_tabs` table contains information about tabs within a channel in one of your Microsoft teams.

| **Replication Method** | Full Table |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id<br><br>channel\_id |
| **Useful links** | [Microsoft Teams documentation](https://docs.microsoft.com/en-us/graph/api/teamstab-list?view=graph-rest-beta)<br><br>[Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/teamstab-list?view=graph-rest-1.0 "Opens in new tab: Microsoft Teams API method") |

channel\_tabs table foreign keys

| Join channel\_tabs with | on |
| --- | --- |
| [channels](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channels) | ```<br>channel_tabs.channel_id = channels.id<br>``` |
| [channel_members](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-members) | ```<br>channel_tabs.channel_id = channel_members.channel_id<br>``` |
| [channel_messages](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-messages) | ```<br>channel_tabs.channel_id = channel_messages.channel_identity.channel_id<br>``` |
| [channel_message_replies](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-message-replies) | ```<br>channel_tabs.channel_id = channel_message_replies.channel_identity.channel_id<br>``` |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#groups) | ```<br>channel_tabs.group_id = groups.id<br>``` |
| [group_owners](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#group-owners) | ```<br>channel_tabs.group_id = group_owners.group_id<br>``` |
| [conversations](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversations) | ```<br>channel_tabs.group_id = conversations.group_id<br>``` |
| [conversation_threads](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversation-threads) | ```<br>channel_tabs.group_id = conversation_threads.group_id<br>``` |
| [team_drives](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#team-drives) | ```<br>channel_tabs.group_id = team_drives.owner.group.id<br>``` |

channel\_tabs table schema

| **channel\_id**<br><br><br>STRING |
| --- |
| **configuration**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>content_url: STRING</li><li>entity_id: STRING</li><li>has_content: BOOLEAN</li><li>remove_url: STRING</li><li>website_url: STRING</li><li>wiki_default_tab: BOOLEAN</li><li>wiki_tab_id: INTEGER</li></ul> |
| **display\_name**<br><br><br>STRING |
| **group\_id**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **sort\_order\_index**<br><br><br>STRING |
| **teams\_app**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>display_name: STRING</li><li>distribution_method: STRING</li><li>id: STRING</li></ul> |
| **web\_url**<br><br><br>STRING |

### channels

The `channels` table contains information about the channels within a team in your Microsoft account.

| **Replication Method** | Full Table |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/channel-list?view=graph-rest-1.0&tabs=http "Opens in new tab: Microsoft Teams API method") |

channels table foreign keys

| Join channels with | on |
| --- | --- |
| [channel_members](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-members) | ```<br>channels.id = channel_members.channel_id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>channels.id = channel_tabs.channel_id<br>``` |
| [channel_messages](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-messages) | ```<br>channels.id = channel_messages.channel_identity.channel_id<br>``` |
| [channel_message_replies](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-message-replies) | ```<br>channels.id = channel_message_replies.channel_identity.channel_id<br>``` |

channels table schema

| **description**<br><br><br>STRING |
| --- |
| **display\_name**<br><br><br>STRING |
| **email**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **web\_url**<br><br><br>STRING |

### conversation\_posts

The `conversation_posts` table contains information about the posts within a conversation thread in your Microsoft account.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Keys** | id<br><br>change\_key<br><br>group\_id<br><br>conversation\_id<br><br>thread\_id |
| **Replication Key** | last\_modified\_date\_time |
| **Useful links** | [Microsoft Teams documentation](https://docs.microsoft.com/en-us/graph/api/conversationthread-list-posts?view=graph-rest-beta&tabs=http)<br><br>[Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/conversationthread-list-posts?view=graph-rest-1.0&tabs=http "Opens in new tab: Microsoft Teams API method") |

conversation\_posts table foreign keys

| Join conversation\_posts with | on |
| --- | --- |
| [conversations](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversations) | ```<br>conversation_posts.conversation_id = conversations.id<br>``` |
| [conversation_threads](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversation-threads) | ```<br>conversation_posts.conversation_id = conversation_threads.conversation_id<br>```<br><br>```<br>conversation_posts.thread_id = conversation_threads.id<br>``` |

conversation\_posts table schema

| **body**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>content: STRING</li><li>content_type: STRING</li></ul> |
| --- |
| **categories**<br><br>ARRAY<br><br>This is a nested data structure. |
| **change\_key**<br><br><br>STRING |
| **conversation\_id**<br><br><br>STRING |
| **created\_date\_time**<br><br><br>DATE-TIME |
| **from**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>emailAddress: OBJECT, which is also a nested data structure.											<ul><li>address: STRING</li><li>name: STRING</li></ul></li></ul> |
| **has\_attachments**<br><br><br>BOOLEAN |
| **id**<br><br><br>STRING |
| **last\_modified\_date\_time**<br><br><br>DATE-TIME |
| **received\_date\_time**<br><br><br>DATE-TIME |
| **sender**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>emailAddress: OBJECT, which is also a nested data structure.											<ul><li>address: STRING</li><li>name: STRING</li></ul></li></ul> |
| **thread\_id**<br><br><br>STRING |

### conversation\_threads

The `conversation_threads` table contains information about threads in a group conversation in your Microsoft account.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Keys** | id<br><br>conversation\_id<br><br>group\_id |
| **Replication Key** | last\_delivered\_date\_time |
| **Useful links** | [Microsoft Teams documentation](https://docs.microsoft.com/en-us/graph/api/conversation-list-threads?view=graph-rest-beta&tabs=http)<br><br>[Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/group-list-threads?view=graph-rest-1.0&tabs=http "Opens in new tab: Microsoft Teams API method") |

conversation\_threads table foreign keys

| Join conversation\_threads with | on |
| --- | --- |
| [conversations](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversations) | ```<br>conversation_threads.conversation_id = conversations.id<br>```<br><br>```<br>conversation_threads.group_id = conversations.group_id<br>``` |
| [conversation_posts](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversation-posts) | ```<br>conversation_threads.conversation_id = conversation_posts.conversation_id<br>```<br><br>```<br>conversation_threads.id = conversation_posts.thread_id<br>``` |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#groups) | ```<br>conversation_threads.group_id = groups.id<br>``` |
| [group_owners](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#group-owners) | ```<br>conversation_threads.group_id = group_owners.group_id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>conversation_threads.group_id = channel_tabs.group_id<br>``` |
| [team_drives](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#team-drives) | ```<br>conversation_threads.group_id = team_drives.owner.group.id<br>``` |

conversation\_threads table schema

| **conversation\_id**<br><br><br>STRING |
| --- |
| **group\_id**<br><br><br>STRING |
| **has\_attachments**<br><br><br>BOOLEAN |
| **id**<br><br><br>STRING |
| **is\_locked**<br><br><br>BOOLEAN |
| **last\_delivered\_date\_time**<br><br><br>DATE-TIME |
| **preview**<br><br><br>STRING |
| **topic**<br><br><br>STRING |
| **unique\_senders**<br><br><br>STRING |

### conversations

The `conversations` table contains information about conversations within a group in your Microsoft account.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id |
| **Replication Key** | last\_delivered\_date\_time |
| **Useful links** | [Microsoft Teams documentation](https://docs.microsoft.com/en-us/graph/api/group-list-conversations?view=graph-rest-beta&tabs=http)<br><br>[Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/group-list-conversations?view=graph-rest-1.0&tabs=http "Opens in new tab: Microsoft Teams API method") |

conversations table foreign keys

| Join conversations with | on |
| --- | --- |
| [conversation_threads](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversation-threads) | ```<br>conversations.id = conversation_threads.conversation_id<br>```<br><br>```<br>conversations.group_id = conversation_threads.group_id<br>``` |
| [conversation_posts](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversation-posts) | ```<br>conversations.id = conversation_posts.conversation_id<br>``` |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#groups) | ```<br>conversations.group_id = groups.id<br>``` |
| [group_owners](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#group-owners) | ```<br>conversations.group_id = group_owners.group_id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>conversations.group_id = channel_tabs.group_id<br>``` |
| [team_drives](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#team-drives) | ```<br>conversations.group_id = team_drives.owner.group.id<br>``` |

conversations table schema

| **group\_id**<br><br><br>STRING |
| --- |
| **has\_attachments**<br><br><br>BOOLEAN |
| **id**<br><br><br>STRING |
| **last\_delivered\_date\_time**<br><br><br>DATE-TIME |
| **preview**<br><br><br>STRING |
| **topic**<br><br><br>STRING |
| **unique\_senders**<br><br>ARRAY<br><br>This is a nested data structure. |

### group\_members

The `group_members` table contains information about group members in your Microsoft account. Members can be users, organizational contacts, devices, service principals, and other groups.

| **Replication Method** | Full Table |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0&tabs=http "Opens in new tab: Microsoft Teams API method") |

group\_members table schema

| **business\_phones**<br><br>ARRAY<br><br>This is a nested data structure. |
| --- |
| **display\_name**<br><br><br>STRING |
| **given\_name**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **job\_title**<br><br><br>STRING |
| **mail**<br><br><br>STRING |
| **mobile\_phone**<br><br><br>STRING |
| **office\_location**<br><br><br>STRING |
| **preferred\_language**<br><br><br>STRING |
| **surname**<br><br><br>STRING |
| **user\_principal\_name**<br><br><br>STRING |

### group\_owners

The `group_owners` table contains information about groups’ owners in your Microsoft account. The owners can be a set of users or service principals that have modifying priviliges.

**Note**: Groups created in Microsoft Exchange will not be available in this table.

| **Replication Method** | Full Table |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/group-list-owners?view=graph-rest-1.0&tabs=http "Opens in new tab: Microsoft Teams API method") |

group\_owners table foreign keys

| Join group\_owners with | on |
| --- | --- |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#groups) | ```<br>group_owners.group_id = groups.id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>group_owners.group_id = channel_tabs.group_id<br>``` |
| [conversations](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversations) | ```<br>group_owners.group_id = conversations.group_id<br>``` |
| [conversation_threads](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversation-threads) | ```<br>group_owners.group_id = conversation_threads.group_id<br>``` |
| [team_drives](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#team-drives) | ```<br>group_owners.group_id = team_drives.owner.group.id<br>``` |

group\_owners table schema

| **business\_phones**<br><br>ARRAY<br><br>This is a nested data structure. |
| --- |
| **display\_name**<br><br><br>STRING |
| **given\_name**<br><br><br>STRING |
| **group\_id**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **job\_title**<br><br><br>STRING |
| **mail**<br><br><br>STRING |
| **mobile\_phone**<br><br><br>STRING |
| **office\_location**<br><br><br>STRING |
| **preferred\_language**<br><br><br>STRING |
| **surname**<br><br><br>STRING |
| **user\_principal\_name**<br><br><br>STRING |

### groups

The `groups` table contains information about groups in your organization within your Microsoft account. Some old teams in your account will not have a `resource_provisioning_options` value. For more information, refer to [Microsoft’s docs](https://docs.microsoft.com/en-us/graph/known-issues#missing-teams-in-list-all-teams).

| **Replication Method** | Full Table |
| --- | --- |
| **Primary Key** | id |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/teams-list-all-teams?context=graph%2Fapi%2Fbeta&view=graph-rest-beta "Opens in new tab: Microsoft Teams API method") |

groups table foreign keys

| Join groups with | on |
| --- | --- |
| [group_owners](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#group-owners) | ```<br>groups.id = group_owners.group_id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>groups.id = channel_tabs.group_id<br>``` |
| [conversations](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversations) | ```<br>groups.id = conversations.group_id<br>``` |
| [conversation_threads](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversation-threads) | ```<br>groups.id = conversation_threads.group_id<br>``` |
| [team_drives](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#team-drives) | ```<br>groups.id = team_drives.owner.group.id<br>``` |

groups table schema

| **classification**<br><br><br>STRING |
| --- |
| **created\_date\_time**<br><br><br>DATE-TIME |
| **creation\_options**<br><br>ARRAY<br><br>This is a nested data structure. |
| **deleted\_date\_time**<br><br><br>DATE-TIME |
| **description**<br><br><br>STRING |
| **display\_name**<br><br><br>STRING |
| **expiration\_date\_time**<br><br><br>DATE-TIME |
| **group\_types**<br><br>ARRAY<br><br>This is a nested data structure. |
| **id**<br><br><br>STRING |
| **is\_assignable\_to\_role**<br><br><br>BOOLEAN |
| **mail**<br><br><br>STRING |
| **mail\_enabled**<br><br><br>BOOLEAN |
| **mail\_nickname**<br><br><br>STRING |
| **membership\_rule**<br><br><br>STRING |
| **membership\_rule\_processing\_state**<br><br><br>STRING |
| **onPremises\_domain\_name**<br><br><br>STRING |
| **on\_premises\_last\_sync\_date\_time**<br><br><br>DATE-TIME |
| **on\_premises\_net\_bios\_name**<br><br><br>STRING |
| **on\_premises\_provisioning\_errors**<br><br>ARRAY<br><br>This is a nested data structure. |
| **on\_premises\_sam\_account\_name**<br><br><br>STRING |
| **on\_premises\_security\_identifier**<br><br><br>STRING |
| **on\_premises\_sync\_enabled**<br><br><br>BOOLEAN |
| **preferred\_data\_location**<br><br><br>STRING |
| **preferred\_language**<br><br><br>STRING |
| **proxy\_addresses**<br><br>ARRAY<br><br>This is a nested data structure. |
| **renewed\_date\_time**<br><br><br>DATE-TIME |
| **resource\_behavior\_options**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **resource\_provisioning\_options**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **security\_edentifier**<br><br><br>STRING |
| **security\_enabled**<br><br><br>BOOLEAN |
| **theme**<br><br><br>STRING |
| **visibility**<br><br><br>STRING |

### team\_device\_usage\_report

The `team_device_usage_report` table contains information about a group’s device usage in Microsoft Teams.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Keys** | user\_principal\_name<br><br>report\_refresh\_date |
| **Replication Key** | report\_refresh\_date |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/reportroot-getteamsdeviceusageuserdetail?view=graph-rest-beta "Opens in new tab: Microsoft Teams API method") |

team\_device\_usage\_report table schema

| **deleted\_date**<br><br><br>STRING |
| --- |
| **is\_deleted**<br><br><br>STRING |
| **last\_activity\_date**<br><br><br>STRING |
| **report\_period**<br><br><br>STRING |
| **report\_refresh\_date**<br><br><br>STRING |
| **used\_android\_phone**<br><br><br>STRING |
| **used\_i\_os**<br><br><br>STRING |
| **used\_mac**<br><br><br>STRING |
| **used\_web**<br><br><br>STRING |
| **used\_windows**<br><br><br>STRING |
| **used\_windows\_phone**<br><br><br>STRING |
| **user\_principal\_name**<br><br><br>STRING |

### team\_drives

The `team_drives` table contains information about the drive that your team is on in your Microsoft account.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Keys** | id<br><br>group\_id |
| **Replication Key** | last\_modified\_date\_time |
| **Useful links** | [Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/drive-get?view=graph-rest-beta&tabs=http#get-the-document-library-associated-with-a-group "Opens in new tab: Microsoft Teams API method") |

team\_drives table foreign keys

| Join team\_drives with | on |
| --- | --- |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#groups) | ```<br>team_drives.owner.group.id = groups.id<br>``` |
| [group_owners](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#group-owners) | ```<br>team_drives.owner.group.id = group_owners.group_id<br>``` |
| [channel_tabs](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-tabs) | ```<br>team_drives.owner.group.id = channel_tabs.group_id<br>``` |
| [conversations](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversations) | ```<br>team_drives.owner.group.id = conversations.group_id<br>``` |
| [conversation_threads](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#conversation-threads) | ```<br>team_drives.owner.group.id = conversation_threads.group_id<br>``` |

team\_drives table schema

| **created\_by**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>user: OBJECT, which is also a nested data structure.											<ul><li>display_name: STRING</li></ul></li></ul> |
| --- |
| **drive\_type**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **last\_modified\_date\_time**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **owner**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>group: OBJECT, which is also a nested data structure.											<ul><li>display_name: STRING</li><li>email: STRING</li><li>id: STRING</li></ul></li></ul> |
| **quota**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>deleted: INTEGER</li><li>remaining: NUMBER</li><li>state: STRING</li><li>total: NUMBER</li><li>used: INTEGER</li></ul> |
| **web\_url**<br><br><br>STRING |

### users

The `users` table contains information about users in your Microsoft account.

| **Replication Method** | Full Table |
| --- | --- |
| **Primary Key** | id |
| **Useful links** | [Microsoft Teams documentation](https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-beta.htm)<br><br>[Microsoft Teams API method](https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=http "Opens in new tab: Microsoft Teams API method") |

users table foreign keys

| Join users with | on |
| --- | --- |
| [channel_members](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-members) | ```<br>users.id = channel_members.user_id<br>``` |
| [channel_message_replies](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-message-replies) | ```<br>users.id = channel_message_replies.from.user.id<br>```<br><br>```<br>users.id = channel_message_replies.mentions.mentioned.user.id<br>```<br><br>```<br>users.id = channel_message_replies.reactions.user.user.id<br>``` |
| [channel_messages](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Microsoft-Teams.htm#channel-messages) | ```<br>users.id = channel_messages.from.user.id<br>```<br><br>```<br>users.id = channel_messages.mentions.mentioned.user.id<br>```<br><br>```<br>users.id = channel_messages.reactions.user.user.id<br>``` |

users table schema

| **business\_phones**<br><br>ARRAY<br><br>This is a nested data structure. |
| --- |
| **display\_name**<br><br><br>STRING |
| **given\_name**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **job\_title**<br><br><br>STRING |
| **mail**<br><br><br>STRING |
| **mobile\_phone**<br><br><br>STRING |
| **office\_location**<br><br><br>STRING |
| **preferred\_language**<br><br><br>STRING |
| **surname**<br><br><br>STRING |
| **user\_principal\_name**<br><br><br>STRING |