Back to case studies
Drupal MigrationCase StudyMedia & Publishing

How We Migrated Mommy Poppins from Drupal 7 to Drupal 10 — Without Losing a Single Subscription

A family media platform with 1,000+ active subscriptions, 200,000+ files, and a live Authorize.Net payment system needed a full platform upgrade. We rebuilt everything from the ground up — and kept the business running throughout.

By Matías Vessuri, Delivery Manager at weKnow Inc. Updated June 2026

Mommy Poppins Drupal 7 to Drupal 10 migration case study by weKnow

What is a Drupal 7 to Drupal 10 Migration?

A Drupal 7 to Drupal 10 migration is not an upgrade — it's a complete platform rebuild. Drupal 10 uses a fundamentally different architecture from Drupal 7: object-oriented PHP, modern configuration management, Symfony-based services, and a rewritten Commerce module. For a site with active subscriptions, payment integrations, and hundreds of thousands of files, this means migrating every data structure, rewriting every custom module from scratch, and replacing the commerce layer entirely — while the business keeps running.

Mommy Poppins is one of the leading family media platforms in the U.S., helping parents find things to do with their kids across major cities. Behind the editorial content sits a complex ecommerce operation: active subscriptions, recurring billing, card-on-file payment processing, and a content library built over years on Drupal 7. With Drupal 7's end of life and a commerce system that could no longer scale, Mommy Poppins needed a full migration to Drupal 10 — without interrupting billing cycles or losing subscriber data. weKnow was brought in to lead the entire effort.

1,000+
Active subscriptions preserved
200K+
Files migrated
25+
Custom modules rebuilt

The Challenge: A Live Ecommerce Platform That Couldn't Go Dark

Migrating a content site from Drupal 7 to Drupal 10 is complex. Migrating a platform with active subscriptions, card-on-file payment records, and recurring billing is a different problem entirely.

Commerce 1.x to 2.x is a paradigm shift.

Commerce 2.x for Drupal 10 is a complete rewrite — different order states, different line item handling, different data structures. There is no automated upgrade path. Every order, subscription, and payment association had to be transformed and validated individually.

Authorize.Net's API changed between versions.

The Drupal 7 integration used the legacy AIM API. Drupal 10 requires Accept.js — a different integration pattern. There was no contributed module support for the Accept.js UI, so the team had to build that layer from scratch.

1,000+ card-on-file records needed to survive the migration.

Authorize.Net stores payment profiles on their servers, but the Drupal side maps those profiles to users and subscriptions. Every mapping had to be preserved and validated — including expiration date handling — or subscribers would lose billing continuity.

200,000+ files exceeded Pantheon's directory limits.

Pantheon enforces a 100,000-file limit per directory. The existing Drupal 7 file structure didn't comply. Every file had to be reorganized into hash-based subfolders before the migration could run.

Business continuity was non-negotiable. Mommy Poppins had an active subscriber base. Billing cycles, renewal dates, and subscription states couldn't be disrupted.

The Solution: A Phased Migration with End-to-End Validation

weKnow approached the migration in structured phases, treating data integrity and payment continuity as the primary constraints throughout.

1. Platform Rebuild: Drupal 7 → Drupal 10

We rebuilt the entire platform on Drupal 10 with PHP 8.2 compatibility and full configuration management — establishing a clean codebase before any data was moved. This included a complete theme rebuild: 57 reusable SCSS components, a responsive mobile-first layout, and JavaScript modules for interactive features.

2. File Migration and Pantheon Compliance

Before migrating content, we restructured all 200,000+ files from the Drupal 7 flat-folder structure into hash-based subdirectories compliant with Pantheon's 100,000-file-per-directory limit — with a custom pipeline supporting batch processing, rollback capability, and progress logging.

3. Commerce System Rewrite: 1.x → 2.x

We rebuilt the entire commerce layer from Commerce 1.x to Commerce 2.x — transforming order states, line item structures, and validating all historical transaction data with full integrity checks.

4. Authorize.Net Payment Gateway Migration

We migrated from the legacy AIM API to Accept.js and built the Accept.js UI integration from scratch. All 1,000+ card-on-file records were migrated with proper expiration date handling, and every payment profile was validated against its associated user account and subscription.

