Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
Jun 30 2020
Jun 30

Consider a situation wherein your car indicators are placed near the glove compartment, the horn near the back seat, ignition turn on/off button near the fuel tank, and steering wheel with the button to open the side doors. How infeasible it would be!

A man sitting on chair and working on system

Of course, nobody will ever want to drive such a non-ergonomic car that can cause a threat to human life.

Likewise, for content marketers and publishers who create and publish content, their editorial experience must be seamless. It implies that they should be able to publish quality content in less time ahead of their competitors.

This blog is an attempt to interconnect the long-proven Japanese concepts of manufacturing - Kaizen and 5S’ technique with the editorial experience in the digital world to help companies implement it through Drupal and make their teams more productive for content creation and publishing.

Applying Manufacturing Concepts to Editorial Workflows in Publishing

Whether you have realized or not, you do have an editorial workflow. It is simply the way your content gets published.

However, if you have never given it much thought or attention, your team’s workflow is likely undefined, unclear, and unhelpful. It probably changes from article to article, and steps are missed or completed out of order.

See how manufacturing concepts can be applied to improve editorial workflow -

Getting into Editors’ Shoes

Engineer at the assembly line

Advancement in technology can facilitate editors to produce good   quality content and with high quantity. Though leveraging it the right   way can only ensure the productivity and quality of the work.

For an engineer on a manufacturing assembly line, carefully studying each step from pulling an electric screwdriver hanging from the ceiling and 5 screws from a bucket kept right near the waist level to eventually gripping those screws in the car.

Likewise, for editorial teams, it’s important to understand tasks that are repeated by the majority of the users and categorize them in high, medium, and low-frequency High Time tasks.

Understanding Key Pain Areas

A man stamding and operating system


Editors and publishers when working in collaboration should be able to maximize efficiency and revenue for the business. Stakeholders should emphasize the use of a specific mindset and tools to create efficiency and value. Here are some pain points that enterprises must resolve to help address those challenges-

American Society of Quality teaches a concept of FMEA (Failure Mode Effect Analysis) which can be directly applied to Editorial experience betterment
"Failure modes" means the ways, or modes, in which something might cause delays or complicate the workflow

"Effects analysis" refers to studying the consequences/results of those.

Focus on the tasks that hold the highest chances of occurrence and their consequences on the editorial experience and on business outcomes

Examples of Failure Modes and Effects

Failure Mode

Effects

Long Content Forms

Time Delays, Frustration for teams

Excessive clicks to complete a form

Time Delays for publishing, complicated workflow

Multiple Screen Navigations

Possible loss of information, time delays

One body field for all content

Difficult to manage changes, Low-richness of content

Applying Lean Manufacturing 5S’ technique for better Editorial Experience

The term 5S is taken from five Japanese words -

  • Seiri
  • Seiton
  • Seiso
  • Seiketsu
  • Shitsuke

When translated in English, these words become-

  • Sort
  • Set in Order
  • Shine
  • Standardize
  • Sustain

Here, each “S” represents one part of the five-step process that can improve the overall functioning of a business. Let’s get in detail of each “S”.

1. Sort:  This involves going through all the tools(buttons), furniture(fields), equipment(process), etc. in a work area(content management system) to find what needs to be present and what can be removed. 

  • When was this item(field) last used?
  • What is the purpose of this item(field)?
  • How frequently is it used?
  • Who uses it?
  • Does it need to be here?

Logical Grouping of Fields: When was the last time you cribbed about the monologue like marketing forms or a job application which took you years to complete?

day comLong and Verbose Content Forms vs Logical Grouped Forms with Form tips

 

Now think wearing editors’ hat who have to create content using those long forms 10, 20, 50, 100 times a day, these just prove as a hindrance for editors to create and innovate with their content

Logical Grouping of fields via the Field Group module makes the form short and easy for editors to only pick and add information in the fields which are concerned to them.

Form Tip is another intuitive feature to avoid long-form(black box in the screenshot on right) and give editors some info about the info that needs to be added in the field.


2. Set in Order

Once the clutter is gone, it's easier to see what's what. Now workgroups can come up with their strategies for sorting through the remaining items.

  • Collapsible Fields is another way to reduce the length of the form and collapse the fields which are not used widely in all content

a rectangular white bar with text

vehicles moving on road

  • Conditional Fields  is another way to reduce the   number of fields on the form, show/hide fields   based on condition, eg. the ‘Primary Image  Summary’ field for an image will appear only if  there is an image uploaded to an article (As seen  for ‘Primary Image’ field in Screenshot) 
  • Number of Clicks - Carefully minimize the number of clicks to achieve a task 


gif showing various rich multimedia formats

Rich Multimedia Features- Helps  creating a modular content structure with different logical fragments of content rather than just one large body field. Use this to add rich social media features like Embeds, Slideshows, Videos, Audio Podcasts.

two sections divided on white background

  • Taxonomy Manager  allows editors to manage all the master content and vocabularies in the system in an intuitive interface

8 sections divided showing people

Gives a selection view for images and videos 

text on white background

Helps listing the items together for a section of the website


3.  Shine:

The Shine stage of 5S focuses on styling and theming of the interface for the creation and publishing of content for editors. 

  • Giving editors much larger space to write and manage content contrary to the traditional content forms
  • Max Length Helps defining field limits to make sure the user doesn’t exceed the limits 
  • Colors and Font: Use clear visible font-size which are not stressful to the eye. Use solid colors for the header/footer menu of content entry screens for better visibility of text.  

two images juxtaposed on white backgroundHeader/footer menu of content entry screens for better visibility of text

 

4. Standardize: Use standardized field types to supplement faster creation of content.

Anubhav 4.0

Some industry-standard field types that can be used are mentioned below:

-  A long list of options: Eg. the country field can be configured using Auto-complete deluxe 

- Multiple values in a field: Eg. Keywords field can be configured using Chosen fields; it’s quick and gives a fast response if the user wants to remove an item

- Hierarchical items can be configured using SHS

