Hitch yourwagon

29
O M &S S 7/26/13 Hitch Your Wagon! How to migrate legacy content into Drupal Monday, July 29, 13

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 of Hitch yourwagon

Page 1: Hitch yourwagon

O M &S S

7/26/13

Hitch Your Wagon!How to migrate legacy content into Drupal

Monday, July 29, 13

Page 2: Hitch yourwagon

Musketeers.me

Who are we?

• Sandy Smith (@SandyS1)

• Oscar Merida (@omerida)

Monday, July 29, 13

Page 3: Hitch yourwagon

Musketeers.me

It’s time to migrate

Monday, July 29, 13

Page 4: Hitch yourwagon

Musketeers.me

Now what?

Monday, July 29, 13

Page 5: Hitch yourwagon

Musketeers.me

Types of migrations

• App to CMS

• Hand-coded to CMS

• Between Drupal versions

Monday, July 29, 13

Page 6: Hitch yourwagon

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

Page 7: Hitch yourwagon

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

Page 8: Hitch yourwagon

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

Page 9: Hitch yourwagon

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

Page 10: Hitch yourwagon

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

Page 11: Hitch yourwagon

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

Page 12: Hitch yourwagon

Musketeers.me

Migration Strategies

• Automate as much as possible

• Use 3rd party solutions.

Monday, July 29, 13

Page 13: Hitch yourwagon

Musketeers.me

Migration Smells

• Inconsistent formatting

• No access to data store

• Legacy media formats

Monday, July 29, 13

Page 14: Hitch yourwagon

Musketeers.me

Old days

Monday, July 29, 13

Page 15: Hitch yourwagon

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

Page 16: Hitch yourwagon

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

Page 17: Hitch yourwagon

Musketeers.me

Modern Techniques

Monday, July 29, 13

Page 18: Hitch yourwagon

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

Page 19: Hitch yourwagon

Musketeers.me

Enterprise CMS

• Consistent role-based authoring workflow

• Centralized content repository

• Standardized presentations

• Less burdensome maintenance

Monday, July 29, 13

Page 20: Hitch yourwagon

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

Page 21: Hitch yourwagon

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

Page 22: Hitch yourwagon

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

Page 23: Hitch yourwagon

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

Page 24: Hitch yourwagon

Musketeers.me

Hand-Crafted,Artisanal Migration

• Manual copy from source.

• Source usually in various formats.

• Determine level of cleanup intended.

Monday, July 29, 13

Page 25: Hitch yourwagon

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

Page 26: Hitch yourwagon

Musketeers.me

Repeatable/Partial Migrations

• Allow for failed migrations

• Time doesn't stand still

• Risks

• New functionality on old site

Monday, July 29, 13

Page 27: Hitch yourwagon

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

Page 28: Hitch yourwagon

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