SlideShare a Scribd company logo
Moving to Drupal - Turning a Legacy Site into a CMS Site
Presented by Mark W. Jarrell                     Drupal Username: attheshow
FleetThought.com, Austin Peay State University   http://drupal.org/user/249768

August 28, 2010                                              http://fleetthought.com
What are we talking about?
✤   Two possible scenarios:

    ✤   Converting from a static non-
        database driven site

    ✤   Converting from a legacy site
        that lives in a database

✤   How to get this all moved into
    Drupal

✤   List of applications, modules,
    code, and a few tips and tricks to
    help you make the transition
    smooth
Example Scenario

✤   Legacy site w/ news stories in an Access database

✤   We want to automatically migrate these in as Drupal nodes and not pull
    them all over manually

✤   URLs look like this:
    http://www.apsu.edu/News/show_news.asp?id=4271

✤   New URLs should look like this:
    http://www.apsu.edu/news/apsu-professor-visits-israel-
    counterterrorism-fellowship
Example Scenario



✤   Also... we want users to still be able to type in the old URLs and get to
    what they're looking for. Or, if they have any of the old addresses
    bookmarked, those bookmarks should continue to work for them after the
    transition.
Why do we need to think about
this?

✤   Migration piece - you can save a
    ton of time and effort especially if
    your content is already in a
    database

✤   Redirects can make your users’
    lives easier

✤   An easier transition makes your
    project appear more successful to
    internal users.
Step 1 - Get it into MySQL

✤   Weapon of Choice: MySQL
    Migration Toolkit

✤   Download: http://
    dev.mysql.com/downloads/gui-
    tools/5.0.html

✤   Overview of using it w/
    screenshots to convert from an
    Oracle database: http://
    theopensourcery.com/
    mymigrate.htm
Step 2 - Let Drupal Know About
the New Data


✤   settings.php

✤   add in the
    new database
    connection
    string
Step 3 - Grab Your Modules

✤   Views
    http://drupal.org/project/views

✤   Schema
    http://drupal.org/project/
    schema

✤   Table Wizard
    http://drupal.org/project/tw

✤   Migrate & Migrate Extras (CCK)
    http://drupal.org/project/
    migrate
Step 4 - Pathauto (optional)


✤   If you’re using Pathauto...
    http://drupal.org/project/
    pathauto

✤   Decide how you want your URL
    paths to look early in the process

✤   Migrate module will create new
    nodes using your Pathauto
    configuration
Step 5 - Migrate the Content

✤   A) Use Table Wizard to “expose” the
    legacy table
    Makes it available to Views and Migrate
    modules.

✤   B) Add a Migrate “content set” that maps
    which data goes into which fields

✤   C) Make sure things are migrating
    correctly by doing trial runs

✤   D) May need to build a custom module to
    assist.

✤   E) Final migration
Step 5 - Migrate the Content
(con’t.)



✤   DEMO
Step 5 - Migrate the Content
(con’t.)
✤   Tips and Tricks w/ Migrate

    ✤   you can also migrate things like comments and users

    ✤   it keeps track of which legacy row became which Drupal node in a table named
        “migrate_map_[contentset]”

    ✤   It also takes a bit of extra effort and practice, but you can also make content sets
        dependent upon one another.
        Example: Import your users from the old database, then the blog posts written
        by each user, then the comments by all users that were made upon the blog
        posts by the users (maintaining all of the connections between these different
        items).

    ✤   show custom module w/ hook being used
Step 6 - Set Up Redirects
in .htaccess



✤   This file is included w/ Drupal by default, but it’s really more
    related to Apache server than to Drupal itself.

✤   Gives you lots of power to manipulate how users access your site.
Step 6 - Set Up Redirects
in .htaccess (con’t.)

✤   If doing any manual migration (we did a ton of this on the
    apsu.edu site), you can set up any general redirects in .htaccess

✤   Example:

✤   RewriteRule ^general(.*)$ /about-apsu$1 [NC,R=301,L]

✤   Redirects from:
    http://www.apsu.edu/general/mission
    to:
    http://www.apsu.edu/about-apsu/mission
Step 6 - Set Up Redirects
in .htaccess (con’t.)

✤   You can also chop off legacy file extensions in .htaccess

✤   Example:

✤   RewriteCond %{REQUEST_URI} ^(.*).aspx$
    RewriteRule ^.*$ %1 [R=301,L]

✤   Redirects from:
    http://www.apsu.edu/physics/facstaff.aspx
    to:
    http://www.apsu.edu/physics/facstaff
Step 6 - Set Up Redirects
in .htaccess (con’t.)
✤   For nodes imported via Migrate module, you can redirect in .htaccess from the
    legacy URL to the new URL

✤   Example:

✤   RewriteCond %{QUERY_STRING} ^.*id=([0-9]+).*$
    RewriteRule ^News/show_news.asp.*$ /migrate/xlat/node/%1? [NC,R=301,L]

✤   Redirects from:
    http://www.apsu.edu/News/show_news.asp?id=4271
    to:
    http://www.apsu.edu/news/apsu-professor-visits-israel-counterterrorism-
    fellowship

✤   Note: You must leave Migrate module enabled on your site for this process to
    work.
Step 6 - Set Up Redirects
in .htaccess (con’t.)


✤   Tips on redirects in .htaccess

    ✤   Look at the Apache manual page for help.
        http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

    ✤   Don’t make any changes to .htaccess without first testing it on a
        development version of the site. This is powerful stuff.
Further Reading Links


✤   Apache Manual Page on Rewrites
    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

✤   DrupalCon D.C. Session - “Migration - Not Just For the Birds”
    http://dc2009.drupalcon.org/session/migration-not-just-birds

✤   Lullabot Article - Migration Module
    http://www.lullabot.com/articles/drupal-data-imports-migrate-and-
    table-wizard
Moving to Drupal - Turning a Legacy Site into a CMS Site
Presented by Mark W. Jarrell                     Drupal Username: attheshow
FleetThought.com, Austin Peay State University   http://drupal.org/user/249768

August 28, 2010                                              http://fleetthought.com

More Related Content

PDF
Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...
PPT
Taking your module from Drupal 6 to Drupal 7
PPTX
007. Redux middlewares
PDF
Connecting To MS SQL Server With Mulesoft (Stored Procedure To Insert data)
PDF
Speed up Drupal development with Drush
PDF
Coalmarch Duke presentation Scholars@duke
PPT
Starting with Reactjs
PDF
Building a Single Page Application with VueJS
Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...
Taking your module from Drupal 6 to Drupal 7
007. Redux middlewares
Connecting To MS SQL Server With Mulesoft (Stored Procedure To Insert data)
Speed up Drupal development with Drush
Coalmarch Duke presentation Scholars@duke
Starting with Reactjs
Building a Single Page Application with VueJS

What's hot (11)

PDF
JS Chicago Meetup 2/23/16 - Redux & Routes
PDF
Anypoint Batch Processing and Polling Scope With Mulesoft
PPTX
Database change management with Liquibase
PPTX
How to use bean as datasource in database connector
PPTX
Артем Сильчук - Respond in 60ms. Extremal optimization with reinventing a wheel
PDF
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
PPTX
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
PPT
LiquiBase
PDF
Intro to Vue
PDF
Yet Another Drupal Development/Deployment Presentation
PDF
Nuxt.JS Introdruction
JS Chicago Meetup 2/23/16 - Redux & Routes
Anypoint Batch Processing and Polling Scope With Mulesoft
Database change management with Liquibase
How to use bean as datasource in database connector
Артем Сильчук - Respond in 60ms. Extremal optimization with reinventing a wheel
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
LiquiBase
Intro to Vue
Yet Another Drupal Development/Deployment Presentation
Nuxt.JS Introdruction
Ad

Viewers also liked (20)

PDF
Mythbusters - State Budget
PPT
My Tundra Project Martin
PPT
Violence In Workplace
KEY
Web 2.0 = Accessibility 2.0?
PPT
Cold Tundra Project Watts
PPT
Intown Community Assistance
PPT
Itb Chap 10
PDF
Innerwealth Living Inspired Summary
PPT
Test Driven Development
PPT
Presentasjon Bekas
PPT
Untitled 2
PDF
Attracting And Retaining Excellent E Es
PPTX
Vaccine talk
PPT
The Tundra Noeth
PDF
Talent Connect Live Stream Behind the Scenes
PPT
Arctic And Alpine Stinson
PPT
Ckv[1]
PPT
India Presentation
PPT
Lesson 9 2
PDF
Falcon Stor Enables Virtual SANs For V Mware
Mythbusters - State Budget
My Tundra Project Martin
Violence In Workplace
Web 2.0 = Accessibility 2.0?
Cold Tundra Project Watts
Intown Community Assistance
Itb Chap 10
Innerwealth Living Inspired Summary
Test Driven Development
Presentasjon Bekas
Untitled 2
Attracting And Retaining Excellent E Es
Vaccine talk
The Tundra Noeth
Talent Connect Live Stream Behind the Scenes
Arctic And Alpine Stinson
Ckv[1]
India Presentation
Lesson 9 2
Falcon Stor Enables Virtual SANs For V Mware
Ad

