Site Copy

Component ID

1689878

Component name

Site Copy

Component type

module

Maintenance status

Development status

Component security advisory coverage

not-covered

Component created

Component changed

Component body

Site Copy was created to expedite the process of copying an existing website's content into Drupal. The original version was a custom module developed by the University of Ottawa; this is a rewrite of that project into something more generic that we feel anyone looking to move a large website to Drupal will find useful.

The principle benefit Site Copy adds to your migration to Drupal is the ability to convert existing HTML pages to Drupal entities, regardless of the underlying technologies of your old site. We provide you with the ability to create a content inventory of your existing website; this is a list of all the pages that you'd like to migrate into Drupal. Once you are happy with your inventory and the settings for each page, you then run Site Copy to move all of the content from those pages into the appropriate Drupal entities. If you don't like what you see, simply rollback and adjust any settings you need to. Once you're done, you can export your content inventory so that you can run it on other Drupal installations.

All of this is done through a simple user interface. Through that interface, you can create the inventory, set up the mapping function, add extra processing elements and run the import. You only need to know PHP if you want to add a mapping function or a processing element.

Key Features

  • Create, update and import/export an inventory of all your migration content.
  • Decide how HTML content from your existing site is going to be mapped to Drupal fields using CSS3 selectors in QueryPath.
  • Create multiple entities from a single source HTML page (great for news feeds or archive pages).
  • Also downloads files that are linked to from your copied pages (with a filter so you don't get every file).
  • Rewrites all links within the copied pages to point to the appropriate Drupal node or downloaded file.
  • Easily add or remove extra processing functions from each page.
  • Supports proper linking of multi-lingual content.
  • If needed, write your own custom mapping or processor functions in PHP. Otherwise, don't touch PHP at all!
  • Extend the source information using the Fields API so that the information can be used in the mapping process.
  • Ability to execute the import through drush as well.

Site Copy vs Migrate

Migrate is a genius module. I love the very concept of it. But it is a developer's module that requires a decent chunk of PHP coding just to get some results into it. It also doesn't support multiple destination types for a single import, meaning you would have to create one import for each entity/bundle you wanted to import, each with it's own inventory, and then there would be multiple imports to execute; that is simply confusing to the front-end user. The end result is that Migrate is very focused on what it does best (one-to-one imports from XML feeds or other databases) but when importing from a static HTML site, it falls short.

I should mention that the original version of this module did use Migrate as a backbone, creating multiple imports for our purposes and running them sequentially. The overall feedback was poor (for the reasons stated above), so we've decided not to rely on it in the contributed version.

Status

We are just beginning this project, so stay tune for future updates! We hope to have many updates as we first develop the core workflow and then add features to it slowly.