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:
Create an App Registration
Generate a client secret
Grant required API permissions
Authorize the app for online meeting access (Teams PowerShell)
Share credentials securely with your Laurel Implementation team, or enter them directly within Laurel's Admin settings
Step 1: Create an App Registration
Sign in to https://entra.microsoft.com.
In the left-hand Entra ID menu, click App registrations.
In the top menu, click + New registration.
Name the application
Laurel - MSTeamsand click Register.
Step 2: Generate a Client Secret
In your new app registration, go to Certificates & secrets > New client secret.
Set the following values:
Click Add.
Immediately copy and securely store the secret value — it will not be visible again after you leave this page.
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
In your app registration, go to API permissions > Add a permission
Select Microsoft Graph > Application permissions
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.
Resource: Configure application access to online meetings or virtual events (Microsoft)
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









