hitch yourwagon
DESCRIPTION
Do you have a mess of static HTML pages? Are you maintaining piecemeal legacy applications from the days before you had a shiny CMS? In this session we'll look at migration approaches for bringing that content into Drupal. We'll share what we've learned migrating a decade's worth of pages, content across a dozen database, and audio and video content - almost 15k nodes at last count - into Drupal 7. This session will explore: Deciding between manual and automated approaches to moving content Planning and scheduling large migrations to maintain your sanity What workflows and review steps are needed to ensure success Using the Migrate and other contributed modules to move content into Drupal.TRANSCRIPT
O M &S S
7/26/13
Hitch Your Wagon!How to migrate legacy content into Drupal
Monday, July 29, 13
Musketeers.me
Who are we?
• Sandy Smith (@SandyS1)
• Oscar Merida (@omerida)
Monday, July 29, 13
Musketeers.me
It’s time to migrate
Monday, July 29, 13
Musketeers.me
Now what?
Monday, July 29, 13
Musketeers.me
Types of migrations
• App to CMS
• Hand-coded to CMS
• Between Drupal versions
Monday, July 29, 13
Musketeers.me
App to CMS
• Legacy applications
• Home-grown
• Translate the functionality not the form
• Leverage Drupal
• Standardize (helps with UX, too)
Monday, July 29, 13
Musketeers.me
Hand-coded to CMS
• Look at variability
• Automate well-structured & consistent HTML
• Few old sites are consistent
• Sounds like a job for Intern-person!
• Migration training opportunities
Monday, July 29, 13
Musketeers.me
Drupal versions
• Major versions are not backward compatible
• Contributed modules may be left behind, lag in updating.
• Content & media have to be migrated.
Monday, July 29, 13
Musketeers.me
Planning
• Map old to new (not 1:1)
• Decide what to leave behind
• Allow for exceptions & discovery
• Agile approach
• Review early & often w/ stakeholders
Monday, July 29, 13
Musketeers.me
Content Inventory
• Take stock of current site
• Identify needed functionality
• Views/modules/contexts
• Information Architecture
• Draft content types
• Sketch site map, navigation
Monday, July 29, 13
Musketeers.me
Prioritization
• Foundational content
• Cross-cutting taxonomies
• Media handling
• Content important to users
• Content important to stakeholders
• Group like content & functionality
Monday, July 29, 13
Musketeers.me
Migration Strategies
• Automate as much as possible
• Use 3rd party solutions.
Monday, July 29, 13
Musketeers.me
Migration Smells
• Inconsistent formatting
• No access to data store
• Legacy media formats
Monday, July 29, 13
Musketeers.me
Old days
Monday, July 29, 13
Musketeers.me
Old Case In Point
• Mambo (predecessor to Joomla!) to Drupal 5
• ~60,000 data objects (video, audio, text)
• siloed to interrelated
Monday, July 29, 13
Musketeers.me
Old solution
• Copy both sites to local machine
• Custom scripts to migrate
• Find interrelations
• Reverse engineer both Mambo and Drupal DB structures
• bootstrapped too slow
Monday, July 29, 13
Musketeers.me
Modern Techniques
Monday, July 29, 13
Musketeers.me
Case in point, an inhouse PHP site
• Static HTML content since 2003
• 12 databases
• 290+ Video files, 25G data
• 780+ Audio files, 8.5G data
• 3 external WordPress blogs
• Multiple video players, slideshow tools
Monday, July 29, 13
Musketeers.me
Enterprise CMS
• Consistent role-based authoring workflow
• Centralized content repository
• Standardized presentations
• Less burdensome maintenance
Monday, July 29, 13
Musketeers.me
Migrate module
• Multiple sources: DB or XML/CSV files
• Execute, rollback, update migrations
• Map legacy content using PHP classes
• Approve, cleanup content before saving
• Process content after it is saved
Monday, July 29, 13
Musketeers.me
Migrate Extras
• Extends migrate module capabilities
• Flag, GeoField, Media, OG, Rules
• Support moving to contrib modules
• Date, Email field, Entity Reference, Link
Monday, July 29, 13
Musketeers.me
WordPress Migrate
• Import content from WordPress
• Can import media content
• Uses WXR export format from WP
• Leverages Migrate API
Monday, July 29, 13
Musketeers.me
Migrate_d2d
• Migrate from previous versions to Drupal 7
• Uses the Migrate API
• Provides a UI for mapping legacy content to D7
Monday, July 29, 13
Musketeers.me
Hand-Crafted,Artisanal Migration
• Manual copy from source.
• Source usually in various formats.
• Determine level of cleanup intended.
Monday, July 29, 13
Musketeers.me
Cleanup
• Automated
• Update links, media.
• Tag content based on keywords
• Hand-correcting
• Save for last for content imported via Migrate module.
Monday, July 29, 13
Musketeers.me
Repeatable/Partial Migrations
• Allow for failed migrations
• Time doesn't stand still
• Risks
• New functionality on old site
Monday, July 29, 13
Musketeers.me
Resources
• Migrate http://drupal.org/project/migrate
• Migrate Extras http://drupal.org/project/migrate
• WordPress Migratehttp://drupal.org/project/wordpress_migrate
• Drupal-to-Drupal data migrationhttp://drupal.org/project/migrate_d2d
• Move my Content! Florid Drupal Camphttp://bit.ly/18Dnt1a
Monday, July 29, 13
Musketeers.me
Thank You!• Musketeers.me owns php[architect]:
• Magazine, books, training, conferences
• 25% Subscription discount!
• AZ42-W1JJ-D57Z
• PHP 5.5 Summit: Sept. 17
• http://summits.phparch.com/summits/php55/
• Questions?
Monday, July 29, 13
Musketeers.me
Credits
• http://www.flickr.com/photos/nihonbunka/
• http://www.flickr.com/photos/emjayphotos/
• http://www.flickr.com/photos/houseofcards/
• http://www.flickr.com/photos/teflon/
• http://loc.gov
Monday, July 29, 13