bitwarden/server · error · BadRequestException
Provider name not found.
Error message
Provider name not found.
What it means
Thrown by ProviderService.InitiateDeleteAsync when provider.Name is null or whitespace. The provider deletion email needs a name, so the flow refuses to start without one. BadRequestException (HTTP 400).
Source
Thrown at bitwarden_license/src/Commercial.Core/AdminConsole/Services/ProviderService.cs:684
}
var providerOrganization = await _providerOrganizationRepository.GetByOrganizationId(organizationId);
var organization = await _organizationRepository.GetByIdAsync(organizationId);
if (providerOrganization != null)
{
await _eventService.LogProviderOrganizationEventAsync(providerOrganization, EventType.ProviderOrganization_VaultAccessed);
}
if (organization != null)
{
await _eventService.LogOrganizationEventAsync(organization, EventType.Organization_VaultAccessed);
}
}
public async Task InitiateDeleteAsync(Provider provider, string providerAdminEmail)
{
if (string.IsNullOrWhiteSpace(provider.Name))
{
throw new BadRequestException("Provider name not found.");
}
var providerAdmin = await _userRepository.GetByEmailAsync(providerAdminEmail);
if (providerAdmin == null)
{
throw new BadRequestException("Provider admin not found.");
}
var providerAdminOrgUser = await _providerUserRepository.GetByProviderUserAsync(provider.Id, providerAdmin.Id);
if (providerAdminOrgUser == null || providerAdminOrgUser.Status != ProviderUserStatusType.Confirmed ||
providerAdminOrgUser.Type != ProviderUserType.ProviderAdmin)
{
throw new BadRequestException("Org admin not found.");
}
var token = _providerDeleteTokenDataFactory.Protect(new ProviderDeleteTokenable(provider, 1));
await _mailService.SendInitiateDeletProviderEmailAsync(providerAdminEmail, provider, token);
}
View on GitHub (pinned to e93b962371)
Solutions
- Set provider.Name (via the provider update flow) before calling InitiateDeleteAsync.
- Guard the call: check !string.IsNullOrWhiteSpace(provider.Name) and surface a clear error.
- Investigate why Name is missing; correct the provider record in the data layer if it should have one.
Example fix
// before
await providerService.InitiateDeleteAsync(provider, adminEmail);
// after
if (string.IsNullOrWhiteSpace(provider.Name))
{
throw new InvalidOperationException("Provider has no name; set it before deletion.");
}
await providerService.InitiateDeleteAsync(provider, adminEmail); Defensive patterns
Strategy: validation
Validate before calling
if (string.IsNullOrWhiteSpace(provider.Name)) return BadRequest("Provider has no name."); Type guard
static bool HasName(Provider p) => !string.IsNullOrWhiteSpace(p.Name);
Prevention
- Require a Name when creating a provider.
- Audit provider records for null/blank names before delete flows.
When it happens
Trigger: Initiating provider deletion for a Provider record whose Name was never set (or was cleared), e.g. a provider created partway through setup, or a legacy/seeded provider with a null Name.
Common situations: A provider stuck in a partial-creation state where the name step was skipped; seeded test providers missing Name; data corruption/null Name after a migration.
Related errors
- Provider admin not found.
- Org admin not found.
- Unsupported provider type {providerType}.
- Failed to remove organization vault. Please contact support.
- You cannot remove yourself.
AI-assisted analysis of bitwarden/server@e93b962371 (2026-08-13).
Data as JSON: /api/errors/aef3546e0eff15f7.
Report an issue: GitHub.