Sector(s)
As a globally acclaimed technology consultation and digital transformation service provider, our client helps businesses transform operations and leverage technology to stay ahead in a competitive market. To maintain a strong web presence, our client needed an upgraded website. However, the large scale of the migration prevented our clients from moving forward.
Goals: Successfully migrate client website from Drupal 7 to Drupal 9
The main goal was to migrate the large-scale website from Drupal 7 to Drupal 9. This migration involved more than just content transfer; it required adapting to changes in data structures, Modules, and field types. With over 50,000 pages to migrate, we needed to evaluate multiple techniques to ensure a seamless transition.
Solutions
Before beginning, we considered multiple approaches, which included:
- Database-to-Database Migration
- Approach: Place the Drupal 7 database on the Drupal 9 server after every content change.
- Challenge: This method required manual intervention after each content update, making it cumbersome and error-prone.
- CSV Migration
- Approach: Export content to CSV files and import them into Drupal 9.
- Challenge: Regular updates to CSV files after content changes made this approach inefficient and difficult to manage.
- JSON Migration (Chosen Approach)
- Approach: Develop a JSON migration script to facilitate real-time data transfer from Drupal 7 to Drupal 9.
- Advantages: Dynamic, real-time migration reduced manual intervention and ensured data consistency.
Final Implementation
After considering various strategies like database-to-database and CSV-based migration, we chose a JSON migration approach for its real-time data migration capabilities and flexibility in handling complex scenarios. Our JSON migration approach utilized Drupalโs default plugins for entity migration, such as nodes, taxonomies, and users. We also developed custom plugins to address specific migration needs:
- Field Collection to Paragraphs Migration: We transformed Drupal 7's field collections into Drupal 9's paragraphs, which required structural changes. Custom scripts and plugins were created to support this transformation.
- Redirect Migration: Custom plugins were developed to manage redirects, as user and node IDs had changed between Drupal versions.
- Complex Content Handling:
A custom plugin modified description fields and managed file uploads referenced within them.
Another plugin enabled direct file uploads, simplifying the migration process.
Webform Migration
Migrating webforms and submissions was challenging due to the outdated webform module in Drupal 7, which was incompatible with migration scripts. To resolve this, we developed a custom module:
- Approach: The Drupal 7 database was connected to the Drupal 9 server via the settings.php file.
- Custom Module: This module migrated webforms, submissions, and associated files directly from Drupal 7 to Drupal 9.
Data Sanitization and Path Correction
We performed several data correction tasks during the migration:
- HTML Sanitization: Custom plugins sanitized HTML content to ensure compatibility with Drupal 9.
- Path Correction: Internal paths stored as absolute paths in Drupal 7 were converted to relative paths in Drupal 9.
Handling Large Data Volumes
With custom entities exceeding 100,000 records, managing large data volumes was crucial. We executed migration scripts in batches to maintain efficiency and prevent system overload.
Outcomes
The migration effort led to the following results:
- Successful migration of client website from Drupal 7 to Drupal 9
- Efficient data transfer with a JSON-based migration approach
- Custom plugins and modules developed to meet project-specific needs
- Effectively addressed migration challenges, including data structure changes, large data volumes, and outdated modules
- Despite the complexity, migration was completed within 6 months, a notable achievement compared to the typical 1-year timeline for similar migrations
- Achieved a seamless transition to Drupal 9 with minimal disruptions to ongoing operations
The client initially chose the Drupal platform for their official website to take advantage of its robust global community and advanced security features. With their website operating on Drupal 7, they wanted to upgrade to a newer version to benefit from the latest enhancements and functionalities. Our Drupal experts collaborated with them to facilitate a smooth migration from Drupal 7 to Drupal 9.
Technical Specifications
Drupal version: