Teams und Exchange On Premises

Teams legt einige Daten im Exchange Postfach ab, z.B. 1:1 Chats und natürlich Termine. Das funktioniert auch optimal, wenn alle Daten ebenfalls in der Cloud sind. Auf dieser Seite dokumentiere ich, wie im Dezember 2019 die Funktion mit einem On Premises-Postfach und einem "Teams Only" User ohne lokale Skype for Business Konfiguration funktioniert.

Schließlich legt Teams einige Daten auch im eigenen Exchange-Postfach ab, wie sie auf Teams Datenablage nachlesen können.

Hier gib es auch eine Tabelle der Funktionen die vorhanden sind und welche Einschränkungen es gibt:

Alle Aussagen sind aber eh nur eine Momentaufnahme, da Microsoft kontinuierlich sowohl die Koexistenz und Migration verbessert aber auch neue Funktionen in der Cloud addiert, die es nicht sofort oder vielleicht auch nie mit On Premises geben wird.

Präsenz

Die Präsenzfunktion von Teams ist nicht von dem Ort ihrer Exchange Mailbox abhängig sondern allein von Teams Upgrade Mode. Wenn Sie "Teams Only" sind, dann ist ihre Präsenz in Teams und ansonsten eben in Skype for Business.

1:1 Chats

Interessant werden bei Teams die 1:1 Chats. Im Gegensatz zu Skype for Business, wo diese Konversationen vom Skype Client ggfls. im Postfach per Outlook-Schnittstelle gespeichert werden, entspricht das Teams Modell eher dem "Persistent Chat". Eine Konversation bleibt auch erhalten, wenn Sie Teams beenden und sie können die Konversation auch auf jedem anderen Gerät weiterführen. Also muss das Teams Backend die Informationen irgendwo ablegen. Anhand meiner Beschreibung auf Teams Datenablage wissen sie, dass diese Informationen in einem versteckten Ordner im Postfach abgelegt werden. Dazu muss aber das Teams Backend an das Postfach kommen, was mit Exchange Online problemlos ist.

Ich habe daher einen Chat zwischen zwei "Teams Only"-Benutzern durchgeführt und der Exchange OnPremise Anwender hat nur einen Browser genutzt. Damit fällt eine Interaktion mit Outlook flach und jeder Zugriff auf Exchange Postfächer kann per Fiddler analysiert werden.

Zuerst ist festzuhalten, dass die Partner miteinander kommunizieren können. Das war erst mal auch erwartet aber es stellt sich schon die Frage wo nun der Benutzer mit einem Exchange OnPremises-Postfach diese Konversationen ablegt.

Der Client hat zumindest nicht direkt auf den Exchange Server zugegriffen und auf dem Exchange Server habe ich auf die Schnelle auch keine Zugriffe vom Teams Backend gesehen. Ich habe von Gerüchten gehört, dass in dem Fall einer "On Premises Mailbox" dennoch für den Benutzer ein kleines Rumpf-Postfach in der Cloud angelegt wird, in dem die Teams-Daten landen. Sobald das primäre Postfach dann in die Cloud verschoben werden, sollen die Daten zusammengeführt werden. Ein Hinweis dazu findet sich auf:


Quelle: https://docs.microsoft.com/en-us/microsoftteams/exchange-teams-interact

Termine

Eine zweite Komponente ist natürlich die Arbeit mit Terminen und Besprechungen. Die Daten hierzu liegen im Kalender des Exchange Postfach und natürlich kann der Anwender einfach per Outlook Termine planen. Das ging schon immer sowohl mit einem Exchange Online-Postfach als auch einem Exchange On Premises Postfach und war unabhängig von der Exchange Server Version und Veröffentlichungen

Mit Exchange 2016 CU3 hat sich aber hier etwas geändert. Nun kann das Teams Backend auch einen OnPremises Exchange Server erreichen und der kann auch darauf antworten. Die Authentifizierung erfolgt als "Partner-App" und erfordert die Einrichtung des Exchange Classic Hybrid Mode mit dem HCW. Modern Hybrid oder MinHybrid geht nicht.

