Why Drupal is a Good Fit for E-Governance
BY webmaster
1 year ago
comments comment

Authors: Anoop John, Vimal Joseph, Thomas P. Thomas

E-governance has grown and developed rapidly reflecting the social, economic and cultural changes happening. The increased usage of the web by the citizens, the ease of use, the ubiquity of digital connectivity, IoT have allowed for the emergence of a number of applications for Government to Citizen, Government to Government and Government to Business Services. Leveraging the web for citizen engagement, delivery of government services to citizens, businesses and inter-government departmental services is key to strengthening the e-governance capability of a government.

This necessitates an appropriate web tool.

In the current state of affairs, the choice narrows down to a distribution built on a powerful, scalable and adaptive Web Content Management System (WCMS). From amongst the Open Source alternatives given, Drupal stands out as a superior choice, as a tried and tested alternative. Drupal is specifically adopted as the technology platform for building websites of federal institutions in US and many other nations. The govCMS initiative of the Government of Australia is another prime example of using Drupal for e-governance initiatives on the web. Primary reason for this is, Drupal offers scalability to build websites ranging from simple to complex and customised websites.


Notwithstanding the fact that there are a lot of CMS available out in the market, Drupal stands out from others due to its security, robustness, customizability and its ability to evolve with emerging trends in the digital technology space. Here are some of Drupal’s features that make it especially suitable for e-governance.

Citizen Engagement

APIs: Generate APIs for third party websites so that Agency details reach the citizens through multiple ways. Integrate third party APIs for offering services from other authorised sites.

Social Media Integration: Merely publishing on website is not enough. The Drupal CMS platform provides all major social media integrations so that citizens receive updates instantly on social media.

Custom Modules: Grievance Redressal module, RTI submission, SMS notifications, Polls etc are some custom modules designed to meet citizen needs on the website.

Web Content Publishing

Easy to Use Workflow: No matter who all are in charge of the website administration, user roles and permissions can be set to decide who publishes a content. By default there will be draft moderation, review, publish and unpublish states offering finite levels of control. Custom workflow can be created to suit the organisational needs.

Built in Content Types: Whether the need be publishing of Government Orders, Gazette notifications, Events, News, Tenders, or Careers, specific content types can be incorporated for each of these. Along with this, revision and archiving helps to keep track of changes.

Multilingual: Leveraging on the multilingual module of Drupal, the portal will enable easy publishing and dissemination of content in English and the official language(s) of that particular country/province/state.

Role Based Content Access: Some contents/files can be made private and accessible to only those who have a particular role in the CMS.

Media and Digital Asset Management: This feature helps to organise various media files to display them and reuse them in various formats like slideshows, image gallery and videos.

Custom Theming and Modular Layout: Front end can be customised to suit the organisation branding while content blocks can be configured with simple drag and drop to suit the needs.

Guarding Government/Citizen Data and Web Infrastructure

Security: More than any other website, Government websites are vulnerable to security threat. Drupal 8 lines up a series of security features like Twig templates, no PHP input to core, exportable site configuration, hardened user sessions etc limiting penetrability to core through various actions. The dedicated community also identifies new threats and creates patches to ensure that vulnerability is restricted.


Drupal 8 (D-8) is the latest offering from the community and it is a highly scalable platform that can create websites to handle millions of hits without affecting speed and performance. It is flexible to adding various functionalities and in handling large data. The architecture is designed for mobile first and it has excellent content authoring features with built in WYSIWYG editors. Flexible content delivery suits the API economy and D-8 offers seamless integration with the best-of-breed technologies to give the best digital experience.

Advantages for Building and Maintenance of CMS platform on Drupal 8 for Government Agencies