There are a few more industry-standard features that should be added to the interface for standardizing editorial experience:

Auto-Save of Progress

 If the user's browser or machine   dies while editing an article; the   edits will be presented to the user the next time they return to the article

a dialog box on white background

 Content Locking 

When a user is editing an article, any other user that attempts to edit the same article will be blocked from doing so and notified that the content is already being edited. fields on white background

5. Sustain: This is the last of the 5S’. It is not only about keeping the 5S running smoothly, but also about keeping everyone in the organization involved.

video in white backgroundTraining and Onboarding: Quick Editorial onboarding for the editors which means the teams can self-learn on creating content and publishing content without specialized training. 

Saves a lot of time and money to onboard a new publishing interface.

Summing up-

Though 5S is quite a simple concept, beginning a new program of it can feel daunting.

You can start by rolling out a plan with practical steps such as deciding the departments and individuals to be involved, what training will be needed, and what tools will be helpful in executing the process.

Determining these concrete steps would help you successfully carry out the process of 5S implementation. Besides, Drupal has the potential to enhance the editorial workflow significantly through its powerful modules and distributions.

Jun 26 2020
Jun 26

Drupal 9 was launched on June 3, 2020. Given this, it would be necessary for enterprises to upgrade to it later or sooner to acquire complete functionality and retain the ability to receive security updates within the bi-yearly cycles.

In the past, migrating from one version to another has been similar to moving from another CMS to Drupal, bringing in more time and fatigue.

However, the upgrade from D7/8 to D9 is much easier and painless. Let’s dive into more details and understand as to why moving on to Drupal 9 would be a better choice.

Why Should You Upgrade?

With the end of life approaching for Drupal 7 and 8 soon, operating the website on them securely and with complete functionality won’t be a feasible option.

At the same time, it might also be overwhelming for Drupal 7/8 site owners to know that their website will need the upgrade, especially when their site is running absolutely fine; thereby, resulting in confusion among them.

 

Here are 3 reasons why you should consider upgrading your site to Drupal 9:

 

  1. The Drupal security team will soon no longer provide support or security advisories, wavering your website’s and its users’ cybersecurity
  2. D7 and 8 releases’ on all project pages will be flagged as ‘not supported’. D7/ 8 may be flagged as insecure in 3rd party scans making the integration with other third-party tools and systems challenging
  3. Leading hosting services providers like Acquia and Pantheon will also soon withdraw their support from D7 leaving you without many options but to assume hosting responsibility for maintaining your application and server level configurations

The good news for Drupal 7/8 site owners is that even when it goes out of official support in November 2022, remaining Drupal 7/8 sites won't stop working at that point.

Should an Existing Drupal 7 Site Be Upgraded to Drupal 8 or 9?

One of the major reasons that more than seven hundred thousand Drupal 7 sites still haven’t migrated to Drupal 8, is due to the known challenges in the migration process. And with the majority of people on Drupal 7, it is quite likely that most of them did not want to upgrade their CMS twice in the span of one year.

A safe bet seems to be migrating from Drupal 7 to Drupal 9. But will the site be secure? Let’s get to know a few facts.

Since D8 and D9 are similar except for deprecated codes removed and third-party updates in D9, it would be a feasible option for enterprises to migrate to D9 instead of D8 - to save them from constantly going through the same process and investing time, money, and efforts unnecessarily.

What’s New in Drupal 9?

There are innumerable capabilities added in Drupal 9 which further will be consistently updated biannually to help enterprises stay up-to-date.

Now once you upgrade your system to D9, you won’t require to make major changes the next time you plan to update it to a newer version. 

Here are some of the new capabilities that are added to D9-

  1. Backward compatible

    Drupal 9 is backward compatible, i.e., it is compatible with its predecessor, Drupal 8. That being said, D9 will be able to use modules, configurations, and data created on D8 of the same software, unlike the case with D7 and D8.
    Additionally, preserving this functionality won’t burden Drupal with historical baggage and so the performance of the system will remain unaffected. The Drupal community has also focused on breaking code and not the data.
    This way, Drupal will remain fast, clutter-free, and yet an up-to-date technology.

  2. Faster and Better Performance

    Drupal 9 has taken it further to extend its support for responsive images, wherein mobiles can display the best-sized images and hence, consume fewer amounts of data.
    In a recent webinar by Dries, he mentioned that Drupal 9.1 onwards versions/updates will witness the innovation and pave the way for faster and better performances of the websites. Drupal 9.1 update is just six months post the release of Drupal 9. Meanwhile, here are some of the features of D9 that you can leverage for efficient workflows-

        A.  BigPipe increasing page view performance and supporting faster initial page loading

        B.  Content Workflow allowing you to define multiple workflows

        C.  Multilingual capabilities

        D.  Structure Content- Drupal 9 comes in with an array of available fields, encompassing phone, email,       data, and time.

  3. Cleaner code base

    Drupal 9 has removed the support for deprecated codes in D8. This implementation will ensure that the code marked as deprecated will no longer be supported and used in the Drupal ecosystem. 
    The motive behind this is to make D9 a cleaner version so that whenever the modules in D8 want to become compatible with D9, they need to first eliminate the deprecated code. 
    Thus, the end result is clear- to make the code more nimble and improve the website’s performance.

  4. Newer Major Versions of Symfony and Twig

    Symfony 3 will be replaced with Symfony 4 or 5 after November 2021. Also, the Drupal community can introduce an upgrade to Twig 2.0. These upgrades will only result in enhanced performance, improved developer experience, and enhanced security.

  5. Panelizer will be removed and replaced 

    What’s new in Drupal 9? Well, the panelizer will be replaced with the Layout Builder, the “star” module of the moment.

  6. Headless CMS

    Drupal 8 and 9 both come with an API-first approach. Dries also mentioned in the webinar that the Drupal community is vigorously capitalizing on Headless CMS so that it can enhance users’ experience with the powerful front-end of the website with Javascript framework like React or Angular. 

