Why You Should Consider Drupal – Painless Migrations Drupal 10 Edition

Drupal is one of the world's most powerful CMS solutions, and it's not hard to see why. Its strength lies in a wide array of features, including high extensibility, API-driven flexibility, built-in web services, speed and performance, multilingual support, rich content authoring experiences, 3rd-party integrations. All these benefits are bolstered by Drupal being an open source, highly customizable, scalable, secure, and community-backed platform.

A particular standout feature that I'd like to focus on is its streamlined content migration process. Whether transferring data from an outdated database, another CMS, or an earlier version of Drupal, the platform simplifies the transition. The Migrate modules that now ship with Drupal core can facilitate a smooth conversion of legacy data into a format suitable for contemporary web applications. This significantly reduces the barriers to adopting Drupal.

In our experience, migrating a client’s Drupal 7 site to Drupal 8 (Editor note: This information still applies to Drupal 10) was notably efficient thanks to the inclusion of Migrate in Drupal's core. This feature not only made it feasible to transfer content and reformat data but also allowed us to quickly fill the new site with its' large archive of content. Additionally, the Migrate Plus and Migrate Tools modules enhanced our ability to oversee and manage the migration process, providing an admin interface that enables even those without technical expertise to run migration scripts effectively.

A screenshot of the migrations user interface.

A screenshot of the migrations user interface.

This feature came in handy when we had to solve a editorial workflow problem wherein our client wanted the ability to manually import content from an RSS feed.

Some context: In Drupal 7, Feeds is a powerful and popular solution for aggregating content from external sources. While the open source community is hard at work porting that module’s features to Drupal 8, we happily discovered that Migrate in Drupal 10 core can handle the task with surprising ease.

To give proper attribution, this post by Campbell Vertesi was the first inkling that we could use Migrate to do the heavy lifting. With just a few mapping of fields in a simple yaml file, our client was thrilled to see the admin UI that empowered them to import content from an external RSS feed. Once the configuration was exported, they could navigate to the migration interface, click a button, and all their content from the feed showed up as content on their site. It was a win for everyone.

A screenshot of the Drupal "execute migration" page

Here's the yaml file for the above migration:

id: rss_community
label: 'RSS feed for Community'
status: true
migration_tags:
- RSS
migration_group: rss

source:
plugin: url
data_fetcher_plugin: http
urls: 'https://rssfeedurl'
data_parser_plugin: simple_xml

item_selector: /rss/channel/item
fields:
-
name: guid
label: GUID
selector: guid
-
name: title
label: Title
selector: title
-
name: pub_date
label: 'Publication date'
selector: pubDate
-
name: link
label: 'Link'
selector: link
-
name: description
label: 'Description'
selector: description
-
name: tag
label: 'Tag'
selector: category

ids:
link:
type: string

destination:
plugin: entity:node
bundle: story

process:
title: title
'body/format':
plugin: default_value
default_value: full_html
'body/value': description
'body/summary': link
field_tags: category
created:
plugin: format_date
from_format: 'D, d M Y H:i:s O'
to_format: 'U'
source: pub_date
status:
plugin: default_value
default_value: 0
type:
plugin: default_value
default_value: story
uid:
plugin: default_value
default_value: 1

Ultimately choosing the right CMS for your application depends on a lot of factors. Here at Chromatic, Drupal remains one of our favorite enterprise solutions and it’s easier than ever to make the switch (or upgrade your existing Drupal site) with the help of Migrate in core.

Let us know why you love Drupal @ChromaticHQ!