Oct 29 2019
Oct 29

For DrupalCon Amsterdam, Srijan ran a competition with the prize being an Apple Watch 5. It was a fun idea. Try to get a screenshot of an animated GIF slot machine showing 3 matching logos and tweet it.

Try your luck at @DrupalConEur Catch 3 in a row and win an #AppleWatchSeries5. To participate, get 3 of the same logos in a series, grab a screenshot and share it with us in the comment section below. See you in Amsterdam! #SrijanJackpot #ContestAlert #DrupalCon

I entered the competition.

I managed to score 3 of the no logo logos. That's gotta be worth something, right? #srijanJackpot

The competition had a flaw. The winner was selected based on likes.

After a week I realised that I wasn’t going to win. Others were able to garner more likes than I could. Then my hacker mindset kicked in.

I thought I’d find how much 100 likes would cost. A quick search revealed likes costs pennies a piece. At this point I decided that instead of buying an easy win, I’d buy a ridiculous number of likes. 500 likes only cost 7USD. Having a blog post about gaming the system was a good enough prize for me.

Receipt: 500 likes for 7USD

I was unsure how things would go. I was supposed to get my 500 likes across 10 days. For the first 12 hours I got nothing. I thought I’d lost my money on a scam. Then the trickle of likes started. Every hour I’d get a 2-3 likes, mostly from Eastern Europe. Every so often I’d get a retweet or a bonus like on a follow up comment. All up I got over 600 fake likes. Great value for money.

Today Sirjan awarded me the watch. I waited until after they’ve finished taking photos before coming clean. Pics or it didn’t happen and all that. The insisted that I still won the competition without the bought likes.

The prize being handed over

Think very carefully before launching a competition that involves social media engagement. There’s a whole fake engagement economy.

Share this post

Oct 28 2019
Oct 28

Drupal Commerce 2, like Drupal 8, was a big change from previous versions. The code base is much different and it’s quite a learning curve when moving from Drupal 7 to the more complex approaches in Drupal 8. However, this is good. The new versions are modern and all around better. I’ve had a number of revelations while working with Drupal Commerce 2 and Drupal 8 that made me smile. In this post, I’ll explore one revelation I had while working with Drupal Commerce 2’s checkout handling and how it’s forward-thinking development has paved the way (and encourages all new checkout panes to follow suit) for headless ecommerce using Drupal.

Drupal Commerce 2 checkout is not a form… say what!?

Generally, when you think of checkout, you think of it as a sequence of events and one big final submission. This is further driven home by the idea that you can, and should, be able to go back and edit your checkout choices before the final submission. In Drupal Commerce 2, going back and forth between checkout steps is supported, but there is no final submission handler that saves everything.

Wait, what? That’s right, there’s no need to save all the data on the checkout form once checkout is completed. You see, all checkout panes (a step in the checkout process) have a submission event that gets called when it's time to save the data. So if you’re going to save data in a checkout pane, you gotta do it after your customer has moved forward in the checkout process but before your customer is ready to commit to the checkout pane’s final value state (complete checkout). Submission is perceived to be at the end of checkout, not before.

On the surface that might make sense, in fact, this workflow being so obvious might even blind you to the implications. Since each pane is basically handling its own submission workflow, you can’t allow your form state to persist choices and not make a decision until the end. You’re probably, like me, thinking that saving data and reacting to data is the same thing. But this assumption is old, out of date, incompatible with best practices, and in checkout for Commerce 2, causes design problems.

Click to discover your ideal architecture with our analysis.

Explanation through an example: A checkout newsletter subscription

A common want is to include a little checkbox underneath a contact information email field where new or returning customers can opt-in to a newsletter. Sure, that’s no big deal, right?

Our customer expects that things in checkout aren’t real until they complete checkout (i.e. nothing is saved until they actually place the order). On the other hand, Drupal Commerce 2 expects all panes to save their data after a “continue to next-step” button gets clicked, submitting that pane.

Here’s how the checkbox would be made using our current form submission logic:

  1. Create a CheckoutPaneBase object that collects data through a checkbox
  2. On the pane form submission, subscribe the customer to your newsletter

Do you see the problem? If we react on pane submission (our only choice in our current way of thinking), we’ll subscribe the customer to our newsletter well before they are done with checkout. In fact, each time they see the first page of checkout and proceed to the second, they will be subscribed to our newsletter. Not only is this not what the customer would expect, but subscribing them multiple times is totally unnecessary and would likely cause problems. Subscribing the customer on pane form submission is the wrong approach.

This is where things get really trippy – and awesome and beautiful and wonderfully clever and great. You see, Drupal 8, which Commerce 2 is built around, has been designed to not require forms, form states and value persistence in order to trigger important actions. This is a whole new way of thinking and maybe the most important to our discussion. Previous to this, most Drupal 7 developers would have assumed that all forms require user-facing interfaces that would be submitted, but that is a pretty brutal assumption and has plagued a lot of Drupal installations over the years. If that was still the case, then form submissions are something that headless implementations of Drupal would never really trigger. There must be a better way.

Headless decoupling breeds better code using events

If checkout was a single form with a final submission handler that submitted payment, subscribed users to newsletters, saved addresses to profiles, and did all the things you would expect all at once, then all the code that manages these things would have to react to a single form submission.

However, if we use Drupal's built in event system instead, we suddenly have much greater degree of control. But before we get into that, let’s first take a quick look at what events are and where they come from.

Drupal 8 made a big shift towards being object oriented by adopting Symfony within its framework. Symphony provides a number of components useful in modern object oriented programming, one of which is events. Events in Drupal 8 give developers a new way to extend and modify how interactions with core and other modules work. If you’re already familiar with Drupal 7, events are basically meant to replace hooks. Drupal 8’s event system documentation helps us to understand the basic concepts and components making up the event system.

  • Event Subscribers - Sometimes called "Listeners", are callable methods or functions that react to an event being propagated throughout the Event Registry.
  • Event Registry - Where event subscribers are collected and sorted.
  • Event Dispatcher - The mechanism in which an event is triggered, or "dispatched" throughout the system.
  • Event Context - Many events require specific set of data that is important to the subscribers to an event. This can be as simple as a value passed to the Event Subscriber, or as complex as a specially created class that contains the relevant data.

Source: Drupal.org documentation, Subscribe to and dispatch events (link)

Getting back to our checkout scenario, if you use the events system and your checkout completion is simply a state transition from Draft to Completed, then other modules could subscribe to that transition event, take the saved data from the different pane submissions, and do whatever they want with it.

Do you see the beauty here? By forcing checkout panes to submit before the final submission, we (module builders, implementers, etc.) have a baked-in reason to store checkout decisions on the order so that order events can access them separately, giving us the ability to create orders with checkout decisions saved that can skip checkout completely and still have the events trigger the needed actions. This is quite powerful and opens up a whole new world of possibilities. Of course, since this is an implicit design choice, it’s up to the author of the module or code to see the reasons and embrace them.

Entity + event-based instead of form-based

So to complete our newsletter subscription pane example using our new knowledge of events instead of form submissions, here’s what we would do:

  1. Create a CheckoutPaneBase object that collects data through a checkbox and saves it to the order (either through a field value or the ->setData typed data interface.
  2. Save this value on pane submission but don’t act on the value (i.e. don’t subscribe the user)
  3. Create an event subscriber and use the transition event you want to use as a trigger. Completing checkout makes the most sense.
  4. Treat the order value as a "request subscription to newsletter." Then, when the event fires and the event subscriber runs, it can look for the saved value and set the user to subscribed or not after it returns. This allows us to handle someone going through an event twice for some reason, like for multiple orders, etc.

Your customer gets subscribed to your newsletter when they, and you, expect them to. No forms needed. ISN’T THAT AMAZING!

Thanks to the many authors of Drupal Commerce 2, including Bojan Živanović and Matt Glaman, that implemented this design choice years ago, many modules and implementations are simply technically better and likely ready for headless implementations now that headless is all-the-rage.

And best of all, from a developer standpoint, this also means the bulk of your most critical automated tests that interact with your code doesn’t have to access the checkout form. They simply have to have orders that get transitioned. This makes writing tests, which equates to better code, simpler.

Your Drupal Commerce experts

As a full service Drupal agency, Acro Media has significant expertise in digital commerce architecture, ecommerce consulting and design, customer experience, Drupal development and hosting architecture. We would love the opportunity to work with you.

View Our Drupal Commerce Services

Oct 28 2019
Oct 28

The Drupal 8 version of the Salesforce Suite provides a powerful combination of features that are ready to use and mechanisms for adding custom add-ons you may need.  What it does not yet have is lots of good public documentation to explain all those features.

A recent support issue in the Salesforce issue queue asked for example code for writing queries. While I’ll address some of that here, there is ongoing work to replace the query interface to be more like Drupal core’s.  Hopefully once that’s complete I’ll get a chance to revise this article, but be warned some of those details may be a little out of date depending on when you read this post.

To run a simple query for all closed Opportunities related to an Account that closed after a specific date you can do something like the following:

      $query = new SelectQuery('Opportunity');
      $query->fields = [
        'Id',
        'Name',
        'Description',
        'CloseDate',
        'Amount',
        'StageName',
      ];
      $query->addCondition('AccountId', $desiredAccountId, '=');
      $query->conditions[] = [
        "(StageName", '=', "'Closed Won'",
        'OR', 'StageName', '=', "'Closed Lost')",
      ];
      $query->conditions[] = ['CloseDate', '>=', $someSelectedDate];
      $sfResponse = \Drupal::service('salesforce.client')->query($query);

The class would need to include a use statement for to get Drupal\salesforce\SelectQuery; And ideally you would embed this in a service that would allow you to inject the Salesforce Client service more correctly, but hopefully you get the idea.

The main oddity in the code above is the handling of query conditions (which is part of what lead to the forthcoming interface changes). You can use the addCondition() method and provide a field name, value, and comparison as lie 10 does. Or you can add an array of terms directly to the conditions array that will be imploded together. Each element of the conditions array will be ANDed together, so OR conditions need to be inserted the way lines 11-14 handle it.

Running a query in the abstract is pretty straight forward, the main question really is what are you going to do with the data that comes from the query. The suite’s main mapping features provide most of what you need for just pulling down data to store in entities, and you should use the entity mapping features until you have a really good reason not to, so the need for direct querying is somewhat limited.

But there are use cases that make sense to run queries directly. Largely these are around pulling down data that needs to be updated in near-real time (so perhaps that list of opportunities would be ones related to my user that were closed in the last week instead of some random account).

I’ve written about using Drupal 8 to proxy remote APIs before. If you look at the sample code you’ll see the comment that says: // Do some useful stuff to build an array of data.  Now is your chance to do something useful:

<?php
 
namespace Drupal\example\Controller;
 
use Symfony\Component\HttpFoundation\Request;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Cache\CacheableJsonResponse;
use Drupal\Core\Cache\CacheableMetadata;
 
class ExampleController extends ControllerBase {
    public function getJson(Request $request) {
        // Securely load the AccountId you want, and set date range.
 
        $data = [];
        $query = new SelectQuery('Opportunity');
        $query->fields = [
            'Id',
            'Name',
            'Description',
            'CloseDate',
            'Amount',
            'StageName',
        ];
        $query->addCondition('AccountId', $desiredAccountId, '=');
        $query->conditions[] = [
            "(StageName", '=', "'Closed Won'",
            'OR', 'StageName', '=', "'Closed Lost')",
        ];
        $query->conditions[] = ['CloseDate', '>=', $someSelectedDate];
        $sfResponse = \Drupal::service('salesforce.client')->query($query);
 
    if (!empty($sfResponse)) {
        $data['opp_count'] = $sfResponse->size();
        $data['opps'] = [];
 
        if ($data['opp_count']) {
            foreach ($sfResponse->records() as $opp) {
                $data['opps'][] = $opp->fields();
            }
        }
    }
    else {
      $data['opp_count'] = 0;
    }
    // Add Cache settings for Max-age and URL context.
    // You can use any of Drupal's contexts, tags, and time.
    $data['#cache'] = [
        'max-age' => 600, 
        'contexts' => [
            'url',
            'user',     
        ],
    ];
    $response = new CacheableJsonResponse($data);
    $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($data));
    return $response;
  }
}

I left out a couple details above on purpose. Most notable I am not showing ways to get the needed SFID for filtering because you need to apply a little security checking on your route/controller/service. And those checks are probably specific to your project. If you are not careful you could let anonymous users just explore your whole database. It is an easy mistake to make if you do something like use a Salesforce ID as a URL parameter of some kind. You will want to make sure you know who is running queries and that they are allowed to see the data you are about to present. This is on you as the developer, not on Drupal or Salesforce, and I’m not risking giving you a bad example to follow.

Another detail to note is that I used the cache response for a reason.  Without caching every request would go through to Salesforce. This is both slower than getting cached results (their REST API is not super fast and you are proxying through Drupal along the way), and leaves you open to a simple DOS where someone makes a bunch of calls and sucks up all your API requests for the day. Think carefully before limiting or removing those cache options (and make sure your cache actually works in production).  Setting a context of both URL and User can help ensure the right people see the right data at the right time.

Oct 25 2019
Oct 25

 

With the proliferation in the touchpoints that enterprises use to connect with customers and provide them with the valuable experience, it’s has become a tedious and challenging task to optimize the content far and wide.

Further, the number of devices that consumers use to access brand content- desktops, mobile phones, laptops, tablets, and smartwatches - with yet more looming on the horizon; have their own set of restrictions and specifications which again increases the complexities of content creators & marketers in the dissemination of the personalized content.

Also, this Gartner report suggested that marketers & decision-makers should now opt for a unified experience strategy to streamline their customer-facing content. This can be done through the implementation of the latest technology and channels to promote dynamic personalization and optimize content in an avant-garde manner. And all this can be executed by dint of Content-as-a-Service.

This blog provides further insights on CaaS, its use cases & features, and how enterprises and marketers can leverage Drupal as CaaS for managing their content efficiently.

What is Content as a Service?

Content-as-a-Service (CaaS) focuses on managing structured content into a unified repository or feed that other applications and properties consume.

The idea behind it is to provide a future-ready CMS that makes content readily available by employing API with or without developing the presentation tier. The presentation layer can be a website, a mobile app, or a feed into a device’s interface. 

The idea behind it is to provide a future-ready CMS that makes content readily available by employing API with or without developing the presentation tier

This separation between the content itself and its presentation implies that RESTful APIs, for instance, can provide the same content that serves both your website to an iOS or Android app.

Put simply, it draws a clear line between the people creating the content, the people delivering the content, and of course, the people consuming it.

A long box with different elements inside

Source: Bloomreach

Characteristics of Content-as-a-Service solutions include:

  • The content disseminated across all channels via a Rest-based API

  • A method of developing content as per prescribed content models

  • Structured formats for returning content via simple queries.

  • Distributed authoring and workflow content administration

  • A content repository hosted in the Cloud for universal access

  • Triggers that alert customer experience applications that consume content to content updates

  • Metadata definitions that can be defined and move along with the content via API

How Does CaaS work?

The actual implementation of CaaS can vary as in the case with any architectural pattern but here is a general overview of how CaaS platform may work-

Multiple boxes connected in flowchart

The content management UI is a web application to centralize all content authoring and content management of the platform. Content is placed inside centralized storage: it is to note that the format and technology used for the same does not matter at this point, what matters is the correct storage of data.

At last, the content is made available through a technology-agnostic API, like REST API. There are products available in the market which lets you author the content whilst working on the presentation layer to provide you with a wide array of applications you may need (for instance, web apps, mobile apps). 

You could, as an alternative, also provide access to the public APIs of these platforms, allowing others to take care of building their own presentation layers and saving you the trouble of working on that. 

Know how Srijan helps enterprises in modernizing their platforms to manage their content across various channels

Explore Our Services

Why CaaS?

Creating dedicated content for every specific medium becomes cumbersome to the point of being unworkable

 

Have you ever thought that how enterprises and marketers can tweak content for each one of the channels and yet ensure that the content is safe and sustainable for any modification in the future? Since it’s understood that creating dedicated content for every specific medium becomes cumbersome to the point of being unworkable.

So, how is it possible? The answer to this simple question is CaaS!

It can be efficient for enterprises those who want to upgrade their CMS either into one which can serve as CaaS or when there was nothing before.

However, the key deciding factor(s) at the end will be your current context. The reasons are mentioned below-

  1. Siloed Content
    Enterprise deals with an enormous amount of content and the sources from where it comes in and having to manage them independently can prove labor-intensive. Either company can spend a lot of time from their schedule to simply manage the content or spend too many resources having a team manager & a set of independent tools with the added overhead of getting them to collaborate with each other. 

In either case, they are most likely dealing with one or maybe more of such situations:

  • They don’t own a uniform content format, which can be made use of for easy distribution. 

  • They don’t own a centralized method to make content available for consumers, be they internal or external ones.

  • Metadata is not given due importance in empowering their content and making it rich for consumers.

  • And centralized storage, so, companies have to put extra efforts to move from one source of data to the next.

The adoption of CaaS could be beneficial to anyone looking desperately to switch their content management strategies. A switch to content-centric approach, i.e., Content-as-a-Service, would significantly improve their performance.

2.   Limited formats for your content

Content has to be an abstract entity, and choosing the way how it should be consumed, should be your top priority

Your problem might not be about managing your content but inefficiency in reaching to the targeted consumers due to a restricted amount of formats you are compatible with. Content-as-a-Service is again the perfect solution for such kind of scenarios.

Many CMS, such as WordPress, take the responsibility for presentation ensuring that you don’t have to worry about it. However, you also get restricted to the number of devices with which representation of your content is compatible. There could be so many devices where your content can be rejected immediately or simply not pleasant to be consumed in. For instance, have you ever considered how will your online trading WordPress website will show stocks on your smartwatch? What about a VR headset? Or a holographic projection? Agreed that last one does not exist yet but you must ensure that the company is well-equipped and future-ready to be compatible with new technologies, especially when it is moving at breakneck speed and released to the public every day.

Even the new foldable phones are going to be accessible for the public now- what will happen then to the content?

Companies will limit their odds of success if they kept their content tied to their representation. Content has to be an abstract entity, and choosing the way how it should be consumed, should be your top priority.

3.  Native mobile app needing content

Content-as-a-Service provides you with the flexibility to use your content however you want, now or in the future

Since content display on mobile phones and apps demand extra attention, most of the traditional CMS fails to provide the necessary tools and facilities for the same. They only provide web-compatible formats (e.g., HTML) making it unfit for your app.

You can work around this by using a headless, decoupled CMS or Content-as-a-Service to simplify your work. 

In a nutshell, Content-as-a-Service provides you with the flexibility to use your content however you want, now or in the future.

What Drives the Adoption of CaaS?

There are two groups primarily that can leverage this type of content delivery the most: developers and business users/content creators.

  1. Developers

Developers do require CaaS no matter they are mobile app developers who need a backend to feed their apps with content or front-end developers who expect to interact with an API. 

Such technologies have been around since long and widely accepted as well, further fueling the demand for CaaS.

2.  Business
  • Those content creators who want to increase the reach of their content to as many platforms and channels as possible- web, mobile, social networks, smart devices, and so on. 

  • It becomes exorbitant to have a separate solution for every channel- development-wise and maintenance-wise. 

  • It is convenient to manage a single editorial team and a single software stack for all channels.

  • CaaS solutions can help developers in being more productive and efficient with the tools they like to use.

CaaS Use Cases

It’s often perceived that there is no single CMS that is equally good for maintaining both a personal blog and a huge online shop. Contrary to the assumptions, CaaS outperforms its harbingers in some use cases-

CaaS focuses on pushing wherever and whenever required, designers need not worry anymore

Pushing content on a mobile app via CaaS proves as the most effective way to have dynamic in-app content without having the need to resubmit the app to the app marketplace.

  • Multi-channel publishing

CaaS CMS is also beneficial when content needs to be transmitted across various platforms, for example, you want to push the same content to a website as well as to mobile apps.

  • Rich Web apps

Modern view controller, i.e., front-end frameworks, such as AngularJS, React, and Ember synchronizes well with structured content via APIs.

CMS can considerably reduce the complexities and simplify workflows in an existing project, for instance, eliminating hard-coded content from HTML pages, and maintaining them with a CMS. In contrast, the API by CaaS makes it highly integration-friendly and robust.

  • Tailored UX

The CMS of web age posed strong design restrictions. Though you could fully tweak the UI but building a Wordpress-powered web app from scratch was not very likely. 

On the other hand, as CaaS focuses on pushing wherever and whenever required, designers need not worry anymore!

It becomes a tedious task to manage already existing content and also the one arriving from multiple sources. Therefore, it is best-suited to upload content into one unified repository by creating content via APIs.

Content structured via API makes it easy for AI-powered agents and chatbots to move it around and churn it for ensuring relevance than screen scraping and using natural language for processing unstructured content.

How Drupal Can Prove to Be An Effective CaaS?

Drupal has unfolded the idea of Content-as-a-Service (CaaS) to solve the dilemmas posed by our newfangled digital ecosystem & its extremely high demand for new and different types of content. 

A square with multiple circles and squares connected to each other

Following features on how Drupal can be an effective CaaS-

  1. Reusable future-proof content

Drupal content can easily exist in the form of reusable chunks

Generally, CMSes manage content in a back-end repository and push it to the front-end templates for serving an experience.

However, Drupal decouples the back and front end whenever required. So, Drupal content can easily exist in the form of reusable chunks: free from the presentation and set for delivering content to sites and apps. Thus, content becomes future-ready.

  1. Set front-end developers free to create a better experience

With Drupal’s presentation-neutral content and a RESTful API, front-end developers can freely carry out their creative vision and build interactive sites & apps with the tools like Node, Angular, Backbone, Ember and others.

  1. Fill the content bucket more easily 

Content nowadays should not be restricted to one source only rather it should move in and out freely. And Drupal helps in that by ingesting third-party content (e.g. from aggregators and syndicators) to bring content into your Drupal ecosystem and making it further easy to push to any site, app or channel.

  1. Share content beyond your sites

Today, organizations want to share content on multi-channels where the audiences are inside of content aggregators disrupting the news business. Content teams need an optimal way to create content & then share it with minimal effort. And Drupal does that! The other sites and apps you choose can easily churn Drupal content.

  1. Alter the look

The separation of backend content from front-end presentation gives a leading edge to developers to refine an experience without worrying about the content in the CMS.

Additionally, Drupal’s 8.0 version comes with an inbuilt REST API which marked its beginning of API-first initiative.  

REST allows apps and websites to read and update information on the websites via the web. It also encourages developers to rely on HTTP methods to operate on resources managed by Drupal.

Furthermore, the Drupal community has been working on shipping Drupal modules with web service APIs instead of depending on a central API module in the upcoming releases of Drupal.

Contenta, one of the Drupal’s distributions, is an HTTP API provided for ready-to-use purpose with full auto-generated documentation. It offers modern API capabilities with JSON API, and also feeds content in the JS-driven websites, mobile applications, TV and even fridge applications.

Contenta supports Create Once, Publish Everywhere, be it single application development or multi-channel publishing.

Then there is another distribution, Reservoir, which helps in implementing the Decoupled Drupal architecture, is very flexible and simple-to-use for building content repositories of any application. It also helps in modeling content, governing content, and interacting with that content through HTTP APIs. 

In a nutshell, Drupal’s API-first approach offers the following benefits which further bolsters CaaS model-

  • The decoupled approach separates the presentation layer from the service layer thus allowing a detailed and dedicated focus on each of them.

  • A foolproof approach to help organizations connect to infinite digital signages for enhancing customer experience

  • Increased interaction with customers on their preferred devices will eventually scale up your marketing efforts

  • The decoupled approach is flexible and open for changes, addition, and modification of the structure.

  • Deploying a front-end framework like Angular or React will lead to sophisticated, enriched and dynamic web experience

 

Learn more about Drupal API-first initiative from here-

[embedded content]

Features to Lookout For in CaaS

CaaS comprises of three vital parts: the editing interface (typically a web app), the CMS infrastructure capabilities, and the development ecosystem.

Web editor

  • Enables content architects to design the structure of the content

  • Enables content editors to manage content from creating, updating to collaborating on it.

Technical infrastructure

  • Offers performance, uptime, and scalability to ensure that enterprises can rely on their vendor to deliver content in mission-critical applications.

  • SLAs with short incident response times and access to dedicated staff- so in case of a problem with a mission-critical app, companies can be provided back up again and fast.

  • Mobile delivery capabilities so that great user experience can be delivered even in network-challenged environments ( like subways, rural areas) and high bandwidth cost areas (such as emerging markets).

  • API-based importing, management, and delivery for controlling content programmatically in both ways

  • All-inclusive and up-to-date documentation to help the development team start using the tools quickly.

  • CDN ( content delivery network) to deliver the content rapidly

Development ecosystem

  • SDKs and libraries to increase the speed no matter what the tech stack is

  • Demo app source code so that developers don’t feel the need to reinvent the wheel all over.

  • Third-party integrations to obtain value from existing tools.

Other Characteristics of CaaS

The decoupled approach ensures that code and content are placed separately so that marketers and developers can do their respective work

  • Decoupled approach

The decoupled approach ensures that code and content are placed separately so that marketers and developers can do their respective work. Teams can also work parallelly on a creative copy, enticing visuals, and expert integrations in one unified platform.

This is the quintessence of the headless CMS approach - agnosticism towards how content is presented. This frees developers from creating highly custom front-ends and apps since they get to define the content display part.

A box with various elements listed inside and interconnected

                                                                       Source: Gartner 

  • Cloud setup

The complete separation of the content management and display part allows organizations to migrate infrastructure between Cloud and hybrid, even at the site level or project level. Some projects can be installed locally while some on Cloud depending on the business’ choices for optimization as per needs. 

Centralized Content-as-a-Service lets businesses evaluate the content consumption across the digital ecosystem. This ceases businesses from duplicating their efforts and content when posting to microsites, international sites, or apps. It can also measure the use of that content by looking at the API connections used to deliver that content, and keeping track of where the content is going. 

In the End

The digital revolution and breakthrough in technology have accelerated the efforts of content creators - be it creation, designing, or dissemination. The goal is clear- refined user experience.

With that said, the creation of content in abundance and its delivery as a service through thousands of APIs will generate more data thereby assisting content developers to create more precise business models.

The technology is already in place, and the architectural patterns will allow enterprise systems to scale up without hampering their performance.

Content-as-a-Service ensures that developers are rendered maximum freedom and flexibility to realize their digital innovation. Drupal as a CaaS has been delivering a wonderful experience to both content editors and developers alike.

It is definitely a convenient way to ensure that your strategy is future-proof and can handle any new media in the future.

Oct 25 2019
Oct 25

Long gone are the days, when cellphones were used just for calling purposes and desktops were switched on to browse the web. Today, information and entertainment can be accessed from anywhere and from any device.

According to Pew Research, over 95% of people currently own a cell phone, out of which more than 70% are smartphone users.

Users expect the best possible accessibility and functionality no matter what platform they're on. Let’s understand how Drupal solves the challenges inherent to this evolving model of content consumption with the concept of Create Once Publish Everywhere.

Understanding the Approach

COPE is a content management technique allowing content creators to add content in one place and repurpose it multiple times for different mediums.

It is important for enterprises to manipulate their content strategy as customers engage with the content they’re interested in across different touch points as per their needs.

So it’s beneficial to consider COPE approach while developing a web application. This revolutionary concept allows a considerable amount of work to be done in minimal time, effort and resources.

 

Marketers need to strategize for publishing content to this huge list of channels by treating content more like data. It’s no use conceptualizing content in the form of html pages, as this doesn’t apply to all forms of content available today. For example, through a smart speaker, you can book airline tickets, book a cab or pay your bills easily. The interaction with this conversational UI cannot be displayed through an html page as it has no visual display or screen.

It is important to understand that a smart speaker and a website do not understand and respond to the content in the same way.

Streamlining their ability in reaching out to their customers on their preferred device will allow enterprises to better scale their marketing efforts. Instead of html, enterprises need to transition towards structured content model by organizing digital content into independent fields so as to incorporate COPE across numerous channels.

On the other hand, the structured content approach could complicate an organization's digital strategy. This can lead to over dependence on Drupal as the platform for content distribution.

Drupal’s Solution to COPE

Drupal can provide a solution for your enterprise for content distribution to multiple channels by powering every instance of your digital system by adopting an API-first architecture.

Through API-first technique, the central web service would interact with a variety of applications to exchange data over a network. Drupal allows the API-first approach while decoupling the front end and using another cutting edge technology for the presentation.

Enterprises may implement a decoupled strategy to leverage Drupal as a service layer to drive complex digital ecosystems, or to provide front end teams with popular JavaScript framework capabilities or to use Drupal to power data to multiple touchpoints.

Drupal can provide the right solution to every problem, and an API-first approach could work when it is necessary to utilize technologies outside of the Drupal context.

Drupal gives the ability to make COPE a reality by providing the following:

  • Fields - to present different information such as image, video, product, text, select list, etc on the website
  • Content types - to make data more atomic for reuse
  • Views - to create lists of content curated by content type
  • Entity reference - to dynamically pull content from one page into another
  • View modes - to present the information in different formats on different pages
  • Services - to make information available to apps and feeds

