This brief article includes a few tips on how to verify which Office 365 user account have been enabled to use a partner-provided Cloud Video Interop (CVI) solution, like the Polycom RealConnect Service.
When initially configuring an Office 365 tenant for CVI one of the final steps is to enable user accounts for the service. The steps to do so though are different between Skype for Business and Microsoft Teams.
Note that in order to perform the PowerShell commands shown in this article one or more PowerShell Online modules will need to be setup on the workstation, if not already configured. One potentially confusing concept in this article to pay extra attention to is that in order to check the Teams configuration the Skype for Business Online PowerShell Module is used (this module contains both Skype and Teams cmdlets), yet to check the Skype configuration the Azure Active Directory (v1) module is used. This is because Teams uses a simple user setting via a policy while Skype leverages Office 365 add-on licenses.
Microsoft Teams
To enable the service for users on their own scheduled Microsoft Teams meetings the configuration is straightforward. A simple PowerShell cmdlet would have been used to enable either individual users or the entire tenant globally.
- Open Windows PowerShell and connect to the Skype for Business Online PowerShell module using the following cmdlets, but replacing the highlighted portion with the username of an administrative account in the target Office 365 tenant. Enter the account password when prompted.
Import-Module SkypeOnlineConnector
$skype = New-CsOnlineSession -UserName “jeff@msteams.net”
Import-PSSession $skype
Verify Service Configuration
- The Get-CsVideoInteropServiceProvider cmdlet can be used to confirm which service provider the tenant has been configured to use.
Get-CsVideoInteropServiceProvider
Verify User Configuration
The preferred methodology for initially enabling users with RealConnect for Teams is to grant a policy to specific user accounts versus enabling the entire tenant wholesale. This approach is more common with initial testing and is often used with a small amount of select accounts.
The Get-CsTeamsVideoInteropServicePolicy cmdlet can then be used to identify if the preferred provider has been enabled globally for all users or not.
- As the service must be turned on in a tenant this can be confirmed by validating that the ProviderName parameter on the global policy is assigned to the default setting of DefaultProvider.
Get-CsTeamsVideoInteropServicePolicy
Note that the DefaultProvider value in the Global policy above is the ProviderName for the ServiceProviderDisabled option.
- Alternatively if the cmdlet results return one of the provider names (e.g. Polycom) then this indicates that the service has been enabled for every user in the organization, at the global level.
Get-CsTeamsVideoInteropServicePolicy
Note that the DefaultProvider value in the Global policy above is the ProviderName for the Polycom option. In this case the environment has previously been configured to enable RealConnect for Teams with all user’s scheduled Teams meetings.
But for environments still using the default disabled policy setting then individual user accounts would need to have been enabled. In order to identify these account the Get-CsOnlineUser cmdlet results can filtered to output only accounts which have the TeamsVideoInteropServicePolicy parameter set to the desired value.
- Enter the following command to list only users which are enabled for the Polycom RealConnect Service for Microsoft Teams.
Get-CsOnlineUser -Filter {TeamsVideoInteropServicePolicy -eq ‘PolycomServiceProviderEnabled‘} | Select-Object DisplayName, UserPrincipalName, TeamsVideoInteropServicePolicy
In this example the Polycom service is being used, so the value to search for is ‘PolycomServiceProviderEnabled‘. Currently other possible parameter values are ‘BlueJeansServiceProviderEnabled‘, ‘PexipServiceProviderEnabled‘, or ‘ServiceProviderDisabled‘.
- Alternately, this cmdlet can be used to list all accounts in the tenant regardless of the policy parameter value.
Get-CsOnlineUser | Select-Object DisplayName, UserPrincipalName, TeamsVideoInteropServicePolicy
In the event that the TeamsVideoInteropServicePolicy has been previously set to a specific provider globally, then the individual user’s policy setting will operate in the standard policy relationship. This means that any users with no value currently on their parameter will use the Global policy setting, but if the user’s parameter is set to a different value then the user-specific value will take precedence over a different, globally assigned value.
CVI User Status | TeamsVideoInteropServicePolicy | |
Tenant | User | |
Disabled | ServiceProviderDisabled | null (or) ServiceProviderDisabled |
Enabled | ServiceProviderDisabled | <PartnerName>ServiceProviderEnabled |
Enabled | <PartnerName>ServiceProviderEnabled | null (or) <PartnerName>ServiceProviderEnabled |
Disabled | <PartnerName>ServiceProviderEnabled | ServiceProviderDisabled |
In the event that the tenant is globally enabled yet it is desired to return to the default configuration to instead manage user enablement individually then this is a simple procedure.
- Execute the following cmdlet to return the global policy the ServiceProviderDisabled setting.
Grant-CsTeamsVideoInteropServicePolicy -PolicyName ServiceProviderDisabled
Skype for Business
Unlike Microsoft Teams there is no option to simply globally enable the service on all users in a tenant for Skype meetings. User configuration in Skype for Business is handled by assigning an Office 365 add-on license entitled “Skype for Business Video Interop for Skype for Business”.
Because this solution is user-license based then enough licenses must be provided in the tenant and they must all be manually assigned to existing user accounts, as well as added to new user accounts as they are created in the environment.
License entitlement is performed automatically through the Cloud Solutions Provider relationship with the partner and one license will automatically be added to the tenant for every existing qualifying user license that exists in the tenant (e.g. Business Essentials, Enterprise E5, etc). For example, the tenant used in this article currently contains 20 Enterprise E1 licenses and 4 Enterprise E3 licenses, hence the total of 24 Video Interop licenses.
Given that Microsoft licenses are the components which enable the service for users then it is trivial to list all users in the tenant via PowerShell which are assigned a specific license.
- Open Windows PowerShell and connect to the Azure Active Directory PowerShell module using the Connect-MsolService cmdlet. When prompted enter the credentials of an administrative account for the Office 365 tenant.
Connect-MsolService
- Enter the following command to parse all user accounts and list only those with an assigned license containing the string ‘Video’.
Get-MsolUser | Where-Object {($_.licenses).AccountSkuId -match “Video“} |ft UserPrincipalName,DisplayName,Licenses
The output above lists any user accounts currently assigned a VIDEO_INTEROP license.
Hi Jeff:
I ran into a minor issue with this – that may not be a factor. Not sure. We are in the process of a move to a new office and created new meeting rooms. As part of my checklist, I thought it would be necessary to add the CsTeamsVideoInteropServicePolicy to the new rooms. However, on every new room created, I received a “Management object not found for identity” error.
I believe this might have been because at some point, we could no longer create rooms via ADUC and had to create them via 365 only. So – in a sense, the error is correct. The objects aren’t there in ADUC. But they are most certainly there in Exchange Online Resources.
However, it may not end up being a factor, because when I implemented RealConnect, we made the CsTeamsVideoInteropServicePolicy global.
Identity : Global
Description :
ProviderName : Polycom
Enabled : True
is at the top of the list.
Any thoughts on this?
Adam, only users which schedule Teams meetings need to be enabled for the Cloud Video Interop policies (read: people). Resource mailboxes do not need to be enabled this way as they are not used to create meetings, only join them.
If you’ve defined a CVI provider in the Global policy then it’ll apply to all user accounts in the entire tenant which do not already have a policy specifically applied to them, so technically the room mailbox account will be enabled but that is irrelevant. There’s no need to do anything with the room accounts so don’t enable them individually and don’t bother disabling them individually if the entire tenant was enabled.
Thanks man, pulled me from the fire. Great info.