
Estoy trabajando en unas notas para un borrador que debería convertirse en un libro sobre procesos de migración construidos con Drupal y su API Migrate. La publicación está prevista para junio de 2020, y recopilar, probar y dar forma al contenido se ha convertido en un trabajo considerable.
Todavía quedan unos meses para el lanzamiento. Así que, para conservar un poco de salud mental y dar un sentido parcial a estas tareas, he pensado publicar aquí algunos artículos breves a partir de esas notas de trabajo.
De esa manera puedo compartir algo útil junto a las notas complementarias y, si la COVID-19 me alcanza antes de que salga el libro, al menos habré compartido algo antes. Supongo.
Bueno, ¿de qué quiero hablar en este artículo? Me gustaría elaborar una lista de módulos de Drupal relacionados con los procesos de migración: módulos contribuidos que añaden funcionalidades a una migración. Este artículo es solo una recopilación ligera de recursos básicos. Lo juro.
Este artículo se publicó originalmente en una versión anterior de mi cuaderno técnico personal y ahora forma parte de The Russian Lullaby.
Fotografía de Unsplash, del usuario Nils Nedel, @nilsnedel
Índice de contenidos
1- Introducción
2- Recursos básicos: módulos del núcleo
3- Otros recursos básicos: módulos contribuidos
4- Recursos adicionales: módulos contribuidos para plugins
5- Ejecutar migraciones: módulos relacionados con Drush
6- Autores que deberías conocer
7- :wq!
No es fácil hablar de migraciones en general y, por supuesto, tampoco lo es en el contexto de Drupal. Para ejecutarlas necesitas conocer bien la tecnología, los modelos de datos de origen y destino, tener cierta experiencia con procesos ETL y manejarte con los plugins de Drupal. Las migraciones hacen un uso intensivo de estos plugins.
En cualquier caso, como el tema es amplio y ahora tengo poco tiempo, he planteado este artículo como un catálogo resumido, de consulta rápida, de herramientas y recursos básicos para trabajar con migraciones.
Migrate: la base de las migraciones. El módulo migrate proporciona la API fundamental para migrar en Drupal.
Migrate Drupal: migrate_drupal se centra en las actualizaciones desde Drupal 6 o Drupal 7. Permite leer entidades de configuración en Drupal 8.
Migrate Drupal Multilingual: migrate_drupal_multilingual. ¿Un módulo experimental del núcleo? Véase esta referencia.
Migrate Drupal UI: migrate_drupal_ui ofrece una interfaz para realizar la actualización.
Migrate Plus: migrate_plus es un módulo contribuido esencial que amplía las funcionalidades y capacidades de Migrate con numerosos plugins y extensiones.
Migrate Tools: migrate_tools es otro recurso imprescindible: proporciona numerosos comandos Drush para ejecutar y gestionar migraciones.
Migrate Status: migrate_status. Este pequeño módulo permite obtener información sobre un proceso de migración. ¿Necesitas saber si una migración está ejecutándose? Ofrece un servicio al que puedes llamar para comprobarlo.
Migrate Files: migrate_files. Una colección de plugins de proceso tan interesante que te entrarán ganas de mover archivos e imágenes con ella.
Migrate Commerce: commerce_migrate. Un marco de propósito general que amplía el módulo Migrate del núcleo para trasladar datos en un escenario de Drupal Commerce.
En las migraciones de Drupal utilizamos distintos recursos para ejecutar el plan ETL. Uno de los fundamentales, como adelantaba en la introducción, son los plugins de Drupal, que requieren cierto conocimiento y práctica.
En una migración, los plugins ayudan a leer la información en la fase E, extracción desde el origen (plugins de origen); realizar la T, transformación o procesamiento (plugins de proceso); y guardar los datos en la L, carga en el destino (plugins de destino). Al combinar estas tres partes solemos obtener un proceso de migración funcional.
Muchos módulos del núcleo, como el de usuarios, ya incluyen sus propios plugins para facilitar las migraciones. Veamos algunos plugins distribuidos en módulos contribuidos.
Migrate Source CSV: migrate_source_csv. Módulo contribuido para migrar datos a Drupal 8 desde un sencillo archivo CSV de los de toda la vida.
Migrate Source SQL: custom_sql_migrate_source_plugin. Como particularidad entre los plugins de base de datos, permite incluir consultas SQL directamente en el archivo .yml que describe la migración. Las consultas se ejecutan contra la base de datos de origen.
Migrate Source YAML: migrate_source_yaml. Una herramienta sencilla para migrar contenido desde archivos YAML.
Migrate Process Geofield: geofield. El módulo contribuido Geofield incluye un plugin de proceso personalizado para migraciones. Consulta su plugin de proceso.
Migrate Process XML: migrate_process_xml. Proporciona plugins de proceso para xpath y xvalue.
Migrate HTML to Paragraphs: migrate_html_to_paragraphs. Ayuda a transformar el HTML del origen en un elemento Paragraph, gestionado mediante un plugin de destino.
¿Qué clase de entidades de Drupal se crearán durante la migración? ¿Entidades de contenido? ¿Entidades de configuración? Echa un vistazo.
Migrate Destination CSV: d8migrate. Un pequeño módulo personalizado creado por @jonathanfranks.
Migrate Destination Config: clase Config.php. Ofrece un plugin para migrar configuración.
Migrate Destination Block: clase EntityBlock.php. Como ejemplo de los recursos que puede ofrecer cada componente en una migración, al trasladar entidades de bloque —que son entidades de configuración— conviene consultar las clases PHP de origen, proceso y destino incluidas en su propio módulo.

Migrate Scheduler: migrate_scheduler. Ofrece integración con la API de cron de Drupal para ejecutar migraciones según una programación predefinida.
Migrate Run: migrate_run. Comandos Drush para ejecutar migraciones de forma ligera. Es más sencillo que Migrate Tools, pero no ofrece soporte para grupos de migraciones. Tampoco depende de Migrate Plus. Va un poco por libre.
Migrate Devel: migrate_devel. Proporciona opciones Drush para mostrar información de depuración durante la ejecución. También incorpora el plugin de proceso debug. Aquí puedes leer un artículo sobre él. Por cierto, en el contexto original del artículo, la compatibilidad con Drush 9 seguía sin resolverse, aunque parecía haber un parche disponible.
Un material formativo imprescindible. Además, el sitio de su empresa reúne muchos artículos muy buenos sobre el tema bajo la etiqueta migrate.
Algunos ejemplos de Mauricio Dinarte:
Su perfil en Drupal.org: dinarcon.
Por el camino descubrí también que tiene varios módulos contribuidos relacionados con las migraciones y los plugins de proceso.
Algunos ejemplos de Tess Flynn:
Su perfil en Drupal.org: socketwench.
Algunos ejemplos de Danny Sipos:
Su perfil en Drupal.org: upchuk.
Recibe artículos sobre Drupal y desarrollo web directamente en tu bandeja de entrada.
Comments
Los comentarios los proporciona Disqus. Solo se cargan si permites la categoría de comentarios en tus preferencias de cookies.