Contexto Delimitado: Identity
Raiz de Agregado: TenantSignupRequest
Modulo: Ums.Domain.Identity.TenantSignupRequest
Estado: Implementado para Phase 4 tenant onboarding
TenantSignupRequest representa una solicitud publica de onboarding de empresa enviada antes de que exista el tenant. Un administrador global la revisa y, cuando se aprueba, queda vinculada al tenant creado.
Pending hasta que un administrador global la apruebe.ApprovedTenantId.| Estado | Valor de Codigo | Significado | Transicion Implementada |
|—|—:|—|—|
| Pending | 1 | Solicitud enviada y en espera de revision global. | Creada por TenantSignupRequest.Create. |
| Approved | 2 | El tenant fue creado y vinculado a la solicitud. | Approve(tenantId, updatedBy). |
| Rejected | 3 | Reservado en el enum para solicitudes de empresa denegadas. | El enum existe; el comando del agregado aun no esta implementado. |
| Entidad / VO | Tipo | Propiedad |
|—|—|—|
| TenantSignupRequestStatus | Enumeracion | Pending, Approved, Rejected |
| CompanyReference | Value Object | RUC/codigo/referencia de empresa |
| Name | Value Object | Nombres de empresa y contacto |
| Email | Value Object | Correo del contacto |
| TenantId | Value Object | Referencia nullable asignada despues de aprobar |
| AuditValueObject | Value Object | Metadata de creacion y actualizacion |
classDiagram
direction LR
class TenantSignupRequest {
+Guid Id
+Name CompanyName
+CompanyReference CompanyReference
+Name ContactName
+Email ContactEmail
+TenantSignupRequestStatus Status
+TenantId? ApprovedTenantId
+Create()
+Approve()
}
class TenantSignupRequestStatus {
<<enumeration>>
Pending
Approved
Rejected
}
TenantSignupRequest "1" *-- "1" TenantSignupRequestStatus
erDiagram
TENANT_SIGNUP_REQUEST }o--o| TENANT : "aprobado_como"
TENANT_SIGNUP_REQUEST {
uniqueidentifier Id PK
nvarchar CompanyName
nvarchar CompanyReference "Unico"
nvarchar ContactName
nvarchar ContactEmail
int StatusId "1=Pending, 2=Approved, 3=Rejected"
uniqueidentifier ApprovedTenantId FK "Nullable"
nvarchar CreatedBy
datetime2 CreatedAtUtc
nvarchar UpdatedBy "Nullable"
datetime2 UpdatedAtUtc "Nullable"
nvarchar AuditTimeSpan
rowversion RowVersion
}
| Artefacto de Codigo | Mapeo |
|—|—|
| EF record | TenantSignupRequestRecord |
| Tabla | identity.TenantSignupRequests |
| Indice unico | CompanyReference |
| Indice de consulta | StatusId, ContactEmail |
| Repositorio | ITenantSignupRequestRepository |
Este agregado implementa la solicitud de onboarding de empresa de FS-21 y EP-09. Su alcance es global porque el tenant aun no existe. El aislamiento por tenant inicia despues de la aprobacion, cuando ApprovedTenantId referencia el tenant creado.