Drupal 8: Migración drupal 7 drupal 8

Cabecera Drupal 8: Migración drupal 7 drupal 8

Drupal 8: Migración drupal 7 drupal 8

  • Autor: fjavimartin

  • Fecha de Creación: 17/09/2020

  • Categorías:

    • Drupal,
    • Drupal 7,
    • Drupal 8,
    • Migración

Nuestro artículo de hoy tendrá el objetivo de realizar la migración de contenidos desde drupal 7 a drupal 8. Para ello utilizaremos los módulos Migrate Upgrade, Migrate Plus y Migrate Tools junto la inestimable ayuda de drush.

El procedimiento será instalar unas determinadas herramientas en nuestro nuevo sitio drupal 8 y desde ahí conectarnos a la base de datos del sitio drupal 7 y desde ahí traernos los contenidos junto con la parte estática. Ni que decir tiene que, estén los sitios en la misma máquina o en distintas, desde nuestro drupal 8 tendremos que tener acceso tanto a la base de datos como a la parte estática de drupal 7.

1. Instalación drush

Drush es una herramienta de línea de comandos que nos permitirá interactuar con nuestro sitio drupal. Los diferentes módulos que instalemos podrán aportar sus propios comandos a drush de tal manera que podremos hacer un millón de cosas con un simple comando.

La instalación la realizaremos utilizando composer desde el directorio raíz de nuestro sitio drupal y no olvidéis ejecutarlo con un usuario que tenga permisos suficientes sobre todo el directorio:

$ composer require drush/drush

Una vez instalado y para ejecutarlo:

$ cd /var/www/instalaciondrupal
$ cd /vendor/bin
$ ./drush –version

2. Instalación Módulos Migrate Upgrade, Migrate Plus, Migrate Tools

Nuestra primera tarea será descargar y activar los siguientes módulos:

- Migrate Upgrade: https://www.drupal.org/project/migrate_upgrade

- Migrate Plus: https://www.drupal.org/project/migrate_plus

- Migrate Tools: https://www.drupal.org/project/migrate_tools

Una vez descargados solo tendremos que ir a la sección correspondiente y activarlos.

Si todo ha ido bien iremos a /var/www/instalaciondrupal/vendor/bin y ejecutaremos el siguiente comando:

$ ./drush

Entre los múltiples comandos disponibles se encontrará:

migrate:                                                                                                                                                    
   migrate:fields-source (mfs)                List the fields available for mapping in a source.                                                             
   migrate:import (mim)                       Perform one or more migration processes.                                                                       
   migrate:messages (mmsg)                    View any messages associated with a migration.                                                                 
   migrate:reset-status (mrs)                 Reset a active migration's status to idle.                                                                     
   migrate:rollback (mr)                      Rollback one or more migrations.                                                                               
   migrate:status (ms)                        List all migrations with current status.                                                                       
   migrate:stop (mst)                         Stop an active migration operation.                                                                            
   migrate:upgrade (mup)                      Perform one or more upgrade processes.                                                                         
   migrate:upgrade-rollback (mupr)            Rolls back and removes upgrade migrations.   

3. Migrando contenidos

Lo tenemos todo listo para empezar. Nos posicionaremos en ./vendor/bin de nuestro sitio drupal 8 y el primer paso será ejecutar el siguiente comando para comprar las migraciones generadas, que como veremos más abajo, será las que hay por defecto:

$ ./drush migrate:status
 ------------------- ----------------------------------- -------- ------- ---------- ------------- --------------- 
  Group               Migration ID                        Status   Total   Imported   Unprocessed   Last Imported  
 ------------------- ----------------------------------- -------- ------- ---------- ------------- --------------- 
  Default (default)   block_content_type                  Idle     1       0          1                            
  Default (default)   block_content_body_field            Idle     1       0          1                            
  Default (default)   block_content_entity_display        Idle     1       0          1                            
  Default (default)   block_content_entity_form_display   Idle     1       0          1                            
  Default (default)   user_picture_field                  Idle     1       0          1                            
  Default (default)   d6_upload_field                     Idle     1       0          1                            
 ------------------- ----------------------------------- -------- ------- ---------- ------------- --------------- 

Una vez ya estamos en marcha lanzaremos el siguiente el siguiente comando para simular la migración desde nuestro antiguo sitio donde los parámetros a utilizar serán los siguientes:

--legacy-db-url: Introduciremos la cadena de conexión contra nuestro sitio drupal 7.

--legacy-root: Introduciremos la ruta al sitio drupal 7.

