Estado: Accepted
Fecha: 2026-06-01
Contexto: UMS Identity, Onboarding de Tenants, Onboarding de Usuarios
UMS ahora soporta dos flujos de onboarding de identidad distintos y debe separarlos de la asignacion de entitlements:
| Flujo | Fuente de verdad | Alcance de aprobacion |
|---|---|---|
| Onboarding de tenant | Agregado TenantSignupRequest |
Global, solo System Admin |
| Onboarding de usuario | UserAccount en estado Pending |
Por tenant, solo Tenant Admin |
El producto necesita un lugar unico y facil de encontrar para revisar elementos pendientes de onboarding, pero los objetos de negocio subyacentes no son iguales. Las solicitudes de alta de empresa representan un agregado dedicado, mientras que las solicitudes de alta de usuario ya estan modeladas por el ciclo de vida de una cuenta pendiente.
La arquitectura tambien debe evitar un atajo riesgoso: aprobar el ingreso de un usuario a un tenant no debe otorgar automaticamente permisos operativos. Un usuario puede estar activo en el tenant y aun permanecer en estado de lobby hasta que solicite y se apruebe un perfil.
El producto ahora requiere que el ciclo de vida completo de las solicitudes de alta de usuario y de perfil sea trazable por tenant. Los administradores deben cerrar cada requerimiento con una decision terminal de negocio, Aprobado o Denegado, y el solicitante debe recibir una notificacion automatica cuando se alcance ese resultado final.
UMS expondrá una Bandeja de Aprobacion de Onboarding como una superficie compuesta de UI y consulta, no como un nuevo agregado o tabla generica de inbox.
| Area de Decision | Eleccion |
|---|---|
| Ubicacion UI | Agregar una nueva opcion de menu a nivel Identity para aprobaciones de onboarding. |
| Fuente de datos de onboarding de tenant | Consultar registros TenantSignupRequest pendientes. |
| Fuente de datos de onboarding de usuario | Consultar registros UserAccount pendientes dentro del scope del tenant actual. |
| Onboarding de entitlements | Enrutar solicitudes de perfil por el modelo de aprobaciones antes de asignar un Profile. |
| Estado de lobby | Usuarios autenticados sin perfil activo reciben una experiencia controlada de lobby en vez de menus operativos. |
| Autorizacion de aprobacion | Requerir capacidad explicita por alcance, no solo visibilidad de pantalla. |
| Cierre de ciclo de vida | Requerir resultados terminales Aprobado o Denegado para solicitudes de alta de usuario y de perfil. |
| Modelo de persistencia | Reutilizar los agregados existentes; no crear una tabla generica de inbox. |
| Preparacion para pago futuro | Mantener extensible el modelo de estados del onboarding de empresa para verificacion de pago. |
El acceso a aprobaciones debe depender de una capacidad explicita, no solo de la visibilidad del menu.
| Capacidad | Alcance | Accion permitida |
|---|---|---|
ApproveTenantSignup |
Global | Ver y aprobar o rechazar solicitudes de alta de empresa. |
ApproveUserSignup |
Tenant actual | Ver y aprobar o denegar solicitudes de alta de usuario solo del tenant activo. |
RequestProfileAccess |
Tenant actual | Enviar una solicitud de perfil desde el lobby. |
ApproveProfileRequest |
Tenant o sucursal delegada | Aprobar, modificar o denegar solicitudes de perfil. |
ViewOnboardingInbox |
Global o por tenant | Abrir la bandeja e inspeccionar items pendientes. |
La primera version puede aplicar esto mediante verificaciones de rol y contexto de tenant, pero la expectativa arquitectonica es que la accion siga siendo gobernada por autorizacion y totalmente auditable.
| Estado | Significado |
|---|---|
| Pending | La solicitud fue enviada y espera una decision global. |
| Approved | El tenant fue creado y se aprovisiono la primera cuenta admin. |
| Rejected | La solicitud se cerro sin crear el tenant. |
| Estado | Significado |
|---|---|
| Pending | La cuenta fue creada, pero aun no fue activada. |
| ActiveWithoutProfile | El Tenant Admin aprobo la solicitud, el usuario puede autenticarse, pero no tiene perfil operativo asignado. |
| Active | El usuario tiene al menos un perfil activo y puede recibir menus operativos segun el grafo de autorizacion. |
| Denied | La solicitud se cerro sin activar acceso al tenant. |
| Estado | Significado |
|---|---|
| PendingAssignment | El usuario solicito sistema, sucursal y rol sugerido. |
| Approved | La solicitud se cerro con un rol asignado. El rol otorgado puede coincidir con el solicitado o ser modificado por el aprobador. |
| Denied | La solicitud se cerro sin asignar perfil para el alcance solicitado. |
Las etiquetas de estado terminal son terminos de negocio. Los eventos internos o valores de persistencia existentes que usen terminologia de rechazo deben traducirse consistentemente en los boundaries de aplicacion para que usuarios, administradores y auditores vean Aprobado o Denegado como resultados finales.
| Alternativa | Decision | Motivo |
|---|---|---|
| Crear una tabla generica de inbox de onboarding | Rechazada | Duplica estado de los agregados e introduce acoplamiento entre flujos no identicos. |
| Meter el onboarding de empresa dentro del listado de usuarios | Rechazada | Oculta un proceso global dentro de una pantalla con scope de tenant. |
| Depender solo de ocultar pantallas por rol | Rechazada | Ocultar UI no es un modelo de autorizacion y es debil para aprobaciones. |
| Crear inbox separados con opciones de menu separadas | Rechazada | Fragmenta la experiencia del operador y hace menos descubrible la aprobacion. |
| Activar usuario y asignar perfil por defecto inmediatamente | Rechazada | Colapsa admision de identidad y aprobacion de entitlements, aumentando el riesgo de acceso indebido. |
| Area | Guia |
|---|---|
| Navegacion | Ubicar la bandeja dentro del modulo Identity, no dentro de Authorization. |
| Consultas | Componer la bandeja con solicitudes de tenant pendientes, cuentas de usuario pendientes y solicitudes pendientes de asignacion de perfil. |
| Comandos | Mantener separados el comando de aprobacion de alta de tenant, la activacion de cuenta, la denegacion de alta de usuario, la aprobacion de asignacion de perfil y la denegacion de solicitud de perfil. |
| Lobby | Enrutar usuarios autenticados sin perfil activo a una pantalla de lobby con formulario de solicitud de perfil. |
| Notificaciones | Continuar usando notificaciones simuladas en UI y plantillas de notificacion en backend; toda aprobacion o denegacion terminal debe notificar al solicitante. |
| Politica futura | Si se introduce verificacion de pago, modelarla como un estado o politica adicional de onboarding, no como un flujo de usuario independiente. |