Teams Policy Enforcement

Die Verwendung von Teams durch Anwender kann umfangreich durch Richtlinien gesteuert werden. Diese Seite beschreibt die verschiedenen Richtlinien und ihre Abhängigkeiten.

Achtung
Der "Stichtag" für die beschriebene Änderung ist der 25. März und betrifft Benutzer. die für einen SFB*-Mode konfiguriert sind und deren Richtlinien abweichend einstellt sind.

Ausgangssituation

Microsoft hat es in der Dokumentation schon länger beschrieben aber nicht alle Administratoren haben die Umsetzung entsprechend umgesetzt. Ich muss dazu aber auch sagen, dass der Updateweg von Skype for Business zu Teams auch einige Umwege genommen hat, die zu Konfigurationsfehlern führen können. Anfangs musste ein Administrator mehrere PowerShell-Commandlets abstimmen (CsTeamsUpgradeConfiguration, CsTeamsMigrationConfiguration, CsTeamsInteropPolicy, CsTeamsUpgradePolicy). Irgendwann im Herbst 2018 wurde dann die CsTeamsUpgradePolicy die dominante Einstellung und CsTeamsInteropPolicy wurde inaktiv. Das bedeutet aber nicht, dass die anderen Richtlinien nicht weiter zu setzen sind. Microsoft beschreibt das auf der folgenden Seite sehr ausführlich:

In der Kurzfassung sind folgende Policies und Einstellungen relevant:

Einstellung SfBOnly SfBWithTeamsCollab SfBWithTeamsCollabAndMeetings TeamsOnly  Islands

TeamsMessagingPolicy.
-AllowUserChat

$false

$false

$false

$true $true

TeamsCallingPolicy
-AllowPrivateCalling

$false

$false

$false

$true $true

TeamsMeetingPolicy
-AllowPrivateMeetingScheduling

$false

$false

$true $true $true

TeamsMeetingPolicy
-AllowChannelMeetingScheduling

$false

$false

$true $true $true

Aber sie müssen sie sich schon noch selbst darum kümmern und wenn Sie einem Benutzer eine Policy zuweisen, dann könnten Sie folgendes sehen:

Das ganz noch mal Text für Google und Go

`Grant-CsTeamsUpgradePolicy -Identity user1@uclabor.com -PolicyName SfBWithTeamsCollab
WARNING: The user 'user1@uclabor.com' currently has effective policy enabled values 
for: AllowUserChat, AllowPrivateCalling, AllowPrivateMeetingScheduling, AllowChannelMeetingScheduling. 
In the near term, when granting TeamsUpgradePolicy with mode=SfBWithTeamsCollab to a 
user, you must also separately assign policy to ensure the user has effective policy 
disabled values for: AllowUserChat, AllowPrivateCalling, AllowPrivateMeetingScheduling, 
AllowChannelMeetingScheduling. 
In the future, the capability will automatically honor TeamsUpgradePolicy.`

Die Herausforderung ist also nicht neu oder unerwartet.

Passende Policies

Sie sollten also mit der Änderung der TeamsUpdatePolicy auch die richtigen Policies zuweisen. Hier mal eine Filterung der Policies in einem normalen Tenant

  • Get-CsTeamsMessagingPolicy
    Interessant, das es hier in meinem Tenant gar keine Richtlinie gibt die ich anwenden könnte. Ich muss mir also erst eine bauen
PS C:\> Get-CsTeamsMessagingPolicy  | ft identity,AllowUserChat

Identity       AllowUserChat
--------       -------------
Global                  True
Tag:Default             True
Tag:EduFaculty          True
Tag:EduStudent          True
  • Get-CsTeamsCallingPolicy
    Hier gibt es zumindest eine Richtlinie, die ein "AllowPrivateCalling = $False" hat
PS C:\> Get-CsTeamsCallingPolicy  | ft identity,AllowPrivateCalling

Identity                                 AllowPrivateCalling
--------                                 -------------------
Global                                                  True
Tag:AllowCalling                                        True
Tag:DisallowCalling                                    False
Tag:AllowCallingPreventTollBypass                       True
Tag:AllowCallingPreventForwardingtoPhone                True
  • Get-CSTeamsMeetingPolicy
    Auch hier gibt es nur zwei Polices, bei denen die beiden Werte auf "false" stehen und damit für die Benutzer mit der Einstellung "SfBOnly" oder "SfBWithTeamsCollab" passend sind.