$ ./drush migrate:upgrade --legacy-db-url=mysql://usuariobbdd:passbbdd@maquinabbdd/bbdddrupal7 --legacy-root=/var/www/sitiodrupal7 --simulate 
[notice] Upgrading d7_color
 [notice] Upgrading d7_dblog_settings
 [notice] Upgrading d7_file_private
 [notice] Upgrading d7_filter_format
 [notice] Upgrading d7_filter_settings
 [notice] Upgrading d7_global_theme_settings
 [notice] Upgrading d7_image_settings
 [notice] Upgrading d7_image_styles
 [notice] Upgrading d7_language_types
 [notice] Upgrading d7_node_settings
 [notice] Upgrading d7_search_page
 [notice] Upgrading d7_search_settings
 [notice] Upgrading d7_system_authorize
 [notice] Upgrading d7_system_cron
 [notice] Upgrading d7_system_date
 [notice] Upgrading d7_system_file
 [notice] Upgrading d7_system_mail
 [notice] Upgrading d7_system_performance
 [notice] Upgrading d7_theme_settings
 [notice] Upgrading d7_url_alias
 [notice] Upgrading d7_user_flood
 [notice] Upgrading d7_user_mail
 [notice] Upgrading file_settings
 [notice] Upgrading locale_settings
 [notice] Upgrading menu_settings
 [notice] Upgrading system_image
 [notice] Upgrading system_image_gd
 [notice] Upgrading system_logging
 [notice] Upgrading system_maintenance
 [notice] Upgrading system_rss
 [notice] Upgrading system_site
 [notice] Upgrading taxonomy_settings
 [notice] Upgrading text_settings
 [notice] Upgrading update_settings
 [notice] Upgrading block_content_type
 [notice] Upgrading block_content_body_field
 [notice] Upgrading d7_custom_block
 [notice] Upgrading d7_user_role
 [notice] Upgrading d7_block
 [notice] Upgrading block_content_entity_display
 [notice] Upgrading block_content_entity_form_display
 [notice] Upgrading d7_node_type
 [notice] Upgrading d7_comment_type
 [notice] Upgrading d7_comment_field
 [notice] Upgrading d7_comment_field_instance
 [notice] Upgrading d7_comment
 [notice] Upgrading d7_comment_entity_display
 [notice] Upgrading d7_comment_entity_form_display
 [notice] Upgrading d7_comment_entity_form_display_subject
 [notice] Upgrading d7_field
 [notice] Upgrading d7_taxonomy_vocabulary
 [notice] Upgrading d7_field_instance
 [notice] Upgrading d7_field_instance_widget_settings
 [notice] Upgrading d7_view_modes
 [notice] Upgrading d7_field_formatter_settings
 [notice] Upgrading d7_file
 [notice] Upgrading language
 [notice] Upgrading language_prefixes_and_domains
 [notice] Upgrading d7_language_content_settings
 [notice] Upgrading d7_language_negotiation_settings
 [notice] Upgrading default_language
 [notice] Upgrading d7_menu
 [notice] Upgrading d7_menu_links
 [notice] Upgrading d7_node_title_label
 [notice] Upgrading d7_shortcut_set
 [notice] Upgrading user_picture_field
 [notice] Upgrading user_picture_field_instance
 [notice] Upgrading user_picture_entity_display
 [notice] Upgrading user_picture_entity_form_display
 [notice] Upgrading d7_user
 [notice] Upgrading d7_shortcut_set_users
 [notice] Upgrading d7_shortcut
 ---------------------------------------- 
  Executed migrations                     
 ---------------------------------------- 
  d7_color                                
  d7_dblog_settings                       
  d7_file_private                         
  d7_filter_format                        
  d7_filter_settings                      
  d7_global_theme_settings                
  d7_image_settings                       
  d7_image_styles                         
  d7_language_types                       
  d7_node_settings                        
  d7_search_page                          
  d7_search_settings                      
  d7_system_authorize                     
  d7_system_cron                          
  d7_system_date                          
  d7_system_file                          
  d7_system_mail                          
  d7_system_performance                   
  d7_theme_settings                       
  d7_url_alias                            
  d7_user_flood                           
  d7_user_mail                            
  file_settings                           
  locale_settings                         
  menu_settings                           
  system_image                            
  system_image_gd                         
  system_logging                          
  system_maintenance                      
  system_rss                              
  system_site                             
  taxonomy_settings                       
  text_settings                           
  update_settings                         
  block_content_type                      
  block_content_body_field                
  d7_custom_block                         
  d7_user_role                            
  d7_block                                
  block_content_entity_display            
  block_content_entity_form_display       
  d7_node_type                            
  d7_comment_type                         
  d7_comment_field                        
  d7_comment_field_instance               
  d7_comment                              
  d7_comment_entity_display               
  d7_comment_entity_form_display          
  d7_comment_entity_form_display_subject  
  d7_field                                
  d7_taxonomy_vocabulary                  
  d7_field_instance                       
  d7_field_instance_widget_settings       
  d7_view_modes                           
  d7_field_formatter_settings             
  d7_file                                 
  language                                
  language_prefixes_and_domains           
  d7_language_content_settings            
  d7_language_negotiation_settings        
  default_language                        
  d7_menu                                 
  d7_menu_links                           
  d7_node_title_label                     
  d7_shortcut_set                         
  user_picture_field                      
  user_picture_field_instance             
  user_picture_entity_display             
  user_picture_entity_form_display        
  d7_user                                 
  d7_shortcut_set_users                   
  d7_shortcut                             
 ---------------------------------------- 