The CMS platform for government built on Drupal 8 comes with the following advantages that make it powerful and robust.

  • No licensing cost on account of Drupal 8 being Open Source.
  • No vendor lock in- as there is no mandatory lock in agreement with the provider. Since the source code is open, the Government has the option to develop a team to enhance the features on their own.
  • Easy to upgrade and update given the vibrant community that backs Drupal and their practices of quick releases of updates and patches and commitment to roadmap.
  • Agility is offered by the scalable and highly modular nature of Drupal making it easy to maintain, integrate with other systems and build additional features.
  • Reusability is possible by coding as per Drupal coding standards making integration with other custom made Drupal applications extremely easy.
  • Civic centred through simplifying website management and maintenance and cutting down expensive investments into those areas.
  • Consistent brand experience using Atomic Design where design components are prepared at the atom level of the layout. Templates created out of these components ensures that the brand uniqueness is maintained. Further the components are reusable to create new layouts. This can generate an experience of familiarity with icons and layouts while visiting multi sites of a department or a ministry making site access convenient.
  • Reduced complexity and effort duplication through modular components which is designed considering the typical content publishing needs of a Government agency.
  • Quick onboarding of content publishers through a user friendly dashboard that enables easy content updating. Modification is easy without the need of any particular technical skill set.
  • Easy management of a portfolio of sites using Multisite Feature of Drupal. Removes duplication of content updating efforts while maintaining data consistency.
  • Reduced risk with common site architecture and validated code-Automated deployment of new modules and functionalities.

Enhanced Security Capabilities of Drupal 8 for Government Agencies

  • In built Drupal 8 security features ensures privacy. Clickjacking, XSS attacks, SQL injections, are prevented in core. Presentation layer and data is separated to prevent intrusion.
  • Core Security of Drupal 8 takes care of basic security requirement.
  • Development of best practises enhance the security of the site.
  • Community contributions: Highly active community to detect threats and do patching.
  • Data privacy is secured by building with high standards of security ensuring citizen's rights to privacy and protecting the government site from external attacks.

Citizen Experience

High-end User Experience-People are culturally more tech savvy, expecting quicker and interactive services and the framework is designed considering these new technical culture.

Rich Citizen Engagement features including the following

  • Multilingual
  • Mobile first-Making the services reach the growing ‘mCitizens’
  • Location based content delivery-District based notifications
  • Web Content Accessibility Guidelines (WCAG) compliant-Ensuring inclusiveness by enabling accessibility for differently abled as well
  • Social Media sharing-Ensures the policy awareness reaches the citizens quickly and directly
  • High uptime leveraging on Drupal 8's core modularity and inherent strengths

Due to these very same reasons, we recommend to design the CMS for governments using the latest version of Drupal. Drupal 8 platform is the most advanced in open source technology and offers a host of features to create the best user experience.

By building a base version of a distribution in Drupal, it can be expanded in scope to suit the purpose of various government organisations. Zyxware Technologies has helped and is in the process of helping various governments in their e-governance initiatives. To know more, get in touch with us.

(Edited by Nisha Oommen)



on 21st May 2013 / by Anoop John
Drupal 6 will be maintained till the release of Drupal 8. Drupal 8 release is expected to happen towards the end of 2013. The current stable branch Drupal 7 will be maintained till the release of Drupal 9 (probably 2015). If you are running a production site on Drupal 6 then you will probably have to start looking at upgrading the site by the end of this year. There are couple of different options open in front of you if you are looking to upgrade your Drupal 6 site soon. If the site does not use a lot of custom functionalities and uses minimal contributed module functionalities and you are not really interested in contributing towards migrating Drupal 7 modules to Drupal 8 then you could just go ahead and upgrade your Drupal 6 site to Drupal 7. This could be done anytime you have the budget to do this. If you are interested in contributing towards migrating Drupal 7 contrib modules to Drupal 8 then you could wait a bit and then migrate your Drupal 6 site into Drupal 8 by the time Drupal 8 is released. You could start on the work a few months before the release date of Drupal 8. If the site does have a lot of custom functionalities as opposed to contributed module functionalities then you should really be looking to migrate to Drupal 8. Work on this could be started as soon as we have an RC version of Drupal 8. You will however have to be prepared to contribute towards migrating some of the Drupal 7 modules to Drupal 8 as it would take a while before top 100 contributed modules have Drupal 8 versions. If you are not sure about which version of Drupal you should upgrade your site to do get in touch with us and we can help you make that decision for you. Do note that this is a time sensitive article written in May 2013 and the opinions cited in this article may not be relevant after a few months from writing this article. The concepts would still hold though. Contact us to get our recommendation on what version of Drupal should you be upgrading your site to. Drupal Drupal 6 Drupal Upgrade Drupal 7 Drupal 8 Leave a reply Your email address will not be published. Required fields are marker *

