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
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
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