Migration avec le module migrate_upgrade

Installation et activation des modules Drush requis

On va installer les 2 modules suivants : migrate_upgrade, migrate_tools.

composer require drupal/migrate_upgrade composer require drupal/migrate_tools 

Puis activer les modules :

drush pm:enable migrate_upgrade migrate_tools -y 

Dans le fichier settings.php , il faut ajouter la définition de la base source.

Important : elle doit s'appeler migrate.

Par exemple :

$databases['migrate']['default'] = 
  array ( 'database' => 'dbdrupal7', 
  'username' => 'user_drupal7', 
  'password' => 'mdp_drupal7', 
  'prefix' => '', 
  'host' => 'localhost', 
  'port' => '3306', 
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql', 
  'driver' => 'mysql'
); 

Générer la migration Drupal 7 vers Drupal 8

Dans la version que j'ai installé, on peut utiliser migrate_upgrade pour générer les scripts de migration, qui seront lancés avec drush.

Prérequis

Attention : à cause d'une incompatibilité avec drush 10, cette fonction nécessite que l'on modifie le fichier vendor/drush/drush/includes/drush.inc pour ajouter la définition de drush_print :

function drush_print($message = '', $indent = 0, $handle = NULL, $newline = TRUE) {
  $msg = str_repeat(' ', $indent) . (string)$message;
  if ($newline) {
    $msg .= "\n";
  }
  if (($charset = 'UTF-8' ) && function_exists('iconv')) {
    $msg = iconv('UTF-8', $charset, $msg);
  }
  if (!$handle) {
    $handle = STDOUT;
  }

  fwrite($handle, $msg);

}

 

Sinon on a le message :

drush migrate-upgrade --legacy-db-key=migrate --configure-only [error] Error: Call to undefined function drush_get_option() in drush_print()

Lancer la commande avec le chemin vers le répertoire source "legacy", ce qui permet de migrer les fichiers également :

drush migrate-upgrade --legacy-db-key=migrate --legacy-root /var/www/drupal7/vincentl --migration-prefix=upg1_ --configure-only

On peut ensuite voir le résultat avec la commande drush migrate-status

Et on peut lancer la migration avec :

drush migrate:import upg1_d7_taxonomy_vocabulary
drush migrate:import upg1_d7_taxonomy_term_categorie
drush migrate:import upg1_d7_taxonomy_term_tags
drush migrate-import --group=migrate_drupal_7

Note : je lance d'abord les migrations de taxonomie pour que la génération des liens de menu se passe correctement. Comme dit précédemment, le processus est assez itératif et a demandé plusieurs essais avant de trouver les bons réglages.

Après cette étape, le contenu a été migré, ainsi que les types de contenu, les menus, etc.

Il reste à faire quelques mises au point et reprise de paramétrage sur les formats de texte (insertion du bouton media par exemple), ainsi que refaire le thème, et traiter le cas des images inline.

 

Catégorie
Tag

Ajouter un commentaire

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.