Along with his vast experience in developing Drupal based portals associated to education, non-profit, medical systems, etc sectors, he has been authored a few books like Drupal 7 business solutions, Drupal webservices, and Drupal 6 performance tips. He loves training newbies and Drupalers and has infact created a 14-hours video tutorial series.
'Migrating to Drupal 7' has been especially written to provide the readers / developers all the necessary information and guidelines essential to speedup with Google Drive, a web based application that allows us to store, edit and share files online possibly on ‘Cloud’ using the internet. The book consists of a number of essential and good-to-know topics book, organized in a ladder format, ie. Starts with the easy and necessary concepts and then heading ahead with much more complexity for the ease of the readers / developers to understand the basis concept first and then proceed ahead with the complex ones.
The author has explained each and every point in such a way that it can grab interest of the readers to major extent, irrespective of whether he/she is a newbie to development or an experienced professional. The best part of this book is that post each chapter, a quiz with a few questions relevant to the chapter has been introduced so that readers can summarize whatever they have learn till then.
To justify my statements, I would like to pen-down my views topic wise.
Preparing Drupal for Content Migration:
This chapter details on how to prepare your Drupal website to import content and data from a legacy Content Management System (aka, CMS) or other site. In addition to this, performance aspects, core Drupal and necessary contributed modules, and setup of Feeds and Feeds Tamper modules along with the other modules including Migrate module have been covered in details.
Author has highlighted a couple of assumptions ie. Drupal has been setup using standard method and Drupal 7.15 has been considered in the book as it was the latest version when the book was written. Following are the main points, author has focused on so as to achieve migration of content successfully.
Check Drupal site’s status reports and PHP configuration – Author insists the developers to check whether your Drupal site is properly functional by looking into its status reports and then check for the PHP configuration to ensure they are appropriate. The detailed guidelines on how to validate and correct the status report and PHP configuration for the migration activity.
Drupal core modules – Author has insisted the readers to verify and ensure, drupal core modules like Field, Field SQL Storage, Field UI, Node, Taxonomy etc are enabled.
Required contributed modules – Ensure that Feeds module and its dependencies are installed correctly along with the proper installation of other contributed modules.
The administration Menu module – Author recommends the readers to install Administration menu module, using which it is easy and convenient for the developers to navigate. This topic covers the detailed and stepwise explanation along with the relevant screenshots on how to uninstall drupal core’s toolbar module and to proceed ahead installing the contributed module, ie. Administration menu module.
Chaos Tool Suite (CTools) – It’s necessary to install CTool module due to its dependency with required modules like Feeds, Feeds Tamper and Views. Author describes the way to install CTools module efficiently in this topic.
Views – Author explains, though views module has not been extensively used in the book, it is good to know how to install it as it is required by Feeds news module. Alike the previous topic, author has explained the way to install correctly in this topic.
Job Scheduler – It is one of the required modules used by Feeds and Feeds Tamper modules and is extensively used during the migration process. Author has covered how to install the job scheduler module along with sharing a couple of tips-and-tricks.
Features – It is a drupal module which enables you package and save your drupal configurations including content types and feeds importers into your code. Author explains, features is one of the necessary modules required by feeds news hooks and plays a vital role during migration.
Installing Feeds Modules – As discussed earlier, Feeds module plays a vital role during migration. So, it is important to install and configure appropriately. In this topic, author describes how to install feeds module correctly, demonstrating with the relevant screengrabs and explaining each and every component involved during its installation.
Installing Feeds Tamper module – Author describes stepwise so as how to install feeds tamper module, demonstrating with appropriate screenshots for concrete and better understanding to the readers.
By the end of this chapter, author has stated few important points that needs to be kept in mind to ensure successful migration of content.
Starting a Migration Path:
This chapter focuses on how to create your content type and fields in Drupal for the contents which need to be imported.
By now, the all the contents from the source website have been exported into CSV file wherein columns and rows are well organized and ready to get imported into Drupal website. However, before the CSV can be imported to Drupal website, a container needs to be setup so that the imported and migrated contents can be held. To achieve so, author has discussed the following actions in the form of topics that needs to be carried out before actual import takes place.
Creating a content type – Author explains that a content type needs to be created. This complete process have been presented clearly with an example CSV containing 24 columns and 1000 rows have been considered to import in Drupal website, demonstrating with their relevant screenshots. Moreover, a couple of tips-and-tricks have been shared with the reader to have better understanding of the process along with some instructions relevant to the format of column header title.
Planning a map of the fields in your content type to the data in your CSV – Once the content type has been created, it needs to be populated with custom fields which need to be equivalent to the columns in CSV in terms of the field types. Author has explained the process in a crystal clear manner, explaining each and every term, it’s usage, and reasons for doing so, making the concept more interactive and reader friendly. In addition to the above, author has also detailed about the additional contributed modules like Node Reference, Location and Link along with their individual components which needs to be used to create the associated fields in the demonstrated example, and the process to install these modules.
Adding fields to your content-type based on the mapping – Upon analyzing the CSV, now it’s time to create the custom fields with the relevant field types like Location and text fields; location field along with it’s associated components (eg. Location name, street location, city, state/province, postal code, country, phone, fax, etc.); integer fields; term references (which needs a vocabulary to be created); and Node references (which requires references module to be installed).
Even the minute level information have been shared by the readers, demonstrating each and every step of the process using the screenshots, making the topic more appealing and reader friendly.
Configuring field settings and validation – Author has explained how to configure and validate the field settings. For instance; changing the display formatter on the node reference field:
Migrating images and files – Author has shared the easy-to-implement and convenient guidelines so as how to migrate the images and/or files successfully, using filtered text in the body field of the content type, and the path to the directory where the images and files are being stored in the current website. Moreover, author also warns the readers that this method of migrating images and files is not fool proof. Thus, it is optional to use this method, instead manual migration can be tried and used.
Creating a Feeds Importer:
This chapter explains how to create and configure your feeds importer using Feeds module. Chapter consists of topics like how to create a feeds importer; exporting, cloning and deleting feeds importers; importers basic settings; importer fetcher; Parsers; Processors; how to map your importers; how to add source and target and use GUID for mapping; and running the import process and testing it.
How to create a feeds importer – The topic deals with how to create a feeds importer. Author has discussed the concepts of node import, user import, feed, and OPML import and the process using straight forward instructions and guidelines.
Exporting, cloning and deleting importers – This topic focuses on how to export, clone and delete your importers using simple ways, especially using Feeds module instead of editing or modifying node importers. Author has explained the concept and the process stepwise, using relevant screencasts, making the topic more understandable to the readers.
Importers basic settings – This topic covers the concepts of how to have your importers basic settings so that you can achieve the import tasks in various ways like background process; scheduling the import process on periodic basis, using drupal cron.
Author has explained each and every component associated to importer settings like basic settings, fetcher, parser, and processor in a clear crystal manner and descriptive way using relevant screengrabs for better and firm understanding to the readers.
Mapping your importers – This topic deals with how to map the associated CSV file’s columns of content and data with the custom fields we have added to our content type using Feeds module. Author has shared the detailed guidelines of the process along with explaining each and every component like Source, Target, Unique Target, etc in details.
Adding a source and target – This topic explains how to add a source and target to your importer. Alike previous topics, author has shared the guidelines in a descriptive manner using relevant screenshots.
Running an Import process – This topic focuses on how to run an import process. Author has described the process demonstrating it with an example in a neat and tidy manner using screencasts along with covering the concept and process of how to delete the imports, with the output similar to the following.
In addition to the above, author has also provided a couple of tips-and-tricks, especially for the developers working on Mac.
The feeds importer created and configured in the previous chapter is being extended by adding tampers to the mapping and is achieved using Feeds Tampers module, has been detailed in this chapter.
In this chapter, author has explained how to tweak your importer to allow for special handling during the import process by using a module called Feeds Tamper; and covered important topics like how to use Feeds Tamper module, how to add a tamper plugin to imported content, Running a feed import update, and testing the import to confirm successful working of tamper.
Using the Feeds Tamper module – This topic focuses on two methods on how to get into Feeds Tamper configuration for your importer. Firstly, you can load your Feeds Importers screen and click on the Tamper link; secondly, use edit link to edit your importer and then map your link. Author has explained both the methods in a nice way, using screenshots.
Adding a Tamper Plugin – This topic deals in how to add a tamper plugin to your importer to rectify issues in the content which needs to be imported. Author has demonstrated the concept with an example wherein all the cases of city column of CSV should be converted to initial caps so as to avoid hinges during data import. Demonstration is a very elaborative, using simple steps for easy and better understanding to the readers.
Running the import with the tamper plugin – This topic deals in how to update the previously imported nodes by re-running the import process using tamper plugin. Author has explained the process in a very clean and tidy manner using screenshots for better understanding to the readers.
Testing the tamper plugin results – This topic details in how to test and confirm whether the import run in the previous topic has been successful or not. To ensure, author has demonstrated this using an example wherein “Headquarters City” needs to be updated from FARGO to Fargo.
Maintaining a Migration Path:
This chapter details on how to manage and maintain the migration path, using feeds, every now and then. Author explains; the website needs additional content migration in the future time-to-time, which is very important to handle, maintaining the workflow and migration process in place.
Author has covered topics like Updating Imports, Cloning importers, Running an import update, and confirming whether the update worked or not.
Updating imports – This topic covers the concepts of how and why to update imports along with sharing additional information on the concept for better understanding to the readers.
Cloning importers – This topic covers the concepts of how to build a new importer, specific to a particular task, for instance, importer handling just the updated data. Alike previous topics, author has explained the process stepwise using associated screenshots and a couple of tips-and-tricks for ease and better understanding to the readers.
Running the import update – This topic deals in how to run the updated importer so as to update the imported nodes. Alike previous topics, author has explained the process stepwise in a clean manner using screenshots.
Packaging Content Types and Feeds Importers:
This chapter details on how to use the powerful Features module to save your feeds configurations as a code and store them in a module(s) format, which enables it’s re-usability on other versions of the site or other Drupal sites as well.
It covers topics like installing features module, how to create a feature for your content type and for your feeds importer, overriding features, reviewing feature overrides and reverting the feature code, and sharing a features module and implementing it on a different Drupal site.
Features module – This topic deals in how to install and configure features module. Author has also shared additional valuable information, eg Features keep track on the tweaks you make to your content type and feeds importer.
Building a content type feature – This topic deals in how to set one of the content types as a feature so that the features module can start keeping track on its configuration and the changes/modifications. How to create your custom feature module, has also been discussed and elaborated. Author has explained the concept and the process stepwise using screenshots and related code snippets for better understanding to the readers.
Overriding your feature – This topic covers how features module detects the modification and tweaking made in the content type (for instance, a field is added or existing field is tweaked) with the help of Diff module (which author suggests to install prior to the actual step), and override the older feature with the update one. Alike previous topics, author has explained the concept and detailed process stepwise using associated screenshots and additional helpful information.
Reviewing the override – This topic deals in how to review the overrides using Diff module, how to recreate the feature, and finally reverting features. Author has explained the process demonstrating with an example using screenshots and a few tips-and-tricks in a tidy manner to provide firm understanding to the readers.
The feeds importer feature – This topic deals in how to create a feature to package up your feed importer configuration for your content type (where you have added feature in the previous topics). Alike other topics, author has explained the concept and demonstrated the process stepwise, using associated screenshots and necessary instructions.
Migrating your feature to another Drupal site – This topic deals in how to reuse your feature (created earlier) in some other Drupal based site which uses Features module.
Migration Using the Migrate Module:
This chapter demonstrates the use of Migrate module to migrate content from other sources into our site. Author explains, migrate module is a large scale API that provides a framework for you to build your own migration process using its functionality.
Author has covered topics like how to install Migrate module; Configure the Migrate Example module; Running a migration process using Migrate to create nodes; and how to create terms and users using Migrate.
Installing Migrate – This topic deals in how to install migrate module, which comes with migrate examples; helping developers to try out the migration prior to the actual migration process. Author has demonstrated the process stepwise using various associated screenshots for better understanding to the readers.
Configuring Migrate – This topic covers how to configure your migrate module and migrate example feature to get the most effective outcome, which involves migration mapping along with other important concepts. Author has explained the concepts and process in crystal clear manner, demonstrating with the relevant screengrabs.
Running the migration - This topic covers how to run your migration process using Migrate module, once the mapping is confirmed to be in place. Alike the previous topics, author has explained the complete process in simple terms for better understanding to the readers, along with extensive usage of screenshots demonstrating each and every minute step.
Migrating Content from Earlier Drupal Versions:
This chapter mainly focuses on how to export content from a Drupal 6 site and import into your Drupal 7 site in order to migrate and upgrade your existing system. Along with migration of contents, author has also covered how to upgrade your Drupal 6 system to Drupal 7.
Chapter covers vital and important topics like Upgrading Drupal 6 to 7; Usage of Update Status and Upgrade Status helper modules; Migrating Drupal 6 fields to Drupal 7; Running the upgrade; and Migrating specific modules including FileField and ImageField.
Upgrading Drupal 6 to 7 – This topic covers important concepts and process of upgrading your Drupal 6 to Drupal 7. Author demonstrates the process, taking the same example forward for the readers to be in same pace and track. The complete process has been explained stepwise and in a very simple way, with utmost usage of screenshots along with sharing a couple of tips-and-tricks which are recommended to take care during the upgrade process.
Upgrade Status and Upgrade Assist – This topic covers usage of helper modules like Upgrade status and upgrade assist to overcome the challenges you might face during the upgrade process which is usually complex in nature. Author states, upgrade status modules helps us in providing the inventory of the core and contrib modules whether exists in Drupal 7 or not along with helpful information about the stability of the modules incase of its availability. Upgrade Assist module shares valuable information like Upgrade CheckList, helping the developers to track throughout the process.
Author has explained the process of installing, configuring and administer these two helper modules nicely, using steps and related screengrabs. In addition to this, author has also recommended upgrade your Drupal 6 site to it’s latest version prior to step forward upgrading into Drupal 7 for smooth upgrade process.
Upgrading Drupal core – This topic focuses on how to upgrade your Drupal 6 core to Drupal 7 smoothly. Alike previous topics, author has demonstrated the process stepwise using associated screengrabs for better understanding and visibility to the readers.
Migrating Drupal 6 CCK fields and content to Drupal 7 – This topic explains how to migrate your Drupal 6 CCK fields and content to Drupal 7 using Content Migrate module. Author has discussed the process in a simple manner, along with sharing tips-and-tricks to handle the issues coming up due to their dependencies.
Upgrading your contributed modules – This topic covers how to upgrade your contributed modules and migrate the associated files to Drupal 7. Author has considered upgrading Node Reference and Link modules due to the fact that these modules have been used in the example demonstrated and still haven’t been upgraded. The process have been again explained in a simple way with utmost usage of screengrabs for better visibility to the readers.
Migrating from WordPress:
This chapter covers the process of extracting data and content from your WordPress blogging application and migrate them into your Drupal site, using WordPress Migrate module. Chapter covers topics like Migrating content from WordPress to Drupal; Installing and configuring the WordPress Migrate module; and finally how to play with WordPress Migrate module.
Migrating content from WordPress to Drupal – This topic covers the process on how to migrate your content from WordPress site to Drupal site using WordPress Migrate and Migrate modules.
Installing and configuring WordPress Migrate – This topic deals in how to install and configure Drupal’s WordPress Migrate module along with its dependent modules. Alike previous topics, author as explained the process in a simple way, using screengrabs and steps to follow along with valuable instructions and points which needs to be considered during the activity.
WordPress Migrate Configuration – This topic mainly focuses on how to export (from WordPress site in the form of WXR file) and import them to Drupal 7 site for content migration. Configuration are done for automatic conversion and mapping of WordPress pages, posts, text format, comment format, WordPress tags to the vocabulary are done with basic pages, blog entry, Full HTML, Filtered HTML, and WordPress import respectively. Each and every concept and process have been explained nicely using screenshots and valuable information as adds-on for better and concrete understanding to the readers.
Reading the book, I interpret that it is Easy to read, valuable tips-and-tricks have been shared, impressive Layout has been included and the best part is that the topics have been demonstrated by appropriate examples, demonstrating them with relevant screenshots, dos-and-donts, making the book more readable and understandable to the readers. Moreover, a list of related book references have been provided for the readers to explore further on Drupal 7, how to use Drush with Drupal, and Drupal 7 Module development .
'Migrating to Drupal 7' is a must for developers who wish to play around in upgrading their Drupal (any version) to Drupal 7 and also migrating their Drupal and Non-Drupal sites to Drupal 7 setup in easy, convenient, and risk free manner.
I volunteered to review this book and received a free copy from Packt Publishing.
This review has been cross-posted at GoodReads.com