API-first or decoupled architecture is considered among the most popular solution to create flawless digital experiences. The approach gives developers the flexibility to innovate as well as ensure future-proof builds that don’t require re-creating the entire feature.

Big names like Netflix have benefited from the decoupled approach in publishing content to every device which a user uses.

Drupal’s Distribution : Contenta

It’s often a challenge for non-drupalers to go for decoupled Drupal and enjoy the benefits of COPE as programming with decoupled Drupal is only for Drupal developers.

But, now the Drupal community has come up with a way to make it easier for them to leverage the power of decoupled drupal hassle free with Contenta.

Contenta is a stable API-first Drupal distribution adapted to make lives of non-Drupalers simpler and help them leverage Drupal 8’s outstanding capability for building decoupled application. With the help of built-in kits assembled with needed tools and configuration and demos, it can help to create cutting-edge apps in almost no time. After all decoupled Drupal should benefit everyone to its full potential.

https://www.youtube.com/watch?v=-KiMgk4wx2c

Keeping in mind the expertise in the subject, Contenta is simple and easy to use along with easy to understand documentation to refer for help and is fully-equipped to build an entire decoupled application without any external help or dependency on a front-end technology.

You can take up any front-end technology to go for with Contenta. So if you’re a front-end developer and are in search of a powerful back-end CMS for that impressive app that you’re planning to develop, you’ll just need to install Contenta and see for the out-of-the-box collection of your preferred front-end powered app examples that Contenta delivers by default.

Srijan teams can help you empower your marketing ability to reach out to enlarged list of customers and leverage Contenta to build decoupled applications for your enterprise. Reach out to us with your requirements and let our experts work on your needs.

Oct 24 2019
Oct 24

Marketing department these days are feeling the heat to make processes faster, agile, and efficient in this fast-paced digital world. That’s where the concept of Drupal comes into the picture! 

Drupal, since its inception, has been considered crucial for the companies which are trying to get on the digital transformation bandwagon in order to provide a faster and more nimble digital experience to customers.

Drupal comes equipped with a set of marketing tools to target the right audience and increase the overall ROI for the businesses. Additionally, the suite of tools and solutions available, build a solid foundation important for marketers, to unearth its potential and other martech capabilities; making it one of the most powerful and widely approached platforms for all the marketing needs. 

The blog gives you insights on how Drupal can be a perfect choice for marketers.

Leveraging Drupal For Marketing

Drupal has become an inseparable part of the marketing space which not only drives the business revenue but also makes a remarkable balance between marketing technologies and its ecosystem with its content first, commerce-first, and community-first marketing solutions.

Creative Freedom 

Dependence on the IT team for implementation is the most known problem for digital marketers. With traditional CMS it takes an added effort, time, and resources across design, development and marketing departments to work in sync.

By the time changes are implemented the model already looks outdated to the new situation.

“Drupal seamlessly incorporates with the existing marketing and sales technologies of the enterprises”

The cutting-edge Drupal modules and distributions empowers different teams with to have their creative freedom in order to manage the development of a project at their own pace and convenience. 

With Drupal’s architecture, organizations have a platform where they can dynamically launch their website. Marketing teams can curate the structure with segment content and visuals to lay the foundation of a strong digital strategy in its backbone.

Drupal turns out to be a useful asset for organizations which are looking for implementing it in their digital business as it seamlessly incorporates with their existing marketing and sales technologies.

Balancing Marketing Ecosystem

CRM systems are important in running businesses and boosting sales management. It is important for organizations to integrate and be able to customize the martech stack to their unique needs. 

Salesforce written in blue cloud
Drupal offers features that help you create a fine balance between CRM and marketing ecosystem- with content-first, commerce-first, and community-first marketing solutions. Business, technology, and marketing professionals use Drupal to create such agile solutions that are easy-to-use and offer a wide reach across the web. Built fully-responsive, customers and users can discover products and solutions with the help of any device. 

It possesses infinite potential with native features and module extensions, including collaboration with third-party digital marketing tools.

In all, it’s a platform to help you push your strategy for the upcoming phase of digital customer engagement and digital business.

Responsive Customer Experience

Based on the system of engagement, it gives a solid foundation important, for all the single interactions with customers and people within the organization alike, to provide the ultimate unified experience. Streamlining your business operations and aligning your digital strategies, it delivers on the mobile-first approach. Enterprises’ marketing teams can manage the website and administrative pages with ease across multiple platforms.

“Personalized customer experience is evolving at a blistering pace”

Organizations competing in this customer-centric age are putting efforts to provide a personalized experience to customers for keeping them engaged and simultaneously attracting new visitors on board for lead generation.

The digital strategies run by marketing teams majorly focuses on increasing leads, conversions, and revenue percentage of the company gradually via digital channels. 

As customers lie at the center of the organization, this can be accomplished by offering them a tailor-made experience across all channels.

The motive is the same but the way it is rendered has evolved significantly and Drupal has a large part to play in it. Here’s how-

Have a look at the video to understand more about the Acquia Lift and how it can be beneficial for marketers-

 

Focus on Personalization with Acquia Lift

There is no denying to the fact that companies are leaving no stone unturned to provide personalized results to users- it's not just about presenting content on the website but rather tweaking the whole experience. Simply put, they are trying to ensure that every single user-prospect or customer - gets what they want, even before they realize it.

Acquia Lift is a powerful amalgamation of data collection, content distribution, and personalization helping marketers deliver on the refined user experience 

Acquia Lift bolsters the personalized experiences of the customers. It is a powerful amalgamation of data collection, content distribution, and personalization that helps enterprises’ marketing teams ascertain the refined user experience without much dependency on development or IT teams. 
7 Vertical and 4 horizontal blocks with text written on themSource: Acquia

Acquia Lift encompasses three key elements to boost personalization-

Profile Manager

It helps you build a complete profile of your users right from when they land on your website as anonymous visitors up until the stage where they are repeat visitors or loyal customers. Collecting user info such as demography, historical behavior, and real-time interactions, it complements the collected insights on user preference with best-suggested actions in your capacity.

Content Hub

This cloud-based tool provides a secure content syndication, discovery, and distribution. Any content created within the organization can be consolidated and stored here; readily available to broadcast on any channel, in any format.

Searches on varied topics and automatic updates give insights on a wide spectrum of content being developed within the enterprise- in different departments, across websites, and on different platforms.

Experience Builder

This is the most essential element of Acquia Lift. It lets you create a personalized experience for your users from the beginning.

The Experience Builder is an easy-peasy drag-and-drop tool that allows you to personalize every section of your website to showcase different content to different target audiences, based on the information retrieved from the Profile Manager.

Marketing teams can:
  1. Define the rules and protocol on how content should be displayed to a different segment of site visitors
  2. Carry out A/B testing to determine what type of content drives more conversions for which user segments.

All this can be executed with simple overlays onto the existing website segments, without disturbing the core structure of the site and without depending on IT teams for implementation.

Multilingual

With companies expanding their reach to the international markets, Drupal multilingual features are definitely worth to make capital out of it. As it supports 94 international languages, it can translate the complete website within a fraction of seconds with less than 4 modules in action, enabling marketing teams to deliver localized content experiences; thus increasing the probability of turning a visitor into a customer. 

“Drupal multilingual features are definitely worth to make capital out of it”

Despite the features of Drupal site’s language for the audience, the editors and admins have the option to choose a different language for themselves at the backend. Marketing and editorial teams have the rights to create and manage multilingual sites, with no need for additional local resources.

Layout Builder

The Layout Builder with its stable features showcased in Drupal 8.7 allows content marketers to create and edit page layouts and arrange the presentation of individual content, its types, media, and nodes. It also lets you feed user data, views, fields, and menus.

"Marketing teams can preview the pages with ease without impacting the user-experience”

It acts as a huge asset for enterprise marketing and digital experience teams-

  1. It offers flexibility to help you create custom layouts for pages and other specific sections on websites. You can override the predefined templates for individual landing pages when required.
  2. Content authors can embed videos effortlessly across the site to enhance user experience and ultimately drive conversion rate.
  3. Marketers can preview the pages with ease and without the fear of impacting the user experience


Layout Builder explained with the help of flowers in square gift box

Source: Dri.es

All these features offered ensures that marketing teams have more control over the website and can work independently without needing to take help from developers. This ultimately reduces the turnaround time for launching campaigns and hence the dependency on development teams.

Improved UI with API - First headless architecture

With the ever-increasing demands of acquiring and retaining customers, marketing teams are always in a hurry to redesign and update the backend and front-end in a short period. However, this becomes quite a strenuous task for them to update and redesign digital properties rapidly keeping in mind the evolving customer expectations.

Traditional Drupal architecture could take ample amount of time to make updates and redesigns because the refinement needs to take place at both front end and back end resulting in a dependency on developers and designers for the completion of the project.

“A decoupled CMS strategy can work wonders for a website that is in desperate need for a change”

But now with the powerful feature of Drupal, i.e., decoupled Drupal, marketing teams can become more agile and efficaciously segregate the processes & streamline the upgrades without impacting the user experience at the front end. This uber-cool feature of the Drupal helps in making the design and UX alterations easier to maintain.

Three blocks on the grey background with text written on themSource: Acquia

Having the flexibility to come up with more ideas and implementing them by being able to easily add them to the website is a huge upliftment for marketers. New requirements can pop up anytime in the marketer’s mind that could be added to the site for more customer engagement and lead generation. The decoupled approach gives the extra agility needed to keep improving the public-facing site.

Final Words

Drupal has the potential to provide a promising future for better digital experiences with its every upcoming release. The appending of new features in Drupal will help marketing teams to become more flexible and scalable and yet provide a surpassing customer experience in no time. Consequently, conversion rate, sales, and brand visibility would increase manifolds.

Marketing teams in the organization who are already running their sites on Drupal have a lot to be happy about. Specifically, the development around Acquia Lift and Acquia Journey gives them freedom and hence no reliance on developers for any website updates and making content live, etc, to target the audience at the right time and increase ROI.

And for the marketing teams of the organizations those who are envisaging to roll out a plan for shifting to Drupal due to its all-inclusive features, the culmination from the highly-skilled and empowered team will make it worth all the efforts.

Oct 24 2019
Oct 24

With a successful API monetization strategy, enterprises can expand their business capabilities to new customers through the rapid consumption of business assets.

However, with APIs offering dozens of ways to monetizing data, content and technology, it can become overwhelming for enterprises to deal with the entire process.

In this blog post, we’ll take you through the technical knowledge needed to build a robust API monetization platform for Globe Telecom, which seamlessly drove new opportunities and broadened their marketplace.

Understanding Globe’s Concerns and Expectations

Globe Telecom, part of the Singtel Group, is a telecommunication giant in the Philippines with an estimated market capitalization of 3.8 billion USD and a subscriber base of almost 67 million.

It has a programme running on Apigee aimed at expanding the ecosystem and effective productization for increasingly complex APIs. Globe was seeking out to create a prototype for API monetization.

We helped them achieved the following key goals:

  • A unified and well-architected API programme to allow Globe to expand into other avenues faster than before
  • An organized API product strategy with an at least 6-18 months outlook, that allows for better-planned release cycles and innovative business models
  • Standardized infrastructure and ops for resilient architecture, platform security, and cost savings
  • Empowered API teams that can work in an efficient and optimized manner and help migrate selected APIs to the Apigee platform.

Read how Srijan helped Globe Telecom drive its API Monetization Strategy

Take Me Through
Building a Developer Portal on Apigee

A platform was built which could help the client to ideate, develop, and take feedback within planned timelines, with the ability to create new revenue models with an offering for both service providers and end-customers while vastly cutting down development time and costs.

Srijan teams built a unified developer portal which made APIs available to developers to communicate with the actual data in microservices through an Apigee API platform.

The Apigee platform ensured secured use of APIs and acted as the intermediate between developers and the microservices.

The Apigee platform ensured secured use of APIs and acted as the intermediate between developers and the microservices.

Architectural diagram showing communication between developers/admin and microservices

Now, let’s understand the features of the project and the various related terminologies.

  • GlobeLabs APIs

The developer portal renders several APIs which can be public, private and internal. These are then implemented on Apigee. The screenshot attached below shows a comprehensive list of Public APIs available to an anonymous end user.

GlobeLabs APIs

Developer portal exposing various APIs for developer use

  • Globe Labs ReDoc

ReDoc offers a customizable and incredibly nice theme. It is actively maintained by its developer team to offer a better user experience. It has a custom script written for better readability of a developer.

Here’s the sample doc rendered for:

1. Request

Request

2. Response

Response

  • GlobeLabs SmartDocs for an API

SmartDocs comes as a part of the Drupal-based Apigee dev portal. It provides smart documentation for an endpoint along with a tryout feature so the developer can tryout the endpoint on the page itself.

GlobeLabs SmartDocs for an API

  • Developer Dashboard

A logged-in developer on the developer portal dashboard can choose to create a new app, go to the apps transactions page or see the wallet balance.

Developer Dashboard

1. Developer App

7-3

Screenshot of creating new app interface

A developer can create an app by giving it a unique name, with a particular API product(s) and a callback URL. He/she can select different API types (which are basically API products on APIGEE which gets synced to dev portal) by simply selecting the check boxes.

In case of Consent App, a 'Consent' is a prompt when a subscriber sees while opening an app. The app accesses the list of permissions marked selected by the subscriber.

2. Developer Wallet

Developer can add balance to their wallet via online/offline transfers. The wallet is categorised into two types: prepaid and postpaid.

A developer can have any wallet (prepaid or postpaid) and can even be switched from one to another upon request. The developer will have SMS MO balance attached (see the image below), show the credit/balance history of the transactions done.

3. Navigate Transaction page

The transaction page displays the transaction types and the related balance details.

8-3

Screenshot of Transaction page interface

Admin Operations

Admin does the configurations to communicate between different layers in the entire system. Micro services implement the automated processes across the system wherever needed.

Micro services consists of all the APIs which does any internal operation in the system, and the response is brought back to APIGEE and then to portal/developer App.

Srijan is working with leading enterprises across the US, Europe and APAC regions, assisting them with their API lifecycle management with Apigee - creating and exposing APIs and building custom developer portals. Contact us to get started with your requirements.

Oct 24 2019
Oct 24

Acquia Engage banner with image of New Orleans street

This year’s annual Acquia Engage US conference is coming to New Orleans in November. The event brings together hundreds of business and technology leaders across the Acquia community to tackle today’s top digital challenges.

Engage is a mainstay on our calendar—we’ve returned to participate and sponsor every year since 2015, and can’t wait to be back.

Acquia Engage is a unique conference opportunity to connect with digital leaders. It has always been a must-attend...It's a fun, informative, and collaborative forum to share ideas and best practices...

Press release quote from Mediacurrent co-founder Dave Terry

 Here are a few upcomig highlights for this year’s event:

Our Team of Drupal Rockstars Are Attending

We have a diverse team of Mediacurrent team members attending, so drop by our booth with your most pressing digital strategy and Drupal questions. This team has launched dozens of enterprise Drupal 8 projects using the most advanced Drupal 8 architecture and distributions (Lift, Site Factory, decoupled, and more). 

Lately, we’ve been focused on gearing up for Drupal 9 with our Rain install profile, increasing conversion rates with Lift as a personalization tool, and decoupling Drupal with Gatsby.

headshots of Mediacurrent team attending Acquia Engage 2019

 

Dave Terry - Partner, Client Services
Josh Linard - VP of Sales
Jay Callicott - VP of Technical Operations
Kevin Basarab - VP of Delivery 

Acquia Engage Awards Finalists

We’re excited to be selected as finalists in two categories for the 2019 Acquia Engage Awards.  These awards recognize the amazing sites and digital experiences that leading digital agencies are building with the Acquia Platform. Winners will be announced during the event.

  • Best Return on Investment: CAS, a Division of the American Chemical Society and Mediacurrent partnered to launch a new Drupal 8 platform with responsive design and significant improvements to site speed and layout—all within a tight launch timeline.  
  • Open Source Giants: The Rain install profile was created by Mediacurrent to add out-of-the-box editorial, administrative and media enhancements to the core Drupal 8 installation. Modeled after distributions 'Acquia Lightning' and 'Thunder', the Rain profile packages and pre-configures many core and contributed modules to make building Drupal websites faster and easier. Best of all, it’s free and open source.

Lift Personalization Partners

We’ve expanded our long-time partnership with Acquia by becoming an official Lift implementation partner. Our team and clients are loving the latest release of Acquia Lift that puts website personalization directly into the hands of marketers (no coding needed). If you’re evaluating Lift for your business or looking to ramp up your personalization strategy in 2020, we can help.  

Connect with Us 

Stop by our booth and pick up a t-shirt and tell us what you love about Acquia Engage. 

Will you be at Engage 2019? Book a meeting with our team or message us on the Acquia Engage app!

Oct 22 2019
Oct 22

This episode, we welcome AmyJune Hineline from Kanopi Studios to talk about the importance of open source to the community and organizations. AmyJune is the Open Source community ambassador for Kanopi. She helps keep her team connected to open source communities.  Along with working in the WordPress and Drupal communities, AmyJune also co-organizes A11yTalks, a monthly online meetup where they promote community discussions on a variety of accessibility issues. You can find her at just about every Drupal camp or con, where she will coax you into buying a beer-like drink. 

Audio Download Link

Project Pick:

Interview

  1. Tell us about yourself and about your role as an Open Source Community Ambassador?
  2. How did you get started with the Open Source Community?
  3. What would you say is the biggest benefit for an agency to contribute back to the community?
  4. Why should an organization/company using Drupal invest in giving back to the community?
  5. A lot of people think contributing back means creating a new module or a new theme.  Although those are certainly ways to contribute back, what are other ways in which an organization using Drupal or Wordpress can contribute back?
  6. What would be your advice to an organization who is interested in contributing back to the community?  What is the process like or what steps should they take?
  7. How can an agency like yours or ours motivate or encourage clients to contribute back?
  8. What kind of resources are available for an organization to get started with contributing back?
Oct 18 2019
Oct 18

In this digitally altered scenario, where every millisecond is crucial for the marketing industry to deliver customer responsiveness and enhance productivity, enterprises should start leveraging the marketing automation system earnestly & in a full-fledged manner to take their game to the next level.

 

The digital integration of marketing automation tools will create a huge difference in the upcoming times for marketing communication

After all, marketing automation is an efficient marketing strategy that draws together your different content with demographic information of your customers, to help you convert these potential leads at the most feasible time. 

The digital integration of marketing automation tools will create a huge difference in the upcoming times for marketing communication. As a result, these software tools and technologies will make it easier to incorporate seamlessly with a Drupal-based website through custom modules.

Now, let’s take a deep look at this blog which provides insights on marketing automation, it’s benefits, and available Drupal modules to make the work of marketing teams easier manifolds-

Marketing automation facilitates organizations to consolidate, streamline, and automate tasks with the help of modules and tools that were earlier bulky, repetitive, and consumed a large chunk of time, such as emails, social media, analyzing the audience, and pushing them the right content at the right time.

Marketing teams can view a centralized dashboard and also tweak their strategies to enhance the overall ROI of the organization

This way, marketing teams can view a centralized dashboard and also tweak their strategies to enhance the overall ROI of the organization. These time and cost-saving effects keep increasing along with the growth of organizations in size and complexity.


Various elements being pointed out by element in the centreThe benefits of implementing marketing automation tools are manifold for overall business as well as for marketing teams as well. Below is the list of benefits of marketing automation-

1. Reduce your staffing costs

Marketing automation tools let your team set up lead nurturing and marketing campaigns that can be automatically triggered based on certain defined criteria.

Within the few months of the setup of automated campaigns, your business can easily send thousands of personalized emails each day on autopilot.

2. Grow revenue

Once your company starts automating your cross-sells, up-sells, and customer follow-ups, you can observe an increase in your customer lifetime value. And when combined with better lead management and prioritization, it will possibly increase your sales activity too to boost your ROI.

3. Improves accountability of sales and marketing teams

Marketing automation ensures that the obstacles are identified well on-time with its tangible processes, and aerial view reporting of the company’s projects.

In case, the marketing team is unable to convert the identified leads into “sales-qualified leads”, it will get instant and impartial feedback for improving their nurturing campaigns.

This feedback mechanism not only reduces heated arguments but also lets staff members take the onus of their part and hence perform it more diligently.

4. Less repetition and more focus on creativity

When manual work is replaced with automated rules and campaigns, enterprises naturally free up their team members’ time to emphasize more creative tasks

When manual work is replaced with automated rules and campaigns, enterprises naturally free up their team members’ time to emphasize more creative tasks.

This clearly improves team members’ productivity & efficiency and simultaneously bestows them with the joy of enjoying creative work every day instead of performing mundane repetitive tasks. 

5. Refine your marketing processes

Enticing customers in this digital era is no more a cakewalk. If you want to engage customers with your services, then visualize their entire journey and work around making such worthy marketing strategies to gradually refine your leads targeting and nurturing process.

This whole journey will indicate to you about the leads that are falling off during the nurturing process, and hence, make refinements to those areas accordingly.

6. Target potential customers across various channels

Marketing automation lets enterprises reach customers in a personalized way across different online and offline channels

Personalization has become a newfangled solution now to show customers that companies do take their interests in likes/ dislikes. Marketing automation lets enterprises reach customers in a personalized way across different online and offline channels.

The services these tools offer range from multi-channel targeting, email, social, phone calls to text messages, and postcard targeting.

7. Schedule posts and campaigns ahead of time

Marketing automation tools give an edge to companies where they can easily schedule the different posts for different segments of their audience, based on the evaluation and insights gained on audience type.

Marketing teams can add variations in the content to send it to different sections of their audience, making it more personalized as per customers’ needs and interests.

8. Get reality check- what’s fruitful and what’s not

Marketing automation tools can help you figure out the campaigns that worked and for what segment of customers as per the data obtained through CRM

Marketing automation tools can help you figure out the campaigns that worked and for what segment of customers as per the data obtained through CRM. This level of detail enables you to create in-depth statistics reports, and hence, emphasize weak links for better results.


8 written inside Drupal logoHere is a complete list of the best Drupal marketing automation modules that you can incorporate in your website to reap its benefits-

1. Marketo MA

The Marketo MA module can help you incorporate the tracking capabilities of Marketo along with the ability to collect lead data during user registration and form submission.

Features include-

  1. Adds Munchkin tracking code to your webpages
  2. Collect lead data using Marketo’s Munchkin Javascript or API integrations.
  3. Ability to determine which user actions trigger lead capture
  4. Stipulate how user profile fields should align with Marketo fields

2. Marketo

Marketo is one of the prominent marketing automation modules in Drupal that offers consolidation of various Drupal components and the Marketo email marketing system.

It provides a framework by which Munchkin javascript can be embedded into your pages and an API as well for linking the tracking cookie and lead information. 

3. Eloqua

Eloqua is an automated marketing tool that streamlines all your stem-to-stern sales processes like, demand generation, revenue performance management, etc. 

It further boosts the sales processes by capturing a substantial amount of quality data of your customers’ sales leads and re-post the form submissions to the platform, provided you have an Eloqua subscription, to begin with.

4. Pardot

Well-known for its marketing and customer-relationship management tool, Pardot uses Pardot Analytics to collect details of your potential and current customers. For example, it can track whether a potential client was involved or discouraged by a particular price. Enterprises can also upload links and files to analyze if these particular sites are accessed or not, and so can create a list of links accordingly which customers can use to find other products that might interest them. 

Pardot offers a top-notch path based tracking system which can be leveraged throughout a Drupal-powered website.

Learn more about Pardot’s feature from here-

[embedded content]

5. HubSpot

The HubSpot module integrates with HubSpot API and Webform to submit Webforms directly to HubSpot’s lead management system. HubSpot’s JavaScript tracking code can be directly embedded into your Drupal website.

HubSpot mentioned in a boxFor example, a Webform based contact form on the website can submit its data to HubSpot, where marketing teams may already track potential clients and contacts; or Webform-based e-newsletter signup could transmit the lead to HubSpot’s targeted marketing system, allowing you to use your formerly existing email campaigns.

6. Poptin

With Poptin, you can create amazing popups, options, and forms in no time. 

Poptin popup plugin tracks the behavior of website visitors and accordingly shows them the right content at the right time.

This, as a result, increases leads, gets customers to subscribe to a newsletter, increases their engagement and retains visitors that are just about to leave website using exit intent technology and many other triggers.

7. Mailchimp

This module provides collaboration with MailChimp, a well-known email delivery service. The module provides the following features-

  1. Allows website users or visitors to choose the email lists which they want to be in and out
  2. Lets marketing teams generate and send MailChimp email campaigns from the site
  3. Marketing team and users both can view a history of emails they have been sent from Mailchimp
  4. Ensures that the email delivery service is efficient, simple and precise

8. Personalize

Personalize module comes with an array of extendable plug-ins and APIs to tweak Drupal content for giving it a personalized touch. Two fundamentals of this module are-

  1. Personalizing content should be easy for anonymous users as it is for authenticated users
  2. Personalization should continue to work even when the pages are fully cached (including in varnish and CDNs).

9. Loopfuse Integration

No matter whether you are running SMBs or MNCs, you can integrate this module on your Drupal website with LoopFuse Oneview to automate marketing processes. It facilitates enterprises to automate web activity tracking, lead qualification and lead scoring activities. 

Know more about marketing automation from here:

[embedded content]

10. Silver Pop Engage

Silver Pop Engage module caters to the sophisticated marketing automation product capabilities by integrating its Web Tracking API and XML API to allow tracking a user through various flows and levels of processes.

An anonymous user is allocated a distinctive cookie value as a result of which whenever they trigger any custom events, it gets stored in Silverpop’s Engage database. 

With the Engage Marketing Automation product, you can:

  1. Elevate the number of leads entering your pipeline and nurturing them until they are sales-ready
  2. Easily create multi-track drip campaigns driven by leads’ behavior
  3. Implement relevant communications and follow-ups constantly to keep your potential customers occupied
  4. Use several scoring models to score as per specified behavior and demographics.
  5. Establish a substantial marketing ROI by measuring the influence of campaigns.

11. Wildfire Email Marketing Platform

Wildfire is an email marketing system that incorporates completely into your website to allow the marketing team to send intuitive bulk emails to the subscribers in just a handful of clicks.

Any normal Drupal content can be put straight into an email hassle-free. The module also offers mail templates, list management, content management, and job tracking tools that are present in your Drupal website.

The marketing team has to just choose the stories that they want to include in their mail and rest WildFire takes care of. However, the prerequisite to use this module is to have an account with Wildfire HQ to perform a mail-out.

12. Automatr Marketing Automation

This is currently the only marketing automation tool and the first one as well that is specifically built for Drupal and other open-source platforms. It installs the basic integration code for Automatr on your Drupal website.

Below are the features it offers-

  1. Employs cookie and IP information to track every visitor on the website. It registers each page visit and download
  2. Keep a record of form submissions and tie them to the respective visitors so that you can analyze their actions.
  3. Showcases consolidated visitor history. 
  4. Powerful reporting
  5. Deploys SendGrid (highly efficient email distribution cloud) on the back end. And it is included in the cost.

13. Salesforce suite

This suite of modules supports integration with Salesforce by aligning Drupal entities such as users, nodes, files, with Salesforce objects such as contacts, organizations, and opportunities to perform more actions other than simply pushing or pulling information from Drupal to Salesforce or another way round.

Changes can also be made in real-time or independently during the scheduled runs.

Conclusion

To sum it up, marketing automation amalgamated with Drupal is the way ahead for businesses to design and deliver excellent experiences. It will facilitate enterprises in evaluating the levels of engagement which their site provides to the potential and existing customers. 

As consumers become more demanding and data growth breaks out, progressive companies will look forward to emerging technologies to lead in an era of intelligent and automated customer experience. 

However, the success of such content management and marketing automation solutions will depend on the ease of adoption and its ability to scale across millions of customers/ across locations while ensuring that errors and bugs are being fixed on a timely basis.

Oct 17 2019
Oct 17

The Drupal 8 Salesforce Suite allows you to map Drupal entities to Salesforce objects using a 1-to-1 mapping. To do this it provides a series of field mapping types that allow you to select how you want to relate the data between the two systems. Each field type provides handling to help ensure the data is handled correctly on each side of the system.

As of this writing the suite provides six usable field mapping types:

  • Properties — The most common type to handle mapping data fields.
  • Record Type — A special handler to support Salesforce record type settings when needed.
  • Related IDs — Handles translating SFIDs to Drupal Entity IDs when two objects are related in both systems.
  • Related Properties — For handling properties across a relationship (when possible).
  • Constant — A constant value on the Drupal side that can be pushed to Salesforce.
  • Token — A value set via Drupal Token.

There is a seventh called Broken to handle mappings that have changed and need a fallback until its fixed. The salesforce_examples module also includes a very simple example called Hardcoded the shows how to create a mapping with a fixed value (similar to, but less powerful than, Constant field).

These six handle the vast majority of use cases but not all.  Fortunately the suite was designed using Drupal 8 annotated plugins , so you can add your own as needed. There is an example in the suite’s example module, and you can review the code of the ones that are included, but I think some people would find an overview helpful.