Wenn das Setup dann aber funktioniert, sehen Sie im Teams Client nicht nur den Kalender sondern auch alle Termine ihrer aktiven Mailbox. Hier sehen Sie das Postfach mit OWA des On Premises Server mit zwei Terminen am 11./12 Dez 2019

Die gleichen Termine sehen Sie in Teams

Ich habe mit Fiddler natürlich nachgeschaut, womit sich mein Client beim Klick auf "Kalender" verbindet und nur die folgenden Requests gesehen

Der Client spricht nicht mit dem Exchange Server direkt sondern in dem Fall mit dem Teams Backend. Bei einem Blick auf die Firewall-Logs sind dort auch die eingehenden Verbindungen von Office 365 (52er IP-Adressen) zu sehen. Teams nutzt EWS als Zugriff.

2019:12:11-23:55:24 utm httpd: id="0299" srcip="52.114.75.155" localip="80.66.20.20" size="1603" user="-" 
   host="52.114.75.155" method="POST" statuscode="200" reason="-" extra="-" exceptions="" time="102809" 
   url="/ews/exchange.asmx" server="owa.netatwork.de" port="443" query="" referer="-" cookie="-" set-cookie="exchangecookie=xxx; 
   expires=Fri, 11-Dec-2020 22:55:24 GMT; path=/; HttpOnly, X-BackEndCookie=frank.carius4xx@netatwork.de=xxx/xxx/xxx; 
   expires=Fri, 10-Jan-2020 22:55:24 GMT; path=/ews; secure; HttpOnly" websocket_scheme="-" websocket_protocol="-" 
   websocket_key="-" websocket_version="-" uid="xxx" 
2019:12:11-23:56:24 utm httpd: id="0299" srcip="52.114.75.155" localip="80.66.20.20" size="1603" user="-" 
   host="52.114.75.155" method="POST" statuscode="200" reason="-" extra="-" exceptions="" time="100231" 
   url="/ews/exchange.asmx" server="owa.netatwork.de" port="443" query="" referer="-" cookie="-" set-cookie="exchangecookie=xxx; 
   expires=Fri, 11-Dec-2020 22:56:24 GMT; path=/; HttpOnly, X-BackEndCookie=frank.carius4xx@netatwork.de=xxx/xx/xxx; 
   expires=Fri, 10-Jan-2020 22:56:24 GMT; path=/ews; secure; HttpOnly" websocket_scheme="-" websocket_protocol="-" 
   websocket_key="-" websocket_version="-" uid="xxx" 
2019:12:11-23:57:24 utm httpd: id="0299" srcip="52.114.75.9" localip="80.66.20.20" size="1603" user="-" 
   host="52.114.75.9" method="POST" statuscode="200" reason="-" extra="-" exceptions="" time="107981" 
   url="/ews/exchange.asmx" server="owa.netatwork.de" port="443" query="" referer="-" cookie="-" set-cookie="exchangecookie=xxx; 
   expires=Fri, 11-Dec-2020 22:57:24 GMT; path=/; HttpOnly, X-BackEndCookie=frank.carius4xx@netatwork.de=xxx/xxx/xxx; 
   expires=Fri, 10-Jan-2020 22:57:24 GMT; path=/ews; secure; HttpOnly" websocket_scheme="-" websocket_protocol="-" 
   websocket_key="-" websocket_version="-" uid="xxx" 