Una vez hemos simulado la migración y analizado los datos generados tenemos dos opciones: Podemos ejecutar el anterior comando eliminando –simulate y cambiándolo por –configure-only con el que generaremos las migraciones, pero todavía no se habrán ejecutado o por el contrario lanzar el comando simplemente eliminado la opción –simulate y dando por hecho que queremos ejecutar todas las migraciones posibles.

Para el caso en el que queramos solamente generar las migraciones el resultado será el siguiente:

$ ./drush migrate:upgrade --legacy-db-url=mysql://usuariobbdd:passbbdd@maquinabbdd/bbdddrupal7 --legacy-root=/var/www/sitiodrupal7 --configure-only
 ------------------------------------------------ 
  Generated migrations                            
 ------------------------------------------------ 
  upgrade_d7_color                                
  upgrade_d7_dblog_settings                       
  upgrade_d7_file_private                         
  upgrade_d7_filter_format                        
  upgrade_d7_filter_settings                      
  upgrade_d7_global_theme_settings                
  upgrade_d7_image_settings                       
  upgrade_d7_image_styles                         
  upgrade_d7_language_types                       
  upgrade_d7_node_settings                        
  upgrade_d7_search_page                          
  upgrade_d7_search_settings                      
  upgrade_d7_system_authorize                     
  upgrade_d7_system_cron                          
  upgrade_d7_system_date                          
  upgrade_d7_system_file                          
  upgrade_d7_system_mail                          
  upgrade_d7_system_performance                   
  upgrade_d7_theme_settings                       
  upgrade_d7_url_alias                            
  upgrade_d7_user_flood                           
  upgrade_d7_user_mail                            
  upgrade_file_settings                           
  upgrade_locale_settings                         
  upgrade_menu_settings                           
  upgrade_system_image                            
  upgrade_system_image_gd                         
  upgrade_system_logging                          
  upgrade_system_maintenance                      
  upgrade_system_rss                              
  upgrade_system_site                             
  upgrade_taxonomy_settings                       
  upgrade_text_settings                           
  upgrade_update_settings                         
  upgrade_block_content_type                      
  upgrade_block_content_body_field                
  upgrade_d7_custom_block                         
  upgrade_d7_user_role                            
  upgrade_d7_block                                
  upgrade_block_content_entity_display            
  upgrade_block_content_entity_form_display       
  upgrade_d7_node_type                            
  upgrade_d7_comment_type                         
  upgrade_d7_comment_field                        
  upgrade_d7_comment_field_instance               
  upgrade_d7_comment                              
  upgrade_d7_comment_entity_display               
  upgrade_d7_comment_entity_form_display          
  upgrade_d7_comment_entity_form_display_subject  
  upgrade_d7_field                                
  upgrade_d7_taxonomy_vocabulary                  
  upgrade_d7_field_instance                       
  upgrade_d7_field_instance_widget_settings       
  upgrade_d7_view_modes                           
  upgrade_d7_field_formatter_settings             
  upgrade_d7_file                                 
  upgrade_language                                
  upgrade_language_prefixes_and_domains           
  upgrade_d7_language_content_settings            
  upgrade_d7_language_negotiation_settings        
  upgrade_default_language                        
  upgrade_d7_menu                                 
  upgrade_d7_menu_links                           
  upgrade_d7_node_title_label                     
  upgrade_d7_shortcut_set                         
  upgrade_user_picture_field                      
  upgrade_user_picture_field_instance             
  upgrade_user_picture_entity_display             
  upgrade_user_picture_entity_form_display        
  upgrade_d7_user                                 
  upgrade_d7_shortcut_set_users                   
  upgrade_d7_shortcut                             
 ------------------------------------------------ 

Una vez generadas las migraciones, con migrate:status podremos consultar el estado de las migraciones generadas:

