MovetoTeams

Seit Skype for Business CU8 gibt es einen neuen Parameter bei "Move-CSUser". Ich habe ihn genutzt, um mich direkt von Skype for Business OnPremise zu Teams Online zu verschieben.

Vorher: SfBWithTeamsCollab

Ich habe mit Skype for Business On Premises angefangen und mit der Bereitstellung von Teams in der Cloud habe ich erst einmal im "Island"-Mode gearbeitet. Ich konnte mit anderen Teams-Benutzern mit allen Funktionen interagieren aber nicht telefonieren, da hier immer noch Skype for Business führend war. Irgendwann habe ich dann den Island-Mode verlassen und wurde zu einem "SfBWithTeamsCollab"-Benutzer. Ich konnte weiterhin mit Skype for Business On Premises wie gewohnt arbeiten aber in Teams haben mit dann die Funktionen 1:1-Chat, Anrufe und Präsenz gefehlt. Mit dem Teams Policy Enforcement im April 2019 sind die Buttons letztlich auch im Client verschwunden:

Allerdings wurde der Druck immer größer, denn je mehr Personen in Teams arbeiten, desto eher verpasse ich etwas und gerade die "Offline-Zeit", die ich aufgrund von Reisen und Tätigkeiten bei Kunden doch habe, nervt meine Kollegen. In Skype vor Business konnte man mich ja nur erreichen, wenn ich "online" bin. Ansonsten wurden wieder Mails gesendet. Ehe ich zu "TeamsOnly" gewechselt bin, habe ich meine vorherige Konfiguration noch einmal dokumentiert:

# So sah die Konfiguration im lokalen Skype for Business OnPremises Server aus
get-csuser frank.cariusxx@netatwork.de

Identity                    : CN=Carius\, Frank,OU=Modern Workplace,OU=Abteilung,DC=netatwork,DC=de
VoicePolicy                 : Default Policy
VoiceRoutingPolicy          :
ConferencingPolicy          :
PresencePolicy              :
DialPlan                    : Dialplan ohne Amtsholung
LocationPolicy              :
ClientPolicy                : PaderbornClientPolicy
ClientVersionPolicy         :
ArchivingPolicy             :
ExchangeArchivingPolicy     : Uninitialized
PinPolicy                   :
ExternalAccessPolicy        : Allow Federation+Public+Outside Access
MobilityPolicy              :
PersistentChatPolicy        :
UserServicesPolicy          :
CallViaWorkPolicy           :
ThirdPartyVideoSystemPolicy :
HostedVoiceMail             : True
HostedVoicemailPolicy       : CVMPilot
HostingProvider             : SRV:
RegistrarPool               : nawlync002.netatwork.de
Enabled                     : True
SipAddress                  : sip:frank.cariusxx@netatwork.de
LineURI                     : tel:+495251304613;ext=613
EnterpriseVoiceEnabled      : True
ExUmEnabled                 : False
HomeServer                  : CN=Lc
                              Services,CN=Microsoft,CN=1:34,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=netatwork,DC
                              =de
DisplayName                 : Carius, Frank
SamAccountName              : fcarius

Und analog dazu die Einstellungen in Teams.

# Konfiguration in Microsoft Teams
Get-CSOnlineUser | fl SipAddress,teams*,Registarpool
SipAddress                       : sip:frank.cariusxx@netatwork.de
TeamsUpgradeEffectiveMode        : SfBWithTeamsCollab
TeamsUpgradeNotificationsEnabled : False
TeamsUpgradePolicyIsReadOnly     : None
TeamsUpgradePolicy               :
TeamsUpgradeOverridePolicy       :
RegistrarPool                    :

Move-CSUser

Mit dem CU8 für Skype for Business habe ich direkt die Change einer direkten Verlagerung nach Teams genutzt. Mit dem VERBOSE-Schalter ist etwas mehr zu sehen:

$cred=Get-Credential
$url="https://admin0a.online.lync.com/HostedMigration/hostedmigrationService.svc"
Move-CsUser `
   -Identity frank.cariusxx@netatwork.de `
   -Target sipfed.online.lync.com `
   -MoveToTeams `
   -Credential $cred `
   -HostedMigrationOverrideUrl $url `
   -Verbose

