Skip to main content

Microsoft Teams Configuration for Laurel

Integrating Laurel's Capture tracking for Microsoft Teams Activity

Written by Katherine Yasi

Laurel uses the Microsoft Graph API to capture call records from Microsoft Teams. This guide walks IT administrators through registering an application in Microsoft Entra and granting the required permissions.

Resources:

Overview

You will complete 5 steps to configure the integration: four in Entra via your Azure Portal (https://entra.microsoft.com), and one in Microsoft Teams PowerShell:

  1. Create an App Registration

  2. Generate a client secret

  3. Grant required API permissions

  4. Authorize the app for online meeting access (Teams PowerShell)

  5. Share credentials securely with your Laurel Implementation team, or enter them directly within Laurel's Admin settings

Step 1: Create an App Registration

  1. In the left-hand Entra ID menu, click App registrations.

  2. In the top menu, click + New registration.

  3. Name the application Laurel - MSTeams and click Register.

Step 2: Generate a Client Secret

  1. In your new app registration, go to Certificates & secrets > New client secret.

  2. Set the following values:

    • Description: laurel-secret-1

    • Expires: 24 months

  3. Click Add.

  4. Immediately copy and securely store the secret value — it will not be visible again after you leave this page.

  5. Note the expiration date; you must generate a new secret before it expires to avoid disruption to the integration.

Step 3: Grant Required API Permissions

  1. In your app registration, go to API permissions > Add a permission

  2. Select Microsoft Graph > Application permissions

  3. Search for and select each of the following permissions:

Permission

Type

Purpose

CallRecords.Read.All

Application

Capture Teams call records

OnlineMeetings.Read.All

Application

Capture Teams online meeting details

User.Read.All

Application

Identify users in your tenant

Note: These permissions are only applied to the users who are given access to the application. We recommend using a user group for users that would have access to Laurel.

Instructions for User Group creation and assignment can be found here:

4. Once all three permissions have been added, click Grant admin consent for [your organization] and confirm.

All three added permissions should then show a green Granted status.

Note: If you are not an Entra admin, you will need to request that an admin grants consent.

Step 4: Authorize the App for Online Meeting Access

Granting the Graph API permissions in Step 3 is not sufficient on its own to read Teams meeting details. Microsoft requires a second, separate authorization, a Teams application access policy, before an application can read a user's online meetings using application permissions.

This step is completed in Microsoft Teams PowerShell, not in the Entra portal.

Prerequisites

  • The Teams Administrator role (or Global Administrator)

  • The Application (client) ID of the app registration created in Step 1

  • The Microsoft Teams PowerShell module

If the Teams PowerShell module is not already installed, run the following in PowerShell:

powershell

Install-Module -Name MicrosoftTeams -Scope CurrentUser

Then connect to your tenant:

powershell

Connect-MicrosoftTeams

1. Create the application access policy

Replace <application-client-id> with the Application (client) ID from your app registration's Overview tab:

powershell

New-CsApplicationAccessPolicy -Identity Laurel-OnlineMeetings -AppIds "<application-client-id>" -Description "Laurel MS Teams meeting details"

2. Grant the policy

Tenant-wide (recommended): every current and future Laurel user is covered, with no per-user step required as people are onboarded:

powershell

Grant-CsApplicationAccessPolicy -PolicyName Laurel-OnlineMeetings -Global


Per user: use this instead if your change management process requires validating against a single user first, replacing <user@yourfirm.com> with that user's UPN:

powershell

Grant-CsApplicationAccessPolicy -PolicyName Laurel-OnlineMeetings -Identity <user@yourfirm.com>


You can grant tenant-wide later once you're satisfied with the result; the policy itself does not need to be recreated.

Note: The -Identity parameter means different things in the two cmdlets. In New-CsApplicationAccessPolicy it is the name you're giving the policy. In Grant-CsApplicationAccessPolicy it is the user receiving the policy.

3. Verify the configuration

Confirm the policy exists and lists your app ID:

powershell

Get-CsApplicationAccessPolicy

The Laurel-OnlineMeetings policy should appear with your Application (client) ID in its AppIds field. If the only policy listed is the built-in Global policy with an empty AppIds value, the policy was not created.

Confirm the policy is assigned to a user:

powershell

Get-CsUserPolicyAssignment -Identity <user@yourfirm.com> -PolicyType ApplicationAccessPolicy

This should return Laurel-OnlineMeetings. No output means the user has no application access policy assigned.

Note: Teams policy changes do not take effect immediately. Allow time for the policy to propagate across your tenant before testing, and test using a newly created meeting rather than one that took place before the policy was applied.

Step 5: Share Credentials with Laurel

Once configuration is complete, please either:

  • Share securely with your Laurel Implementation team, or

  • Enter directly in Laurel's Customer Integration settings after you've been assigned Super Customer Admin or System Admin permissions.

See below for the required credentials necessary for integration activation (found under the Overview tab of your app registration):

  • Application (client) ID

  • Directory (tenant) ID

  • Client secret value

  • Client secret expiration date

Did this answer your question?