Migrating from Drupal 7 to Drupal 10 Using the Migration Suite
Lakshman Kumar Pandey
2+ Exits | 12+ years in Tech | Drupal & BigCommerce Specialist | AI-Enhanced Migrations & Integrations
Upgrading your Drupal site from version 7 to 10 can be a complex process, but with Drupal's powerful Migration Suite, the process can be made much more manageable. This guide will walk you through the steps to migrate a Drupal 7 site to Drupal 10, complete with detailed code examples.
Why Migrate to Drupal 10?
Drupal 10 brings numerous improvements, including enhanced performance
Prerequisites
Before you begin, ensure you have the following:
Step-by-Step Migration Guide
First, ensure your Drupal 10 environment is set up. Install the necessary migration modules using Composer:
composer require drupal/migrate_tools drupal/migrate_plus drupal/migrate_upgrade
Enable the modules:
drush en migrate_tools migrate_plus migrate_upgrade
2. Prepare Your Drupal 7 Site
Ensure your Drupal 7 site is accessible and that you have database credentials ready. You may need to enable additional modules on your Drupal 7 site to facilitate the migration.
3. Generate the Migration Configuration
Use Drush to generate the migration configuration files. Run the following command on your Drupal 10 site:
drush migrate-upgrade --legacy-db-url=mysql://username:password@localhost/dbname --legacy-root=https://example.com --configure-only
Replace username, password, localhost, dbname, and https://example.com with your actual Drupal 7 database credentials and site URL.
This command will generate a set of migration configuration files in your config/sync directory.
4. Review and Customize Migration Configurations
Review the generated configuration files in config/sync. You may need to customize these files to suit your specific migration needs.
Example of a Node Migration Configuration
migrate_plus.migration.migrate_nodes.yml:
id: migrate_nodes
label: 'Migrate Nodes'
migration_group: migrate_drupal_7
source:
plugin: d7_node
node_type: 'article'
process:
type:
plugin: default_value
default_value: 'article'
title: title
body/value: body
body/format:
plugin: static_map
source: body_format
map:
1: basic_html
created: created
changed: changed
uid: uid
destination:
plugin: 'entity:node'
default_bundle: article
migration_dependencies:
required: { }
optional: { }
5. Run the Migration
After reviewing and customizing the migration configurations, run the migration using Drush:
领英推荐
drush migrate-import --all
This command will execute all configured migrations. You can also run specific migrations by specifying their IDs:
drush migrate-import migrate_nodes
Once the migration is complete, verify that all content has been migrated correctly. Check nodes, users, taxonomy terms, and any other entities to ensure they appear as expected on your Drupal 10 site.
7. Handle Custom Entities and Fields
If you have custom entities or fields in your Drupal 7 site, you may need to create custom migration plugins
Create a Custom Module: Create a directory for your custom module, e.g., modules/custom/custom_migration.
custom_migration.info.yml:
name: 'Custom Migration'
type: module
description: 'Custom migrations for Drupal 7 to Drupal 10.'
core_version_requirement: ^10
package: Custom
dependencies:
- migrate_tools
- migrate_plus
- migrate_upgrade
Define the Custom Migration Plugin:
src/Plugin/migrate/source/CustomField.php:
<?php
namespace Drupal\custom_migration\Plugin\migrate\source;
use Drupal\migrate\Plugin\migrate\source\SqlBase;
/**
* Source plugin for custom field migration.
*
* @MigrateSource(
* id = "custom_field"
* )
*/
class CustomField extends SqlBase {
/**
* {@inheritdoc}
*/
public function query() {
$query = $this->select('field_data_custom_field', 'c')
->fields('c', ['entity_id', 'custom_field_value']);
return $query;
}
/**
* {@inheritdoc}
*/
public function fields() {
return [
'entity_id' => $this->t('Entity ID'),
'custom_field_value' => $this->t('Custom Field Value'),
];
}
/**
* {@inheritdoc}
*/
public function getIds() {
return [
'entity_id' => [
'type' => 'integer',
'alias' => 'c',
],
];
}
}
Define the Migration Configuration:
migrate_plus.migration.custom_field_migration.yml:
id: custom_field_migration
label: 'Custom Field Migration'
migration_group: migrate_drupal_7
source:
plugin: custom_field
process:
field_custom_field:
plugin: get
source: custom_field_value
destination:
plugin: 'entity:node'
default_bundle: article
migration_dependencies:
required: { }
optional: { }
Run the custom migration:
drush migrate-import custom_field_migration
Conclusion
Migrating from Drupal 7 to Drupal 10 using the Migration Suite is a detailed process, but it provides a structured approach to ensure data integrity and consistency. By following these steps and leveraging the power of Drush and custom migration plugins, you can efficiently upgrade your site to take advantage of Drupal 10's features.
Feel free to reach out if you have any questions or need further assistance with your Drupal migration projects.
By sharing this comprehensive guide, you can help others in the LinkedIn community understand the migration process and leverage Drupal's capabilities to their fullest potential.