SUBJECT TO CHANGE
Please note this is an evolving service, with specifications subject to change in future. This document will be maintained based on any future specification changes that pertain to the sections in this document
Overview
This section assumes that you are familiar with the concepts of M365, Azure Entra ID, PowerShell and Microsoft Teams. Luware Recording requires that you complete these preconditions to enable the capture and archive of communication.
You will consent the required Luware Recording application permissions, whitelist the application, create and assign compliance policies and complete other preconditions required to enable Luware Recording.
This document provides the required guidance to enable Luware Recording.
Connectivity Overview
Luware Recording natively integrates with Microsoft Teams using the Microsoft provided software development kits (SDKs). Our solution is certified with Microsoft ensuring data privacy, security and compliance capture meets Microsoft's strict specifications.
Luware Recording captures directly from the Microsoft Teams back end servers using Microsoft Teams Compliance Recording Policies. These policies are applied to groups of users within a customers tenant and triggered when users make or receive communications within Microsoft Teams. When the policy is triggered, Microsoft send an invite request to the Luware Recording environment via the Azure Bot, which sets up the capture of the communication using Luware Recording servers.
Luware Recording uses the Graph API service and Azure Entra to pull metadata to enhance captured conversations and allow users to login securely to the Web portal.
Microsoft provide detailed information on how this works in the Introduction to Microsoft Teams third Party Compliance Recording document.
Required Application Permissions
Luware Recording has specific Azure Entra Application Permissions that must be accepted to allow the capture, archive and web portal functions. These must be consented to enable Luware Recording:
Recording Application Permissions
The following permissions are required for Luware Recording:
Type |
API/Permissions |
Short Description |
Technical Description |
---|---|---|---|
Delegated |
User.Read |
Sign in and read user profile - User |
The Luware Recording portal will redirect users to your Azure Active Directory login page when a user attempts to sign in. This permission allows the users to sign in to the Luware Recording portal. The user details are pulled from Azure Active Directory using a combination of the permissions below. |
Application |
Calls.Access.Media.All |
Access media streams in a call as an app |
This permission is mandated by Verint and Microsoft for recording. |
Application |
Calls.JoinGroupCall.All |
Join group calls and meetings as an app |
This permission is mandated by Verint and Microsoft for recording. |
Application |
Calls.JoinGroupCallAsGuest.All |
Join group calls and meetings as a guest |
This permission is mandated by Verint and Microsoft for recording. |
Application |
OnlineMeetings.Read.All |
Read online meeting details |
This permission is mandated by Verint for selective recording scenarios and additional meeting metadata. |
Application |
Calendars.read |
Read meeting and display names |
This permission is mandated by Verint for selective recording scenarios and additional meeting metadata. |
Application |
Group.Read.All |
Read all groups |
To determine who to record from your tenant, we need to have a way of identifying groups of users for recording, supervision and administrative functions. To do this, we will ask you to configure 3 sets of groups. The system will then query those specific groups every day requesting user details for each user. |
Application |
GroupMember.Read.All |
Read all group memberships |
To pull the specific users that are member of the groups specified in Group.Read.All permission. |
Application |
User.Read.All |
Read all users' full profiles |
To determine the users extension for recording, we need to pull the users details such as Id field from Azure. |
Customer Tenant Configuration Steps
Luware recommends the following sequence is used to enable the customers environment for Luware Recording:
- Create Azure Entra Security Groups for Luware Recording
- Consent to the Luware Recording Bot permissions
- Whitelist the Luware Recording Bot applications
- Create Microsoft Teams Compliance Policies
- Grant Microsoft Teams Compliance Policies
- Complete the Azure Storage Account Preconditions
- Complete the Microsoft Teams Instant Message Capture (Optional)
1.Create Azure Entra Security Groups for Luware Recording
Luware Recording utilizes Azure Entra security groups to determine role based access permissions and recording rules. Luware Recording synchronises the users of groups automatically. Compliance Policies should be granted to Azure Entra security groups which will automatically enable recording for users when they are added to the group.
In a basic setup of Luware Recording, you will have at least 3 groups:
- Recorded Users: Members of this group will be granted the Microsoft Teams Compliance Policy and be enabled in Luware Recording for capture and archive. These are licensed users in the Luware Recording system.
- Supervisors: Members of this group have access to the captured conversations of the Recorded Users.
- Administrators: Members of this group have the ability to access the underlying configuration of the Luware Recording environment.
Additional Security Groups
Some solution packages have restrictions on the number of security groups that can be synchronised into Luware Recording. For more information, you can check the Solution Packages article.
Create the Azure Entra Security Groups
Login to the Azure Portal and create the required Azure Entra security groups. Microsoft provide a detailed help article here: Quickstart: Create a group with members and view all groups and members.
An example of basic group configuration:
Security Group Display Name | Role |
---|---|
LuwareRecording-RecordedUsers | Recorded Users |
LuwareRecording-Supervisors | Supervisors |
LuwareRecording-Administrators | Administrators |
Assign Test Users
Luware recommends a unique test user is assigned to each group while you validate the features and functions of the Luware Recording environment.
💡 If you don't have enough licenses to assign unique test users, we can move users between groups later for testing.
Save the Group Names for later
The group names will be required to grant the Microsoft Teams Compliance Policies and for the synchronisation of users into the Luware Recording system. Make a note of the created Security Groups Display Name property for each group created.
💡For more complex group configuration, consult your Luware customer success specialist.
2. Consent to Luware Recording Graph API Permissions
You must consent to permissions within your Azure Entra tenant for the Luware Recording application to function. To consent to the Luware Recording application permissions, a user with Global Administrator role based access control permissions in the Azure Entra tenant is required.
Global Administrator Role Required
An Azure Entra account with the Global Administrator role is required to accept Luware Recording application permissions.
Find my Azure Entra Tenant ID
To create the consent URL that your Azure Global Administrator will be required to use, we first need to acquire the Azure tenant ID of the environment where the Microsoft Teams users are enabled.
Microsoft provide guidance in their How to find your Microsoft Entra tenant ID article.
Acquire the Luware Recording Application IDs
Your Luware Recording customer success specialist will email you the Luware Recording application Ids. These are used in the URL to generate the consent link for Luware Recording. Depending on which regional environment you have selected a set of specific application Ids will be provided.
Generate the URL
Now we have the required information, we need to modify the below URLs with the Tenant ID and the Luware Recording Application Ids. Follow the below steps to generate the consent URL:
- Copy the URLs from the correct regional environment below to notepad.
- Replace <Customer Tenant ID> with your Azure Entra Tenant Id.
- Replace <Luware Recording App Id 1> with the Id provided by the Luware Recording customer success specialist.
- For 2N environments, Replace <Luware Recording App Id 2> with the Id provided by the Luware Recording customer success specialist.
Multi-Tenant Switzerland
Luware Recording Application Id 1:
https://login.microsoftonline.com/<Customer Tenant ID>/adminconsent?client_id=<Luware Recording App Id 1>&state=12345&redirect_uri=https://luware.com
Multi-Tenant Germany
Luware Recording Application Id 1:
https://login.microsoftonline.com/<Customer Tenant ID>/adminconsent?client_id=<Luware Recording App Id 1>&state=12345&redirect_uri=https://luware.com
Luware Recording Application Id 2:
https://login.microsoftonline.com/<Customer Tenant ID>/adminconsent?client_id=<Luware Recording App Id 2>&state=12345&redirect_uri=https://luware.com
Consent to the Application
To provide consent to the Luware Recording application, complete the below steps:
- Login to portal.azure.com with the Global Administrator role assigned.
- Visit the URLs generated.
- Click Accept on the Permissions.
- For 2N environments, you must perform this action for both URLs generated.
3. Whitelist Luware Recording Bot Graph Application
The Luware Recording Application needs to be "White-Listed" within the M365 tenant where the Microsoft Teams users are enabled. This section provides the PowerShell commands to perform this requirement, using the Teams Powershell Module.
Administrator Role Required
An Azure Entra account with the Global Administrator or User Administrator role is required create the Application Instances within Microsoft Teams and Azure Entra.
Install module and connect using PowerShell
Open PowerShell ISE on your local machine and run the below commands from the script pane. Import-Module will download the Microsoft Teams PowerShell module. After installation, Connect-MicrosoftTeams will authenticate against the Azure Entra environment.
Import-Module MicrosoftTeams
Connect-MicrosoftTeams
The Authentication sign-in box will pop-up as shown below, sign in with the Azure Entra account which has the Global Administrator or User Administrator role assigned.
Prepare the Commands
Follow the below steps to prepare the commands to whitelist the Luware Recording application Ids within the M365 Teams environment.
- Depending on your chosen Luware Recording region, copy the commands from below to the PowerShell ISE script pane.
- Replace the <domain.com> with your M365 Teams domain.
- Replace the <Luware Recording App Id> with the corresponding Application Ids provided by your customer success specialist.
Multi-Tenant Switzerland
Luware Recording Application Id 1:
New-CsOnlineApplicationInstance -UserPrincipalname luwarerecording-mtch-1@<domain.com> -DisplayName "Luware Recording MTCH 1" -ApplicationId <Luware Recording App Id 1>
Multi-Tenant Germany
Luware Recording Application Id 1:
New-CsOnlineApplicationInstance -UserPrincipalname luwarerecording-mtde-1@<domain.com> -DisplayName "Luware Recording MTDE 1" -ApplicationId <Luware Recording App Id 1>
Luware Recording Application Id 2:
New-CsOnlineApplicationInstance -UserPrincipalname luwarerecording-mtde-2@<domain.com> -DisplayName "Luware Recording MTDE 2" -ApplicationId <Luware Recording App Id 2>
Run the commands and save the object IDs for later
Execute the commands from PowerShell ISE and if successful you will receive an update as shown below.
💡For 2N environments, you must run this command once for each Luware Recording Application ID.
Copy the ObjectId value as shown in the screenshot below, this will be used later to link the whitelisted application to the Microsoft Teams Compliance Policy.
Make a note in the below format:
Multi-Tenant Switzerland
Id |
Object Id | Object Id Value |
Luware Recording App Id 1 | <ObjectId1> | ObjectId1 |
Multi-Tenant Germany
Id |
Object Id |
Object Id Value |
Luware Recording App Id 1 | <ObjectId1> | ObjectId1 |
Luware Recording App Id 2 | <ObjectId2> | ObjectId2 |
4. Create Microsoft Teams Compliance Policies
This section explains the concept and creation of Microsoft Teams Compliance Recording Policies within your tenant. The process of creating and granting policies follows the below steps:
- Create a Compliance Recording Policy.
- Link the Luware Recording application and apply rules to the Compliance Recording Policy.
- Link the 2N Recording Application to the Compliance Recording Policy.
- Grant the Policy to users using Groups.
Overview of Policy Settings
Before creating the compliance policy, it's important to understand the difference between a Fail Close and Fail Open policy. The value column is used to set the configuration of fail close and fail open during setup.
Type |
Description |
Value |
Recommended for Compliance Recording |
Fail Open | When a recorded user initiates or receives a call, a request is sent to invite the recorder, however, a response is not required to allow the user to join the call. If recording fails, the user is not notified and the user is permitted to continue the call. | $false | No |
Fail Close |
When a recorded user initiates or receives a call, the compliance policy must receive a response from the Luware Recording servers to setup capture of the communication. If no response is received, the call will fail to connect with following message on the Teams client:
“We couldn't connect you - There was a problem setting up the recording required by your org” |
$true | Yes |
Fail Close is recommended for Compliance Recording
Luware recommends enabling fail close for all compliance recording use cases, this reduces the risk of missed recordings due to delays in user assignment or due to connectivity issues between the M365 cloud services and the Luware Recording services.
Create a Compliance Recording Policy
Follow the below guidance to create a Microsoft Teams Compliance Recording Policy. A user with the Global Administrator role is required to create compliance recording policies. The Description and Identity fields are customisable.
- Open PowerShell ISE on your local machine or use the Microsoft Teams Cloud Shell.
- Login with a user enabled with the Global Administrator role.
- Copy the below command and edit the Description and Identity fields.
Type |
Description |
Example |
Description | Customisable field that contains a text description for the use case of the policy. Recommended to include information about the type of users or use case. | Luware Recording Fail Close 1 |
Identity | A unique name for the compliance recording policy, used in later stages to link settings to the policy | luwarerecordingfailclose1 |
Script:
New-CsTeamsComplianceRecordingPolicy -Enabled $true -Description '<CompliancePolicyDescription>' -Identity '<CompliancePolicyName>'
Example:
New-CsTeamsComplianceRecordingPolicy -Enabled $true -Description 'Luware Recording Fail Close 1' -Identity 'luwarerecordingfailclose1'
💡 If your creating more than one policy, run the command again after modifying the Description and Identity values so they are unique, for example, -Identity ‘luwarerecordingfailclose2’.
Link the Luware Recording application and apply rules to the Compliance Recording Policy
The Compliance Recording Policy must then be linked to the whitelisted applications created earlier and setup with specific settings. In the table below, we provide an explanation of the parameters used for Fail Open and Fail Close. Luware recommends setting Fail Close for all parameters.
Name of Parameter |
Description |
RequiredBeforeCallEstablishment | Defines if the bot has to join the call before the recorded user can place or receive calls |
RequiredBeforeMeetingJoin | Defines if the bot has to join the call before the recorded user can join the meetings |
RequiredDuringCall | Defines if the recorded user will be disconnected from the call if the recorder bot connection is lost |
RequiredDuringMeeting | Defines if the recorded user will be disconnected from the meetings if the recorder bot connection is lost |
You can choose from either the Fail Open or Fail Close policies below. To run the commands:
- Copy the command into PowerShell ISE on your local machine, or use the editor in Microsoft Teams Cloud Shell.
- Replace the <CompliancePolicyName> to match the Identity field used in the last step, in our example, it's luwarerecordingfailclose1
- Replace the <ObjectId1> to match the Luware Recording Application Id one from 3. Whitelist Luware Recording Bot Graph Application
Fail Close Policy
New-CsTeamsComplianceRecordingApplication -Identity 'Tag:<CompliancePolicyName>/<ObjectId1>' -RequiredBeforeCallEstablishment $true -RequiredDuringCall $true -RequiredBeforeMeetingJoin $true -RequiredDuringMeeting $true
Example:
New-CsTeamsComplianceRecordingApplication -Identity 'Tag:luwarerecordingfailclose1/b00d2f40-abcd-4e27-b2a5-93090e99c17e' -RequiredBeforeCallEstablishment $true -RequiredDuringCall $true -RequiredBeforeMeetingJoin $true -RequiredDuringMeeting $true
Fail Open Policy
New-CsTeamsComplianceRecordingApplication -Identity 'Tag:<CompliancePolicyName>/<ObjectId1>' -RequiredBeforeCallEstablishment $false -RequiredDuringCall $false -RequiredBeforeMeetingJoin $false -RequiredDuringMeeting $false
Example:
New-CsTeamsComplianceRecordingApplication -Identity 'Tag:luwarerecordingfailopen1/b00d2f40-abcd-4e27-b2a5-93090e99c17e' -RequiredBeforeCallEstablishment $false -RequiredDuringCall $false -RequiredBeforeMeetingJoin $false -RequiredDuringMeeting $false
💡If you are creating multiple policies, you need to run the above command once for each compliance recording policy you have created.
Link the 2N Recording Application to the Compliance Recording Policy
Multi-Tenant Germany Only
This step must be performed for customers on the Multi-Tenant Germany cluster only.
2N recording provides additional resiliency at the M365 policy check by using two invites to recorders, whereby, only one invite needs a response to allow the call to initiate.
You can choose from either the Fail Open or Fail Close policies below. To run the commands:
- Copy the command into PowerShell ISE on your local machine, or use the editor in Microsoft Teams Cloud Shell.
- Replace the <CompliancePolicyName> to match the Identity field used in the last step, in our example, it's luwarerecordingfailclose1
- Replace the <ObjectId1> to match the Luware Recording Application Id 1 from 3. Whitelist Luware Recording Bot Graph Application
- Replace the <ObjectId2> to match the Luware Recording Application Id 2 from 3. Whitelist Luware Recording Bot Graph Application
Multi-Tenant Germany
Set-CsTeamsComplianceRecordingApplication -Identity 'Tag:<CompliancePolicyName>/<ObjectId1>' -ComplianceRecordingPairedApplications @(New-CsTeamsComplianceRecordingPairedApplication -Id '<ObjectId2>')
Example:
Set-CsTeamsComplianceRecordingApplication -Identity 'Tag:luwarerecordingfailclose1/b00d2f48-bdc2-4e27-b2a5-93090e99c17e' -ComplianceRecordingPairedApplications @(New-CsTeamsComplianceRecordingPairedApplication -Id '52097e72-d9b8-4a1a-8d23-d44e2e03c27b')
💡If you are creating multiple policies, you need to run the above command once for each compliance recording policy you have created.
5. Grant the Microsoft Teams Compliance Policy
To enable Luware Recording to capture users in the security groups, we need to assign compliance policies to users. Luware recommends applying policies to the Azure Entra security groups that we're created earlier and will be used for synchronisation into Luware Recording.
Warning about Granting Policies
When the policy is granted to the security group, all users within that group will have the policy applied within 24 hours. If the Luware Recording setup is not completed, users will not be able to initiate or receive calls. Luware recommends adding a test user to the group before moving to go-live.
Luware do not support granting compliance recording policies to the Tenant.
Find the Group Object ID
To apply the policy to a group, first we need to collect the Groups Object Id from Azure Entra.
- Login to the Azure Portal
- Search for Microsoft Entra Id
- From the left navigation, click Manage, Groups.
- From the left navigation, click All Groups.
- Search for the Recorded User group created in section 1.Create Azure Entra Security Groups for Luware Recording
- Click the Recorded User group name.
- Copy the Object Id.
Grant the Compliance Recording Policy
Follow the below instructions to grant the Compliance Recording policy.
Policy Application Delay
Note that Microsoft state compliance policy assignment can take up to 24 hours to apply, however, in most cases, this will occur within an hour.
Grant to an Azure Entra Group
To grant the Compliance Recording Policy to an Azure Entra Group, the group selected must be the Recorded User group setup in section 1.Create Azure Entra Security Groups for Luware Recording.
- Copy the command into PowerShell ISE on your local machine, or use the editor in Microsoft Teams Cloud Shell.
- Replace the <AzureGroupObjectId> with the Group Object Id copied in the previous section.
- Replace the <CompliancePolicyName> to match the Identity field of the compliance recording policy created in section 4. Create Microsoft Teams Compliance Policies
Script:
New-CsGroupPolicyAssignment -GroupId "<AzureGroupObjectId>" -PolicyType TeamsComplianceRecordingPolicy -PolicyName "<PolicyName>"
Example:
New-CsGroupPolicyAssignment -GroupId 085fd5ee-756a-4284-b81d-a62549f12293 -PolicyType TeamsComplianceRecordingPolicy -PolicyName "luwarerecordingfailclose1"
Grant to an Azure User
Granting Policies to Users
Luware does not recommend applying policies to individual users. If a policy is assigned to a specific user, this will take priority over a policy granted by a group. Luware do not allow manual configuration of users in Luware Recording.
To grant the Compliance Recording Policy to an Azure User, the user must be setup with Luware Recording and be a member of the Recorded User group for recording to work.
- Copy the command into PowerShell ISE on your local machine, or use the editor in Microsoft Teams Cloud Shell.
- Replace the <UsersUPN> with the users UserPrincipleName from Azure Entra.
- Replace the <CompliancePolicyName> to match the Identity field of the compliance recording policy created in section 4. Create Microsoft Teams Compliance Policies
Script:
Grant-CsTeamsComplianceRecordingPolicy -Identity '<UsersUPN>' -PolicyName '<CompliancePolicyName>'
Example:
Grant-CsTeamsComplianceRecordingPolicy -Identity '265349a9-a897-4bf8-a222-3d3f87aa0346' -PolicyName 'luwarerecordingfailclose1'
Check a granted policy
After a policy is created you can verify the assignment by using the below scripts. This will show the policy is applied even if Microsoft has not completed the action on the M365 backend.
Check a policy on an Azure Entra Group
Script:
Get-CsGroupPolicyAssignment -GroupId <AzureGroupObjectId>
Example:
Get-CsGroupPolicyAssignment -GroupId 085fd5ee-756a-4284-b81d-a62549f12293
Check a policy on an Azure User
Script:
Get-CsOnlineUser -Identity <UsersUPN> | Select-Object -ExpandProperty 'TeamsComplianceRecordingPolicy'
Example:
Get-CsOnlineUser -Identity 4092d57d-c1be-42b0-a4f2-5ff8eb34fe19 | Select-Object -ExpandProperty 'TeamsComplianceRecordingPolicy'
6. Complete the Azure Storage Account Preconditions
You will need to setup an Azure Storage Account and Blob container to archive the captured recordings to storage. Complete the below requirements in this article: Azure Storage Preconditions .
7. Complete the Microsoft Teams Instant Message Capture (Optional)
To enable capture for Microsoft Teams Instant Message capture, you will need to setup the preconditions required in this article: MS Teams Chat Recording Preconditions.
Luware Support
INC Luware Support Address
Luware Website | https://luware.com/support/ |
---|---|
Luware Helpdesk | https://helpdesk.luware.cloud |
Cloud Service Status | https://status.luware.cloud/ |