Narrative Magazine

Narrative Magazine is an online magazine initiated by a US nonprofit dedicated to the promotion of the literary arts on the web. The site hosts an online library of writing by established authors and also promotes new writers by publishing their articles

The Engagment

Narrative Magazine approached Zyxware in 2008 with a request for support for their website www.narrativemagazine.org. One of the first tasks that were entrusted to Zyxware was to set up an online gift store for donors. The gifts included books and merchandise. Each gift was accompanied by a description. Zyxware set up the store on Ubercart with complex features. The feature set was limited because it was felt that since an upgrade/migration from Drupal 5 was impending, it would not be wise to implement the entire feature list in Drupal 5. It would have resulted in additional effort when the migration happened. The gifts were a novel approach to establish a connection with the donors of Narrative Magazine. It offered the donors something tangible to remind them of their association with Narrative Magazine. As an online store catering to a worldwide audience, the payment solutions had to be carefully set up so that transactions in multiple currencies with multiple payment channels (credit cards, net banking), etc could be done smoothly. Another feature we built for the site was a mass mailing site to communicate with their donors and coordinate with their partners. This enabled them to continuously keep all relevant stakeholders informed and engaged with the progress and activities of Narrative Magazine.

This was only a precursor to the major work of migrating the entire site to a higher version of Drupal. Migrations are generally done to ensure that a larger feature set is available to work with and because of the Drupal Community's policy of withdrawing support to older versions. In this context, one of the key questions was whether to migrate to Drupal 6 or wait till Drupal 7 was out and migrate it to Drupal 7. After consultation with Narrative Magazine on their plans ahead, we suggested that it would be wiser to wait for Drupal 7 and migrate to Drupal 7. That would have meant significant cost savings for Narrative Magazine in the long run. Narrative Magazine was happy to go with our suggestion. Once Drupal 7 was released and the stable version was out, we quickly got together to initiate the migration. We took a detailed look at the site. We found that there were about 25,000 lines of custom code, numerous custom modules, and a database that was to be moved from Drupal 5 to Drupal 7. We opted to migrate most of the customs lines of code manually. But for many of the modules and databases, we had to strategize so that the migration was seamless. We had to ensure zero downtime, that the features in Drupal 5 were functional in Drupal 7 as well and that no data was lost and the data was migrated to Drupal 7 in a useable form.

A major task in the migration included migrating the Drupal e-Commerce data of transactions in past to Uber Cart in Drupal 7. The decision to move from Drupal e-Commerce to Ubercart was prompted by the better maintenance support that was available for Ubercart at that point. We did not opt for Drupal Commerce since we had already implemented the store in Ubercart on Drupal 5. We did not feel that there was any particular advantage that Narrative Magazine would have in redoing the entire store in Drupal Commerce since Ubercart had reasonably good features and support. The database transfer was achieved through scripting the migration. While most of it could be done through scripting, some had to be done manually. We documented those separately and migrated manually.

After multiple iterations of running the script and testing for bugs, we finally got to a stage where the database was fully functional and in place. Not a single transaction was lost or corrupted. It meant that Narrative Magazine had all the records it needed for its continued operations intact. However, we had to keep the data in a read-only state for one day to ensure that iterations and testing could be done correctly. One of the custom modules that posed some difficulty was the Advertisement Management System that we had implemented in Drupal 5. The Advertisement Management System was critical to creating a new income stream for Narrative Magazine apart from donations. The custom module had to be improved with new features, migrated to Drupal 7 and the database again had to migrate to the new version. Since it is a custom module that migration pathways were not very clear. Therefore, when the full-fledged module was built in D7, we had to migrate the data from D5 to D7.

The Content Creation Kit (CCK) fields are different in the case of Drupal 5 and Drupal 7. This was another aspect that we had to take care of during the migration process. D5 end-of-life modules were converted to D7. Using scripting. Workflow Module. D5 to D7 path was not straightforward. We had to do custom scripts to migrate data from Work Flow Module in D5 to D7. The scripting strategy allowed us to meet our triple objectives of no data loss, effective migration of the database to Drupal 7, and zero downtime. The Narrative Magazine team could go ahead with their business activities in a fairly uninterrupted manner. Their support to us during the migration process was invaluable. The continuous feedback from their Testing Team helped us identify bugs and potential bottlenecks. It was an exhilarating experience for us as it was one of the first migration tasks that we had undertaken and we were able to execute it successfully. At present we are working on the Advertisement Management System on Drupal 7 which has now taken the form of a Classified Ads system with options for management of ads by users. Further features are planned by Narrative Magazine and we look forward to working on them. We are happy to contribute to Narrative Magazine's effort to create a sustainable system that will support budding writers of short stories and other literary pieces. After all, who does not like a good story!