Main Content
Speech bubble with JSON, PHP, XML, API, CSV, and SQL

Demystifying Drupal Migrations

Never before has the topic of Drupal content migration loomed so large. With Drupal 8’s end of life date less than five weeks away (Nov. 2, 2021), and Drupal 7 facing end of life about 13 months later, on Nov. 28, 2022, a very slim minority of Drupal site owners are not needing to think about migration right now. Latest stats indicate that a mere 5.8 percent of Drupal site owners have migrated to Drupal 9. 

The rest of the lot (28.5 percent) is facing an imminent and relatively straightforward migration from Drupal 8 to to 9, with a whopping 61.3 percent still on Drupal 7 and needing to get serious ASAP about the inherently more complex migration from Drupal 7 to 9. 

Here at Promet Source, we’ve sharpened our focus on a pulling together Drupal community resources in an effort to help fast track the migrations. 

Fact is though, for so many Drupal site owners who are making decisions concerning migrations, Drupal developers sometimes seem to be talking a different language -- and that may well have an impact on the widespread procrastination.

Our objective with this post is to cover the topic of Drupal migration for the world outside of our Drupalsphere -- answering some of the questions we hear a lot and deconstructing the topic for the vast swath of site owners for for whom acronyms such as PHP, SQL, and JSON are not household words. 

Let’s begin with some basics. 

What do "content types," "taxonomies," and "views" refer to?

Drupal Speak

What it really means

Content types


Content encompasses both text and images displayed on a website -- including photos, logos, icons, and other graphic items. 

A content type, sometimes referred to an an Entity Bundle, refers to a grouping of elements used for a specific purpose with fields for various types of information. A blog post is an example of a content type. A grouping of fields hold the data for each blog post that is created and displayed on the website. A Promet Source blog post, provides an an example of a content type with a field for an image, the author’s name, the date of publication, keywords, related posts, and styling specifications for headers and fonts.  

Migrated data needs to be classified and imported for each content type. The more content types, the more display views and migration intricacies


A.K.A. Control Vocabularies

Classification Terms

Taxonomy provides a way to classify or organize content on a Drupal site and group related content into categories. Taxonomy added to a News Item, for example, might include Taxonomy Terms of local or international items. This would allow Views to sort and create a list view of related local news items or international news items.

Taxonomy added to Staff Member content item might include Taxonomy Terms that denote departments or functions within an organization, enabling the creation of a view according to department or function.  


A View is a display of content items created by the Drupal Views module. It can be a list, grid, table, a full page or a block on a website.  Using the Promet Source site as an example, clicking “Insights” on the main horizontal navigation lists the nine most recent blog posts. This is a View that includes basic information about each post. 

There are multiple options for views such as news items that simply display titles, or with teaser content, as a carousel display, or even as an RSS feed to export items to an external source. The benefit of creating Views of content is that edits just need to be made once and are automatically updated everywhere that a View of that content is displayed. 



What are the typical website components?



Hero (featured Image)

Slider - like a hero but with changing images and messaging

Top Level Menu

Utility Links

Main Content

Left, Right sidebars


Call outs

CTA (Call to Action)


  • Blog
  • Article
  • Services
  • Products

Landing Page

  • A page that serve as either an entry point to the website other than the home page OR the top most level page for a category. Products can be a landing page that distinguishes between product types a provides links to filter options.  




What are the Acronyms that Factor into Content Migration?


JSON is short for JavaScript Object Notation, and refers to a file format for organized, accessible data storage. Its filename extension for written programming code is .json.

For a deep dive how JSON works in a Drupal migration setting, a detailed example is available on, that covers migration to Drupal from an external source system when the source data in JSON format. This example uses the URL source plugin with HTTP basic authentication provided by the Migrate Plus module.


XML stands for Extensible Markup Language, which defines a set of rules for encoding documents in a format that can be read by both humans and machines. For insight into the applicability of XML in a Drupal content migration setting, check out this Step-by-Step of Importing XML with Feeds Migrate. 



API is short for Application Programming Interface, which is a software go-between that allows two applications to talk to each other. 

The Drupal Migrate API facilitates the migration of data from a source system to Drupal. Migration is an Extract, Transform, Load (ETL) process. In the Drupal Migrate API:

  • the extract phase is called source,
  • the transform phase is called process, and 
  • the load phase is called destination. 



PHP, which stands for Hypertext Preprocessor,  is a programming language for back-end development, which is the language that Drupal is written in.  An open source scripting language that can be embedded into HTML, PHP requirements for current release versions of Drupal 9 can be found (



CSV refers to a comma-separated values file. CSV text files have a specific format which allows data to be saved in a table structured format. The contributed Migrate Source CSV module provides a source plugin for utilizing .csv files as migration sources.



SQL stands for stands Structured Query Language. It is used to communicate with a database, and is the standard language for relational database management systems. This documentation page provides a step-by-step walkthrough concerning the migration of data from an SQL source. 


Considerations to kick off the migration

Migration to Drupal 9 is inevitable. It’s also an opportunity to begin realizing the benefits of a far superior CMS with a vast array of new features. At Promet Source, we're advocating a mindset shift away from a Drupal 9 migration as a "have to," and towards embracing the opportunity as a "get to," because it is

Migration from Drupal 7 to Drupal 9 is a process, but we have never known of a client who didn’t wholeheartedly agree that every speck of the effort was worth it. Migration is an opportunity to:

  • Rethink goals and your approach to your web presence;
  • Clean house of content that is superfluous, outdated, or no longer aligned with your brand;
  • Reset your content model;
  • Ensure a superior end-user experience;
  • Highlight new features and services;
  • Ensure alignment with your current brand strategy, and
  • A lot more.

Here at Promet Source, we are passionate about partnering with clients to streamline their migration to the latest version of Drupal, while adding value that opens up new possibilities throughout the process.

Questions about a Drupal migration? Ready to get started? Let us know how we can help!