A few days ago, I was trying to change the Teams Upgrade policy of a tenant from “Skype for Business with Teams collaboration” to “Teams Only“.
The company still had an (empty) Skype for Business on-premises deployment, but all the users were already migrated to Teams and had user lever upgrade policies
My assumption was that the user policy was (eventually) going to have a priority over the tenant level (which is exactly the scenario I had already, but with a large part of the users having “Skype for Business with Teams collaboration” replaced by “Teams Only” at the user level as in the screenshot below)
Next step, I have gone to the tenant Teams Upgrade tab and selected “Teams Only” a a coexistence mode
Hitting the Save button, the result was the one you can see below. Not much of an hint about the motivation
Usually using the Skype for Business Online PowerShell Module gives a bit more information. Looking at Get-CsTeamsUpgradePolicy I had a list of policies. Global was the one I was interested in modifying
Ok, looks like I could get the work done using Set-CsTeamsUpgradePolicy (I should be able to change the mode for the Global policy). What I obtained was another error. The command is not available, even if there is still a Doc.Microsoft.Com page for it https://docs.microsoft.com/en-us/powershell/module/skype/set-csteamsupgradepolicy?view=skype-ps
So, what next? Trying Grant-CsTeamsUpgradePolicy -PolicyName UpgradeToTeams -Global that should give the expected result anyway (leaving users with a user-level policy with their existing settings and setting the others to Teams Only).
What I got was another error, but finally with an explanation about where the issue was.
This organization cannot be upgraded to TeamsOnly at the tenant level because there is an on-premise deployment of Skype for Business detected in 1 or more of it sip domains, xxxx.yyy. Users can be individually upgraded to TeamsOnly using either Move-CsUser (if the user has an on-premises Skype for Business account) or Grant-CsTeamsUpgradePolicy (if the user is homed in Skype for Business online).
So, finally closing the loop: the Teams Only policy cannot be applied at the tenant level (unless all the on-premises deployments of Skype for Business for the relevant SIP domains have been removed).
As I said before, it is still possible to apply policies to the users in a batch, using a script like
$userlist = Get-CSOnlineUser
foreach($User in $userlist)
{
Grant-CsTeamsUpgradePolicy -PolicyName UpgradeToTeams -Identity $User.SipAddress
}