Skype for Business Delegates entfernen (bei einem Enterprise Pool) ohne Sefautil

Hi an alle, ich hatte die Tage den Fall, dass in einer Skype for Business OnPrem Umgebung ohne Enterprise Voice die Stellvertreter out Outlook/Exchange nach Skype for Business synchronisiert wurden (Exchange Delegate Sync in der CSClientPolicy aktiviert).

Leider gibt es hier einige Einschränkungen seitens MS was die Anzahl der Stellvertreter und vor allem die Anzahl der Delegatoren angeht (und das Ganze ist dann auch noch Client abhängig). Was in dieser speziell Situation beim Kunden dazu führte, dass die Stellvertreter aus Outlook/Exchange zwar in die Skype for Business Stellvertreter eingetragen wurden, allerdings nicht entfernt wurden sobald die Stellvertreter in Outlook entfernt wurden.

https://support.microsoft.com/en-us/help/3043678/lync-2013-and-skype-for-business-2016-users-are-prompted-with-you-have

Die Verwaltung dieser Stellvertreter lässt sich auf Seiten Skype for Business auch mit dem SEFAUTIL tun (Artikel folgt). Allerdings ist dass nicht in allen Umgebungen möglich, da dieses Tool Vollzugriff auf das SQL Backend benötigt, was bei unterschiedlichen Teams und Richtlinien unter Umständen schwierig werden könnte.

Es gibt einen (offiziell nicht supporteten) Weg diese Stellvertreter direkt in der Datenbank auf dem Frontend Server zu entfernen.

Als erstes muss der primäre Frontend Server des Delegators ermittelt werden mittels get-csuserpoolinfo <Sip Adresse des Delegators>

In der RTCLOCAL SQL Instanz auf dem primären Frontend Server in der Datenbank RTC gibt es eine Tabelle Resource im dbo schema. Hier ermittelt man die ReourceId des Delegators und des zu entfernenden Delegaten mittels SQL Abfrage.

Danach kann man in der selben Datenbank in der Tabelle Delegate im dbo Schema seine Stellvertreter ermitteln mittels SQL Abfrage.

Schlussendlich wird dann in dieser Tabelle der Datensatz mit der entsprechenden DelegateId mittels SQL Abfrage entfernt. Die SQL Abraten sind bei den SQL Objektname Case Sensitive!

Ein kleines Beispiel:

UserA (usera@company.com) hat User B (userb@company.com) als Stellvertretung in Outlook eingerichtet. Dies wird nach Skype for Business synchronisiert. Nun entfernt User A die Stellvertretung aus Outlook wieder, allerdings wird das Entfernen nicht nach Skype for Business synchronisiert.

  1. get-csuserpoolinfo sip:usera@company.com
    Das Ergebnis liefert Identity (UPN des Users), PrimaryPoolFQDN (Skype for Business Pool des Users), PrimaryPoolMachinesInPreferredOrder (hier ist der erste Eintrag der wichtige!) und einige andere Informationen.
  2. Man verbindet sich via SQL Management Studio oder SQLCMD auf den ersten Server auf die Instanz RTCLOCAL
    SQLCMD -S <erster Server FQDN>\RTCLOCAL
  3. nun wird die Id des Delegators ermittelt
    select * from rtc.dbo.Resource where UserAtHost = „usera@company.com“
  4. nun wird die Id des Delegates ermittelt
    select * from rtc.dbo.Resource where UserAtHost = „userb@company.com“
  5. nun ermittelt man die Liste der DelegateIds für User A
    select * from rtc.dbo.Delegate where DelegatorId = <Ergebnis aus 3>
    und schaut ob das Ergebnis aus 4 (die ID des Delegaten) enthalten ist
  6. nun löscht man diesen Delegaten aus der List
    delete from rtc.dbo.Delegate where DelegatorId = <Ergebnis aus 3> and DelegateId = <Ergebnis aus 4>

Jetzt ist User B in Skype for Business nicht mehr als Stellvertreter eingetragen.

Ich hoffe das hilft Euch ein wenig weiter.

Viele Grüße

Rouven