on 26th December 2014 / by abhai.sasidharan
YAML is a data serialization language which is easily readable to both humans and computers. It is for this very reason that YAML is being used in Drupal 8. YAML stands for YAML Ain't Markup Language. This is what a Drupal 8 module.info.yml file would look like : name: Zyx Module description: Zyx Module description. ;This is how you comment. Description field is mandatory. package: Custom type: module version: 1.0 core: 8.x dependencies: - node This is how a theme is defined in theme.info.yml file : name: Zyx type: theme description: 'A zyx theme.' package: Custom core: 8.x stylesheets: all: - css/layout.css print: - css/print.css stylesheets-remove: - normalize.css regions: header: Header content: Content sidebar_first: 'Sidebar first' footer: Footer This is how permissions are set in Drupal 8 YAML : # In views.permissions.yml file. access all views: title: 'Bypass views access control' description: 'Bypass access control when accessing views.' restrict access: TRUE This is how routing is set in Drupal 8 YAML : demo.page: path: /demo defaults: _title: 'Demo' _content: '\Drupal\demo\Controller\DefaultController::demo' requirements: _permission: 'access demo content' YAML files are parsed by Yaml.php in Drupal 8. It is a symfony component. Another reason to use YAML is because, .info files are Drupal specific and YAML is a created to provide data serialization. In Drupal 8, not just info files but permissions, routing and settings configuration are also defined in YAML format now. Earlies this was accomplished in the .module file. This makes the code more lean. To describe it in two words, compartmentalization and delegating. Drupal Drupal 8 Leave a reply Your email address will not be published. Required fields are marker *