As an example I’m using the plugin I created to add support for related entities to the webform submodule of the suite (I’m referencing the patch in #10 cause that’s current as of this writing, but you should actually use whatever version is most recent or been accepted).

Like all good annotated plugins to tell Drupal about it all we have to do is create the file in the right place. In this case that is: [my_module_root]/src/Plugins/SalesforceMappingField/[ClassName] or more specifically: salesforce_webform/src/Plugin/SalesforceMappingField/WebformEntityElements.php

At the top of the file we need to define the namespace, add some use statements.

<?php
 
namespace Drupal\salesforce_webform\Plugin\SalesforceMappingField;
 
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\salesforce_mapping\Entity\SalesforceMappingInterface;
use Drupal\salesforce_mapping\SalesforceMappingFieldPluginBase;
use Drupal\salesforce_mapping\MappingConstants;

Next we need to provide the required annotation for the plugin manager to use. In this case it just provides the plugin’s ID, which needs to be unique across all plugins of this type, and a translated label.

/**
 * Adapter for Webform elements.
 *
 * @Plugin(
 *   id = "WebformEntityElements",
 *   label = @Translation("Webform entity elements")
 * )
 */

Now we define the class itself which must extend SalesforceMappingFieldPluginBase.

class WebformEntityElements extends SalesforceMappingFieldPluginBase {

With those things in place we can start the real work.  The mapping field plugins are made up of a few parts: 

  • The configuration form elements which display on the mapping settings edit form.
  • A value function to provide the actual outbound value from the field.
  • Nice details to limit when the mapping should be used, and support dependency management.

The buildConfigurationForm function returns an array of form elements. The base class provides some basic pieces of that array that you should plan to use and modify. So first we call the function on that parent class, and then make our changes:

 /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    $pluginForm = parent::buildConfigurationForm($form, $form_state);
 
    $options = $this->getConfigurationOptions($form['#entity']);
 
    if (empty($options)) {
      $pluginForm['drupal_field_value'] += [
        '#markup' => t('No available webform entity reference elements.'),
      ];
    }
    else {
      $pluginForm['drupal_field_value'] += [
        '#type' => 'select',
        '#options' => $options,
        '#empty_option' => $this->t('- Select -'),
        '#default_value' => $this->config('drupal_field_value'),
        '#description' => $this->t('Select a webform entity reference element.'),
      ];
    }
    // Just allowed to push.
    $pluginForm['direction']['#options'] = [
      MappingConstants::SALESFORCE_MAPPING_DIRECTION_DRUPAL_SF => $pluginForm['direction']['#options'][MappingConstants::SALESFORCE_MAPPING_DIRECTION_DRUPAL_SF],
    ];
    $pluginForm['direction']['#default_value'] =
      MappingConstants::SALESFORCE_MAPPING_DIRECTION_DRUPAL_SF;
    return $pluginForm;
 
  }

In this case we are using a helper function to get us a list of entity reference fields on this plugin (details are in the patch and unimportant to this discussion). We then make those fields the list of Drupal fields for the settings form. The array we got from the parent class already provides a list of Salesforce fields in $pluginForm[‘salesforce_field’] so we don’t have to worry about that part.  Since the salesforce_webform module is push-only on its mappings, this plugin was designed to be push only as well, and so limits to direction options to be push only. The default set of options is:    

'#options' => [
    MappingConstants::SALESFORCE_MAPPING_DIRECTION_DRUPAL_SF => t('Drupal to SF'),
    MappingConstants::SALESFORCE_MAPPING_DIRECTION_SF_DRUPAL => t('SF to Drupal'),
    MappingConstants::SALESFORCE_MAPPING_DIRECTION_SYNC => t('Sync'),
 ],

And you can limit those anyway that makes sense for your plugin.

With the form array completed, we now move on to the value function. This is generally the most interesting part of the plugin since it does the work of actually setting the value returned by the mapping.

  /**
   * {@inheritdoc}
   */
  public function value(EntityInterface $entity, SalesforceMappingInterface $mapping) {
    $element_parts = explode('__', $this->config('drupal_field_value'));
    $main_element_name = reset($element_parts);
    $webform = $this->entityTypeManager->getStorage('webform')->load($mapping->get('drupal_bundle'));
    $webform_element = $webform->getElement($main_element_name);
    if (!$webform_element) {
      // This reference field does not exist.
      return;
    }
 
    try {
 
      $value = $entity->getElementData($main_element_name);
 
      $referenced_mappings = $this->mappedObjectStorage->loadByDrupal($webform_element['#target_type'], $value);
      if (!empty($referenced_mappings)) {
        $mapping = reset($referenced_mappings);
        return $mapping->sfid();
      }
    }
    catch (\Exception $e) {
      return NULL;
    }
  }

In this case we are finding the entity referred to in the webform submission, loading any mapping objects that may exist for that entity, and returning the Salesforce ID of the mapped object if it exists.  Yours will likely need to do something very different.

There are actually two related functions defined by the plugin interface, defined in the base class, and available for override as needed for setting pull and push values independently:

  /**
   * An extension of ::value, ::pushValue does some basic type-checking and
   * validation against Salesforce field types to protect against basic data
   * errors.
   *
   * @param \Drupal\Core\Entity\EntityInterface $entity
   * @param \Drupal\salesforce_mapping\Entity\SalesforceMappingInterface $mapping
   *
   * @return mixed
   */
  public function pushValue(EntityInterface $entity, SalesforceMappingInterface $mapping);
 
  /**
   * An extension of ::value, ::pullValue does some basic type-checking and
   * validation against Drupal field types to protect against basic data
   * errors.
   *
   * @param \Drupal\salesforce\SObject $sf_object
   * @param \Drupal\Core\Entity\EntityInterface $entity
   * @param \Drupal\salesforce_mapping\Entity\SalesforceMappingInterface $mapping
   *
   * @return mixed
   */
  public function pullValue(SObject $sf_object, EntityInterface $entity, SalesforceMappingInterface $mapping);
 

But be careful overriding them directly. The base class provides some useful handling of various data types that need massaging between Drupal and Salesforce, you may lose that if you aren’t careful. I encourage you to look at the details of both pushValue and pullValue before working on those.

Okay, with the configuration and values handled, we just need to deal with programmatically telling Drupal when it can pull and push these fields. Most of the time you don’t need to do this, but you can simplify some of the processing by overriding pull() and push() to make sure the have the right response hard coded instead of derived from other sources. In this case pulling the field would be bad, so we block that:

  /**
   * {@inheritdoc}
   */
  public function pull() {
    return FALSE;
  }

Also, we only want this mapping to appear as an option if the site has the webform module enabled. Without it there is no point in offering it at all. The plugin interface provides a function called isAllowed() for this purpose:

  /**
   * {@inheritdoc}
   */
  public static function isAllowed(SalesforceMappingInterface $mapping) {
    return \Drupal::service('module_handler')->moduleExists('webform');
  }

You can also use that function to limit a field even more tightly based on the mapping itself.

To further ensure the configuration of this mapping entity defines its dependencies correctly we can define additional dependencies in getDependencies(). Again here we are tied to the Webform module and we should enforce that during and config exports:

  /**
   * {@inheritdoc}
   */
  public function getDependencies(SalesforceMappingInterface $mapping) {
    return ['module' => ['webform']];
  }

And that is about it.  Once the class exists and is properly setup, all you need to do is rebuild the caches and you should see your new mapping field as an option on your Salesforce mapping objects (at least when isAllowed() is returning true).

Oct 16 2019
Oct 16
Integrating CRM into web technology has come as a turning point in business process automation. Well, enterprises can now easily evaluate and manage their contacts, existing clients, and leads or prospects generated through the marketing campaigns on social media platforms without any nuisance.

 

Drupal integrates seamlessly with third-party applications catering to varied verticals and industries, making it a perfect building block to create a robust functional system

 

Given the fact that Drupal integrates seamlessly with third-party applications and systems catering to varied verticals and industries, it accounts for a perfect building block to create a robust functional system.

 

Drupal when integrated with CRM, makes an apt solution for handling colossal user and content databases

 

Drupal when integrated with CRM, makes an apt solution for handling colossal user and content databases. And all this comes to reality because of Drupal’s highly modular and scalable architecture. However, the best part of it is that it gives substantial operational efficiency through marketing automation.

This blog will elucidate some of the best enterprise-level CRM integration for your Drupal website and its modules and distributions that will help you create a robust CRM strategy for your business.

Benefits Of Drupal and CRM Integration

There are several benefits of integrating Drupal site with a third-party CRM solution. The most obvious ones to native CRM in Drupal comprises of-

 

CRM interfaces can easily leverage Drupal’s growing suite of mobile and responsive tools and themes. 

 

  1. The ability to utilize CRM data as content, or the ability to showcase aggregate CRM data on the website.
  2. More chances to integrate CRM data with Drupal dedicated tools- such as data visualization tools, geo-mapping tools, etc.
  3. Reduced staff training costs- as the staff doesn’t need to get trained on multiple platforms.
  4. A considerable amount of reduction in technical risk as all the tools will rely on a single, Drupal framework.
  5. Potential reductions in hosting and IT costs.
  6. The ability to customize your CRM solution up to 360 degrees.
  7. Users or site visitors registering for events, making donations or payments, or engaging in other website transactions are ensured a more seamless and interface-friendly experience.
  8. CRM interfaces can easily leverage Drupal’s growing suite of mobile and responsive tools and themes. 
  9. Tracks competitors and manages every opportunity through various built-in tools. Faster response to any client that enquires about services or products to show them you care about their business.
  10. Proficiency in managing complex engagement scoring or engagement analytics.

Modules and Distributions For Integration

There are a plethora of modules and distributions in Drupal that one can leverage and integrate with third-party tools and CRM. Take a look-

1. Webform CiviCRM Integration (CiviCRM)

Various features available in CiviCRM
This module lets you receive the data input in the specific format you want. You can also create & update contacts, sign-up forms, opt-in forms, tags, relationships, cases, and membership & contributions forms via these robust and user-friendly webforms that incorporate effortlessly into your Drupal website.

Its other features include-

  • Auto fillup of forms for already signed in users or anonymous users following a personalized link from CiviMail.
  • Use CiviCRM contact data to showcase customized messages, emails or set access restrictions to the form.
  • Approve credit-card payments for events, memberships, and contributions.

Available for - Drupal 7 | Covered by Security Advisory

2.  RedHen CRM

RedHen is a flexible and light-weight Drupal-native CRM that manages information about contacts, organizations, and their relationships with each other

RedHen is a flexible and light-weight Drupal-native CRM that manages information about contacts, organizations, and their relationships with each other. It comprises of an automated filter in the UI to let you filter by any field you add to contact, and a smart find-and-dedupe interface to keep contacts and the associated data spick and span.

It also provides engagement tracking, event registration integration, and customizable one-page donation forms. 

Available for - Drupal 7 | Covered by Security Advisory

3. Salesforce Suite

The Salesforce Suite enables the integration of Drupal and Salesforce, as a result of which, Drupal entities (for example, users, nodes, files) are synchronized with Salesforce objects (for example, contacts, organizations, opportunities). 

In addition to this, it also provides the ability of mapping tool that can push Drupal data to Salesforce as well as pull, or import Salesforce data into Drupal.

The changes can be made in real-time or independently in batches during cron run.

Available for - Drupal 8 | Covered by Security Advisory

Watch this video to find out more on the same-

[embedded content]

4. Webform2Sugar (SugarCRM)

There are two modules that connect to SugarCRM from Drupal. They are

  1. Drupal to Sugar
  2. Webform2Sugar

This module, however, in itself is available only for - Drupal 7 and not covered by the security advisory

  1. Drupal to Sugar- 

The integration of Drupal and SugarCRM at webforms level results into a more powerful business solution, where an innate GUI is integrated with these both in the admin section

The integration of Drupal and SugarCRM at webforms level results into a more powerful business solution, where an innate GUI is readily integrated with these both in the admin section, to provide a more intimate mapping of modules and related fields without the need for any custom coding.

However, in case you have a multi-page webform, this module won’t function as required.

Available for - Drupal 7 | Covered by Security Advisory

B. Webform2Sugar:

This user-friendly module works fine even if you have a multi-page webform. Similar to that of Drupal to SugarCRM, the mapping of the fields can be done directly from the admin UI. It can also capture webform results as a new lead in SugarCRM.

Available for - Drupal 7 | Not Covered by Security Advisory

5.  Zoho CRM

Zoho CRM suite of modules ensures integration of Drupal with Zoho CRM. It ensures streamlining of Drupal objects (users, nodes, Ubercart orders) with Zoho CRM modules (Contacts, Accounts, Potentials, etc) to enable easy exchange of data from both ends. 

It also defines the mapping between fields in the Drupal object and Zoho CRM module to send and receive data.

Available for - Drupal 7 | Not Covered by Security Advisory

6.  CRM Core

With this module, you can manage contacts, activities, and relationships in your Drupal website. It also provides immense support to these entities and integrates several tools to make it easier for further support on the website.

It's features include-

  1. User sync allows contacts to be linked with user accounts.
  2. Match provides support for duplicate records
  3. Offers central repository for reports
  4. Allows administrators to handle the UI for managing contacts.

Available for - Drupal 7 | Covered by Security Advisory


7. Leadsquared Integration

The Leadsquared CRM module integrates with the Drupal form to capture the leads. The leads are captured majorly during:

  • Registration
  • Form Submit
  • After publishing/payment/update of content

Available for - Drupal 7 | Not Covered by Security Advisory

8. Pardot integration

Pardot facilitates the marketing and sales department to create, deploy, and manage online marketing campaigns that can increase ROI and maximize efficiency

Pardot provides a software-as-a-service marketing automation application to facilitate the marketing and sales department to create, deploy, and manage online marketing campaigns that can increase ROI and maximize efficiency. It features certified CRM integrations with salesforce.com, NetSuite, Microsoft Dynamics CRM, and SugarCRM, to empower marketers with lead nurturing, lead scoring, and ROI reporting for creating and qualifying sales leads, contracting sales cycles and displaying marketing accountability.

Available for - Drupal 7 | Covered by Security Advisory

9. Freshchat

This module helps you in engaging your site visitors and users to improve sales, gather feedback, and provide support.

Features include-

  • Uses bot for the quick response

Engage dynamically with users through contextual and timely messages. The bot helps in capturing leads, validating and qualifying responses, and auto-uploading them into your CRM. Customize bot messages to deliver the right experience.

  • Fetches more info to improve sales

With details available such as events timeline, user information, and social profiles, know what your visitors are up to. Fetches more info from external tools like CRM or order management systems for more relevancy.

  • Retain customers

Setup in-app campaigns to get users, new users, onboard, retain old ones and re-engage lapsing customers. Send announcements, get feedback, and share product best practices inside the product to bridge the gap and maximize the impact.

Available for - Drupal 8 | Not Covered by Security Advisory

10. SnapEngage

Increase engagement with your visitors and improve your conversion rate to convert visitors and potential leads into customers

It is a straight-forward and streamlined live chat service. Increase engagement with your visitors and improve your conversion rate to convert visitors and potential leads into customers. Live chat with your visitors from your favorite instant messenger or mobile device and easily integrate with your existing CRM or Helpdesk solution.

Available for - Drupal 7 | Covered by Security Advisory

11. Optify

Optify offers a digital marketing software suite to easily create and manage several lead generation programs, nurture prospects, prioritize the best-performing programs and align the reporting of client results-just from one login.

In addition to this, it comprises of integrated SEO, email marketing, landing pages, lead intelligence and nurturing, contact management and seamless integration with Drupal.

Available for - Drupal 7 | Covered by Security Advisory

12. Vtiger CRM

vtiger written  inside box with two way arrow
                                                                Source: Drupal.org

Vtiger CRM comprises of three separate modules, each having distinct functionality. Let’s find out more on this-

  1. Vtiger CRM

This is the base module that provides forms for manipulating settings essential to connect with Vtiger CRM, along with the synchronization page and the VtigerCrmApi class with methods.

2. Vtiger Entity

It provides functionality that allows transferring any fieldable Drupal entity to any Vtiger CRM entity.

3. Vtiger Webform 

This module provides a similar field-mapping UI to specify mappings between Webform components and Vtiger CRM modules. A new Vtiger record is created every time upon the submission of the Webform.

Available for - Drupal 7 | Covered by Security Advisory

13. Re:plain

Re:plain written inside the box                                                                         Source: Drupal.org

It is a flexible and scalable module as it lets you add those functions only that you need as per your business requirements

Re: plain makes communication simpler by providing you with your messenger from where you can directly chat with customers instantly. It is a flexible and scalable module as it lets you add those functions only that you need as per your business requirements. As a result, you can see a significant boost in your and your customers’ revenue.

Its features include-

1. Unlimited Operators

An unlimited number of people can respond to clients with the further option of transferring clients between operators.

2. Template answers

Insert and utilize answers to a similar type of question to save time.

3. Scheduling

Set this module to off or on mode automatically as per your working hours.

4. Integration With Google Analytics

Send data directly to Google Analytics for deep insights.

5. Banners

Use this feature to announce a sale, promote a new service, or just draw your clients’ attention to an FAQ section.

6. Custom Forms

Collect your visitors’ information in customized forms. You can also customize the fields as per your requirement.

7. Video Welcome

Increase the engagement of users by creating and uploading a video on YouTube and setting this link under the Video welcome feature.

8. Active Invitation

Specify the time when you want your visitors to see the welcome message.

9. Relevancy

Integrate it with your mobile applications, CRM, support services, and ERP to leverage the data insights it offers. It will assist in tapping the potential customers at the right time and thus, increasing the overall ROI.

Available for - Drupal 8 | Not Covered by Security Advisory

Final words

If your organization can integrate and deploy Drupal with any of the above-listed CRMs, there are no second thoughts that your organization will enjoy streamlined and optimized business processes in the long term. Consequently, it will strengthen sales and also make the whole process much more effective and capability-driven.

That said, Drupal installations are all unique because of the different modules and customizations that they use, so integration has to be set up differently by an expert.

Every integration module is not ready-to-use, so special care must be taken to ensure compatibility and effectiveness. 

Srijan has a vast experience as well as skills that require integration of Drupal with CRM applications. It has helped its clients in building a reliable CRM strategy. Contact us now! 

Oct 13 2019
Oct 13

The other day I was reviewing my read later items and stumbled upon the New command line tool to install & run Drupal change record I had completely forgotten about. This was timely because I was extensively testing the excellent Acquia Developer Studio for work and was trying to think about how it could help me review core changes quickly or contribute more easily. Turns out, you can’t ask for a tool to do everything and sometimes it’s important to get back to finding the right tool for the job. And in this instance, quick-start has no equivalent that I know of in terms of ease of use and required dependencies.

After playing with it a bit, I realized I could probably create a wrapper to speed up operations even more. The workflow I had in mind was this:

  • Work exclusively from the local Drupal Git clone
  • Don’t install any dependency like Drush or Drupal Console
  • Install Drupal with a one-liner
  • Clean up everything with a one-liner

And then I came up with this script. Disclaimer: I’ve only tested it on Linux. It works very simply with two commands: quick-start and quick-clean.

When I type quick-start, I can either pass a Drupal profile or use the default (standard). The script takes care of pulling Composer dependencies and installing Drupal with default parameters so I can concentrate on the task at hand, not the install process itself. At some point I even experimented with assigning a dynamic port (shuf -i8000-8999 -n1) but that was so over-engineered I gave up. This is how it looks like now:

$ quick-start umami
Drupal codebase detected. Proceeding...
> Drupal\Core\Composer\Composer::ensureComposerVersion
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 106 installs, 0 updates, 0 removals
- Installing composer/installers (v1.7.0): Loading from cache
> Drupal\Core\Composer\Composer::vendorTestCodeCleanup
(snip)
Generating autoload files
> Drupal\Core\Composer\Composer::preAutoloadDump
> Drupal\Core\Composer\Composer::ensureHtaccess
Skipped installation of bin bin/composer for package composer/composer: file not found in package
18/18 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓]
Congratulations, you installed Drupal!
Username: admin
Password: UvtRWr-Z82WKfV2Q
Drupal development server started: <http://localhost:8888>
This server is not meant for production use.
One time login url: <http://localhost:8888/en/user/reset/1/1570899448/vVyaEHQkIRKGLLtuRttsdXtCBfNP1DBMWJwQIH4_XKc/login>
Press Ctrl-C to quit the Drupal development server.

The one annoyance I have is it doesn’t scale. I understand it’s for dev only and I should keep my expectations low, but it’ll fail randomly when using devel_generate, clicking on too many pages in a short period of time or installing too many modules at once. When this happens to you, just shut down the server (C^) and run quick-start again. This is a severe limitation I’ve reported here.

Anyway, once I’m done and want to clean up my repo, there’s the quick-clean command for that. It’ll wipe everything within your Git clone (seriously, be careful) so you come back to a clean Git state, with the latest commits from upstream. It looks like this:

$ quick-clean
Drupal codebase detected. Proceeding...
[sudo] password for anavarre:
HEAD is now at 03bdf28929 Issue #2860644 by daffie, shashikant_chauhan, dww: Add support of NOT REGEXP operator to PostgreSQL + fix testRegexCondition
Already up to date.

To my knowledge, there’s no easiest nor quickest way to install, test or contribute to Drupal with the bare minimum requirements to run a PHP app.

Oct 10 2019
Oct 10

For several years, Google has leveraged Drupal as the primary tool for developer portals built for its popular Apigee Edge API platform. With the introduction of the production-ready Drupal 8 distribution in May 2019, an announcement was made that support for the D7 platform would expire in 12 months. Concurrent with that announcement we know that D7 end-of-life will occur in November of 2021. This means that many Apigee portals will need to make the move to Drupal 8 or Apigee’s integrated portals in the near future.

In this article, we will walk through the steps to migrate Apigee portals from Drupal 7 to 8. The first decision you will need to make is whether to upgrade your existing custom build or move to the new Drupal 8 kickstart distribution. To help guide this decision, let’s first take a look at what the Apigee distribution for Drupal 8 has to offer and why you would want to leverage this platform.

Apigee Developer Portal Kickstart (D8)

The Apigee documentation site has excellent instructions on how to set up a developer portal using their Drupal 8 distribution. We will take a quick look at the features that come with the newest install profile.

Apigee homepage

Apigee Kickstart Homepage screenshot

 

The Apigee distribution once again has a nice out-of-box experience. This time around the base theme leverages a Bootstrap base theme that makes it easy to brand and customize your site.

The content types you see will be familiar: Article, Basic page, FAQ, Forums, and a new Landing page content type. Video, images, and audio are now more appropriately Media types in Drupal 8. The SmartDocs content type is gone in favor of a new API Doc type that supports the OpenAPI format (see below).

API doc

API doc screenshot

Adding content is now more flexible in Drupal 8 with the implementation of Paragraph types. Paragraphs allow you to add different components onto the page in any order you like. See the homepage example below.

Apigee paragraphs

Apigee Paragraphs screenshot from Homepage

In Drupal 8, Apigee also added some new block types. Blocks are still useful for components that need to live on more than one page.

Apigee block type

Apigee block types screenshot

The great thing about Apigee’s distribution is that it also includes sample content which makes getting set up a breeze. 

For organizations setting up a portal for the first time, leveraging this distribution is the way to go. For portals being upgraded from Drupal 7, this is more of a judgment call. If your portal has been heavily customized it might be better to move forward with a traditional Drupal 8 upgrade which we will cover under Custom Migrations. If, however, your organization’s portal previously had taken advantage of out-of-box functionality, then it makes sense to migrate content to Apigee’s D8 project which we will walk through next.

Migrating to Apigee Kickstart D8

The maintainers of the Apigee kickstart distribution have supplied a module to make migrations as painless as possible. The apigee_kickstart_migrate sub-module provides the Migrate module configuration that maps Drupal 7 content to their newer Drupal 8 counterparts. Again, this is most helpful for portals that did not heavily customize content in Drupal 7. Included in this sub-module are instructions on how to run the migrations and how to extend migrations with custom fields.

The following table shows how content is mapped from the Drupal 7 portal to Drupal 8.

Drupal 7 (Devportal)

Drupal 8 (Kickstart)

Content Types

Article (article)

Article (article)

title

title

body

body

field_keywords

field_tags

field_content_tag

field_tags

Basic page (page)

Basic page (page)

title

title

body

body

FAQ (faq)

FAQ (faq)

title

title

body

field_answer

field_detailed_question

-

Forum topic (forum)

Forum topic (forum)

title

title

body

body

taxonomy_forums

taxonomy_forums

Comment Types

Comment (comment)

Comment (comment)

author

author

subject

subject

comment_body

comment_body

Taxonomy

Forums (forums)

Forum (forums)

name

name

Tags (tags)

Tags (tags)

name

name

Custom migrations

When would you go with a custom Drupal 8 upgrade over leveraging the Kickstart project? 

Where you run into trouble with distributions in Drupal is when you lean on so many customizations that the distribution gets in the way more than it saves time. In those instances, it’s better to stick with your own custom implementation.

The Mediacurrent team recently released the Migrate Pack module to make things easier for developers. This module has been tested against several sites and distributions including the Apigee Drupal 7 install profile.

Migrate pack module

The approach here would be to install Migrate Pack and the two additional Apigee modules in lieu of leveraging the distribution. The two key Apigee features you will need are the Apigee API Catalog and Apigee Edge modules. All of these projects should be installed using Composer.

If your theme was built custom in Drupal 7, then it will need to be manually ported to Drupal 8’s Twig-based theme engine. The other option is to instead borrow the Bootstrap-based theme included with Apigee’s distribution. It should be said that if the latter approach is taken, it might be better to migrate everything to the new Kickstarter rather than cherry picking the theme.

Next Steps

Apigee has very good support and documentation to get you started on moving to Drupal 8. For issues and bugs specific to the Drupal distribution, the Github project issue queue is the best place to look. The Migrate Pack module also has its own issue queue on Drupal.org should you run into problems.

Mediacurrent has logged over 100,000 hours in Drupal 8 development, many of which are Drupal 7 to 8 upgrades. We would love to work with you on your next project. 

Please visit our contact page to get in touch or hit me up on Twitter to talk more. We also have comments below to gather your feedback and questions.

Oct 04 2019
Oct 04

Over the years I have benefited greatly from the generosity of the Drupal Community. In 2011 people sponsored me to write lines of code to get me to DrupalCon Chicago.

Today Dave Hall Consulting is a very successful small business. We have contributed code, time and content to Drupal. It is time for us to give back in more concrete terms.

We want to help someone from an under represented group take their career to the next level. This year we will provide a Diversity Scholarship for one person to attend DrupalSouth, our 2 day Gettin’ Git training course and 5 nights at the conference hotel. This will allow this person to attend the premier Drupal event in the region while also learning everything there is to know about git.

To apply for the scholarship, fill out the form by 23:59 AEST 19 October 2019 to be considered. (Extended from 12 October)

Share this post

Oct 02 2019
Oct 02

With its open source software and proven technology, Drupal is the first choice for many business owners when it comes to deciding a framework for their digital commerce business. After all, it’s a great CMS and ecommerce can be added to it through custom-built development (although custom might not be best, more on that later).

So, how about your business? Are you using Drupal and have an integrated or custom ecommerce component? Or, maybe you’re still deciding on which way to go to add ecommerce functionality? If so, let’s talk about the features that you probably wish to have in your website:

  • Are you looking for limitless product presentation and customization options?
  • Do you have plans to set up multichannel marketing and automation for your website?
  • Are you planning to integrate third party systems or run custom social media campaigns?
  • Do you need the flexibility to scale your website with endless options?

If you replied “yes” to any of the above questions, I would say custom-built ecommerce probably isn’t your best option. Nor do I think you need a pre-packaged SaaS solution, either. Before I suggest what you might want to do, let’s first look specifically at why custom ecommerce can present its own difficult challenges you definitely want to avoid.

5 challenges of a custom ecommerce system

Depending upon the complexity of requirements, it can take anywhere from months to years to set up a proper ecommerce site, no joke. Let’s say you’ve decided on building custom ecommerce functionality into your Drupal site. You’ve hired a developer, or maybe an agency or an internal team, to build it and have been able to get the ecommerce functionality that your business needed to get started. Great!

Now, after a year or so, you start thinking of scaling it by adding more features and functionality. This is where you may start running into challenges. Let me outline some of the more critical challenges you may face.

1. Handcuffed to an internal development team or outside agency

This can be a touchy subject but is probably the biggest liability for a company using custom development, so let’s start here. Ideally you’d still want to use that original development team who has all the knowledge of how your ecommerce component was made. But what if you can’t get the same developers or what if you have a falling-out with the agency who built it? Imagine how difficult it might be to onboard new developers when you yourself don’t know the code. Without a predefined standard or framework, how your ecommerce was built is anyone's guess. Significant cost will be added just to get any new developers up-to-speed.

2. Slow to implement new features and/or functionality

If you’re constantly feeling like you are reacting to the market rather than being a proactive innovator, this can be a direct cause of custom development. Simply put, everything you add to your website needs to be built and nothing is ready-made that you can just plug in. There is no time saving options that you can take advantage of to speed things up.

