Migrar de una estructura plana a una de N niveles
La mayoría de las iglesias comienzan con una estructura plana — todos son simplemente "miembro", hay una sede, y el organigrama está en la cabeza de alguien. Eso funciona hasta que abre el segundo campus, el primer líder de célula necesita un alcance o los ancianos quieren desgloses demográficos por región.
Esta página recorre la migración: desde una organización de un solo nivel (o una configuración legada de tres niveles de sede/centro/bascenta) al modelo de N niveles que GCM usa hoy.
Dos puntos de partida
Probablemente estás en una de estas posiciones:
- Organización GCM nueva con un nivel definido. Agregaste algunas unidades en el nivel 1 (o simplemente dejaste el nivel Sede sembrado por defecto) y ahora quieres agregar los niveles 2 y 3 sin perturbar a los miembros que ya están en el nivel 1.
- Organización GCM existente desde antes de que llegara N-niveles. Tu data ya está en
org_units— el modelo legado de tres niveles fue migrado por GCM durante una actualización de plataforma. No necesitas migrar la data; podrías querer renombrar o reestructurar.
Ambos siguen la misma forma. Las diferencias se mencionan donde importan.
La forma de la migración
- Audita lo que tienes. Lista cada unidad existente y el conteo de miembros asignados.
- Diseña el árbol objetivo en papel. Decide nombres de niveles, qué unidades existentes se convierten en qué unidades nuevas y dónde aterrizan los miembros.
- Agrega nuevos niveles en Configuración. Primero los niveles, segundo las unidades.
- Crea las nuevas unidades. Comienza en el nivel superior y trabaja hacia abajo.
- Reasigna miembros. Muévelos del nivel 1 al nivel hoja apropiado.
- Archiva las unidades viejas si ya no son necesarias.
- Re-limita usuarios para que los pastores vean la porción correcta.
- Revisa los reportes antes de anunciar.
Puedes hacer esto incrementalmente — no hay "modo de migración". La organización sigue funcionando durante todo el proceso.
Paso 1: auditar
Abre la página de Estructura organizacional y anota cada unidad activa. Anota la insignia de conteo de miembros en cada una. Exporta la lista de miembros filtrada por unidad (/members?org_unit=<id>) a CSV si quieres un rastro en papel.
Cosas para marcar:
- Unidades con cero miembros — candidatas para eliminación antes de empezar.
- Unidades sin líder — candidatas para arreglar mientras estás ahí de todos modos.
- Unidades con nombres duplicados bajo diferentes padres — fácil de confundir durante la reasignación.
Paso 2: diseñar el objetivo
Esboza el nuevo árbol antes de tocar la UI. Un objetivo común:
Sede (nivel 1)
└── Centro (nivel 2)
└── Célula (nivel 3)Para cada unidad existente, decide en qué unidad de nivel hoja terminarán sus miembros. Si todos están actualmente en el nivel 1 ("Sede Acacia") y vas a agregar células, necesitas saber a cuál célula se une cada miembro. Esa es una decisión de tu equipo, no de GCM.
Documenta el mapeo en una hoja de cálculo:
| Unidad actual (nivel 1) | Unidad nueva (nivel 3) | Conteo de miembros |
|---|---|---|
| Sede Acacia | Célula Acacia A | 45 |
| Sede Acacia | Célula Acacia B | 38 |
| Sede Acacia | Célula Acacia C | 22 |
Paso 3: agregar nuevos niveles en Configuración
Ve a Configuración → Jerarquía organizacional y agrega los niveles que aún no tienes. Consulta Definir niveles para el recorrido campo por campo.
Nómbralos como tu iglesia habla. Guarda. No te preocupes por crear unidades aún — los niveles solo necesitan existir.
Paso 4: crear las nuevas unidades
Abre el árbol organizacional. Expande la unidad de nivel 1 bajo la que quieres anidar. Usa el menú de tres puntos para agregar unidades hijas un nivel abajo. Repite para el nivel 3.
Para muchas unidades a la vez, entra a la página de nivel (/hierarchy/2) y agrégalas tarjeta por tarjeta. Es más rápido que la danza de diálogos en el árbol.
Define direcciones y ubicaciones en mapa a medida que avanzas — el módulo de mapa se llenará tan pronto como el geocoder se ponga al día.
Paso 5: reasignar miembros
Esta es la parte donde la mayoría de las iglesias pierde la paciencia. Dos opciones:
Opción A — una unidad a la vez, en la UI
- Abre la página de detalle de la nueva célula.
- Haz clic en Agregar miembro, busca, elige, confirma.
- Repite para cada miembro que pertenezca a la célula.
Lento pero visible. Bueno para organizaciones pequeñas (< 100 miembros).
Opción B — en lote vía la lista de miembros
- Ve a Miembros y filtra a los miembros previstos de la célula (por nombre, por estado de visitante, por lo que sea).
- Selecciona todas las filas.
- Acciones en lote → Asignar a unidad → elige la célula.
GCM hace upsert de las asignaciones. Las filas existentes de nivel 3 se reemplazan; si el nivel 1 ya estaba definido, esa fila queda intacta. (Para limpiar el nivel 1 en lote también, ejecuta Desasignar del nivel 1 primero.)
Para migraciones grandes, también puedes incorporar la asignación de unidad en una importación CSV única, pero estarías re-importando data que ya está en el sistema — usualmente más trabajo que la acción en lote.
La reasignación es uno-por-nivel, no muchos-por-unidad
Un miembro en el nivel 1 sin asignación de nivel 3 obtiene una nueva fila de nivel 3 agregada — nada reemplazado. Pero un miembro ya en el nivel 3 Célula Acacia A al que reasignas a Célula Acacia B reemplaza la fila. El índice único garantiza que no haya duplicados.
Paso 6: archivar las unidades viejas
Si tu vieja Sede Acacia de nivel 1 todavía tiene miembros asignados directamente a ella después de la migración, tienes dos caminos:
- Déjalos ahí. Los miembros en el nivel de sede siguen consolidándose correctamente. Tus reportes consolidados siguen funcionando.
- Muévelos con Acciones en lote → Desasignar del nivel 1 y déjalos solo en el nivel hoja.
Probablemente no quieras archivar la Sede Acacia de nivel 1 — sigue siendo tu unidad de nivel superior, solo que ahora con descendientes. Pero si realmente estás reestructurando (ej. Sede Acacia y Sede Maple se fusionan en Sede Árbol), consulta Archivar y restaurar para las reglas de cascada.
Paso 7: re-limitar usuarios
Los pastores que previamente habías limitado a Sede Acacia ahora ven todo el subárbol de Acacia por defecto. Si eso es lo que quieres, sin acción.
Si quieres un líder de célula limitado solo a su célula:
- Ve a Usuarios y roles → Usuarios y abre el usuario.
- Haz clic en Editar asignaciones.
- Desmarca la asignación de nivel de sede y marca la de nivel de célula.
- Guarda.
La siguiente carga de página recoge el nuevo alcance. Consulta Asignar líderes y pastores para el modelo completo.
Paso 8: revisar
Antes de anunciar el cambio a tu equipo, verifica:
- El conteo total de miembros en el dashboard coincide con lo que tenías antes.
- El conteo de miembros por sede coincide con la suma de sus descendientes.
- El login de un pastor muestra solo los miembros de su célula.
- El reporte de asistencia de la semana pasada sigue resolviéndose — los eventos históricos usan el id de la unidad, que no cambió.
- El mapa muestra las nuevas unidades fijadas en sus direcciones.
Las discrepancias usualmente se rastrean a asignaciones residuales de nivel 1 que no sabías que estaban ahí. Re-exporta la lista de miembros, ordena por unidad y busca espacios en blanco.
Lo que no tienes que migrar
El modelo legado de columnas de tres niveles sede/centro/bascenta está completamente removido del código de la app desde la última actualización de plataforma. Si tu data vieja referencia esas columnas, GCM ya migró las filas a org_units durante la actualización. Las etiquetas se preservaron como niveles 1, 2, 3 con los nombres originales. No necesitas hacer nada para "completar" la migración — el nuevo modelo es el único modelo.
Las referencias del sistema de tipos a las columnas legadas sobreviven en src/integrations/supabase/types.ts porque ese archivo se auto-genera desde la base de datos, y las columnas no fueron eliminadas. La app las ignora.
Preguntas comunes
¿Puedo hacer esta migración por etapas a lo largo de semanas? Sí. No hay un "switch". Puedes agregar el nivel 2 hoy, el nivel 3 el próximo mes. Solo asegúrate de que los miembros estén colocados antes de que cualquier reporte dependa de la nueva estructura.
¿Qué pasa con las filas existentes de asistencia y donaciones que referencian las unidades viejas? Están indexadas por id de unidad, no por nivel. Mientras el id de la unidad exista (ya sea en el nivel 1 o como una entidad renombrada), la fila sigue resolviéndose. Archivar o eliminar la unidad vieja es lo que rompería los reportes históricos — así que haz eso con cuidado.
¿Debería eliminar o archivar después de la migración? Archivar. Siempre archivar. Siempre puedes cambiar de opinión y desarchivar; la eliminación es final desde la UI.
Próximos pasos
- Define niveles — configura los nombres de los niveles objetivo.
- Crea unidades — puebla los nuevos niveles.
- Asigna miembros — vuelve a vincular personas a las hojas correctas.