5. Subscription and Recurring Billing

A custom module handles subscription data migration — transforming billing schedules, renewal dates, and states. A payment method auto-update system provides intelligent fallback logic when a payment fails at renewal, preserving continuity rather than canceling the subscription.

6. 25+ Custom Modules, Built to Drupal 10 Standards

All custom modules were rebuilt from scratch: service-based design with dependency injection, PSR-4 autoloading, plugin system, hooks, and event subscribers. Scope covers migration orchestration, commerce customizations, payment logic, GA4 commerce funnel tracking, subscription reporting, structured data/SEO schemas, webhooks, cookie consent, and more — with comprehensive logging and batch processing with rollback throughout.

Project Outcomes

Active subscriptions preserved with zero billing interruption

All 1,000+ subscriptions migrated with billing schedules, renewal dates, and payment associations intact. No subscriber lost their billing continuity.

200,000+ files migrated and reorganized

Every file moved to hash-based subdirectory structure for Pantheon compliance — with a custom pipeline that could batch, pause, and roll back at any stage.

Payments rebuilt end-to-end

Authorize.Net migrated from AIM to Accept.js, with a custom-built UI layer and a smart fallback system that handles payment failures at renewal without canceling subscriptions.

25+ custom modules rebuilt for Drupal 10

The entire custom codebase was rewritten to modern Drupal 10 standards — OOP architecture, dependency injection, full error handling, and comprehensive logging throughout.

Modern theme with component architecture

57 reusable SCSS components, responsive mobile-first design, and JavaScript module-based interactivity — a foundation built to last through ongoing development.

Before & After

BeforeAfter
Drupal 7 on legacy PHPDrupal 10 with PHP 8.2
Commerce 1.x with AIM payment gatewayCommerce 2.x with Accept.js integration
200,000+ files in flat folder structureHash-based subdirectories, Pantheon compliant
Manual migration risk for 1,000+ subscriptionsAutomated pipeline with batch processing & rollback
Custom modules on Drupal 7 hooks25+ OOP modules with dependency injection
Legacy theme57-component SCSS theme, mobile-first

Post-Launch and Ongoing Maintenance

Following the successful migration, weKnow continued as Mommy Poppins' development partner. Ongoing work includes regular security updates for Drupal Core and contributed modules, continuous performance optimization and bug resolution, page and section redesigns for improved user experience, SEO and analytics enhancements, and subscription system improvements.

The team is currently preparing for the Drupal 11 upgrade with compatibility fixes and code modernization already underway.

Why Nearshore Drupal Development for a Complex Migration?

Drupal 7 to Drupal 10 migrations involving active ecommerce, recurring billing, and custom payment integrations require engineers who have navigated that exact complexity before. weKnow's nearshore Drupal development team in Latin America brings that depth, combined with U.S. time zone alignment for real-time collaboration with client product and operations teams.

  • ✓ Deep Drupal migration experience — Commerce, subscriptions, and payment gateways
  • ✓ Top Drupal contributor in Latin America
  • ✓ U.S. time zone overlap — real-time collaboration
  • ✓ 15+ years delivering Drupal for U.S. clients
  • ✓ Senior engineers only

FAQs

A Drupal upgrade moves between minor versions within the same major release. A Drupal 7 to Drupal 10 migration is a full platform rebuild. Drupal 10 uses a completely different architecture: object-oriented PHP with Symfony components, a rewritten configuration management system, and a fundamentally different module API. Custom modules, themes, and integrations cannot be ported — they must be rebuilt. For sites with complex data structures like subscriptions or ecommerce, the migration also involves transforming the underlying data model.

MV

Matías Vessuri

Delivery Manager, weKnow Inc. — Leads web platform delivery for U.S. agency clients, with deep experience in Drupal migrations, ecommerce systems, and nearshore team coordination.

About weKnow →

Migrating from Drupal 7 — or Managing a Complex Drupal 10 Platform?

Our nearshore Drupal development team in Latin America specializes in complex migrations, ecommerce rebuilds, and long-term platform partnerships — in your time zone, with senior engineers from day one.

Talk to our team