Skip to main content
Home
GrN.dk

Main navigation

  • Articles
  • Cases
  • Services
  • Your Digital Project Manager
  • About Greg Nowak
  • Image Gallery
  • Contact
User account menu
  • Log in

Join my community / free newsletter — sign up here

Breadcrumb

  1. Home

Importing External Data into Drupal: A Practical Migration Plan

Illustrated infographic summarizing: Importing External Data into Drupal: A Practical Migration Plan

By Greg Nowak. Last reviewed 25 July 2026.

Importing a forum, spreadsheet, legacy CMS, or operational database into Drupal is not simply a matter of matching columns. It is a controlled data project involving content design, business rules, privacy decisions, testing, and launch planning.

Drupal provides a capable migration framework, but the software cannot decide which historical records remain useful, whether former users should receive accounts, or how old URLs should behave. Those decisions need to be made before development starts. A good migration therefore begins with the future site—not the structure of the system being retired.

Define what success means

Start with a short inventory covering content, users, taxonomy, files, comments, redirects, languages, permissions, and important relationships. Then classify each group as migrate, transform, archive, or discard. This prevents obsolete structures and low-value data from being reproduced merely because they exist.

Agree acceptance criteria at the same time. Record counts are useful, but they are not enough. Success might also require preserved author attribution, working media, valid internal links, correctly assigned categories, searchable content, and redirects for valuable legacy URLs.

Question Likely decision What to verify
Will editors maintain this content? Drupal content or custom entity Fields, workflow, ownership
Is it needed only for reference? Read-only archive Access, search, retention
Do former users need to sign in? User migration or attribution only Consent, status, authentication
Must files and comments remain connected? Separate dependent migrations Stable IDs and lookup results
Does the source change after extraction? Freeze window or incremental run Cut-off time and delta handling
A migration decision matrix for turning business requirements into an implementable Drupal scope.

Choose a source that can be inspected

CSV remains a sensible option for finite, reasonably flat datasets. It can be reviewed by owners, editors, and developers, while Drupal's maintained Migrate Source CSV module provides a source plugin for the core Migrate API. Every row should have a stable, unique source ID; row numbers are a poor substitute if files may be regenerated.

A direct SQL source is often better for large datasets or complex relationships. JSON, XML, or an API may suit repeatable feeds. If data needs regular two-way synchronisation, however, the requirement has moved beyond a one-off migration and should be designed as an integration.

Keep an untouched source extract, document its encoding and delimiters, and identify personal or confidential fields before sharing it with a delivery team. Clean disposable test copies rather than silently changing the only source of record.

Build small, ordered migrations

Drupal's Migrate API follows an extract-transform-load model expressed as source, process, and destination. The process stage can normalise values, provide defaults, skip unsuitable rows, and resolve references. Migrate Plus can represent migrations as configuration entities and group related migrations; Migrate Tools supplies management commands and a useful dependency view.

Do not begin with one enormous migration. Establish the destination model first, then implement one entity type at a time. A common order is taxonomy and users, followed by files or media, primary content, comments, and redirects. Declare dependencies where later records require IDs created by earlier migrations.

Start with awkward but representative samples: missing authors, duplicate titles, embedded markup, unusual characters, orphaned files, and deep relationships. A tidy sample proves very little.

Rehearse the command-line workflow

With a current, compatible Migrate Tools installation, the core working loop remains straightforward:

drush migrate:status
drush migrate:import migration_id --limit=50
drush migrate:messages migration_id
drush migrate:rollback migration_id

Use the exact commands supported by the versions locked in the project's Composer files. Run imports in an isolated development or staging environment first. Drupal's documentation also recommends considering modules that perform expensive work when entities are saved; search indexing, outbound notifications, webhooks, and other downstream processing should be deliberately controlled during rehearsals.

A rollback is part of migration development, not a complete disaster-recovery strategy. Maintain verified backups and a documented restore procedure before any production run.

Test meaning, not just totals

For each rehearsal, capture imported, skipped, failed, and warning counts. Inspect migration messages and compare selected records side by side with the source. Test relationships in both directions: open a migrated article and check its author, media, taxonomy, comments, and links; then inspect samples belonging to each author or category.

Ask editors to review content quality and operations staff to check permissions, workflows, search, and integrations. Agencies should provide a concise exception log explaining what was excluded and why. This turns apparent gaps into traceable decisions.

The production runbook should name the source freeze time, backup owner, command order, validation checks, redirect activation, cache and index work, sign-off owner, and fallback point. After launch, keep the source export, mappings, migration configuration, logs, and approval notes together.

When outside help is useful

A Drupal consultant or digital project manager becomes valuable when the project spans legacy databases, editorial judgement, privacy, agency coordination, and a fixed launch window. The useful contribution is not merely writing YAML: it is helping stakeholders settle the decisions that make the YAML dependable.

