Moving to Drupal

motherlamentationInternet and Web Development

Dec 7, 2013 (3 years and 9 months ago)

80 views

August 28, 2010
Moving to Drupal
- Turning a Legacy Site into a CMS Site
Presented by Mark W. Jarrell
FleetThought.com, Austin Peay State University
Drupal Username: attheshow
http://drupal.org/user/249768
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
August 28, 2010
Moving to Drupal
- Turning a Legacy Site into a CMS Site
Presented by Mark W. Jarrell
FleetThought.com, Austin Peay State University
Drupal Username: attheshow
http://drupal.org/user/249768
http
://fleetthought.com