Fix Teams Provisioning Request Is Stuck in a Multi-Geo Tenant
🔍 WiseChecker

Fix Teams Provisioning Request Is Stuck in a Multi-Geo Tenant

When a user in a multi-geo tenant cannot sign in to Microsoft Teams or sees a provisioning error, the Teams provisioning request may be stuck in the queue. This problem usually appears after a user is moved between geographies or when the Teams service fails to process a new user. The root cause is often a mismatch between the user’s preferred data location and the Teams provisioning service. This article explains why the request gets stuck and provides step-by-step fixes for admins.

Key Takeaways: Fixing Stuck Teams Provisioning Requests in Multi-Geo

  • Teams admin center > Users > Manage users > Policies: Check the effective Teams policy assignments that can block provisioning.
  • PowerShell cmdlet Set-SPOTenant -PreferredDataLocation: Correct the user’s preferred data location to match the geo where Teams should be provisioned.
  • Teams admin center > Org-wide settings > Teams settings: Ensure that the Teams service is enabled for the affected user.

ADVERTISEMENT

Why Teams Provisioning Gets Stuck in a Multi-Geo Tenant

In a multi-geo tenant, each user has a preferred data location that determines which satellite geography stores their data. Teams provisioning is tied to this location. When you move a user from one geo to another, the Teams service must reprovision the user in the new location. If the preferred data location is not updated correctly or if the Teams service does not receive the change, the provisioning request can remain in a pending state.

Another cause is a licensing delay. Teams requires an active license that includes the Teams service plan. If the license is assigned after the user is created, the provisioning request may not trigger. Also, if the user was previously in a different geo and the old provisioning request is still queued, the new request may be blocked.

The Teams provisioning service runs as a background job. It checks the user’s preferred data location and the license status. If either value is inconsistent, the job fails silently and the request stays in the queue. This is why the user sees no Teams app in the Microsoft 365 portal or gets an error when launching Teams.

Steps to Diagnose and Fix the Stuck Provisioning Request

Before you start, you need the following permissions:

  • Global Administrator or Teams Administrator role in Microsoft 365
  • Access to the Microsoft Teams PowerShell module
  • Access to the SharePoint Online PowerShell module
  1. Verify the user’s license includes Teams
    Sign in to the Microsoft 365 admin center at admin.microsoft.com. Go to Users > Active users. Select the affected user and open the Licenses and apps tab. Confirm that the Teams service plan is enabled. If not, assign a license that includes Teams or enable the Teams plan.
  2. Check the user’s preferred data location
    Use SharePoint Online PowerShell. Run the command Get-SPOTenant -PreferredDataLocation to see the tenant’s default. Then run Get-SPOTenantUser -LoginName user@domain.com | Select PreferredDataLocation to see the user’s value. If the location is blank or incorrect, update it with Set-SPOTenantUser -LoginName user@domain.com -PreferredDataLocation "Europe". Replace Europe with the correct geo code.
  3. Wait for the geo move to complete
    If you just moved the user, the geo move can take up to 24 hours. During this time, the provisioning request may be stuck. Wait 24 hours and then check if Teams appears for the user.
  4. Force a new provisioning request
    Connect to Teams PowerShell with Connect-MicrosoftTeams. Then run Set-MultiGeoUser -UserPrincipalName user@domain.com -PreferredDataLocation "Europe". This command triggers a new provisioning request. Wait 30 minutes and check the user’s Teams status.
  5. Clear the stuck request manually
    If the request is still stuck, use the Teams admin center. Go to Users > Manage users. Select the user and click Edit. Change the Teams setting to Off, save, then change it back to On. This resets the provisioning job.
  6. Verify the Teams service health
    Go to the Microsoft 365 admin center > Health > Service health. Look for Teams advisories. If there is an active incident, wait for it to be resolved before retrying.

ADVERTISEMENT

If Teams Still Has Issues After the Main Fix

Teams shows “Provisioning in Progress” for more than 24 hours

This usually means the preferred data location is not set correctly. Use the SharePoint Online PowerShell command from step 2 to verify. If the location is correct, open a support ticket with Microsoft and mention the user’s UPN and the geo code.

User can sign in but sees no Teams app in the app launcher

This happens when the Teams license is assigned but the provisioning job has not run. Try step 5 to toggle the Teams setting off and on. This forces the job to run again.

Teams works in the web client but not the desktop app

The provisioning issue is resolved, but the desktop app may be using cached credentials. Have the user sign out of Teams, close the app, and sign in again. If that fails, clear the Teams cache at %appdata%\Microsoft\Teams.

Teams Provisioning in Multi-Geo: Key Differences Between Manual and Automatic Fixes

Item Manual Fix Automatic Fix
Description Admin runs PowerShell commands or toggles settings Teams service reprovisions after geo move completes
Time to fix 30 minutes to 2 hours Up to 24 hours
Requires admin action Yes No
Risk of error Low if commands are correct None, but wait time is long

The manual fix gives you immediate control. The automatic fix is ideal if you can wait. Use the manual fix when the user needs Teams right away.

After applying the fixes, the user should be able to sign in to Teams within 30 minutes. If the problem persists, open a support ticket with Microsoft and include the user’s UPN and the exact error message. You can also check the Teams admin center for any policy conflicts. A useful next step is to review the Teams service health for any ongoing incidents. For advanced troubleshooting, use the Get-MultiGeoUser cmdlet to confirm the preferred data location is applied correctly.

ADVERTISEMENT