$ ./drush migrate:status
 ----------------------------------------- ------------------------------------------------ -------- ------- ---------- ------------- --------------- 
  Group                                     Migration ID                                     Status   Total   Imported   Unprocessed   Last Imported  
 ----------------------------------------- ------------------------------------------------ -------- ------- ---------- ------------- --------------- 
  Import from Drupal 7 (migrate_drupal_7)   upgrade_block_content_type                       Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_color                                 Idle     0       0          0                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_dblog_settings                        Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_file_private                          Idle     0       0          0                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_filter_settings                       Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_global_theme_settings                 Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_image_settings                        Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_image_styles                          Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_language_types                        Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_node_settings                         Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_search_page                           Idle     0       0          0                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_search_settings                       Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_system_authorize                      Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_system_cron                           Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_system_date                           Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_system_file                           Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_system_mail                           Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_system_performance                    Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_theme_settings                        Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_url_alias                             Idle     165     0          165                          
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_user_flood                            Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_user_mail                             Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_file_settings                            Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_locale_settings                          Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_menu_settings                            Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_system_image                             Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_system_image_gd                          Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_system_logging                           Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_system_maintenance                       Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_system_rss                               Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_system_site                              Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_taxonomy_settings                        Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_text_settings                            Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_update_settings                          Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_block_content_body_field                 Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_block_content_entity_display             Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_block_content_entity_form_display        Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_filter_format                         Idle     5       0          5                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_custom_block                          Idle     6       0          6                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_user_role                             Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_block                                 Idle     102     0          102                          
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_comment_type                          Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_comment                               Idle     0       0          0                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_node_type                             Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_comment_field                         Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_comment_field_instance                Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_comment_entity_display                Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_comment_entity_form_display           Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_comment_entity_form_display_subject   Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_field                                 Idle     6       0          6                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_taxonomy_vocabulary                   Idle     2       0          2                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_field_instance                        Idle     11      0          11                           
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_view_modes                            Idle     5       0          5                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_field_formatter_settings              Idle     24      0          24                           
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_field_instance_widget_settings        Idle     11      0          11                           
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_file                                  Idle     67      0          67                           
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_language_content_settings             Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_language                                 Idle     2       0          2                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_language_negotiation_settings         Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_menu                                  Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_menu_links                            Idle     9       0          9                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_node_title_label                      Idle     4       0          4                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_shortcut_set                          Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_shortcut                              Idle     2       0          2                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_default_language                         Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_user_picture_field                       Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_user_picture_field_instance              Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_user_picture_entity_display              Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_user_picture_entity_form_display         Idle     1       0          1                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_user                                  Idle     2       0          2                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_d7_shortcut_set_users                    Idle     0       0          0                            
  Import from Drupal 7 (migrate_drupal_7)   upgrade_language_prefixes_and_domains            Idle     2       0          2                            
                                                                                                                                                      
  Default (default)                         block_content_type                               Idle     1       0          1                            
  Default (default)                         block_content_body_field                         Idle     1       0          1                            
  Default (default)                         block_content_entity_display                     Idle     1       0          1                            
  Default (default)                         block_content_entity_form_display                Idle     1       0          1                            
  Default (default)                         user_picture_field                               Idle     1       0          1                            
  Default (default)                         d6_upload_field                                  Idle     1       0          1                            
 ----------------------------------------- ------------------------------------------------ -------- ------- ---------- ------------- --------------- 

Ahora podremos elegir entre ejecutar una a una solamente las que estimemos oportunas:

$ ./drush migrate:import <migration-name>

o podremos ejecutar todas las generadas con:

$ ./drush migrate:import -all

Para el caso en el que no queramos realizar ninguna simulación ni generar migraciones sin ejecutarlas sino hacer la migración en un solo paso:

$ ./drush migrate:upgrade --legacy-db-url=mysql://usuariobbdd:passbbdd@maquinabbdd/bbdddrupal7 --legacy-root=/var/www/sitiodrupal7

Solo nos quedará comprobar en la interface de administración que todo se ha migrado correctamente.

4. Conclusiones

Antes de utilizar el combo migrate_upgrade, migrate_plus y migrate_tools probé con las tradicionales migrate, migrate_drupal y migrate_ui………..algunas de ellas están abandonadas y ni que decir tiene que el resultado obtenido fue un fracaso.

Con las herramientas actualizadas podremos realizar una migración desde drupal 7 fácil, sencilla y nada traumática. Es muy interesante generar las migraciones sin ejecutarlas puesto que nos permitirá fácilmente elegir los elementos que necesitemos migrar y ya sabéis, drupal 7 y drupal 8 se parecen como un huevo a una castaña.

Espero que hayáis disfrutado de este artículo y no os olvidéis de ….

Disfrutar!!!!!!!

Referencias

https://www.drupal.org/project/migrate_upgrade

https://www.drupal.org/project/migrate_plus

https://www.drupal.org/project/migrate_tools

https://www.cloudways.com/blog/upgrade-drupal-7-to-drupal-8/

https://www.lullabot.com/articles/overview-migrating-drupal-sites-8

Todos los Derechos Reservados © 2016

Funciona con Drupal