# US-MGN-001-004-001: Crear y Configurar Tenant

**RF Asociado:** [RF-MGN-001-004](../../02-modelado/requerimientos-funcionales/mgn-001/RF-MGN-001-004-multi-tenancy.md)
**Módulo:** MGN-001 - Fundamentos
**Epic:** Multi-Tenancy
**Prioridad:** P0 (MVP)
**Story Points:** 5
**Sprint:** Sprint 3
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story

**Como** super administrador del sistema,
**Quiero** crear y configurar nuevos tenants (clientes),
**Para** aislar datos entre diferentes organizaciones en el sistema multi-tenant.

---

## Criterios de Aceptación

### Escenario 1: Crear tenant nuevo
**Cuando** creo tenant con nombre, subdomain "acme", plan, límites,
**Entonces** sistema crea registro en auth.tenants, crea schema "tenant_acme", ejecuta migrations, crea usuario administrador inicial.

### Escenario 2: Subdomain duplicado
**Cuando** intento crear tenant con subdomain existente,
**Entonces** retorna error 400 "Subdomain ya existe".

### Escenario 3: Tenant isolation verificado
**Cuando** usuario de tenant A intenta acceder a datos de tenant B,
**Entonces** sistema bloquea acceso via RLS policies.

---

## Reglas de Negocio

- **RN-1:** Subdomain único globalmente (ej: acme.erp.com)
- **RN-2:** Cada tenant tiene su propio schema PostgreSQL
- **RN-3:** Migrations se ejecutan automáticamente en schema del tenant
- **RN-4:** Al crear tenant: crear usuario admin default

---

## Tareas Técnicas

### Backend
- [ ] POST /api/v1/admin/tenants - Crear tenant (solo super admin)
- [ ] TenantsService.createTenant(name, subdomain, plan)
- [ ] Crear schema PostgreSQL: `CREATE SCHEMA tenant_{subdomain}`
- [ ] Ejecutar migrations en nuevo schema
- [ ] Crear usuario administrador inicial
- [ ] Tests (8 casos)

---

## Estimación: 5 SP (9 horas)

---

## Referencias

- [RF-MGN-001-004](../../02-modelado/requerimientos-funcionales/mgn-001/RF-MGN-001-004-multi-tenancy.md)
- [ET-BACKEND-MGN-001-004](../../02-modelado/especificaciones-tecnicas/backend/mgn-001/ET-BACKEND-MGN-001-004-multi-tenancy.md)