on 29th December 2014 / by abhai.sasidharan
Drupal, up until now a PAC (Presentation Abstraction Control) architecture, has taken a step closer to MVC (Model View Controller) architecture. Although nowhere have they mentioned about MVC, the new Drupal 8 is strictly object oriented. Another feature in Drupal 8, that is different from the existing versions of Drupal is that it is not entirely Drupal. Drupal 8 uses many components in symfony like it's ClassLoader, YAML file structure, twig and so on. For a detailed description please visit the Drupal 8 home page. In this article, I will explain how to convert an existing Drupal 7 module to Drupal 8. In Drupal 7, the first steps you follow to create a module is Create a <module name>.info file Create a <module name>.module file Create a <module name>.install file if a schema is required These are the basic steps for a simple module creation. Plugins, css, images, etc can be added as required. This is basically the same in Drupal 8 except we have to follow a yaml file structure in Drupal 8. The <module name>.info file should be renamed as <module name>.info.yml. Say, for a module zyx, if the zyx.info file in Drupal 7 was : name = ZYX description = Some module to something. package = ZYX core = 7.x files[] = zyx.module files[] = zyx.install ; Information added by Drupal.org packaging script on 2013-12-12 version = "7.x-3.0" core = "7.x" project = "zyx" datestamp = "1386880109" In Drupal 8, the zyx.info.yml would be : name: ZYX description: 'Some module to something.' package: ZYX core: 8.x version: 7.x-3.0 project: zyx datestamp: '1386880109' type: module After the <module name>.info.yml file has been defined, you can go to the extend page in your Drupal site and see that the module has appeared in Drupal 8. The <module name>.install and <module name>.module files remain where they are. The schema definition remains unchanged in Drupal 8. The .module file has many changes which we will discuss now. Firstly, hook_menu has been replaced in Drupal 8 by another yml file called <module name>.routing.yml. This is also a requisite for Drupal 8 module. Clear the hook_menu and move it with corresponding yml syntax to the <module name>.routing.yml file in the root of the module folder : In Drupal 7 : <?php function zyx_menu() { $items = array(); $items['zyx/one'] = array( 'title' => 'Zyx entry', 'description' => 'Enter zyx info into database', 'page callback' => 'Drupal_get_form', 'page arguments' => array('zyx_form'), 'access arguments' => array('access zyx content'), 'type' => MENU_NORMAL_ITEM, ); } In Drupal 8 : zyx.routing.yml zyx.form: path: /zyx/one defaults: _title: 'Zyx entry' _form: \Drupal\zyx\Form\ZyxForm requirements: _permission: 'access zyx content' As you can see in the yml file, the path to the form is defined and we notice another difference, which is the form definition has been moved from the .module file to a class in the form folder. We have to create a folder structure in the module folder to implement the MVC part of Drupal 8 i.e., module/ src/ Controller/ Form/ !-- Each form should be in a separate ClassName.php file. If any. Plugin/ Block/ !-- If any. <module name>.module <module name>.routing.yml <module name>.menu.links.yml <module name>.info.yml <module name>.permissions.yml <module name>.install This is standard for all Drupal modules. This is the PSR-4 compatible folder structure (Confer with PSR documentation). The form should be defined in a php file in the Form folder. This is the controller for the form. An example would be, in this case, "ZyxForm.php". Delete the form definition in <module name>.module file and copy it into the controller class definition in the form folder making the changes like below. The form definition for this would be : <?php /** * @file * Contains \Drupal\zyx\Form\ZyxForm. */ namespace Drupal\zyx\Form; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\Element; class Zyx extends FormBase { /** * {@inheritdoc} */ public function getFormId() { return 'zyx_form'; } public function buildForm(array $form, FormStateInterface $form_state) { $form['zyx_data'] = array( '#type' => 'textfield', '#title' => t('Data'), '#size' => 30, '#maxlength' => 200, '#description' => t('Zyx data.'), '#required' => TRUE, ); $form['submit'] = array( '#type' => 'submit', '#value' => t($submit), ); return $form; } public function validateForm(array &$form, FormStateInterface $form_state) { //Code to validate here. Same as Drupal 7. } public function submitForm(array &$form, FormStateInterface $form_state) { //Code to submit here. Same as Drupal 7. } } Secondly, permissions are no longer set inside the .module file itself. You have to include a .permissions.yml file. In Drupal 7 : <?php /** * Implements hook_permission(). * * Access and view content defined. */ function zyx_permission() { return array( 'access zyx content' => array( 'title' => t('Access content for the Zyx module'), ), ); } In Drupal 8 : zyx.permissions.yml 'access zyx content': title: 'Access content for the Address book module' Thirdly, menu links are a separate file named <module name>.lniks.menu.yml unlike Drupal 8 which included it in the hook_menu itself. It is as follows : zyx.form: route_name: zyx.form title: 'Zyx Entry' description: 'Enter zyx info into database' parent: zyx.page Fourthly, any custom page defined in the <module name>.module will also have to be removed from the <module name>.module file. This will have to be moved to the controller folder as a Controller class similar to how form was done only difference is the class to extend : <?php /** * @file * Contains \Drupal\zyx\Controller\DefaultController. */ namespace Drupal\zyx\Controller; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Url; /** * Default controller for the zyx module. */ class ZyxController extends ControllerBase { //Custom page function(s) here. Copy the functions and from <module name>.module and place it here. } Finally, blocks are implemented as plugins in Drupal 8. If you look at the folder structure mentioned above, you can see that in the plugin folder there is block folder. This is because blocks are no longer defined in the conventional style; hook_block_info(), hook_block_view() have been deprecated. Your block definitions should be in another controller class similar to form. An example : ZyxChow.php <?php /** * @file * Contains \Drupal\zyx\Plugin\Block\ZyxChow. */ namespace Drupal\zyx\Plugin\Block; use Drupal\Core\Block\BlockBase; /** * Provides the ZyxChow block. * * @Block( * id = "zyx_chow", * admin_label = @Translation("Zyx's Chow") * ) */ class ZyxChow extends BlockBase { /** * {@inheritdoc} */ public function build() { // Code to create a block. Just like Drupal 7. //Return a renderable array; } } Here, the @block part in the comment section is a mandatory. It defines the machine name and name of the block. These are the basic things to be changed in a Drupal 7 module to make it work in a Drupal 8 installation. A few key things to remember while migrating to Drupal 8 are the PSR-4 folder compatibility, YAML file and correct syntax to use, all paths should be defined in routing YAML file. Migrating a module to Drupal 8 can be very long and tedious due to the vast differences from Drupal 7 to Drupal 8. There is another way to migrate modules to Drupal 8, which is using a Drupal 8 module called Drupal module upgrader. This module is in its development stages and does the converting fine for modules with a simple file structure, although it is found to be buggy when migrating projects with more than one modules like the coder or devel module. Resources: Drupal 7 to 8 Drupal Drupal 8 Leave a reply Your email address will not be published. Required fields are marker *
Leave a reply
Your email address will not be published. Required fields are marker *

Filtered HTML

  • Web page addresses and email addresses turn into links automatically.
  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type='1 A I'> <li> <dl> <dt> <dd> <h2 id='jump-*'> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
The content of this field is kept private and will not be shown publicly.
CAPTCHA This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.