If you are replacing an old CMS, consolidating forum content, or bringing operational records into Drupal, talk to Greg about shaping the migration into a testable project with a clear scope and launch path.

Related on GrN.dk

  • Microsoft Access Database Resources: When to Fix, Split, or Replace Your System
  • AI disclosure rules belong in the CMS, not a spreadsheet
  • AI images need a media-library audit before they reach clients

Need help with this kind of work?

Plan your Drupal migration with Greg Get in touch with Greg.

Sources

  • Drupal Migrate API overview
  • Executing migrations
  • Migrate Tools
  • Migrate Source CSV
  • Migrate Plus
Last modified
2026-08-12

Tags

  • Drupal
  • Migrate
  • Data Import
  • Legacy Systems
  • CMS Migration
  • Log in to post comments

Review Greg on Google

Greg Nowak Google Reviews

 

Written recommendations from Trafik og Veje, Aarhus Municipality (2011) and AgroTech (2010) — read them on LinkedIn.

Illustrated infographic summarizing: Your AI workflow has logs. Can they explain one bad decision?
Your AI workflow has logs. Can they explain one bad decision?
2026-08-22

Logs can show that every service worked while leaving a bad AI decision unexplained. See how connected traces and careful redaction close the gap.

Illustrated infographic summarizing: Security Questionnaires Eat Into Selling Time—Let AI Find the Evidence
Security Questionnaires Eat Into Selling Time—Let AI Find the Evidence
2026-08-21

NIS 2 is generating more supplier questionnaires. A controlled AI assistant can find approved answers and sources—and route uncertain cases for review.

Illustrated infographic summarizing: Locked out of your Apple developer account? Fix it before October 1
Locked out of your Apple developer account? Fix it before October 1
2026-08-20

Apple's updated developer agreement must be accepted by October 1, 2026, and many small app owners cannot even log in. Here is where Apple's two-factor codes really go, and how to fix your access before the deadline.

Illustrated infographic summarizing: Cloudflare Workflows Now Charges by the Step—Price the Outcome
Cloudflare Workflows Now Charges by the Step—Price the Outcome
2026-08-20

Cloudflare Workflows now bills paid plans for steps and stored state. Here is how to track cost per completed outcome without weakening reliability.

Illustrated infographic summarizing: Google’s AI Search Toggle Is a Publishing Decision, Not an SEO Setting
Google’s AI Search Toggle Is a Publishing Decision, Not an SEO Setting
2026-08-19

Google’s AI Search toggle forces a commercial choice about visibility, attribution and content use. Here’s how to make that choice responsibly.

Illustrated infographic summarizing: From Supplier Invoice to Bookkeeping: AI with a Control Checkpoint
From Supplier Invoice to Bookkeeping: AI with a Control Checkpoint
2026-08-18

AI can reduce the work involved in processing supplier invoices, but reliable bookkeeping requires validation, duplicate checks, approval and a clear audit trail.

Illustrated infographic summarizing: Nginx 1.30 Changed the Upstream Defaults—Test Before You Upgrade
Nginx 1.30 Changed the Upstream Defaults—Test Before You Upgrade
2026-08-17

Nginx 1.30 defaults upstream proxying to HTTP/1.1 with keepalive enabled. Here is what to inspect, model and test before upgrading.

Illustrated infographic summarizing: OpenAI’s Assistants API Shuts Down in Ten Days. Is Your App Ready?
OpenAI’s Assistants API Shuts Down in Ten Days. Is Your App Ready?
2026-08-16

OpenAI’s Assistants API shuts down on August 26, 2026. Learn what to inventory, how to preserve state and how to cut over without breaking the product.

Illustrated infographic summarizing: WordPress 7.1 Forces the Editor Into an iframe—Test Your Custom Blocks
WordPress 7.1 Forces the Editor Into an iframe—Test Your Custom Blocks
2026-08-15

WordPress 7.1 removes the non-iframe editor fallback. Learn how to audit custom blocks, test real workflows and fix compatibility issues before launch.

Illustrated infographic summarizing: GitHub will stop sending jobs to stale self-hosted runners
GitHub will stop sending jobs to stale self-hosted runners
2026-08-14

GitHub starts enforcing runner versions on August 24, 2026. Audit and upgrade self-hosted runners before builds and deployments start stalling.

More articles

Built by AI — available for your business. The daily articles on this site are researched, written and illustrated by an autonomous AI pipeline. At nowa.dk I install the same kind of AI automation in businesses at fixed prices — site in Danish, English version here, and web/marketing agencies have a dedicated page.

RSS feed

Footer

  • All articles
  • Contact

GrN.dk — AI automation, web platforms, web optimization, data handling and logistics.

© 2026 GrN.dk · LinkedIn · Contact · AI automation in Danish: nowa.dk

Behind GrN.dk: Individual Entrepreneur Codecrafter · Tax ID 305669096 · Bakhtrioni St. 22, 0194 Tbilisi, Georgia · official business register