Similar to Moving to Drupal (20)

PPTX
Drupalcampchicago2010.rachel.datamigration.
PPTX
Drupal campchicago2010.rachel.datamigration
PPTX
Migration from Legacy CMS to Drupal
PPTX
The web is made of links. Don't break them.
PDF
Migrate for Site Builders from MidCamp 2016
PPTX
The long and the short of migrating to Drupal
PPT
Dcm migration
PDF
Migrate
PDF
Migrate all the things!
PDF
Migrating data into Drupal using the migrate module
PDF
SearchLeeds 2018 - Steve Chambers - Stickyeyes - How not to F**K up a Migration
ODP
Migration to Drupal
PDF
My Website Is Old Enough To Vote - Kris Howard
PPTX
Best Practices and Tips on Migrating a Legacy-Based CMS to Drupal
PDF
Drupal migrate-june2015
DOC
AIESEC CMS - User guide
PDF
Intro to Drupal Migrate for Site Builders
PDF
My Website Can Vote - The Challenges of Maintaining a 20-year-old Website
PPTX
Drupal content-migration
PDF
How to migrate your blog from Wordpress to HubSpot
Drupalcampchicago2010.rachel.datamigration.
Drupal campchicago2010.rachel.datamigration
Migration from Legacy CMS to Drupal
The web is made of links. Don't break them.
Migrate for Site Builders from MidCamp 2016
The long and the short of migrating to Drupal
Dcm migration
Migrate
Migrate all the things!
Migrating data into Drupal using the migrate module
SearchLeeds 2018 - Steve Chambers - Stickyeyes - How not to F**K up a Migration
Migration to Drupal
My Website Is Old Enough To Vote - Kris Howard
Best Practices and Tips on Migrating a Legacy-Based CMS to Drupal
Drupal migrate-june2015
AIESEC CMS - User guide
Intro to Drupal Migrate for Site Builders
My Website Can Vote - The Challenges of Maintaining a 20-year-old Website
Drupal content-migration
How to migrate your blog from Wordpress to HubSpot

More from Mark Jarrell (8)

PDF
One Man Band - Drupal Lightning Talks
KEY
Building a Mobile Drupal Site
PDF
APSU Drupal Training
PDF
APSU Drupal Training Personal
PDF
APSU Drupal Training - Personal Sites
KEY
Building University Websites with the Drupal Content Management System
PDF
Form Alterations
PDF
Theming Your Views
One Man Band - Drupal Lightning Talks
Building a Mobile Drupal Site
APSU Drupal Training
APSU Drupal Training Personal
APSU Drupal Training - Personal Sites
Building University Websites with the Drupal Content Management System
Form Alterations
Theming Your Views