3. Inability to integrate with desired third party platforms

Integrations are one of the biggest benefits of an open source platform so it can be a real problem if you’re not able to integrate quickly and effectively.

Consider the cost that you have to bear when you are introducing something as simple as a new payment system or a new tax rule. Something that should be easy might take far too much time than it’s worth because you don’t have access to an underlying framework that was made specifically to make building these integrations faster.

Or maybe a robust new marketing tool comes in to the market and if you want to take advantage of it by integrating it with your ecommerce site. Let peace be upon you… this larger integration could be a monumental task. Every integration you require means more custom development, more cost, and lengthy timelines to completion.

4. Sacrificing the front-end customer experience

Custom development is built by developers first and so the actual look and presentation is often sacrificed for functionality. This isn’t meant to be a knock on developers, but the simple truth of the matter is that building code and building layout and design are two entirely different specialties. It’s very rare that you find someone with both skill sets. Without good UX and design, your customers will not get the front-end experience they expect which could impact your business performance.

If the makeup of your team includes designers and frontend developers, great! This would alleviate presentation issues, but these extra specialists will add additional expense to your custom build.

5. Unable to take advantage of the community

If all you have is custom functionality, you could be spending a lot of time and money developing features and/or integrations that potentially already would have existed if you had gone a different route. If you think about it, one of the great things about Drupal in general is all of the community-made modules that you have access to for extending your site’s functionality. While you’ll still be able to use them with your Drupal site, the custom ecommerce side of things doesn’t have that benefit. Everything you need must be built and probably only your team of developers can do it.

If not custom development, then what?

So what do you choose when custom development is a hassle and I’ve already mentioned that I’m not pushing you towards a SaaS solution. Well, my suggestion is that you should consider using the Drupal-native ecommerce module, Drupal Commerce. I mean, why marry off your Drupal site with someone else when we have fully compatible Drupal Commerce with us. It has been a proven ecommerce framework since 2011 (view usage stats) and lets you build a secure, scalable, SEO and mobile friendly ecommerce site in whatever way your business needs! It’s framework has been made for extending. It’s documented and has a large community centered around it (which Acro Media is a part of). Maybe you’ve heard negative rumblings about it in the past, and if so, I think you should look again.

Here’s how I justify my view, or rather, how Drupal Commerce can help you fulfill your ecommerce requirements.

Top 7 reasons why you should use Drupal Commerce

Below are the top 7 reasons why you should be selecting Drupal Commerce over any custom or off-the-shelf hosted solutions out there.

1. Commerce and content will easily get along

When we use Drupal Commerce with Drupal, it will let you manage your content strategy right within your ecommerce platform. You can easily manage complex relationship between products and other contents in the site. The CMS part will let you create custom landing pages to attract the attention of users while flexibility in the ecommerce part will make it easier for a site owner to manage new products and its workflow.

2. Requires less development effort

When you need a content site as well as an ecommerce site, With out-of-the-box modules and pre-configured distributions, a Drupal Commerce store can be easily setup without much hassle. Plus, when custom development is required, Drupal’s strict code standards ensure that any competent Drupal developer can easily jump-in and understand what’s going on. You’re not stuck with just a single developer or agency to manage your project. You have the freedom to shop around.

3. Highly customizable and scalable

Unlike most SaaS systems, Drupal and Drupal Commerce can be customized according to the business’s needs. Even though Drupal and Drupal Commerce are architected to be extended limitlessly, all the extensions follow a general standard. This makes sure that when the next person with knowledge in Drupal Commerce comes along, either from a development or administrator standpoint, this person can handle the software easily. New features or integrations can be performed faster which takes the system scalable to the next level.

From a performance perspective, Drupal and Drupal Commerce are more than capable of scaling to meet the needs of small business all the way to enterprise. Need proof, we’ve tested their performance and you can see the results here.

4. Integration with external systems

This is the core strength of Drupal. Drupal modules have been built so that they can interact with one another easily. If you need to connect your ecommerce to payment gateways, marketplaces, CRMs, analytics tools, SEO tools, shipping providers, the list goes on, they can be done as quickly as within a few hours (integration depending, of course). Drupal takes an API first approach which is what you want for integrations now and in the future.

5. Free and open source

Unlike proprietary ecommerce systems, Drupal Commerce is open source and there is no licensing cost or usage limits. Unlike other open source solutions, there are no paid modules within the Drupal community. You have access to it all and can extend and customize it in whatever you like. By saving money on the software, you can instead invest that money in your Drupal based platform and your own business needs.

6. Community support

Drupal has an immensely large community with thousands of active users helping to build and maintain the core software and its extensions. The features you require for your site could be already created by someone else and available on Drupal.org, waiting for you to take advantage of. Various IRC channels, blogs, forums, agencies, etc. will help you in case you are blocked or need advice on almost anything related to Drupal.

7. Solid future version support

With the release of Drupal 8, we are quite clear on how migrations to the next version will happen. If your site is already using Drupal 8, then you don’t have to worry about Drupal 8 being unsupported by community because you will easily be able to migrate your site to Drupal 9 (and future versions) when the time comes.

It doesn’t mean that your Drupal 7 site will be isolated either. The stable Migrate module in Drupal 8 will make a migration of your Drupal 7 site to Drupal 8 easier than ever before, saving time and money when adopting the newer version.

Demo Drupal Commerce today! View our demo site.View a Drupal Commerce demo

To help show you what a Drupal Commerce ecommerce solution looks like, check out our fully functional Drupal Commerce demo site, Urban Hipster.

Here you can click around and “buy” products just like you would using any real ecommerce site. You will see content pages, a best-practice product catalog, a variety of product types, and more. This feature rich demo was made to give you an idea of what your Drupal Commerce site could do, but of course this is just one example. The possibilities are endless.

Plan your move to Drupal Commerce

Leave custom development and integrated ecommerce frameworks behind by starting your move to Drupal Commerce today. Acro Media is an ecommerce consulting and development company that specializes in open source and Drupal Commerce. Take a look at our Drupal Commerce solutions today and let us know if you have any questions. We’d love to help you understand if Drupal Commerce is a good fit for your business.

Oct 02 2019
Oct 02

Mediacurrent works with a variety of customers across many verticals to build secure Drupal applications. We sometimes encounter strict hosting policies, including on-premise requirements.

One of the great benefits of decoupling Drupal from the web frontend is the ability to move Drupal’s CMS to a secured environment that is only accessible from a VPN or private network. Statically generated frontends like Gatsby further reduce vulnerabilities to provide a robust security architecture overall.

This article will outline three options for securing Drupal, two of which include hosting the CMS behind a Firewall only accessible by a user on a secured network. The third option is the more common alternative that provides some security but does not completely lock down the CMS.

 All options provide added security benefits over a traditional hosted Drupal application. Let’s weigh the pros and cons of each approach. 

Option 1 - Self-hosted

self-hosted option with Gatsby, Jenkins, Gitlab, Drupal

The first option runs completely on self-hosted hardware, which could be stood up on-premise if so desired. While this type of approach is becoming increasingly rare, there are still contracts in the government and financial space that require all self-hosted applications. 

This method will keep Drupal locked down on a web server behind a firewall that only privileged CMS users can access. GitLab is a great choice when Git repositories need to be self-managed but still require robust features that GitHub, BitBucket and GitLab’s cloud offerings provide. 

A Jenkins server can be stood up to handle the automation of Gatsby builds. This includes compiling the artifacts that will be deployed to the public web server on the right-hand side. For deployments, a read-only Git deploy key is a secure way of grabbing the latest Gatsby release.

Pros:

  • Ability to completely lock down the CMS environment and Git repositories

Cons:

  • Must maintain web servers, Gitlab server, and automation (Jenkins)
  • Most expensive solution to stand up and maintain

Why you would use this solution:

  • Strict security requirements
  • On-premise requirements for servers

Option 2 - Self-hosted + Cloud

self-hosted Drupal setup with cloud

The second option keeps the CMS web server behind a firewall while leveraging Cloud services for the rest of the architecture. As with the first solution, only privileged users will be able to access the CMS server. In this scenario, a Cloud Git service like GitHub will host the Gatsby source files and Netlify’s static host will run the compiled website. Netlify’s CLI can be used by the webserver behind the file server to rebuild artifacts when content is updated. A Jenkins server is a good way to handle the automation of Gatsby builds.

Pros:

  • Relatively straightforward to set up
  • An easier solution to maintain than completely self-hosted
  • Saves cost over a self-hosted solution
  • Leverage great features from Netlify (High availability, A/B testing, etc.)

Cons:

Why you would use this solution:

  • Balance security while leveraging Cloud
  • A desire for CMS to be completely locked down from outside access

Option 3 - Private with Cloud

private hosting with cloud

The last solution will not use a Firewall but instead obscure access to the webserver and in some cases add basic auth for additional protections. A CDN is recommended for inline images so that media is server from a service like Cloudfront instead of directly from the server. This method will leverage a Drupal managed host provider like Acquia or Pantheon.

Pros:

  • Able to use image CDN for inline Media
  • Can add light protections like basic auth
  • No server maintenance
  • Managed host providers provide enterprise support and features

Cons:

  • Server is still publicly accessible, so less secure than solution behind firewall

Why you would use this solution:

  • CMS does not need to be locked down
  • Security through obscurity, CMS server not indexed which shields from most attacks

Inline Images

One challenge with Gatsby is that it won’t automatically handle inline images coming from Drupal’s CMS. Gatsby does convert images that are served from Drupal’s JSON:API but it does not do anything with image paths that exist in say the body Wysiwyg HTML for any particular page. 

One option is to use the TUI Editor module that converts these images to Gatsby image assets: https://www.drupal.org/project/tui_editor

Another option would be to integrate the Drupal Amazon S3 module. This can be combined with Amazon Cloudfront to serve inline images from a secure server. Whenever a file gets saved it would be pushed up to Amazon S3 through an API and then made publicly available by Cloudfront. The AmazonS3 module allows developers to rewrite image URLs to the publicly accessible URLs that will be served by Gatsby.

Your Feedback

We hope that you have found this article helpful. Want to know more? Talk to our team of experts to discuss a solution that works for your organization.

Comments or questions? Hit me up at @drupalninja

Oct 01 2019
Oct 01

Meet Gatsby, an open source React-based framework for building super fast websites and apps. 

In this episode, we talk with Jason Lengstorf to discuss the GatsbyJS project and what it solves.

Audio Download Link

Project Pick:

https://gatsbyjs.org

Interview

  • What's your role at Gatsby, when did you start?
  • How did you get involved in the project? 
  • What did you do before Gatsby?
  • What is Gatsby?
  • How do you feel about the response from the community about Gatsby?
  • Did you think it would take off as it has?
  • Why should an org choose it over a traditional CMS?
  • What separates Gatsby from other static site generators?
  • What features is the team currently working on?
  • Closing comments

Links: 

Sep 26 2019
Sep 26

I am writing this quick tutorial in the hopes it helps someone else out there. There are a few guides out there to do similar tasks to this. They just are not quite what I wanted.

To give everyone an idea on the desired outcome, this is what I wanted to achieve:

Example user profile with 2 custom tabs in it.

Before I dive into this, I will mention that you can do this with views, if all that you want to produce is content supplied by views. Ivan wrote a nice article on this. In my situation, I wanted a completely custom route, controller and theme function. I wanted full control over the output.

Steps to add sub tabs

Step 1 - create a new module

If you don't already have a module to house this code, you will need one. These commands make use of Drupal console, so ensure you have this installed first.

drupal generate:module --module='Example module' --machine-name='example' --module-path='modules/custom' --description='My example module' --package='Custom' --core='8.x'

Step 2 - create a new controller

Now that you have a base module, you need a route

drupal generate:controller --module='example' --class='ExampleController' --routes='"title":"Content", "name":"example.user.contentlist", "method":"contentListUser", "path":"/user/{user}/content"'

Step 3 - alter your routes

In order to use magic autoloading, and also proper access control, you can alter your routes to look like this. This is covered in the official documentation.

# Content user tab.
example.user.zonelist:
  path: '/user/{user}/zones'
  defaults:
    _controller: '\Drupal\example\Controller\ExampleController::contentListUser'
    _title: 'Content'
  requirements:
    _permission: 'access content'
    _entity_access: 'user.view'
    user: \d+
  options:
    parameters:
      user:
        type: entity:user

# Reports user tab.
example.user.reportList:
  path: '/user/{user}/reports'
  defaults:
    _controller: '\Drupal\example\Controller\ExampleController::reportListUser'
    _title: 'Reports'
  requirements:
    _permission: 'access content'
    _entity_access: 'user.view'
    user: \d+
  options:
    parameters:
      user:
        type: entity:user

This is the code that actually creates the tabs in the user profile. No Drupal console command for this unfortunately. The key part of this is defining base_route: entity.user.canonical.

example.user.zones_task:
  title: 'Content'
  route_name: example.user.contentlist
  base_route: entity.user.canonical
  weight: 1

example.user.reports_task:
  title: 'Reports'
  route_name: example.user.reportList
  base_route: entity.user.canonical
  weight: 2

Step 5 - enable the module

Don't forget to actually turn on your custom module, nothing will work until then.

drush en example

Example module

The best (and simplest) example module I could find that demonstrates this is the Tracker module in Drupal core. The Tracker module adds a tab to the user profile.

Sep 26 2019
Sep 26

Search engine optimization (SEO) is the chief ingredient in preparing the recipe of top ranking on Google. SEO assist websites in acquiring traffic from organic, natural, or editorial search engine results. There are several other factors also that affects the ranking of the website, such as quality of content, site loading time, backlinks, and responsive designs.

Further, Drupal being a robust and highly customizable website content management system is considered as the most SEO friendly platform. Its unconventional architecture encourages site-builders to implement ethical SEO practices in their workflows, just to name a few, from correct tagging of content, and SEO-friendly naming conventions, to make your site search-engine friendly and user-friendly. 

Thus, with targeted content, properly coded website and theme, and installation of SEO modules can help organizations to make a success story seamlessly.

Integrate These Drupal SEO Modules For Better Visibility & Ranking

Text written horizontally and vertically inside box
Following is a Drupal SEO-friendly modules checklist that you can get ahold of to highlight your site-

  1. Pathauto

One of the most essential modules of Drupal is the Patghauto. It saves your valuable time, which you devote to create the path/URL aliases. It does so by automatically creating URL /path aliases for the contents (nodes, taxonomy, terms, users) based on configurable patterns.

For instance, we configure our blog entry as blog-entry/[node:title]. And this blog post is published with the title, “Embracing Drupal SEO modules”, Pathauto will instantly generate an SEO friendly URL as “Blog/Embracing-Drupal-SEO-Modules” instead of “node/92”. 

2. SEO Checklist

If you are aware of the SEO basics and manage multiple websites at a time, then this module is perfectly suitable for you. With SEO Checklist, you can keep your SEO practices in check. 

It eliminates guesswork by creating a functional to-do list of modules and tasks that remain pending. The regular updates of this module make on-page search engine friendly without any hassle.

 

Two boxes interconnected with each other                                                                  Source: Drupal.org

It makes work simpler by breaking down the tasks into functional needs like Title Tags, Paths, Content, and much more. Next to each tas is a link mentioned to download the module and a link to the proper admin screen of your website so that you can optimize the settings perfectly. It also places a date and time stamp next to each item when a task has been finished. This, in turn, provides a simple report that you can share with others showing what’s been done.

3. Metatag

This module allows you to automatically provide structured metadata, i.e., “meta tags”, about a website. In context with SEO, when people refer to meta tags, they usually mean referring to the meta description tag and the meta keywords tag that may help enhance the visibility and rankings on the search engine results.

4. XML Sitemap

Drupal XML sitemap module once installed will provide your website a sitemap itself and make it searchable by search engines. This, as a result, will help search engines in understanding the hierarchy of your website and accordingly crawl in a tree sort of manner.

The best part of having this module is the flexibility to include or exclude certain pages from the sitemap of your website. This means that you don’t need to get those pages indexed which you are not using anymore.

5. Google Analytics

The Google Analytics Module helps in tracing the footprints and general behavior of users concerning their interaction with the landing pages and the content present on the website. Not only this, but it also provides insights into your visitors including demographics, where they found you online, what keywords they used to find you and a lot more.

Further, it also eliminates the tracking of in-house employees who might be visiting the website very often and could be counted as visitors and unique sessions. 

6. Real-time SEO For Drupal

The real-time SEO module for Drupal relieves you from the tedious task of optimizing content by including keywords in a fast & natural way.

It works best in combination with the Metatag module. How?

It checks whether your posts are long enough to secure a place in SERPs, the meta tag is included with the high-ranking keyword present in it if there are subheadings in the post or not, etc.

This evaluation makes sure that you don’t miss out on a single opportunity even to increase organic traffic and hence improve your ranking.

7. Search 404

The search 404 module rescues your website by controlling the bounce rate, which search engines use as a criterion to rank websites’ quality. Whenever users come across some pages showing 404, this module automatically redirects them to the internal site search with the related term in the URL.

Besides, it helps you in retaining visitors coming in from old URLs linked from other sites or search indices.

8. Alinks

Alinks module automatically replaces keywords with links in the content body with a list of links. You can set the content type on which this should work by simply setting up the phrases and links through the administration interface. And from here onwards, the module will take over and replace the keyword phrases in the body field with links to the pages to specify.

9. SEO Compliance Checker

The SEO Compliance Checker analyzes the node content on search engine optimization whenever it is created or modified. Whenever a publisher saves or previews a node, the module performs audits and gives the user feedback on the compliance of the rules in the form of a result table to the editor. 

This can help SEO beginners immensely as they will get to know about the areas where they need to optimize content more accurately.

This comprises of scanning of alt tags in the image, usage of keywords in the node titles, keyword density on the body, etc. 

10. Schema.org Metatag

It maintains structured data and tags so that you can add them to your HTML to improve the way search engines read and represent your pages on SERPs.

11. Taxonomy Title

Taxonomy title modules let you edit the heading tag (H1) of the taxonomy page. The importance of H1 tag can’t be neglected and overlooked for it forms a crucial element in SEO and helps in achieving rank on the top page of SERPs. 

People interested in SEO may prefer to add more user-friendly, keyword-rich, and descriptive words to this heading element.

This is the only module that lets you control that title individually for every term. 

12. Menu Breadcrumbs

As per its name, it appends a breadcrumb menu line to the top of the website. It also provides substantial benefits for both users and search engines. Well, first it lets the user know where he is in the navigation hierarchy, and secondly, there is an anchor text in the breadcrumb, which internally links it to the appropriate URL.

13. Power Tagging

The PowerTagging module evaluates content from Drupal nodes and the associated file attachments. It interprets content and concepts automatically through thesaurus or taxonomy even if synonyms are used. Users can consolidate all suggested tags or index the bunch of Drupal content nodes automatically, leading to the formation of a semantic index. This practice makes search comfy than ever before.

Features-

  • Customizable entity’ tags with manual tags combined with an auto-completion of tags already used.
  • Multilingual tagging is supported
  • All content can be tagged automatically in one go with Bulk-tagging

 

Learn How To Use Taxonomy to Tag Content in 9 Steps

 

14. Similar By Terms

Similar by terms module tends to provide a framework for content items by showcasing a view block with links to other analogous content. The similarity is based on the taxonomy terms assigned to content. Views are available based on similarity within each of the defined vocabularies for a site as well as similarity within all vocabularies.

15. Footnotes

Footnotes module can be utilized for creating automatically tallied footnote references into an article or post, for instance, to add a reference to a URL.

16. Require on Publish

This module comes handy when fields to be required the only option is to be filled at the time of publishing content or if it is already live. This can be used when you have fields available such as tags or SEO information on your content that editors generally don’t need to fill up until the content is going live.

17. Auto Recommend Content Tags (Thru Apache Stanbol)

This module uses Apache Stanbol via a web socket to recommend real-time tags, or even find keywords while the editor is writing, editing, or creating a new piece of content.

18. Drupal SEO Tools

This is an all-inclusive SEO suite. This module offers a dashboard which encapsulates a plethora of SEO functions for the sites, from keywords, titles, tags, paths, redirects, sitemaps to Google analytics, webmaster tool, etc.

However, it has some prerequisites that must be met to make full use of the suite. 

19. Redirect

Redirect module lets you rechannel an existing URL to another one. Additionally, it keeps the two links on your website without delivering a 404 not found error. It also works wonder in case you want to handle duplicate content.

Watch this video further to understand more about Drupal 8 SEO-

[embedded content]

20. Global Redirect

The problem with the alias system in Drupal is that the default URL is still present, i.e., there are still 2 URLs pointing to the same content on your website. The search engine bot can identify the duplicate content easily, and so it can put an impact on your website ranking.

Global Redirect module cures this problem by checking if there is an alias for the existing URL and if it is, then it redirects to the alias URL.

Besides, it exhibits other features like removing the trailing slash in the URL, cross-checking that clean URLs are being implemented correctly and checking permission and access to nodes, URLs.

21.Content Optimizer

Content optimizer module improves your website’s search engine ranking by refining the on-page optimization factors and ensuring that your content meets all the requisites listed under Drupal SEO best practices. It instantly audits your website content through SEO analyzer and guides as per the content stats obtained to improve search engine rankings.

22. Site Verification

Search engines rank your website when they are able to properly navigate through your website and also index it. Now, to know if your site is crawlable you need to verify it. This site verification module helps in the same by either uploading an HTML file or adding meta tags. It supports search engines like Google, Yahoo, & Bing. 

You can use this in combination with XML sitemap to let search engines index your up-to-date website content appropriately.

23. Links Checker

Broken things are considered unlucky and so as is the case with broken links for your website ranking. Broken links put a bad impression on search engines. Hence, Links Checker module can help specify the failed results which you can rectify easily.

24. Menu Attributes

The Menu attributes module facilitates the admin to point out specific attributes comprising of id, name, class, styles and rel.

This module is helpful in your SEO strategy especially when you want to “nofollow” certain menu items to mold the flow of PageRank through your site.

Are You The One Who Is Offending Search Engines? --- Follow These 5 Tips To Avoid Common SEO Mistakes

“To err is human, to forgive is divine”- Alexander Pope

After all, we, being humans, can also flub in achieving our goals. However, if not rectified on time, can result in heavy loss. And here by heavy loss means, your site won’t show up on top pages of the search engine results.


Notebook, phone and glasses kept near a man

Perhaps, you can prevent it from happening by following these 5 simple tips and tricks-

  1. Include top-ranking keywords in your content

The primary task to be SEO-friendly is to focus on the keyword strategy for your website. Use various keyword tools, like Google Keyword Planner or SEMrush to find out the high ranking keywords that you can use in your website content ( landing pages, blogs, and other information pages) to secure top rank on the search results of the search engine.

2. Ensure that your URLs are search-engine friendly

Another important factor in our SEO checklist is to URL structure. Yes, it does matter! Search engines like Google, Bing put a lot of stress on the use of user-friendly URLs. Such clean URLs make the content more readable and also give a clear picture of what the page is about. Example of an unambiguous URL for a service page of a site would be something like this-www.example.com/services.

As discussed above, the Pathauto module is an excellent Drupal module which makes this process a whole lot easier by converting complicated URLs to clean and clear URLs.

3. Don’t underestimate the power of metatag

Metatags are those micro-sized text pieces that you (should) place in the header part of your website to make search engines aware of what the web page is about. 

In case you don’t include metatags in your content, the search engines are forced to guess what the page contains and trust us, this could seriously piss off search engines, and eventually, your SEO ranking will suffer!

Fortunately, you don’t need to indulge yourself into the code of your Drupal site’s web pages to implement meta tags since Drupal already has a solution (module) for it- Metatag module

With the metatag module, you can automate the process of placing meta tags and HTML title tags in the header of your webpage.

4. Indulge Users With Your Mobile-friendly Website

The changing technology scenario has brought everyone together with the advent of mobile phones, especially millennials, who use their smartphones to access the internet for every small detail.

Having said that, Google now prefers those websites who offer users mobile-friendly interface. Therefore, it’s high time that companies optimize their Drupal website well to adapt to the screen size of different devices. Enterprises can use content-as-a-service (CaaS) to push their content via APIs on their Drupal website. CaaS automatically adjusts the size and format of the content, increasing the feel of the content.

That’s why Drupal 8 is considered as an out-of-the-box solution for driving the SEO compatibility of the website effortlessly.

5. Keep Drupal updated

Drupal, being open-source software, and managed by a huge community of developers is regularly updated to incorporate new features and fix bugs and errors to keep potential security risks at a dead end. 

This has two benefits, one- your website will be safe from any cyber-attacks and second, search engines list those sites on top which keep vulnerabilities at bay. 

Hence, keeping your website updated is an important factor in your Drupal SEO journey. Make sure that you keep on updating your Drupal site as soon as an update is rolled out to keep website ranking high on SERPs.

Final Words

Confining yourself to just creating a website and pushing content on it is never enough to get your website on the top search results of search engine pages especially when there is a slew of websites present on the world wide web.

Search engine optimization for Drupal is a homogeneous practice that evolves as you keep investing time on it. The more you practice, the more is the visibility! Integrate these modules onto your website and also follow the mentioned Drupal SEO guide religiously to witness a significant boost on your website’s ranking on search engines. After all, it’s worth a try!

Sep 22 2019
Sep 22

Though big data, AI, Cloud, blockchain, and open-banking have been here since quite a long time to transform the way financial services are designed and rendered, there is still a roadblock in the way ahead - core banking infrastructure.

Open-source banking can level the playing field and enable incumbent players to take advantage of these powerful trends and transformative technologies

Outdated architecture, costly licenses, specialized consultants-all of these hinder accessible FinTech services from keeping up the pace with current trends even in this era of smartphone ubiquity, where with one click, everything gets done!

Open-source banking can level the playing field and enable incumbent players to take advantage of these powerful trends and transformative technologies.

By leveraging common technology infrastructure, it can analyze the customer data and deliver a seamless banking experience via the mobile phone, leverage the power of the cloud, connect into a distributed ledger and digital payments, and more.

As per the PWC Report, there are over 80% of the financial institutions that believe business is at risk to innovators; 56% believe that they have put the transformation in their core strategy ; 82% expect to increase FinTech partnerships in the next three to five years, and 77% expect to adopt blockchain as part of an in production system or process.

Drupal is the perfect website content management framework to create open-source banking platform where it will not only reduce costs significantly, free up IT teams to focus on innovation but also enable greater security and extensibility to new devices and delivery channels.

Challenges Faced by FinTech Ecosystem

Though FinTech solutions have been doing the rounds for quite some time now in the market, there are a few constraints that are still stonewalling the industry’s growth. Some of these are underlined below:

  1. Market regulators

    1. Balancing data privacy needs with the industry’s requirement for open data
      Market regulators are having a hard time in striking the balance between consumer needs of data security & data privacy and industry’s need for open data for insight generation. Data privacy is critical to safeguarding consumers’ trust in the FS space, however, stringent practices on data sharing can hamper the free flow of data crucial for creating innovative solutions. Data privacy is critical to safeguarding consumers’ trust in the FS space
    2. Aligning with the anticipated risk associated with advanced technologiesMarket regulators need to match the pace with the fast-changing technology landscape to fully understand the evolving risks on the wider ecosystem. For example, cryptocurrencies could be used for money laundering, and AI-driven algorithm trading could lead to system-wide risks by increasing market unsteadiness.

      Also, AI-led models for credit assessment and underwriting could lead to a segment of one and end up pricing certain customer segments out of the market for good.
      Various elements and text in one rectangleSource: Mastercard

    3. Ensuring stability in the FinTech sector in this close network of world
      It’s evident that FinTech players have created a diversified FS ecosystem which has led to the strengthening in interconnectivity, but it has also brought forth new systemic risk by launching disruptive models.

      For instance, local regulators are grappling to supervise global technology firms who operate across multiple jurisdictions, leading to regulatory arbitrage.

  2. FS Incumbents

    1. Reskilling people for the modern digital world
      It is one of the key challenges that industry is right now facing and i.e., “How to adopt workforce re-skilling strategies to endure the technology-led revolution”?

    2. Regular monitoring of advanced technologies
      Such regulations have clipped conventional players’ ability to experiment with advanced analytical models in areas directly influencing customers
      The FinTech industry is finicky about consumer security necessitates that advanced models should be employed in sensitive areas such as lending pass the test of explainability to protect consumer interests. Such regulations have clipped conventional players’ ability to experiment with advanced analytical models in areas directly influencing customers.

  3. FinTech players

    1. Tackle the cyber-security concerns to gain consumers’ trust
      The advancement of technology has its pros and cons. And one of the cons is increased cybercrime! Its now FinTech players and their partners’ responsibility of ensuring that appropriate digital control measures are taken to secure customers’ trust and assets.
    2. Lack of early-stage funding
      Despite the FinTech space appealing sustained investments over the past few years, many smaller startups still struggle to gain early-stage capital, prohibiting their potential to scale up.
    3. Managing regulatory uncertainty
      Although Indian FinTechs have worked in an enabling regulatory environment, they still have not been resistant to regulatory uncertainties. Many FinTechs who had built their business models around Aadhar-enabled services for customer onboarding had to pull it out due to physical mandates, leading to the disruption in their operations.