PS C:\> Get-CsTeamsMeetingPolicy | ft identity,AllowPrivateMeetingScheduling,AllowChannelMeetingScheduling

Identity                           AllowPrivateMeetingScheduling AllowChannelMeetingScheduling
--------                           ----------------------------- -----------------------------
Global                                                      True                          True
Tag:BypassMeetingLobby                                      True                          True
Tag:AllModality                                             True                          True
Tag:AllOn                                                   True                          True
Tag:RestrictedAnonymousAccess                               True                          True
Tag:AllOff                                                 False                         False
Tag:RestrictedAnonymousNoRecording                          True                          True
Tag:Default                                                 True                          True
Tag:Kiosk                                                  False                         False


PS C:\> Get-CsTeamsMeetingPolicy tag:alloff

Identity                                   : Tag:AllOff
Description                                :
AllowChannelMeetingScheduling              : False
AllowMeetNow                               : False
AllowIPVideo                               : False
AllowAnonymousUsersToDialOut               : False
AllowAnonymousUsersToStartMeeting          : False
AllowPrivateMeetingScheduling              : False
AutoAdmittedUsers                          : EveryoneInCompany
AllowCloudRecording                        : False
AllowOutlookAddIn                          : False
AllowPowerPointSharing                     : False
AllowParticipantGiveRequestControl         : False
AllowExternalParticipantGiveRequestControl : False
AllowSharedNotes                           : False
AllowWhiteboard                            : False
AllowTranscription                         : False
MediaBitRateKb                             : 50000
ScreenSharingMode                          : Disabled
AllowPSTNUsersToBypassLobby                : False
AllowOrganizersToOverrideLobbySettings     : False

Es ist aber ein steiniger Weg, wenn Sie dir Richtlinien bislang nicht richtig angewendet haben.

Weckruf: Feb 2018

Im Februar 2018 bekam ich dann folgende Mail als Administrator:

You are receiving this message because our reporting indicates one or more users in your organization are assigned one of the Skype for Business coexistence modes (either SfbOnly, SfbWithTeamsCollab, or SfbWithTeamsCollabAndMeetings), *and* they do not have consistent settings in TeamsMessagingPolicy, TeamsMeetingPolicy, and TeamsCallingPolicy. As a result, when this is enforced, some users may see a change in their experience in the Teams client as the user experience begins to conform to their mode.

Hier noch mal die komplette Mail:

Microsoft wird also die Einstellungen der Upgrade-Policy nun auch durchsetzen und dem Benutzer im Client ggfls.  Funktionen ab 25. März wegnehmen. Auf der einen Seite ist das gut, weil sich Teams dann endlich verhält, wie der Administrator es vorgegeben hat aber auf der anderen Seite kann es sein, dass Anwender bestimmte Funktionen nicht mehr nutzen können, die sie bislang verwendet haben.

Aus technischer Sicht wird Microsoft die von ihnen konfigurierten Einstellungen in den Richtlinien nicht verändern aber einfach bei der Auslieferung an den Client überstimmen. Es gibt also keinen Weg dies zu umgehen.

Der schmutzige Weg

Es gibt einen einfachen und schnellen Weg, um Benutzer mit unstimmigen Einstellungen zu ermitteln. Sie lesen einfach die Benutzer und ihre aktuelle UpgradePolicy ein und weisen Sie direkt wieder zu.

