Sector(s)
Team Members
Project Team
Lomas Rishi Gupta : Architect
Mukeysh : Frontend lead
Neetika: QA
Brahmjeet: Dev
Bandana: Frontend dev
Amit kumar: Sr dev
IDG India is a leading Media publishing Company with marquee web-properties like http://cio.in, https://csoonline.in, http://channelworld.in, http://computerworld.in. The existing D6 site was built more than 7 years ago and had undergone many organic changes. Besides consolidating all the functionality, the client was keen on moving to Drupal-8 as much to stay current as to utilize the many benefits like better content creation, configuration and website performance benefits.
About the project
Project Goal
The IDG India web-properties had grown very large over the years and it was felt that a phased approach to delivery was key to success. The first goal was to migrate all the website as-is in terms of UI/UX. The important goal was to retain the existing functionality of content creation and syndication as-is, reason being that the current content mechanism, while unique to IDG India was well understood by journalists, Editors and other non-tech staff within IDG India.
Project required a solution which would also allow easy addition of new microsites to the system as and when new client acquisition took place.
Requirements
IDG, India was looking for a capable tech partner who would ensure that the website worked well, content could be updated and all the Drupal-level technical issues were handled by tech team, while the client could concentrate on content. To this end, the current workflow that was unique to IDG India had to be retained. Content syndication to various sites had to be enabled seamlessly. gai team was up to chosen as the ideal tech partner. Some key requirements:
- Retain content syndication functionality
- Create a multi-site facility that would enable creating microsites in the future.
- Migrate over 7 years of data seamless so the user experience would not be hampered.
- Since the websites had been active for many years, the URLs had to be either retained as-is or in cases where the original URLs were either invalid or improper, proper mechanisms are put in place to avoid page access errors (HTTP 404 and related errors)
- After site was built, client required that the website be maintained and 24x7 support be provided for certain key areas.
- As the earlier website had considerable downtime, both because of hosting as well as a consequence of being built over time, the site was to be hosted in AWS with all measures in place to keep the uptime very high.
- Performance optimization,content syndication,Block Syndication,content categorization and improved content moderation was also one of the key components of the project as there was enormous content that had to be displayed on the websites.
Outcomes
gai provided the client with a Drupal 8 based multi-site solution which, while minimal changes were made to the UI/UX, performed much better than the D6 version. The multi-site also allowed easier addition of new website instances to the system.
- A single code base for all 6 sites and multi database solution.
- Optimized turnaround times of the content authors and eased out publishing cycle resulted in faster and a more efficient publishing of articles, blogs etc.
- Provided a extensible and scalable technology capable of integrating with various third party integrations, whenever required.
Challenges
- Single code base was for fairly content heavy sites as the content is the main consumable offering by the client to its end clients.
- Content push had to made from main site to other sites in multisite solution. Since some of the content push modules were WIP in D8, team had to work with these modules and help fix issues and contribute base to ensure future compatibility.
- Block syndications was also required.
- Migration of data from fields created by field group module (d6) to New fields created by Paragraph module(d8); field group module is not supported in D8.
- Migration of huge amount of files from d6 to d8. Script stopped running many times. Drupal core migration scripts were modified to first migrate the file mapping data into D8 only, then copied all the files.
- Content syndication between main site and microsite is both ways. Newsletter is sent to the clients from the main site with URL fetched from the micro site.
Why Drupal was chosen
IDG India management was keen on moving to a new and more modern CMS as the existing websites were quite dated, issues with security, module updates, performance was becoming an issue. As the existing websites were already in Drupal 6, Drupal 8 was a relatively easier win. IDG India management was impressed with the Content Authoring improvements in Drupal 8, though as it turned out other than the WYSIWYG Editor improvements, not many of the content authoring features are currently in use as they did not align well with existing content authoring workflow..
The multi-site architecture proposed was also interesting to the client. Since there was a large amount of content in D6, the migration capabilities from D6 to D8 was another important consideration.
Technical Specifications
Drupal version:
Key modules/theme/distribution used:
Config Filter
Modules such as Config Split want to modify the configuration when it is synchronized between the database and the exported yaml files.
This module provides the API to do so but does not influence a sites operation.
Paragraphs:
Paragraphs We used Paragraph module because this a replacement for field collection & field group modules. Paragraph module is more UX friendly for the site admin. Paragraph module provides a capability to write twig file for each bundle created, which makes theming of a section of the page very handy.
Migration tools
Migration tools provides additional Drush commands which helps in custom migration. For example drush mi “your migration name”. This is very useful for entity reference fields and files migration. It also gives a command (drush migrate-messages) to check error logged during the process of a migration.
Migration Plus
This module provides A PREPARE_ROW event to allow object-oriented responses to the core prepare_row hook.
This module provided us extra “process plugins” which were not available in core migration module.
With PREPARE_ROW we were able to migrate data to Paragraphs fields.