How Drupal Modules can Power FinTech?

Organizations planning to or delivering FinTech solutions need to maintain a robust online presence. Drupal has been powering the landscape of FinTech with its extraordinary capabilities.

However, unlike with media publishing, education, or government verticals, which have dedicated distributions, there is no such scenario in FinTech.

The mentioned ones satiate the needs of consumers by providing related features with ease-

  1. Commerce PayPal
    Commerce Paypal incorporates PayPal into the Drupal Commerce payment and checkout programs. Currently, it lends support to:
    1. Off-site payment via PayPal Payments Standard (WPS) & PayPal Express Checkout (EC),
    2. Off-site or on-site payment via PayPal Payments Advanced (PPA),
    3. Payflow Link (PFL), and
    4. On-site credit card payment via PayPal Payments Pro (WPP).
      The PayPal WPS / EC Integration supports PayPal’s Instant Payment Notifications (IPNs) to respond to authorizations, captures, voids, and refunds with full logging for testing and debugging.
  2. Currency
    Currency takes this overwhelming task on it by converting currency with its inbuilt conversion and price display input filter.
  3. Commerce Paybox
    Paybox is integrated with Drupal Commerce payment and checkout system. It offers two mechanisms - Paybox service and Paybox Direct (PPPS), wherein former service offers a payment solution on its server and redirects customers to paybox.com during the payment process and the latter one supports on-site payments. This implies that payments are done on the Drupal site.
    Installing HTTPS before implementing this payment method is considered good practice to ensure security.
  4. The Google Currency Converter
    The Google Currency Converter module has integrated Google finance calculator within it to convert currency on the website. It also offers an option where you can set your default currency and default currency conversion format.
  5. BudgetUsers can set up a budget with this module to manage their finances. The list of requirements goes like this:
    1. Data Structure- Data will be broken down into four main taxonomy terms: income, expenses, debt, and savings. From there, sub-terms can be added by the site administrator to further classify data items. Main terms can also have sub-terms, where the user can enter their description.
    2. User-interface- The data entry will be a multi-part question and answer session, with help pop-ups to help users enter data and select sub-terms from a drop-down menu to manage their finances.
    3. Security- Appropriate measures will be taken to ensure the privacy and security of the user and their data. Only the user, system administrator, and financial adviser role will be able to view the individual user’s data and report.
    4. Recommendations- The finance recommendations will be based on the user data’s deviation from normal as a percentage of net income for his/her income group. Additionally, the site administrator will be able to set thresholds where red flags will be raised along with the description for the user to understand the reasons behind it.
    5. Aggregate Reporting- The module will produce aggregate reports in spreadsheets with 6 months cost projections. These reports will be exportable in excel spreadsheet format.
    6. Open Source- The module will be licensed under the GPL and contributed to the Drupal community.
  6. UC OmniKassa
    Integrate Rabobank OmniKassa  to make it as a default checkout method for UberCart.

    This module offers different payment configuration methods (iDEAL, Credit Card, transfer) to use via SHA-1 encryption for secure payment status verification. All settings are adjustable in admin form.

  7. Ubercart Affirm
    Affirm is an off-site payment method and a financing alternative to credit cards and other credit payment products. This project integrates Affirm Credit Payment Gateway into the Drupal Ubercart payment and checkout systems.

    Watch this video to understand further how technology is changing the Finance sector-

    [embedded content]

     

  8. Commerce Lending Works
    Lending Works aligns investors with borrowers directly who want to spread the cost of their purchase. It offers flexible finance on purchases from £50 to £25,000, without any hidden fees.

    This module is useful for a retailer in:

    1. Boosting sales- Finance services can shoot up retailers’ sales by 17% and order value by 15% on average.
    2. Refined customer experience- Customers enjoy the hassle-free process whether its online, in-store or over the phone.
    3. Rocket science made simple- The integration process is super-fast and provides round the clock support to help them analyze sales on one easy-to-use online account, or connect by API.
    4. Flexible finance - Split small purchases into 3 interest-free payments or Finance from 6 to 60 months on purchases from £250.00
  9. Drupal Finance
    Drupal Finance aims at providing complete business accounting and finance solution. However, don’t use it in production as it is in the very early stages as of now and entity schema will likely change without any prior information.

The following features are either currently available or are in development:

  • Organizations
  • Financial Documents Entity Type with Bundles
  • Supplier Entity Type
  • Financial Field Type to store the monetary value of a particular currency, along with performing currency conversion based on the primary currency of the organization.
  • Formula Field Type (experimental) which can be used to dynamically perform calculations based on mathematical equations and can contain Tokens to include values from other fields.

    It comes in handy where value is based on values of other fields, such as adding together an invoice total amount and tax.

    Integration with the Currency module, along with an Exchange Rates Plugin which provides real-time and historical exchange rates powered by ExchangeRatesAPI.io.

Distributions

  1. Guardr
    Guardr is a Drupal distribution made in combination with the modules and settings to upgrade the Drupal’s application security and availability to meet enterprise security requirements.

    Sufficient information must be fed to the system so that it can store it and compute it to prevent any service disruptions caused by power outages, hardware failures, and system upgrades.

  2. Droopler
    Droopler is a Drupal 8 distribution offers pre-built websites with complete functionalities so that you can tweak as per your requirements and get your good-looking website ready swiftly.

    Droopler is great for:

    1. Website factories - Used to build various microsites with editors having the power to edit content. Pick a theme to match your brand colors and get your website ready instantly.
    2. Corporate websites - Having a site is essential for all to stay in business but it's not necessary that all companies have an extravagant budget. Drooplers is a great start to create websites in a pocket-friendly manner.

      Custom Bootstrap 4 theme

      SCSS included and all variables & settings can be customized to match your needs.

      Built on Paragraphs

      Multiple boxes with lines drawn inside them
      Source: Drupal.org

      It uses Paragraphs module to create the pages. During the installation, you get one content type with various paragraphs (banner, feature list, text with an image on the site, headline text with background image), all themed and working exceptionally.

      Multi-language support

      Two languages are set by default for a demo with options to remove them/add more as in the case with any multilingual Drupal site.

  3. Seeds- Drupal Starter KitSeeds is a light distribution which SMEs can use to kickstart their projects irrespective of scale to speedily complete their projects.
  4. Panopoly

    A base distribution of Drupal powered by lots of Chaos Tools and Panels magic enacts as both general frameworks for site-building and a base foundation upon which other Drupal distributions can be built. 

Final Words

Consumer demands are taking a paradigmatic shift- and FinTechs are iterating on the product quickly to get ahead of demands by offering alternative financing sources, branch-less banking, and more. However, there is no need for enterprises to reinvent the wheel to achieve the necessary objectives, as the tools and technology that they need to deploy, Drupal, Blockchain, Cloud, AI, & Big data are all available commercially and they can leverage it to scale a comprehensive data ecosystem using APIs while mitigating risk.

They will either demonstrate significant improvements in automation, digitalization, analytics, quality, security, and compliance or else they will go backward compared to their peer group.

Here is to the hopes of using better technology and getting great business outcomes in the year ahead!

Sep 21 2019
Sep 21

Content has proven itself king time and again. The enthusiasm with which B2B and B2C companies are investing in content production, has however brought up a significant question- Are users able to find the relevant content?

Finding the relevant web content has been one of the biggest issues that enterprises and users both have been facing

Finding the relevant web content has been one of the biggest issues that enterprises and users both face and so, it needs to be addressed without further delays to avoid poor user experiences and negative sentiments. 

Additionally, big brands and companies also lose out on opportunities due to the content searchability issue, like failing to quickly come up in the search results for a given phrase or set of keywords, which can jumble the company’s revenue percentage.

The problem can be fixed with little effort for Drupal powered enterprises. They just have to inculcate content tagging while classifying their piece of content. 

Having said that, this blog will provide insights on content tagging, taxonomy, and how implementing these factors on your Drupal website can take your marketing efforts to a whole other level.

Why Does Strategic Taxonomy Matter?

Content tagging can be huge resource-demanding and tedious task, especially when done manually, leaving companies wondering even if it’s worth the efforts. So, before building your tagging taxonomy, it’s better to understand why it matters.

All your efforts put into procuring and producing content will go wasted if there is no one to read it

  • Searchability- For your targeted  audience to find it

Enterprises have diverse and in-depth categories of resources available but what if users visit the site and could not find the desired content, they’re going to leave of course. 

All your efforts put into procuring and producing content will go wasted if there is no one to read it. Thus, it’s better to help your targeted audience access your content in the simplest and convenient way through a proper tagging structure.
Box comprising circle in it                                                                         Source: Curata

  • Usability: For your internal team to leverage it

Content tags not only benefit users but also internal teams of the company, especially sales. Including tags such as buying stage, persona, industry, product line, and geographical region, will only benefit the sales team to leverage and share relevant content with potential customers that align with those components. 

It will facilitate key stakeholders in disseminating content in their network to move users through the preferred funnel

This strategic content plan and execution as per business goals will increase the shareability of content for your users and will also facilitate key stakeholders disseminate content in their network to move users through the preferred funnel.

  • Data Insights: For your analytics team to gain insights from it

Another key benefit of proper tagging taxonomy can be leveraged through tag structure. It helps in building custom segments of data for your analytics teams to extract data and insights on the content framework, calendar promotion schedule, and content production cadence, and audience preferences so that you can tailor your content accordingly.

  • Sales Acceleration: For your readers to navigate, curate and refer to it

The agenda has been always on enhancing user experience. If they have engaged with a piece of content that resonated with them, they are more likely to read more content on the same topic, category or style. Tagging taxonomy with simple tag filtering showcase users the next article they should read as in line with your preferred funnel structure.

If users have engaged with a piece of content that resonated with them, they are more likely to read more content on the same topic, category or style

All this can be achieved by simply organizing content through a strict tagging taxonomy.  A better content tagging structure can create more business efficiencies for users and internal teams- they can tangibly impact the bottom line!

Content Tagging and Drupal Taxonomy

In Drupal, taxonomy is the core module used for categorizing or classifying content being built on the website with the CMS. It is critical to the website’s information architecture, on both the back and front ends.

Taxonomies in Drupal consists of vocabulary associated with them. This vocabulary list helps CMS to determine what items belong with what types of content. Further, vocabularies have terms with them, where the list of terms define the contents of the vocabulary. 

These can be a part of a hierarchy or simply a compilation of tags. Tags group nodes (elements in Drupal sites that contain content; eg. articles and basic pages) together. These can then be referenced with the search on the website. 

Sites built on Drupal can have an unlimited number of vocabularies and terms, so complex sites can be built using the framework. These two elements associated with your website can serve several purposes, especially for displaying content and managing content assets. It can also be important for reference as well.

Content tags, on the other hand, are a great way to navigate websites. In fact, this type of tag often appears as a hyperlink that users can click on to view other content in the system that contains the tag. These are used within the content management system, say, Drupal, to organize, filter, and relate content for end-users.

These tags can be applied in a few different ways, depending on the system that is using them. Some systems will allow for the creation of highly controlled tagging lists that content providers can choose terms from. Other systems may supply a free-tagging method, where users just type in terms.  Some systems allow for both methods.

How to Use Taxonomy in Tagging Content?

Although you can optimize your content based on its type, you might also want to view content based on what it is about. Taxonomy allows you to link terms with the content which you can put to use in organizing and presenting content on your website. 

Taxonomy allows you to link terms with the content which you can put to use in organizing and presenting content on your website

You can refer to this blog , Adding Tags with Drupal Taxonomy In 9 Steps,  to learn using taxonomy in tagging content. There are nine steps given which you can follow to classify your content hassle-free and increase your site visibility.

How Drupal-powered Enterprises Can Benefit From Using Taxonomy?

Taxonomy plays an important role in content strategy as it can make sense of your organization’s content by supporting the following activities-

  • Search and Discovery

This is the most common and useful benefit of taxonomy-  as it facilitates search and discovery in knowledge-driven and Drupal-powered organizations; leading to improved discovery layers including search, related content, and personalization so that it can work across various content repositories and even multiple organizations. In the end, the objective is to empower users and knowledge workers so that they can quickly find what they need. Search is essential for their productivity  and taxonomy can ensure it to a great extent.

Search engines like Google and Bing will be able to easily determine the site’s content, architecture, design, and organization of the website files, and hence improving ranking on SERP.

  • Permissions or Visibility

The goals of Drupal-powered organization determines how best to use taxonomy, permissions & metadata to share the information (public, confidential, semi-confidential, etc.) within the organization with various parties. There are many nodes and specific content that only certain members with the organization are allowed to edit.

Developers can use the permissions in the administration page within Drupal to assign permissions and roles for registered users of the site

Developers can use the permissions in the administration page within Drupal to assign permissions and roles for registered users of the site. This ensures high flexibility to developers as  they can also modify the content which the public can view.

  • Repurposing

Re-using the existing content wherever it’s relevant instead of starting from scratch or simply recombining the taxonomy (if there is not even one in place to allow items to be found) into new useful information sets can save plenty of time and efforts of the organization. It can also help in reaching new audiences and reinforcing your message.

  • Future-proofing knowledge held in the business

Taxonomies are “knowledge insurance” that stores and shares classified information assets, to retain knowledge accessibility while people move on. Obviously, a taxonomy can also move by continuously evolving in line with the needs of the organization.

 6 Best Practices To Tag Content Well

  • Consistency is the key

Use clear, consistent tagging throughout your organization to provide a uniform experience to the customers. Marketing and sales team should  use the same taxonomy terms to tag content. 

However, if you won’t share tags from the same taxonomy, you are going to have a fractured website.

Too many tags oversaturate search results, and too fewer tags fail to provide enough personalized content

  • Strike the right balance

Users find it informative when tags are marked appropriately. Too many tags oversaturate search results, and too fewer tags fail to provide enough personalized content. So, it’s important to find the right balance.

  • Focus on the user

The right balance can be easily achieved by focusing on users’ experience. Ponder upon the tags before adding that, will it add value to users’ experience or is it just because you want the asset to get more attention on the site?

Three circles connected to each other

Take yourself out from the tagging equation and focus on the experience part, you’ll get a much clearer picture of which tags are and aren’t appropriate

  • Prioritize your time

Tagging consumes a lot of time so it’s a good practice to prioritize and maximize your time by evaluating the content. Find out which assets need more detailed tagging (for say, only those that will live on the site for a long time) and which can have more general tagging as they will change often (e.g. industry reports) so that you can your time and sanity.

  • Fill your content containers well

A tag associated with a topic having a  plethora of information within it is likely to keep a reader more engaged than a tag that has only one or two pieces of content. So, before creating a new tag, ensure that you have ample amount of content that could be tagged the same way.

  • Consider SEO while selecting tags

Use keyword planner tool to check SERPs and find out what keywords do users use to search the content-  is it the acronym, plural construction, or spelled out version. 

Drupal Modules

Here are some modules listed that work around the principle of taxonomy and content tagging-

The Power Tagging module is linked with thesaurus or taxonomy to interpret content and its concepts in Drupal. Users can easily curate all suggested tags at one place or can even compile collections of Drupal content nodes to create a semantic index. This makes search more comfortable than ever before.

It also allows you to customize your entity’s tags with manual tags and perform multilingual tagging. 

Features

  • Tweak your entity's tags with manual tags combined with an auto-completion of already used tags.
  • Supports multilingual tagging
  • Whole content can be tagged automatically at once via Bulk-Tagging

Available for - Drupal 8 | Not covered by Security Advisory

This Drupal module provides context for content items by displaying a view block with links to other similar content. The similarity is defined as per the taxonomy terms assigned to content. Views are available based on similarity within each of the defined vocabulary for a site as well as similarity within all vocabularies. 

Simply put, you can use this module by creating a free tagging vocabulary called “Tags” assigned to the content types on which you would like to display a similar view block.

Available for - Drupal 8 | Covered by Security Advisory

Good search engine optimization practices bring organic traffic to the website. And so this module helps in updating the heading tag at the top of the taxonomy term page so that it appears on top in SERPs. This is the only module that lets you control the title individually for every term.

Enterprises should add more user-friendly, keyword-rich, and describing words to this heading element. 

Available for - Drupal 7 | Covered by Security Advisory

Azure Cognitive Services API module  seamlessly incorporates intelligent features and technology into the Drupal applications, like Machine Learning, Artificial Learning, and Natural Learning Process, to detect speech, facial and vision recognition other than detecting the emotions. 

Among the 4 features it provides text analysis, API module is helpful for tagging

  • Azure Text Analytics API Module

Text Analytics API is a cloud-based service that provides advanced natural language processing over raw text and comprises of three main functions- sentiment analysis, key phrase extraction, and language detection.

Available for - Drupal 8 | Covered by Security Advisory

This module helps in optimizing content around keywords in a fast, natural, and non-spam manner. It also keeps a check on other SEO factors such as the length of the post, written meta-description using focused keywords, and subheadings within the post. 

This real-time page analysis ensures that your content is easily searchable and liked by users.

Available for - Drupal 8 | Covered by Security Advisory

It is a great SEO module since it takes away the boring and laborious task from you. It automatically defines URLs which are both user-friendly and relevant as per the category and page title. This clarity in classification helps users churn information with ease and you can also get brownie points from search engines.

Available for - Drupal 8 | Covered by Security Advisory

Metatag module facilitates enterprises to provide more metadata on their website. This includes tags, page titles, descriptions, etc. As a result, it helps Google in ranking the website in SERPs.

Available for - Drupal 8 | Covered by Security Advisory

It is a semantic vocabulary of tags that you can add to your HTML to improve the way search engines read and represent your page in SERPs.

Available for - Drupal 8 | Covered by Security Advisory

Final Words

Embracing taxonomy and tags to classify content is a great way to solve the problems of those organizations who possess a gigantic amount of data or are anticipating to create a huge amount of it in the future.

Also, since Drupal is open-source software, there is an outstanding opportunity for enterprises to learn from a community of developers and users. However, the foremost task that organizations should do is start thinking hard about what they are doing with their content once it is classified and how they intend to deliver it so that it serves best customers’ manifold needs.

Sep 20 2019
Sep 20

While compelling content marketing taxonomy in Drupal isn’t just about enhancing the searchability of your content but to also ascertain content priorities based on what’s in an item. However, there were 56% marketers from B2C and 64% marketers from B2B who didn’t even have a documented content marketing strategy as per this source. 

A content marketing taxonomy aids content strategizing by organizing content in an easy-to-understand way for marketers to analyze data and gaps

Let’s dive into this blog to learn using taxonomy for tagging content-

How to Use Taxonomy in Drupal to Tag Content?

Each set of taxonomy terms is part of a category set that you define and is called a vocabulary. Terms in vocabularies are that can be broken down further and can contain sub-terms.

Therefore, it is of prime importance to first understand how to create vocabulary-

1. Go to Manage >> Structure >> Taxonomy. By default, tags (as a vocabulary) is here.
At this place, we can add vocabulary by clicking on the + Add Vocabulary

Rectangle box with text written inside

Enter the name of the newly created Vocabulary along with the short description.

Box with name and description fields inside

2. Click on the Save button. You will be redirected to the Ingredients page, which shows a list of all the terms that you have added in this vocabulary.Box with text inside it

3. Now click on the Add term. Enter "Butter" in the Name field. Once done, click on the Save button.

Box with Add term title page

4. You will receive a confirmation about the term you created. You can also add more terms, like "Eggs" and "Milk".

5. In the Manage administrative menu, navigate to Structure > Content Types(admin/structure/types). Click Manage fields for your Recipe content type.

6. Click Add field, and enter values from the table below. Once done, click on the Save button and continue.

Field name Explanation Value Add a new field Select the field type Reference > Taxonomy term Label The title to give the field Ingredients

Rectangle box with Add field title page

Field name Explanation Value Type of item to reference The type of entity that is referenced by the field Taxonomy term Allowed number of values The number of values a user can enter Unlimited

Dropdown menu option in a box

8. On the following configuration screen, enter the values from the table below. Click Save Settings.

Field name Explanation Value Help text Help showed to users creating content Enter ingredients that site visitors might want to search for Reference type > Reference method Select the method used to choose allowed values Default Reference type > Vocabulary Select the vocabulary to choose allowed values from Ingredients Reference type > Create referenced entities if they don’t already exist Whether new ingredient terms can be created from the content editing form

Checked

Box with various fields and options

Click Save Settings. You will be taken back to the Manage Fields page. A message will pop up stating that the configuration for Ingredients is complete.

Box with manage fields page

And you’re done!

You can also watch the video shared below to learn further on setting up taxonomy.

Drupal 8 User Guide- 6.6. Setting Up a Taxonomy (1)

   Video Courtesy: Drupalize.me

Conclusion

Following the given steps will help you in implementing clear and concise content marketing taxonomy in Drupal, which as a result, will improve the readability of your editorial calendar. It will also allow all the stakeholders and team members to know what kind of content you’re creating in just a glimpse.

Happy Tagging!

Sep 19 2019
Sep 19

Ubercart, once the go-to commerce option for Drupal and the precursor to Drupal Commerce, is slowly fading away. Its usage has been declining for years and a stable Drupal 8 release will never happen. Even one of the original creators has moved on to support a new Drupal ecommerce solution instead of continuing on with Ubercart. In you’re running an ecommerce site that uses Ubercart, this post is for you. Our goal is to show you why you should consider moving off of Ubercart now instead of waiting until it finally reaches end of life.

The decline of Ubercart today

As mentioned in the introduction. Ubercart usage has been declining for years. The Drupal 7 version of the module is where it saw most of its success with usage peaking in 2014/2015, but usage has been continuously dropping since then. The following graph is a snapshot of Ubercart’s usage history as recorded on Drupal.org.

Ubercart usage history
Ubercart usage history (source)

Ryan Szrama, one of the original creators of Ubercart, moved away from it and started the Commerce module for Drupal as a replacement. Since then, the majority of the ecommerce community around Drupal has also moved along with him making Drupal Commerce the new go-to option for ecommerce built on Drupal. Not only does Commerce now have more installs for both Drupal 7 and Drupal 8, but it is also a much more active development community.

Usage-statistics-for-Drupal-Commerce-1
Commerce usage history (source)

Ubercart and Drupal 8

The Ubercart module has never moved over to a proper Drupal 8 release. Development is stuck in alpha and without a new release in over 3 years, there is never going to be a stable Drupal 8 release.

What “alpha” means

In software development, alpha is a term given to a software release that is still very much in development and not ready for production. Here’s the description of alpha from Drupal.org.

alpha: Most reported errors are resolved, but there may still be serious outstanding known issues, including security issues. Project is not thoroughly tested, so there may also be many unknown bugs. There is a README.txt/README.md that documents the project and its API (if any). The API and DB schema may be unstable, but all changes to these are reported in the release notes, and hook_update_N is implemented to preserve data through schema changes, but no other upgrade/update path. Not suitable for production sites. Target audience is developers who wants to participate in testing, debugging and development of the project.

In contrast, the Drupal Commerce module has had many full production-ready releases for Drupal 8 and follows a release schedule for bug fixes and new features. The group behind Drupal Commerce is actively developing the core software and the wider community is also active in supporting the project.

Ubercart and Drupal 7

What Ubercart development still happens focuses on maintenance of the Drupal 7 version only. The catch here is that Drupal 7 reaches end of life November 2021, which will likely spell the effective end of Ubercart as well. If you’re using Ubercart and Drupal 7 together and you want new features and active development, that realistically ended years ago when the majority of the contributor community moved away from the project.

Here’s a couple snapshots of the commit history for both the core Ubercart module and the core Drupal Commerce module. A commit is a term given to code changes that have been added to the module. Commits are typically code improvements, new features, bug fixes and security updates that have been written, tested and approved for release.

ubercart-commit-historyUbercart commit history

drupal-commerce-commit-history
Commerce commit history

When looking at the graphs above, it’s important to know that it’s common to see number of commits trailing off over time. This is because the majority of the core software is built early on and so fewer commits are made over time as development of the core ramps down. What is important to see is that development of Drupal Commerce over Ubercart is still continuing, meaning new features and code improvements are being actively made to the core Commerce software but not to Ubercart.

Another point to note about these graphs is that when commits are ramping down to the core software, development efforts are likely being moved to community built extensions. This data isn’t reflected in the graphs above. The community built extensions is the ecosystem of new add-ons and features that aren’t found in the core software. In the case of Ubercart, this community development is very small and limited whereas for Drupal Commerce community is very active and engaged.

Where to go from Ubercart?

You’ve probably guessed this already, but the clear path moving away from Ubercart is to Drupal Commerce. Commerce is the Ubercart replacement and it’s capable of so much more. It’s also Drupal 8 ready and will provide a painless transition to Drupal 9, when that happens.

Commerce improvements over Ubercart

The following is a list of improvements Commerce for Drupal 8 has over Ubercart:

Drupal 8 improvements over Drupal 7 include:

  • Robust caching and performance for authenticate or unique users, very important for any ecommerce site
  • Drupal’s new rolling release schedule, no more large updates between versions makes updates easier
  • Modern object oriented design, which makes testing, extension and use of 3rd party libraries easier. Commerce follows all of the architectural improvements for Drupal 8 and has, in some cases, lead the way by innovating first.

Commerce improvements over Ubercart include:

  • More secure payment architecture. Commerce encourages the lowest level of PCI risk possible and enforces good practices with it’s payment API, compared to Ubercart’s primarily DIY payment model.
  • Proper variation based product model with unique SKUs for each variation
  • Robust and accurate promotions, discounts and pricing adjustments. If you’ve struggled with pricing accuracy in Ubercart you’ll understand.
  • Multi-store and multi-currency support is robust and built in.
  • And the list goes on…

Why move now instead of later?

While you could wait until Drupal 7 end of life to move your ecommerce site off of Ubercart and onto Drupal Commerce, this is not something we would ever recommend. The truth of the matter is that by waiting until the very end, you’re taking on a lot of unnecessary risk for both your business and your customers. You don’t want to be in a position where you’re scrambling to make-it-happen quickly when suddenly you’re not getting any more security updates to both Drupal 7 AND Ubercart. That is a worse-case scenario and you would be wise to avoid it.

Right now is an ideal time for you to consider making the switch. Both Drupal 8 and Commerce have been used in the wild now for years and the software is very stable. Most likely all of the features and functionality that you currently use has already been ported over to the new versions. The tools that help migrate Drupal 7 and Ubercart over to Drupal 8 and Commerce have been created to assist with the move. Really, from a technical standpoint there’s no reason to not make the move now.

Of course, it can’t be denied that completing a migration to the latest and greatest does take time and effort to do, and there will be a cost involved. All the more reason to start the process now. Right now you have the time to find the help you need and to properly budget and plan how your migration will be executed. Right now it’s not a hassle, it’s an opportunity to make your business better for both you and your customers while at the same time correcting any of the little things that bother you about your site now.

Acro Media has been helping ecommerce owners and operators with consultation and development for well over 10 years. We’re intimate with both Ubercart and Drupal Commerce, and we even staff some of the talented people who built Commerce and the migration tools everyone uses to make the move. If you want to learn more about how your migration would happen, we would love to talk. Click the link below to get started.

Read the full Gartner report

Sep 19 2019
Sep 19

With the proliferation in the touchpoints that enterprises use to connect with customers and provide them with the valuable experience, it’s has become a tedious and challenging task to optimize the content far and wide.

Further, the number of devices that consumers use to access brand content- desktops, mobile phones, laptops, tablets, and smartwatches - with yet more looming on the horizon; have their own set of restrictions and specifications which again increases the complexities of content creators & marketers in the dissemination of the personalized content.

Also, this Gartner Report  suggested that marketers & decision-makers should now opt for a unified experience strategy to streamline their customer-facing content. This can be done through the implementation of the latest technology and channels to promote dynamic personalization and optimize content in an avant-garde manner. And all this can be executed by dint of Content-as-a-Service.

This blog provides further insights on CaaS, its use cases & features, and how enterprises and marketers can leverage Drupal as CaaS for managing their content efficiently.

What is Content as a Service?

Content-as-a-Service (CaaS) focuses on managing structured content into a unified repository or feed that other applications and properties consume.

The idea behind it is to provide a future-ready CMS that makes content readily available by employing API with or without developing the presentation tier. The presentation layer can be a website, a mobile app, or a feed into a device’s interface. 

The idea behind it is to provide a future-ready CMS that makes content readily available by employing API with or without developing the presentation tier

This separation between the content itself and its presentation implies that RESTful APIs, for instance, can provide the same content that serves both your website to an iOS or Android app.

Put simply, it draws a clear line between the people creating the content, the people delivering the content, and of course, the people consuming it.

A long box with different elements inside

Source: Bloomreach

Characteristics of Content-as-a-Service solutions include:

  • The content disseminated across all channels via a Rest-based API

  • A method of developing content as per prescribed content models

  • Structured formats for returning content via simple queries.

  • Distributed authoring and workflow content administration

  • A content repository hosted in the Cloud for universal access

  • Triggers that alert customer experience applications that consume content to content updates

  • Metadata definitions that can be defined and move along with the content via API

How Does CaaS work?

