Runbook — Tenant suspendu par erreur¶
Sévérité : Mineure (1 client impacté, gérable rapidement)
Temps de résolution attendu : 5 à 15 min
Symptômes¶
- Le client appelle/email : "je n'arrive plus à me connecter, mon abonnement est-il à jour ?"
- Page de connexion
{slug}.cavalmanager.fr/loginaffiche "Compte suspendu, contactez le support" - Admin → Tenants →
{slug}→ status =SUSPENDED
Causes possibles¶
- Échec paiement Stripe non traité — la carte CB a été remplacée mais le webhook a raté
- Le cron
checkSubscriptionsa passésubscriptionEndsAtsans renouvellement détecté - Action manuelle dans l'admin (suspension par erreur)
- Bug dans la logique de relance (jamais arrivé jusqu'ici, mais possible)
Diagnostic¶
```bash
1. État Stripe du customer¶
ssh -p 2222 lcdm@192.168.1.40 'sudo docker exec cm-admin-backend node -e " const Stripe = require(\"stripe\"); const stripe = new Stripe(process.env.STRIPE_SECRET_KEY); stripe.subscriptions.list({customer: \"cus_XXX\"}).then(r => console.log(JSON.stringify(r.data, null, 2))); "'
2. État côté admin¶
ssh -p 2222 lcdm@192.168.1.40 'sudo docker exec cm-admin-db psql -U cm_admin -d cavalmanager_admin -c " SELECT slug, status, plan, subscriptionEndsAt, stripeSubscriptionId, suspendedAt FROM \"Client\" WHERE slug = '\''{slug}'\'';"' ```
Procédure de réactivation¶
Si paiement Stripe OK mais status SUSPENDED :¶
```bash
Via admin UI : Clients → {slug} → bouton "Réactiver"¶
Ou via SQL d'urgence :¶
ssh -p 2222 lcdm@192.168.1.40 'sudo docker exec cm-admin-db psql -U cm_admin -d cavalmanager_admin -c " UPDATE \"Client\" SET status = '\''ACTIVE'\'', suspendedAt = NULL WHERE slug = '\''{slug}'\'';"'
Redémarrer les containers tenants¶
ssh -p 2222 lcdm@192.168.1.41 'sudo docker compose -f /opt/cavalmanager/clients/{slug}/docker-compose.yml restart backend' ```
Si paiement vraiment en échec :¶
- Envoyer le lien Stripe Customer Portal pour mettre à jour la CB
- Demander au client de payer la facture pending
- Le webhook
invoice.paidréactivera automatiquement
Email type au client¶
Bonjour,
Suite à votre message, nous avons identifié [cause]. Votre compte est de nouveau opérationnel à
https://{slug}.cavalmanager.fr.Toutes nos excuses pour la gêne.
L'équipe CavalManager
Prévention¶
- Webhooks Stripe : vérifier que TOUS les events sont bien réceptionnés (Stripe Dashboard → Webhooks)
- Avant suspension auto : 3 rappels email (J-10, J-5, J-1) déjà envoyés par checkSubscriptions