If you manage a multi-geo Microsoft 365 tenant, you may have noticed that the Teams guest review feature fails to remove inactive guests from your organization. This problem typically appears when a guest user’s home data location differs from the location of the team that hosts the review. In this article, you will learn why the guest review process breaks in multi-geo environments and how to fix it using PowerShell and the Microsoft 365 admin center.
The guest review feature is designed to automatically remove guests who have not signed in for a specified number of days. However, in multi-geo tenants, the review job runs in the central location, while guest objects may reside in satellite locations. This mismatch prevents the removal process from completing, leaving inactive guests in your directory.
We will explain the technical root cause, provide step-by-step instructions to diagnose and resolve the issue, and cover related failure patterns you may encounter. By the end, you will be able to enforce guest removal reliably across all geo locations.
Key Takeaways: Fixing Guest Review in Multi-Geo Tenants
- Teams admin center > Users > Guest access: Check the guest review settings and the inactivity period defined for your tenant.
- PowerShell Get-MgUser and Get-MgOrganization: Identify the preferredDataLocation of each guest to detect multi-geo mismatches.
- Microsoft Graph API: Use the directory audit logs to see why guest removal jobs fail with the error “UserNotFound” or “GeoMismatch”.
Why Teams Guest Review Fails in Multi-Geo Tenants
In a multi-geo tenant, user objects are stored in a specific geo location based on the user’s preferredDataLocation attribute. For guests, this attribute is set when the guest is invited and can differ from the location of the team where the guest review is configured. The guest review feature runs as a background job in the central location, which is the location of the tenant’s primary data residency. When the job tries to remove a guest whose object resides in a satellite location, it fails because the job does not have permissions to access that satellite location’s directory partition.
The result is that the guest review job logs an error and skips the guest. The guest remains active, and the review cycle repeats without any action. This issue is documented by Microsoft in the multi-geo known issues list, but the fix requires manual intervention or a scripted approach.
Steps to Diagnose and Fix Guest Review in a Multi-Geo Tenant
- Verify your tenant is multi-geo
Sign in to the Microsoft 365 admin center at admin.microsoft.com. Go to Settings > Organization settings > Organization profile. Look for the Multi-Geo section. If you see the option to manage data locations, your tenant is multi-geo. - Check the guest review settings
Open the Teams admin center at admin.teams.microsoft.com. Go to Users > Guest access. Under Guest review, confirm the inactivity period is set to a value that matches your policy. Note the current setting, as you will need it later. - Identify guests with mismatched data locations
Install the Microsoft Graph PowerShell module if you have not done so. Run the following command to list all guests and their preferredDataLocation:Get-MgUser -All -Filter "userType eq 'Guest'" | Select-Object DisplayName, Id, @{N='DataLocation';E={$_.PreferredDataLocation}}
Compare the data location of each guest with the location of the team that hosts the review. You can find the team’s data location by using the SharePoint site URL or by checking the GeoLocation property in the admin center. - Remove the mismatched guest manually
For each guest whose data location differs from the team location, you must remove the guest manually. Use the Microsoft 365 admin center or PowerShell. To remove a guest via PowerShell, run:Remove-MgUser -UserId "guest@example.com"
This action permanently removes the guest from your tenant. If you need to keep the guest but remove them from the team, use the Teams admin center instead. - Re-invite the guest with the correct data location
If you want the guest to remain a member, re-invite them using the correct data location. When you invite a guest, you can specify the preferredDataLocation by using the Microsoft Graph API. Use the following command to set the location:Update-MgUser -UserId "guest@example.com" -PreferredDataLocation "EUR"
Replace EUR with the appropriate geo code for your environment. - Run the guest review job again
After re-inviting or removing the guest, trigger the guest review job manually. There is no direct button in the Teams admin center, so you must wait for the next scheduled run or use a PowerShell script to force the removal. The script can query the audit logs to identify guests who have not signed in for the defined period and remove them.
If Teams Guest Review Still Fails After the Main Fix
Guest Review Does Not Remove Guests Who Have Signed In Recently
The guest review feature only removes guests who have not signed in for the specified period. If a guest has signed in even once during that period, they will not be removed. This is expected behavior. To verify, check the user’s last sign-in time in the Microsoft 365 admin center or via PowerShell with Get-MgUser -Property SignInActivity.
Guest Review Job Logs Error “GeoMismatch” for All Guests
If the error appears for every guest, the issue may be with the central location job. Check the directory audit logs in the Microsoft 365 admin center under Audit. Look for events with operation name “Remove guest” and status “Failure”. The error message will indicate whether the problem is a geo mismatch or a permissions issue. If it is permissions, ensure the Teams service account has the necessary roles to delete users across geo locations.
Guests Are Removed from Teams but Not from the Directory
This scenario occurs when the guest review removes the guest from the team but fails to delete the guest object. The guest object remains in Azure AD, and the guest may reappear in other teams. To resolve, manually delete the guest object using the Microsoft 365 admin center or PowerShell as described in step 4.
Manual Removal vs Automatic Review in Multi-Geo Tenants: Key Differences
| Item | Manual Removal | Automatic Guest Review |
|---|---|---|
| Execution | Admin initiates each removal | Background job runs on a schedule |
| Geo awareness | Works across all geo locations | Fails when guest data location differs from central location |
| Error handling | No error; removal is immediate | Logs errors and skips guests |
| Scalability | Not scalable for many guests | Designed for large-scale cleanup |
| Recommended for multi-geo | Yes, until Microsoft fixes the issue | No, due to geo mismatch limitation |
The manual approach is your most reliable option in multi-geo tenants. Automate it with a PowerShell script that runs periodically and removes guests based on last sign-in time and data location.
Conclusion
You can now diagnose and fix the guest review failure in a multi-geo tenant by identifying guests with mismatched data locations and removing them manually or with PowerShell. The key is to check the preferredDataLocation attribute and ensure it matches the team location. For ongoing management, create a scheduled PowerShell script that mimics the guest review logic but works across all geo locations. Use the Microsoft Graph API to retrieve sign-in activity and filter guests who have not signed in for your defined period. This approach bypasses the central location limitation and keeps your directory clean.