The actual implementation of CaaS can vary as in the case with any architectural pattern but here is a general overview of how CaaS platform may work-

Multiple boxes connected in flowchart

The content management UI is a web application to centralize all content authoring and content management of the platform. Content is placed inside centralized storage: it is to note that the format and technology used for the same does not matter at this point, what matters is the correct storage of data.

At last, the content is made available through a technology-agnostic API, like REST API. There are products available in the market which lets you author the content whilst working on the presentation layer to provide you with a wide array of applications you may need (for instance, web apps, mobile apps). 

You could, as an alternative, also provide access to the public APIs of these platforms, allowing others to take care of building their own presentation layers and saving you the trouble of working on that. 

Know how Srijan helps enterprises in modernizing their platforms to manage their content across various channels

Explore Our Services

Why CaaS?

Creating dedicated content for every specific medium becomes cumbersome to the point of being unworkable

Have you ever thought that how enterprises and marketers can tweak content for each one of the channels and yet ensure that the content is safe and sustainable for any modification in the future? Since it’s understood that creating dedicated content for every specific medium becomes cumbersome to the point of being unworkable.

So, how is it possible? The answer to this simple question is CaaS!

It can be efficient for enterprises those who want to upgrade their CMS either into one which can serve as CaaS or when there was nothing before.

However, the key deciding factor(s) at the end will be your current context. The reasons are mentioned below-

  1. Siloed Content

    Enterprise deals with an enormous amount of content and the sources from where it comes in and having to manage them independently can prove labor-intensive. Either company can spend a lot of time from their schedule to simply manage the content or spend too many resources having a team manager & a set of independent tools with the added overhead of getting them to collaborate with each other. 

In either case, they are most likely dealing with one or maybe more of such situations:

  • They don’t own a uniform content format, which can be made use of for easy distribution. 

  • They don’t own a centralized method to make content available for consumers, be they internal or external ones.

  • Metadata is not given due importance in empowering their content and making it rich for consumers.

  • And centralized storage, so, companies have to put extra efforts to move from one source of data to the next.

The adoption of CaaS could be beneficial to anyone looking desperately to switch their content management strategies. A switch to content-centric approach, i.e., Content-as-a-Service, would significantly improve their performance.

2.   Limited formats for your content

Content has to be an abstract entity, and choosing the way how it should be consumed, should be your top priority

Your problem might not be about managing your content but inefficiency in reaching to the targeted consumers due to a restricted amount of formats you are compatible with. Content-as-a-Service is again the perfect solution for such kind of scenarios.

Many CMS, such as WordPress, take the responsibility for presentation ensuring that you don’t have to worry about it. However, you also get restricted to the number of devices with which representation of your content is compatible. There could be so many devices where your content can be rejected immediately or simply not pleasant to be consumed in. For instance, have you ever considered how will your online trading WordPress website will show stocks on your smartwatch? What about a VR headset? Or a holographic projection? Agreed that last one does not exist yet but you must ensure that the company is well-equipped and future-ready to be compatible with new technologies, especially when it is moving at breakneck speed and released to the public every day.

Even the new foldable phones are going to be accessible for the public now- what will happen then to the content?

Companies will limit their odds of success if they kept their content tied to their representation. Content has to be an abstract entity, and choosing the way how it should be consumed, should be your top priority

3.  Native mobile app needing content

Content-as-a-Service provides you with the flexibility to use your content however you want, now or in the future

Since content display on mobile phones and apps demand extra attention, most of the traditional CMS fails to provide the necessary tools and facilities for the same. They only provide web-compatible formats (e.g., HTML) making it unfit for your app.

You can work around this by using a headless, decoupled CMS or Content-as-a-Service to simplify your work. In a nutshell, Content-as-a-Service provides you with the flexibility to use your content however you want, now or in the future.

What Drives the Adoption of CaaS?

There are two groups primarily that can leverage this type of content delivery the most: developers and business users/content creators.

  1. Developers

Developers do require CaaS no matter they are mobile app developers who need a backend to feed their apps with content or front-end developers who expect to interact with an API. 

Such technologies have been around since long and widely accepted as well, further fueling the demand for CaaS.

2.  Business
  • Those content creators who want to increase the reach of their content to as many platforms and channels as possible- web, mobile, social networks, smart devices, and so on. 

  • It becomes exorbitant to have a separate solution for every channel- development-wise and maintenance-wise. 

  • It is convenient to manage a single editorial team and a single software stack for all channels.

  • CaaS solutions can help developers in being more productive and efficient with the tools they like to use.

CaaS Use Cases

It’s often perceived that there is no single CMS that is equally good for maintaining both a personal blog and a huge online shop. Contrary to the assumptions, CaaS outperforms its harbingers in some use cases-

CaaS focuses on pushing wherever and whenever required, designers need not worry anymore

Pushing content on a mobile app via CaaS proves as the most effective way to have dynamic in-app content without having the need to resubmit the app to the app marketplace.

  • Multi-channel publishing

CaaS CMS is also beneficial when content needs to be transmitted across various platforms, for example, you want to push the same content to a website as well as to mobile apps.

  • Rich Web apps

Modern view controller, i.e., front-end frameworks, such as AngularJS, React, and Ember synchronizes well with structured content via APIs.

CMS can considerably reduce the complexities and simplify workflows in an existing project, for instance, eliminating hard-coded content from HTML pages, and maintaining them with a CMS. In contrast, the API by CaaS makes it highly integration-friendly and robust.

  • Tailored UX

The CMS of web age posed strong design restrictions. Though you could fully tweak the UI but building a Wordpress-powered web app from scratch was not very likely. 

On the other hand, as CaaS focuses on pushing wherever and whenever required, designers need not worry anymore!

It becomes a tedious task to manage already existing content and also the one arriving from multiple sources. Therefore, it is best-suited to upload content into one unified repository by creating content via APIs.

Content structured via API makes it easy for AI-powered agents and chatbots to move it around and churn it for ensuring relevance than screen scraping and using natural language for processing unstructured content.

How Drupal Can Prove to Be An Effective CaaS?

Drupal has unfolded the idea of Content-as-a-Service (CaaS) to solve the dilemmas posed by our newfangled digital ecosystem & its extremely high demand for new and different types of content. 

A square with multiple circles and squares connected to each other

Following features on how Drupal can be an effective CaaS-

  1. Reusable future-proof content

Drupal content can easily exist in the form of reusable chunks

Generally, CMSes manage content in a back-end repository and push it to the front-end templates for serving an experience.

However, Drupal decouples the back and front end whenever required. So, Drupal content can easily exist in the form of reusable chunks: free from the presentation and set for delivering content to sites and apps. Thus, content becomes future-ready.

  1. Set front-end developers free to create a better experience

With Drupal’s presentation-neutral content and a RESTful API, front-end developers can freely carry out their creative vision and build interactive sites & apps with the tools like Node, Angular, Backbone, Ember and others.

  1. Fill the content bucket more easily 

Content nowadays should not be restricted to one source only rather it should move in and out freely. And Drupal helps in that by ingesting third-party content (e.g. from aggregators and syndicators) to bring content into your Drupal ecosystem and making it further easy to push to any site, app or channel.

  1. Share content beyond your sites

Today, organizations want to share content on multi-channels where the audiences are inside of content aggregators disrupting the news business. Content teams need an optimal way to create content & then share it with minimal effort. And Drupal does that! The other sites and apps you choose can easily churn Drupal content.

  1. Alter the look

The separation of backend content from front-end presentation gives a leading edge to developers to refine an experience without worrying about the content in the CMS.

Additionally, Drupal’s 8.0 version comes with an inbuilt REST API which marked its beginning of API-first initiative.  

REST allows apps and websites to read and update information on the websites via the web. It also encourages developers to rely on HTTP methods to operate on resources managed by Drupal.

Furthermore, the Drupal community has been working on shipping Drupal modules with web service APIs instead of depending on a central API module in the upcoming releases of Drupal.

Contenta, one of the Drupal’s distributions, is an HTTP API provided for ready-to-use purpose with full auto-generated documentation. It offers modern API capabilities with JSON API, and also feeds content in the JS-driven websites, mobile applications, TV and even fridge applications.

Contenta supports Create Once, Publish Everywhere, be it single application development or multi-channel publishing.

Then there is another distribution, Reservoir, which helps in implementing the Decoupled Drupal architecture, is very flexible and simple-to-use for building content repositories of any application. It also helps in modeling content, governing content, and interacting with that content through HTTP APIs. 

In a nutshell, Drupal’s API-first approach offers the following benefits which further bolsters CaaS model-

  • The decoupled approach separates the presentation layer from the service layer thus allowing a detailed and dedicated focus on each of them.

  • A foolproof approach to help organizations connect to infinite digital signages for enhancing customer experience

  • Increased interaction with customers on their preferred devices will eventually scale up your marketing efforts

  • The decoupled approach is flexible and open for changes, addition, and modification of the structure.

  • Deploying a front-end framework like Angular or React will lead to sophisticated, enriched and dynamic web experience

 

Learn more about Drupal API-first initiative from here-

 

[embedded content]

Features to Lookout For in CaaS

CaaS comprises of three vital parts: the editing interface (typically a web app), the CMS infrastructure capabilities, and the development ecosystem.

Web editor

  • Enables content architects to design the structure of the content

  • Enables content editors to manage content from creating, updating to collaborating on it.

Technical infrastructure

  • Offers performance, uptime, and scalability to ensure that enterprises can rely on their vendor to deliver content in mission-critical applications.

  • SLAs with short incident response times and access to dedicated staff- so in case of a problem with a mission-critical app, companies can be provided back up again and fast.

  • Mobile delivery capabilities so that great user experience can be delivered even in network-challenged environments ( like subways, rural areas) and high bandwidth cost areas (such as emerging markets).

  • API-based importing, management, and delivery for controlling content programmatically in both ways

  • All-inclusive and up-to-date documentation to help the development team start using the tools quickly.

  • CDN ( content delivery network) to deliver the content rapidly

 

Development ecosystem

  • SDKs and libraries to increase the speed no matter what the tech stack is

  • Demo app source code so that developers don’t feel the need to reinvent the wheel all over.

  • Third-party integrations to obtain value from existing tools.

Other Characteristics of CaaS

The decoupled approach ensures that code and content are placed separately so that marketers and developers can do their respective work

  • Decoupled approach

The decoupled approach ensures that code and content are placed separately so that marketers and developers can do their respective work. Teams can also work parallelly on a creative copy, enticing visuals, and expert integrations in one unified platform.

This is the quintessence of the headless CMS approach - agnosticism towards how content is presented. This frees developers from creating highly custom front-ends and apps since they get to define the content display part.A box with various elements listed inside and interconnected Source: Gartner 

  • Cloud setup

The complete separation of the content management and display part allows organizations to migrate infrastructure between Cloud and hybrid, even at the site level or project level. Some projects can be installed locally while some on Cloud depending on the business’ choices for optimization as per needs. 

Centralized Content-as-a-Service lets businesses evaluate the content consumption across the digital ecosystem. This ceases businesses from duplicating their efforts and content when posting to microsites, international sites, or apps. It can also measure the use of that content by looking at the API connections used to deliver that content, and keeping track of where the content is going. 

In the End

The digital revolution and breakthrough in technology have accelerated the efforts of content creators - be it creation, designing, or dissemination. The goal is clear- refined user experience.

With that said, the creation of content in abundance and its delivery as a service through thousands of APIs will generate more data thereby assisting content developers to create more precise business models.

The technology is already in place, and the architectural patterns will allow enterprise systems to scale up without hampering their performance.

Content-as-a-Service ensures that developers are rendered maximum freedom and flexibility to realize their digital innovation. Drupal as a CaaS has been delivering a wonderful experience to both content editors and developers alike.

It is definitely a convenient way to ensure that your strategy is future-proof and can handle any new media in the future.

Sep 18 2019
Sep 18

With every new release, Drupal is emerging a valuable asset in the enterprise marketing stack. The additions to Drupal core, especially with Drupal 8 and after, have made it a digital platform that comes equipped for all the standard marketing best practices right out of the gate. In addition to that, the larger Acquia ecosystem is also delivering new solutions that empower Drupal be more than just a CMS. These bring in some powerful martech capabilities that have made Drupal into a platform that’s ready to deliver the results that enterprise marketing teams want.

This post delves into the key modules and solutions that enable smart content management in Drupal, both in terms of creating and publishing content, as well as leveraging that content in diverse ways to drive results.

Smart Content

Smart Content is a Drupal toolset that can help deliver anonymous website personalization in real time, for Drupal 8 sites. Essentially, site admins get the ability to display different content to site visitors, based on whether they are authenticated or anonymous users.

Some examples of how you can leverage it include:

  • Displaying a smart block showcasing your latest offer or most popular blog to a first time visitor to the site
  • Displaying a smart block that showcases different industry specific case studies for different users in your database
  • Displaying a smart block only for mobile viewers of your site, maybe asking them to view it on your mobile app

Now this module in itself has limited functionality, but becomes very useful when used in combination two other Drupal modules:

Smart Content Blocks

Included within the Smart Content module, these allow you to insert a Smart Block on any page and set up conditions that govern the content being displayed within the block. These conditions can be used to hide or show a specific content in certain cases, and form the basic personalization rules for your Drupal site. The blocks have an easy interface within the Drupal 8 backend, giving you the flexibility to add any number of blocks, anywhere on a page. 

It's important to note that all of your content, irrespective of format, is available to show and promote through Smart Content Blocks. Ebooks, videos, images, blogs, service pages—anything that’s already in the Drupal CMS can be delivered to a block. 

Smart Content Segments

A complete set of conditions grouped together to achieve a reusable composite condition. For example, a set of the following three conditions:

  • showcase only on desktop
  • showcase if location is France
  • showcase for anonymous users

               will create a smart content segment that can be applied to any smart content block to ensure                 that it's displayed to anonymous users from France, viewing the site on a desktop. This                             feature saves you time as you don' have to set up the same set of individual conditions every                   time.

At the heart of Smart Content are the conditions, editable rules that allow you to govern the display of content. The interface is easy to manage, and familiar to marketers working on a Drupal site. 

sc-1

You have your choice of the basic conditions for personalization like the browser, language, device type etc. You also have the more advanced options like targeting different industries based on third party IP lookups, or tapping into existing segmentations or campaigns from a marketing automation system. Essentially, anything that has an API with available data can be used as conditions to help drive your personalization strategy with Smart Content.

Layout Builder

The Layout Builder module, experimental in Drupal 8.5 and 8.6, had a stable release with Drupal 8.7. This module allows content authors to easily build and change page layouts and configure the presentation of individual content, content types, media and nodes. It also allows you to add user data, views, fields and menus. 

This is a huge asset for enterprise marketing and digital experience teams because:

  • The module gives a drag-and-drop interface to create custom layouts for specific websites sections and pages, with the ability to override templates for individual landing pages when required
  • Content authors can seamlessly embed video across the site to create a more interactive user experience, and increase engagement and conversions
  • Marketers can now build and preview new pages at their own pace, without the fear of negatively affecting the existing user experience.

All of this means that marketing teams now have more control over the site, and can make changes and additions independently. This also reduces the turn-around-time for new campaigns by reducing, or even eliminating, dependencies on development teams. Think high-impact landing pages designed exactly as you want, but without the waiting around or constant back-and-forth with developers.

Media Library

With the release of Drupal 8.7, the CMS now has a stable media library module.

It provides a visually appealing interface for browsing through all the media items in your site. With the new version, multimedia properties can be added to content either by selecting from existing media or by uploading new media through bulk upload support. Once uploaded, users can remove or reorder any images ready for import. 

It provides an easy way to upload several media assets in your Drupal website quickly. Let’s you add alt-text, check the images before uploading.

Powered by Views, it allows site builders to customize the display, sorting, and filtering options.

Acquia Lightning

As enterprise marketing teams launch large scale campaigns, they often need to put together new microsites that work flawlessly. And they usually have to do it at a short notice, to leverage critical marketing opportunities in time. 

Having to depend upon the development teams to create one from scratch, and the constant coordination required to make that happen, can lead to the marketing team losing precious time. 

Acquia Lightning, an open source Drupal 8 distribution, is the perfect solution for this challenge. Lightning give you a basic ready-to-launch site with pre-selected modules and configurations that can cut development time by 30%. This allows:

  • Development teams to publish optimized Drupal 8 sites in short time frames
  • Editorial teams can easily work with layout. Media and content on these sites, and have them campaign-ready in no time

Some of the key features in Lightning that are particular great for marketers are:

Moderation Dashboard

This dashborad gives you  complete visibility into your Drupal content status, with a structured overview of where every pieces of content is in the editorial process. Besides tracking content status, you can also manage access controls determinig who can access which pieces of content at the backend.

Screenshot 2019-10-01 at 6.50.09 AM

The key pieces of information you can view of the dashboard are:

  • Current drafts in progress
  • Content you created
  • Content needing review
  • Recent site activity
  • Individual editor activity in the last 30 days

Moderation Sidebar

Screenshot 2019-10-01 at 7.03.38 AM

The moderation sidebar allows you to stay on the website frontend as much as possible while making edits and managing the editorial process for any piece of content. Actions like editing text and layout, publishing a piece, creating new draft and more can be easily achieved with the sidebar. And it's quickly accessible by clicking "New Tasks" on any piece of content. For marketers no really keen on getting into the backend, this sidebar is a simple way to make the edits they need, with minimal chances of error. 

Scheduled Publishing

As the name suggests, this feature in Acquia Lightning allows you to set a piece to publish at a future date. This functionality give you a better view of when content is set to launch, and also ensure that it launches at optimal times, according to reader preferences. And this happens without you having to be on the job at odd hours, just waiting around to publish content.

Screenshot 2019-10-01 at 7.17.14 AM

You can schedule publish times from on individual pieces by editing the 'Current Status' to select “Schedule a Status Change” . Then choose “Published” and select your preferred publishing date and time.

Acquia Lift

We cannot talk of smart content management with Drupal without talking about Acquia Lift. For enterprise sites built on Drupal, there’s nothing more suitable for the personalization than Acquia Lift.

Acquia Lift is a solution designed to bring in-context, personalized experiences to life. It’s a powerful blend of data collection, content distribution, and personalization that enables enterprise marketing teams to closely tailor the user experience on the site. And all this without excessive dependence on development or IT teams.

Acquia Lift gives enterprises three key elements to drive their personalization and reflect it with their website content:

Profile Manager

This helps build a holistic 360 degree profile of your users, right from when they are anonymous visitors on the site, up until the stage where they are repeat customers. It collects user demographic data, historical behaviour data, and real-time interactions so you can get a complete understanding of who your users are, what they want, and then work on how best to deliver that.

Content Hub

The Content Hub is a cloud-based, secure content syndication, discovery and distribution tool. Any piece of content created within the enterprise can be aggregated and stored here, ready to be pushed out to any channel, in any format. 

Faceted search and automatic updates give visibility into the entire gamut of content being created within the enterprise - in different departments, across websites, and on different platforms.

Experience Builder

This is the heart of Acquia Lift - the element that allows you to actually build out a personalized experience from scratch. The Experience Builder is a completely drag-and-drop tool that lets you customize segments of your website to showcase different content to different target segments, based on data pulled from the Profile Manager.

Enterprise marketing teams can 

  • set up rules that define what content should be shown to which segment of site visitors
  • perform A/B tests to accurately determine what type of content drives more conversions for which user segments. 

All this can be done with simple overlays atop the existing website segments, without impacting the base site, and without depending on IT teams for implementation.

With a commitment to creating ambitious digital experiences, every new Drupal release has brought in new features to add to the marketing ecosystem. While the overarching focus is on being flexible and scalable, these solutions are creating real impact on customer experience, conversions, online sales and brand proliferation.

And for enterprise teams contemplating shifting to Drupal for diverse proprietary CMSes, the payoff from empowered marketing team alone makes it worth the effort.

While most of the features mentioned here can be accessed by your teams easily if they are already using Drupal, some require guidance. Especially Acquia Lightining and Acquia Lift will need skilled teams to set it up for you, before marketers can start reaping the benefits. 

If you are looking to deploy Lift or Lightning, just drop us a line and our Drupal experts will be in touch.

Sep 17 2019
Sep 17

If your website is on the right CMS, it becomes easy to create marketing campaigns, drive leads, and tell your brand’s story to the world. However, making content available on every new device in the market accessible to a user becomes a challenge for marketers.

Headless Drupal may sound exactly what a marketer needs - a platform that helps content reach any device a user uses. Yet, there are some significant problems that it poses to the marketer. Let’s understand them in detail.

Revisiting Headless Drupal

A traditional Drupal has a back-end (stores the content) and front-end (which decides the delivery of that content). Now as there is no limit to devices accessible to users, brands need to go beyond just delivering content on websites and web apps.

With a pure headless CMS, tightly coupled front-end is removed, and it delivers content through an API anywhere and on any device (commonly referred to as API-first).

Headless Drupal offers faster functioning than traditional Drupal and offers highly responsive and fast websites ensuring rich user experience.

When the user interface is decoupled from the CMS, the logic for displaying content on each device is on the front-end and its native tools are responsible for controlling the user experience.

How Headless Benefits Marketers?

It is important for marketers to be where their customers are and send the right communication, on the right channel, at the right time. Here are the 3 benefits of headless Drupal to marketers:

1. Platform Independent Communication

Headless Drupal CMS offers great flexibility to marketers as they can deliver one piece of content in multiple formats – to a desktop, smartphone, app, VR devices, smart speakers, and smart appliances. It saves marketers a lot of time previously spent creating and optimizing content for different devices.

2. Freedom on Content Display
Marketers prefer to use headless as it offers choice over how your content appears on the frontend, with extra security over traditional Drupal. JavaScript frameworks has gained more traction due to the demand for more flexibility in the front end. Its emphasis on client-side rendering offers a more engaging and dynamic user experience.

3. The Faster, The Better
Decoupled Drupal is also faster as the logic for displaying the content is decided by the front-end interface. As marketers are in a constant urge to impress the existing customers and at the same time attract new ones, a faster site helps them in engaging with customers as fast as possible.

Why it is Not Marketers’ First Choice?

Though headless Drupal has been beneficial for developers, but is it valuable to marketers as well? Below are the reasons why marketers, despite its advantages, don’t prefer to go for headless Drupal.

1. No Preview Available

With no presentation layer in a headless Drupal, marketers are not able to create and edit content with a WYSIWYG editor as they would with the traditional Drupal. The most challenging part is they can’t preview their content before publishing to their audience.

2. Dependency on Developers

With headless Drupal, development teams can create a custom-built front-end to customize the layout and entire design of individual pages.

The marketers will have to be fully dependent on developers to carry out tasks for conversion optimization purposes, which proves to be an inefficient solution for them.

3. Marketers Have to Manage Fragmented Environment

Today’s marketers have to engage with their audience in real-time, publish content in line with the latest trends, launch landing pages, deploy microsites, track progress, monitor data, collaborate with advertising campaigns, and much more.

A headless Drupal makes the marketers manage content workflows, form building, and microsite deployments. Managing everything at such a huge scale, soon creates an expensive and hard to manage ecosystem. Not only it complicates the life of a marketer, it also gets in the way of creating a seamless and connected customer experience.

4. Impacts the SEO

Marketers lose standard SEO functionality on adopting headless Drupal for their content strategy and will eventually have to invest additional time and cost for Drupal SEO development.

What It Means For Marketers?

Marketers can consider going for decoupling Drupal when they want to publish the content on more than one platform such as multiple websites, various front-end devices or when they need real-time updates of a site where performance would be killed by using traditional Drupal.

However, if their requirement is to manage a responsive website, headless Drupal won’t be beneficial and will slow down time to market. And, also the costs involved are too high.

Solution For Marketers - Progressive Decoupling

Decoupled Drupal loosely separates the back-end from the front-end, creating an architecture which serves perfectly to both developers and marketers simultaneously.

As a marketer, you can benefit by its user-friendliness and the API-driven omnichannel delivery capabilities. The content layer separated from the presentation layer allows marketers to have an authoring experience that feels familiar. The presentation layer above the API layer allows for seamless integration and blending of different tools and technologies.

So to conclude, headless Drupal isn’t for everyone, and in many cases sticking with a traditional CMS or choosing decoupled Drupal is the best option.

If considering decoupled Drupal strategy seems intimidating, Srijan can help you connect with the experts to help drive your marketing strategy with it. Contact us to get the best out of Drupal.

Sep 16 2019
Sep 16

The Problem with Upgrades

One of the more challenging tasks when upgrading Drupal from version 6 to 7 to Drupal 8 is the upgrade/migration process. We already know that themes and modules have to be rebuilt or otherwise ported when upgrading, but even migrating content can be a time-consuming chore.

The great news is that Drupal 9 might be the last big Drupal upgrade you ever have to deal with thanks to its backward-compatibility. That said, let’s zoom in on the problem at hand and address how we can make the last big upgrade you’ll ever be tasked with go more smoothly.

Errors halt migration

What can be frustrating about upgrading from Drupal 7 to 8 is that during the process there is a good chance your new Drupal 8 build will run into a field, entity or plugin that it doesn’t understand. This can lead to uncaught exceptions which then leads to an error and an incomplete migration. 

In some cases, you find the right contributed module or patch that will add a migration path for the configuration in question and the error is resolved on the next pass. More often than not, however, you will find that no such path exists and you have to deal with the error yourself. This could entail either updating the migration yml config to skip or reroute the configuration, perhaps by writing a custom migrate plugin. It’s possible you have to repeat this step multiple times until you have addressed each error that prevents a successful migration.

One problem with Drupal upgrades is that by default it assumes you want to upgrade everything from your Drupal 6 or 7 site. The Drupal upgrade will try to migrate some configuration that is honestly rarely needed, such as theme and system configuration. It’s more typical that developers will want a subset of the content and configuration from the previous version of Drupal.

Introducing Migrate Pack

migrate pack logo

We decided to take a different approach with migrations, particularly the early stage where you are trying to get through that first pass successfully. It’s this step where you want to grab as much content and configuration “as-is” into Drupal 8 so that you can start engineering the new site in earnest.

Migrate Pack’s Approach

The Migrate Pack module, hosted on Drupal.org, is an opinionated solution with the goal to capture 80% of the content and configuration you need without errors and without manual intervention.

Migrate Pack, first of all, will skip about half of the migration configuration that typically gets imported and then discarded as a way to cut down on the “cruft” that might weigh down a migration. This configuration can be overridden to further dictate which migrations will be included or skipped.

Next, this feature will attempt to avoid some common errors with things like invalid links or entity bundles that don’t exist. Rather than halt the migration with a fatal error, a notice will get logged which can be reviewed after the process is completed. 

Finally, Migrate Pack uses configuration to skip entities and bundles that do not have a known migration path. This again allows for the migration to complete with warnings being logged along the way. All of these settings can be customized per project. We think this results in a smoother process overall.

Using Migrate Pack

By leveraging Composer we hope to bundle the various modules you’ll need to get started quickly, even if you do not have a lot of experience with migrations.

The usage for this project is fairly straightforward. The first step is requiring the feature using Composer to download the module and all of its dependencies:

$ composer require drupal/migrate_pack

Once that is done you will enable the module to enable those dependencies:

$ drush en -y migrate_pack

While Drupal can be migrated through the UI, it’s usually easier to use drush commands provided by the migrate_upgrade module (which we enable by default). The drush “migrate:upgrade” command adds the configuration you will need. Below is a common example of the full command with parameters. You will want to examine your options with the “--help” parameter the first time you run this command.

$ drush --yes migrate:upgrade --legacy-db-key drupal7 --legacy-root sites/default/files --configure-only

After Drupal 8 generates the migrate configuration you can test drive a full migration or limit the migration in any number of ways. The “--all” command will attempt to execute all migrations, example below:

$ drush migrate:import --all

With Migrate Pack’s overrides you should have fewer errors (hopefully none) on the path to a successful first pass at migration.

Finally, it’s time to export your configuration. This can be done with the drush “config-export” command (see below):

$ drush config-export -y

The idea is that now the work begins to remap configuration, integrate custom plugins and any other development required to complete the desired full migration. As mentioned, Migrate Pack has its own settings.yml that will be exported to your configuration which can be adjusted as needed. If you run into any errors or problems along the way we recommend you create issues in the project issue queue.

Next Steps

We think that this feature can be a great tool to bust through errors that typically hamper a Drupal upgrade.  We would love for you to give this module a try and help make it more robust so that Drupal developers can complete migrations faster with fewer headaches along the way.

For issues and roadmap be sure to check out the project page and issue queue for the latest updates.

Got general feedback or questions? Use the comments below or hit me up on Twitter @drupalninja 

Sep 15 2019
Sep 15

The countdown for Drupal 9 has begun. Whether you’ve recently moved to Drupal 8 or not, soon it will be time for another upgrade.

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

However, the upgrade can be made much easier and painless this time. 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 end of life approaching for Drupal 7 and 8 in November 2021, operating the website on them won’t be an option.

However, at the same time, it might be overwhelming for Drupal 7/8 site owners to know their website will need the upgrade. And when the site is running absolutely fine, then it might be difficult to reach a conclusion of whether an upgrade is needed or not.

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

  1. With security patches discontinued and older versions not maintained, you need to secure your site from potential problems
  2. Upgrade to the latest features and usability enhancements, eliminating the need of a third-party modules and extensions
  3. Simplify and clean up content and ponder over ways to improve user experience and design

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

