Blog

Do’s en Dont’s voor Teams op Citrix

Door: Yves Van Lierde

Best Practice Guide

De trend was al een tijdje gezet maar de Corona crisis en bijhorende lockdown hebben een enorme boost gegeven aan het gebruik van Microsoft Teams binnen organisaties. Door de implementatie van MS Teams binnen de bestaande IT infrastructuur, krijgen we ook meer de vraag hoe Teams kan geïmplementeerd worden binnen de Citrix Virtual Apps and Desktops omgeving.

Daar waar dit op het eerste zicht een evidente en eenvoudige taak lijkt, zijn er in praktijk toch een aantal best practices waar rekening mee gehouden moet worden. Hoog CPU gebruik, grote hoeveelheden cached data in gebruikersprofielen en verschillende Teams versies binnen de omgeving zijn zo een aantal van de mogelijke pitfalls.

In deze blogpost delen we onze ervaringen hieromtrent. We hebben een aantal best practices gebundeld met als doel de gebruikerservaringen te verhogen en eventuele verrassingen te vermijden.

De blogpost is opgedeeld in een aantal onderdelen:

  • Installatie van Microsoft Teams
  • Profielbeheer
  • HDX optimalisatie

Installatie van Microsoft Teams

Er zijn 2 verschillende manieren om Teams te installeren.

  • De standaard installatie (per-user)
  • De per-machine installatie

De standaard installatie is een per-user installatie (binnen het gebruikersprofiel). Dit is echter niet de goede manier om dit te doen binnen een Citrix omgeving. Hieronder geven we dan ook graag mee waarom dit niet de juiste manier is. Microsoft beveelt aan om in non-persistent VDI omgevingen een machine-wide installatie te doen.

Teams per-user installatie

De per-user installatie kan op verschillende manieren tot stand komen. Via een EXE file, via een MSI file of via de Office 365 click-to-run installer. Zowel de EXE als de MSI installer zijn beschikbaar in 32-bit en 64-bit versie. Download dus zeker de versie die overeenkomt met de onderliggende Windows architectuur.

Welk type van installer je ook gebruikt, de files zullen steeds in C:\Program Files (x86)\Teams Installer terecht komen:

Teams.exe is de eigenlijke installer van de client applicatie, dewelke MS Teams installeert in AppData\Local\Microsoft binnen het gebruikersprofiel. De installatie op zich wordt voor iedere gebruiker getriggerd door volgende registry key: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run

Value: TeamsMachineInstaller (REG_EXPAND_SZ)

Data: %ProgramFiles%\Teams Installer\Teams.exe –checkInstall –source=PROPLUS

Op deze manier wordt Teams geïnstalleerd in het gebruikersprofiel. Een dergelijke setup is in principe enkel bedoeld om te gebruiken binnen een fysieke Windows 10 omgeving.

Na aanloggen en installatie van Teams ziet de folder structuur er dan als volgt uit:

Teams zal uiteindelijk automatisch opstarten voor de gebruiker. Dit gebeurt door het starten van het Update.exe process via volgende registry key:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Value: com.squirrel.Teams.Teams (REG_SZ)

Data: C:\Users\yvesv\AppData\Local\Microsoft\Teams\Update.exe –processStart “Teams.exe” –process-start-args “–system-initiated”

Bij opstart van de applicatie gaat het update.exe process online kijken of er een update beschikbaar is.

In een Microsoft blogpost over het update proces kan je lezen dat er een release is elke 2 weken. Uit onze ervaring is al gebleken dat dergelijke updates niet altijd onmiddellijk uitgevoerd worden, maar dat dit eerder random uitgerold wordt. Dit kan er bijgevolg voor zorgen dat verschillende versies van de applicatie in gebruik zijn binnen een organisatie. Het update process download de nieuwe versie in de AppData\Local\Microsoft\Teams\stage folder binnen het gebruikersprofiel:

Dit proces gaat gepaard met een aanzienlijk verhoogd CPU gebruik, wat een nadelige invloed zou hebben voor andere gebruikers binnen een Citrix VAD omgeving. Van zodra de nieuwe versie gedownload is krijgt de gebruiker hiervan een melding in zijn applicatie:

Van zodra de gebruiker op “refresh now” klikt start de eigenlijke update. Dit gaat opnieuw gepaard met een verhoogd CPU gebruik. Tijdens deze update wordt de stage folder in het gebruikersprofiel verwijderd en vervangen door een previous folder:

Het gebruikersprofiel bevat uiteindelijk de geupdate versie, dewelke in de current folder staat en de vorige versie die in de previous folder bewaard wordt. Binnen Teams is er echter geen functionaliteit beschikbaar om terug te keren naar de versie die in de previous folder staat.

Kort samengevat kunnen we stellen dat een per-user install niet de aangewezen manier is om Teams te deployen in een shared Citrix omgeving. Als sysadmin willen we immers controle bewaren over versies en update processen binnen zo’n omgeving. Met een per-user install verliezen we deze controle volledig omdat we geen invloed hebben op het update process.

Bij dit alles dient er ook rekening gehouden te worden met het feit dat de applicatie geïnstalleerd wordt in het Appdata\Local gedeelte van de registry. Dit is typisch het deel dat niet mee opgenomen wordt in de gebruikers-profielen bij non-persistent omgevingen. Wanneer er dus toch een dergelijke setup zou gebruikt worden dient hiervoor het nodige gedaan te worden bij de configuratie van de profielen. Hierop komen we later in deze post echter nog terug als we het hebben over de hoeveelheid cached data die de applicatie genereert tijdens het gebruik.

Teams per user > per-machine migratie

Vele van onze klanten contacteren ons als er iets misloopt met de bestaande Teams omgeving binnen Citrix. In vele gevallen komen we in een situatie terecht waar Teams reeds op de “foutieve” manier is geïnstalleerd. In dat geval is het aangeraden om een “migratie” van per-user naar per-machine uit te voeren. Aangezien er eigenlijk geen dergelijk migratie pad bestaat komt dit in de praktijk neer op het verwijderen van de individuele installaties per gebruiker en een uitrol van de client per-machine. Voor zo’n migratie maken we binnen een Citrix VAD omgeving handig gebruik van de mogelijkheden van Citrix Workspace Environment Manager (WEM) om dit te bewerkstelligen.

Helaas is er maar één manier om deze migratie uit te voeren en dat is een uninstall doen van de “Teams per user installatie”. Dit wordt hieronder stap per stap beschreven!

Via Control Panel – Apps and Features verwijder je de entry “Teams” of “Teams Installer”, afhankelijk van het feit of de EXE is gebruikt of niet. Deze uninstall verwijderd de folder C:\Program Files (x86)\Teams Installer en dus niet de Teams applicatie die in het gebruikersprofiel zit.

Om deze laatste te verwijderen bekijken we volgende registry keys dewelke aangemaakt werden bij de Teams uninstall:

HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Run

Value: TeamsMachineUninstallerLocalAppData

Data: %LOCALAPPDATA%\Microsoft\Teams\Update.exe –uninstall –msiUninstall –source=default

Beide regkeys mogen hier verwijderd worden, aangezien we de uninstall op een gecontroleerde manier via WEM zullen laten gebeuren. In WEM maken we gebruik van een external task om de uninstall string te laten uitvoeren per gebruiker:

De taak wordt uitgevoerd bij logon en met de “Run Once” optie aangevinkt.

Als filter rule bij de assignment gebruiken we een combinatie van 2 filter conditions die controleren op File/Folder aanwezigheid. Hiermee verzekeren we dat de Teams per-user enkel verwijderd wordt als er een machine-wide installatie beschikbaar is op de session host. We creëren een filter condition die checked of de file “%LOCALAPPDATA%\Microsoft\Teams\current\Teams.exe” bestaat en een andere filter condition die kijkt of de file “C:\Program Files (x86)\Microsoft\Teams\current\Teams.exe” aanwezig is. C:\Program Files (x86)\Microsoft\Teams is de folder waar de machine-wide installatie terecht komt zoals we dadelijk zullen zien.

