Llevar adelante una migración en Drupal es un proceso que necesita de manera indispensable el uso de un conjunto de módulos del core para poder realizarse. Vale aclarar que siempre que hable de migración será desde una fuente de datos que puede ser otro Drupal en versión 6 o 7, una base de datos no Drupal, archivo CSV, hacia un sitio Drupal 8 o 9. Esto podría motivar otro post pero en este caso será pensando en que nuestra fuente es un Drupal 7 hacia un sitio en Drupal 9.
Además de los módulos del core, como dije indispensables, la comunidad nos ha dado módulos que complementan a los del core y en algunos casos también los incluiría dentro del grupo de indispensables. Estos módulos contrib nos agregan plugins de migración (otro tema a desarrollar en otro post), comandos drush, mejoras en la gestión de configuraciones, entre otras cosas que agilizan el proceso de migración.
La idea es dejar alguna descripción corta de las características o utilidades de los módulos y como se instala (acá hay un par de “trucos” interesantes).
Una aclaración antes de comenzar a hablar de los módulos, este set de módulos están orientados a migraciones utilizando templates de migración o como también se les llaman migraciones dinámicas o custom.
Los módulos que vamos a describir son:
- Migrate (Core)
- Migrate Drupal (Core)
- Migrate Drupal UI (Core)
- Migrate Plus (Contrib)
- Migrate Tools (Contrib)
- Configuration Update Manager (Contrib)
Empecemos por instalar los módulos de core
Esto se puede hacer por drush o desde la UI.
Migrate
Este módulo, que se encuentra disponible en el core de Drupal, nos provee de la API de migración desde cualquier fuente de datos a Drupal. Dentro encontraremos un conjunto de implementaciones de clases bases que con seguridad vamos a utilizar.
Habilitamos el módulo
drush en migrate
Migrate Drupal
Este módulo también disponible en el core de Drupal, nos provee de todo lo necesario para poder importar datos desde Drupal 6 o 7 hacia Drupal 8 o 9. Claramente este módulo es indispensable si lo que haremos es migrar de Drupal a Drupal.
Habilitamos el módulo
drush en migrate_drupal
Migrate Drupal UI
Este también es un módulo disponible en el core de Drupal y lo que nos permite es gestionar las migraciones directamente desde la UI de administración. En mi caso lo uso muy poco porque es mucho más práctico ejecutar las acciones utilizando Drush pero sí puede ser interesante tenerlo para revisar el estado de las migraciones, más que nada para que varios usuarios puedan ver el resultado.
Habilitamos el módulo
drush en migrate_drupal_ui
Migrate Plus
Link: https://www.drupal.org/project/migrate_plus
Este módulo está hecho para suplementar capacidades a lo que ya tenemos con Migrate y Migrate Drupal.
El conjunto de capacidades extras que tendremos con Migrate Plus es bastante amplio, nos brinda la posibilidad de convertir nuestros templates de migración en entidades de configuración de Drupal, es decir que podremos cambiarlo, exportarlos, importarlo. Y desde el punto de vista de los plugins agrega ciertos plugins (source, process y destination plugins) que en mi caso los utilizo en un alto porcentaje de mis migraciones.
Para obtener el módulo yo lo hago con composer
composer require drupal/migrate_plus
Habilitamos el módulo
drush en migrate_plus
Migrate Tools
Link: https://www.drupal.org/project/migrate_tools
Este módulo nos deja disponible un conjunto de comandos Drush que son sumamente importantes y útiles para ejecutar las diferentes migraciones.
Para obtener el módulo yo lo hago con composer
composer require drupal/migrate_tools
Acá podemos encontrarnos con este error: esto tiene que ver con la versión de drush que estamos utilizando. Como Migrate Tools es un módulo que nos va a dar varios comandos drush para gestionar las migraciones tiene dependencia con drush.
Para resolverlo lo que tenemos que hacer es bajar la versión de drush.
Para hacer un downgrade de un paquete a través de composer accedemos al archivo composer.json del proyecto y definimos la versión del paquete que queremos, en este caso vamos a indicarle a composer que necesitamos la versión 10.3.6
Guardamos el archivo y vamos a hacer un update del paquete con la opción -W para que también se actualicen las dependencias de este paquete.
composer update -W drush/drush
Luego volvemos a intentar obtener el módulo por composer
composer require drupal/migrate_tools
Habilitamos el módulo
drush en migrate_tools
Para probar podemos consultar el status de las migraciones del grupo default
drush migrate:status --group=default
El resultado tiene que ser el siguiente (o algo muy similar)
Configuration Update Manager
Link: https://www.drupal.org/project/config_update
Este módulo no tiene como único fin asistirnos en las migraciones sino que es una herramienta que servirá para manejar los diferentes archivos de configuración definidos. Teniendo en cuenta que una migración se define en un archivo de configuración yml, es decir es una configuración de Drupal, entonces este módulo funciona a la perfección. En mi caso solo lo utilizo para hacer una refresh de estos archivos de configuración.
De no contar con este módulo, cada vez que se haga un cambio sobre algún template de migración necesita que se refresque esa configuración y sin este módulo la única forma que hay es desinstalar e instalar nuevamente el módulo.
En resumen
Con este conjunto de módulos vamos a poder “hacer toda la migración” desde la línea de comandos utilizando drush, consumiendo menos recursos y ahorrando tiempo. Siempre hay que pensar que una migración es un proceso de “lectura/procesamiento/escritura” bastante intensivo y en muchos casos se deben migrar miles de contenido, entonces es casi inviable hacerlo desde la UI (aunque es factible porque el módulo Drupal Migrate UI lo permite). Además vamos a poder ver el estado de cada migración o de grupos (filtrando por el group en sí o por sus tags), vamos a poder ejecutar migraciones también por grupo con o sin limite de cantidad de registros a importar (usar límites es bueno para hacer pruebas), vamos a poder retrotraer una migración hecha (hacer un rollback), vamos a poder ir modificando nuestros templates de migración y actualizando estos archivos de configuración por comandos drush. Además vamos a tener disponibles plugins que extienden los que drupal provee en su core y seguramente usemos con frecuencia en nuestros templates de migración.