The existing customers who wish to remain on Drupal 7/8 need to assume hosting responsibility post 2021. However, staying with older version might make you vulnerable to several security challenges, which need to be dealt with.

timeline-for-drupal9

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

One of the major reasons that 7 lac Drupal 7 sites still haven’t migrated to Drupal 8, is due to the known challenges in migration process. And with the majority of people on Drupal 7, it is quite likely that most of them do 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.

Moving from Drupal 8 to Drupal 9 is a minor upgrade in terms of functionalities, whereas it is a completely new whole thing to move from Drupal 7 to 9. Hence, it will cost you the same whether you migrate from Drupal 7 to 9 or take up the option of going from Drupal 7 to 8 to 9.

Also, with the recent upgrade, it might take some time for the marketplace to create Drupal 9 compatible modules. With Drupal 7’s end of life approaching, you will have to upgrade to Drupal 9 and go live within a span of 18 months, to stay secure with your site.

However, this won’t happen if you stay updated with the latest version of Drupal 8. So, it is recommended to follow the upgrade cycle from Drupal 7 to 8 to 9.

Drupal 9 Brings No New Features. Then Why Upgrade?

“Drupal 9.0 should be almost identical to the last Drupal 8 release ... Updating from Drupal 8's latest version to Drupal 9.0.0 should be as easy as updating between minor versions of Drupal 8.” Dries Buytaert

Drupal 8.9 will be the last minor release which will have new features, and thereafter no new features will be added. As we will run out of single digit numbers to the right of the decimal point at 8.9, the next update gets called Drupal 9.0.

So if you have Drupal 8.9, and your site works well on it and there’s no dependency on any deprecated code, the upgrade to Drupal 9 should be just like any other release.

Post 2021, no security patches will be further rolled out by the Drupal community, and moreover Drupal 7 will not be compatible with upcoming PHP versions.

A large number of changes made to Drupal 8 at the time of its release has made it relatively scalable and future-proof. It was designed specifically to make it simple to transition to the latest version, simplifying the entire migration process.

Moving to Drupal 9 would be a necessity as Drupal 8’s major dependency - Symfony 3 will no longer be supported, post November 2021. Currently Drupal community is ensuring to optionally support Symfony 4 in Drupal 8, to allow sites to evaluate it before it is required in Drupal 9.

Drupal 9 will be similar to Drupal 8 and will offer backward-compatibility (refers to allowing interoperability with the previous system). This means the only way to keep the migration process easy would be to keep its modules and themes up-to-date with the latest Drupal 8 APIs, and get rid of deprecated codes as new features mark their success.

We have already mentioned how to find and fix the deprecated code in our blog - Site Owner’s Guide to a Smooth Drupal 9 Upgrade Experience.

The deprecated code is being continually removed from Drupal 8 as per the data collected (as shown below).drupal8-deprecated-code

Source

Why Remove Deprecated Code in Drupal 9?

Drupal 9 is built on the code base of Drupal 8, ensuring Drupal 8 to 9 is not a big leap. This has the following 3 benefits:

  1. The all new Drupal 9 ready code gets deployed on Drupal 8 sites and issues can be tested.
  2. We can work out the issues in the new code before Drupal 9 release.
  3. Feedback is provided based on this new code and can be improved.

With time, effort is being made to make Drupal better. There are functions which 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 keeping your Drupal 8 site fully up-to-date.

We at Srijan are here to help with any Drupal-related questions that you might have and can help you plan out your Drupal roadmap. Contact us for a smooth upgrade to the latest release to make your site future-ready.

Sep 10 2019
Sep 10

open waters

In this episode, we talk with Mediacurrent's Mario Hernandez about why training is so important for web teams to grow and stay competitive. And yes, we are once again interviewing one of the hosts. 

Audio Download Link

About Mario 

In addition to his position as Head of Learning, Mario is a Senior Front End Developer with over 15 years of Drupal experience. He and I actually started on the same day, 5 years ago. Mario is a regular speaker and trainer at tech conferences including Drupal Camps and DrupalCons. He is a co-host of the Open Waters podcast and an active participant in the Drupal core project and other open source projects. Prior to Mediacurrent, Mario also has over 10 years of experience in the Federal Government.

Project Pick

Apollo GraphQL

  • Server
  • Client
  • Platform

Interview: 

The best way to learn is to teach. 

  1. How did you get started with Drupal and front end development in general?
  2. How did you get started doing training?
  3. What is your favorite part of training people?
  4. Is Mediacurret’s training limited to only events and/or only Drupal?
  5. How do you think training is most effective when working with a client’s internal development team?
  6. In addition to FE training, does Mediacurrent offer training in other areas?  Yes! We offer training in Accessibility, SEO, Back End, Digital Strategy, GatsbyJS and more
  7. How can organizations interested in our training offerings get more information?
Sep 09 2019
Sep 09

Rain logo updated

Mediacurrent created the Rain Install Profile to build fast, consistent Drupal websites and improve the editorial experience. Rain expedites website creation, configuration, and deployment.

Overview

The Mediacurrent development team uses a Composer project template that extends the official Drupal Composer template to add Rain projects as well as additional tools and scripts.

Our template by default leverages a fork of DrupalVM which will provision the local environment. Note that Docker-based environments such as Lando or DDEV could be used as an alternative to Vagrant.

In this tutorial, we will walk through each step to get you up and running quickly. Below, you can also watch a narrated tutorial video to see these steps in action.

Installation instructions

First, you will want to create a repository wherever you typically host your Git projects (e.g. Github, Bitbucket or Gitlab). Once you have that setup you can clone Mediacurrent’s repo and point the origin back to your Git repo. The example command below illustrates how this is done.

Example:

git remote set-url origin [email protected]:mediacurrent/shortcode_project.git

Next, you will want to initialize the project. You can do that by running the following commands with your local host name and IP (see example below).

Example:

composer install

composer drupal-scaffold

./scripts/hobson project:init example.mcdev 192.168.50.4

Finally, to build the project and run the install you can simply run the following build command to execute the composer install and Drupal install:

./scripts/buid.sh

Note that this command does require Mediacurent’s Vagrant environment in order to work. If you are using an alternative local environment you would run composer install, followed by the drush site install command instead of running the build script.

Once you get a full install working with the sample profile that’s been provided you will want to follow the project README documentation for further setup instructions. Remember to commit all of your files and push up to your Git’s origin. That’s it!

Questions or comments? Let me know at https://twitter.com/drupalninja/.

Sep 06 2019
Sep 06

 


Today, IT security is paramount to succeed in business. Enterprises are spending hefty amount on security than ever before. Progress in both security and hacking technologies such as intrusion detection systems, honey pots, honeynets, and other various security-related hardware and software solutions are showcasing the pressing need for transformation in the information security domain.

One of the reports by Gartner cited that enterprises in India alone are going to spend laboriously on the information security front which will mark up to US$2 billion in 2020.

The increasing awareness on the benefits of the risk assessment and the realization of the fact that security is one of the driving forces for digital transformation are boosting enterprise security globally. 

The battle between open-source and proprietary software has been throwing a fit since long. Multiple issues and concerns are being examined and scrutinized by both sides of the story. In the most recent phase of this fanatical dispute, both camps have inspected the issue of security with serious tenacity.

Having said that, let’s take a sneak peek into this blog for further insights on the same.

Myths Are Meant to Be Debunked

Proprietary software is more secure than open-source software. This myth comes from many prejudices. But a commercial license doesn’t assure security. Unlike proprietary software, open-source software is transparent about potential vulnerabilities.

#Myth1: Anyone can view the code 

Because it is open source, anyone can view the code. People often want to argue that being able to view the code allows nefarious hackers to look at it and exploit vulnerabilities.

However, this openness enables collaboration. Unlike, say, one proprietary software, which is developed and is maintained by a single company, Drupal is developed and maintained by more than one hundred thousand programmers around the world. These programmers might work for companies that compete with each other, or they might volunteer to create something new that’s then given away. For free.


In fact, in 2015 Google open sourced its artificial intelligence engine, TensorFlow. Something which is a core part of its business. It hoped more developers would make the software better as they adapted it to their own needs. And it did, by making it open source, Google boasts of more than 1,300 developers, outside Google, have worked on TensorFlow making it one of the standard frameworks for developing AI applications, which could bolster its cloud-hosted AI services. 

#Myth2: Proprietary software are secure and not prone to attacks

There have been multiple instances in the past that depicts that proprietary software has been attacked several times. Such as:

Melissa Virus and ILoveYou Worm - spread through Microsoft Word email attachments. The email contained attachment. If the victim’s system had the Microsoft outlook application installed, then the virus would send the email to 50 too all contacts in the Outlook program’s address book. would also overwrite & consequently destroy various types of files on the victim’s device including MP3 files, JPEG files, and more. It led Microsoft to shut down its inbound email system.

Wannacry - a worldwide cyberattack that took place in 2017. It was a ransomware crypto worm attack that aimed at computers using Windows operating systems, encrypting all the files on hard drives on these machines. It didn’t let users access the files until they paid a ransom in the cryptocurrency Bitcoin.

The WannaCry attack impacted major entities all over the world, such as the National Health Service in Britain and Scotland, the University of Montreal in Canada, State Government websites in India, and Russian Railways.

With that said, it's evident that proprietary software is also easily vulnerable to attacks!

Although countermeasures like anti-virus programs and security patches were implemented to mitigate the threats and weaknesses, the long-term and especially exorbitant effects of these dangers have been engraved for permanent into the memories of people all over the world. This is because these attacks not only damaged vital electronic data but also shut down business operations and services, and facilitated malicious infiltration and theft of money & proprietary information.

History of Open source Software

The term “open-source”, popular since its inception in the late 70s and early 80s has come from a revolution, “open-source revolution”, which completely revamped the way software is developed- resulting in the birth of the community-generated software development method.

Box with text written inside it

In 1971, Richard Stallman, a young software engineer from Harvard, joined the MIT Artificial Intelligence Lab with the intent of developing computing platforms. After serving for a few years in the early 1980s, the MIT Lab became extinct due to the booming of proprietary software in the market and lost its talented developers to privately held tech companies.

Stallman, who was closely involved in the field knew customers’ software requirements believed customers should be empowered enough to fix and debug the software themselves instead of simply operating it.

“Users should be empowered enough to fix and debug the software themselves-instead of simply operating it”

The majority of software until now was controlled in its entirety by the developer where individual user rights were completely discarded. This was also a pain point for MIT AI Lab since they failed to incorporate this feature into their software development strategies.

The Disembarkation of the Free Software Movement

But this was until 1984. Post evaluation, Stallman began his GNU Project. Initiating with a compiler, GCC and a new operating systems-Stallman felt that GNU project was the major turning point in the evolution of free software community.

“The Free Software Foundation was formulated to let users run the software as they wanted”

Stallman believed that software should be available for free in terms of accessibility. Hence, the Free Software Foundation (FSF) was formulated so that users can run, modify, update, and disseminate software in the community.

Later on, he also introduced the concept of copyleft, wherein a program is first copyrighted, and then additional distribution terms are added for its further use.

Challenges Associated With Proprietary CMS 

Proprietary CMS comes up with a set of restrictions which makes it less flexible in comparison to open-source software. 

“The contribution and development teams of proprietary cms are smaller, which makes it evident that there is a probability of missing out on mistakes and bugs in the code”

It might appear that closed source software or proprietary software is more secure since the code is not available. But unfortunately, it is not the case! The contribution and development teams of proprietary CMS are smaller, which makes it evident that there is a probability of missing out on mistakes and bugs in the code.

You might not know what issues the proprietary system has had in the past, or is having currently because the provider of the proprietary CMS isn’t going to voluntarily reveal this information. This sets a major drawback for proprietary CMS users in terms of security as well.

Let’s further see the challenges associated with proprietary CMS-

Not many customizations options

Since these proprietary CMS are developed for a specific kind of industry and audience, it gets difficult to customize the website to fit the exact needs of the people. Users are not building their system so it's obvious that they will have limited flexibility options.

Portability is beyond the bounds of possibility

Users don’t have an option to extract data and files out of their system with a proprietary solution. They are quite restricted because they won’t be able to even move their website from one hosting service to another.

“Several CMS vendors don’t upgrade their platforms, so it's better to do a bit of research first and then jump onto doing business with a vendor”

You don’t have any option other than trusting the company blindly

Since the company owns the platform and the storage space your website will be built upon, you’ll have to manifest a lot of trust into your vendor. They will have to continuously develop and refine their software, to handle their consumers’ needs better. The vendor should also be in reach whenever you need assistance with your website

Several CMS vendors don’t upgrade their platforms, so it's better to do a bit of research first and then jump onto doing business with a vendor.

You are just renting software

Even if you have bought the proprietary CMS, you won’t own the code it's built with. It is not yours and hence requires a monthly rent from you, to keep your website running.

Benefits of Open-source Software

“People in the open-source community come forward to find solutions, assist each other, and to share extensions that would benefit the masses”

  • It is open-source!

This implies that the source code is available for anyone who wishes to study it, analyze it, and modify it in any way.

Thanks to this feature that people can easily extend the code and add specific functionalities as per their requirements.

  • An open-source CMS is maintained by the large community

There is always a primary group of developers, similar to WordPress but it is also supported by its user base. People in the open-source community come forward to find solutions, assist each other, and to share extensions that would benefit the masses.

Rectangle with various lengths of horizontal bar
Source: Sas.com

  • An open-source CMS can be hosted ubiquitously

Most of them, like Drupal, offers one-click installs in the control panel of the accompanying hosting service, which again is very user-friendly and comfortable.

  • The CMS software itself is usually free of cost

You can easily make use of plenty of extensions, themes, and a variety of tools for free. However, there are plenty of paid extensions and themes as well. Some solutions can only be leveraged with paid software. An open-source CMS is usually the most budget-friendly solution.

Alternatives to Proprietary Software

It is interesting to see that there are so many open-source software alternatives for the existing proprietary software which are equivalent or more reliable, secure, and flexible. 

If you are contemplating to migrate from proprietary software to open-source, you can surely - that too with ease!

Software Category

Proprietary Software

Equivalent Open-source Software

Operating System

Microsoft Windows

Linux Ubuntu

Browser

Internet Explorer

Mozilla Firefox

Office automation

Microsoft Office

Open Office

MATHWORKS

MATLAB

Sci Lab

Graphics Tool

Adobe Photoshop