De eerste filter condition ziet er dan als volgt uit:

De volgende ziet er als volgt uit:

Met beide filter conditions wordt vervolgens een filter rule gemaakt. Deze wordt gebruikt bij de assignment van de “Teams per-user uninstall” external task.

Die filter rule ziet er als volgt uit:

Aan beide conditions moet dus voldaan worden alvorens de taak zal uitgevoerd worden.

Tenslotte dienen we nog de taak te assignen:

Assign de taak aan alle gebruikers en selecteer hierbij de juiste filter.

Op deze manier bekomen we een gecontroleerde manier om een per-user install van Teams te verwijderen wanneer er een per-machine installatie in de VDI omgeving aanwezig is.

Ms Teams installatie per-machine

Bij de installatie is het gebruik van de juiste installatieparameters belangrijk om er voor te zorgen dat Ms Teams op een correcte manier in per-machine mode geïnstalleerd wordt.

Hiervoor dient de installatie met volgende parameters te gebeuren :

msiexec /i Teams_windows_x64.msi ALLUSER=1 ALLUSERS=1

De ALLUSER=1 parameter zorgt voor de machine wide installatie en de parameter ALLUSERS=1 zorgt er voor dat de installatie voor iedereen zichtbaar wordt in “Apps & Features” lijst.

Om zekerheid te hebben dat de installatie correct is uitgevoerd kan je verifiëren of de folder “C:\Program Files (x86)\Microsoft\Teams” aanwezig is en er als volgt uitziet:

Deze installatie zorgt er voor dat Teams.exe automatisch gestart wordt voor alle gebruikers die inloggen op deze machine. Dit gebeurt via volgende regkey: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run

Aangezien we zelf controle willen houden over het al dan niet starten van Teams raden we aan om direct na installatie de ”Teams” value te verwijderen uit de run key. Om het starten van Teams te beheren kunnen we opnieuw gebruik maken van WEM.

We creëren hiervoor volgende WEM Application action:

Vervolgens assigneren we deze actie aan de gewenste AD groep zodat de leden van deze groep Teams ter beschikking krijgen. Er kan eventueel ook voor gezorgd worden dat voor deze gebruikers Teams toch automatisch opstart bij inloggen, door de “Auto Start” optie te activeren bij het assigneren.

Hiermee is de machine wide installatie van Teams afgerond.

Om de Teams applicatie in een machine wide installatie achteraf te updaten dient de huidige versie eerst verwijderd te worden alvorens de nieuwere versie kan geïnstalleerd worden. De auto-update feature bij de per_user installatie kan in deze situatie dus niet meer gebruikt worden.

De uninstall kan uitgevoerd worden via volgend commando:

              msiexec /passive /x Teams_windows_x64.msi /l*v Uninstall.log

Profielbeheer

Ondanks het feit dat de installatie van de applicatie per-machine is uitgevoerd, wordt er bij het gebruik ervan toch aardig wat data opgeslagen in het gebruikersprofiel. Een groot deel hiervan is temp en cache data. Om de profielgrootte onder controle te houden dienen er enkele voorzorgsmaatregelen genomen te worden.

Hoewel het niet onmogelijk is om Teams binnen een Citrix omgeving te gebruiken in combinatie met Citrix Profile Management (UPM), raden we toch ten zeerste aan om gebruik te maken van FSLogix O365 containers, gecombineerd met Fslogix profile containers. Dit vooral om de logon tijden zo laag mogelijk te houden.

MS FSLogix

Bij de configuratie van de group policy voor de FSLogix O365 containers is het van belang dat de optie “Include Teams data in container” enabled wordt.

Het activeren van de optie “Include Teams data in container” zorgt ervoor dat de Teams data gescheiden blijven van het gebruikersprofiel, maar opgeslagen worden in de O365 container waar de rest van de cached data (Outlook, Onedrive, Sharepoint, …) mbt O365 terecht komt.