Moving to Drupal

  • 1. Moving to Drupal - Turning a Legacy Site into a CMS Site Presented by Mark W. Jarrell Drupal Username: attheshow FleetThought.com, Austin Peay State University http://drupal.org/user/249768 August 28, 2010 http://fleetthought.com
  • 2. What are we talking about? ✤ Two possible scenarios: ✤ Converting from a static non- database driven site ✤ Converting from a legacy site that lives in a database ✤ How to get this all moved into Drupal ✤ List of applications, modules, code, and a few tips and tricks to help you make the transition smooth
  • 3. Example Scenario ✤ Legacy site w/ news stories in an Access database ✤ We want to automatically migrate these in as Drupal nodes and not pull them all over manually ✤ URLs look like this: http://www.apsu.edu/News/show_news.asp?id=4271 ✤ New URLs should look like this: http://www.apsu.edu/news/apsu-professor-visits-israel- counterterrorism-fellowship
  • 4. Example Scenario ✤ Also... we want users to still be able to type in the old URLs and get to what they're looking for. Or, if they have any of the old addresses bookmarked, those bookmarks should continue to work for them after the transition.
  • 5. Why do we need to think about this? ✤ Migration piece - you can save a ton of time and effort especially if your content is already in a database ✤ Redirects can make your users’ lives easier ✤ An easier transition makes your project appear more successful to internal users.
  • 6. Step 1 - Get it into MySQL ✤ Weapon of Choice: MySQL Migration Toolkit ✤ Download: http:// dev.mysql.com/downloads/gui- tools/5.0.html ✤ Overview of using it w/ screenshots to convert from an Oracle database: http:// theopensourcery.com/ mymigrate.htm
  • 7. Step 2 - Let Drupal Know About the New Data ✤ settings.php ✤ add in the new database connection string
  • 8. Step 3 - Grab Your Modules ✤ Views http://drupal.org/project/views ✤ Schema http://drupal.org/project/ schema ✤ Table Wizard http://drupal.org/project/tw ✤ Migrate & Migrate Extras (CCK) http://drupal.org/project/ migrate
  • 9. Step 4 - Pathauto (optional) ✤ If you’re using Pathauto... http://drupal.org/project/ pathauto ✤ Decide how you want your URL paths to look early in the process ✤ Migrate module will create new nodes using your Pathauto configuration
  • 10. Step 5 - Migrate the Content ✤ A) Use Table Wizard to “expose” the legacy table Makes it available to Views and Migrate modules. ✤ B) Add a Migrate “content set” that maps which data goes into which fields ✤ C) Make sure things are migrating correctly by doing trial runs ✤ D) May need to build a custom module to assist. ✤ E) Final migration
  • 11. Step 5 - Migrate the Content (con’t.) ✤ DEMO
  • 12. Step 5 - Migrate the Content (con’t.) ✤ Tips and Tricks w/ Migrate ✤ you can also migrate things like comments and users ✤ it keeps track of which legacy row became which Drupal node in a table named “migrate_map_[contentset]” ✤ It also takes a bit of extra effort and practice, but you can also make content sets dependent upon one another. Example: Import your users from the old database, then the blog posts written by each user, then the comments by all users that were made upon the blog posts by the users (maintaining all of the connections between these different items). ✤ show custom module w/ hook being used
  • 13. Step 6 - Set Up Redirects in .htaccess ✤ This file is included w/ Drupal by default, but it’s really more related to Apache server than to Drupal itself. ✤ Gives you lots of power to manipulate how users access your site.
  • 14. Step 6 - Set Up Redirects in .htaccess (con’t.) ✤ If doing any manual migration (we did a ton of this on the apsu.edu site), you can set up any general redirects in .htaccess ✤ Example: ✤ RewriteRule ^general(.*)$ /about-apsu$1 [NC,R=301,L] ✤ Redirects from: http://www.apsu.edu/general/mission to: http://www.apsu.edu/about-apsu/mission
  • 15. Step 6 - Set Up Redirects in .htaccess (con’t.) ✤ You can also chop off legacy file extensions in .htaccess ✤ Example: ✤ RewriteCond %{REQUEST_URI} ^(.*).aspx$ RewriteRule ^.*$ %1 [R=301,L] ✤ Redirects from: http://www.apsu.edu/physics/facstaff.aspx to: http://www.apsu.edu/physics/facstaff
  • 16. Step 6 - Set Up Redirects in .htaccess (con’t.) ✤ For nodes imported via Migrate module, you can redirect in .htaccess from the legacy URL to the new URL ✤ Example: ✤ RewriteCond %{QUERY_STRING} ^.*id=([0-9]+).*$ RewriteRule ^News/show_news.asp.*$ /migrate/xlat/node/%1? [NC,R=301,L] ✤ Redirects from: http://www.apsu.edu/News/show_news.asp?id=4271 to: http://www.apsu.edu/news/apsu-professor-visits-israel-counterterrorism- fellowship ✤ Note: You must leave Migrate module enabled on your site for this process to work.
  • 17. Step 6 - Set Up Redirects in .htaccess (con’t.) ✤ Tips on redirects in .htaccess ✤ Look at the Apache manual page for help. http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html ✤ Don’t make any changes to .htaccess without first testing it on a development version of the site. This is powerful stuff.
  • 18. Further Reading Links ✤ Apache Manual Page on Rewrites http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html ✤ DrupalCon D.C. Session - “Migration - Not Just For the Birds” http://dc2009.drupalcon.org/session/migration-not-just-birds ✤ Lullabot Article - Migration Module http://www.lullabot.com/articles/drupal-data-imports-migrate-and- table-wizard
  • 19. Moving to Drupal - Turning a Legacy Site into a CMS Site Presented by Mark W. Jarrell Drupal Username: attheshow FleetThought.com, Austin Peay State University http://drupal.org/user/249768 August 28, 2010 http://fleetthought.com