GIMP(GNU Image Manipulation Program

Drafting tool

Auto CAD

Archimedes

Web Editors

Adobe Dreamweaver

NVU

Desktop Publishing

Adobe Acrobat

PDF Creator

Blogs

Blogger

WordPress

Mobile

IOS

Android

Media Player

Windows Media Player

VLC Player

Database

Oracle, Microsoft SQL Server

My SQL, Mongo DB, HADOOP

Server

Microsoft Window Server

Red Hat Server, Ubuntu Server

Web Server

IIS

Apache

Open-source Security in Drupal

Drupal, having a proven track record of being the most secure CMS, has been rolling with punches against critical internet susceptibleness. Thanks to Drupal security team for earnestly finding anomalies, authenticating them, and responding to security issues.  

The responsibilities of the security team include documentation of these identifications and alterations made so that developers don’t feel heebie-jeebies when faced with similar kind of situation.

“Drupal community comprises of over 100,000 contributors towards its enhancement”

Besides, the team also assists the infrastructure team to keep the Drupal.org infrastructure secure. They ensure that any security issues for code hosted on Drupal are reviewed, reported, and solved in the shortest period possible.

Important features that make Drupal 8 the best WCMS in regards to Security-

  • The Security Working Group (SecWBG) ensures that Drupal core and Drupal’s contributed project ecosystem provides a secure platform while ensuring that the best practices are followed.
  • The community makes sure that people are notified the day patches are released, which are released every Wednesday for contributed projects, and the third Wednesday of every month for core, usually for a fixed period.
  • Drupal abides by the OWASP ( Open Web Application Security Project) standards and its community is devoted towards prevention of any security breaches.
  • Drupal community comprises of over 100,000 contributors towards its enhancement. An open-source code base, where contributed modules are properly reviewed, verified, and sent a notification if that module is acceptable for use.
  • Apart from encrypting and hashing the passwords, Drupal provides those modules which can support two-step authentication and SSL certificates.
  • Any member can make changes to Drupal modules and report any issues or bugs that occur in their system.
  • Access controls offered by Drupal is a superb feature. Dedicated accounts can be created for certain user roles with specified permissions. For instance, you can create separate user accounts for Admin and Editor.
  • It’s multibranched cache structure that assists in reducing Denial of Service (DoS) attacks and makes it as the best CMS for some of the world’s highest traffic websites like NASA, the University of Oxford, Grammys, Pfizer, etc.

Statistics Says It All

Sucuri, a security platform for websites, curated the “Hacked website report 2018”. It evaluated more than 34,000 compromised websites. Among the statistics it shared, one of the factors was to juxtapose the affected open-source CMS applications.

drupal-sucuri

The results were clearly on Drupal’s side declaring it a better WCMS than other leading platforms for preventing safety hazards.

The infection crept in these websites due to improper deployment, configuration, and maintenance.

Additionally, Cloud Security Report by Alert Logic also marked Drupal as the website content management system with the least number of web application attacks.11 Columns and 8 rows with text written inside them                                                                        Source: Alert Logic

Difference Between Open-source and Proprietary Software

Factor

Open-source

Proprietary

Cost

Open-source software is free which makes it an alluring option if you have in-house capacities to meet your business requirements.

Proprietary software costs differently from a couple of thousand dollars to one hundred thousand dollars, depending upon the multifaceted nature of the framework needed.

Service and support

Open-source software communities of developers are huge and steadfast which helps clients with prompt solutions to their problems.

Proprietary software vendors offer progressing backing to clients- a key offering point for clients without specialized mastery.

Innovation

Open-source software boosts innovation by providing users the opportunity to modify, append, or distribute as per their requirements.

Proprietary software vendors don’t permit its users to view or adjust the source code, thus making it unfit for organizations who desire scalability and flexibility.

Only developers can incorporate new features to the product as and when requested by users.

Security

As open-source code is available to everybody, it increases the possibility of finding more vulnerabilities easily. 

It is also worth noting that open-source communities fixed security vulnerabilities twice as quickly as commercial software vendors do.

Proprietary software is considered secure as it is developed in a governed condition of the employees having a frequent direction.

However, getting rid of the possibility of backdoor Trojans as well as lowering the threat of any other bugs or obstacles can be troublesome in proprietary software.

Availability

Open-source software is available for free on the web with 24*7 support from the community.

Proprietary software is accessible if the companies have the rights to the bundle or they have purchased from the respective vendors.

The trial version is also accessible for free to test.

Flexibility

As organizations aim at deriving more business values from less, open-source software can deliver high flexibility, lower IT costs and increased opportunities for innovation.

With proprietary software, such as Microsoft Windows, and Office, companies are required to upgrade both software and hardware on a timely basis. Updates must be installed for the proper working. However, not all updates are flexible with all the versions of the software.

In The End

Website security has always been a cause of hindrance in the journey of digital transformation and survival due to several potential threats. 

Open-source software can be considered as a befitting solution than a closed source or proprietary software. Further, this report indicates that there is an obvious desire among companies to adopt open-source technology and also prioritize the task of enhancing security in their organization.
Rectangle with text written inside Source: Gartner

However, it all depends on the preferences and needs of the organization and the on-going project for their digital business.

Drupal, an open-source content management framework, comes out as the most secure CMS in comparison to the leading players in the market.

It has been the pacesetter when it comes to opting the security focussed CMS. More individuals working on and reviewing the product always means a higher chance of a secure product!

Aug 30 2019
Aug 30

In this 5-part series, take a deep dive into universal design concepts in the context of creating component-based systems for dynamic web content. Get a birds-eye view of the inner workings of user experience (UX) architecture. Brand strategy, user psychology, objective methodology, and data-driven decisions come together, guided by timeless fundamental ideas, to construct today’s digital journeys.

a dancer mid-split

The Art of Setting Type for Dynamic Systems

It is the typographer’s task to divide up, organize, and interpret this matter in such a way that the reader will have a good chance of finding what is of interest to him.

- Emil Ruder

In the 1950s, Swiss typographer and graphic designer Emil Ruder was involved in developing the International Typographic Style. Cleanliness, objectivity, and the use of “the grid” are key features of this approach which still plays a major role in design today.

In 2006, Oliver Reichenstein said,

Web Design is 95% Typography.

And while faster connection speeds have allowed us to provide more media-rich experiences, text-based information is still vital - and the only thing that devices like Google, Alexa, and assistive technologies for the differently-enabled “see.”

Today, the timeless challenge of how to visually present text-based information is as formidable as it’s ever been. Contemporary design decisions take into account the experiences of billions of potential users, located anywhere in the world, in front of screens of all sizes, with a wide range of backgrounds, situations, and abilities. 

Fortunately, standards such as those for Heuristic Evaluation, the W3C’s Web Content Accessibility Guidelines and user testing tools such as the System Usability Scale and the Single Ease Question have provided an objective structure to inform the creative works of designers today.

Fast, Scalable, Legible Type Styling

Guiding principles for font selection and implementation 

Limit the number of fonts 

In the name of consistency, efficiency, and optimized load times, consider combining two harmonious fonts that create a visual hierarchy. Two is considered an ideal number for fonts. Choose a font with enough members in its family to allow design options, however. A font with light and black versions, as seen on some of Google’s best fonts, will provide a versatile UI toolkit.

Most brand standards contain definitions for print and well as web fonts. In the absence of such standards, a review of mission and vision statements can guide you to a font that reflects the brand identity.

Use a responsive type scale

Responsive modular typography scales, when designed and implemented, are an easy way to preserve visual hierarchy across the various screen widths of devices. A modular type scale is a series of type sizes that relate to each other because they increase by the same ratio. 

Mediacurrent Rain typography example shows Raleway and Merriweather fonts

Example of how responsive typography looks across various breakpoints on Mediacurrent’s Rain demo site.

 

Avoid All Caps for headings and paragraph text

Not only have studies shown text formatted in All Caps decreases reading speed by 10-20%, but this styling presents substantial barriers for users with dyslexia. According to the latest estimates, that is 15-20% of the population.

When headings are less than around 25 characters, all caps is still considered readable for everyone. All caps can also be a valid choice for short navigation titles and concise button copy.

Avoid Italics for headings and paragraph text

A first-time user may spend seconds on your website, not minutes, and as reading speed is dependant on legibility, styling is of paramount importance for all users. In terms of accessibility, italicized letters are nearly illegible to some with reading issues.

Addressing accessibility concerns is a great investment that provides an opportunity to bring in objective best practices to increase usability, readability, and visual impact for all users, opening up your website to a larger audience.

Modern, Readable, Accessible Type Styling 

Guiding principles for line and paragraph spacing

Look to the gold standard for accessibility

Because Section 508 compliance is currently attuned to the A and AA Level WCAG 2.0 guidelines, the AAA Guidelines are sometimes left out of the conversation. The guidelines around line and paragraph spacing, however, are especially easy to incorporate. Because they improve the experience for all users, they are well worth considering. 

a diverse group of people laughing

Avoid justified text

People with certain cognitive disabilities have problems reading text that is both left and right justified. The uneven spacing between words in fully justified text can cause "rivers of white" space to run down the page making reading difficult and in some cases impossible. Text justification can also cause words to be spaced closely together so that it is difficult for them to locate word boundaries.

Implement a maximum width for containers of heading and paragraph text

For people with some reading or vision disabilities, long lines of text can become a significant barrier. They have trouble keeping their place and following the flow of text. Having a narrow block of text makes it easier for them to continue on to the next line in a block. Text blocks must be no wider than 80 characters. 

When determining how to limit the width of a responsive text block, it can be helpful to use a character counting tool. Or try advanced math! The Golden Ratio Typography Calculator generates suggestions for your entire type hierarchy based on the Golden Ratio: a pattern found in nature that is inherently pleasing to the human eye.

Provide ample line spacing for paragraph text

People with some cognitive disabilities find it difficult to track text where the lines are close together. Providing extra space between lines and paragraphs allows them to better track the next line and to recognize when they have reached the end of a paragraph. Provide line spacing that is at least 1.5 (a space and a half) in text blocks and spaces between paragraphs are at least 1.5x line spacing.

In the first post of this series, we discussed the advantages of generously-sized type comfortably line-spaced within a width-restricted column. Not only does this approach align with that of today’s best-in-class websites and provide a comfortable, welcoming reading experience, it is universal design that is accessible and all-inclusive.

Preparing to Reach a Global Audience

Scratching the surface of localization

Designing type for Right To Left (RTL) languages

Arabic is the 4th most popular language globally and 60% of Arabic speakers prefer browsing internet content in Arabic. Aligning text to the right side is key, and so is upsizing the font to preserve text readability. Factoring in the shorter length of words as most Arabic words. Read more about web design for RTL languages.

Dubai.ae screenshot

Example of RTL language typography on dubai.ae.

Accommodating translated text

Character counts expand or contract according to language. Expect a 15 - 30% expansion when translating English to Spanish or Portuguese, for example. When planning to translate English to Chinese or Japanese, however, expect variation. Read more about typography for translated text here.

Planning for character-based languages

Written Japanese, for example, consists of thousands of characters across four character sets: hiragana, katakana, kanji and the Latin alphabet. Japanese users perceive carelessly designed websites as reflective of brand quality. They describe products as “unnatural”, “foreign”, and “suspicious.” The work to get from unnatural to perfect is not hard. Read more about standards for presenting Japanese text on the screen.

Applying and Iterating Type Systems

Continuous improvement based on user feedback

After carefully selecting type styles representative of the brand experience, applying them with accessibility in mind, defining parameters within responsive components, and perhaps including specifications for translated type, what comes next?

We take these specs and build a living style guide to catalog the site’s elements and components. Having the building blocks all in one place not only ensures consistency but allows developers to rapidly adjust or efficiently leverage the existing pieces to create more complex components.

A living style guide makes it easier to add new patterns to meet your needs and the needs of your users that arise as “the rubber hits the road” when content editors begin using the site and feedback is collected from users, ideally through methodical tests.

Technology has evolved rapidly since pioneers like Emil Ruder developed the Swiss style, and is always offering new challenges for designers. But happily, this evolution has allowed us to collect data to objectively guide our practice and to create, share, and continuously improve standards for accessibility and usability, allowing us to meet the challenge of designing with confidence for the global audience. What a great time to be a designer!

In the next installment, we’ll cover pattern libraries/ living style guides in greater detail. We’ll discuss how style libraries ensure a consistent experience and make ongoing enhancements much easier. Learn about the steps it takes to build an emotion-rich, brand-true user journey within the restricted structure of a website built to last for years displaying dynamic, user-entered content.

Aug 30 2019
Aug 30

 

The quantum leap in technology and the ubiquitous demand for delivering personalized content has made it pivotal for companies to embrace the web content management system for all the right reasons. It begins from engaging customers, lead generation, to snowballing overall revenue from various platforms.

However, it can be daunting and tricky sometimes for enterprises to choose the right one as per their requirements on the basis of the varied features and potential that these CMS offers. 

One of the most cited reports by Gartner, Web Content Management Magic Quadrant report, has proclaimed that Acquia Drupal, Adobe Experience Manager, and Sitecore are the three most prominent WCM Managers. 

A square divided into 4 with text and dots insideThese three were at the forefront in Gartner’s report based on the two factors majorly, “ability to execute”, and “completeness of vision”. They undoubtedly outperformed on both these parameters and hence it goes without saying that all three are proficient in fulfilling enterprises’ WCM needs.

However, as one-size does not fit all and there can be multiple parameters for comparing these, it’s better to largely group them into different stakeholder perspectives- the business decision-makers’, the content and marketing teams, and the IT teams. Each of these teams play a vital role in the process. 

Source: Gartner

The content, marketing, and IT team because they’ll be the ones directly working with the CMS they choose. The business decision-makers, CIO, CTO, and the freshly-coined Chief Data Officer (CDO) are the ones who will be held accountable for their choices and showcasing adequate ROI.

This blog will deal with the comparison of AEM and Drupal from the perspective of business decision-makers. Here we’ll primarily focus on factors like cost of implementation, scalability, security, and maintenance to see how Drupal and AEM fare against each other.

Pick What’s Best For Your Organization

Rectangular box with logo and text of Drupal and AEM

Identifying the company’s particular requirement should be the first task on your to-do list. This will only help you out as a decision-maker to draw the conclusion.

Cost of Implementation

"A high price may be a part of its charisma in selling difficult art”, quoted by Robert Genn, a renowned Canadian artist. 

You should get the desired output for the price you pay for a CMS. 

Setting up any large technology solution is always an eye-catching question as it involves the cost associated with it for implementation. Though it is justified as CMS forms a framework for the enterprise technology architecture, and further paves way for digital transformation; the expenditure made on this part is yet always under analysis.

“Being expensive doesn’t make CMS equipped or competent enough for the enterprises”

Furthermore, migrating to new CMS is also a cumbersome task for any enterprise IT team. So, this crucial decision of investing in any particular CMS is made after several rounds of deliberation. And once deployed, organizations become extremely perceptive of acclimating to a change.

The objective behind all such discussions is to get this done right in the very first time & the investment and ROI of any particular enterprise CMS is one of the biggest factors to consider. 

Licensing Fees

The first and foremost difference between AEM and Drupal is their nature of availability- AEM is proprietary while Drupal is open-source. AEM’s licensing fee starts from somewhere 40,000 USD, with additional cost implications based on organizations’ size and expected usage. And this is not a one-time investment. It is a recurring expenditure every year.

Contrarily, Drupal is an open-source platform and hence discards any licensing fee completely. 

Build vs. Buy

The way current market trends are soaring up does not allow enterprises to consider the deployment of CMS a good idea as it will consume a considerable amount of time. Their expectations lie in finding out an unconventional and innovative solution which is readily available with the quick installation process and some training for content, marketing, and larger digital experience teams to run full-fledged campaigns. 

The general perception that surfaces with Drupal being an open-source, developer-driven solution, is the requirement of complete expert teams to deploy it. There is a definite apprehension around the fact that enterprises have to build from scratch to set up a Drupal CMS, and that without second thoughts, consumes ample amount of time, resources, as well as cost. 

AEM is perceived as a ready-to-roll product requiring minimal expert set up.

“In contrast to the assumption, Drupal does have over 20,000 modules and distributions that provide on-the-go functionalities and features”

However, it’s paramount to apprehend that build vs. buy debate is not as straightforward as it appears. Because:

  • In contrast to the assumption, Drupal does have over 20,000 modules and distributions that provide on-the-go functionalities and features like multisite, multilingual, dynamic content, personalization, and more. With distributions like Acquia Lightning, Drupal caters to highly targeted, easy-to-implement enterprise-level content management solutions, unlike AEM.
  • The other noteworthy point is that AEM does need specialized teams for design, hosting and maintaining an efficient digital platform. They demand an almost similar degree of the build like that of Drupal. But even here, the total cost of implementation for Drupal would be around 250,000 USD to 350,000 USD on an average, and around 500,000 USD if you compute hosting too. On the other hand, typical AEM implementation budget starts exceeding the limit of 500, 000 USD and can go as high as 1 million USD.

Support & Maintenance

Both Drupal and AEM demand substantial maintenance post-deployment.

In regards to the maintenance, Drupal will safeguard your content but to lay the foundation for modern architecture it won't hesitate from breaking some components to ensure that the platform is up-to-date and relevant. To achieve the same, It will eliminate unnecessary bloatware associated with rote adherence to backward compatibility.

 

Licensing 

Build or Buy

Support & Maintenance

Drupal

No licensing fees

Considerable build. Cost approx 250,000-350,000 USD

Support costs can be tailored to fit different enterprises

AEM

Licensing fee applicable

Needs specialized teams for build. Costs approx 500,000 - 1 million USD

Dedicated support teams by Adobe

Security

AEM is certainly a secure platform with predefined functionalities to ensure security and administration. User identification and access can be easily managed. There are tried-and-tested techniques by which risk of inter-site request forgery, can be alleviated, and third party data storage, and role-based authentication and access to data objects can be successfully secured.

A bar graph with 11 bars of different height in peach color on white background

Source: Sucuri

As per the stats, Drupal performs substantially better than other leading CMS platforms in terms of protecting websites from any external attacks.

Sucuri, security platform for websites, compiled the Hacked Website report, analyzed more than 34,000 infected websites. Among the statistics that it shared, one of the factors for comparison was affected open-source CMS applications.

The infection crippled other CMS due to improper deployment, configuration, and the poor maintenance.

With Drupal being an open-source platform, it is generally presumed less secure in comparison to a proprietary platform like AEM. However, that’s not the case! 

Drupal has almost similar security and governance features embedded within it similar to AEM. Drupal has dedicated modules for identification, authentication, and access-based controls.

“Drupal’s security standards are set by the Open Web Security Project, making it secure by design”

The database encryption at various levels vouches for data security so that no unauthenticated user can breach the security. Also, there is built-in security reporting feature to let teams highlight and raise the security concerns within the community. 

It is to take heed that AEM’s security initiative is led solely by one team, with Adobe extending support whenever necessary. 

But Drupal has a different story to narrate! The security advisory not only works on to safeguard the platform but also ensure that there are multiple touchpoints to resolve the issue.

Security documentation, helps developers write secure code, and maintain modules for added security - all this creates a larger system that continuously safeguards Drupal. It’s security standards are set by the Open Web Security Project, making it secure by design.

Scalability and Future Proofing

CMS lays the foundation for providing the unique digital experience to users so it ought to be scalable and customizable. It should be capable of integrating seamlessly with other technologies and simultaneously support new solutions so that its ready to serve the growing needs of the organizations shortly. 

So how are Drupal and AEM different in this regard?

The Adobe ecosystem of products offers all-powerful solutions to amplify the enterprise digital experience. However, its features and full potential can only be realized when organizations are using a combination of several different Adobe solutions. While they continuously come up with new capabilities, the chance to leverage these is often dependent on having up-to-date versions of other Adobe products. AEM is a part of the Adobe Marketing Cloud and makes a pertinent case for buying all the other products to create an efficient digital platform.

For instance, Adobe’s  Smart Layout was a new AI feature rolled out in 2018. However, to make use of this feature, enterprises will need the most recent versions of AEM sites, AEM Assets, Target Analytics, and Audience Manager. And that just adds up to the overall budget by several thousand dollars.

While large enterprises might think of implementing it, the vendor lock-in associated with Adobe does not bode well for scalability.

That's because most enterprises today opt for those solutions which are best-of-breed and best-of-need philosophy. The complete enterprise technology stack gets build in an agile manner, where every new piece appended is the best possible solution for the enterprise with given current requirements and constraints. But in case you decide to choose products from Adobe ecosystem, the need to stick to Adobe becomes crucial. And if you want to leverage any of its products to its full capacity, you may lose out on your flexibility of opting for other solutions that might be more suitable to your needs.

In a nutshell, once you have decided to go with Adobe or even with just AEM, getting out of it becomes difficult even if you keep on adding new moving parts to your digital experience stack.

“Drupal empowers enterprises with the flexibility of choosing any technology solution that works best as per their respective requirements and integrates with them hassle-free”

Four circles with text written over them

However, with Drupal, scalability, expansion, and flexibility have never been a cause of concern. Since Drupal is co-created by a whole community of developers, its feature of integrating seamlessly with various other technology solutions is inculcated in its DNA.

  • The Drupal CMS integrates effortlessly with multiple enterprise systems, even Adobe, and does not rely on the existence of other drupal based solutions to work effectively
  • The potential of decoupled Drupal applications has proven it as best content manager-while letting other technologies to build atop to deliver augmented user-facing functionalities.
  • The open-source community also takes care that new modules and functionalities built on any project get contributed and made readily available for others to use and worked upon.

In essence, Drupal empowers enterprises with the flexibility of choosing any technology solution that works best as per their respective requirements and integrates with them hassle-free. 

The Drupal community also ensures to keep the core up-to-date and the platform is always up to speed to work with other enterprise technologies.

The question that arises here is that whether you want to completely switch to Adobe solutions or want to keep that option with you where you have the flexibility to choose the best solutions for your company.

For uninterrupted flexibility and extensibility, it’s suggested to avoid vendor lock-in and choose Drupal.

Have a look at this video to get more understanding of different web content management systems and their capabilities-

[embedded content]

 

Drupal or AEM

Here is a compiled list of factors arranged in tabular form to carry out the comparison between Drupal and AEM to help you reach the final decision-

Attributes Drupal  AEM

Major Differentiation

A web content management system built by the largest community of developers. A web content management system with implicit personalization and analytics feature.   Agility, cost, and open-source availability are its USPs. Proprietary and licenses are require Flexibility

Being an open-source platform, it does not require any roadmap to implement change.

It is innovation-friendly!

Since it is proprietary and requires a license, it has to wait for rolling out a roadmap to implement changes. Development Speed Easy prototyping leads to faster implementations

Requires considerable time to execute the process

Responsiveness

Highly responsive! It helps in building interactive websites for the enhanced digital experience of users

User Experience and building responsive interfaces are available Integration Capabilities

Rest APIs in the core is easy to integrate

Integratable-Relies on partners for integration

Enterprise Fit

Meets all the criteria of the enterprises

Meets all the criteria of the enterprises Security

Dedicated teams to ensure the security of the platform.

Has a more transparent and open process to communicate the issues within the community

Security directed as by proprietary team Scalable

Highly scalable

Scalable Maintenance

Sign up with any Drupal shop. Vendor Agnostic approach is possible.

Proprietary Cost

Source code is free but organizations have to pay more for adding up functionalities

License costs are high

Final Words

The final choice between Drupal and AEM will be made by the decision-makers based on the array of questions around the cost of building, hosting, and maintenance. This also involves considering the associated ROI with both Drupal and AEM to ensure easy workflow. 

The trade-off between making Adobe products work together well and the freedom to choose the best technology solutions as per your requirements needs to be carefully evaluated.

And even though both Drupal and AEM ensure top-notch security, your enterprise internal security and compliance requirements will also need to be taken into account before choosing one over the other.

Aug 29 2019
Aug 29

usability testing and great government UX webinar

Crafting UX - for the people, by the people 

Mass.gov takes a data-informed approach to site decisions. An open ear to constituent feedback ensures a "wicked awesome" user experience. So it's no surprise that when the site’s navigation needed improvement, user testing became a guiding light.

In our upcoming webinar, hear how Mediacurrent teams with Mass.gov on a user testing strategy leveraging Drupal 8 and Google Optimize. 

Join our webinar

Watch how to deliver a constituent experience that is discoverable, accessible, and truly “for the people, by the people.” Join us on September 18, 2019, at 2:00 EDT to follow along with our process. Learn tips to user test your way to better website UX. 

Register for the webinar.

You'll learn

  • Our approach to testing and gathering user feedback
  • The A/B testing variants we used to steer site navigation and layout
  • Deep dive into testing with Google Optimize 

Presenters

  • Clair Smith, Senior Front End Developer, Mediacurrent
  • Becky Cierpich, UX/UI Designer, Mediacurrent

We hope to see you there!

Aug 23 2019
Aug 23

With enterprises looking for ways to stay ahead of the curve in the growing digital age, machine learning is providing them with the needed boost for seamless digital customer experience.

Machine learning algorithms can transform your Drupal website into an interactive CMS and can come up with relevant service recommendations targeting each individual customer needs by understanding their behavioural pattern.


Machine Learning integrated Drupal website ensures effortless content management and publishing, better targeting and empowering your enterprise to craft personalized experiences for your customers. It automates the customer service tasks and frees up your customer support teams, subsequently impacting RoI.

However, with various big names competing in the market, let’s look at how Amazon’s Machine Learning stands out amongst all and provides customised offerings by integrating with Drupal.

Benefits of Integrating AWS Machine Learning with Drupal

AWS offers the widest set of machine learning services ranging from pre-trained AI services for computer vision, language, recommendations, and forecasting. These capabilities are built on the most comprehensive cloud platform and are optimized without compromising security. Let’s look at the host of advantages it offers when integrated with Drupal.

Search Functionality

One of the major problems encountered while searching on a website is the usage of exact keyword. If the content uses a related keyword, you will not be able to find it without using the correct keyword.

This problem can be solved by using machine learning to train the search algorithm to look for synonyms and display related results. The search functionality can also be improved by using automatically filtering as per past reads, the search results according to the past reads, click-through rate, etc.

Amazon Cloudsearch is designed to help users improve the search capabilities of their applications and services by setting up a scalable search domain solution with low latency and to handle high throughput.

Image Captioning

Amazon Machine Learning helps in automatic generation of related captions for all images on the website by analyzing the image content. The admin would have the right to configure whether the captions should be added automatically or after manual approval, saving a lot of time for the content curators and administrators of the website.

Amazon Rekognition helps search several images to find content within them and easily helps segregate them almost effortlessly with minimal human interaction.

Website Personalization

Machine learning ensures users get to view tailored content on websites as per their favorite reads and searches by assigning them unique identifier (UID) and tracking their behaviour (clicks, searches, favourite reads etc) on the website for personalized web experience.

Machine learning analyzes the data connected with the user’s UID and provides personalized website content.

Amazon Personalize is a machine learning service which makes it easy for developers to create individualized recommendations for its customers. It saves upto 60% of the time needed to set up and tune the infrastructure for the machine learning models as compared to setting own environment.

Another natural language processing (NLP) service that uses machine learning to find insights and relationships in text is Amazon Comprehend. It easily finds out which topics are the most popular on the internet for easy recommendation. So, when you’re trying to add tags to an article, instead of searching through all possible options, it allows you to see suggested tags that sync up with the topic.

Vulnerability Scanning

A website is always exposed to potential threats, with a risk to lose customer confidential data.

Using machine learning, Drupal based websites can be made secure and immune to data loss by automatically scanning themselves for any vulnerabilities and notifying the administrator about them. This gives a great advantage to websites and also help them save the extra cost spent on using external software for this purpose.

Amazon Inspector is an automated security assessment service, which helps improve the security and compliance of the website deployed on AWS and assesses it for exposure, vulnerabilities, and deviations from best practices.

Voice-Based operations

With machine learning, it’s possible to control and navigate your website by using your voice. With Drupal standing by its commitment towards accessibility, when integrated with Amazon Machine Learning features, it promotes inclusion to make web content more accessible to people.

Amazon Transcribe is an automatic speech recognition (ASR) service. When integrated with a Drupal website, it benefits the media industry with live subtitling of news or shows, video game companies by streaming transcription to help hearing-impaired players, enables stenography in courtrooms in legal domain, helps lawyers to make legal annotations on top of live transcripts, and enables business productivity by leveraging real-time transcription to capture meeting notes.

The future of websites looks interesting and is predicted to benefit users through seamless experience by data and behavior analysis. The benefits of integrating Amazon Machine Learning with Drupal will clearly give it a greater advantage over other CMSs and will pave the way for a brighter future and better roadmap.

Srijan has certified AWS professionals and an expertise in AWS competencies. Contact us to get started with the conversation.

Aug 21 2019
Aug 21

The JS frameworks have changed quite a lot in Drupal especially with API-first concept adding to the scenario. It is only expected that developers are inclined towards learning more about JS and related possibilities.

Recently, I was tasked to render blocks on a page while keeping individual components encapsulated in their own. JavaScript has the potential to make web pages dynamic and interactive without hindering the page speed and so I decided to opt for progressively decoupled blocks.

I came across this Drupal module Progressive Decoupled Blocks, which allows us to render blocks in a decoupled way and seemed a perfect fit for the situation.

Anatomy of Progressive Decoupled Blocks

The module is javascript-framework-agnostic, progressive decoupling tool to allow custom blocks to be written in the javascript framework of one’s choice. What makes it unique is one can do all this without needing to know any Drupal API.

It keeps individual components compact in their own directories containing all the CSS, JS, and template assets necessary for them to work, and using an info.yml file to declare these components and their framework dependencies to Drupal.

Did it work?

I decided to test the module in the new Umami Demo profile, that comes out of the box with Drupal, with React and Angular blocks.

I used the Layout module and picked a page to place these blocks. This is one of the best parts I liked about the module, every piece of block content that we need to be placed on the page, can be done without even visiting the block page and setting visibility.

Module Architecture

The module has a custom block derivative, which searches for all components that have been added and exposes them as blocks. This architecture makes it super easy to add a new block.

You can refer to this git for the block derivative - https://git.drupalcode.org/project/pdb/blob/8.x-1.x/src/Plugin/Derivative/PdbBlockDeriver.php

Refer to this git for component discovery - https://git.drupalcode.org/project/pdb/blob/8.x-1.x/src/ComponentDiscovery.php

Possibilities

For React JS there are 2 examples in this module.

First is with a simple React Create element class, without JSX. This example renders a simple text inside a React component. This is a very good starter example for anyone who wants to understand how to integrate a react component with Drupal in a progressive way.

The second example is a ToDo app, which allows you to add and remove todo items to a list. It makes use of local storage to store any item that has been added. This app creates React components, integrate these components in other component and renders a fully functional DOM inside Drupal DOM in a progressive way.

This example comes with a package.json which needs to be installed before making it functional. However, the component did not render perfectly on Umami theme, I made certain changes to make sure it renders correctly. Patch attached in the end.

progressive decoupled block

I decided to extend this module and added a new component to render a banner block (comes OOB with Umami), and exposed this block as an API via JSON:API. As this was a very simple block, I decided to create this block without JSX. Also, I decided to generate the URL with static ID in the path. This can, however, be made dynamic, which I plan to do later in my implementation. I also decided to choose the same class names to save on styling. The classes can be found in the Umami theme profile.

(function ($, Drupal, drupalSettings) {
Drupal.behaviors.pddemo = {
attach: function (context, settings) {
$.ajax(drupalSettings.pdb.reactbanner.url, {
type: 'get',
success: function (result) {
var image = result.included[0].attributes.uri.url;
var title = result.data.attributes.field_title;
ReactDOM.render(React.createElement(
'div',
{
className: 'block-type-banner-block',
style: {backgroundImage: 'url(' + image + ')'}
},
React.createElement(
'div',
{className: 'block-inner'},
React.createElement(
'div',
{className: 'summary'},
React.createElement(
'div',
{className: 'field--name-field-title'},
title
)
)
)
), document.getElementById('reactbanner'));
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(textStatus || errorThrown);
},
});
}
};
})(jQuery, Drupal, drupalSettings);


Angular JS

Angular JS comes with many more easy and complex examples. Things didn’t work as smoothly as it did with React. There were a couple of changes we were required to make it work.

Patch is attached in the end. You can refer to this gist for the patch.

You will have to install node modules before, to make it work. Also, all JS is in the form of Typescript, which needs to be processed to JS before you can make it work.

Conclusion

The module gives you a great kickstart to move any block, rendered by Drupal, to a progressively decoupled block, using React, Angular or Ember as JS framework. However, you may want to extend the module or create your own to render the blocks.

Aug 20 2019
Aug 20

Welcome to Mediacurrent’s Open Waters, a podcast about open source solutions. In this episode, we catch up with Cristina Chumillas. Cristina comes from the design world and is passionate about front-end development. She works at Lullabot (though when we recorded this, she worked at Ymbra) and has been involved in the Drupal community for years, contributing with code, design, and organizing events. Her contributions to Drupal Core are mainly focused on front-end, design and UX. Nowadays, she's a co-organizer of the Drupal Admin UI & JS Modernization Initiative and a Drupal core UX maintainer.

Audio Download Link

Project Pick

 Claro

Interview with Cristina Chumillas

  1. Tell us about yourself: What is your role, who do you work for, and where are you from?
  2. You are a busy woman, what events have you recently attended and/or are scheduled to attend in the near future?
  3. Which Drupal core initiatives are you currently contributing to?
  4. How does a better admin theme UI help site owners?  
  5. What are the main goals?
  6. Is this initiative sponsored by anyone? 
  7. Who is the target for the initiative? 
  8. How is the initiative organized? 
  9. What improvements will it bring in a short/mid/long term?
  10. How can people get involved in helping with these initiatives?

Quick-takes

  •  Cristina contributed to the Out Of The Box initiative for a while, together with podcast co-host Mario
  • 3 reasons why Drupal needs a better admin theme UI: Content Productivity, savings, less frustration
  • Main goals: We have 2 separate paths: the super-fancy JS app that will land in an undefined point in the future and Claro as the new realistic & releasable short term work that will introduce improvements on each release.
  • Why focus on admin UI?  We’re focusing on the content author's experience because that’s one of the main pain points mentioned in an early survey we did last year.)
  • How is the initiative organized? JS, UX&User studies, New design system (UI), Claro (new theme)
  • What improvements will it bring in a short/mid/long term? Short: New theme/UI, Mid: editor role with specific features, autosave, Long: JS app. 

That’s it for today’s show, thanks for joining us!  Looking for more useful tips, technical takeaways, and creative insights? Visit mediacurrent.com/podcast for more episodes and to subscribe to our newsletter.

Aug 19 2019
Aug 19

This is a short story on an interesting problem we were having with the Feeds module and Feeds directory fetcher module in Drupal 7.

Background on the use of Feeds

Feeds for this site is being used to ingest XML from a third party source (Reuters). The feed perhaps ingests a couple of hundred articles per day. There can be updates to the existing imported articles as well, but typically they are only updated the day the article is ingested.

Feeds was working well for over a few years, and then all of a sudden, the ingests started to fail. The failure was only on production, whilst the other (lower environments) the ingestion worked as expected.

The bizarre error

On production we were experiencing the error during import:

PDOStatement::execute(): MySQL server has gone away database.inc:2227 [warning] 
PDOStatement::execute(): Error reading result set's header [warning] 
database.inc:2227PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has [error]

The error is not so much that the database server is not alive, more so that PHP's connection to the database has been severed due to exceeding MySQL's wait_timeout value.

The reason why this would occur on only production happens on Acquia typically when you need to read and write to the shared filesystem a lot. As lower environments, the filesystem is local disk (as the environments are not clustered) the access is a lot faster. On production, the public filesystem is a network file share (which is slower).

Going down the rabbit hole

Working out why Feeds was wanting to read and/or write many files from the filesystem was the next question, and immediately one thing stood out. The shear size of the config column in the feeds_source table:

mysql> SELECT id,SUM(char_length(config))/1048576 AS size FROM feeds_source GROUP BY id;
+-------------------------------------+---------+
| id                                  | size    |
+-------------------------------------+---------+
| apworldcup_article                  |  0.0001 |
| blogs_photo_import                  |  0.0003 |
| csv_infographics                    |  0.0002 |
| photo_feed                          |  0.0002 |
| po_feeds_prestige_article           |  1.5412 |
| po_feeds_prestige_gallery           |  1.5410 |
| po_feeds_prestige_photo             |  0.2279 |
| po_feeds_reuters_article            | 21.5086 |
| po_feeds_reuters_composite          | 41.9530 |
| po_feeds_reuters_photo              | 52.6076 |
| example_line_feed_article           |  0.0002 |
| example_line_feed_associate_article |  0.0001 |
| example_line_feed_blogs             |  0.0003 |
| example_line_feed_gallery           |  0.0002 |
| example_line_feed_photo             |  0.0001 |
| example_line_feed_video             |  0.0002 |
| example_line_youtube_feed           |  0.0003 |
+-------------------------------------+---------+
What 52 MB of ASCII looks like in a single cell.

Having to deserialize 52 MB of ASCII in PHP is bad enough.

The next step was dumping the value of the config column for a single row:

drush --uri=www.example.com sqlq 'SELECT config FROM feeds_source WHERE id = "po_feeds_reuters_photo"' > /tmp/po_feeds_reuters_photo.txt
Get the 55 MB of ASCII in a file for analysis

Then open the resulting file in vim:

"/tmp/po_feeds_reuters_photo.txt" 1L, 55163105C
Vim struggles to open any file that has 55 million characters on a single line

And sure enough, inside this config column was a reference to every single XML file ever imported, a cool ~450,000 files.

a:2:{s:31:"feeds_fetcher_directory_fetcher";a:3:{s:6:"source";s:23:"private://reuters/pass1";s:5:"reset";i:0;
s:18:"feed_files_fetched";a:457065:{
s:94:"private://reuters/pass1/topnews/2018-07-04T083557Z_1_KBN1JU0WQ_RTROPTC_0_US-CHINA-AUTOS-GM.XML";i:1530693632;
s:94:"private://reuters/pass1/topnews/2018-07-04T083557Z_1_KBN1JU0WR_RTROPTT_0_US-CHINA-AUTOS-GM.XML";i:1530693632;
s:96:"private://reuters/pass1/topnews/2018-07-04T083557Z_1_LYNXMPEE630KJ_RTROPTP_0_USA-TRADE-CHINA.XML";i:1530693632;
s:97:"private://reuters/pass1/topnews/2018-07-04T083617Z_147681_KBE99T04E_RTROPTT-LNK_0_OUSBSM-LINK.XML";i:1530693632;
s:102:"private://reuters/pass1/topnews/2018-07-04T083658Z_1_KBN1JU0X2_RTROPTT_0_JAPAN-RETAIL-ZOZOTOWN-INT.XML";i:1530693632
457,065 is the array size in feed_files_fetched

So this is the root cause of the problem, Drupal is attempting to stat() ~450,000 files that do not exist, and these files are mounted on a network file share. This process took longer than MySQL's wait_timeout and MySQL closed the connection. When Drupal finally wanted to talk to the database, it was not to be found.

Interesting enough, the problem of the config column running out of space came up in 2012, and "the solution" was just to change the type of the column. Now you can store 4GB of content in this 1 column. In hindsight, perhaps this was not the smartest solution.

Also in 2012, you see the comment from @valderama:

However, as feed_files_fetched saves all items which were already imported, it grows endless if you have a periodic import.

Great to see we are not the only people having this pain.

The solution

The simple solution to limp by is to increase the wait_timeout value of your Database connection. This gives Drupal more time to scan for the previously imported files prior to importing the new ones.

$databases['default']['default']['init_commands'] = [
  'wait_timeout' => "SET SESSION wait_timeout=1500",
];
Increasing MySQL's wait_timeout in Drupal's settings.php.

As you might guess, this is not a good long term solution for sites with a lot of imported content, or content that is continually being imported.

Instead we opted to do a fairly quick update hook that would loop though all of the items in the feed_files_fetched key, and unset the older items.

<?php

/**
 * @file
 * Install file.
 */

/**
 * Function to iterate through multiple strings.
 *
 * @see https://www.sitepoint.com/community/t/strpos-with-multiple-characters/2004/2
 * @param $haystack
 * @param $needles
 * @param int $offset
 * @return bool|int
 */
function multi_strpos($haystack, $needles, $offset = 0) {
  foreach ($needles as $n) {
    if (strpos($haystack, $n, $offset) !== FALSE) {
      return strpos($haystack, $n, $offset);
    }
  }
  return false;
}

/**
 * Implements hook_update_N().
 */
function example_reuters_update_7001() {
  $feedsSource = db_select("feeds_source", "fs")
    ->fields('fs', ['config'])
    ->condition('fs.id', 'po_feeds_reuters_photo')
    ->execute()
    ->fetchObject();

  $config = unserialize($feedsSource->config);

  // We only want to keep the last week's worth of imported articles in the
  // database for content updates.
  $cutoff_date = [];
  for ($i = 0; $i < 7; $i++) {
    $cutoff_date[] = date('Y-m-d', strtotime("-$i days"));
  }

  watchdog('FeedSource records - Before trimmed at ' . time(), count($config['feeds_fetcher_directory_fetcher']['feed_files_fetched']));

  // We attempt to match based on the filename of the imported file. This works
  // as the files have a date in their filename.
  // e.g. '2018-07-04T083557Z_1_KBN1JU0WQ_RTROPTC_0_US-CHINA-AUTOS-GM.XML'
  foreach ($config['feeds_fetcher_directory_fetcher']['feed_files_fetched'] as $key => $source) {
    if (multi_strpos($key, $cutoff_date) === FALSE) {
      unset($config['feeds_fetcher_directory_fetcher']['feed_files_fetched'][$key]);
    }
  }

  watchdog('FeedSource records - After trimmed at ' . time(), count($config['feeds_fetcher_directory_fetcher']['feed_files_fetched']));

  // Save back to the database.
  db_update('feeds_source')
    ->fields([
      'config' => serialize($config),
    ])
    ->condition('id', 'po_feeds_reuters_photo', '=')
    ->execute();
}

Before the code ran, there were > 450,000 items in the array, and after we are below 100. So a massive decrease in database size.

More importantly, the importer now runs a lot quicker (as it is not scanning the shared filesystem for non-existent files).

Aug 16 2019
Aug 16

After a couple months off, SC DUG met this month with a presentation on super cheap Drupal hosting.

Chris Zietlow from Mindgrub, Will Jackson from Kanopi Studios, and I all gave short talks very cheap ways to host Drupal 8.

[embedded content]

Chris opened by talking about using AWS Micro servers. Will shared a solution using a Raspberry Pi for a fully wireless server. I closed the discussion with a review of using Drupal Tome on Netlify.

We all worked from a loose set of rules to help keep us honest and prevent overlapping:

Rules for Cheap D8 Hosting Challenge

The goal is to figure out the cheapest D8 hosting that would actually function for a project, even if it is deeply irresponsible to actually use.

Rules

  1. It has to actually work for D8 (so modern PHP version, working database, etc),
  2. You do not actually have to spend the money, but you do need to know all the steps required to make it work.
  3. It needs to honor the TOS for any networks and services you use (no illegal network taps – legal hidden taps are fair game).
  4. You have to share your idea with the other players so we don’t have two people propose the same solution (first-come-first-serve on ideas).

Reporting

Be prepared to talk for about 5 minutes on how your solution would work.  Your talk needs to include:

  1. Estimated Monthly cost for the first year.
  2. Steps required to make it work.
  3. Known weaknesses.

If you have a super cheap hosting solution for Drupal 8 we’d love to hear about it.

Pages

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