Cómo migrar a Drupal 8 y no morir en el intento
¿Tienes un proyecto que implica una migración de contenidos a Drupal 8? ¿Estás planificando cómo migrar? ¿Tal vez tienes pesadillas soñando con las conversiones de datos?
¡Calma! Que no cunda el pánico, porque cómo ya he sufrido todo eso, voy a darte unos consejos sobre todo lo que necesitas saber antes de migrar a Drupal 8 esos contenidos.
Además, en este segundo artículo con vídeo vemos un ejemplo práctico para que veas que, pasito a pasito, es un proceso fácil de diseñar. Suscríbete al newsletter de danielprimo.io y sabrás cuando lo público (además de otros recursos de interés para ti).
Videoguía ¶
En este vídeo te explico cómo planificar esa migración, hasta el maestro Yoda interviene. Espero que te guste. Seguimos después del vídeo.
Suscríbete a mi canal de YouTube
¿Es tan difícil migrar a Drupal 8? ¶
Aunque creas que es así, no es para tanto, es más una cuestión de tesón y constancia, que de dificultades técnicas.
Es cierto que tienes que conocer de forma previa cómo funciona Drupal, si tienes dudas al respecto, escríbeme a través de mi formulario de contacto.
La comunidad que programa Drupal 8 ya preparó una amplia base para que la migración a este sistema tuviera más facilidades que en versiones anteriores.
Es cierto, no todo funciona en un click, pero si migras de Wordpress a Drupal por ejemplo encontrarás un módulo que te permitirá realizar la tarea en pocos pasos.
Lo que si te recomiendo es que reserves tiempo extra para ejecutar la migración. ¡No vayas justo de tiempo! Casi siempre surge algún detalle que hay que afinar: una conversión de caracteres, una transformación en la ejecución de la migración…
Este consejo es general. Llevo muchas migraciones a las espaldas y da igual de donde partas y hacia donde vayas, siempre hay que comprobar y repetir.
El proceso ETL ¶
De las siglas en inglés de ETL (extract, transform, load) podemos dividir el proceso de migración en tres partes bien diferenciadas.
¿Te gusta el chocolate? Seguro que si. Haremos un paralelismo entre el proceso de fabricación de este manjar y nuestra migración a Drupal 8 para que todo sea un poco más “dulce” :)
Extraer / Origen ¶
El cacao sale del cacaotero, el árbol que lo produce como fruto. Se extrae en forma de granos de las mazorcas, cuando están suficientemente maduras.
Esto que me cuentas, ¿seguro que tiene algo que ver con Drupal 8?
Mucho, créeme. Porque tú extracción de cacao es el origen de tus datos. Tal vez los tengas en una base de datos, en ficheros CSV, en otra plataforma de publicación (Wordpress, Joomla…) o, en el peor de los casos, en un fichero de Word.
Lo importante es tener los datos tabulados y clasificados, de la forma que sea. Cuánto mejor puedas tener segmentados e identificados esos datos, más fácil te será migrar.
Una hoja de cálculo será tu mejor arma. Yo utilizo LibreOffice, pero una Excel de toda la vida o Google Spreadsheets te resolverá la papeleta.
Y es que el primer secreto de la migración, si partes de una información que necesita ser trabajada, es tener una buena extracción de datos preparada.
Dedícale tiempo y atención, podrás ahorrarte mucho trabajo si sabes cómo es el origen de los datos y como se relacionan entre si.
Transformar / Proceso ¶
Hasta llegar a la tu mesa a la hora del postre, el cacao sufre una transformación en varios sentidos: secar, fermentar, tostar, moler…
Nuestros datos seguro que necesitan transformarse. Convertirse en otra cosa. Deberían ser transformaciones sencillas, modulares, que se puedan ir sumando unas a otras.
Por ejemplo, convertir una cadena de texto a mayúsculas. O eliminar los caracteres que se pueden considerar raros. ya sabes, las vocales con tilde y las eñes, como en inglés no existen, suelen dar problemas en casos específicos. Concatenar dos columnas de datos. O lo contrario, dividir un campo en porciones más pequeñas.
El núcleo de toda migración es la transformación de los datos. Y en Drupal han pensado en ello.
Si la parte de extracción era la que más tiempo te puede ahorrar, la de transformación es la más compleja, porque es el puente entre ambos mundos.
Carga / Destino ¶
El punto final de la producción del chocolate es disfrutar de un desayuno calentito, un postre rico o una merienda insuperable, en forma de líquido, cobertura o tableta de chocolate.
Nuestro destino son los contenidos colocados plácidamente en el flamante Drupal 8 que estamos programando. La parte más satisfactoria de todas.
Aquí juega un papel relevante conocer la estructura interna de Drupal, su arquitectura de entidades. Si tienes dudas o necesitas más información sobre esto, ponte en contacto conmigo.
Simplificando mucho, las entidades son conjuntos de campos. Por ejemplo, un artículo sería una entidad y el título, la imagen y el cuerpo del texto los campos.
Si ya conoces esta plataforma, sabrás que en “lenguaje drupal” el ejemplo del artículo son lo que se llaman nodos, que las categorías a las que puede pertenecer son taxonomías y que los usuarios son, exactamente eso, usuarios.
Si por ejemplo estás migrando un blog o una web de noticias mi consejo es que te adaptes a la estructura de base que te ofrece Drupal. En combinación con otros módulos como views conseguirás los listados que necesites, con panels podrás manejar la visualización y con comment podrás gestionar los comentarios. Y esto solo es el principio.
Puedes crear tus propias entidades, dotarlas de los campos necesarios y jugar con ellas para que construyan el contenido o la configuración del sitio web.
Herramientas de migración en Drupal 8 ¶
El equipo de developers de Drupal 8 entendió los sufrimientos que todos hemos padecido con las migraciones y propuso desde el comienzo que el soporte de migración fuera parte del núcleo del sistema. Así que el módulo Migrate pertenece al core de Drupal.
Esto trae cuestiones muy positivas para tu trabajo. Está documentado con ejemplos, marca una API sobre la que puedes trabajar con relativa comodidad y tiene soporte de actualizaciones.
Eso si, para algunas de estas funcionalidades es necesario instalar módulos complementarios. No te lo pierdas, porque te cuento más adelante soluciones al respecto.
Primera ventaja práctica de la Migrate API: entiende la arquitectura de Drupal 6 y 7, con lo que las migraciones desde estas plataformas es mucho más sencilla.
Y la segunda. Tenemos una interfaz gráfica para controlar el estado de la migración, repetir el proceso, volver para atrás y borrar lo hecho.
Si te diré que particularmente prefiero los comandos de drush para ejecutar estas tareas, porque es mucho más rápido y controlable. Para los que no lo sepáis, drush es el comando para terminal que permite interactuar con Drupal sin entorno gráfico.
Por supuesto te permite importar campos de texto, del tipo que sea, pero también imágenes, ficheros, enlaces…
Pero para mi, lo mejor de esta suite de Migrate es que nos permite crear un perfil de migración definiendo origen, proceso y destino a través de un fichero de texto en formato YAML.
Lo veremos en el siguiente artículo de este tema con un ejemplo práctico, para que compruebes y prepares toda la potencia de un sistema como este. Porque, y atención que esto es importante, se puede configurar una migración, ¡sin saber programar! Aunque no te engaño, hay que estar familiarizado con conceptos técnicos.
Lo mejor de Drupal Migrate es que nos permite crear un perfil de migración definiendo origen, proceso y destino a través de un fichero de texto.
No es para todos los casos, claro está, pero no sería maravilloso soñar con que estos procedimientos tan complejos pudieran ejecutarse con un solo click.
Módulos de referencia ¶
Como toda buena API de Drupal ya ha surgido todo un ecosistema de módulos que se aprovechan de ella para dotarnos de más funcionalidad y facilidades. Algunos de ellos son
- Migrate Plus: nos da más herramientas para simplificar la migración y viene con ejemplos prácticos con orígenes de datos diferentes. Suya es la opción de que puedas configurar la migración a través de un fichero de configuración. Absolutamente imprescindible si quieres sobrevivir con éxito a la migración.
- Migrate Tools: dota al sistema de más funciones para controlar el proceso: interfaz gráfica y comandos de drush.
- Migrate Source CSV: origen de datos como tabla CSV. Lo uso siempre
- Migrate Google Spreadsheets: origen de datos en hoja de cálculo de Google
- Wordpress Migrate: para migrar desde Wordpress y migrar de un coloso de los CMS a otro :)
- Migrate UI: Módulo para ejecutar migraciones a través de la interfaz gráfica, aún no está listo
- Migrate API: No es un módulo, es la completa documentación de lo que puedes hacer con Migrate API
Consejos finales para migrar a Drupal 8 con éxito ¶
Queremos disfrutar de ese buen chocolate, que se derrita en boca ¿cómo conseguirlo?
Análisis de los datos ¶
Lo primero de todo. Análisis de los datos que tienes que migrar. Si en tu proyecto no tienes acceso a esto, páralo todo hasta que lo consigas. Tablas, ficheros, webs antiguas… Lo que sea, sin un estudio previo estás perdido.
¿Cómo se relacionan esos datos? En el ejemplo más básico tenemos que los posts de un blog se relacionan con categorías y usuarios (el autor del post). Ahí ya tenemos las primeras conexiones entre entidades que tendremos que mantener en la migración.
Truco gráfico: dibujar un gráfico donde cada entidad es una caja y lanzar flechas para conectarlas entre ellas. Se tiran muchas líneas y papel, pero se sistematiza el proceso general. El ejemplo de la imagen está muy limpio, pero seguro que te viene bien recordar este método.
Origen de los datos y transformación ¶
El origen de datos tiene que ser cómodo
El origen de datos tiene que ser cómodo. Si cada vez que quieres traer la información tienes que conectarte a una VPN con usuario y contraseña o solicitarle acceso a un administrador, busca una solución práctica o pon límites con el cliente para que entienda estas dificultades.
Cada vez que ejecutes una transformación sobre el origen de los datos ten en consideración que si estos se actualizan, cosa muy probable, tendrás que volver a ejecutar esa transformación.
Por ejemplo, si tienes el nombre y apellidos de los usuarios en dos columnas y quieres importarlo en conjunto en un solo campo. En Excel o similares podrías utilizar la función concatenar y en una tercera columnas juntar las dos. Esto tendrías que hacerlo cada vez que actualices datos, ¡cada vez!.
Transformación y comprobación ¶
¿Qué solución tengo? Utilizar el paso 2 del ETL: la transformación. Deja que el proceso haga esa tarea por ti utilizando un plugin de Migrate API llamado concat, que te permite concatenar dos columnas de datos en una sola. Y eso se hará cada vez que migres, de forma automática. ¡Cuánto tiempo te ahorrarás!
Y si hay un verbo que desgastarás en un proceso de migración ese es: comprobar. Comprueba que todos los datos están bien migrados, que no hay caracteres extraños, que cada información de origen ha aterrizado en su destino correcto.
Podrías automatizar este proceso de comprobación, es cierto, pero con el tiempo ganarás intuición y verás enseguida donde tienes que entrar a revisar, en qué lugar está ese campo o proceso crítico que te llevará al éxito final de tu migración.
¿Muchas dudas? ¿Se resiste esa migración? Puedes consultarme a través del formulario de contacto.
Espero que este artículo te sea útil. No te pierdas el segundo artículo de esta saga: Tutorial de migración a Drupal 8 con migrate.
Escrito por:
Daniel Primo
12 recursos para developers cada domingo en tu bandeja de entrada
Además de una skill práctica bien explicada, trucos para mejorar tu futuro profesional y una pizquita de humor útil para el resto de la semana. Gratis.