The essential features of Drupal Headless CMS are-

  • Front-End Freedom
  • Create Once, Publish Anywhere
  • API-First Approach
  • Easier Resourcing

Drupal 9 is more usable, accessible, inclusive, flexible and scalable than previous versions, with the following updated features-

  • It will be significantly easier for marketers to use D9
  • Simple than ever to maintain and upgrade for developers
  • D9 is experimenting with its headless or decoupled capabilities

Additionally, you can also learn from our previous blog where we have explained how to find and fix the deprecated code - Site Owner’s Guide to a Smooth Drupal 9 Upgrade Experience.

Why Remove Deprecated Code in Drupal 9?

To ensure that the D8 modules remain compatible with D9, it’s typically essential to remove deprecated codes- 

  1. The all-new Drupal 9 ready code gets deployed on Drupal 8 sites and issues can be tested.
  2. It is a continuation of the fully-tested and stable codebase of Drupal 8

With time, the effort is being made to make Drupal better. There are functions that have been around for a long time but will not be a good fit in the latest release. Most were deprecated in Drupal 8.7.0, which will be removed in Drupal 9.

To sum it all, the key to achieving this smooth transition to Drupal 9 is to rollout your migration plan within deadlines and save yourself from any unnecessary hassle later on.

Srijan is working with leading enterprises to help them migrate their digital web properties to Drupal 9 for better user experience. 

If you are also looking for a smooth upgrade/migration process for your enterprise’s system, we are all ears and excited to assist you. Contact Us!

Jun 03 2020
Jun 03

Drupal 9 will be launched today. After so much hard work, collaboration, anticipation and excitement, it is finally here.

Although a lot of discussion is happening around the upgrade and possibilities it brings along, the final product can only be as good as the process itself.

The good and important news is that moving from Drupal 8 to Drupal 9 should be really easy — radically easier than migrating from Drupal 7 to Drupal 8.

As a site owner, here’s what you need to know about the new release and what to take care of to make the process easier without many glitches.

The Drupal 9 Release and Timeline

The goal of Drupal 9 is to make it an easy upgrade as much as feasible from Drupal 8. Unlike most of the previous upgrades, D9 will be different in terms of:

  • Updates of dependencies to versions that stay supported.
  • Removal of our own code that we deprecated with removal before Drupal 9's release.

The new release will be a cleaned-up version of Drupal 8. Built on the same code base with deprecated code removed and third-party dependencies updated, Drupal 9 is not a reinvention of Drupal.

a horizontal table with Drupal versions

The next question is what happens to Drupal 7 and 8, then?

One of the major dependencies of Drupal 8 is on Symfony 3. Since Symfony 3 enters the end of life in November 2021, Drupal 8 support will be lifted around the same time. A long-term-support (LTS) minor release of Drupal 8 will be released alongside Drupal 9 and supported until November 2021.

No new features will be added to Drupal 8 and no new minor releases will be made available of Drupal 8. It will only receive patch releases after which.

Drupal 7 will also stop receiving community support after November 2021.

Data migration features in Drupal core to move from Drupal 7 to Drupal 9 will be active until then since they are required for a stable migration. 

The Upgrade and The Tips

The only caveat is that you need to manage is the "deprecated code". Here’s what you need to take note of, for an easiest upgrade experience to Drupal 9:

