I am no stranger to working with Microsoft Teams. About a year ago, I wrote about the new Microsoft Teams here. I even wrote about how to build proper password rotation into the Microsoft Team Rooms (MTRs). Today, we’re here to discuss VDI. Recently, Microsoft released a new media engine to work alongside the new Teams architecture called SlimCore. We will cover a few key areas today:
- Overview of the New Microsoft Teams Architecture
- SlimCore
- Onboarding to the New Microsoft Teams VDI Solution
- Things to Consider with the New Microsoft Teams VDI Optimization
What is the New Microsoft Teams Architecture for VDI?
The Teams architecture has often been confusing as it was the combination of different services from Lync, Skype for Business, SharePoint, etc. In the upgrades to the media engine, it is easy to comprehend. First, let’s discuss the components that make up the media engine:
- VDIBRIDGE is a server-side virtual channel module, which is bundled inside of the new Microsoft Teams application. This components’ job is to offload audio, video, and screensharing to the new media engine.
- The custom virtual channel or VC (VCs are a client-side virtual driver that talks to the server-side app) like HDX or RDP.
- MsTeamsPluginAvd.dll, which is bundled with preferably the Windows App (also the RD client, but you will also see it with Citrix CWA 2402+can perform similar functionality). That DLL is responsible for establishing the VC connection with Teams. The DLL is responsible for handling the SlimCore download and clean-up as needed.
- SlimCore is the media engine, which is auto-updated when Teams updates and is hosted on the Microsoft public CDN as an MSIX package.
You can see a diagram below of the components we just discussed:

So, now we will talk more about what SlimCore is, which is why we’re all here today.
SlimCore
SlimCore as mentioned earlier is the new media engine for Microsoft Teams. On the endpoint, SlimCore has a few functions:
- Handles the Interactive Connectivity Establishment (ICE) for STUN and TURN (I discussed these recently when writing about RDP Shortpath)
- Real-time audio, video, and screensharing using SRTP (Secure Real-time Transport Protocol) leveraging TCP or UDP.
- Without bandwidth constraints, Teams optimizes media quality including HD audio, up to 1080P video and screensharing resolution, and up to 30fps for video and content.
- This brings in the same codecs Microsoft uses in the new Teams client to VDI
- Hardware acceleration for GPU-enabled devices.
- Enables the ability to leverage DSCP markings for QoS (Quality-of-Service) via the Teams Admin Center
- Signaling using UDP/3478 with a HTTPs fallback. If you’re using a SBC it will use SIP. There have been some instances where this could cause some timeouts if latency is too excessive between endpoints.
You can see a really nice diagram below showing the flow between the Virtual Desktop (AVD or W365) and the user’s device via the virtual channel between SlimCore and the VDIBRIDGE on the host.

Some of the new features we get with this architecture not listed above are:
- Gallery View 3×3 and 7×7
- Noise suppression
- HID
- Presenter Mode
- Teams Premium features (Watermark, Townhalls, and Decorate my Background aren’t available yet)
- Zoom +/- and User-uploaded background effects are on their roadmap as well.
Another thing that is useful to know is how the user profile is stored on the endpoint. You will see data stored in one of two locations based on your vendor. If your thin client is locked-down, you need to make sure you can read/write these locations:
C:\users\<user>\AppData\Local\Microsoft\TeamsVDI\avd-default-<cloudname>\C:\users\<user>\AppData\Local\Microsoft\TeamsVDI\citrix-default-<cloudname>\
In the event you’re on an older Thin Client like certain Dell Wyse models the profile could be here: C:\Users\<user>\AppData\Local\Packages\Microsoft.Teams.SlimCoreVdi.win-<architecture>.<version>_8wekyb3d8bbwe\LocalCache\
How to Optimize Microsoft Teams with the New VDI Solution
The system requirements overall are pretty simple:
- Teams client version (24193.1805.3040.8975 for AVD/W365, 24165.1410.2974.6689 for Citrix single session or 24243.1309.3132.617 for Citrix multi-session)
- Windows App version 1.3.252+
- Citrix (if needed): VDA: 2203 LTSR CU3 or 2305 CR, Citrix Workspace app: 2203 LTSR (any CU), 2402 LTSR, or 2302 CR
- Client device needs to be on Windows 10 1809+
- Do not block MSIX via GPO (you should solve this for the new Teams client anyways)
One interesting note is that you can leverage PowerShell to enable/disable the new Teams for VDI like you could with new Teams. This code below will create a policy that disables the optimization (it’s enabled by default, but you may want to roll it out just to a specific list of users):
New-CsTeamsVdiPolicy -Identity RestrictedUserPolicy -VDI2Optimization "Disabled"
Beyond that, we will have several aspects to getting the optimization functional:
- Plugin installation on the endpoint
- SlimCore MSIX staging and registration on the endpoint
- Endpoint optimization validation
Microsoft Teams for VDI Plugin Installation
Overall, this is pretty easy for Microsoft customers. As long as you’re on a supported version as I mentioned earlier, the plugin is found where the client is found (e.g. C:\Program Files\WindowsApps).
For Citrix, you will likely deploy a script/package with a command line like this:
C:\>CitrixWorkspaceApp.exe installMSTeamsPlugin
You can also just grab the MSI and deploy it via Intune. It will automatically find the CWA installation folder and place the DLL in the correct location. MSI installs don’t support per-user or downgrades as a FYI.
SlimCore MSIX Staging and Registration
The plugin will handle all of this like we mentioned earlier. There is a service that SlimCore highly relies on called “App Readiness Service (ARS)”, which you will want to make sure no one got cute with.
The main issue you will run into is any blocking, restricting, or security impact to MSIX installs. Some of the registry keys you want to be careful of are:
- BlockNonAdminUserInstall
- AllowAllTrustedApps
- AllowDevelopmentWithoutDevLicense
Those registry keys will be found in one of these locations:
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock
- HKLM\SOFTWARE\Policies\Microsoft\Windows\Appx
Don’t forget our friends WDAC/AppLocker, which can definitely screw with this. You should be adding in an exclusion for this PublisherID in those scenarios: 8wekyb3d8bbw
Validating your Endpoint for Microsoft Teams Optimization
The first time you use it, you will need two app restarts to pick up on the optimization. We saw similar stuff with the New Teams client on desktops as well.
The first thing you should do is run this command in PowerShell on your client device:
Get-AppxPackage Microsoft.Teams.SlimCore*
This shows, you have SlimCore installed as seen below:

Now, we check our Cloud PC’s Team’s client. You can see here I wasn’t on a supported version:

Once I closed and restarted twice it now shows as optimized:

For fun, on your endpoint you will also see the SlimCore host running as a child process of the Windows App:

Things to Consider with the New Microsoft Teams VDI Optimization
To finish things up, let’s cover a few things you want to be aware of:
- SlimCore is loaded at launch time. If you disconnect and reconnect, stacks won’t switch unless the app is restarted. This could have you in fallback/a non-optimized mode. Teams should prompt the user to restart the app to restore. (this only happens in SlimCore and not in WebRTC classic).
- The MsTeamsVdi.exe process on the client is what makes the TCP/UDP network connections to the Teams relays or conference servers (or potentially other peers).
- SlimCore’s MSIX manifest will add this rule to the Windows Firewall:
<Rule Direction="in" IPProtocol="TCP" Profile="all" /><Rule Direction="in" IPProtocol="UDP" Profile="all" />
The device will need access to these networks per Microsoft guidelines:
| ID | Category | ER | Addresses | Ports | Notes |
|---|---|---|---|---|---|
| 11 | Optimize required | Yes | 13.107.64.0/18, 52.112.0.0/14, 52.122.0.0/15, 2603:1063::/38 | UDP: 3478, 3479, 3480, 3481 | Media Processors and Transport Relay 3478 (STUN), 3479 (Audio), 3480 (Video), 3481 (Screenshare) |
| 12 | Allow required | Yes | *.lync.com, *.teams.microsoft.com, teams.microsoft.com 13.107.64.0/18, 52.112.0.0/14, 52.122.0.0/15, 52.238.119.141/32, 52.244.160.207/32, 2603:1027::/48, 2603:1037::/48, 2603:1047::/48, 2603:1057::/48, 2603:1063::/38, 2620:1ec:6::/48, 2620:1ec:40::/42 | TCP: 443, 80 | |
| 47 | Default required | No | *.office.net | TCP: 443, 80 | Used for SlimCore downloads and background effects |
| 127 | Default required | No | *.skype.com | TCP: 443, 80 |
- Teams prioritizes audio over video quality.
- Avoid VPN for media traffic or any packet shapers in VDI, which will cause degradation issues.
A few current known issues:
- AVD RemoteApps and Citrix Published Apps are unsupported.
- Screen Capture Protection (SCP) will cause the presenter’s screen to be black with just a mouse cursor. The same occurs with app sharing. Those users will need to have SlimCore disabled via Teams policy, as discussed earlier.
- Calls can drop on Teams running on the local client if it has a HID peripheral connected and the user launches VDI from the same machine and logs into Teams.
- Camera self-preview.
The final thing I wanted to show were the way to access the new Teams logs for VDI. Check out this video below:

1 thought on “Teams on a Diet: SlimCore Optimizes Microsoft Teams on VDI”
Pingback: Weekly Newsletter – 26th of October to 8th of November 2024