Hi @Nirbhay Giri ,
The service keeps detecting a duplicate, stripping the Basic license, putting you on Stakeholder, then 30 seconds later doing it all over again hence the 500-login errors and infinite license loop.
Here's what you can do next:
- Gather the user descriptors
- Use the Graph REST API to list each user’s descriptor: GET https://dev.azure.com/ACPLApps/_apis/graph/users?api-version=6.0-preview.1&searchTerm=<email>
- Note the “descriptor” field for each returned entry.
- Attempt a hard-delete via REST (if there are no project/resource dependencies)
- DELETE https://dev.azure.com/ACPLApps/_apis/graph/users/{descriptor}?api-version=6.0-preview.1
- This will permanently remove the ghost identity from your org’s graph.
- After deletion, re-invite the user from Azure DevOps > Organization settings > Users.
- If the REST delete fails or the ghost still persists, you’ll need a backend cleanup by Microsoft Support
- Open an Azure DevOps support request (https://aka.ms/azdevops-support) under the “Identity Management” category. Provide:
- Your organization name (ACPLApps)
- The affected email addresses
- Correlation ID
- AAD tenant ID and subscription ID
- The support team can run a backend script to remove the phantom descriptor and clear the license loop.
- Once the ghost identity is gone, re-provision the users as Basic:
- Azure DevOps portal > Organization settings > Users > Add users > assign “Basic” access.
Hope this helps!
If the resolution was helpful, kindly take a moment to click on and click on Yes for was this answer helpful. And, if you have any further query do let us know.