Indien je echter de FSlogix containers zo klein mogelijk wenst te houden kan je er voor kiezen om de Teams data in de profile container te bewaren in plaats van in de O365 container. Dit doe je door de optie “Include Teams data in container” niet te enablen en de optie “Provide RedirXML file to customize redirections” aan te vinken. Deze laatste optie is immers enkel van toepassing op profile containers en niet op O365 containers.

Het pad dat hier wordt opgegeven dient de file redirections.xml te bevatten. Deze moeten specifiek voor Teams volgende regels moet bevatten :

  • AppData\Local\Microsoft\Teams\Packages\SquirrelTemp
  • AppData\Local\Microsoft\Teams\current\resources\locales
  • AppData\Local\Microsoft\Teams\Current\Locales
  • AppData\Roaming\Microsoft\Teams\Service Worker\CacheStorage
  • AppData\Roaming\Microsoft\Teams\Application Cache
  • AppData\Roaming\Microsoft\Teams\Cache
  • AppData\Roaming\Microsoft\Teams\GPUCache
  • AppData\Roaming\Microsoft Teams\Logs
  • AppData\Roaming\Microsoft\Teams\Media-Stack
  • AppData\Roaming\Microsoft\Teams\meeting-addin\Cache

Volgens de Teams documentatie zouden in principe de *.txt-files in de folder AppData\Roaming\Microsoft\Teams\ ook mogen excluded worden, maar aangezien FSLogix profile containers geen file exclusions en ook geen exclusions op basis van wildcards ondersteunt, kan dit in dit geval niet geïmplementeerd worden.

Citrix UPM

Indien je beslist om toch UPM te gebruiken als profielbeheer oplossing in plaats van FSLogix, is het belangrijk rekening te houden met het feit dat het UPM profile aanzienlijk groter kan worden. Dit kan vervolgens een impact hebben op de login tijden die hierdoor kunnen oplopen.

Om dit min of meer onder controle te houden dient in de policy waar Citrix UPM geconfigureerd wordt, volgende toegevoegd te worden:

Exclusion list – directories:

  • AppData\Local\Microsoft\Teams\Packages\SquirrelTemp
  • AppData\Local\Microsoft\Teams\current\resources\locales
  • AppData\Local\Microsoft\Teams\Current\Locales
  • AppData\Roaming\Microsoft\Teams\Service Worker\CacheStorage
  • AppData\Roaming\Microsoft\Teams\Application Cache
  • AppData\Roaming\Microsoft\Teams\Cache
  • AppData\Roaming\Microsoft\Teams\GPUCache
  • AppData\Roaming\Microsoft Teams\Logs
  • AppData\Roaming\Microsoft\Teams\Media-Stack
  • AppData\Roaming\Microsoft\Teams\meeting-addin\Cache

Exclusion list – files:

  • AppData\Roaming\Microsoft\Teams\*.txt

Directories to synchronize:

  • AppData\Local\Microsoft\IdentityCache
  • AppData\Local\Microsoft\Teams
  • AppData\Local\SquirrelTemp
  • AppData\Local\Microsoft\TeamsMeetingAddin
  • AppData\Local\Microsoft\TeamsPresenceAddin
  • AppData\Roaming\Microsoft\Teams (indien geen appdata redirection toegepast wordt)

HDX Optimalisatie

De Teams HDX Optimization zorgt voor voice en video offloading naar het lokale werkstation, zodat er een aanzienlijk lager CPU gebruik zal zijn op de session hosts.

In tegenstelling to Skype for Business is er voor Teams HDX Optimization te bekomen geen extra software nodig zoals de HDX Realtime Optimization Pack.

Teams HDX Optimization is gesupporteerd in Citrix Virtual Apps and Desktops 1906.2 en hoger. Daarnaast heb je ook minimaal Citrix Workspace App 1907 nodig. Citrix beveelt echter aan om Workspace App 1912 of 2002 te gebruiken.

Vervolgens heb je ook minimaal Teams versie 1.2.00.31357 nodig, terwijl Citrix aanbeveelt om minstens versie 1.3.00.4461 te gebruiken.

Meer informatie kan je terugvinden op de Citrix website.

