Migrer des données de n'importe quelle version de Drupal vers Drupal 7.x

Pour un projet récent, j'ai dû migrer des données d'un Drupal 5 vers un Drupal 7. Voici comment j'ai procédé pour que ce soit le plus facile possible. L'essentiel est de :

  • Exporter les données en CSV depuis l'instance originale à l'aide de Views et d'un plugin de sortie en CSV.
  • Les réimporter dans l'instance en 7.x en utilisant Feeds.

Les détails :

  • Côté 5.x :
    • D'abord, faire une copie locale du site en 5.x.
    • Installer views_bonus module.
    • Activer views_bonus_export. Cela permet d'exporter une vue en CSV.
    • Créer les vues d'exportation. Par example une vue qui liste tous les nodes de type "blog", avec tous les champs nécessaires.
    • Hacker cette instance à volonté. Cette instance ne servant qu'à la migration, peu importe si le code est massacré, donnez-vous en à coeur joie.
    • Exporter chaque vue en fichier CSV.
  • Côté 7.x :
    • Installer feeds. Vous aurez peut être aussi besoin de modules comme feeds_comment_processor, feeds_profile2_processor. L'issue queue de feeds est pleine d'informations précieuses et de modules bricolés mais très utiles.
    • Installer feeds_tamper. Il permet de modifier les données avant leur importation par feeds.
    • Vous aurez peut être besoin d'ajuster un peu le code du module feeds pour vos besoins.
    • Créez des feeds importers pour chaque type d'entité à importer et ajustez les fields mappings.
    • Il m'a aussi fallu coder quelques modules d'import pour certaines données comme les flags. La fonction PHP fgetcsv() est la bienvenue pour parser les fichiers CSV.
    • Importer les CSV.
    • Et voilà !

Il faut un peu tester les choses pour obtenir un processus d'import / export fonctionnel, mais une fois en place, les choses se passent très bien.

On peut utiliser cette technique avec n'importe quelle version de Drupal ou même d'une autre source tant qu'il est possible d'exporter au format CSV.