Migrer vers drupal 8

Vers "migration drupal" de 6 à 7, migration de module ou thème, de drupal7-dev en prod... Cette page parle de la migration de drupal 7 vers drupal 8 et la liste des outils et modules de migration.

https://www.drupal.org/node/2350603

La migration du core n'écrase pas le site en cours, mais écrase une conf drupal 8.

1. Préparation et prérequis

  • avoir un Drupal 8 vierge (profil minimal) installé avec le module du core Migrate Drupal (qui a accès a la source) et Migrate
  • pour migrer i18n il faut Migrate Drupal i18n Module (migrate_drupal_i18n) installé sur Drupal 8
  • activer sur le d8 le module migrate_upgrade et les modules v8 utilisés (par core book pour garder arborescence des livres...)
    attention: un module v7 ne map pas excatement sa version v8 - par ex le core bloc v7 a été séparé en 2 modules v8: Block et Custom Block.
  • drush 8 (ou 9) si on veux utiliser drush pour migrer + 3 modules (migrate_tools, migrate_upgrade et migrate_plus)
  • Accès aux 2 bases, pour récupérer les fichiers privés drupal 7, configurer avant (dru8) le chemin file_private_path avant de lancer l'upgrade + copier les fichiers dans le dossier files (d8).
  • Vérifier qu'on a bien activé les modules contrib voulus sur le drupal 8, vierge de contenu (voir conflit d'ID)

Toujours d'actualité ? Si le format de texte "PHP code filter" était utilisé, n'existe pas dans dupal 8. Il sera rempacé par "filter_null" (utiliser project/php non recommandé) - voir plutot par là...

https://www.drupal.org/docs/8/upgrade/drupal-8-migrate-modules

2. Migrer

On a le choix entre : UI (moins puissant, pas de rollback) ou avec Drush

Ne faire aucune conf (du site Drupal 8) avant la fin du processus de mise à niveau (migrate-upgrade)

 

de nov 2016, Upgrade using Drush : https://www.drupal.org/node/2350651

Si on veux migrer via drush, avoir la dernière version 8 (https://github.com/drush-ops/drush) + activer Migrate Upgrade et Migrate Plus -  migrate_tools est utile si on a plusieurs upgrades à faire (https://www.drupal.org/project/migrate_tools) sur la v8

Avant de lancer cette commande migrate-upgrade, vérifier

  • qu'on a bien installé (ou non) tous les modules drupal 8 voulus : Custom Block... (va effacer la db)
  • et lu (note commentaire, profil d'install, ref vers terme à reconfigurer à la mano...) L'erreur filter_null (modifier le input format et voir si soucis token), pas de migration des vues (leurs chemins ?),
    + un chp (v7, le traitement du texte est au niveau de l'instance du field) apparaissant dans divers node_bundle, peux être en Plain text ici et en Filtered text là : on peux avoir à faire des modifs sur le drupal 7 (tous les bundles qui utilisent ce chp texte doivent avoir la meme conf de traitement du texte). Drupal 8 fonctionne autrement, au niveau field... et ne peux modifier par bundle  : Text (plain),  Text (formatted), Text (plain, long) et Text (formatted, long).
    + i18n ? cf https://www.drupal.org/docs/8/upgrade/upgrading-multilingual-drupal-7-to...

drush migrate-upgrade --legacy-db-url=mysql://user:pass@server/d6db --legacy-root=http://myd6site.com --configure-only

 

lancer l'upgrade (la 1ere, en test)

2 facons d'upgrader : avec drush (+ migrate_tools requis) ou via UI (cf https://www.drupal.org/node/2257723), les 2 ont besoin de project/migrate_upgrade.

avec drush + Migrate Tools + migrate_upgrade

Migrate Tools ajoute 2 commandes : drush ms (pour migrate-status) et drush mi (pour migrate-import), mais aussi migrate-rollback, migrate-stop, migrate-reset-status, migrate-messages, migrate-fields-source

migrate_upgrade ajoute drush migrate-upgrade  qui fait 2 choses:

  1. en utilisant les modèles de migration de drupal et la conf du site source, il génère les upgrades d'un site.
    Ex: la migration d7_book n'est crée que si le module est actif sur la v7 et la v8.
  2. il lance chaque migration crée, dans l'ordre des dépendances.
    Ex: les users doivent etre migrés avant la migration des nodes.

Commencer au début par les 1ers pas du process de la migration (composées de diverses migrations) avec l'option  --configure-only, puis voir les migrations possibles :

drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-root=http://mydrupal7site.com --configure-only
drush ms

Voir et executer les migrations

  • Pour ne lancer qu'une partie :    drush migrate-import {migration name}
  • lancer toute la liste :                 drush migrate-import --all

S'il manque des champs à l'édition du contenu, vérifier pour chaque type de contenu l'onglet "Manage Form Display" s'ils ne sont pas simplement cachés. Si c'est à l'affichage, vérifier "Manage Display".

 

A la fin

Note : Nulle part n'est mentionné que faire à la fin... Désinstaller les modules de migrations ?

 

Migrate-manifest

Pour grouper des migrations, via un fichier de conf YAML nommé manifest.yml (à la racine drupal 8), à l'aide du module https://www.drupal.org/project/migrate_manifest

drush config-list|grep migrate 

 

 


versions hébergeurs

gandi

PHP Version 5.4.45-0+deb7u1. Devrait bientot passer en 5.6.
MySQL version 5.5
sous Apache/2.4.16

plus sur le web

Utiles : https://www.mtech-llc.com/blog/luke-pekrul/guide-estimating-upgrade-drup... et https://www.mtech-llc.com/blog/edys-meza/categorizing-migrations-accordi...

non lus: https://assos.centrale-marseille.fr/ftorregrosa/blog/migration-de-drupal...

Aout 2016 : préparer upgrade    https://www.drupal.org/node/2350603
Nov 2016 : upgrade avec drush https://www.drupal.org/node/2350651

logo drush