2019:12:11-23:58:24 utm httpd: id="0299" srcip="52.114.75.31" localip="80.66.20.20" size="1603" user="-" 
   host="52.114.75.31" method="POST" statuscode="200" reason="-" extra="-" exceptions="" time="243257" 
   url="/ews/exchange.asmx" server="owa.netatwork.de" port="443" query="" referer="-" cookie="-" set-cookie="exchangecookie=xxx; 
   expires=Fri, 11-Dec-2020 22:58:24 GMT; path=/; HttpOnly, X-BackEndCookie=frank.carius4xx@netatwork.de=xxx/xxx/xxx; 
   expires=Fri, 10-Jan-2020 22:58:24 GMT; path=/ews; secure; HttpOnly" websocket_scheme="-" websocket_protocol="-" 
   websocket_key="-" websocket_version="-" uid="xxx"
2019:12:11-23:59:24 utm httpd: id="0299" srcip="52.114.75.9" localip="80.66.20.20" size="1601" user="-" 
   host="52.114.75.9" method="POST" statuscode="200" reason="-" extra="-" exceptions="" time="99586" 
   url="/ews/exchange.asmx" server="owa.netatwork.de" port="443" query="" referer="-" cookie="-" set-cookie="exchangecookie=xxx; 
   expires=Fri, 11-Dec-2020 22:59:24 GMT; path=/; HttpOnly, X-BackEndCookie=frank.carius4xx@netatwork.de=xxx/xxx/xxx; 
   expires=Fri, 10-Jan-2020 22:59:24 GMT; path=/ews; secure; HttpOnly" websocket_scheme="-" websocket_protocol="-" 
   websocket_key="-" websocket_version="-" uid="xxx" 

Damit ist bestätigt, dass Teams die Kalender von Postfächern nutzt, die On Premises liegen und die korrekt konfiguriert sind.

Voicemail

Eine weitere Komponente mit Exchange Beteiligung ist die Voicemail. Früher haben Teams und Skype for Business verpasste Anrufe auf ExchangeUM geroutet, welches dann die Mails per SMTP ins Postfach gesendet hat. Mit der Umstellung auf Cloud Voice Mail (CVM) übernimmt ein Azure-Service diese Funktion und liefert die Mails ebenfalls per SMTP an das Postfach aus. Teams kann hier allerdings noch nicht mithalten (Stand Dec 2019)

Auch hier habe ich mit Fiddler nachgeschaut und erkannt, dass der Zugriff auf Voicemail nicht über das Teams Backend geht, sondern Teams direkt versucht ein Exchange Online Postfach über die REST-API zu öffnen.

Der Request im Detail:

Die Fehlermeldung "REST API is not yet supported for this mailbox" ist natürlich in sofern irreführend, dass die Mailbox gar nicht in dem Zielsystem ist und Exchange Online nicht als Reverse Proxy auf eine Exchange On Premises Umgebung fungiert.

Würde Teams dazu die Graph-API nutzen, dann wäre ein Zugriff möglich. Ich bin aber zuversichtlich, dass dieses Problem vielleicht auch noch mal von Microsoft angegangen wird. Es sollte ja sehr einfach sein im Teams Client auf Graph umzustellen.

Weitere Exchange On Premises Einschränkungen

Ich habe natürlich nicht alle Funktionen von Teams und insbesondere die integrierbaren Dienste durchgetestet. Die Liste wäre sehr lange und die Aktualität sowieso sehr schnell in Frage gestellt. Einige Aussagen haben auch nicht wirklich was explizit mit Microsoft Teams zu tun, sondern beziehen sich generell auf die Einschränkungen von Exchange Online. Wer sein Postfach nicht in der Cloud hat, kann diverse andere Dienste natürlich auch nicht nutzen, z.B.:

  • Planner
    Kommentare zu Aufgaben sollten in der Group Mailbox landen aber anscheinend gibt es keine Benachrichtigungen, wenn jemand einen Task kommentiert
  • Microsoft To Do
    Funktioniert wohl nur mit Exchange Online
  • Microsoft Flow
    Kann nicht auf Trigger in Exchange/Outlook reagieren, wenn das Postfach On Premises liegt.
  • SharePoint Online
    Auf der linken Seite gibt es einen Link zu "Konversationen", der anscheinend nur mit Exchange Online funktioniert

Weitere Links