Switching Providers Mid-Production
Change email providers without downtime. Instant failover, gradual migration, rollback.
How It Works
Credential names are configured per tenant in TenantSettings. When you switch providers, you disable/enable credentials with that name. No code changes needed.
Scenario 1: Emergency Failover
Current provider (Gmail) is down. Switch to backup (SMTP) instantly:
-- Determine credential name from TenantSettings (or use default "email-primary")
SELECT @credentialName = Value
FROM TenantSettings
WHERE TenantID=1 AND Key='EmailCredentialName';
SET @credentialName = ISNULL(@credentialName, 'email-primary');
-- Disable failing credential
UPDATE AIExt_Credentials SET Enabled=0
WHERE Name=@credentialName AND TenantID=1;
-- Next email send automatically uses backup credential
-- Zero code changes needed!Scenario 2: Gradual Migration
Move from SMTP to SES over 7 days without downtime:
-- Get configured credential name
SELECT @credentialName = Value
FROM TenantSettings
WHERE TenantID=1 AND Key='EmailCredentialName';
SET @credentialName = ISNULL(@credentialName, 'email-primary');
-- Day 1: Create SES credential with same name (disabled)
INSERT INTO AIExt_Credentials (Name, DisplayMetadata, EncryptedData, TenantID, Enabled)
VALUES (@credentialName, '{provider:ses,...}', 0x..., 1, 0);
-- Days 2-6: Monitor, test
-- Day 7: Enable SES, disable SMTP
UPDATE AIExt_Credentials SET Enabled=0
WHERE Name=@credentialName AND TenantID=1 AND DisplayMetadata LIKE '%smtp%';
UPDATE AIExt_Credentials SET Enabled=1
WHERE Name=@credentialName AND TenantID=1 AND DisplayMetadata LIKE '%ses%';
-- Application continues, no restarts!Scenario 3: Rollback
New provider having issues? Revert instantly:
-- Get configured credential name
SELECT @credentialName = Value
FROM TenantSettings
WHERE TenantID=1 AND Key='EmailCredentialName';
SET @credentialName = ISNULL(@credentialName, 'email-primary');
-- Disable problematic provider
UPDATE AIExt_Credentials SET Enabled=0
WHERE Name=@credentialName AND TenantID=1 AND DisplayMetadata LIKE '%ses%';
-- Re-enable previous provider
UPDATE AIExt_Credentials SET Enabled=1
WHERE Name=@credentialName AND TenantID=1 AND DisplayMetadata LIKE '%smtp%';
-- All new emails route to previous provider automaticallyBest Practices
- ✅ Always have backup credential ready
- ✅ Test new provider before enabling
- ✅ Monitor error rates during migration
- ✅ Keep old credential for rollback period
- ✅ Document switch timestamp for audit trail
