Skip to content

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

  1. Audita lo que tienes. Lista cada unidad existente y el conteo de miembros asignados.
  2. 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.
  3. Agrega nuevos niveles en Configuración. Primero los niveles, segundo las unidades.
  4. Crea las nuevas unidades. Comienza en el nivel superior y trabaja hacia abajo.
  5. Reasigna miembros. Muévelos del nivel 1 al nivel hoja apropiado.
  6. Archiva las unidades viejas si ya no son necesarias.
  7. Re-limita usuarios para que los pastores vean la porción correcta.
  8. 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 AcaciaCélula Acacia A45
Sede AcaciaCélula Acacia B38
Sede AcaciaCélula Acacia C22

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

  1. Abre la página de detalle de la nueva célula.
  2. Haz clic en Agregar miembro, busca, elige, confirma.
  3. 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

  1. Ve a Miembros y filtra a los miembros previstos de la célula (por nombre, por estado de visitante, por lo que sea).
  2. Selecciona todas las filas.
  3. 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:

  1. Ve a Usuarios y roles → Usuarios y abre el usuario.
  2. Haz clic en Editar asignaciones.
  3. Desmarca la asignación de nivel de sede y marca la de nivel de célula.
  4. 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