Integracion de plataformas

Learning Platform Bridge

Panel para migrar y sincronizar usuarios, cursos y progreso desde LearnDash a Moodle.

Context

Despues de la migracion inicial de LearnDash a Moodle con la herramienta de migracion (pipeline de 6 fases), era necesario un sistema para mantener las dos plataformas sincronizadas durante el periodo de transicion. Los alumnos seguian haciendo curso en LearnDash mientras se completaba la transicion a Moodle.

Que hace

Sistema ETL completo que actua como capa intermedia (puente) entre multiples instalaciones WordPress con LearnDash + WooCommerce y una instalacion Moodle centralizada:

  • Extraccion via plugin WordPress REST propio
  • Modelo canonico con deduplicacion por email (usuarios) y slug (cursos)
  • Validacion manual con dry-run: preview de cambios antes de ejecutar
  • Aplicacion a Moodle via Web Services API con idempotencia
  • Ejecucion asincrona con Celery + Redis: tracking de jobs, logs persistentes, retry automatico
  • Auditoria completa de cada operacion

Resultados en produccion

  • 15.423 registros sincronizados en 95 segundos
  • 695 usuarios canonicos deduplicados
  • 72 cursos canonicos
  • 1.982 matriculas
  • 12.218 registros de progreso
  • 0 conflictos detectados
  • 5 usuarios creados exitosamente en Moodle produccion con idempotencia verificada

Dificultades principales

  • Diferentes APIs: WordPress REST API vs Moodle Web Services
  • Deduplicacion de usuarios: misma persona en multiples webs con IDs diferentes
  • Progreso en formatos diferentes: JSON (LearnDash) vs registros (Moodle)
  • Ejecucion asincrona massiva sin bloquear la interfaz

Soluciones

  • Plugin WordPress propio con formato normalizado
  • Modelo canonico con deduplicacion y logging de conflictos
  • Celery + Redis para jobs ETL con tracking y retry
  • Mode dry-run con preview de cambios
  • Idempotencia total verificada con datos reales

Aprendizajes

  • La sincronizacion bidireccional es mas compleja que la migracion unidireccional
  • Un panel de validacion (dry-run) es imprescindible para datos criticos
  • La idempotencia se debe verificar con datos reales, no solo disenarla