VERBOSE: CN=Carius\, Frank,OU=Modern Workplace,OU=Abteilung,DC=netatwork,DC=de
Confirm Move-CsUser
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):y
VERBOSE: Validating parameters for move operation.
VERBOSE: Calculating new server information for user [sipfed.online.lync.com].
VERBOSE: Moving user [sip:frank.cariusxx@netatwork.de] across deployments.
VERBOSE: Initializing source external move endpoint.
VERBOSE: Creating target external move endpoint.
VERBOSE: Validating the hosted migration override URL provided:
[https://admin0a.online.lync.com/HostedMigration/hostedmigrationService.svc].
VERBOSE: Retrieving web ticket URL.
VERBOSE: Retrieving live id token.
VERBOSE: Initializing source external move endpoint.
VERBOSE: Validating user [sip:frank.cariusxx@netatwork.de] online, for on premises to online move.
VERBOSE: Validating user [sip:frank.cariusxx@netatwork.de] locally on premises, for on premises to online move.
VERBOSE: Validating read-write permissions on local Active Directory.
VERBOSE: Invoking begin move for user [sip:frank.cariusxx@netatwork.de].
VERBOSE: Setting resource data for user [sip:frank.cariusxx@netatwork.de].
VERBOSE: Completing move for user [sip:frank.cariusxx@netatwork.de].
VERBOSE: Re-homing user [sip:frank.cariusxx@netatwork.de] on the source.
VERBOSE: Re-homing user [sip:frank.cariusxx@netatwork.de] on the target.
Results from this operation can be found at "C:\Users\carius\AppData\Local\
Temp\20\MoveResults-0fb2308e-a8f3-4e07-9ad2-36ec8830fb6f.csv".

Der Benutzer wurde in wenigen Sekunden in die Cloud verschoben und für Teams aktiviert. Dabei wurden auch meine Buddy-Listen mit übertragen, auch wenn ich die in Teams erst einmal nicht gesehen habe. Aber das ist ja bekannt, dass die Migration in der Cloud erst verzögert passiert.

Sichtbarkeit beim Anwender

Es hat nur wenige Minuten bei mir gedauert, bis ich mich nicht mehr in Skype for Business anmelden konnte bzw. der Skype for Business Client zu einem "Meeting Only"-Client zurück gefahren wurde:

Auch die Präsenzanzeige im Skype Client ist "ReadOnly" und kann hier nicht mehr geändert werden. Sie ist aber nicht in Echtzeit mit der Präsenz in Teams synchron. Mit dem Umzug von OnPremises in die Cloud ändert sich natürlich auch der Audio-Konferenz-Anbieter

Ich sollte auch alle von mit zukünftig geplanten Meetings aktualisieren, damit diese nicht mehr auf die alte OnPremises Topologie verweisen. Es gibt hier leider keine Umleitung nach der Migration eines Benutzers.

Nachher On Premises

Änderungen durch die Migration betreffen auch das lokale AD-Benutzerobjekt als auch das Cloud Konto. Mein Konto wurde wie folgt geändert?

Get-CsUser frank.cariusxx@netatwork.de

Identity                    : CN=Carius\, Frank,OU=Modern Workplace,OU=Abteilung,DC=netatwork,DC=de
VoicePolicy                 : Default Policy
VoiceRoutingPolicy          :
ConferencingPolicy          :
PresencePolicy              :
DialPlan                    : Dialplan ohne Amtsholung
LocationPolicy              :
ClientPolicy                : PaderbornClientPolicy
ClientVersionPolicy         :
ArchivingPolicy             :
ExchangeArchivingPolicy     : Uninitialized
PinPolicy                   :
ExternalAccessPolicy        : Allow Federation+Public+Outside Access
MobilityPolicy              :
PersistentChatPolicy        :
UserServicesPolicy          :
CallViaWorkPolicy           :
ThirdPartyVideoSystemPolicy :
HostedVoiceMail             : True
HostedVoicemailPolicy       : CVMPilot
HostingProvider             : sipfed.online.lync.com
RegistrarPool               :
Enabled                     : True
SipAddress                  : sip:frank.cariusxx@netatwork.de
LineURI                     : tel:+495251304613;ext=613
EnterpriseVoiceEnabled      : True
ExUmEnabled                 : False
HomeServer                  : CN=Lc
                              Services,CN=Microsoft,CN=1:34,CN=Pools,CN=RTC Ser
                              vice,CN=Services,CN=Configuration,DC=netatwork,DC
                              =de
DisplayName                 : Carius, Frank
SamAccountName              : fcarius

Sie sehen hier aber auch Einstellungen, die sicher obsolet sind. Einen Dialplan oder ExternalAccessPolicy wird OnPremises niemand mehr interessieren.

Nachher: Teams

Auch in Skype for Business Online sehe ich Veränderungen nach der Migration

Get-CSOnlineUser -Identity sip:frank.cariusxx@netatwork.de | fl sipaddress,teamsupgrade*,RegistrarPool

SipAddress                       : sip:frank.cariusxx@netatwork.de
TeamsUpgradeEffectiveMode        : TeamsOnly
TeamsUpgradeNotificationsEnabled : False
TeamsUpgradePolicyIsReadOnly     : None
TeamsUpgradePolicy               : UpgradeToTeams
TeamsUpgradeOverridePolicy       :
RegistrarPool                    : sippoolbl20a20.infra.lync.com

Hier ist wichtig, dass ich erst mal als "TeamsUpgradeEffectiveMode" ein "TeamsOnly" habe. Ich habe aber immer noch einen "Registrar-Pool", obwohl ich schon 1005 Teams bin. Das ist aber normal, das jeder Teams-Benutzer immer noch einen Skype for Business Online-Konto hat. Dies ist u.a. für die Koexistenz mit Skype for Business Benutzern und Federation erforderlich.

ADSync

Da der Tenant im Hybrid-Mode läuft und daher auch das Office 365 Identity Management involviert ist, habe ich mal das Log von ADSync angeschaut. Interessanterweise gab es da nur ganz wenige Änderungen. Genau genommen war es nur das Feld "msRTCSIP-DeploymentLocator", der nun in die Cloud verwiesen hat. Damit "kennt" die lokale Skype for Business Topologie nun meine neue Position. Mehr hat sich aber nicht geändert.

Wenn Sie die Konfiguration von ADSync weiter anschauen, dann können Sie auch erkennen, welche Felder für die Synchronisation nicht eingeschlossen sind. z.B. die verschiedenen lokalen Skype for Business Policies.

Fehlt was ?

Zuerst hatte ich darauf getippt, dass ich zu ungeduldig sei und daher einige Funktionen, insbesondere die Telefonie, noch nicht bereitgestellt wurden. Nach einiger Zeit habe ich mich dann aber entschieden doch noch mal nachzuschauen. Die VoicePolicies und RoutingPolicies, die ich bislang OnPremises hatte, gibt es so in der Cloud ja nicht mehr. Allerdings hat die Migration noch weitere Einstellungen schlicht ignoriert, z.B. wurde meine lokale Telefonnummer nicht in die Cloud übertragen. Hingegen wurden meine Kontakte alles komplett mit übertragen. Nur die dynamischen Gruppen, d.h. Skype for Business Einträge die auf Verteilergruppen basierten, wurden zwar mitgenommen aber waren leer. Teams kann aktuell keine Verteiler nutzen

Erforderliche Nachkonfiguration

Folgende Schritte musste ich also nach der Migration noch nachführen, da Sie nicht übertragen wurden:

# Aktivieren der Richtlinie, dass ich überhaupt anrufen darf
Grant-CsTeamsCallingPolicy `
   -Identity frank.cariusxx@netatwork.de `
   -PolicyName AllowCalling


# Zuweisen eines Dialplans zur Normalisierung der eingegebenen Rufnummern
Grant-CsTenantDialPlan `
   -Identity frank.cariusxx@netatwork.de `
   -PolicyName PB-ohne-Amtsholung

# Warum auch immer hat Move-CSUser diese Daten nicht selbst übertragen.
# Beachte, dass diese mit Set-CSUser und nicht mit Set-CSOnlineUser geschrieben werden
# Diese Werte werden nicht per ADSync gepflegt.
Set-CsUser `
   -identity frank.cariusxx@netatwork.de `
   -EnterpriseVoiceEnabled $true `
   -HostedVoiceMail $true `
   -OnPremLineURI tel:+495251304613

# Festlegen der Voicerouting Policy. Ohne Richtlinie kommen die Microsoft Gateways als Falback zum Einatz
# Das geht aber nur, wenn ich auch einen Dialplan zugewiesen bekomme.
# Den konfigurierten Weg ueber Skype Hybrid (OPCH) ist nicht nutzbar.
Grant-CsOnlineVoiceRoutingPolicy `
   -Identity frank.cariusxx@netatwork.de `
   -PolicyName DeStandard

All diese Einstellungen werden weder durch ADSync noch Move-CSUser übertragen. Es ist also durchaus eine Aufgabe für das Provisioning, damit Benutzer bei der Migration im Ziel korrekt konfiguriert sind.

CSOnline User

Nach all den Änderungen und etwas Wartezeit für die Replikation in Office 365 sieht mein Konto nun wie folgt aus (etwas gekürzt):

Get-CsOnlineUser -Identity sip:frank.cariusxx@netatwork.de

Fax                                  : +49 5251 304xxx
HomePhone                            : +49(5257)938xxx
IPPhone                              :
City                                 : Paderborn
Manager                              :
MobilePhone                          : +49 (xxx)xxxxxxxx
OriginatorSid                        :
OtherTelephone                       : {}
Phone                                : +49 5251 304 613
AssignedPlan                         : {<XmlValueAssignedPlan> ....</XmlValueAssignedPlan>}
InterpretedUserType                  : HybridOnlineSfBUser
Alias                                : fcarius
BaseSimpleUrl                        : https://meet.lync.com/netatwork
DirSyncEnabled                       : True
UsageLocation                        : DE
HideFromAddressLists                 : False
OnPremHideFromAddressLists           : False
ProvisionedPlan                      : {<XmlValueProvisionedPlan>....</XmlValueProvisionedPlan>}
ProvisioningStamp                    :
SubProvisioningStamp                 :
UpgradeRetryCounter                  : 0
OnPremHostingProvider                : sipfed.online.lync.com
OnPremOptionFlags                    : 385
OnPremEnterpriseVoiceEnabled         : True
OnPremSIPEnabled                     : True
OnPremSipAddress                     : sip:frank.cariusxx@netatwork.de
OnPremLineURI                        : tel:+495251304613
ShadowProxyAddresses                 : {x500:/o=ExchangeLabs/ou=Exchange Administrative Group
                                       (FYDIBOHF23SPDLT)/cn=Recipients/cn=7f60f3091bb1453e93667ab06411f6dc-Carius, Fr,
                                       X500:/o=Net at Work GmbH/ou=Paderborn/cn=Recipients/cn=fcarius,
                                       sip:frank.cariusxx@netatwork.de, smtp:Frank.Carius2@email.netatwork.de...}
SipProxyAddress                      : sip:frank.cariusxx@netatwork.de
ServiceInstance                      : microsoftcommunicationsonline/instance03
LastSyncTimeStamp                    : 29.04.2019 18:20:04
LastProvisionTimeStamp               : 07.04.2019 19:16:48
LastPublishTimeStamp                 : 10.05.2019 01:09:48
LastSubProvisionTimeStamp            : 10.05.2019 01:07:43
OnlineDialinConferencingPolicy       : ServiceAllowed
SamAccountName                       : $abcdef-123457
UserPrincipalName                    : frank.cariusxx@netatwork.de
FirstName                            : Frank
LastName                             : Carius
WindowsEmailAddress                  : frank.cariusxx@netatwork.de
Sid                                  : S-1-5-21-1234567890-1234567890-1234567890-12345678
LineServerURI                        :
SoftDeletionTimestamp                :
AudioVideoDisabled                   : False
IPPBXSoftPhoneRoutingEnabled         : False
RemoteCallControlTelephonyEnabled    : False
PrivateLine                          :
AcpInfo                              : {<acpInformation default="true">
                                         <tollNumber>4969677765841</tollNumber>
                                         <participantPassCode>0</participantPassCode>
                                         <domain>resources.lync.com</domain>
                                         <name>Microsoft</name>
                                         <url>https://dialin.lync.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx</url>
                                       </acpInformation>}
OriginalPreferredDataLocation        :
HostedVoiceMail                      : True
DisplayName                          : Carius, Frank
ProxyAddresses                       : {x500:/o=ExchangeLabs/ou=Exchange Adm...}
HomeServer                           :
TargetServerIfMoving                 :
EnterpriseVoiceEnabled               : True
EnabledForRichPresence               : True
ExchangeArchivingPolicy              : Uninitialized
NonPrimaryResource                   : False
MNCReady                             : True
TeamsVoiceRoute                      : False
OnPremLineURIManuallySet             : True
OptionFlags                          : 196992
LineURI                              : tel:+495251304613
SipAddress                           : sip:frank.cariusxx@netatwork.de
Enabled                              : True
VoicePolicy                          : HybridVoice
CallerIdPolicy                       :
CallingLineIdentity                  :
MobilityPolicy                       : MobilityEnableOutsideVoice
ConferencingPolicy                   : BposSAllModality
BroadcastMeetingPolicy               :
CloudMeetingPolicy                   :
CloudMeetingOpsPolicy                :
TeamsMeetingPolicy                   :
TeamsCallingPolicy                   : AllowCalling
TeamsInteropPolicy                   :
TeamsMessagingPolicy                 :
TeamsUpgradeEffectiveMode            : TeamsOnly
TeamsUpgradeNotificationsEnabled     : False
TeamsUpgradePolicyIsReadOnly         : None
TeamsUpgradePolicy                   : UpgradeToTeams
TeamsCortanaPolicy                   :
TeamsOwnersPolicy                    :
TeamsMeetingBroadcastPolicy          :
TeamsAppPermissionPolicy             :
TeamsAppSetupPolicy                  :
TeamsCallParkPolicy                  :
TeamsEducationAssignmentsAppPolicy   :
TeamsUpdateManagementPolicy          :
TeamsNotificationAndFeedsPolicy      :
TeamsChannelsPolicy                  :
TeamsSyntheticAutomatedCallPolicy    :
TeamsTargetingPolicy                 :
TeamsMobilityPolicy                  :
TeamsIPPhonePolicy                   :
TeamsEmergencyCallRoutingPolicy      :
TeamsEmergencyCallingPolicy          :
TeamsUpgradeOverridePolicy           :
TeamsVideoInteropServicePolicy       :
TeamsWorkLoadPolicy                  :
ClientUpdatePolicy                   :
ClientUpdateOverridePolicy           :
OnlineVoicemailPolicy                :
PresencePolicy                       :
VoiceRoutingPolicy                   :
RegistrarPool                        : sippoolbl20a20.infra.lync.com
DialPlan                             : DE
TenantDialPlan                       : PB-ohne-Amtsholung
IPPhonePolicy                        :
LocationPolicy                       :
ClientPolicy                         :
ClientVersionPolicy                  :
ArchivingPolicy                      :
LegalInterceptPolicy                 :
PinPolicy                            :
CallViaWorkPolicy                    :
GraphPolicy                          :
ExternalAccessPolicy                 : FederationAndPICDefault
HostedVoicemailPolicy                : BusinessVoice
UserServicesPolicy                   :
ExperiencePolicy                     : W15DefaultUX
XForestMovePolicy                    :
PreferredDataLocationOverwritePolicy :
AddressBookPolicy                    :
SmsServicePolicy                     :
ExternalUserCommunicationPolicy      :
ThirdPartyVideoSystemPolicy          :
CloudVideoInteropPolicy              :
OnlineDialOutPolicy                  :
OnlineVoiceRoutingPolicy             : DeStandard
HostingProvider                      : sipfed.online.lync.com
ExUmEnabled                          : False
Name                                 : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
DistinguishedName                    : CN=xxx,OU=OCS Tenants,DC=lync0a001,DC=local
WhenChanged                          : 10.05.2019 01:10:47
WhenCreated                          : 05.01.2012 10:45:16
OriginatingServer                    : BL20A00ADS06.lync0a001.local

Viele Felder, die etwas mit Teams, Konferenzen und Telefonie zu tun haben, sind noch nicht gefüllt. Über den DistiguishedName können Sie schön erkennen, dass Office 365 mehrere AD-Forests im Hintergrund betreibt.

Interessant ist, dass das Feld "OnPremLineURIManuallySet" hier auf $true steht. Vielleicht kann ADSync doch irgendwann auch diese Daten aus dem lokalen AD übertragen. Auf der anderen Seite finde ich das aber auch nicht schlimm, wenn ADSync diese Daten nicht setzt. Bei Exchange Hybrid ist ja ein lokaler Exchange Server für das Provisioning erforderlich (Siehe ADSync mit Exchange und ADSync mit Exchange Online).

Reaktionen

Mal abgesehen, dass ich nun in Teams als vollwertiges Mitglied arbeiten kann, war die Rückmeldung meiner Kollegen zu meinem "Neu erscheinen" in Teams durchgehend positiv.

Mit dem Wechsel habe ich nun in meinem Teams wieder die Funktion "Chat" und "Anrufe". Im Bereich Chat kann ich nun sogar wieder auf alle Chats zugreifen, die ich früher im Island-Mode geführt habe.

Weitere Links