Als aan alle bovenstaande criteria voldaan is, treedt de HDX optimization in werking en zie je in de notificatie “Citrix HDX Optimized” als je op “About –> Version” klikt:

Hou er wel rekening mee dat Teams HDX Optimization momenteel niet beschikbaar is op Linux en MacOS endpoints. Het is voorlopig enkel beschikbaar op Windows machines. De roadmap ziet er veelbelovend uit voor de andere toestellen.

Niet te vergeten!

Ms Teams Outlook Add-in

Om vanuit Outlook Team meetings te kunnen plannen dient de Ms Teams plugin actief te zijn. Hiervoor moet Ms Teams minstens één keer gestart te worden en ingelogd zijn als gebruiker alvorens de plugin actief wordt. Zoniet kan de plugin niet gebruikt worden.

Om de plugin te activeren bij opstart van Outlook dienen volgende registry keys aanwezig te zijn in het gebruikersprofiel:

HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\AddIns\TeamsAddin.FastConnect
“Description”=”Microsoft Teams Meeting Add-in for Microsoft Office”
“LoadBehavior”=dword:00000003
“FriendlyName”=”Microsoft Teams Meeting Add-in for Microsoft Office”

Hier kunnen we alweer Citrix WEM gaan gebruiken om deze key in het profile van de gebruiker te krijgen.

Nadien komt de Teams Outlook add-in beschikbaar voor de gebruiker:

App Layering

Bij gebruik van Citrix Applayering dient volgende regkey toegevoegd te worden vooraleer je start met de installatie van Teams in per-machine mode:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\PortICA

Indien de key PortICA niet aanwezig is in de application layer krijg je immers volgende foutmelding:

Office 365 installatie zonder Ms Teams?

Bij een installatie van Office 365 wordt standaard Teams mee geïnstalleerd in per-user mode.

Om dit te vermijden dien je de regel “<ExcludeApp ID=”Teams” />” toe te voegen aan de configuration.xml file.

De configuration.xml file ziet er dan bijvoorbeeld als volgt uit:

<Configuration>
<Add OfficeClientEdition=”64″ Channel=”Monthly”>
<Product ID=”O365ProPlusRetail”>
<Language ID=”en-us” />
<ExcludeApp ID=”Teams” />
</Product> <Product ID=”VisioProRetail”>
<Language ID=”en-us” />
</Product>
<Product ID=”ProjectProRetail”>
<Language ID=”en-us” />
</Product>
<Product ID=”LanguagePack”>
<Language ID=”nl-be” />
</Product>
</Add>
</Configuration>

Teams crashed of start traag op

In uitzonderlijke gevallen kan het zijn dat Teams crashed bij opstarten of is het ook mogelijk dat het extreem lang duurt vooraleer de applicatie opstart.

Wanneer dit probleem zich voordoet kan je kijken in task manager of er een process “Werfault.exe” draaiende is dat vrij veel CPU resources gebruikt.

Via procmon kan je zien dat dit process gebruik maakt van de DLL file “CtxGraphicHelper.dll”.

Dit is een Citrix Hook die er voor zorgt dat applicaties optimaal kunnen functioneren in een Citrix omgeving.

In bepaalde omstandigheden kan dit echter problemen veroorzaken en is het noodzakelijk om deze hooking uit te schakelen.

Indien je met dit probleem te maken hebben kan je een workaround toepassen door volgende registry keys toe te voegen :

32-bit version:

HKLM\SOFTWARE\citrix\CtxHook\

String Value: ExcludedImageNames

Value: Teams.exe

64-bit version:

HKLM\SOFTWARE\WOW6432Node\citrix\CtxHook\

String Value: ExcludedImageNames

Value: Teams.exe

Vergeet niet dat de machine moet herstart worden vooraleer deze aanpassing actief is !

Pas ook enkel deze workaround toe wanneer je met dit specifiek probleem te maken hebt.

Conclusie

Teams op Citrix ?

Ja het kan, maar begin er niet onbezonnen aan.

Lees eerst onze blogpost aandachtig of neem gewoon even contact met ons op.