get-csonlineuser -resultsize unlimited `
| %{ `
   Grant-CsTeamsUpgradePolicy `
      -Identity $_.identity `
      -PolicyName $_.teamsupgradepolicy `
}

Auf der Konsole sehen Sie dann alle gelben Warnungen, unter denen auch die Unstimmigen Benutzer auftauchen. Allerdings müssen Sie dann immer noch suchen, was genau unstimmig ist. Interessanterweise ist es mir nicht gelungen, die Ausgabe mit "-WarningVariable" einfangen.

Report: Wer nutzt was?

Weder die Mail von Microsoft noch ein Office 365 Report liefert aktuell die Information, welche Benutzer "falsch" konfiguriert sind. Die Abteilung, welche die Mail erstellt hat, kann aber wohl auch nur die Werte lesen aber keine dazu gehörenden Benutzer. Daher gibt es keinen Report zu den betroffenen Personen. Aber diesen Bericht können wir selbst erstellen.

Aufgrund der kurzen Zeit bis zum Zeitpunkt habe ich darauf verzichtet, über Graph zu ermitteln, welche Benutzer welche Funktion nutzen. Ich beschränke mich darauf die Benutzer zu finden, die laut Konfiguration mehr dürfen als sie laut UpgradePolicy nutzen dürfen. Vielleicht sind es ja nur ein paar Benutzer, die sie manuell nacharbeiten können. Wir lesen also erst alle Richtlinien aus, um uns die entsprechenden Einstellungen zu merken und prüfen dann Benutzer für Benutzer die errechneten Richtlinien gegen die erforderlichen Einstellungen. Wenn ein Benutzer dabei keine Policy hat, gilt die "Global"-Policy

Das ist bei meinem Benutzer gut zu sehen, der noch "Global" für alle drei Richtlinien hatte und die natürlich nicht mit "SfBWithTeamsCollab" zusammen gehen

Die Bildschirmausgabe ist natürlich primär zur Fehlersuche. Das Skript sendet eine Zusammenfassung in die Pipeline und kann z.B. über Export-CSV auch in Datei geschrieben werden. Das einzelne Objekt hat die folgenden Properties

UPN                             : user1@uclabor.de
TeamsUpgradeEffectiveMode       : SfBWithTeamsCollab
AllowUserChat                   : True
AllowUserChatok                 : False
AllowPrivateCalling             : False
AllowPrivateCallingok           : True
AllowPrivateMeetingScheduling   : True
AllowPrivateMeetingSchedulingok : False
AllowChannelMeetingScheduling   : True
AllowChannelMeetingSchedulingok : False

Damit ist eine Weiterverarbeitung natürlich einfach möglich.

Das Skript habe ich schnell erstellt und nicht ausführlich getestet. Es "liest" nur die Einstellungen ein und gibt das Ergebnis aus. Kontrollieren Sie zumindest

check-teamspolicies.20190320.ps1
Einfach in ein Verzeichnis kopieren, die Erweiterung anpassen und aus der PowerShell ausführen. Auf dem Client muss der Skype for Business Online Connector installiert sein.

Aktionsplan

Sie können drauf warten, bis Microsoft ab dem 25. März die über die "TeamsUpgradePolicy" vorgegebene Betriebsart auf ihren Clients durchsetzt oder Sie können schon jetzt anfangen, ihre Client Policies entsprechend anzupassen und den Benutzern zuzuweisen, so dass nicht zu einem Stichtag alle Benutzer den Helpdesk anrufen. Das kann durchaus passieren, da heute Benutzer in Teams einen 1:1 Chat nutzen können und das dann später nicht mehr möglich sein wird. Für viele Firmen steht daher eine Frage nach dem "richtigen" Mode für diese Benutzer an

  • Upgrade Policies gewinnt
    Wenn Sie nichts machen, dann verlieren die betroffenen Benutzer einen Teil ihrer Funktion, weil Sie als Administrator dies per TeamsUpgradePolicy so mit Absicht konfiguriert haben. Ich würde mir noch mal die Rückendeckung der IT-Leitung oder des Geschäftsführer holen.
  • Teams Only
    Dann können Sie alles andere weiter nutzen aber der Weg ist für Firmen mit Skype for Business Telefonie nicht ohne weiteres gangbar. Callcenter und ResponseGroups sind anzupassen oder in der heutigen Form nicht möglich und die TK-Kopplung über DirectRouting erfordert ebenfalls Umstellungen.
  • Island-Mode
    Über diesen Weg können die Anwender in Teams wieder alles machen wir bisher aber die Anwender in diesem Mode müssen nun wieder beide Clients parallel starten, wenn Sie nichts verpassen wollen.

Microsoft würde sicherlich "Teams Only" bevorzugen aber die Wegnahme der nicht erlaubten Funktionen war schon lange überfällig. Ich weiß nicht, warum Microsoft damals mit der Einführung der TeamsUpgradePolicy die Konfiguration nicht erzwungen hat.

Ich gehe davon aus, dass die meisten Firmen als Nothilfe wieder auf "Island" zurück gehen, wenn Benutzer z.B. in Teams weiterhin 1:1 Chat nutzen wollen und in Skype for Business telefonieren.

Hinweis:
Denken Sie daran, dass Änderungen auch einige Stunden verzögert wirken. Der Teams Client aber auch die Teams Backends cachen Informationen und diese Zeiten sind durchaus etwas länger

Weitere Links

Manage Coexistence and Interoperability between SfB and Teams (Upgrade part 3 of 4)
https://www.youtube.com/watch?v=wEc9u4S3GIA&list=PLaSOUojkSiGnKuE30ckcjnDVkMNqDv0Vl