drupal 9.0 api

  1. Keep Core Up-to-Date: As mentioned above, Drupal 9 is Drupal 8.9 - deprecated parts plus dependencies updated.

    If your site doesn't use deprecated code that is scheduled for removal in Drupal 9, your upgrade to Drupal 9 will be easy. In fact, it should be as easy as a minor version upgrade (like upgrading from Drupal 8.6 to Drupal 8.7).

  2. Keep Modules Up-to-Date: Although Drupal 9 will not have new features (other than those provided by updated dependencies). While most modules will improve Drupal 9 compatibility, to ensure you don’t lose them in the upgrade, keep them updated.

    The key benefit of Drupal 9 over previous versions is that the platform will be supported with security fixes much later after support is lifted from 8. For contributed modules, the pace of Drupal 9 updates will depend on the module maintainers.

  3. Check Custom Codes for Deprecation: In case of any custom code on the site, you can use the deprecation checking and correction tools and fix issues locally. Tools you can use to check code depreciation:
    1. Drupal Check (read more her about PHP version compatibility check
    2. Rector (Read more about Rector here)

      Further, you can also use an IDE or code editor that understands deprecations (@deprecated annotations particularly) or Drupal 8’s branch of Upgrade Status for full site reporting.

What is Deprecated Code?

Deprecated code is referred to as the functions and API’s which are being replaced with new and better versions. In the journey from Drupal 8 from Drupal 9, you will experience API changes, with the new implementation is already present in core along with older one. We have to replace older code/API usage with the new.

Here is an example of the deprecated function:

* @deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. * Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. */ function drupal_set_message($message = NULL, $type = 'status', $repeat = FALSE) { @trigger_error('drupal_set_message() is deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. See https://www.drupal.org/node/2774931', E_USER_DEPRECATED); $messenger = \Drupal::messenger(); if (isset($message)) { $messenger->addMessage($message, $type, $repeat); } return $messenger->all(); }

In above example the function drupal_set_message is deprecated and has to be replaced with:

\Drupal\Core\Messenger\MessengerInterface::addMessage()

Ways to Find and Fix Deprecated Code in your Drupal Project

As mentioned above , you can find and fix your deprecated code in the following ways:

  1. Drupal Check: It's a library developed by Matt Glaman. Check the git code here. For installation and usage, you can refer to the readme. 
    In case you want to install using Composer, prepare using composer global require mglaman/drupal-check. You can also read more about the composer check
    1. Get into your project/Drupal root directory
    2. Choose the module you want to check for deprecations
    3. Run drupal-check --help for help items. Here, I am using watchdog_prune module for demonstration.
      run : drupal-check -d watchdog_prune
      The output will be something similar to the image shared below:
      deprecated-code-1-srijan
    4. You will, now, have the report of deprecated code to fix.
    5. Let say it is giving us File src/Form/WatchdogPruneSettings.php containing issue : Call to deprecated function drupal_set_message(). In this case just navigate to the body of function as in this case drupal_set_message()

      You will notice that the the documentation under red box reads that the function is deprecated and what we need to do instead
      Ways to Find and Fix Deprecated Code in your Drupal Project
      Now replace the current code with the recommendation and you are done.

2. Drupal Upgrade Status Module: This module checks the list of projects you have installed and shows their availability for newer versions of Drupal core.
  1. Use the Upgrade Status module form
  2. Download and install module using composer: composer require drupal/upgrade_status
  3. Install the module and navigate to URL using admin user: /admin/reports/upgrade
  4. You can run a complete project/ individual module scan
  5. Fix the deprecated code in the same way as mentioned above.

Wrapping Up

Because Drupal 9 is an extended version of Drupal 8, for site owners, this means that it should be much easier to upgrade. But keeping custom codes and module updated needs to be meticulously planned.

Have questions around Drupal 9 upgrade and how it might impact your site? Experts at Srijan are all ears, connect with us to chalk out the right course to Drupal 9.

Jun 01 2020
Jun 01

Many organizations are running into the challenge of managing content on their multiple websites for gaining centralized control and ensuring its secure flow.

Taking a piece-by-piece approach and allocating teams to work on each site separately drives the higher cost of maintenance, development, results in complex infrastructures, and inefficiencies in the process.

While content cannot be shared and shipped using CMI tools unlike configurations, Drupal modules can be utilized for sharing content among different sites or different instances of the same site.

This blog sheds light on the features that enterprises should not overlook while leveraging Drupal modules and also examines the benefits & limitations of the Entity share module and the cases in which it makes the biggest difference.

A Cost-effective Solution to Manage Content Across Sites 

Entity Share module helps enterprises achieve a workflow where subsites of a multisite architecture can share a piece of content across without disrupting the workflow at their respective ends. Besides, it also keeps UI experience and cost-effectiveness in check.

The module works for a setup where each of the sites have different databases. It provides easy means to share entities like nodes, taxonomy terms, media, etc on the basis of endpoints obtained from the JSON:API module via basic authentication.

 

Note- The websites sharing content among each other are designated by the terms, Server, and Client. The server (site) being the one from where content is shared and the client (site) is the one that takes in shared content.

Installation and Configuration Process of Entity Share Module

Follow these steps to install and configure the module-

  1. The entity_share module of desired version might be installed either via composer using
  2. Thereafter the module needs to be enabled using the drush command “drush en entity_share”.

  3. Next step is to create channels on the server site containing exact data to be exposed from its end. Channel configuration can be done after enabling the entity_share_server v.i.a command “drush en entity_share_server” which is a submodule present within entity_share. Additional filtering and sorting rules can be set on these channels as required after navigation through

    Configuration-> Web Services-> Entity Share-> Channels.

    text fields in white backgroundThe specification of an authorized user is a must to access this channel. 
    text fields in white background
  4. The client site, on the other hand, contains remote data that comprises the remote/server URL that it needs data from and authorization details like user and password to connect to the server which is provided after enabling the submodule entity_share_client using command “drush en entity_share_client”. Note this module needs to be enabled on the site that will pull shared content.

     

    Navigate to Configuration-> Web Services-> Entity Share-> Remote Websites and configure the remote settings. Ensure that the username and password in the Basic Auth section is the same as the credentials of the user that has access to entity share channels on the server end configured earlier.

    text fields in white background
  5. After successful authentication, all the shared content (from server end) will be available to the client site at [client_base_url]/admin/content/entity_share/pull to be pulled and displayed at its end. 


    This provides an added advantage to the client-side where it can accept the shared content only after complete verification. The shared content simply does not get created as soon as the server shares it.

    Moreover, the interface that the module provides for the entities to be pulled is user-friendly and easily understandable. It clearly depicts newly created and already pulled content along with its synchronization status. In case the content after being shared and pulled gets edited either at the server or client-side, the status gets immediately updated.

text fields in white background

Use Case of Entity Share

We implemented Entity Share module for a client project 

Recently Srijan came across a requirement where one of its established clients had local websites in regional languages distributed across many countries in the world.

Our main objective was to provide them with a solution where the administrator or central authority would be able to share some content like news updates, press releases, etc from the main/corporate website without affecting the rest of the content at each end. 

Additionally, a necessity of central control over each of the shared content/nodes was required where any change on the main site would be available on the client end to be pulled again or re-synchronized. 

Similarly, if a client site made any change on the content at its end, changes would appear on the corporate/main to be synced. The entity share module was best suited for such a scenario. 

We configured channels and remote sites as described above and the functionality was achieved. One of the custom functionalities added was to set the default status of the node being pulled into the Draft state so that the content editor can review the same before publishing. 

Despite the fact that Entity Share module is not yet identified as secure since a lot of inaccessible data is exposed using JSON:API endpoints, we implemented it for the client project. 

Because an extra security layer can be implemented to the web server configuration level by blocking requests from unwanted sources and allowing only trusted sources to fetch data. No third party expensive integrations were required. It matched with the clients’ requirements and also simplified our process of adding custom functionalities to it.

Benefits of Entity Share Module

It offers the following benefits-

  1. Authorized access- The module provides content exposure to a site ensuring authentication. Without proper authentication, no site can have access to the channel data exposed from the server website.
  2. Enhanced security for verifying content- The client site has a choice to pull data from the available list of content shared with it. This allows an extra layer of security that allows the administrator/editor of the client site to verify data at its end before synchronizing it. A link to the content/entity being shared is available beside each item in the list of entities present in the respective channel.
  3. Different versions to detect changes, if made- The module lets you view the difference between the already pulled entity and the entity on the server end, in case anyone of them gets changed.

    Given this, you have to install a module called diff to let you view revisions of an entity. Although the module has issues depicting differences in the reference fields; developers have an opportunity here to contribute to the community by finding an appropriate solution to the same.

  4. Multilingual support- Translated entities may be shared among sites provided the language is configured on both the ends. Even in the case where the default language of the server and the client site is different, this module is appropriate to use. 
    The client site may add appropriate translations based on the pulled content at its respective end.
  5. Auto-creation of referenced entities- All the referenced entities are auto-created based on UUID when a content/entity gets pulled if not present on the client end. Hence referenced paragraphs, images, and media that contain references to such fields need not be present on the client end before pulling content. They will be automatically created and linked.
  6. Clean and simple user interface- Lastly, the UI interface that entity_share provides for pulling/synchronizing content is easy to use. The entity pull access might be given to a specific user/editor of the website without developer intervention, once configured properly.

Limitations of Entity Share Module

Like other modules mentioned above, entity_share has limitations too:

  1. The entity when pulled on the client site, is displayed in the same state, i.e., published/unpublished as that on the main/server website. It implies that the module doesn’t obey customized editorial workflow and moderation process. Editors can’t take appropriate action of passing content through various workflow states such as draft, ready for review, approved and then published.

    For example - A published content when pulled is directly assigned a state from the pulled reference i.e published rather than in draft mode.

    However, there is a possibility to change this functionality by subscribing to the event

    \Drupal\entity_share_client\Event\EntityListDataAlterEvent

    provided by entity_share_client module to alter the status of the content being pulled.

    Likewise, other events are also available in the module that can be used to   tweak any functionality as and when required.

  2. The revision history of the node gets affected after pulling an already pulled entity that has been edited on the client end as well. This is because the changed timestamp that the JSON:API endpoint provides gets added to the client-side as it is after synchronization.

    This also needs to be fixed in the module to allow pull operations without affecting revisions on both ends. You can find another related issues  too.

Instead of using exorbitant and ineffective Drupal modules for content management across the various sites, give a try to Entity share module, it is a cost-effective solution that can be optimized as per enterprises' requirements.

Looking for a similar solution? Drop us a line and our team will get back to you.

Sep 30 2016
Sep 30

Customers are the heart of a business. As a business owner interacting directly with customers, or as a digital marketer for a business, you need to:

  • Track prospects and customers to provide individualized services.
  • Manage leads to find the high quality ones and improve revenue.
  • Engage with customers—the right tools can give you specific information about customers and their transactions.
  • Integrate social media with the business for better marketing and customer relationships.
  • Automate and optimize the end-to-end sales process.

The objectives mentioned above require a well thought out Customer Relationship Management (CRM) strategy. A CRM application seamlessly integrated with the business/CMS website can help in achieving this, leading the company to better customer retention and higher profitability.

Drupal allows custom integration with any type of third-party API. Drupal 8 has a revamped web services module which makes it even easier to integrate with third-party applications. Here are some CRM applications that Drupal can work with:

Webform CiviCRM
CiviCRM is a web-based contact relationship management application built in PHP. It integrates well with Drupal. It works seamlessly for functions like synchronization between Drupal roles and CiviCRM memberships, rules and triggers, Ubercart, views and web forms. It is a good tool for managing online subscriptions and contacts. Drupal modules can also be built to make use of direct CiviCRM.

Too many security updates, poor online documentation and lack of all CRM features are some drawbacks of CiviCRM.

RedHen CRM
The best part about RedHen CRM is that its high level design is similar to Drupal Commerce, and therefore it uses Drupal capabilities well. It is a lightweight CRM application that has features like contact management, engagement tracking, customisable forms for input, etc. It is highly customisable, making it advantageous for businesses with very specific requirements. However, the frequency of software updates is very low.

Salesforce Suite
Salesforce.com is a popular cloud-based CRM application. It automates the end-to-end sales process. Drupal has a module called Salesforce Suite. This module enables integration between Drupal entities and Salesforce data objects, allowing data exchange between Drupal-based applications and Salesforce. You can create object mapping and extend the APIs to create functionality for customised business workflows. But the options available depend on the license you have. Salesforce is better suited for big businesses.

Other CRM applications that Drupal works well with include:

  • CRM Core is a platform within Drupal which can be used to track contacts, relationships and activities. It allows reporting and bulk operations, like sending emails to customers and merging contacts.
  • OpenCRM is a native Drupal CRM solution that has tools such as entities, rules, fields, etc, that can be used to build a CRM system as per client requirements.
  • SugarCRM is a highly customizable CRM solution that can integrate with Drupal to provide integration via web form integration and data synchronization.

A Drupal-based CRM product is a good choice as it can be customised for specific requirements. On the other hand, CRM products like Salesforce or Microsoft Dynamics are more comprehensive but might need more work when it comes to customisation.

Srijan has experience and expertise in projects involving integration of Drupal with CRM applications. These projects have its helped clients build a reliable CRM strategy.

Jul 11 2016
Jul 11

Docker, a container-based technology which I just came across, is great for setting up environments. It was first introduced to the world by Solomon Hykes, founder and CEO of dotCloud at Python Developers Conference in Santa Clara, California, in March 2013. The project was quickly open-sourced and made available on GitHub, where anyone can download and contribute to it.

Containers vs. Virtual Machines

You might be wondering, "What is the difference between Containers (like Docker) and Virtual Machines"?

Well, virtual machines (VM) work by creating a virtual copy of a computer's hardware, and running a full operating-system on that virtual hardware. Each new VM that you create results in a new copy of that virtual hardware, which is computationally expensive. Many people use VMs because they allow you to run an application in a separate environment which can have it's own versions of software and settings, which are different from the host machine.

On the other hand, container technologies like Docker, isolate the container's environment, software, and settings, in a sandbox; but all sandboxes share the same operating-system kernel and hardware as the host computer. Each new container results in a new sandbox. This enables us to pack a lot more applications into a single physical server as compared to a virtual machine.

Docker containers are isolated enough that the root process in a container cannot see the host machine’s processes or filesystem. However, it may still be able to make certain system calls to the kernel that a regular user would not, because in Docker, the kernel is shared with the host machine. This is also why Docker containers are not virtual machines and thus a lot faster.

Note, however, that Docker relies on a technology which is only available in the Linux kernel. When you run Docker on a Windows or Macintosh host machine, Docker and all it's containers run in a virtual machine

That said, there are two projects trying to bring Docker-style containers natively to OS/X , Dlite and Xhyve. But last I heard, these projects were still very experimental. So consider yourself warned.

When you are done with a container, on a Mac host machine, it’s probably good to suspend the containers, because they run in a virtual machine and that has a lot of overhead. But on a Linux host machine, there would be no need to suspend them because they would not create (much) additional overhead (no more than, say, MAMP).

Docker is a tool that promises to scale into any environment, streamlining the workflow and responsiveness of agile software organizations.

Docker’s Architecture

This is a diagram explaining the basic client-server architecture which docker uses.

Source: http://www.docker.com

Important Terminology

  • Docker daemon: A Docker engine which runs on the host machine as shown in the image above.
  • Docker client: A Docker cli which is used to interact with the daemon.

Workflow components

  • Docker image: A read-only disk image in which environment & your application resides.
  • Docker container: A read/writeable instance of an image, which you can start, stop, move, and  delete.
  • Docker registry: A public or private repository to store images.
  • Dockerfile: A Dockerfile is instructions for how to build a single image. You can think of a Dockerfile as kind of Vagrantfile, or a single Chef cookbook, or an Ansible script, or a Puppet script.

Microservices
Because Docker allows you to run so many containers at the same time, it has popularized the idea of microservices: a collection of containers, each of which contain a single program,  all of which work together to run a complex application (e.g. Drupal).

Taking Drupal as an example, every Drupal site has at least two dependencies: an HTTP server (Apache, Nginx, etc.) running PHP; and MySQL. The idea of microservices would involve packaging Apache+PHP separately from MySQL; as opposed to most Drupal virtual machine images which bundle them together into the same VM. For more complicated setups, you could add another container for Solr, another container for LDAP, etc.

For me, the main advantage of using microservices is that it’s easier to update or swap one dependency of an application without affecting the rest of it. Another way of looking at this is that microcontainers make it easier to modify one piece without waiting a long time for the virtual machine to rebuild.

When I was using a virtual machine on a particularly complex project, if I needed to make a change to a setting, I had to make that change in the Puppet config, then run vagrant destroy && vagrant up and wait two hours for it to tell me that the new configuration wasn’t compatible with some other piece of the system. At which point I had to repeat the two hour process, which wasted a lot of time.

If I had been using Docker (properly), then I could have just changed the setting for that one program, rebuild that program's container (5 seconds), and not have to worry that one piece of the machine needed at least Java 6 and the other piece of the machine could not work without Java 5.

Now that you know the possibilities with Docker, watch this space to find out how all this applies to Drupal.

Jun 27 2016
Jun 27

Caching is an important aspect when it comes to improving site load times and capturing data on user behaviour. It also becomes a big technical roadblock if you’re not rendering dynamic content with a JS framework. This is usually not a part of the technical stack unless specifically architected at the start. Most of the web applications rely on server side frameworks/languages to render the page and serve HTML page on the frontend with basic JS interactions.

The Problem

If you’ve been working on a building personalization engine and have a site with huge traffic which needs Akamai or similar service to serve content, you’d understand the limitations imposed by these systems.

When you set the context of the content to be personalized via taxonomy, the application needs to send back the information to a personalization engine in terms of the browsing behaviour, or purchasing behaviour. If you’re looking for personalization in real-time, such scenarios become more pertinent to your situation. Additionally, if you have caching like Varnish or reverse proxies like Cloudflare or Akamai implemented on your site, purging data and rendering the content becomes very expensive for the application.

The Solution

Unfortunately, the only way to tackle this is to make some major architectural changes in your application. If you’re using Drupal, upgrading the application to Drupal 8.1, which has a built-in Facebook Bigpipe feature, can be a major boost to the application. With Bigpipe caching, major components of your web page are rendered 8 times faster than normal. That’s a huge improvement! There’s a reason people call it Facebook’s secret weapon. Bigpipe integration with Drupal is relatively new and I am still to see some implementations to confidently say it can work out of box. You might want to look at more custom implementations with JS libraries. Hypernova is one such example, which is developed by AirBNB. Check out Hypernova on github and I am sure you can find tons of them which will fit with your tech stack or your choice of technology framework. And don’t assume that your developers (or agencies) would’ve taken this into account. To be able to use the Bigpipe advantage, each entity needs to be defined with cache tags, cache contexts and cache max-age, to define in what scenarios you’d want the personalization to kick in. Wim Leers from Acquia gives a pretty detailed webinar on how you can achieve this with Drupal. 

Here at Srijan, we are in the midst of implementing one such personalization project. Stay tuned as I’ll soon update this post with our learnings from this project.

Jun 23 2016
Jun 23

Adobe Analytics or SiteCatalyst (called Omniture before being acquired by Adobe) is a leading industry solution that collects website statistics and applies real-time analytics and detailed segmentation across all of your marketing channels. It is used for the measurement, collection and analysis of web traffic data. The data collated can be used to discover high-value audiences. It can provide customer intelligence for your business.

Adobe Analytics can be integrated with Drupal 8. Once the integration capability is built between Adobe Analytics and Drupal 8, the client has the Adobe Analytics website to refer to for the traffic data. The client can log in to this site to view a dashboard with website statistics, and gain insights into customer behavior. This data can then be used to optimize the website to improve user experience and conversions.

Srijan has integrated Adobe Analytics with Drupal  successfully many times for its clients, allowing them to manage their content better.

Key Features of Adobe Analytics

The tool allows the capture of real time data that allows understanding of current and relevant business scenarios.

Source: Democratizing Insights with Analysis Workspace

Apart from website traffic statistics like number of hits on each page, number of unique visitors to each page, total hits, exit links, click maps, number of page not found instances, etc. the tool also shows the devices used to visit the website, along with details such as screen size, screen height, screen width and audio/video support on the device. It also gives details of referrals, next URL visited, etc.

Adobe Analytics provides drill down facilities to get precise and comprehensive views on the customers to understand most valuable customer segments or segments that can give business opportunities. The business can categorize customers into personas using the intelligence that the tool provides in terms of product preference, geo-demographics, and behavioral attributes. 

It provides mobile analytics intelligence with which you can understand the mobile app user base and review performance of mobile marketing campaigns launched. It provides rules based decision making tools. Visitor statistics include the number of users by geography, users by language and users by time zone. The client can generate reports for web traffic, based on time parameters.

This data is represented visually as well. Data for multiple websites can be viewed on one Adobe Analytics/SiteCatalyst website. On the home page, the dashboard can be set up to show important/critical indicators from the different websites configured under that account.

Custom data specific to a particular use-case can be captured—this is of great help for enterprises. For example, if an organization wants to capture data on its employees visiting the site, variables to capture employee data such as Employee ID can be included if this data is available in the network. Also, if there are videos on the site, events like 'play video' can be recorded. All this data is valuable in helping clients gain insights into customer behavior and manage their content better.

Integration Challenges

Srijan did face some challenges while integrating Drupal with Adobe Analytics. Since Drupal 8 has a completely different architecture from Drupal 7 and since there was no available module for Drupal * our teams had to work on porting the module to Drupal 8. The implementation had to be modified to ensure that there is no change in the functional performance of Adobe Analytics.

Srijan also had to be careful while handling data. With enterprises, a lot of data is available—both private and public data, which could include a lot of sensitive data that cannot be stored. The integration module had to effectively manage data privacy wherever applicable as per the enterprise confidentiality policy.

Benefits

Clients who have opted for integration of Adobe Analytics with Drupal have benefited from the improved website analytics in various ways:

Improved content strategy and content management - The integration helps clients understand which pages are visited more often and which not. Downloads and payment mechanisms can be tracked. The client can then devise a content strategy based on users' behavior on the website, and provide them with the right information at the right time. This gets more engagement and conversions as per online goals.

Improved customer retention - The tool provides data related to user navigation. It gives details about access mechanisms. The user journey and user map can be understood. This knowledge helps in refining the flow of data on the website, and allows the client to deliver content based on user needs. Better content strategy and improved information flow translate into better customer retention.

Better digital marketing strategy - The statistics provided by the tool helps a client understand how web traffic has changed since the launch of a promotion campaign, and to determine the success of their digital marketing campaigns.

By allowing the client to make better decisions around content and the flow of information on their website, the solution helps them achieve their marketing objectives.

Apr 14 2016
Apr 14

TUI India is part of the TUI Group, a leading leisure, travel and tourism company. The TUI Group is headquartered in Germany. The company started operations in India in 2005, offering travel packages to help craft fulfilling holidays for everyone.

TUI India had already established offline stores in different parts of the country. The company had been using Salesforce to manage its customer interactions. They had a static online presence but did not have an online portal for interacting with customers and selling holiday packages on the Internet. There was also no Drupal Salesforce integration, i.e. no interaction between the website and Salesforce. Customer interactions were therefore never captured.

The main business requirements of TUI India were to revamp the website so that online transactions could be integrated with Salesforce, and holiday packages could be sold seamlessly online.

Srijan had previously worked on other projects with the product owner at TUI India, who was impressed with its technical capabilities, adherence to deadlines and strong focus on lean thinking and agile processes.

TUI India approached Srijan with its business challenges. Srijan provided a digital solution to help TUI interact with online customers, and to allow online customer transactions to be integrated with Salesforce. 

Business and Technical Challenges

TUI India has a separate team that handles Salesforce. Moreover, the different packages provided by TUI are handled by different call centres. Any enquiry or potential sale of a package is therefore routed to the respective call centre. As there was no capture of online information, online business became difficult. There was no tracking of online enquiries and feedback. TUI India also was unaware of the pages customers visited or the links they clicked. 

TUI has different marketing campaigns: a Facebook campaign, an email campaign and a Google campaign. The results of these campaigns were not captured and integrated in Salesforce, making them less effective than they could have been. TUI was unable to measure the success of these campaigns as well.

The technical challenge was that TUI India was not happy with the loading time of the AJAX pop-up forms. To address this, Srijan had to redesign the module to optimise performance.

Srijan's Solution

Srijan developed functionality for TUI India that allows customer queries and searches to be tracked on the Drupal website. These could be integrated with Salesforce too. 

TUI India has different packages, like domestic holidays and  international destinations. They have theme-based packages and campaign-based packages. Different holiday packages are handled by different call centres. Srijan built functionality so that customers could choose a particular package from the website, and the transaction would get routed to the appropriate call centre and thus be recorded in Salesforce. Some of the packages could be bought online. Srijan built application logic to distinguish between these packages, and redirect the customer to the right call centre. 

The website was integrated with Salesforce so that every transaction and enquiry on the different marketing campaigns could be tracked in Salesforce. It became possible for every user action to be tracked using the website and recorded using the Salesforce integration. TUI could find out which page a customer had visited, which package they had enquired about or which campaign they had used. This gave TUI access to a lot of information, allowing them to make better business decisions. TUI India's analytics data improved due to this tracking feature. The company could now track hits, enquiries and actual sales, and analyse different parameters, such as number of hits, packages in demand, etc, to find out how successful the business actually was.

Benefits

The application has been live for the last 10 months and TUI India has derived multiple benefits. These include:

  1. Improved tracking of performance data: Srijan's solution enables the company to track all transactions on the website. The pages visited, links clicked, enquiries, feedback, packages selected can be tracked. This helps TUI India measure its performance and the level of customer satisfaction, as well as manage offerings and marketing campaigns better.
  2. Flexibility to create custom rules: Srijan has set up multiple rules for TUI IndIa. Depending on the package that they have enquired about, the customer is routed to the appropriate call centre. Additionally, some packages can be bought offline only; in case a customer shows interest in one of these, they are routed to the call centre handling these requests.
  3. Reduced costs and effort: TUI India has several marketing campaigns and each of these has a separate website and server. All of these campaigns have been integrated in Salesforce with Srijan's solution. Now, TUI only has to manage one server, instead of multiple websites and servers.
  4. Better management of enquiries: JustDial queries are being integrated with Salesforce using the website. Whenever there is an enquiry in Justdial for TUI, JustDial sends the request details to TUI India, and this can be tracked on both the website and Salesforce. TUI India has also integrated Livechat, and enquiries there can also be tracked on Salesforce as well as the TUI website.

Other than  Drupal Salesforce Integration, Srijan also helped TUI  with Drupal website development with upgraded UX and multiple functionalities and integrations which improved customer experience and simplified lead capturing.

Feb 18 2016
Feb 18

Enterprises the world over now have Drupal as a key component of their digital strategy. However, it can be challenging for them to scale up their continuous development operations for Drupal. The reasons can be many: some find it too expensive to have onshore teams support them. Some enterprises do not have the confidence in their multinational system integration partners to deliver expert Drupal services that is business centric. Some, like Flight Centre, have tight workflows which an outsourced agency would find hard to match pace with. In all such cases, Srijan is helping enterprises get comfortable with outsourced Drupal development and consulting services. This is the story about Flight Centre and how it decided to test whether outsourcing was feasible for them or not, and eventually contracted Srijan as a long-term development partner.

Flight Centre (FC) is one of the world’s largest travel agency groups. It has company-owned operations in 11 countries and a corporate travel management network that spans more than 75 countries. It employs more than 15,000 people globally and has a total of 2500 stores.

To enable its operations, the company has developed multiple products to enable smooth running of their business workflows. FC runs a very tight, highly secure, and well run development process. Their IT setup has multiple third party integrations with Drupal, and is quite complex as they have created and extended a lot of custom and contributed modules. FC’s stringent design/code reviews help in maintaining the intrinsic quality of the product to make sure their daily product releases go as per plan without any hiccups. A very strong organizational workflow is designed to enable such quick rapid development and frequent releases. This brings agility to their business.

So it was but natural for FC to think that outsourcing any development would likely not work out for them. When Srijan met the FC team at DrupalCon, a conversation started on how outsourcing product development work has worked out well for Srijan’s clients like TheRecordXchange and OnCorps. Over multiple conversations FC decided to test outsourcing waters by contracting Srijan for two sprints. The work involved working on tickets related to their travel portal. Here is how FC decided to extend it to three more sprints, and then went on to hire Srijan as its continuous development partner.

Adherence to code standards: FC has had great expectations from Srijan on many counts. One of them was code quality. FC follows stringent code reviews to ensure that all Drupal, JS, HTML/CSS code adhere to best practices. Srijan’s team was able to quickly adapt to their development lifecycle process while ensuring total adherence to the FC code standards. FC gained confidence in Srijan’s capabilities and was happy to see Srijan pick-up speed by the second sprint, and come back to FC’s team to take on more stories from the backlog.

Working in FC’s Agile environment: FC runs its own JIRA instance to track its workflow. Srijan has been using JIRA for several years now and has a mature JIRA Agile workflow inhouse. In this project, Srijan was required to log into FC’s instance and track work and make updates. However, because of technical issues, Srijan’s team would end up spending about 20 minutes, just trying to log in. This had a huge impact on productivity. Srijan proposed that the sprints be run on Srijan’s JIRA instance. While this meant an additional workload for the FC team, they graciously agreed, as this would quicken things up in development. Srijan’s team reconfigured the JIRA workflow to better represent how the work with the FC team must happen.

Use of tools: Srijan uses various tools to streamline work. Other than JIRA, Srijan uses Ideaboardz for conducting retros with the FC team along with Skype. Planning Poker is used in sprint planning. For inhouse project communication and management, Slack is used, which also keeps the client team in the loop.

Communication: As the work time overlap between India and Australia is pretty narrow, it was important for communication to be efficient and effective. Srijan’s process involved in-house standups, immediately followed by a 10-min stand-up with the FC team. Sprint planning would take just one hour. The credit goes to the FC team for writing the backlog very well. Retros would be run for 20 mins. The focus during all communication was on seeking help and communicating issues while keeping a problem solving approach.

Leveraging time zones: The FC team was able to leverage the time zone difference by having a Drupal team working during and right after their work hours. This enables them to deliver a lot more releases within a shorter span.

Switching from Scrum to Kanban: After a few sprints Srijan realised that the sprints were getting delivered and tested at the development environment on time. However, code reviews and releases were taking longer. So the entire process, from story concept/writing to having it working on production was taking more than two weeks. This was because the workflow had items which needed other teams such as FC core developers to perform the code review, and devops team (for the releases). Hence, although development was complete from Srijan’s point of view, it was not made live due to dependencies on other teams. We were, thus, unable to close the sprints. 

So Srijan switched to Kanban - Continuous Flow model to measure throughput over measuring velocity. This model has really worked very well for Srijan, and the FC team is able to eliminate any bottlenecks in the story as it flows to the production.

FC is happy that Srijan’s team asks questions that are important from the development point of view. They are also happy with the smooth and streamlined communication that happens between the teams. FC has now contracted Srijan to continue work on the travel portal for a year.

Here is what our client has to say.

Srijan have become a very valued part of the extended Flight Centre team and are integral in our Digital plans to improve our retail brand websites. From the beginning Srijan have been open to feedback and have made some core changes to their team structure and processes so it better aligns with Flight Centre's approach and as a result we are seeing great benefits in our partnership with Srijan. We only see this improving over time which promises to be an exciting period in the future.

Luis Landaverde

Digital Portfolio Manager 

Flight Centre Travel Group

Explore how Srijan can help you scale up enterprise Drupal teams, and deliver as per the distributed agile development methodology.

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web