Upgrade Your Drupal Skills

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

See Advanced Courses NAH, I know Enough
Jun 29 2021
Jun 29
Version: 8.9.x-devDate: 2021-June-29Description: 

Drupal 8 will reach its end-of-life on November 2, 2021, before the release of Drupal 9.3.0, due to Symfony 3's end-of-life. If you are using Drupal 8, you must upgrade to Drupal 9.2 before November to keep your site secure. (Drupal 9.1 security coverage ends shortly after the Drupal 8 end-of-life, so updating to 9.2 directly is best.)

There is no vendor extended support program for Drupal 8.


How do I upgrade my Drupal 8 site to Drupal 9?

The Drupal 8 to Drupal 9 upgrade process is much easier than previous major-version upgrades. There are many automated tools available to assist with the upgrade. Learn more about upgrading your Drupal 8 site to Drupal 9.

What if a module I need doesn't have a Drupal 9 release?

Many modules can be upgraded automatically. Check the module's issue queue for an issue created by "Project Update Bot".

  1. If the "Project Update Bot" issue is not yet marked "Reviewed and Tested by the Community" ("RTBC"), review and test whether the module works for you on Drupal 9 with that patch applied to its code.
    • If the issue is set to "Needs review" and your testing does not encounter any problems, you can mark the issue RTBC, along with a comment explaining what you tested and how.
    • Otherwise, if it does not work or causes bugs that didn't happen before, mark the issue "Needs work" explaining what did not work with the Drupal 9 patch.
  2. If the existing issue is already "Reviewed & Tested by the Community", test it yourself, and comment on the issue reporting what testing you did. Consider using the maintainer's contact form to reach out to them asking them to make a Drupal 9 release.
  3. If you have maintained contributed projects before and the patch has been RTBC for at least two weeks, consider taking over maintenance of the module. Otherwise, if you work with an organization that provides Drupal services, ask that organization to consider taking over maintenance of the module.

If you cannot find anyone to maintain the module, try using the patch directly with composer.

The Drupal Association will also be taking additional steps to help with the creation of Drupal-9-compatible releases in the coming months.

What about Drupal 7?

Drupal 7 will still have community-based security coverage until November 28, 2022. The paid Drupal 7 Vendor Extended Support program will continue until November 2025.

Jun 29 2021
Jun 29

I’m pleased to share that after over a year of work and planning, our very first cohort of Discover Drupal students is starting July 1st! Discover Drupal, a pillar of our new Drupal Talent & Education program, is designed to unlock opportunities for people who have been underrepresented in the open-source community.

With the generous support of our sponsors Kanopi Studios, Elevated Third, Lullabot, and training partners Drupal Easy, Mediacurrent, Evolving Web, and Drupalize.me, we were able to offer full training scholarships to 8 students based in North America. Each student also received a refurbished laptop, a 1-year Drupalize.me subscription, a full scholarship for DrupalCon 2022, and will receive support for launching their career in Drupal.

The students will each work with an assigned trainer, depending on their career trajectory, and will have access to a network of 23 Discover Drupal mentors across the globe. The mentors will be available to students during set weekly office hours and will help the students through their journey from training through the final project.

All of our wonderful mentors are identifiable by the Discover Drupal mentor badge on their Drupal.org profile. They will each receive contribution credits for their volunteer work throughout the program.

Over the coming months, we will be introducing each student participating in the program by sharing more about them in a blog post and through our social media channels. Stay tuned!

This program has been in the works since 2019 when Gwendolyn Anello of Drupal Easy first approached the Drupal Association to talk about developing a program to help bring more diverse talent to Drupal. Many members of the community had already been formulating ideas for how to develop such a program. Our Executive Director, Heather, and I had been envisioning a similar program as part of our goals for Diversity, Equity, and Inclusion.

After many months of conversations, we asked training organizations to get involved and connected with our super-star volunteer project manager, Allison Manley of Kanopi Studios. Along with Allison, the trainers collaborated and helped us think through a pilot program utilizing their existing curriculum. I’m deeply grateful for the work of this group and so thrilled that the Drupal Association is able to provide support as the convener of this new program. Thank you for all that you have done to champion this work. I’m hopeful that we will scale and grow this program and ultimately achieve the goal of a more diverse Drupal.

If you’d like to learn more about the program, please visit www.drupal.org/discover-drupal.

We would love your help to support bringing our current cohort of students to DrupalCon in 2022 to meet with potential employers. Your support will help ensure we can continue to grow this program. If you are interested in being a leader to create a more diverse Drupal community by becoming an individual supporter, you can donate today.

You can still become an organization sponsor for the 2021 program year to help get our students to DrupalCon next spring or express your sponsorship commitment to keep the program growing for 2022! Contact me at [email protected] to learn more.

Jun 29 2021
Jun 29


Credits & Thanks

Thank you to:

About the RobotsTxt module

The RobotsTxt module is great when you are running multiple Drupal sites from a single code base (multisite) and you need a different robots.txt file for each one. RobotsTxt can generate the robots.txt file for each and gives you the ability to edit on a site by site basis from within the Drupal admin interface.

Volacci uses this module to make changes to the default robots.txt because it is not completely optimized for SEO.

Before installing the RobotsTXT module, you’ll need to delete or rename the existing robots.txt file in the root of your Drupal installation. The module will not work properly until this is done.

  1. Install and Enable the RobotsTxt module on your server. (See this section for more instructions on installing modules.)
  2. Go to the Extend page: Click Manage > Extend (Coffee: “extend”) or visit https://yourDrupalSite.dev/admin/modules.

    installing and enabling the robotstxt module in Drupal

  3. Select the checkbox next to RobotsTxt and click the Install button at the bottom of the page.


If necessary, give yourself permissions to use the XML Sitemap module.

  1. Click Manage > People > Permissions (Coffee: perm”) or visit https://yourDrupalSite.dev/admin/people/permissions.
  2. Select the appropriate checkboxes for "Administer robots.txt".

    setting the robotstxt module permissions

  3. Click the Save permissions button at the bottom of the page.

Adding the XML Sitemap to your robots.txt file using the RobotsTxt Module

Note: If you do not use the RobotsTxt module, you’ll need to do things the old-fashioned way. Skip to the next section for information on how to make changes to your robots.txt file.

  1. Click Manage > Configuration > Search and metadata > Robotstxt (coffee:robots) or go to https://yourDrupalSite.dev/admin/config/search/robotstxt in your browser.  
  2. Put your cursor within the Contents of robots.txt window and scroll to the bottom of it.

    editing your robotstxt file text in the Drupal interface

  3. On a new line, add this to the bottom of the field:

    sitemap: https:///sitemap.xml

  4. Click the Save configuration button at the bottom of the page.

Adding the XML Sitemap to your robots.txt file without a module

  1. Download your robots.txt file. One way to do that is to visit https://yourDrupalSite.dev/robots.txt in your browser and select File > Save Page As... from the browser’s menu.

    downloading your robots.txt file within a browser

  2. Using a text editor like Notepad or TextEdit, open your robots.txt file.

    Avoid complex word processing programs to edit this file because they will add invisible markup that makes the file unusable by crawlers.

  3. Add this line to the bottom of your robots.txt file and save the file:

    sitemap: https://yourDrupalSite.dev/sitemap.xml

  4. Here’s what Volacci’s robots.txt file looks like.

    Note: You will always want to use the https version of your site because not doing so will impact your SEO rankings. Contact your web developer or hosting company to make sure your site has an SSL certificate and that your site defaults to the https protocol.

  5. Upload the new file to the root level of your Drupal site, replacing your existing robots.txt file. If you don’t have FTP access, ask your developer or hosting company to help you.
  6. Verify that you did it properly by visiting https://yourDrupalSite.dev/robots.txt, refresh the page, and look for your changes.

That’s it! Now, any other search engines can find the location of your XML sitemap by visiting your robots.txt file.

Jun 29 2021
Jun 29

As a developer, how often have you had marketing or SEO folks come up to you and say “The website is not SEO optimized. Can you please fix it?”.

While we all know the role of SEO in ranking a website on a search engine, a developer in particular should know that he/she plays an equally important role in helping the SEO team perform better.

Gone are those days when an SEO team used to fill a page with keywords and rank higher. Now, it takes effort from both the development team and also the SEO team to come together and create a compelling user experience on a website.

In this blog, let’s look at some of the technical aspects of SEO and why a developer should know about them.

Technical SEO

Let’s Understand Crawling & Indexing

It is important to have an idea about how web crawlers crawl the content on the internet and then index the same, in order to display in the search result. Crawling refers to the process where the bot/crawlers visit new and updated pages on the internet, to be added to their index. Once a page is crawled, the data is collected and stored in order to facilitate accurate & quick information retrieval.

This diagram below gives a quick overview of how Google finds a new URL and what are the next phases and how each phase leads to finally indexing the page on Google and displayed in the search result.


URL Sources: This is where a crawler starts. The new URLs or the updated ones are found through Sitemaps or also from various links on other pages.

Crawl Queue: Once the URLs are listed, they are prioritized & then added to the crawl queue. This list has all the URLs which are to be crawled by Google.

Crawler: This system basically grabs or reads the content of the pages.

Processing: These systems take care of the canonicalization, and ensure that the pages that are crawled are sent to the renderer, and the pages that are rendered are moved forward for indexing.

Renderer: This is where a page is loaded like how a browser would. Google needs to understand or see how a page looks like, from a user’s perspective. At this point, Google can see what most users can.

Index: As the pages are crawled and rendered, they are stored to be displayed to the user.

Robots.txt: Rules for site access

A Robots.txt is a straightforward plain text file, with certain rules. The purpose of this file is to tell/instruct search engines bots/crawlers which URL can they access on this site. The crawl instructions are in a specific way to “disallow” or “allow” the behavior of the user agent (crawlers)

For example: 
This instruction specifies that the msnbot should not crawl any URL on the website:

User-agent: msnbot
Disallow: /

This guide from Google is an excellent reference for various types of instructions on Robots.txt

Mobile First Indexing

Google has always been working on returning accurate and relevant search results for all the queries on the search engine. On top of everything that Google has worked on, sits “mobile-friendliness”. Starting from 2015 when mobile friendliness became a factor for ranking in search results, and then in 2018, when mobile speed became a ranking factor, Google has always given this a priority.  

And as of 2021, Google plans to switch all of its sites on the web to mobile-first indexing. This indicates that Google will predominantly start using the mobile version of a website’s content for indexing and also ranking on the search results. Developers know what this means for them!! 

While Google recommends taking number of steps to ensure that a website is optimized for mobile devices, the top three which are to be considered are: 

  • Responsive design
  • Mobile page load time
  • Structured Data

Google offers amazing tools to check if a website is mobile friendly. On top of that, Google Search Console also is an amazing platform to check on various mobile related errors for the site and staying on top of it.

Structured Data

Information + Organized = Organized Information = Structured Data

Structured Data, in a general sense, is an organized way of presenting information about a web page. Let us compare the two search results on Google.

Rich Snippet

The first one is a simple link with some meta description. The second/bottom result has much more information and is what we call as a Rich Snippet. This information compels a reader to click on this link to find more.

One thing which we should know is that Structured Data does not directly contribute to a website’s ranking on Google. Structured Data is NOT one of the ranking factors. However, it offers various benefits that can help a site in ranking better.

Google provides an amazing list of various types of schema markups which can be used, depending on what type of information you have on your page.

Other Factors

While I’ve covered only a couple of major technical SEO factors which help a developer in building an optimized website, there are few more which are absolutely necessary. Some of them include:

Meta Tags: Meta tags help a search engine in identifying the key aspects (meta data) of a page and plays a major role in search result ranking.

URL Structures: URL structures is one of the most underrated factors when we talk about SEO. URLs need to be simple, easy to understand and less cluttered.

Sitemaps: Like we discussed earlier in this article, sitemaps help search engine crawlers to identify all the pages on a website.

Image Alt Tags: Another underrated factor in SEO, image alt tags provide context to what an image is displaying, helping the crawlers understand the content on the page better.

Traffic tracking: There is absolutely no use in optimizing the website if you are not tracking your progress and improving upon it. For that, tracking the traffic on the website and understanding the behavior of the users on a website becomes important. Tools like Google Analytics & Google Search Console provide a pretty good insight on the website traffic.

Jun 24 2021
Jun 24

Droopler offers the ability of building a professional webpage using ready-made visual components. This website builder can also be customized to your individual needs. In the text below, we’ll present some examples of pages created with Droopler.

Meet Droopler - a Drupal distribution

Droopler is a Drupal distribution – the version of this content management system extended with add-ons that are configured in such a way as to meet the business objectives of the web page right after installation. Thanks to utilising modules such as Paragraphs and Geysir, it can be used as a page factory, e.g. for landing pages promoting products or for various language versions of a company website. Other advantages are the built-in SEO support and the appearance of the pages adapted to mobile phones and tablets.

What are the benefits of choosing the right distribution? There are many of them, but the most important ones are the following:

  • you don’t have to browse, select and install every module separately, which shortens the time needed to build a page, and it also starts to earn money faster;
  • its further development or modifications are possible to perform; you can do some changes by yourself, whereas Drupal developers can help you implement individual solutions.

In the case of Droopler, another advantage is the ability to use a wide range of paragraphs (because that is another name for components). You can learn more about them in the documentation of this tool. Below, we present the use of these elements on examples of specific pages.

Portamet - photos catch the eye

The website of Portamet, a company operating in the carbon steel and glass products industry, uses many of Droopler's visual components. When browsing this site, it's impossible to ignore the paragraphs devoted to individual projects, business solutions and realizations. The page’s author used the Tiles Paragraph component, thanks to which you can put text on one side of the screen and photos on the other. Such a solution catches the eye. Moreover, when you hover the mouse cursor over a graphic element, its title is highlighted, and when you press it, a larger view opens. Then if you want to present your portfolio in an attractive way, it’s worth taking a look at the Portamet website and see the solutions used there.

On the Portamet website, we can see the Tiles Paragraph component from Droopler

Source: Portamet

EKO-HOME - products’ showcasing

Still on the subject of presenting one's own offer, the author of the page of EKO-HOME - a manufacturer of external roller shutters and gates - in addition to the already mentioned Tiles Paragraph, used several other components. The Sidebar Image Paragraph deserves particular attention. It highlights a single photo, next to which there's a space for a description.

The element Sidebar Image Paragraph visible on the EKO-HOME website built with Droopler

Source: EKO-HOME

At the bottom of the page, you can see logos of the company's partners, presented in an interesting way. Instead of a static list, there's a dynamic presentation within which the graphic elements move automatically. You can also scroll through them by pressing the arrows. Such an effect can be achieved using the Carousel Paragraph.

An interesting usage of the Carousel Paragraph in the section with partners' logos on the EKO-HOME website

Niewczas Strawberry Plant Nursery - customized use of Droopler

We’ve already mentioned photos, now let's start with a movie. The strawberryplant.eu website, belonging to a company dealing with professional strawberry cultivation, uses the Sidebar Embed Paragraph with a video in the About us section. To upload a video from YouTube or Dailymotion, you just need to copy the iframe code to Droopler.

The website of Niewczas Strawberry Plant Nursery uses the  Sidebar Embed Paragraph with a video

Source: Niewczas Szkółka Sadzonek Truskawek

Another ready-made Droopler solution used on this page is the Counters Paragraph. It's an attractive form of presenting numbers that are meaningful for the company. The most important thing is that they appear dynamically.

The Counters Paragraph component from Droopler used on the strawberryplant.eu website

The Side By Side Paragraph also looks very nice. This component allows you to achieve the effect of several alternating blocks of text and graphic elements.

The Side By Side Paragraph component from Droopler is perfect for the alternating blocks of graphic elements and text


This highly attractive website is also an example of extending Droopler's capabilities with the help of a developer. The next paragraphs appear as you scroll down the site while browsing the home page. On the other hand, the subpage with the offer, besides of the blocks with graphic elements, attracts attention with the filtering option. The result is a narrower display of these blocks. There's also the Blog section with a very clear content layout and visible extracts of articles.

We encourage you to spend some time on this page, because it can be a unique inspiration for creating your own site.

Be Happy Music Club - video as the most important part of the page

In the previous example, we started with a movie, now we'll do that again, but a bit differently. That's because a video fills the entire Banner Paragraph on the home page of Be Happy Music Club - an organisation whose mission is to improve the well-being of disabled children and to promote social integration through music programmes. Probably due to the noble objectives of the site, the video was put at the beginning, and the slow-motion playback successfully strengthens the effect and attracts attention.

The video in the Banner Paragraph plays a main role on the Be Happy Music Club website, built with Droopler, a Drupal distribution

Source: Be Happy Music Club

We haven't yet covered the Gallery Paragraph, which appears below. Of course, the number of photos in this component is unrestricted, and in the case of this page the authors also added a button. We mention it because, depending on individual needs, it's sometimes worth including such a call to action under the presentation of graphic elements.

The Gallery Paragraph component with three photos, texts and a call to action button

At the bottom of the page, we can see the Counter Paragraph we already know, although in a narrowed version (yes, you can define the number of individual counters).

The Counter Paragraph on the Be Happy Music Club website created in Droopler, a Drupal distribution

We'd also like to highlight the Our People section and go back to the subject of photos. Not only the Gallery Paragraph, but also, for example, Text Blocks can be used as a component for team presentation (and not only). The upside is the ability to put text under the selected photo.

The Our people section on the Be Happy Music Club website, based on the Text Blocks component from Droopler

A similar procedure has been applied on the Be Happy Music Club website in the Supporters tab.

The usage of the Text Blocks paragraph on the Be Happy Music Club website


9/11 DAY - emphasised movie about good deeds

Finally, we'll look at the 911day.org website, run by a foundation that encourages doing good deeds as a tribute to those killed and injured on 11 September 2001. On the home page, the video is even bigger than in the previous example. It even overlaps the menu, which is separated by a thin line, which delimits two zones, gives the impression of order, and the whole thing is visually attractive. Thanks to the two visible buttons, the user can go from this place to the subpages they are interested in.

A big section with a video on the 911day.org website, built in Droopler

Source: 911day.org

Also worth noting is the custom search engine for volunteer work options, which can be searched by keywords and location.

The search engine for discovering volunteer work options on the 911day.org website. You can search using keywords or location.


Of course, it's also integrated with a payment gateway.

Integration with a payment gateway on the website created in Droopler


911day.org is an interesting example of a website built on Droopler that only gets traffic during certain periods of time. If you are interested in how to set up a website so that it works properly in such conditions, we encourage you to read the article on how to prepare your site for the occasional spikes in traffic.


Droopler is a Drupal distribution that - as you can see in the examples above - is flexible and non-limited. With its help, you can create your site based on the existing paragraphs, and additionally use Drupal modules that meet specific needs. Did you like the examples of pages in this article? If so… #MeetDroopler.

Jun 24 2021
Jun 24

If you have a Drupal 7 site, the time to upgrade to Drupal 8 (believe it or not) has passed.

Now, that's not to say it's impossible to upgrade from Drupal 7 to Drupal 8, because technically you could, but, for all intents and purposes it would be a waste of time, effort and money.

Drupal is in a unique situation, or should I say the versions of Drupal, are in a unique situation as it is the only time when an earlier version of Drupal is supported longer than the later versions of the same program/platform.

Why you ask?

Well, it was decided, given the substantial differences between Drupal 7 and more recent Drupal versions (8 and 9), along with the complications of a worldwide pandemic, that organizations should be given more than ample time to prepare for such a significant move.

Which leaves many, perhaps you as well, asking why even upgrade from Drupal 7 right now to Drupal 8 or Drupal 9? Why not just stay at Drupal 7 if everything is working perfectly?

Thankfully, the answer to both is relatively simple… after the end date of official support for Drupal 7, in November 2022, there will be no more official releases (either in terms of upgrades to existing modules, core or security updates). Which means that if you need any new features added to Drupal 7, they will be features your own developers will have to implement for you, as well as maintain for you in terms of compliance - which is not ideal for any application (no matter what it's built with).

There are of course options for sticking with Drupal 7, and of course, drawbacks that come along with it. Pretty significant ones actually.

One option is that your organization could choose to develop a relationship with one of the few Drupal specialist agencies who have been certified to deliver long-term support (LTS) to clients wishing to remain on earlier versions of the Drupal platform. However, since there are such few organizations available, given the large amounts of resources necessary to monitor an entire platform along with all its modules, the market for available LTS providers is very small. Minuscule, in fact, compared to the developer base available to current versions of the platforms.

Another important aspect for organizations to consider with Drupal 7 (or heaven forbid Drupal 6) is if the platform contains custom modules. Any custom modules will need vulnerability testing on a regular basis and the aforementioned items, along with a laundry list of items not mentioned for the sake of brevity (and prevention of boredom). These will make the decision to utilize an LTS provider an option to remain on the Drupal 7 platform (and even the Drupal 8 platform, shortly) a less than ideal option. Not to mention an extremely expensive one, accompanied by an extremely limited base of Drupal companies capable of providing LTS services.

There are also the more obvious considerations to take under advisement.

For example, all of the new features being built for Drupal which make the platform not only easier to use, from both the administrative standpoint and also the user standpoint. An organization with a Drupal 7, or lower, instance which wishes to employ certain features will not be able to obtain those features simply by adding and wiring an existing module into the Drupal site. Instead, such features will have to be built from scratch (so-to-speak) into the existing Drupal 7 or lower project.

In fact, most organizations, even if they could afford to have an LTS Drupal agency provider build the features for them, would quickly find the worth of those features diminishing significantly over time – perhaps, even before the newly-requested features had been completed. All in all, it makes significant financial sense to put an organization's resources into later versions of Drupal.

Thinkbean's Drupal 9 Readiness Audit

Which, if you're still reading, should be relatively obvious at this point.

Assuming the above facts make sense, and have convinced any Drupal 7 application owners reading this to perform the Drupal 7 to 8 or 9 upgrade, the next matter to consider is whether the move should be made to Drupal 8 or Drupal 9.

Which, as we mentioned previously, is a pretty easy decision considering the fact that Drupal 8 is going to be End of Life (EOL) this year - before Drupal 7. Which brings us to the main point of this post, which is that if you are in any version of Drupal other than version 9 at this point, the best thing to do is to go straight to a Drupal 9 upgrade.

Anyone suggesting moving to Drupal 8 and then to Drupal 9 (unfortunately) does not know Drupal.

To explain this further, because it's a question we do receive often, there is no actual need to proceed sequentially. In other words, one does not need to move from Drupal 7 to Drupal 8… and then from Drupal 8 to Drupal 9. The same results (in fact, more efficient results) can be had with a Drupal 7 to 9 migration.

Reason being that if you upgraded from Drupal 7 to Drupal 8 then you would be almost immediately upgrading from Drupal 8 to Drupal 9 and while the move from Drupal 8 to Drupal 9 is a ripple in the pond compared to the ocean of difference from Drupal 7 to Drupal 8 (or Drupal 9). So a word from the wise, any Drupal agency, or developer, suggesting the move must be completed sequentially should be removed from the list of potential candidates for the job.

Another benefit of moving from Drupal 7 to 9 is that it extends the EOL of the then-upgraded project significantly, meaning that, once you are on Drupal 9 the move to future versions will be a piece of cake compared to this current jump.

Now that we have established the facts that the upgrade from Drupal 7 is in fact something you need to consider sooner than later, and the fact that the move does not need to be sequential, we can focus on the Drupal 7 to Drupal 9 migration itself.

First and foremost, it's important to understand that the move from Drupal 7 to the newer versions of Drupal is a significant undertaking – an undertaking which should not be attempted by anyone other than an agency whose sole focus is Drupal.

For reasons as simple as debunking rumors you may have heard, like the fact that it may be wiser to wait to move from Drupal 7 to later versions because later versions are making the move easier to accomplish. Which we will be the first to tell you is absolutely untrue.

The fact is, Drupal 7 (and earlier versions) are based on an entirely different set of technologies and require significant investments in time, effort and energy to accurately determine the resources required to be dedicated to the upgrade from Drupal 7 to later versions.

In fact, when the move to Drupal 8 was announced years ago, a significant amount of the Drupal development community were dismayed to find extensive resources would be required to both fully understand both how the newer platform operated and also that an entirely new platform and technologies had to be learned in order to be successful.

Drupal itself however realized the changes were necessary in order for Drupal to not only remain relevant among potential web platforms, but were necessary in order to outpace other potential platforms. And the more far-sighted Drupal development agencies, like Thinkbean, also quickly realized the move was not only intelligent and insightful… but necessary for future growth.

And while more resources would need to be invested in order to continue to develop on the Drupal platform in an efficient manner, the benefits of those the changes in the future versions ensured Drupal would not only remain a viable choice as a web platform but (potentially) become the most logical and economical choice for Drupal's target client – large, national, multi-national and government organizations.

As such, many agencies decided they were not going to pursue Drupal development to the same level as they had been, while others decided they would still offer Drupal, but as a platform among many others, thus losing their ability to truly be classified as Drupal experts.

Then there were the Drupal companies who decided they would continue to pursue Drupal design and development or who morphed into agencies which (if they had not previously done so) concentrated on Drupal, only.

And there are companies, like Thinkbean, who already were, and plan to remain Drupal only agencies.

So where does that leave YOU?

Well, this post could continue for a significant number of pages extolling the virtues of the Drupal web platform versus other web platforms…as well as the agencies capable of performing Drupal development to the same level they may have once been able to. Suffice it to say though if your organization is planning a move from Drupal 7 (or even Drupal 8) to Drupal 9 then you have made a wise decision in getting this far in your reading.

An even wiser decision to be made now would be in finding the right "Drupal only" development agency to assist with your move from Drupal 7 - and thankfully we can help make that your easiest decision yet. We welcome you to reach out to one of our expert Drupal strategists to learn a bit more about Thinkbean, and so that we can hear a bit about you and your needs as well.

We look forward to connecting.

Jun 24 2021
Jun 24

Technology has made our life super-fast and easy. Starting from shopping online to paying your bills, you can grab the world at your fingertips. But along with easy access through various applications, is technology providing you the necessary security? As security is considered a top priority that needs to be maintained due to the increase in cyber threats around the world. Unfortunately, vulnerability is seen in some of the organization's security ecosystem leading to the inability in building systematically secured software. Therefore, it is always advisable to build security in the initial stage so that no problems occur at the time of product deployment. There are various companies that do not have an approach of designing and building software based on core security principles required for the smooth functioning of applications. This article on secure software development lifecycle can be an eye-opener for all of us to emphasize the significance of building security into software development and make it the topmost priority.

The importance of security in software development

We all are aware of the fact that the information technology sector is one of the world’s fastest-growing industries. It is observed that the rate at which software and software products are progressing is many times greater in comparison to the rate at which software security is progressing. As a result, it gives rise to cyber threats and vulnerabilities. Many companies have witnessed such harmful attacks leading to damage to their brand reputation. For example, in 2011, Sony Pictures experienced a SQL injection attack by LulzSec (the hack-group), which released around 1 million user accounts, including passwords, email addresses, home addresses, birth dates, etc., which as a result violated the privacy policy of their service. HBO was attacked in the year 2017 when a hacker released a screenplay episode of a very popular TV series that wasn’t still broadcasted. The hacker also got access to financial documents, contact lists of actors and film crew, and other confidential information. In the same year of 2017, personally identifying data of hundreds of millions of people was stolen from Equifax, one of the credit reporting agencies that assess the financial health of nearly everyone in the United States.

So, all these well-known companies never expected such malicious attacks which led to heavy financial and reputational losses at their businesses. This is the reason why software security is so important for building up secured software advantageous for both its developers and users. There is a need for a secure path to production. Thus software security helps in strengthening the security posture and avoid any future cyber attacks. 

How to enhance security in Software Development Life Cycle 

It is seen that many companies have a software development life cycle (SDLC) process which produces software with the highest quality in a much disciplined and systematic way. Due to rising software security threats, it is essential to integrate security into all the stages of the software development life cycle (SDLC) to make it a secure SDLC. It is beneficial for organizations to adopt a secure software development life cycle (SSDLC) approach to reduce cyberattacks and threats. The good thing about SSDLC approach is that it is not only restricted to developers or the security team. But it can also be easily adopted by cross-functional teams to enable better security over several stages of the software development life cycle (SDLC). There is a need for Secure software development lifecycle policy that helps in providing safer software production. Having a Secure software development lifecycle policy template can help in improving security during various phases of software development. Let’s now get a better understanding of what exactly is a secure software development life cycle (SSDLC) and its various phases. 

What is Secure Software Development Life Cycle (SSDLC)?

Secure Software Development Life Cycle (SSDLC) is a process of incorporating security into the Software Development Life Cycle (SDLC). It is basically, a framework defining the complete development process of a software product also building security in all the stages of SDLC i.e. starting from the planning to the design, development, testing, and deployment stage. There is a need to follow Secure software development lifecycle standards that can support the security of software production without any further concerns. 

Here we will discuss the various  types of Secure software development lifecycle phases. Take a look below. 

5 Phases of Secure Software Development Life Cycle

Illustration with a circle describing the 5 phases of secure software development lifecycle

Phase 1: Requirement Collection and Analysis

During this phase, security requirements for the software application are established. The key security risks within the application such as functionality, type of information application being used, etc. are examined by the security experts. This phase helps in ensuring technical feasibility and providing quality assurance.

Phase 2: Design

This phase helps in building security into the design of the software application. The technical architects and lead developers create high-level design choices that meet the necessary functional and security requirements. It is observed that half of the software defects that create security problems are introduced in this stage. Therefore, the designs are reviewed in this phase to detect the software defects and solve them at the earliest. 

Phase 3: Development

In this phase, it is ensured that code is developed securely so that no security threats and vulnerabilities occur. There are generally established secure coding guidelines and also code reviews that make sure that these guidelines have been followed correctly. The code reviews can be either manual or automated using technologies like static application security testing (SAST). 

Phase 4: Testing

It is very important to test applications and software before they are made accessible to the users. Once the development process is done, the applications and software go through a rigorous testing cycle to meet the set security standards. Such a testing process helps to minimize the number of bugs witnessed by users. The tests include penetration testing, integration testing, further static code analysis, dynamic analysis, etc. 

Phase 5: Deployment & Maintenance

In this phase, the application is made available to the user after finally checking all the security controls like secure code review (static analysis), dynamic, configuration, container security, etc. This is considered as the final stage after the applications and software go through the various phases of the Secure Software Development Life Cycle to improve the security aspect of software development.

The role of DevSecOps

Let me highlight here an important term DevSecOps which automates the integration of security at every phase of the software development lifecycle. It is necessary to understand the relationship between DevSecOps and SSDLC. Both the practices support each other in delivering the best services for enhancing security. They make sure that the developers are efficiently performing their tasks and going the extra mile to meet functional specifications apart from only spending time in writing and testing their code. DevSecOps represents a natural and essential evolution in the way companies approach security towards software development. It focuses on empowering the developers by giving them ownership of the production environment of applications from traditional IT teams. This further helps the developers to prioritize automating build, test, and release processes.

From the beginning of the development cycle, DevSecOps introduces security processes. The code is reviewed, audited, scanned, and tested for security issues throughout the development cycle. The issues are addressed at the earliest once they are identified. The DevSecOps practices also help in reducing time in resolving vulnerabilities and lessen the workload of the security team allowing them to prioritize other important tasks. 

“The purpose and intent of DevSecOps is to build on the mindset that everyone is responsible for security with the goal of safely distributing security decisions at speed and scale to those who hold the highest level of context without sacrificing the safety required,” describes Shannon Lietz, co-author of the “DevSecOps Manifesto.” More on DecSecOps here.

What SDLC model is proposed by OWASP

One more way to provide security is through the OWASP Application Security Verification Standard (ASVS) Project. This facilitates a basis for testing web application technical security controls, further providing the developers the list, necessary for secure development. During the SDLC cycle, OWASP provides security in the following ways.

The Planning or requirement stage

This particular process tries answering the following question, “What is the system going to do?” During this stage, the SAMM project provides 3 specific maturity levels including both in-house software development and third-party supplier security.

Illustration with a table divided into three sections describing the first stage of Secure Software Development lifecycle    Source: OWASP

This is the best way to provide security at the start of the Software development process.

Design Stage

After the requirements are gathered then the execution specifics should be described. This stage depicts a diagram tracing data flows and common system architecture. The threat modelling can be practiced in this stage for better security. The concept of threat modelling will be discussed shortly, in the following paragraphs. 

Development Stage

This step is very important as both the decisions and assumptions made in the previous stages will be examined. At this stage, the SAMM offers the following generic implementation considerations.

Illustration with a table divided into three sections describing the development stage of Secure Software Development lifecycleSource: OWASP

Testing Stage

This stage helps in validating software correctness and its an outcome for enhancing security-related decisions of all the other stages. Both manual and automated testing can be done in this stage. SAMM provides three maturity levels across Architecture Reviews, Requirements testing, and Security Testing.

Illustration with a table divided into three sections describing the testing stage of Secure Software Development lifecycleSource: OWASP

Release Stage

This is the final stage of the software development life cycle. The ModSecurity Core Rule Set is used efficiently to detect and block several attacks. In this, SAMM offers a section on incident management, where simple questions are asked to the stakeholders to help one determine incident preparedness appropriately. 

Illustration with a table divided into three sections describing the release stage of Secure Software Development lifecycleSource: OWASP

For better understanding, you can refer to a book named, “The Security Development Lifecycle: SDL: A Process for Developing Demonstrably More Secure Software (Developer Best Practices)” by Michael Howard and Steve Lipner.” This book mainly talks about the practical history of the SDL, and lessons to help you implement the SDL in any development organization. 

Secure software development lifecycle best practices

Now, I would like to discuss a few practices which are adopted during the early stages of the Secure Software Development Life Cycle (SSDLC) to improve security. Take a look below:

Threat Modelling

Threat modeling is a process that is carried out in the development phase to safeguard the software application from cybersecurity threats and vulnerabilities. This technique helps in understanding how an attacker makes targets, locates entry points, and conducts attacks which further allows the development team to build up strategies to protect software and applications from any such potential threats and damages. It should be performed in the early stages of the software development life cycle as this enables the organizations to integrate security requirements into the design and implementation procedure. The adoption of this practice reduces the workload of developers as the potential issues are identified at an early stage allowing them to not struggle between meeting the software delivery deadlines and deploying a secure product to the users. 

Architectural risk analysis

Architectural risk analysis is a technique that helps in identifying the threats and vulnerabilities during the design phase of the software development life cycle. This process includes the identification and evaluation of risks and risk impacts. It also helps in recommending risk-reducing measures. Architectural risk analysis studies threats and vulnerabilities that may be malicious or non-malicious in nature. With this process, the developers can analyze a software system from its component level to its environmental level to evaluate the threats and vulnerabilities at each level. 

Attack trees

Attack trees provide a procedure to examine security controls, strengthen them, and respond to changes in security. Security can be considered as an ongoing process and attack trees are the basis of understanding the security process. Through a graphical representation that is easily understandable, the attack trees help to recognize the various ways in which an information system can be attacked and build countermeasures to prevent such attacks. Since this approach is used to design, implement and measure the attack, it can be considered as a practice conducted in the design phase of the SDLC.

Secure software development lifecycle training to developers 

It is important for the developers to receive proper training on developing secure software and applications. The organizations can support the developers to build software applications while maintaining the security aspect with the following easy practices.

Providing practical experience. It will be beneficial to give practical examples which will encourage the developers to experience real-life scenarios rather than mere theoretical knowledge in terms of security training.

Availability of relevant courses. It will interest the developers to learn from examples and case studies matching the technology and platforms that they are currently using. This will make them learn things better and in a much more convenient way.

Guidance through online training. Through e-learning courses, the developers get to participate in security training according to their convenient time. It gives a good opportunity to learn complex material which can be reviewed by the developers whenever they want. 

Incentives facility. The developers can be motivated by offering incentives after every course or series of courses. 

Adopting open source is a great way of making sure security at all stages of software development. To know more, read the complete guide on open source security. To see an example, learn how you can incorporate secure SDLC in Drupal development.


As we all know that security is an ever-evolving process. Therefore, a progressive organization cannot survive without getting serious about security, and the most convenient way to get serious is to integrate a secure software development life cycle into their work. Starting from requirements to design, coding to test, and finally till deployment of products the SSDLC tries to build security into a software product or an application at every step in the development process. Even though every organization will have its methodology to support software security, the approach should be effective in nature.

Jun 23 2021
Jun 23

For St. Vladimir's Orthodox Theological Seminary in Yonkers, N.Y., the migration of a Drupal 6 website built in 2010, to a redesigned Drupal 8.9 site that's positioned to seamlessly migrate to Drupal 9, stands to drive the next phase of the institution's growth and global impact. 

Keys goals for the new site:

  • Intuitive, streamlined navigation,
  • A cleaner, simpler design and UX, 
  • Greater engagement among students, prospective students, alumni, and Orthodox communities, to drive both recruitment and fundraising, and 
  • Simplified content editing capabilities that provided content editors with greater flexibility for changing layouts and creating new pages. 

The redesign and Drupal migration achieved that and a lot more. A critical success factor proved to be the deployment of Provus, which combined layout builder and flexible design component features, provided content editors with the ability to easily rearrange layouts, create new sections, and make updates -- all with the assurance that high quality designs and branding consistency would not be broken with the mixing up and switching out of page components. Provus has also allowed for drag-and-drop, no-code content editing, enabling flexibility in building and revising sections, along with functionality such as accordion components that allowed for the presentation of great lengths of content in a compact, approachable format.

Read the full case study.

The new site is powerfully aligned with St. Vladimir's Orthodox Theological Seminary's goals for fundraising, recruitment, connecting, and community building and that's a function of many factors that include navigation that’s closely aligned with the needs of specific persona groups, prominent calls to action to apply, donate, or subscribe, as well as an inviting design refresh.

Commenting on the potential of the new site and the institution's experience in working with Promet, Sarah Werner, Chief Marketing Officer, St. Vladimir’s Orthodox Theological Seminary, noted: 

The discovery and design phases were fantastic. The Promet team did an amazing job of bringing our new brand to life.

Interested in web design and development engagements that can ignite transformative digital experiences? That's what we do. Contact us today


Jun 23 2021
Jun 23

The Drupal community is one of the largest open web communities in the world. Moreover, the Drupal community has a diverse and inclusive culture across every department. Drupal is an Open source platform, and we welcome other open web technologies to collaborate. For example, inclusion of the JSON API into Drupal core and new Decoupled menu initiatives which use a JavaScript framework, we invited developers who would like to use Drupal as a back end while also providing user-editable menus.


Photo source Twitter

In other words, the Drupal community is fantastic because of the significant contributions made from gem volunteers from around the globe. It includes everyone, irrespective of their ethnicity, gender, language, religion or any other background. They are willing to contribute back to the Drupal community with Code and other community contributions alike. And also the impact of Drupal on an individual's Life and changing stories. 

View Angie Byron's intervention

Angie Byron - Tales of Drupal Past: Origin Stories of Drupal Contributor

So, the Open Web and Community track, we encourage everyone from any open-source/open web technology to submit technical or non-technical sessions.


Contact: RakeshJames, rakesh.gectcr, Track Chair Lead Open Web & Community 

Jun 23 2021
Jun 23

As we kick off our outreach for the upcoming Fall 2021 session of Drupal Career Online, (our 10th year!) we can’t help but marvel, with a bit of pride, as we reflect on how cool it is that our small company has such a big-impact program for people who want to become part of our ever-impressive open source community. We’ve served stellar students, continue to have fantastic collaborations, and through it all, our Drupal Career Online program has grown, gotten better and attracted new Drupal talent to the community every one of the 10 years we’ve been presenting it. But this year, things look even brighter thanks to the insight of some Drupal Community shining stars!

We’ve always relied on our mission to provide a clear path forward for students, ensure we teach only best practices to give anyone who enrolls in Drupal Career Online a solid foundation for their career and to serve the Drupal Community. We’ve refined our application, extended the course, continuously update our curriculum and materials and built an active DrupalEasy learning community. We even earned and continually maintain an annual license as an Institution of Higher Education from the Florida Department of Education, Commission for Independent Education

But now, we are about to get exponentially better, and hopefully help make the Drupal Community better as well! This year–as a fitting crescendo to our 10 Year Anniversary–we are super excited and honored to have more than half of our seats for the Fall 2021 Session of Drupal Career Online reserved, and tuition underwritten, by insightful organizations in our community who are stepping up to diversify Drupal. The stars of this effort, Palantir.net, Bounteous and the Drupal Association through Discover Drupal, have partnered with us to help bring in, train up, and employ individuals to help bring about a more diverse, equitable and inclusive Drupal community.  

We are so proud to be working with amazing individuals and organizations on three insightful efforts that, by promoting diversity, will make the community better and enable more innovation and growth. The last time we were this excited about how our program could serve the Drupal Community was 10 years ago when it launched, and this is even more awesome in that it is all Drupal Community members who are making it happen.  We are star-struck; major support for new talent development guided by Diversity, Equity and Inclusion. Yay!

Palantir.net is making available Palantir Fellowships that include tuition and stipends for two qualifying individuals during each session of Drupal Career Online.  Palantir is also providing need-based stipends, mentors, and internship/entry level positions to successful candidates with backgrounds and perspectives frequently underrepresented in the technology industry.  The Palantir Fellowship is designed to offer the support and resources to help up to four individuals per year become successful professionals who add to the culture of their organization and the Drupal community.  Palantir created their program as an ongoing, sustainable effort to provide comprehensive Drupal career preparation, meaningful support and hands-on experience.   

Bounteous is making available a Drupal Career Online Scholarship to an individual who is part of one of several historically underrepresented groups in tech so that they may become part of the Drupal talent pipeline and their team. Bounteous will provide the mentor for the awardee, as well as an internship and potential position on the Bounteous staff.  The program is part of invigorated efforts at Bounteous to focus its recruiting efforts on those that promote diversity, equity and inclusion. 

Finally, as part of the Drupal Association's Discover Drupal program, DrupalEasy is supporting their scholarship, training and work experience initiative as a training partner (along with Evolving Web, Drupalize.me and Mediacurrent) to bring nine aspiring Drupal developers with diverse backgrounds into the community.  We are excited to host three Discover Drupal participants who were recently selected in our upcoming session, and look forward to seeing more in the future. Discover Drupal is an ongoing, community supported effort that everyone can support through donation, mentoring, internships and employment of its graduates.  It’s a way anyone can be a part of helping to diversify Drupal through talent development! Be a Star

We view Drupal training and early work experience as the access people of all backgrounds need for a solid foundation and successful career in Drupal.  We are so proud to be a part of all of these initiatives that we hope mark the beginning of a sustainable, systemic approach to diversifying Drupal that will have astronomical results in supporting growth and development of much needed new talent into our community. 

Applications for the Palantir Fellowship and the Bounteous scholarship will open soon, and we will be providing detailed information and links to these programs on our Drupal Career Online information pages and application as well as at our three, no-cost Taste of Drupal information sessions in July and August.  Contact us if you have a question, and look for more information to follow!

The next session of Drupal Career Online starts August 30th. Join us for a Taste of Drupal to learn more.  Have questions or want to discuss these programs? Let us know!




Jun 23 2021
Jun 23

You Might Also Like

Quicklink is an open-source JavaScript library created by Google that can dramatically speed up your site’s perceived page speed. It does this by detecting when hyperlinks enter the viewport and then instructs the browser to prefetch each link and store it in its cache. Then, when the user navigates to the linked page, the resulting page load will be nearly instantaneous. 

The Drupal Quicklink module integrates this library by exposing several configuration options while also making some sensible Drupal-specific defaults (such as not fetching links to admin pages, AJAX links, etc.). 

The Quicklink module’s first stable version was released in April 2019. Since then, the Google ChromeLabs team has released a new version of the library with several new features and bug fixes.

New features

Various hosting companies will sort you into a paid tier depending on how many page requests are made for the HTML document. In its default configuration, the Quicklink library can cause these requests to increase dramatically. Quicklink 2.0’s new features allow you to control better how links will be prefetched.

  • Request limit - this ensures that the page will only prefetch up to the configured amount of links. Added onto this is a delay, which sets the minimum amount of time that a link needs to be within the viewport before it can be fetched.  Both of these options will decrease the number of requests to the host.
  • Concurrency throttle - this limits the number of concurrent prefetches. This is useful if Quicklink is configured to prefetch pages for authenticated users because it can help ensure that the origin server isn’t overwhelmed with requests.
  • Idle timeout value - this sets the minimum amount of time that the browser needs to be idle before initiating prefetches. Increasing this from its default value can also decrease the number of requests that Quicklink initiates.

Additional features

The new version of the Quicklink module also includes a very useful feature to ignore configured selectors. This is effective if you want to prevent Quicklink from prefetching links within a certain block, view, or page.

Polyfill now disabled by default

The Quicklink module contains an option to load a third-party JavaScript polyfill so older browsers can support the Intersection Observer API. Without Intersection Observer, the 1.0 version of the Quicklink library would fail and potentially break other functionality within the bundled script. However, this is now resolved and coupled with the fact that all modern browsers support Intersection Observer,  we now disable the option for the polyfill on new installations.

Testing coverage

All of the new features (and most of the old features) are now covered by Nightwatch functional JavaScript tests. Warning: writing tests can be slightly addicting because of the warm fuzzy feeling that comes knowing that regressions will now be much more difficult to introduce.

You can view Quicklink’s tests here. In the example below, you can see that I’m ensuring that specific links are not ignored. Then I’m verifying that the configuration passed into the Quicklink library matches what comes from the module’s administrative UI.

Please note: the Quicklink module’s test coverage doesn’t actually verify that the links are prefetched but rather tests that the data passed into the API matches what was entered into the user interface. 

      // Verify that the following custom selectors are currently prefetched.'
      // Verify "Override Parent Selector" is default.
        function () {
          return drupalSettings.quicklink.quicklinkConfig.el === document;
        (result) => {
          browser.assert.ok(result.value, 'Verify "Override Parent Selector" is default.');
      // Verify "Override allowed domains" is empty.
        function () {
          return drupalSettings.quicklink.quicklinkConfig.origins === false;
        (result) => {
          browser.assert.ok(result.value, 'Verify "Override allowed domains" is empty.');

Beta release and roadmap

Quicklink 2.0.0-beta1 is available right now and is being used here on Lullabot.com.

The next step in the roadmap is to update the Quicklink documentation and make sure that users don’t report any regressions. Once that is complete, a stable version will be released for Drupal 8 and 9. Also coming soon is a 7.x-2.0 release for the Drupal 7 version of the module.

Try Quicklink now!

The Quicklink module has very logical defaults, and for most websites, it can be installed and used without any additional configuration. For more information on Quicklink, see our Introducing the Quicklink Module for Drupal article, as well as Quicklink’s documentation on Drupal.org.

Jun 23 2021
Jun 23

The digital agency sector is wide and diverse, spanning many different disciplines and services, but all share a common goal - to deliver transformational digital projects through innovation and best practice. The Agency & Business track is a staple of the DrupalCon program where agency owners and teams can share ideas, learn new skills and collaborate to advance standards in leadership, project management, quality assurance, sales and marketing and digital services.

Photo by Michael Cannon


Shared learning and actionable insight

Digital agencies are, with few exceptions, businesses that operate in a competitive market and compete for clients and projects. Coming together at DrupalCon is a unique opportunity for agencies to put community before competition in order to advance standards, develop skills and drive innovation.

The DrupalCon Agency & Business track has become famous for:

  • Agency owners sharing the latest thinking on leadership and building a winning culture within the agency business model.
  • Project management professionals illustrating critical skills and lessons in agile delivery through real world examples, not just when things have gone well, but when things go wrong too!
  • Agency teams demonstrating how to advance quality assurance and open standards
  • Sales & marketing experts showcasing how to create a point of difference in digital services and craft marketing messages that resonate.

Inspiring Stories

One of the most notable aspects of the Agency & Business track is insight from the teams behind some of the most successful digital agencies. Bringing together experts and senior executives from the agency world, DrupalCon is as famous for inspirational stories and ‘non technical’ insights as it is for code and programming skills.

Examples of previous Agency & Business Track sessions include:

  • Agency Leadership
    • Successfully Managing Distributed Teams
    • The Ten Ways of Trust
    • Drupal Agency Partnerships: Stronger, Together
  • Project Management
    • My first Drupal Project as Junior PM
    • "Flattening the Curve" with Lean Software Delivery
    • Happier teams & clients with better PM – how we improved our PM process to make our lives easier
  • Quality Assurance
    • Automated advanced visual regression testing
    • Understanding Automated Tests in Drupal
    • Utilizing the QA Engineers Throughout the Whole Project Lifecycle
  • Sales & Marketing
    • What is between agencies and freelancing?
    • Value Mapping: Communicating the Benefits of What You Do.
    • Creating more value with Drupal by offering it as a DXP

The Agency & Business track covers a wide spectrum of topics and issues so we are keen to hear from anyone working for or with a digital agency.

Lead by Example

If you want to share your insight and showcase your leadership within the agency world, we want to hear from you. We are calling on digital agency teams to submit their session proposals by the 28th June 2021. Are you a:

  • Digital agency owner or leader
  • Project management professional and team
  • Quality assurance expert
  • Sales & marketing specialist

If so, help us to make the Drupal community the most innovative and dynamic environment for digital agencies and submit your session today.

Submit your sessions now and help make DrupalCon Europe 2021 the best yet!

Contact: Will Huggins, zoocha-will, Track Chair Lead Agency & Business

Jun 23 2021
Jun 23
[embedded content]

Don’t forget to subscribe to our YouTube channel to stay up-to-date.

In Drupal, content is stored in the database. Views is a query builder that allows the user to extract content from the database and output it in various displays such as tables and lists. With Views, the user does not have to know or write any SQL queries. If you want to create a page or block in Drupal that lists any kind of content based on different filter criteria, you should use Views!

In this tutorial, we will explain what Drupal Views are and how to create it. We will also demonstrate some simple customizations such as page settings, filters, sorting, display options, exposed filters, permissions, creating a View Block and creating an admin page using Views. By the end of this tutorial, you will know how to create and customize a Drupal View.

Drupal Views Series

Table of Contents

Getting Started

As of Drupal 8, Views already comes packaged with Drupal core so there is no need to download anything. If you installed Drupal using the standard installation profile then it’ll be already installed.

Go to Extend and make sure Views and Views UI are installed.

How to Create a View

In this section, we will walk you through the process of creating a very simple View that lists  published Articles using the teaser view mode.

First, ensure you have enough article content on your website and ensure you are logged in as the administrator. Now let’s create the View.

1. Go to Structure -> Views (admin/structure/views) and click on “Add view”.

2. On the “Add view” page, fill out the fields as suggested in the screenshot below. All we are doing here is giving the view a name, selecting “Article” in View Settings and ticking the box “Create a page”. Every other field can be left as the default for now. Click on “Save and edit” when you are finished.

Views Creation Screen – Figure 1

And that’s it! You have successfully created your View. If you were to go to “/latest-articles” you can see the output of your View.

We will now explain the major parts of the Views configuration screen. We have highlighted different sections of the Views configuration screen in the screenshot below and labelled each section with a number for easier reference and explanation.

Views Config Screen – Figure 2

Label 1 – As the name suggests, this is the title of the View. This is the text that will appear as the title of the /latest-articles page.

Label 2 – This determines the output style of the view. Frontend themers can use this to style the output by overriding the default templates provided by Views. There are also contributed modules that can extend and provide more options such as Views Slideshow.

Label 3 – This determines how each row result of the View should be displayed. Currently it’s set to “Content” which allows us to choose different view modes like Teaser or Full Content. If you want to show just specific fields of your Articles, you can change it from “Content” to “Fields”. Then, you can select the fields you want to display in Views Config Screen Label 4.

Label 4 – Based on which Format style you choose above, this section will allow you to choose the specific fields to display.

Label 5 – This section allows you to define criteria for filtering your View results. Currently we are only showing published articles.

Label 6 – As the name suggests, we can define how to sort the View results. You can also sort on your content type fields by adding them here.

Label 7 – This is the path for your View page.

Label 8 – If you want to add your View page to any of your Drupal menus, this is where you can do it.

Label 9 – In this section you can define specific permissions for who is allowed to access your View.

Customizing your View

Let’s say we want to customize our current View to display a table layout with just Title and Body fields of the Article content type. But we also wanted to allow the user to input a text string that will filter the results against the Title. We will refer to the labelling in Figure 2 to help with our explanation.

1. Update the Format (Views Config Screen Label 2). Set it to Table. You can leave the default Table settings.

2. In doing Step 1, you may notice that Views automatically added the Title field in the Fields section (Label 4). Let’s add the Body field as well.

Click on “Add” in the Field section:

In the “Add fields” popup, search for “body” and click on “Add and configure fields”.

On the “Configure field: Content Body”, you can leave all the defaults and just click on Apply.

3. Now let’s demonstrate how to allow the user to enter text into a field that will automatically search against the Title field. In Drupal Views, this is called an “exposed filter”.

To create this exposed filter, click on “Add” in the Filter Criteria section (Label 5).

Then search for Title in the next screen and click on “Add and configure filter criteria”.

On the next screen, check the box “Expose this filter to visitors, to allow them to change it”. More options will automatically become available. Make sure to set the Operator to “Contains” and then click on “Apply”.

Tip: “Contains” means Views will use the string entered by the user and execute a SQL search in the database for any string that contains the characters entered in that order, i.e., “...LIKE %usertext%...” in SQL.

4. Now that we have set the Table Format, Title/Body fields and exposed filters, it’s time to save the View. This step can be easy to miss so don’t forget it!

Now if you view the actual View page, the View output should look like this:

Create Block using Views

A View Block is just a regular Drupal block except it originates from Views.

For demonstration purposes, let’s say we wanted to create a block version of the View page we created above.

There are two ways to do this. You can either click on “+Add” or click on “Duplicate as Block”. Both options are shown below:

Once you have done that you will notice you will now have “Block Settings” instead of “Page Settings”. This makes sense since now we are dealing with a Drupal Block.

Go ahead and save your View. Once the View is saved, a Drupal block is automatically generated and will be listed alongside all the other Drupal blocks.

Place the block anywhere in your Drupal site as you normally would place any Drupal block into a region. Here is a quick video of how to place a Drupal block into a region. We placed ours in the left sidebar and it looks like this:

You will notice our exposed filter is not being displayed in our Block. There is one extra step involved if you want to get exposed filters to work in View blocks. On the View configuration screen, inside of Advanced, set “Use AJAX” to yes and save your View. Here is how that looks:

Now our Views Block has the exposed filter which looks like this:

Create Admin Page using Views

Let’s say we wanted to use the View page we created above but place it within the admin UI and only accessible to a person with elevated permissions (in other words, not anonymous users). This is a screenshot of the end result we are trying to achieve:

There are a few things we need to edit in our existing View to achieve this. All of the changes we have to make will be in the Page Settings of our View config screen (See Figure 2). We need to update three things:

  1. Label 7 – Update the Path
  2. Label 8 – Update the Menu
  3. Label 9 – Update the Access Permission

1. Updating the Path: In the Views config screen, update the Path to “admin/content/latest-articles”.

2. Update the Menu: In the Views config screen, update the Menu. Clicking on “No menu” will take you to the Menu item entry config screen. On this screen, choose Menu Tab for Type, enter a Menu link title and set the Parent to “” and then click on Apply.

3. Update the Access: We can do this either by defining the Permission or by defining the role. For this tutorial, we will define the permission. In the Views config screen, click on “View published content” and change it to “Access the content overview page”.

4. Save your View!

Now if you go to “admin/content/latest-articles” as a logged in user, you should see your View page. If you tried going to this same page as an anonymous user you should get Access Denied.


In this tutorial, we introduced you to Views and some of its potential capabilities by providing some simple customizations. We specifically concentrated on demonstrating how to create a View Page and a View Block which list published Articles and also included a View exposed filter which allows the user to enter a text string to search against the Title. We also touched on how you can create an admin page using Views by updating its path, menu and permissions.

Views, which is in Drupal core as of version 8, is a very powerful tool and can be highly configured and customized. We hope we helped in getting you introduced to Views and the potential it has.

Jun 22 2021
Jun 22

Many interesting things happened in 2001:

  • The Vatican claimed that Pokemon was safe for children
  • Pizza Hut paid $1 million to deliver a pizza to the International Space Station
  • A SuperBowl ad cost you $2.1 million  
  • iTunes was first launched

2001 is also the year that DesignHammer opened its doors — even as the technology world was dramatically shifting and the ‘dot-com bubble’ was bursting.  

“It’s not like we didn’t know what we were getting into since our prior company had been a victim of the dot-bust, but we had no idea how hard or easy it would be to try it on our own. We were fortunate in the early days to have a number of friends and clients from past business relationships join us at DesignHammer as we were learning how to run a 3-person web design and development shop.” — Managing Partner David Minton

February 2001 was probably not the best time to start a new technology venture, but co-founders David MintonRobert Weeks, and Frank Yonnetti had a plan and started by landing the internationally renowned Durham Bulls Baseball Club as their first client. Over the next five years, the three partners picked up additional high-profile clients, including RTI International, the North Carolina Department of Public Instruction, and the Chemical Industry Institute of Toxicology. The workload was becoming more than the three partners could handle, so it was time to search for a larger office space in Durham, and hire some staff. (Read more about our journey here).

Twenty years later, even in the midst of a pandemic, a SuperBowl commercial costs you a cool 5.6 million. The International Space Station is almost at the point of overcrowding, making that $1 million pizza that much more valuable. 20 years after launching iTunes as a concept, it is a stalwart among popular download and streaming services with over a billion downloads worldwide. 

DesignHammer has now grown into a full-service web agency, serving more than 200 clients and completing over 550 projects. We have done so with a talented and close-knit team of digital experts who use a collaborative development process to deliver specialized services ranging from Web StrategyDevelopment, and Design, to SEO and digital marketing Consulting. Our diverse set of clients come from a range of industries, including government, higher education, non-profit, IT, and healthcare. DesignHammer aims to provide client organizations with the best return on investment (ROI) by leveraging existing software platforms, custom software frameworks, and third-party software integrations. DesignHammer is active in the free and open source software (FOSS) community and recognized for our commitment to developing and expanding upon PHP platforms like Drupal and WordPress, while developing on most other ‘stacks’ like Scala, Python, Django, Vue, Angular, Electron, Laravel, Typescript, and more. 

The Triangle Business Journal has listed DesignHammer as a Top Graphic Design Firm and Top Internet Marketing & Design Firm in the Triangle for the last 19 years. We were also recently named a Top-Performing B2B Company in North Carolina by Clutch, a leading national ratings and reviews platform for IT, marketing, and business service providers. Our exemplary, flexible, and employee-first workplace practices ensure a healthy working environment for our team and we have been recognized as a “When Work Works” award winner since 2012.

We are excited to see what the next 20 years will hold as the company continues to expand, explore new technologies, add new partners and clients, and continue to refine our processes. Thank you to all of our current and past clients for being a part of our journey and growing with us. We are looking forward to the next decade of building smarter websites. If you have an upcoming web project, get in touch to learn more about how DesignHammer can contribute to your success.

DesignHammer 20th Anniversary Zoom

Jun 22 2021
Jun 22

The code to programmatically copy field data in Drupal 8 is pretty simple, but I wasn’t able to find any great examples for performing the operation at scale when I ran into the need myself. Hopefully the code sample below helps somebody save a few minutes of digging for solutions.

My use case was straightforward: After more than a year of continual development on a client site, new patterns emerged in how content editors utilized certain entity reference fields. It became apparent that similar relationships across different content types used separate fields with different machine names. This made it tricky to aggregate and filter content. It also led to overly complex implementations of any custom functionality based on these relationships. One thing was clear: we needed the fields to be consistent across content types.

Basically, I needed entity references stored in various older fields, let’s say field_old_one and field_old_two, to be copied into a single destination field we’ll call field_new.

Once I’d added our field_new field to all the appropriate content types via the field UI, I needed to migrate the references out of the old fields, and into the new fields. What’s the best way to do this when manual GUI changes would take too long? A hook_post_update_NAME implementation was my answer.

The code to programmatically copy field data in Drupal 8 isn’t the hard part. Assuming your source and destination field types are compatible, it’s just two quick lines:

/* @var $node \Drupal\node\NodeInterface $node */
$node->$dest_field = $node->$source_field;

It gets complicated when you need to do this on hundreds or thousands of entities. We don’t want to load, process, and save all those entities at once as that would likely bring our server down. We need to batch the operation. Implementations of hook_post_update_NAME act as implementations of callback_batch_operation — allowing us to execute a custom callback _my_module_copy_field_values across multiple HTTP requests and avoid PHP timeouts. First, we define that callback.

  * Copies the value from one field to another empty field.
  * @param array $sandbox
  * The batch operation sandbox.
  * @param string $bundle
  * The node bundle.
  * @param string $source_field
  * The source field name.
  * @param string $dest_field
  * The destination field.
  * @param int $nodes_per_batch
  * The amount of nodes to update at a given time.
function _my_module_copy_field_values(array &$sandbox, $bundle, $source_field, $dest_field, $nodes_per_batch = 20) {
  $storage = \Drupal::entityTypeManager()->getStorage('node');
  // Initialize some variables during the first pass through.
  if (!isset($sandbox['total'])) {
    $query = $storage->getQuery()
      ->condition('type', $bundle)
    $nids = $query->execute();
    $sandbox['total'] = count($nids);
    $sandbox['ids'] = array_chunk($nids, $nodes_per_batch);
    $sandbox['current'] = 0;
  if ($sandbox['total'] == 0) {
    $sandbox['#finished'] = 1;
  $nids = array_shift($sandbox['ids']);
  $nodes = $storage->loadMultiple($nids);
  /* @var $node \Drupal\node\NodeInterface $node */
  foreach ($nodes as $node) {
    $node->$dest_field = $node->$source_field; // Programmatically copy field data
  $sandbox['#finished'] = min(($sandbox['current'] / $sandbox['total']), 1);

In this case, the $sandbox variable is passed by reference to each iteration of the post_update hook. It will loop over this function until $sandbox['#finished'] == 1 — or until the current node operation is equal to the total number of nodes.

In my case, I needed to run this operation on a few different fields across half a dozen content types each with their own mappings — I’ll just use article and post in my example below. To make it a little easier, I wrote the custom callback _my_module_copy_field_values to apply updates on a per content type and field basis. Then I called it from a few implementations of hook_post_update_NAME, one for each content type.

With your custom callback _my_module_copy_field_values defined, you simply call it in your hook_post_update_NAME implementations defined in your MY_MODULE.post_update.php file. Then when you run database updates, your work is done.

 * Migrate Article field_old_one > field_new.
function my_module_post_update_8001_migrate_article_field(&$sandbox) {
  _my_module_copy_field_values($sandbox, 'article', 'field_old_one', 'field_new');
 * Migrate Post field_old_two > field_new.
function my_module_post_update_8002_migrate_post_field(&$sandbox) {
  _my_module_copy_field_values($sandbox, 'post', 'field_old_two', 'field_new');

Executing your field level changes in hook_post_update_NAME versus hook_update ensures that any schema level changes (which should be in hook_update) are completed before your content level changes — just in case you’ve got some other updates going on or are working with a handful of other developers in the same codebase.

Do you have a simpler way to do this? Feel free to share in the comments.

Jun 22 2021
Jun 22

Lynette has been part of the Drupal community since Drupalcon Brussels in 2006. She comes from a technical support background, from front-line to developer liaison, giving her a strong understanding of the user experience. She took the next step by writing the majority of Drupal's Building Blocks, focused on some of the most popular Drupal modules at the time. From there, she moved on to working as a professional technical writer, spending seven years at Acquia, working with nearly every product offering. As a writer, her mantra is "Make your documentation so good your users never need to call you."

Lynette lives in San Jose, California where she is a knitter, occasionally a brewer, a newly-minted 3D printing enthusiast, and has too many other hobbies. She also homeschools her two children, and has three house cats, two porch cats, and two rabbits.

Jun 22 2021
Jun 22

open waters podcast logo

Open Waters Podcast: Season 2, Episode 3 

In this episode, we're joined by Shane Thomas of Gatsby to talk about decoupled Drupal and how features in Gatsby make it easier to make decoupled websites using Gatsby and other CMS like WordPress or Drupal. Shane gives us insight into what makes Gatsby unique as well as some sneak peeks into upcoming features. 

Episode Transcript 

Mark Shropshire: All right. Welcome everybody to the Open Waters podcast. And today we have a very special episode. We are going to be talking about decoupled websites. We'll get into decoupled Drupal. We'll get into some Gatsby because today we have Shane Thomas of Gatsby, who's our guest today, and I'm here as usual with Mario Hernandez as a cohost. Gatsby provides development teams and open source front-end framework for creating dynamic, optimized websites and cloud platform for delivering them on a blazing fast edge network. That's a lot of words, but it all makes sense. And it sounds fantastic. So Mario, I'm gonna kick it over to you and we'll kind of start chatting it up with Shane.

Mario Hernandez: Excellent. Thanks a lot, Shrop. I appreciate it. Very excited to be on this episode two of the Open Waters podcast, season two. And thank you so much, Shane, again for joining us. We appreciate you taking the time from your busy schedule to join us one more time. I think we had you on the first season of the podcast. Tell us about your role at Gatsby today and how you became interested in the decoupled Drupal architecture.

Shane Thomas: Yeah. So I've been working with Drupal since I think 2009. And I started a little web agency doing, starting with Drupal 6 websites. So I've been working with Drupal for a long time. I used to run a website and I guess I still do, but it's not really active called codekarate.com. So I've done a lot of videos and all kinds of different content for Drupal. When I was really using it heavily. I worked at a Drupal agency in the past as well. I've been part of some startups. Then I started to really get interested in hearing about, you know, headless Drupal and decoupled Drupal. And what does it mean? And there are a lot of new JavaScript front-end frameworks that were coming out about this time. And you may have heard of static site generators that are popular and maybe pulling data from some of CMS systems like Drupal and other CMS providers.

And so that got me really interested in digging into it a little bit more. And I kept hearing at actually at Drupal camps, I kept hearing talk about this Gatsby thing. What does this Gatsby thing? And originally it was just, oh, it's a static site generator, just make all your content static. And then when I really dug into it, I realized it's not just a static site generator, it's really a React framework. So if you're familiar with React, it's it's a way to it's a JavaScript front end in front end library to build websites and web apps and gets these built on top of that. And so then I started playing around and realized like Gatsby is really kind of an ecosystem for building websites and web apps. And now with Gatsby Cloud, there's kind of this entire platform that really makes it easy to do that. And so I started met with some of the people at Gatsby, saw them at some conferences, and I guess the stars aligned and I was hired as an engineer to work on the Drupal integration. So it kind of all kind of coincided pretty well with my back background in Drupal. And from there spent quite a bit of time working on the Drupal integrations, which I'm sure we'll talk a little bit about. And then eventually took over as an engineering manager for our integrations and collaboration squad at Gatsby.

Mario: That's pretty neat. Code Karate I know Shrop, he gave a thumbs up. I benefited a lot from that myself.

Shrop: Yeah. That is a great kind of background review Shane where, where you, you know, where you've been and how you got to where you're at today. And you mentioned some of the work you've done, like with Drupal and Gatsby, and Gatsby and Drupal working together. Can you give us a high level kind of perspective of where Gatsby fits in to the decoupled discussion?

Shane: Yeah. So, what Gatsby allows you to do, and I guess that's kind of the, one of the best benefits of Gatsby is you can bring your content from anywhere. So there's a lot of different CMS systems that marketers and content editors like to use. Drupal's a great choice, right? You can model your content and set it up however you want. There are other ones like WordPress or Contentful, and Gatsby is not opinionated about which framework you use to build your content. So essentially you bring the content and then we provide the front-end framework for it. And the reason you might choose to do that is because a lot of CMS providers like Drupal, like WordPress there, they tried to do all things. And so sometimes when you try to do all things, you don't do everything as well as something that's very specific or focused.

And so by Gatsby being very focused on just the front end of your website, it can be, uh, more performance and you can get a better Lighthouse scores, which can help conversions because your users or your customers are experiencing a faster, more app-like website. And so their load times are better. It seems they don't get frustrated if the page takes too long to load those types of things. And so that, that's kind of how it fits in. As you know, it's not necessarily a replacement for Drupal or WordPress or any CMS provider. It's kind of just taking the theming layer, if you've heard of WordPress themes or Drupal themes, and saying rather than use what's provided with within the framework, use Gatsby instead for that part, and then still use or WordPress or Contentful or whatever for all your content.

Mario: You know, we've been working with Gatsby for a little while now, and certainly we can see the benefits, but but one question that, you know, we, we get quite a bit is, you know, why would a site owner look into going the decoupled architecture route? So let's say, for example, why would a marketer, you know, we'll find this appealing, right? What are some of the benefits and from let's say, security, performance hiring, and that kind of thing. What are some of those things that you think are beneficial for a marketer to look into the couple of architecture?

Shane: Yeah. So deciding to go to decoupled is certainly, it's not an easy decision to make, and there's a lot of considerations. It's. Especially if you built sites, not decoupled before, it's, it is a change and you need people with a little bit different engineering backgrounds. However, it is getting easier to hire JavaScript engineers. There's, you know, that's definitely something that people are interested in and learning about. And so they're coming out fresh from school or from, you know, other industries and they're digging right into JavaScript. So they're literally, I'm not saying that engineers are easier to find, but there's more interested engineers. It seems like than hiring someone very specific or specialized, like it's Drupal engineer. And so by separating that out, you can have someone focused on the back end and then someone focused kind of on the front end or the framework side.

So by decoupling, you kind of split those concerns off a little bit. Also, you really, one of the big drivers of decoupling is performance, which I had mentioned a little bit before your, your speed of your website matters because if your customers are having a better experience, they're more likely to either buy it from you or call you, if you're trying to get them to call and use your services or sign up for your product, whatever it is. They're more likely to convert if the website is so well-designed fast and it feels like they don't have, you know, it's a seamless experience for them. And that's where front-end frameworks and going decoupled can help with that because you can use a framework that's specifically focused on performance. And the other thing is just security. So using a front

You're not necessarily exposing everything available through your, your website. So you have kind of an API, you can kind of hide certain things you don't want to see. And it does help that, you know, everything's static. So you it's secure and it's it's faster, it's highly available. So you don't necessarily have to have a running server for a lot of your stuff. So if you ever had a website go down and you're wondering why, why is my website always going down? Well, that's not saying it never could happen, but it's a lot less likely to happen when you're just serving more static content and less where every, every request has to go back to a web server to generate that information. So, and then those are some of the reasons, um so there's definitely trade-offs though, you know, good at good and bad for both, but there's a lot of good things about deciding to to look into a decoupled architecture.

Shrop: I know we were talking a little bit before we started well, before Mario hit the record button, then you know, we do have a lot of Drupal folks listening to this today. But I do want to mention that when you dig into Gatsby, what's what I really like is that you can even have markdown be your backend. You know, that could be the source of content. You can have so many, like you said previously, Shane, It's it's not really opinionated about the content. You know, you bring the content in different forms and, and I'm pretty sure that you can but you tell me, Shane, here on this, if I'm right or wrong, but I mean, you could have Drupal and WordPress and markdown, you could actually have multiple sources even for different pieces of content into a Gatsby site. It might get complicated, but it's interesting.

Shane: Yeah. So, you see that quite a bit, especially as the sites get more complex, that you might have a Drupal for dynamic lead building landing pages, right? Because Drupal, you can model content. You can set up, you know, if you're familiar with Drupal using, you know, paragraphs or something like that, to set up a really dynamic landing page builder, and that builds onto your Gatsby site, but maybe you have products, too. So you use Shopify for your for your e-commerce part of your site. So your products are served from Shopify, and maybe you have a marketing team, you're a big organization and they just are, they love WordPress. They just have a blog, that's all they need. And so they could be using just the blog parts of WordPress. You can have all three of those systems and everyone, you know, the developers who are building these landing pages and, you know, making that available and using Drupal,

And then, you know, you have your marketers that are blogging and WordPress, and then, you know, people managing all your products in Shopify and it all kind of ties together and gets pulled into all into one Gatsby site. So it's kind of referred to as the content mesh, it's something that the Gatsby likes to call it internally. And I think we have, you know, posts on what the content mesh really is, but it's really a, you bring the content from anywhere and Gatsby's kind of your source of truth that pulls in that content and build your website. You're certainly not locked in as much to just using the tools that you're given. You can kind of look for the best tool for the job.

Mario: It'll meets at the end, right. At the front end. Yeah, exactly. So, so once you've done your homework and you know, you've done a little research and you say, okay, this is the way I like to go. And, you know, you arrive at that decision to go to decoupled, what are some of the marketing benefits that a content manager or a marketer should expect to see, besides some of the things that you already mentioned?

Shane: I mean, definitely, you know, we talked about performanceReally the benefits are I w I would say, and of course the a, if you're a marketer, you want to test this, right? But I would say conversions are the, are the biggest thing, right? If you have a better website, you provide a better experience. You're going to get more conversions. Your, your analytics are going to go up into the right, which is what you want, if you're a marketer. So, so that, that's the biggest selling point. There are certainly some trade-offs though, that you have to consider because it's, it's not the same, right? If you're familiar with working in WordPress, or you're familiar with working in Drupal, and now you have this kind of decoupled architecture, you know, this, you, whether it's a Gatsby site or another framework like Next.js or some, some other, you know, front-end framework, that's decoupled your back end from your front end.

Now, there are some considerations, things that you kind of took for granted, like live preview are a little bit more complicated and, not saying they don't work, but there there's some differences in how your content editing workflow might change from what it was before to what it is with the decoupled architecture. So those are things that you certainly need to keep in mind when you're, when you're choosing to make that decision. And also making sure that your developers understand that the first time you do it, there's a learning curve to moving to a decoupled architecture. And so you have to go through that, you know, just like you did when you first built it, you went from a, a static HTML website to a WordPress or Drupal website. You know, there's, there's learning curves at each step. And so this is no different.

Now, I do believe that once you, once the development team learns how to, how to use it and how it all ties together, that most of the time that I've seen, they don't want to go back. They love the love working in that, with that model, like separating out the concerns between the back end and the front end, and being able to I think in a lot of ways people think it's going to take a lot longer to build the decoupled sites. And I think at the beginning it does, but in the long term, I think it actually is as fast or maybe even faster, because you can work on the back end and front end in parallel rather than a lot of times it seems like with in the past, you'd have to kind of build, you couldn't really do that. You had to build the backend stuff first, and then you'd have a front and themer or designer come in and build the front end pieces. So this kind of allows you to do both at the same time, at least to more of an extent.

Mario: Yeah, I can, I can see, you know, when you mentioned talking about being able to bring the content from any source, right. I mean, when we build a site, let's say Drupal-WordPress site you know, things can get pretty complicated just within that platform. So I can only imagine how things get a little more complicated and complex if you're bringing any more tools, right? Like Gatsby or combining WordPress and Drupal together, markdown or something else. So certainly something to keep in mind. And I say this because a lot of people say, oh, Gatsby is great. And I love to use it. I want to use it, but yeah, you need to take a step back and kind of consider, okay, what is this going to mean to my workflow now? What is this going to do to my build of my site? How has this complexity going to affect performance from the editing point of view deployments and that kind of thing. So a lot of those things a lot of people don't consider, you know, they just see this shiny thing, which is great, but there's a lot of things that need to be considered when moving into something like this, where the complexity is drastically increased.

Shrop: One of the things I'm excited about speaking of taking complexities of decoupled and just website building in general is a lot of the work that Shane you and the Gatsby team have done with Gatsby Cloud. Could, could you just briefly mention a few of the things that Gatsby Cloud gives you know, gives the development teams and marketing teams, that sort of thing.

Shane: Yeah. Yeah, definitely. So one of the things you have to keep in mind with, if you choose to build a website with Gatsby specifically, is that we talked to her a little earlier about how it creates everything kind of as a static website. And there's the when you have that process of taking all your content from a CMS, like Drupal, and then building a static website, there's that build process that has to happen. And you can think about it as if you were using a Drupal website and you didn't use any kind of caching or anything like that, every time you go to that page, the server is doing work to generate that content. That means every user that goes to that page, the server's doing work for every single user that views it. And now of course you can add caching layers and things to try to prevent that and make it faster.

But Gatsby kind of flips that model on its head. So rather than adding layers of caching, it's just fast by default. And you have to, I think I've heard someone say you have to work pretty hard to make Drupal websites fast. It's certainly possible, but you have to really work at it. And it's kind of the opposite. You have to work pretty hard to make Gatsby websites slow. I've certainly seen it, but it's really out of the box, it's pretty fast. So but there's that build process that has to happen. So it happens once and then all your users get the benefit of that build process. But you have to keep that in mind that there's, that when you change content, when you you know, update your site and, you know, update your version of Gatsby, there has to go through this build cycle.

And especially if you're with a website that has tens of thousands of pages, that process can take a long time. So it Gatsby Cloud has incremental builds and cloud builds that speed that up. So rather than rebuilding the entire site, it'll only rebuild pages that have changed, and that speeds up your build times from, you know, maybe 5, 10, 15, 20 minutes, if your site's really big to tend to 30 seconds or less, depending on how the size of your site and what kind of change you made. So that's the first thing that Gatsby Cloud provides is really an optimized build service. So it, your site gets built faster. Again, Gatsby's an open source framework. You can certainly do all of this yourself, but Gatsby Cloud, we'd like to think is the best way to build a Gatsby website. On top of that, it also offers a live preview service for content editors.

So, one of the things you lose with going decoupled is it's harder to preview your content. If you're editing in a CMS, you're used to be able to click on view something that's not published yet, or click the preview button and see what it's going to look like. You kind of lose that. And Gatsby Cloud provides a service. So you get that back. So as a content editor, you can feel confident that when you click the publish button, it might take five or 10 or 15 seconds for it to go live. But when it's there, you know what it's going to look like. And then the last thing that Gatsby Clouid offers, so kind of the third tier, is a hosting service for your Gatsby site. So you can kind of have it all under one roof. You can build it, you can preview it. And then once you're ready, you hit deploy and then published. And then it goes, and it's hosted all kind of within Gatsby Cloud.

Shrop: It's got to be, you know, Gatsby's open source, but you've provided these tools on top of that. That's like the best practice way that you've like the Gatsby team believes to do all these things like hosting and, and builds and previews. I think that's fantastic.

Mario: You mentioned Gatsby preview, which is definitely something that we have seen in the early stages of Gatsby being an issue. And we definitely have also seen how much work your team is putting into making sure that that is something that works as people would expect it to see. Can you give us a little bit more on the Gatsby preview, specifically, and how that can benefit the content authoring experience, and maybe perhaps where you, where you and your team are with Gatsby preview, anything else coming down the pipe with that?

Shane: Yeah, I'll see. I'll have to be careful. I don't share too much information about what's what's coming up. Marketing team might not be happy if I divulge too much too quick, but preview is really important to what we're doing and it's not an easy problem to solve when you have, you know, potentially multiple systems funneling into one Gatsby site, right? You might need to preview content from WordPress or Drupal or Shopify. There's all these different sources. And when you change, let's just make a simple example of changing content in a blog post. You want to be able to preview that before you click the publish button. It seems like an easy problem, but when you have all those systems working together, it's actually a little more complicated. And so we've been one coming up with, how do we make preview more reliable?

You know, there there've been issues that just in the past with, you know, all those different systems working together, that sometimes things come up and your, your preview server stops running, or something happens where the developers that built the Gatsby site didn't correctly think about all the different possibilities. And so that causes your preview to break in this certain scenario where they add certain fields and don't add others or something like that. So there are all these different things. And what we've really been focused on is, one, reliability, making sure that it works, and if it doesn't work, we, you know, why. Is it a problem with the previous server and Gatsby Cloud? Is it a problem with the sites? And so that's been a big focus of making sure we're one preventing those problems. And two, if there are problems servicing it in an actionable way.

And on top of that, we've been releasing recently, we released something called preview UI. I guess that's, I don't know if that's an official public name yet, or if that's just an internal name, but essentially it provides kind of an indicator where, if your previews rebuilding or someone saved content, it tells you the status of that. And it gives you links to the air logs. It provides you the ability, you know, simple little things like, oh, click here to copy the link and send it to somebody so they can view it, give you the okay, and then you can publish it. And that's really where we're interested in figuring out is how do we make the content editing experience more collaborative, better? Because content editing, there's this weird fear (for) marketers, there's this weird kind of in-between stage of, you know, you need to build some content, you maybe write the first draft, and then there's all these edits that happen are these requests from different parties.

And a lot of times that might be happening outside the CMS in general, like in a Google doc. And then someone goes in and pastes it in the CMS, and then they do another round after it actually decides how it looks like. So we're trying to make that easier. So we're providing one solution for that, so they can build it in their CMS of choice, preview it, collaborate on it, make sure it's right, and then eventually publish it. So that's where I would say the next steps are that we're not there yet is kind of those, those features to help content editors and marketers collaborate on their content before they're ready to publish. And so that's not to tip our hat too much, but that's where we're, we're really looking to improve for all Gatsby users in the future.

Shrop: One thing that you mentioned earlier, you alluded to the preview button and I think about Drupal's preview button and Mario, you and I talked about this the other day you know, preparing a bit for, for this episode and I've kinda, I've become accustomed now both on mediacurrent.com and on some other projects we're working on, with having preview in, and there's also the Gatsby Drupal module that you started working on, Shane, and really pushed that along. That's what you mentioned that earlier, but all these pieces I'm, I'm, I'm really digging the Gatsby preview over that hitting the preview button Drupal experience because there's, depending on also Drupal set up, sometimes that preview button in Drupal, doesn't do what you exactly think it should, for various reasons. And, you know, once everything's set up correctly, like I feel like the Gatsby preview is really giving you a more correct show of what the website would look like. And that's the exciting part for the authoring experience. Mario, you're, I see you nodding a little bit. What are your thoughts on that?

Mario: Absolutely. Yeah. You know, I think as a content editor, right? Or content creator, you want to be able to see a more accurate representation of what your page will ultimately look like on the front end. Right? So having that preview give you that is definitely something that will be appealing to people who work on content. Yeah, go ahead, Shane.

Shane: I was going to say, and the one interesting thing is, especially on Gatsby cloud, the preview service uses the same build process as our build service. So I'm not going to say it's not possible, but there should be almost no reason. It's not identical every time, because, you know, unless you coded something, you can, of course, Gatsby's a framework, you can, you can break preview in your Gatsby site if you wantdc to and make it work for nobody. But assuming nothing is too wild in your setup, it's going to be the exact same every time. So, you know, when you're previewing something, you're actually, the cool thing about it, when you click the preview button in Drupal, for instance, you're only seeing that page, right? That one Drupal page, if it's a blog post, you're seeing that one page. You're not seeing the state of the site, like, how is this going to show up in the blog listing page? How is this going to show up in the footer of related posts with your Gatsby site? It's a full site. You can click the links, you can navigate and see where this content might show up in other places. And so it's really it provides you that really accurate representation of what it's going to look like when it does go live. So that is one benefit. Again, that, that process of updating it and all those places does take a little bit more time. So that's the trade-off is it might be a little bit slower to get that preview, but you know what you're looking at is going to be right. And when you click the publish button, you can click publish with confidence.

Shrop: Well, just shifting gears, a little bit back to decoupled overall. Are, are there any gotchas for a site owner, marketers, developers that they should be aware of before jumping into decoupled?

Shane: Just that it's going to be different than websites you built in the past. So, be prepared for, you know, no matter what kind of front end framework you're using or what kind of decoupled backend you're using, just prepare that it's a learning curve. There's going to be a few headaches along the way. You know, all the frameworks try to make it as seamless as possible, but every, every website's different, right? Every website's unique. And so there's all of these, you know, ideas, and while they're being used by huge companies, there's always, you know, new kind of edge cases that you might run into and you might have to work through, especially as your developers or engineers are really getting up to speed with how it's all built. And then as a marketer or site owner, just know that how you interact with your content is going to have to change a little bit.

Shane: And so you're going to, it's a learning process there, too. The one gotcha, I would say, a lot of times especially I've seen, when people start to build a decoupled website, they don't think about the content editor or the marketer until the website's about done, because they're like, the website is ready to go, let's publish it, and they put all the initial content in, and now the marketer or content editor wants to change something, and it doesn't quite work. The preview doesn't work right. The, the experience, they weren't prepared for it, there was no training there. So I would say if you're looking into that, just make sure you don't forget about that and kind of punt that until the end, because otherwise you're going to maybe be scrambling a little bit and the marketers might throw their hands up and say, this isn't what I signed up for. I thought this was going to be, the site's fast, but I can't do anything with it. I can't change the content. I don't know how it works. So making sure that you have documentation or trainings or whatever, to bring everyone up to speed rather than waiting till the very end to figure that stuff out. That, that'd be one. Gotcha.

Shrop: That's so good. And Mario, Shane said the training word that I know that had to excite you a bit.

Mario: Well, absolutely. You know, it's, you don't want to forget about the people who ultimately will probably be using the website more than anybody else. Right? And so you want to keep it in the mind from the beginning, there is about their experience, not just the visitor experience, but I think that's all the questions we have. I mean, this was really informative and feels like we, we talked to the Gatsby team quite a bit. And, you would think that a lot of this stuff is not going to get us excited or anything, but this stuff is pretty cool, especially the preview. That's something that I'm really excited about.

Shrop: Yeah. This was great. Well, Shane, thanks so much for coming on today to talk to us about decoupled and and to learn a little bit more about Gatsby. I'll always, Mario, I think you agree, it sounds like that's where you're headed. Like I always learn something every time, every time we talk to somebody from Gatsby or talk to someone else just about decoupled in general. So there's all these different experiences. It's not you know, it's not a one experience fits all kind of thing, but, but really appreciate you coming on today and talk and talking to us about all this.

Shane: Yeah, definitely. Thanks for having me. It was fun.

Jun 22 2021
Jun 22
normal difficulty


Warning: We’ve had some trouble getting the Drupal XML Sitemap module to work on some websites. In those cases, we’ve used the Simple XML Sitemap module which works great but lacks some of the robustness: https://www.drupal.org/project/simple_sitemap.

Credits & Thanks

Thank you to:

About the XML Sitemap module

The XML Sitemap module creates an XML sitemap of your content that you can submit to the search engines. An XML sitemap is a specially-formatted summary of each piece of content on your website. You can read more at https://www.sitemaps.org/.

Tip: If you’re running an eCommerce website, this module is of particular importance. We’ve seen catalogs with extensive product listings increase traffic by thousands of visitors per day with a proper XML sitemap.

drupal xml sitemap admin page screenshot

Having an XML sitemap helps your Drupal site's SEO by giving Google a list of the pages that you want them to crawl. While Google can crawl your site without an XML sitemap, bigger and more complex sites confuse the crawler so it could potentially miss pages and even whole sections. If you don’t do this, you will have to manually submit every single page of your site to Google which is ridiculously time-consuming.

Install and Enable the XML Sitemap Module

  1. Install the XML Sitemap module on your server. (See this section for more instructions on installing modules.)

    drupal xml sitemap module installation screen

  2. Go to the Extend page: Click Manage > Extend (Coffee: “extend”) or visit https://yourDrupalSite.dev/admin/modules.
  3. Select the checkbox next to XML sitemap, XML sitemap custom, and XML sitemap engines and click the Install button at the bottom of the page.


If necessary, give yourself permissions to use the XML Sitemap module.

  1. Click Manage > People > Permissions (Coffee: “perm”) or visit https://yourDrupalSite.dev/admin/people/permissions.

    drupal xml sitemap module permissions screenshot

  2. Select the appropriate checkbox for “Administer XML sitemap settings”.
  3. OPTIONAL: If you wish for your XML sitemap to include user information, select the appropriate checkbox for “User > View user information”, otherwise go on to the next step.

    drupal xml sitemap view user info screenshot

  4. Click the Save permissions button at the bottom of the page.

Configure the XML Sitemap module

  1. Click Manage > Configuration > Search and metadata > XML Sitemap, (Coffee: “xml”) then click the Sitemap Entities tab or visit https://yourdrupalsite.com/admin/config/search/smlsitemap/entities/settings

    drupal xml sitemap custom entities settings screenshot

  2. Select the checkbox next to each entity you want to show up in Google. You will likely select your Content Types and Taxonomies but you may or may not want to select Comments, User, or other items. If in doubt, include them, as they’re often good content for SEO purposes.
  3. Click the Save configuration button at the bottom of the page. After saving, stay on the Sitemap Entities tab and complete in the Configuring Individual Content Type Sitemap Settings section below.

Configuring Individual Content Type Sitemap Settings

For each content type you selected on the Sitemap Entities tab, you’ll want to enable their inclusion in the XML Sitemap and weight the content. While not difficult, you’ll want to weight your content differently based upon the type of content.

  1. Click the Configure button next to the first content type. This will display the XML sitemap settings page for that content type.

    drupal xml sitemap settings for the article content type

  2. From the Inclusion drop down list, select “Included”. A new set of fields will display.

    drupal xml sitemap settings for the article content type screenshot 2

  3. Set the Default Priority and Default change frequency drop down lists to the settings specified in the table below for each standard content type.

    Table: Standard Content Type XML Sitemap Settings

    Content Type Default priority Default change frequency Article 0.8 always Blog 0.5 always Basic page (if used) 0.8 always Tags (all taxonomy terms) 0.5 always All other content 0.5 always
  4. Click the Save Configuration button at the bottom of the page.
  5. Once you are finished each content type configuration, go to the Settings tab. Here you will see the different content types divided into tabs.

    Note: Frontpage is automatically set to a Priority of 1.0 (highest) - you’ll want to leave this as it is.

    drupal xml sitemap content type weightings

  6. Make sure that the Minimum sitemap lifetime is set to “No minimum”.
  7. Make sure that the check box next to Include a stylesheet in the sitemaps for humans is selected.
  8. Click the Save configuration button at the bottom to save your changes.

Building Your XML Sitemap for the First Time

  1. Select the Rebuild tab or go to https://yourDrupalsite.com/admin/config/search/xmlsitemap/rebuild.

    drupal xml sitemap rebuilt screenshot

  2. Within the Select which link types you would like to rebuild block, select all items.
  3. Make sure the checkbox next to Save and restore any custom inclusions and priority links is selected.
  4. Click the Save configuration button. This will generate your sitemap for the first time. To see your new Drupal XML sitemap, go to https://www.yourwebsite.com/sitemap.xml to see it.

The XML sitemap is automatically updated when Cron runs. That makes it unnecessary to rebuild your sitemap again unless you run into problems.

facebook icon twitter social icon linkedin social icon

Jun 22 2021
Jun 22

Like many other things in life, our code needs some discipline too. I’m pretty sure no developer in the world wants to write unclean code. However, unclean code still does exist. It can arise due to various reasons - may be due to business pressure, lack of documentation, lack of interaction among team members or incompetence of the developer. Due action needs to be taken to make the code cleaner and to avoid problems that may come up in the future because of this. Fortunately, we can tackle these issues with a disciplined technique to restructure the code called as Refactoring.

Refactoring is a technique to improve the internal structure of the existing program source code and maintaining its external behavior. It is a step-by-step procedure to improve the code, which will otherwise cost us a lot of time and effort.

Code Refactoring

Disadvantages of Unclean Code

Expanding the source code size by adding new programs to it without refactoring for a long time makes the code messy and unclean. It makes the maintenance and further development on the project very difficult. Unclean code comes with tons of disadvantages:

  1. It increases the maintenance cost of the project.
  2. Adding new feature takes a lot of time and sometimes it become impossible to add.
  3. It slows down the introduction of new people to the project.
  4. It contains duplicate code.
  5. It does not pass all tests.

There are many other disadvantages, but these problems cost a lot of money and time to the organization.

Advantages of Clean Code

Clean and disciplined code has its own advantages:

  1. It does not contain duplicate code.
  2. It passes all tests.
  3. Makes the code more readable and easier to comprehend.
  4. It makes the code easier to maintain and less expensive.

Advantages of clean code are many. The process of turning a messy unclean code into a more maintainable clean code is called Refactoring process.

Refactoring Process

Refactoring should be done as a series of small changes, each of which slightly improves the existing code and allows the program to continue to run without breaking it. After refactoring, code should become cleaner than before. If it remains unclean, then there is no point of refactoring. It is just a loss of time and effort. No new code should be added during refactoring to create new functionality. It should pass all the tests after refactoring.

When to Refactor

Refactoring should be performed when:

  • Adding duplicate code to the project. Because duplicate code is hard to maintain and changes in one place may require updates in many other places.
  • Adding a feature. Refactoring makes it easier to add new functionality.
  • When fixing a bug, you should refactor because it will make the bug discovered automatically.
  • Code review is the last stage of refactoring the code before changes are deployed to production.

Dealing with Code Smells

Problems on the code are sometimes referred to as code smells. These are the problems addressed during the refactoring. They are easier to find and fix.

For example:

  • Large methods and classes which are very hard to work with.
  • Incomplete or incorrect usage of object-oriented programming concept.
  • Code that makes it hard to add any changes.
  • Duplicate and deprecated code in the project.
  • Highly coupled code.

Refactoring Techniques

Refactoring techniques are the steps taken to refactor the code. Some of the refactoring techniques are:

1. The Extract Method

// Problem

function printInvoice() {
    // Print details.
    print("name:  " . $this->name);
    print("amount " . $this->getPrice());

// Solution

function printInvoice() {
function printDetails($price) {
    print("name:  " . $this->name);
    print("amount " . $outstanding);

If you have a code fragment that can be grouped, add a new method for that part of code and replace the old code. It makes the code more isolated and removes duplication.

2. Extract Variable

// Problem

if (($student->getMarksinMath() > 60) &&
    ($student->getMarksInPhysics() > 60) &&
    ($student->getMarksinChemistry() > 60) && $this->pass)
  // do something

// Solution

$mathResult = $student->getMarksinMath() > 60;
$physicsResult = $student->getMarksinPhysics() > 60;
$chemistryResult = $student->getMarksinChemistry() > 60;
$hasPassed = $this->pass;

if ($mathResult && $physicsResult && $chemistryResult && $hasPassed) {
  // do something

For large expressions like the one displayed in the problem, which is very hard to understand, different variables can be created for each expression. It makes the code more readable. But this method should be applied with caution. However, it has its own disadvantages. The code will execute even if the condition is false which is not the case in the problem.

3. The Inline Method

// Problem

function printResult() {
    return ($this->getResult()) ? “Pass” : “Fail”;
function getResult() {
    return $this->totalMarks > 300;

// Solution

function getRating() {
    return ($this->totalMarks > 300) ? “Pass” : “Fail”;

When the method body is more obvious, use this technique. Replace the method with method content and delete the method. It minimizes the number of unwanted methods.

4. Inline Temp

// Problem

$mathMark = $student->getMathResult();
return $mathMark > 60;

// Solution

return $student->getMathResult() > 60;

If there is an unwanted temporary variable which just holds the expression result, remove the variable with the expression itself. It helps in getting rid of unnecessary variables.

5. Replace array with object

// Problem

$row = [];
$row[0] = "Virat Kohli";
$row[1] = 70;

// Solution

$row = new Player();
$row->setName("Virat Kohli");

If there is an array with various types of data, replace that with an object. Because fields of a class are easier to document and maintain than arrays with various types of data.

6. Parameterized Method

// Problem

function fivePercentRaise() {

function tenPercentRaise() {   

// Solution

function raise(percent) {

If multiple methods perform similar action on data, then replace all the methods with one method and pass the data as argument(s). It removes duplicate and redundant methods.

7. Separate query from modifier

// Problem

function getInterest() {
    $this->interestAmount = $this->principal * 10 / 100;

    return $this->interestAmount;

// Solution

function setInterest() {
    $this->interestAmount = $this->principal * 10 / 100;

function getInterest() {
    return $this->interestAmount;

If a method is returning value and changing the object, split the two methods. One for modification and another to return the result. It removes the chance of unintentional modification of an object.

Jun 21 2021
Jun 21

Share your case studies at the DrupalCon Europe 2021 Client & Industry track

Day 2, Keynote - Monique J. Morrow - DrupalCon Vienna 2017. Photo by Dominik Kiss

Using open source software in a large company requires a cultural shift. An organization needs to encourage knowledge sharing and contributions within the different teams in an organization and also with the greater open source community. New ways of working and collaboration need to be established to take full advantage of adopting open source for an enterprise. The Covid-19 pandemic has brought bizarre challenges and opportunities for enterprises to embrace digital transformation at a much faster pace. It has compelled enterprises to create new possibilities for their businesses through innovative services and products, improved ways of working, and agile business models.

However, there are only a few platforms that support faster digital transformation. Due to this, there are enterprises & SMBs that struggle to leverage the full potential of digital and hence, fail to reach their target audiences at the right time.

And that’s where Drupal, the power of open-source, comes into the picture!

Drupal has become a top enterprise-class CMS for its reliability, interoperability, scalability, security and ease of customizations and integrations. Organizations globally are incorporating open source methodologies into the way they develop their own software. Companies such as Pfizer, Nestlé, Nokia, NASA, Habitat for Humanity, and DHL are already using Drupal to deliver content across all their channels.

Another advantage of open source is the people behind the software, in the case of Drupal a community of more than 1.3 million members. Within this community we can connect and share best practices and lessons learned for managing large complex projects and pushing innovative boundaries using Drupal. With a whole community innovating, we often get new features before we know we need them.

No matter which path is taken, everyone can learn from each other. And that's what DrupalCon Europe 2021  is all about. In the Client & Industry track we want to discuss how  digital transformation can be a success for your company – and what role Drupal plays in this. We are looking forward to your questions and your ideas in order to become better together.

DrupalCon Europe 2021 on 4 October through 7 October will cover a broad range of case studies and experiences by representatives of the organisations specialized in choosing for the open web. And it’s not only techs speaking, but also people using Drupal strategically like CMO’s, CTO’s, digital managers, agencies, and business/site owners. The key goal is to show how Drupal can adapt to fit projects of all shapes and sizes, across all industries.

The sessions are targeted to digital managers and executive decision makers using Drupal or considering the solution as their next content and digital experience management platform. Agency leaders, product owners, and tech leads can also benefit from the showcases in this track.

The showcases will add more business value if told by project owners from the companies themselves, or with the agencies alongside their clients. By sharing your journey using Drupal in your digital transformation, you will help existing and potential Drupal users (clients) learn innovative ways to improve Drupal, from Drupal users themselves.

pdjohson -

Community Summit at DrupalCon Vienna 2016. Photo by pdjohnson

The Client & Industry track typically covers the following topics:

  • General Open Web: Explore how we can continue to advocate for our ability to access and publish on the open web and allow engaging and meaningful digital experiences.
  • Drupal Digital Experiences: Share innovative customizations or how you use Drupal in conjunction with other solutions.
  • Digital Transformation: Show us how you achieved agility, standardization, masterization, or implementation of new governance processes for Drupal projects that promote digital transformation and innovation within an organization.
  • Media & Publishing: Drupal is built with out-of-the-box tools & features essential for creating & publishing SEO-friendly content in multiple languages across devices for delivering incredible user experiences. Showcase how the unique capabilities/features of Drupal make it a one-stop solution for all Media & Publishing enterprises.
  • Ecommerce: Tell us how Drupal serves as the foundation and stepping stone for building an integrated Commerce, Marketing, CRM, and ERP platform and delivering integrability, flexibility, and scalability at a reasonable cost.
  • Government: Showcase reuse, cost savings, productivity efficiencies, and innovative customizations in governmental structures.
  • Education & Non-Profit Organizations: Show how Drupal has been extended to support multifaceted institutions and empower disparate editorial teams.
  • Community Platforms: Share with us how Drupal is used to build engaging and intuitive community platforms.

We have listed some presentation topics above, but are open to new themes. What has been your experience with implementing Drupal in your organization in the last few years? What types of governance processes have been put in place? What have been your successes and challenges?

We’d love to hear about it! Send us your case study for the Client & Industry track and share it with the Drupal community. 

Not sure if your topic is right here? Don’t be afraid to choose the wrong track as all track chairs are in close contact and will consider moving your session to the best place.

Target Audience

The sessions target digital managers and executive decision-makers who use Drupal or are considering using it as their next digital experience management platform. Agency leaders, product owners, and tech leads can also take advantage of the sessions & workshops on this track.

Why Participate?

Because you will be able to:

  • Tell Your Story

DrupalCon offers everyone a platform to showcase the best of their work. If you have worked with the team that developed the web application or an accelerator program to facilitate enterprises in delivering engaging experiences, you ought to share that with us!

We will be ecstatic to know how you fostered innovation using Drupal for building community platforms, improving editorial experiences, creating eCommerce platforms, and ultimately, delivering meaningful customer experiences.

We want to hear all of this from you at DrupalCon. Tell your story by submitting a session to the Clients & Industry Track. 

  • Give Back to the Community

DrupalCon is an event for anyone & everyone who wants to learn Drupal to make a difference in others’ lives. It doesn’t matter whether you are a developer, designer, editor, or an end-user even, you can get started right away. Simply put your ideas to work at contribution events & enjoy learning & being a part of one of the largest open-source communities in the world.


Submit your sessions now and help create the best program for DrupalCon Europe 2021!

We are looking forward to your submissions! Please don’t hesitate in submitting your sessions. Be an inspiration for all Drupal enthusiasts out there

Contact: Antonella Severo, Antonellasevero, Track Chair Lead, Clients & Industry

Jun 21 2021
Jun 21

What does Makers & Builders mean?

The “Makers & Builders” track is the combination of DevOps, backend development, site building, frontend development, and accessibility competencies. All the right ingredients for a perfect Drupal recipe.

This is an expert only thing, isn’t it?

No! When we build the program, we take into account each type of individual. Whether you are a first-timer (welcome!) discovering Drupal, someone building or maintaining small/medium sites or an “hardcore” developer with dozens of sitesbuilt on your resume or high traffic websites, we have a session for you!

There is obviously content for backend developers, frontend developers, sysadmins or accessibility experts, but also for what we call site builders (They are people carefully picking and assembling modules that fulfill your sites features).

What will I learn in this track?

Spoiler alert, something new! Here is a broad list of topics covered in the track description:

  • Accessibility,
  • APIs & Third party systems,
  • Back End Development (Symfony, GraphQL…),
  • Contribution best practices,
  • Development (PHP, Javascript…) state of the art,
  • DevOps (DDEV, Docker, Kubernetes...),
  • Front End Development (React, Vues.js, Angular…),
  • Performance,
  • Q&A and Automated Testing,
  • Scalability,
  • Security,
  • Modules feedbacks (content layout, multilingual, media management…),
  • And the list could go on!


That’s a lot to explore, right? It’s the beauty of it. Our sessions are recorded so don’t worry, if you face a session dilemma, you will have a way to catch up the ones you won’t be able to attend.

Enjoy the great DrupalCon experience!

Contact: Julien Dubois, artusamak, Track Chair Lead Makers & Builders 

Jun 21 2021
Jun 21

How could we help companies improve their sales funnel and project proposals? Would more case studies help? Would promoted case studies help?

What additional support and training could be provided to help organizations learn and use the Webform module? Would an organization want to sponsor monthly Webform training videos? Would sponsoring and organizing a monthly Webform lunch-n-learn be of interest to anyone?

Are there any additional services that could be offered around the Webform module? Would recommending or troubleshooting Webform add-on modules help organizations succeed?

One thing that I struggle with is determining what is the right level of transparency needed to make the Webform module’s Open Collective sustainable? For example, I am separately engaging with organizations to do project planning as a consultant and these engagements rightfully need to remain private and confidential.

A related question is, should I directly be engaging, possibly cold calling, or directly emailing organizations and companies trying to get them to sponsor the Webform module's Open Collective? I am hesitant to do this, but asking someone directly for help can make a huge difference.

Jun 21 2021
Jun 21

Watch Part 3 of our CiviCRM Entity training series.

[embedded content]

CiviCRM Entity is a Drupal module that provides enhanced integration with Drupal, allowing developers, site builders, and content creators to utilize powerful Drupal modules including Views, Layout Builder, Media, and Rules. Drupal fields can be added to CiviCRM entity types. It provides Drupal pages and edit forms for all CiviCRM data such as contacts, allowing usage of familiar Drupal content creation tools and workflows.

During this training we cover:

  • CiviCRM Entity Leaflet Address module
  • Views Proximity Filter
  • Map markers and Marker Clustering
  • Drupal Calendar Views for Activities

Valuable Tools for Better Site Building

  • Entity Browser Module: Provides extremely configurable selection, entity creation, edit form display field widget for referencing/creating entities with entity reference fields
  • Bootstrap Layout Builder: Enhances Drupal Core's layout builder module, including boostrap column layouts, integration with Bootstrap Styles so that site builders can control typography, borders, padding, margin, background color, background video, and much more
  • Bootstrap Styles Module: Provides configurable styles to be used with Bootstrap Layout Builder
  • Bootstrap Library Module: Provides any version of Bootstrap css/js framework for themes that are not bootstrap based
  • Layout Builder Restrictions Module: Allows site builders to limit what blocks are available to add to layouts
  • Inline Entity Form Module: Another module entity creation, edit form display field widget for referencing/creating entities with entity reference fields. Can be used in conjunction with Entity Browser
  • Drupal Console: A command line tool to generate boilerplate code for many Drupal features, including Field formatters and Field widgets
  • Field Group Module: Enables grouping fields into fieldsets, collapsible "Details" element, vertical and horizonal tabs
  • Chaos Tools Module: Chaos Tools: Many "goodies" that haven't been included into Drupal Core. In our demo it allows us to place entity view mode renderings, that use field groups

Additional Resources:

Jun 21 2021
Jun 21

Due to globalization and local talent shortages, outsourcing parts of their digital initiatives has become an essential business tactic for many companies. There are various ways and degrees of outsourcing, but the bottom line is that it’s a different kind of project work, with its own unique advantages and drawbacks.

In times of disruption and uncertainty, e.g. ever since the start of the Covid pandemic, however, the benefits of outsourcing become much more pronounced than its drawbacks. In this article, we’ll dive deeper into why outsourcing is a particularly great fit for such periods of time and how businesses that decide to outsource can benefit from it.

Why outsource in times of uncertainty?

Many of the benefits of outsourcing are the same both in normal times and during periods of great uncertainty. The key difference is that, with the latter, these are exactly the features that companies are looking for, and the disadvantageous ones are often already characteristic of the disruption in question (e.g. right now issues with remote collaboration).

Here are 6 factors that make outsourcing strategies particularly well positioned for realizing companies’ digital strategies in times of disruption and uncertainty.

1. Flexibility

At a time of huge business transformations, the ability to be flexible represents a unique competitive advantage. Rather than having to lay off employees if market trends and demands shift, you can instead partner with experts for specific projects and needs, without any organizational overhead beyond that project or need.

Outsourcing allows for exactly that flexibility, whether you’re looking for help in design, marketing, development, or even more specific fields. Especially when partnering with a specialized digital agency, you’re able to get the exact amount of people with the right skills needed, and you’re even able to easily add new members to the team or let certain people off the project, depending on your needs at the time.

2. Speed

Another factor which often pairs with flexibility is speed. If you choose to partner with an agency, you can get a whole team of proven experts in a matter of days, without any need for elaborate vetting or onboarding. The partner agency will have already taken care of that, and their achievements and references will speak for themselves. 

This also enables a faster time to market for the project, which is key to beating out the competition at a time where essentially every competitor company has a well established digital presence, or is just now implementing it. 

Faster time to market will also help in case of sudden market shifts, as you’ll be able to more quickly respond to them and make the most use out of the new trends.

3. Project uncertainty

Rapidly shifting trends entail a higher degree of project uncertainty, with the scope and goals potentially changing significantly throughout the duration of the project. 

As we previously pointed out, outsourcing strategies are particularly well suited for projects whose course is likely to change, thanks to the speed and flexibility offered by this working arrangement. The ability to easily add or remove personnel from the project with no strings attached goes a long way toward alleviating the concerns of scope changes down the line.

4. Cost

Business disruption is often a reflection of a broader, society-wide disruption. In the case of Covid, many companies have had to downsize their staff and/or budget, looking for novel ways to cut costs while maximizing the return on their investment.

With outsourcing, the only cost comes down to the fees for the work done. You’re able to avoid the overhead of hiring, onboarding and managing in-house employees, let alone other expenses such as health insurance, sick days and vacation pay.

When working with an agency, you’re typically also able to get timely replacements in case of an unexpected illness or another emergency. This contributes to the speed and efficiency so needed in times like these, and ultimately results in lower overall cost of the project with greater ROI.

5. High demand for top talent

While we’ve been seeing a rise of unemployment in certain sectors, all fields within the digital are blooming. Demand for top talent has never been higher, and digital job-seekers (and even job-holders) have more options and opportunities than ever before.

Acquiring the best in-house personnel thus becomes even more difficult with everyone competing for the top talent. And, even if you manage to hire the perfect person, chances that they switch companies (or decide to start freelancing) are proportionately higher depending on how skilled they are.

This means that it’s easier to find top talent for work on a per-project basis rather than in-house. A lot of digital experts decide to work as freelancers, especially now with the ease of remote work; but don’t forget that there can also be greater risk with freelancers than with an agency that thoroughly vets its employees.

6. Busted myths about remote work

Companies which were reluctant to outsource prior to 2020 due to the necessity of remote and asynchronous communication now no longer have any excuses. Why would you mind collaborating remotely with an outsourced team if you’re already used to communicating remotely with your in-house employees anyway?

The rise of remote work and the appeased concerns of people and companies previously inexperienced in it are making outsourcing a much more compelling approach.

Indeed, the past year and a half has proved that remote and asynchronous collaboration doesn’t come at the expense of productivity and innovation - on the contrary, it may in fact even contribute to the two; hence why a hybrid approach to work will likely become predominant even once we transition out of the pandemic.

So, in most ways, a remote partnership with a digital agency or freelancer will not differ at all from working with a full team of in-house employees - the only points where it will are the benefits we outlined in this article.


Big city skyline with the sky representing the cloud/world map

While we’re all hoping for the promised end to this tumultuous period, the trends which have arisen during it are unlikely to just be swept away as soon as it comes to an end. The future of work is now, but you still need to make sure you remain future-ready.

Outsourcing is definitely a great approach which will also come with significant long-term benefits if you’re able to find the right partner. If you happen to be looking for a development partner, learn more about the different ways of working with us:

or get in-touch with us and we can answer any further or specific questions you may have.

Jun 20 2021
Jun 20

The above stats come from the “8.x, 9.x, 10.x versions.” Meanwhile, 7.x also has 4,906 open issues, although these will only be relevant to Drupal 7 and not carried forward when support for Drupal 7 ends.

The number of open issues at each status has approximately tripled in the past eight years.

Why is the queue growing so fast?

  • We have adopted several large issue queues from contrib. There are 1,660 open core issues against Views/Views UI; 420 are against Migrate and 370 are against Media. Just these three subsystems account for more than 10% percent of the total issues against core.
  • Very few core modules have been removed during the same period. 
  • Even when modules don't have many issues against them specifically, they will be included in cross-core issues (cspell, phpunit deprecations, etc.), adding to the amount of code to be modified and reviewed.
  • Issue queue size itself causes a feedback loop. If you find a bug, it is harder to find among 18,000 issues than 300, so you are more likely to create a duplicate bug report. Every duplicate bug report could have been a review/test of an existing patch instead. If you're looking for an issue to work on, it is harder to know where to start. If you're involved in 100 open issues, it is harder to keep track of them and requires more context switching than if only 10 are open.
  • A lot of people are using core and opening issues against it. We may want to look into statistics for how many issues are opened per year, too.

What is preventing throughput?

The RTBC queue is a significant bottleneck. At many points in the past three to five years, we have reached over 150 RTBC issues. It can then take weeks of sustained effort to get back under 50. The queue very rarely goes under 30 issues. This is despite adding more committers to the team. However, this is not a new situation — there are always several issues RTBCed every day from a very large pull of issues at “needs review,” and the RTBC queue snapshot from 2013 shows 90 issues RTBC.

While there are more committers now than in 2013, there’s also a lot more core committer work that doesn't involve committing patches — minor releases every six months with alpha/beta/rcs, core initiatives, security support for two minor branches at a time plus the LTS branch, and often co-ordinating security releases with upstream projects.

RTBC issues take more time to review since Drupal 8 released, particularly backward compatibility and backport eligibility decisions. Steps such as assigning contribution credits can double or triple the time they usually take to commit a trivial issue. Therefore the slower commit rate doesn't necessarily indicate less activity; it also shows more effort spent on each issue.

When the RTBC queue is long, there is a knock-on effect on other contributions. Core contributors will have a threshold of patches they've worked on that are stuck at RTBC, after which other patches may be blocked on those commits, or they may just want to see progress on their RTBC issues before picking up the next ones. This varies for different people, but there is a limit to how many issues anyone can work on simultaneously.

A long RTBC queue also increases the chance that any one individual issue will be hit by either a random test failure or conflict with another patch that's committed. At the same time, it's RTBC, artificially taking it out and returning it to the RTBC queue.

The quality of RTBCs is not always high, meaning one issue can take multiple rounds of feedback from a committer before it can be committed. In many cases, these could have been found by an experienced reviewer earlier in the process.

There are approximately 1,500 commits made to the development branch of core per year, a rate that has been steady since 2017. This is lower than the peaks of 4,300 in 2013-14 (just before the release of Drupal 8) and 2,700 in 2009-10 (just before the release of Drupal 7).

Several commits don’t necessarily indicate the actual throughput of work. For example, code style scoping guidelines encourage a handful of issues with large patches in each, vs. dozens of issues with small patches, which was common in previous years for identical changes to the code base. Additionally, it says nothing about the type of issues being committed — i.e., whether they're critical bug fixes or typos in code comments. However, it does show that the frenzy of commits around Drupal's old big bang major releases has flattened out considerably with the new release cycle.

Possible solutions

  • Add more core committers, especially people who primarily focus on the RTBC queue.
  • Ensure that RTBC queue time is funded for new and existing core committers.
  • Fix or disable random test failures to reduce pointless RTBC queue noise. Some random failures have been around for over a year without resolution.
  • Look at ways to streamline the commit process, although these almost always have trade-offs vs. consistency/quality/issue credit etc.
  • Try to improve the quality of RTBCs by cultivating more experienced reviewers and rewarding more high-quality reviews.

Needs review, needs work, and active

While the RTBC queue is very busy and sometimes congested, the needs review queue is more like a giant car park, with nearly 3,500 issues waiting for review.

When an issue is RTBC, you have a reasonable expectation that a core committer will review the issue within x amount of time and either provide feedback or commit it. This is a small but concrete group of people.

“Needs review” issues can be reviewed by anyone other than the patch author — theoretically a very large number of people—but in practice, a lot less than those opening issues or even posting patches.

An issue at “needs review” for more than a week without any feedback is effectively stalled, and 3.5k needs review issues indicate this happens a lot.

The oldest issue in the needs review queue (at the time of this writing) is nine years and nine months old. The most recent patch was posted in 2011, passed 190 simpletest test, and was never retested. The most recent comment was in 2018, suggesting it should be closed as no longer relevant but not actually changing the status. In general, an issue that needs review is either ready to commit, needs more work, or isn’t applicable. The ideal state of the needs review queue then would be a shortlist of issues (tens, not hundreds) that have just been marked needs review, then quickly get feedback so they can go back for another round of work or on to commit.

On the other hand, there are many reasons why issues might be “active” or “needs work.” Many issues are legitimately at that state while solutions and patches are being worked on, while many more will be essentially unviable — duplicates, bugs that should have been posted against contrib modules, cannot reproduce, etc.

With a large number of issues against core, many are closely related or duplicates. This often results in split efforts and isolation; for example, people experiencing a bug post a new issue rather than finding an existing issue with a working patch, which they might be able to contribute to reviewing and getting committed. Or two sets of people work on patches in different issues, one ultimately getting discarded after weeks, months, or years when the other is committed.

The Drupal community is extremely reluctant to move issues to won't fix/by design/duplicate/outdated. While marking an issue duplicate usually connects it to another active one, the other statuses are a dead end. On the one hand, this makes the issue queue friendlier, where other projects might immediately reply to a bug report or feature request with “won't fix”; on the other, it makes it hard to know what has a viable route to commit and what doesn't.

For example, there are 549 issues marked “postponed, maintainer needs more info.” The oldest was put into that state 10 years and one month ago.

Possible solutions

  • Retesting of “needs review” issues. Many “needs review” issues haven't had a test run in several years.  
  • Show related issues via apachesolr-related content in addition to the current manual links, and display these in a block when viewing issues may enable duplicates to be more quickly identified.
  • When posting a new issue, we could try to find similar issues based on the contents of the form before it is posted, potentially preventing duplicate issues from being posted in the first place.
  • The above and a few other issues are collected under this meta.
  • Develop more precise criteria for invalid issues to be closed (cannot reproduce etc.) and deal with both.
  • Critical and major triage, carried out by core committers, sometimes with subsystem maintainers, effectively reduced the length of both queues (especially as Drupal 8 was nearing release). We could look at reviving this. However, the number of critical issues has remained relatively steady since Drupal 8’s release.
  • Bugsmash has lowered, or at least flattened, the total number of bugs against core, including fixing some very old issues. Could we set up a similar triage initiative for tasks?
Jun 19 2021
Jun 19

How do you enable that module for just the live site again?

Kaleem Clarkson

Let’s first start off with understanding what the Configuration Split module does. In simple terms, it allows you to have different site configurations for your different environments. For example, you want to turn off the Views UI module on your live site. Or you want to turn off your Google Analytics module on your local, dev, and test environments but still have it active on your live site.

There are so many great articles on setting up configuration split. Here are a few good ones that I suggest reading to get you caught up to speed.

In other words, say that you have already set up your config-splits a few months ago but now your client wants to add email support using the SMTP module but you only want this enabled on the live site so you don’t accidentally send out an email from your local site to 1000’s of users. ps — I have done it before Ouch :)

Well in order to add to the live configuration you need to enable the live config split. The natural first step is to go to the config-split UI and disable the develop configuration and enable the live config. Click Click Click. But nothing. Such a simple thing but why in the heck are you not able to enable the live configuration?

Ohhh snap, that settings.php file got me again.

One thing all of these tutorials have in common is that they show you how to set the active and inactive config-splits in your settings.php. For some servers, the code is slightly different but the idea here is that Drupal needs to somehow know what environment you are on in order to import the right configuration.

Yep! That darn settings.phpfile. The reason you cannot activate the live configuration settings in the UI is that the settings.phpfile overrides the UI click clicks. So you need to go to your file and either temporarily comment out that code or just reverse the logic. So here is what I do.

  1. Reverse the logic in the settings.php file. For me, I just have to switch out a ! in my code so that my dev and live environments are reversed.
  2. drush cr — Cache rules everything around me — Clear it
  3. drush cim Load all of your config from the live environment into your local
  4. Enable my new SMTP module.
  5. Edit the live config split and check the box next to the SMTP module
  6. drush cex — configuration export
  7. git checkout settings.php so that my file reverts back to my old settings
  8. drush cr— you know the drill clear that cache
  9. drush cimThis disables the SMTP module and loads just the development modules on your core
  10. git commit my changes

I then check my setting by doing a drush csim live. This command imports the settings from the live config. You can also check your config directories manually or with a git statusto ensure there are new files in both of your dev and live directories.

If any of you have a better way to enable and add some new configuration to the live environment without all of the steps, help a brother out and let me know in the comments.

Jun 18 2021
Jun 18

Drupal 7's end of life is scheduled for November 28, 2022. Up until then, the Drupal Security Team will continue to provide patches to Drupal 7 core and contributed projects should any security threats arise. After that point, however, the Drupal Security team will no longer support Drupal 7.

Is it Safe to Stay on Drupal 7?

If your organization is currently running Drupal 7, you’re faced with a decision on whether to upgrade to Drupal 9 or not.

Crafting a business case can help with your decision because it contains projections for initial costs and ongoing costs for making the upgrade investment vs. maintaining the status quo, as well as projections for revenue and savings. The business case exercise can further forecast the break-even point for your upgrade investment. However, in the case of future security threats, we can’t be confident of what the future ongoing costs will be, because we can’t predict when such security threats will arise, nor will we know the severity of them. 

What we can do, however, is make organizations that use Drupal aware of the risks of not upgrading. There are three general areas of risk: security, integrations, and functionality.

Security Risks

After Drupal 7 reaches the end of life, whenever security issues are identified in core or contributed modules, there won't be very much support to fix them. Site maintainers could find themselves in the position of having to spend a lot of time searching for security holes and fixing them. This risk gets compounded if there are a lot of contributed modules in your Drupal configuration. 

There will be a few agencies that will offer the service of maintaining your Drupal 7 platform post end-of-life. This will help greatly to secure your site if you’re willing to invest in hiring such an agency. One of their main tasks is to backport fixes for core and contrib issues. These fixes will of course not be included in the D7 upgrade path because there won’t be an upgrade path at all. As a point of reference, after Drupal 6 had reached its end of life, there weren't a disproportionate amount of security fixes needed for its core nor contributed modules. Still, the risk is not zero. Every aspect of a Drupal application must be considered to ensure there are no security gaps.

Another aspect of taking this path is that much of the time maintaining a site like this is spent managing and mitigating security risks rather than making improvements or implementing new features. For a good many developers, this is not rewarding work. 

In the history of previous Drupal security fixes, some have been pretty small -- one-line changes that take an hour to review and fix -- while others have taken days or even weeks of development time to analyze and produce a solution for. 

An advantage of choosing to upgrade a Drupal 7 site to Drupal 9 is that you gain all of the advantages of security improvements that were included in Drupal 8 and each subsequent feature upgrade. In this blog post, Peter Wolanin of Acquia details some significant security improvements included in the initial Drupal 8 release. Drupal 9 has additional advantages such as support for PHP 8.0.

Integration Risks

Certainly, security risks will come along, but another risk area in maintaining the status quo is that key integrations will eventually start to fail. For example, your Drupal environment may be integrated with another platform, and a key API on that platform is getting deprecated. Because the Drupal module that connects to it is no longer being actively maintained, you (or an agency you hire) will have to update the module or write a new custom module to keep integration working.

Functionality Risks

As the Drupal community continues to diminish the amount of activity on Drupal 7 core and contributed modules, especially after end-of-life, you basically lose those “free” updates. This is especially so with bug fixes. This forces you to either live with them or to fix them, or again, hire an agency to do it. If you do hire someone, that person won’t be as familiar with the project as one of the maintainers would be, so you’d have to factor in that additional investment. Indeed, some of these risks can be so critical that you end up rewriting large chunks of code to deal with them.

Not only do you miss out on the security improvements of Drupal 8/9 discussed above, not upgrading means you're missing out on many other improvements. Drupal 8 and 9 are built around a modern PHP stack including features such as Composer compatibility, Symfony components, modern OOP coding techniques, and more. While Drupal 7 has served our community well, it is not built upon the latest PHP libraries and development workflows that developers expect. This allows Drupal 8/9+ site owners the advantage of further enhancing their security posture by adding the Guardr security distro or module. While Drupal 8 and 9 have good security features, Guardr adds additional community vetted modules and settings which meet industry security requirements.

Talk To Us

As already mentioned, there are too many future unknowns to create a blanket business case for an upgrade investment. However, we can craft a business case specific to you based on the complexity of your existing Drupal 7 solution. We will factor in the number of modules you’re using, their complexity, the nature of your integrations with external systems, and more. We at Mediacurrent have performed this type of analysis for some of our clients to help them with their technology investment decisions and can do the same for you. Please contact us to learn more!

Jun 17 2021
Jun 17

2021 marks 20 years since DesignHammer started as a custom web development company. We couldn’t think of a better way to commemorate this milestone other than by unveiling our newly redesigned website. 

Developed in Drupal 8, the new website has been a highly collaborative process across the entire company. It’s been a truly successful team effort to launch the site and we are excited to share it with our clients, friends, and followers. 

Our new site has several features to help our visitors understand our company, our service offerings, and our values. Read about our documented, repeatable Process, a recently added feature designed to show site visitors our roadmap for building successful websites. Get to know Our Team and the company’s Story. Find highly detailed descriptions of the Services we offer across our wide technology stack — and don’t forget to check out our case studies and Client Testimonials from the last two decades!

In addition to the added content, the new DesignHammer website now features a custom chatbot designed to collect business information from prospects, direct site visitors to the content they’re looking for, and provide them the opportunity to live chat with the team during business hours. Go ahead and check out our new bot! If you are interested in learning how a website chatbot could streamline your customer and prospect communication pipeline, shoot us an email or simply message us through the chat window — we’d be thrilled to build you a custom bot!

Take a look around the new site, drop us a line, and keep an eye out for more content as we celebrate 20 years of delivering cutting-edge websites to our clients.

DesignHammer website before and afterDesignHammer website before & after
Jun 17 2021
Jun 17

In honor of DesignHammer’s 20th Anniversary, we thought it would be neat to ask the DesignHammer team what they thought the DesignHammer logo represented. For this fun thought experiment, staff members were asked to analyze various parts of the logo including the block/box graphic, any thoughts they were willing to share around typography and brand colors, and finally, what they thought the name “DesignHammer” meant. Part 2 of this series will explore staff interpretations around our company's name.

Here's what the staff had to say about the name "DesignHammer":

“A hammer is the building block of any construction project. And when it comes to websites, design is the first building block. To me, this just goes to show that DesignHammer does everything. This company is the building block for any great website. From my experience working here, everyone contributes something valuable, and we use everyone to learn more and grow more as a company.”

Madelyn Yonnetti, Graphic Designer


“Thematically, it invokes the idea of using the right tool for the right job.”


Jay Roberts, Lead Developer


“To me, the name DesignHammer connotes two concepts that I feel we try to deliver through our work at DesignHammer:

  1. The marriage of form and function, creating websites that both communicate our clients' brand message and serve as tools to further their organizational goals. I think many firms focus on one or the other, but we strive to achieve both.
  2. We take a pragmatic, workmanlike approach to our craft (web strategy, design, and development), focusing on getting the job done.”

Stephen Pashby, Account Manager

“Honestly, it doesn't make a whole lot of sense to me (lol), but I've always thought it sounded cool. Maybe it suggests that we can build designs that we and/or our clients dream up, i.e. we have the tools ["hammer"] & skills to turn web ideas ["design"] into realities.”


Tiffany Cissel, Developer

“DesignHammer was born during a different age of online branding, back when .com domain names with real words were still available, and before company names featuring generic-sounding, made-up words became more popular. This was also before the current trend of single-word names directly related to the focus of the company, be they dictionary or phonetic approximations. Back then industry leaders were the likes of "Frog Design" and "Razorfish", and so "DesignHammer" was created along that theme.”

David Minton, Managing Partner


“Hammers have been historically used to shape and craft objects. Combine with Design and our job is to shape, craft, or breakdown design to make a new product.”

Dave Shepley, Development Strategist


“While the actual story behind how the name ‘DesignHammer’ was chosen is pretty pedestrian, names gain meaning in use as much as in being given.

To me, DesignHammer represents our basic philosophy of web development. The two words each have their own relevance, and together they paint a picture of how we approach our work.

Design represents both the obvious factor (design of look-and-feel and usability of websites), but also our commitment to operating based on data and feedback; in effect, operating by design. Our process is always rooted in purposeful action, not just doing something ‘because.’ Whether it’s development, consulting, content creation, or even internal HR processes, we try to make sure that there is a reason we’re doing something a certain way (even if sometimes that reason is just that we’re going to give a try and then see how to improve from there).

Which brings us to ‘Hammer.’ Truthfully, we use very few hammers in our approach to web development (shocking, surely). But both our processes and our development technique often uses iteration as a strategy. Whatever our first intention may be, we are constantly evaluating where we are, what has been working well, and what hasn’t. We then make some changes that we think will help, and repeat the process. But ‘DesignIterate’ is a mouthful, and just doesn’t work.

But in the physical world, there is a similarity in our iterative process and in hammering, as one would in a forge. The initial efforts get at least a rough shape, and something for the end client to react to; further strikes of the hammer refine the shape into a more functional and pleasing finished product. And when done correctly, that finished product is stronger for all of the efforts put into it.

So, what I want DesignHammer to represent is this: we’re always working with some purpose in mind, and we’ll keep refining it until we get it right. Whether that’s your website or our process.”


Michael Nicholson, Project Manager


“Counterintuitively to what one might think, I know for a fact that “DesignHammer” does not mean that we’re always ready to “hammer out designs” left and right, although that was my first (incorrect) impression of the name. DesignHammer is a partner agency, we aren’t a dev shop filled with code monkeys ready to do anyone’s bidding at the flip of a switch. Our development and design process is actually very careful and methodical; it is how we ensure continuous delivery of excellent web design and development solutions to our customers time and time again.”

“To this day I do not personally know what “DesignHammer” means, but if you’re seeking a quick turn-around agency who claims they can rapidly hammer out any design project you throw at them, then I have two things to say to you, 1. Be ready to sacrifice quality for speed and 2. Good luck with your search for a different vendor because that’s not exactly how we do things here at DesignHammer — Sorry!”


Hunter Deschepper, Account Manager


“Unfortunately it doesn't mean anything. It's a unique name and was an available domain at the time. Another name we almost considered was DesignTractor :P”


Frank Yonnetti ["DesignHammer" Co-Namer], Partner & Lead Designer

Jun 17 2021
Jun 17

Video Transcript:

"If you've installed or updated Acquia’s DevDesktop lately, you've seen this message:

Alternatives to Acquia’s DevDesktop For Local Drupal Development

And so you know that DevDesktop is approaching end of life.  

In this video, I'm going to give you two alternatives to Acquia’s DevDesktop For Local Drupal Development. You know I've used this software for years now and introduced literally thousands and thousands of people to Drupal using Acquia’s DevDesktop. It's a shame that it's going away, but we've got alternatives.

Let's dive in.

There are two excellent alternatives to DevDesktop:

  1. MAMP PRO: MAMP and MAMP PRO are available for both Mac and Windows.
  2. DDEV-Local

The first option, MAMP PRO, offers a lot more flexibility, but it's $89 USD, and an upgrade from any previous version is $39.50.  The Windows version is $79 USD. Here's what MAMP PRO looks like when it's up and running.

Alternatives to Acquia’s DevDesktop For Local Drupal Development

If you prefer to have a graphical user interface,also known as a GUI, then MAMP is the one you want to go with.  Adding a new site is as simple as clicking the plus icon just like in DevDesktop. The difference here is that you won't get some of the tools that DevDesktop gives you built in. Composer and Drush both need to be added manually, but there is excellent documentation on doing just that.

MAMP PRO allows you to select:

  1. PHP versions
  2. Apache version 
  3. Nginx

You can have SSL certificates, you can create as many databases as you need, and you can even provide a public url or transfer the site to the cloud. Another nice thing with MAMP is it very easily allows you to update your php.ini files, set up op cache which is always an error when installing drupal when it's not present, and the interface just gives you a lot of tools to work with right out of the box. Here it is drupal on MAMP:

Alternatives to Acquia’s DevDesktop For Local Drupal Development

This was installed using Composer, but as I mentioned you'll need to install Composer manually if you're going to use MAMP. There's an excellent tutorial here by www.div.digital on how to install Homebrew Composer and Drush on your Mac or for Windows.

The second, and probably better option, is DDEV-Local.  DDEV-Local is absolutely amazing, but it doesn't give you any graphical user interface. It's all command line base. One of the best tutorials I've seen for getting DDEV-Local up and running on your site is the local web development book by Mike Anello that is included with an OSTraining subscription, or you can order it straight from amazon.com.   

It is a really terrific book that covers:

  1. The basics of DDEV-Local.
  2. Getting a new site up and running with DDEV-Local; either drupal or wordpress.
  3. How you can use Drush, Composer, and other command line tools including git right, within DDEV-Local.

It's a fantastic book, and I strongly recommend it. There is also terrific documentation at DDEV.com.

I was able to get a site up and running with DDEV as well, also installed via composer.

A04DF5CA 090A 4738 9ED1 CCFBD8ED9CA1
Both MAMP Pro and DDEV-Local took me about 40 minutes to get set up and ready using the instructions I found either online or in the book.

While not quite as convenient as DevDesktop, these two alternatives will give you long-term stability in your local host drupal environment. I hope this has been helpful. 

If you'd like additional training using Mike Anello's book, OSTraining launched a new video course titled "DDEV Explained."  Be sure to check that out.

Thanks for tuning in today.  This is OSTips from OSTraining, and I'm Rod Martin."

[embedded content]

About the author

Rod holds two masters degrees and has been training people how to do "things" for over 25 years. Originally from Australia, he grew up in Canada and now resides just outside Cincinnati, Ohio.
Jun 17 2021
Jun 17

Lynette has been part of the Drupal community since Drupalcon Brussels in 2006. She comes from a technical support background, from front-line to developer liaison, giving her a strong understanding of the user experience. She took the next step by writing the majority of Drupal's Building Blocks, focused on some of the most popular Drupal modules at the time. From there, she moved on to working as a professional technical writer, spending seven years at Acquia, working with nearly every product offering. As a writer, her mantra is "Make your documentation so good your users never need to call you."

Lynette lives in San Jose, California where she is a knitter, occasionally a brewer, a newly-minted 3D printing enthusiast, and has too many other hobbies. She also homeschools her two children, and has three house cats, two porch cats, and two rabbits.

Jun 16 2021
Jun 16

You Might Also Like

Migrations from Drupal 7 can be as varied and diverse as humanity itself. Goals, audiences, servers, content models, and more all come together to form a unique fingerprint. No two migrations are ever really the same.

But despite the uniqueness of each, there are some commonalities. You can take steps to ensure your migration will be a success, no matter how complex or simple.

You just need to start planning it out.

Map out your Source

You need to know where you are coming from. This is how you begin to determine the length of the journey and how many supplies you’ll need along the way. 

Start mapping out your current Drupal 7 website.

Fields and content types

Make a list of all of your current fields and the content types they are attached to. Include the field type, machine name, and the complexity of the data stored in that field. You can come up with your own complexity scale that makes sense to your team. Some examples:

  • Basic - A single-value textfield
  • Intermediate - A formatted textfield. These fields can range in complexity depending upon what is allowed. Some allow only links and basic formatting, which are not complex, but others might allow embedded snippets and images. Move the scale accordingly.
  • High - Multi-value fields with multiple columns of data almost always need extra work to migrate. Field Collections and Paragraphs might fall in this category.
  • File - Sometimes, categorizing complexity by the type of data can be helpful. It depends on your eventual workflow or how many fields of a certain type you may have.

Spend some extra time thinking about your entity reference fields. More on this later.

For a quick start on getting all of your content types and fields listed in a spreadsheet, check out the Migration Planner module. View a sample spreadsheet created by the module.


Taxonomy vocabularies can also have fields attached, so you’ll want to make a list similar to what you have done with content types and their fields. But taxonomies have their own challenges.

Often, they help organize a Drupal site. By design, they are referenced by other entities and can have all the migration issues that come with that.

Taxonomy terms can also have their own hierarchy. If you have terms that are parents of other terms, find a way to record this relationship. Make a note of the depth.


Drupal 7 has many ways to manage files, so you need to document exactly what you have. You are likely using the Media and File Entity modules. Document which file types you are using, how many of each file type you have, and get an estimate of the storage space being used. As you did with content types and taxonomies, list the fields for each file type and categorize them.

If you are using native file handling, you will still want to map out what you have. Your developers will thank you.


There is no way to migrate your Views reliably, so each will need to be recreated on your new site. Each one represents some work. Some might rely on extra business logic in custom code or on plugins provided by contrib modules. Do an audit and determine any dependencies.


You will start to map out the contours of this as you take stock of your content types, taxonomies, and fields, but other things make up your overall architecture.

  • Menus - Not just the main menu and footer menus. Make sure you pull in contextual menus that might be embedded conditionally or placed via a block.
  • Other entities - Do you have other content entities besides nodes and taxonomies? Don’t forget about them. These could be custom components or something like Paragraphs.
  • Hosting - Detail out your current hosting platform. Resources, apps, integrations, etc. This might be something else you need to upgrade to ensure the smooth running of Drupal 8/9. Or you might be migrating onto a different hosting provider, and if that is the case, you want to at least keep parity with your current solution.

Pay special attention to your entity reference fields that you identified in previous steps. These can mask hidden domain knowledge and act as pillars for your entire site architecture. Dig into them. Make sure you know their purpose.

Contrib modules

Make a list of all Drupal 7 contrib modules you have installed. Contrib modules can represent a lot of effort in a migration, so you’ll want to explore each one in-depth. Is there a Drupal 8/9 equivalent? If so, is the new module stable? How much work is left? 

Alternatively, a module could have been rolled into Drupal core. If so, you’ll want to see if there are any differences so you can take those into account during the migration.

If no current module exists, what is the estimated level of effort to recreate this functionality?

Custom functionality

Make a list of all of your custom modules. Be sure also to make a note of business logic that might be in your custom themes. A lot can be embedded in template files.

You should note the complexity of the functionality and what it is used for. You’ll want to check the Drupal 8/9 contrib ecosystem to see if any modules can replace this custom functionality. This might entail conversations with your stakeholders and team about priorities and goals. A contrib module might replace 80% of your custom module, and you need to know if that is acceptable or not.

If you have limited resources, you might also want to mark custom functionality on a spectrum of “mission-critical” to “nice-to-have.”

These conversations will continue as you map out your destination.

What do you not want to migrate?

Now is a good time to do a site audit. As you are compiling all of this information and start having conversations around your goals and content model, come up with criteria for what shouldn’t be migrated. The less you have to migrate, the less work you’ll need to undertake.

Is there a cutoff date for old articles? A certain taxonomy that is no longer used? Are some fields for cosmetic purposes, and they won’t be relevant for your new design? Do all users need to be migrated over? What about unpublished content? Or revisions? Cutting out revisions will reduce the size of your database drastically, but then editors will not be able to view past changes. 

This is where a little bit of work can pay big dividends later.

Some additional questions to ask

  • How will you handle files? Files can be transferred during the migration itself, but sometimes it’s better to do one big transfer, so your migrations run more quickly. This usually means some cleanup of unused files beforehand. If you have a lot of files not managed by Drupal, moving the filesystem in bulk might be necessary.
  • Will you keep the same paths for your content or change them? If your paths are changing, be sure you have a good 301 redirect solution in place.

Map out your Destination

You need to know where you are going. This can be done in parallel to mapping out your source because what you determine here will help answer some of the questions above.

Start by figuring out the literal destination for your new Drupal 8/9 site: the servers and hosting. Whatever your setup, you’ll need to plan some way for it to access your Drupal 7 site. This can be as simple as copying the database and files over to the new platform.

But if your site is huge, or you want to do a continuous migration until a final cutoff date, you’ll want access to the live production data. Or at least a replica that stays up to date.

You’ll also want to make plans for a development or testing environment that will mimic your final destination server as much as possible.

Evaluate your content model

You can keep everything exactly the way it is. Same content types. Same fields. Same everything. Drupal will do a good job of re-creating these for you on the new site. If you are limited in time and budget or your site is not complex, this might be the best way to go.

Be warned. If you have relied on the body field for creating complex content, you will still have a lot of work to do, even if you don’t plan on reworking your content model. And regardless, you still need to understand the gaps created by your custom functionality and reliance on certain contrib modules.

For these reasons and many others, a migration is a good opportunity to rework your content model to better align with your strategy and the needs of your audiences. Especially editors. Don’t forget them! It’s also a good opportunity to structure your content for the needs of a“publish everywhere” ecosystem.

Run some workshops that clarify your priorities. Document a new content model that takes those priorities into account. Add additional columns to the spreadsheet you created for your source content types and fields. These columns should contain the machine names of your new content types and fields.

Sometimes you’ll find a need to consolidate content types and/or fields. Two content types funnel into one new content type. Or three different fields are cleaned up into one single field. That should be expected. And Drupal’s migration tools make it simple to do this.

Clarifying your new content model will also help answer questions about your Drupal 7 site, like what content you need to leave out of the migration.

WYSIWYG cleanup

Your body fields (and other formatted text fields) might have accumulated a lot of cruft in the years your Drupal 7 site has existed. Different ways of displaying images, iframes, custom embed codes, etc. You’ll have to deal with each of these.

Cleaning up a formatted body field can balloon into an entire project by itself. Be sure you inventory everything that occurs in a body field, document what needs to be migrated as-is, document what needs to be transformed, and document what can be ignored or deleted. If you are changing your text filters and formatting rules, you’ll want to make sure your content meets those new requirements.

The SQueaLer module helps you find these issues, among other things. This is still in development and might need some tweaking to work with your particular Drupal site.

Again, having conversations around your new content model will pay heavy dividends here. You can come out of this migration with not just a new website but a better website that better accomplishes your goals.

And a website that your editors actually like to use. 

WYSIWYG cleanup goes a long way. Don’t limit cleanup to code, either. Sometimes, manual cleanup makes more sense.

Development Workflow

Once you have mapped your source and destination, you’ll be able to start estimating the level of effort involved. 

Team planning

A lot of migration work can happen in parallel, but the schedule will depend upon your budget and the team you have in place.

We have seen migrations be successful with one backend developer, and we have seen migrations be successful with four back-end developers. There is a point of diminishing returns. You don’t want too many cooks in the kitchen. If you have experienced developers on your team, they should be able to help you determine when you might reach that point.

Splitting up migration work based on field types has worked well. We have found it helpful to start with more basic fields to get momentum. You get the overall processes hashed out without worrying about complex data sets and transformations.

An example way of breaking up responsibilities between developers might look like the following:

  • Basic fields and simple formatted fields
  • File/image fields
  • Paragraphs, field collections, and other entity references
  • WYSIWYG cleanup
  • Contrib module updates and replacements
  • Custom functionality

There will be some overlap and bleeding across these boundaries, but these are a good starting point in terms of spheres of initial responsibility. Keep in mind that the complexity of your content model can have big ramifications for your team planning.

Solution preferences

When configuring a particular migration, you want a clear order of preference for the solutions you use. This will help save you from extra work and unnecessary technical debt.

The simplest migration entails mapping one field to another in a configuration file. Even basic transformations can be accomplished with this. These will usually invoke plugins that are included in Drupal core or contrib modules. Start here first.

If core and contrib fail you, move to writing your own source, process, or destination plugins. This should cover most of your use cases.

For certain edge cases, you can invoke hooks and react to events at different stages of the process.

QA and testing

Migrations require QA and testing, so be sure and budget time for that. Having a good development server or environment builder like Tugboat will allow migrations to be run and issues surfaced. 

Stakeholders can check migrated content to make sure everything shows up as expected. Other developers can validate results and look at the underlying data structure. 

This is also where you’ll want to grab any logs generated by the process.

Logging and exceptions

In our experience, migrations create a lot of noise. Warnings, errors, notices, etc. Some of these can be safely ignored, but to figure that out, you’ll want to pay attention to the logs. This is more important if you have several developers working in parallel or you are migrating several sites, each of which might have different edge cases.

But even if you have just one backend developer on the task, you’ll want to make a habit of going over the logs regularly.

  • Some can be ignored. Ignore them.
  • Some need greater clarification from a developer. Make those clarifications and see if a new ticket needs to be created.
  • Some need the attention of a stakeholder. Circulate these and discuss them in your status updates. If you aren’t sure how to handle that rogue iframe, ask.
  • Some need fixing. Though some might also be a low priority. If so, make a ticket, put it in the backlog, and keep moving.

When logging issues, be sure to record the current row id and the relevant migration id. This practice can help you find edge cases. Core and contrib migration plugins will provide logs, but if you end up writing custom plugins, be sure to add logging with clear messaging wherever issues might happen. Write custom plugins defensively.

Nested fields (Paragraphs and Field Collections)

If you are dealing with nested fields of structured data, pay special attention to how they are structured and how you will deal with them on the new site.

Paragraphs and Field Collections are the most common, but you might also have a custom solution build with entity references and content types. There are a lot of different ways you can go, and each way has its challenges. It also depends on how your editors best like to work.

Paragraphs to Paragraphs? If so, are you changing the structure?

Field Collections to Paragraphs?

Paragraphs or Field Collections to embedded entities in the body field?

Paragraphs or Field Collections to a custom structure implemented via entity references?

Or maybe you have embedded entities and want to migrate them to Paragraphs?

This is why evaluating your content model is so important. Each path has implications. You don’t want to simply choose the default path. You want to choose a path with intention, with your eyes open, understanding the challenges you need to overcome to get to the other side.


Planning properly can help you budget properly for both team size and timing. You can get a bigger picture and map out the potential minefields before you even start on your journey.

  • Map your source
  • Map your destination
  • Pay attention to WYSIWYG cleanup
  • Think about your development workflow to maximize resources

If you want an experienced partner that can help you through every stage of the migration process, reach out. We would love to help.

Jun 16 2021
Jun 16

In November 2022, the Drupal community and the Drupal Security Team will end their support for Drupal 7. By that time, all Drupal websites will need to be on Drupal 8 to continue receiving updates and security fixes from the community. The jump from Drupal 7 to 8 is a tricky migration. It often requires complex transformations to move content stuck in old systems into Drupal’s new paradigm. If you are new to Drupal migrations, you can read the official Drupal Migrate API, follow Mauricio Dinarte’s 31 Days of Drupal Migrations starter series, or watch Redfin Solutions’ own Chris Wells give a crash course training session. This blog series covers more advanced topics such as niche migration tools, content restructuring, and various custom code solutions. To catch up, read the previous blog posts Custom Migration Cron Job, Migration Custom Source Plugin, and Connecting a Transact SQL Database to Drupal.

Migrating from Drupal 7 to Drupal 8 often requires restructuring your content, like transforming an unlimited text field into paragraphs or a list text field into a taxonomy reference. The tricky part is that the migration pipeline wants each source entity to go to one destination entity, but each paragraph or taxonomy term is a new entity and a single node can reference several of these.

So how do you break up data from one entity and migrate it into multiple entities?

Manual entry

If there’s a small set of old content or you’re already manually adding new content, then manual entry is a viable solution, but it shouldn’t be the default for large migrations. Going this route, you want to set up content editors for easy success. If possible, reduce the number of actions needed for a repeated task. With some clever string concatenation in your query results, you can create exact links to all the node edit pages that need updating. This is much easier than giving someone a node id or page title and asking them to fix that page. Just because it’s not an automatic migration, doesn’t mean we can’t automate aspects of it.

The CSV Importer module is useful for simple data that already exists in a CSV file or can be quickly exported as a CSV file. For example, a spreadsheet with hundreds of country names could easily be imported as taxonomy terms with this tool. Or a list of emails and names could be imported as Users. Once you’ve migrated your data, you can reference them in other migrations using the static_map plugin or a custom process plugin to lookup the correct entity reference. Be careful not to abuse the static_map plugin with hundreds of mappings. In the country example, if the source data contains the name of the country that you want to reference in the destination, you could write a process plugin that gets the taxonomy id from the name. Remember that once entities are migrated you can use the full power of Drupal to find their id’s in later migrations.

Generate entities during migration

Use the entity_generate plugin or a custom plugin to create the entities during the migration process. This gives more control over how the data is transformed, but there’s no way to rollback or update the generated entities through the migration API. This shouldn’t be the default, but can be necessary for more complicated matters such as breaking down a dense wysiwyg field into separate paragraphs (see Benji Fisher’s custom process plugin).

Migrate entities separately with a custom source plugin

See our earlier blog post for a step-by-step guide on this. Drupal core provides lots of useful source plugins, but sometimes you need a custom query to migrate specific source data into entities. This approach gives you that flexibility within Drupal’s migration workflow. Unlike the previous option, you can still rollback and update entities and leverage all the other migration tools.

How you perform a data transformation like this is largely contextual, but these are powerful tools that can be used in many cases. Contact us with any questions regarding complex Drupal migrations, or if you are looking for a Drupal agency to help with your next website project.

Jun 16 2021
Jun 16
easy hreflang module install and configuration


Credit and Thanks

Thank you to Mark Burdett for creating and maintaining this module.

About the Hreflang module

The Hreflang module automatically adds hreflang tags to your pages. Search engines reference the alternate hreflang tag to serve the correct language or regional URL in search results which is important for multilingual websites.

In Drupal, the Core Content Translation module does add hreflang tags to translated entity pages. However, hreflang tags should be added to all pages, even untranslated ones. This module manages this for you.

Install and Enable the Hreflang module

  1. Install the Hreflang module on your server. (See this page for more instructions on installing modules.)
  2. Go to the Extend page: Click Manage > Extend (Coffee: “extend”) or visit https:///admin/modules.
     installing the hreflang module
  3. Select the checkbox next to Hreflang and click the Install button at the bottom of the page.

There are no permissions to set or further settings to change.

an example of what hreflang looks like in the code

As you can see from the above screenshot in the example website, the hreflang for each different language version of the site has been set by the Hreflang module.

Did you like this walkthrough? Please tell your friends about it!

facebook icon twitter social icon linkedin social icon

Jun 16 2021
Jun 16

Enterprise agility is one of the most commonly adopted transformation approaches which comes up along with a lot of challenges. The companies need to reshape the organizational structures, make changes in the operational models and reform the old ways of working techniques. The agile transformation includes a big shift in organizational culture and that makes an organization ponder over it or even neglect it. But eventually, organizations realize the importance of it, apply agile transformation techniques, and receive immense benefits that help them evolve and move closer towards their goals and aspirations. This article will guide you through the right approach needed towards adopting the agile transformation in your organization. 

To successfully adopt an agile transformation, you need a plan

To succeed with the agile transformation, you need to clearly understand the fact that why are you making such time and effort to adopt this transformation and what exactly you want to gain from it. It is important to have clarity upon what changes you will have to make so that the desired outcomes can be achieved by your business. For this let’s firstly, understand the importance of preparing a proper business case for adopting agile transformation at your organization. It is important to convince the decision-makers to realize the significance of approaching agility in the work culture with the right business case. Before that, go through what agile development methodology actually means.

Making business case for agile transformation

A business case explains the main objectives of the organization in regards to agile transformation. Generally, adopting agile leads to desired business outcomes but only if it is approached in the right manner. Therefore, it is essential to have some set important goals which will help in the overall growth of the company with agility. Here is an insight into the recommended goals.

Illustration showing multiple arrows forming a circle to explain agile transformation

The first and foremost goal is to meet customer commitments on time. It helps in building trust between customers and the company leading to customer satisfaction. Secondly, it is essential to maintain high-quality products and services as at times companies fail to deliver suitable services as promised to the customers. This further helps in building a good brand reputation for the company. Thirdly, one of the aims of adopting agility in an enterprise is to efficiently reduce their costs and maximize profits. Lastly, the companies expect an early return on investment with agility as by practicing traditional working methods they struggle with long delivery cycles which do not allow them to receive early return on investment. Read this complete guide on agile transformation to know more.

Now, we will get an overview of the transformation hypothesis to help us approach agility in the right way.

A step closer to agility with Transformation Hypothesis

A Transformation Hypothesis describes the real purpose behind choosing agile transformation. Along with accepting agility, companies have to be flexible enough to embrace change in various working techniques. But sometimes it might not sound comfortable for the employees as they are accustomed to working with the same old traditional techniques. So, in situations where employees aren’t confident enough and are faced with certain challenges, the companies should proactively help them to overcome such difficulties and welcome change. Below are some of the concerns which need to be resolved to strongly practice agility in your organization.

Picture showing multiple circles to describe the concerns that are faced while practicing enterprise agility

Culture change isn’t the only solution 

It is observed that adopting agility brings a big shift in the work culture of an organization, so we assume that the culture change alone will look after all the necessary steps and efforts required to successfully implement such a transformation within the company. But in reality, it isn’t so. There is also a need for proper guidance in forming cross-functional teams which have various functional expertise to increase innovation in products and services. To succeed with agility, the company will have to look upon various factors, apart from considering culture as the only means to improve agility.  

Process training alone cannot bring agility

We get to see that employees are given training from coaches to learn new methods and techniques, also expecting them to be capable enough to face any challenges which they witness while practicing agility. But the problem here is, it is nearly impossible to handle technical, governance, and organizational issues by employees with the process education obtained during the training sessions. Such issues need to be resolved by providing essential support to the company employees to tackle such hard situations.

Need for a right ecosystem

To reach the desired level of agility, there is a need for an ecosystem that facilitates continuous improvement to achieve a company’s agility goals and objectives. If a company fails to build the right ecosystem, it will be challenging to sustain agility in an organization for better adaptability and resilience.

Strategize plans according to the size of the organization

One has to strategize plans depending on the size of the organization to sustain agility. For example, the strategy which you will use for transforming a single team will certainly differ from the strategy you plan for a large-sized company having 500 or more employees. In the same manner, if you are leading a group of five to seven people, sending them to training sessions might be sufficient. But if you lead 1000 employees, the planning and arrangement must be executed on a much different level. So, it justifies the fact that the size of the organization is to be considered while adopting agility.

Overcome the challenge of dependency 

Dependencies can bring hurdles in successfully attaining agility in organizations. When we have small teams, it is easier to manage dependencies but if we have multiple teams working towards the same goal, it becomes very difficult to handle inter-team communication and collaboration. So, removing dependencies shall be one of the primary tasks. For smooth delivery of products and services, it is very essential to strategize plans to overcome dependencies and develop agility in an organization.

Benefits achieved by adopting agile transformation

Many organizations have received benefits from practicing agile transformation in recent years. They need to put the right agile transformation approach to attain the desired business outcomes with this transformation. The agility in enterprises allows flexibility to adapt new organizational practices and techniques leading to maximization of business value. 

Moving forward, we will discuss some of the benefits which are attained by companies adopting agile transformation in their business. 

Picture formed by various circles describing the benefits of agile transformation

Maximise customer satisfaction

With agility, companies mainly focus on adding value to the customer experience by understanding their requirements and making early delivery of products and services. It helps in evolving customer satisfaction by prioritizing customer feedback to improve the product quality as per their expectations. Enterprise agility allows employees to provide services with expertise, proper collaboration among various teams, and transparency which leads to an increase in customer satisfaction.

Here is an example of Asia Pacific Telco, which adopted an agile operating model to meet customer needs and was successful in increasing customer satisfaction by implementing new ideas and techniques into their work process. Below is the diagram showing the transformation shift towards a positive direction leading to a great customer experience.

Illustration showing triangles formed by small circles to explain benefits of agile transformationSource: McKinsey & Company

Increase employee engagement

Adopting agility facilitates employees the ability to use their creativity to produce better work performance and results. It gives them a sense of ownership to take all the necessary decisions to improve their work productivity and help them feel valued in the workplace. Such flexibility helps in increasing employee engagement to a great extent also empowering companies to reach their desired goals and ambitions. For instance, read how you can build a diverse and inclusive team by leveraging agile techniques.

Raising operational performance

Agility helps in providing various business models to the organizations which further helps in improving the operational performance according to the desired expectations. Due to this agile transformation, the companies are availed with various approaches which help in increasing the speed of company decision making and product development. The target achievement rate can be seen improving remarkably, by the agile companies which prove to be one of the major achievements of a progressing enterprise. 

Growing competence towards changing priorities 

With agility, a behavioral transformation takes place among the employees to reach their highest potential in embracing change and innovation. They learn to handle the changing priorities within the organization in the form of resources re-location to a team who needs support and assistance to survive the challenges which come along with agility. They get comfortable with the changes that take place in their work process and techniques, accepting change for better company growth. 

Enhance project visibility

Project visibility provides a clear vision of a project performance which includes allocating resources, potential risks, and proper distribution of responsibilities. Increased visibility ensures everyone involved in the project understands the objective of the project and their role in meeting the business goals and aspirations. It gives clarity to stakeholders regarding the real-time status of the project. Agility helps in changing any project plan or initiative following customer or stakeholder needs and requirements for better project performance. For instance, read how imbibing agile documentation processes helps improve project management.

Improving Business and IT alignment

Business IT alignment can be regarded as a business strategy that helps in achieving the business objectives leading to improved financial performance. This alignment is necessary to adapt to the constant change in the company and environment due to agility. Therefore, both business agility and business-IT alignment should go hand in hand to maintain company growth and development. For instance, read how the inclusion of agile processes to the testing phases of software development can be immensely beneficial.

Lastly, the most important benefit which we witnessed recently by adopting the agile transformation is the flexibility of working at our convenience during the pandemic of COVID 19. Due to this pandemic, the organizations felt the need for agile transformation rather than sticking to the old traditional transformation techniques which created hurdles in the proper functioning of their business. According to McKinsey’s research with Harvard Business School during COVID-19, agile companies have received better results in comparison to non-agile companies.

Graphical representation of the agile companies' improving performance post COVID 19 crisisSource: McKinsey & Company

Companies sharing their successful journeys with agile transformation

With agility, many organizations have achieved immense success leading their business towards their set goals. Here are some of the companies sharing their success stories which can act as a motivation for everyone to move towards agile transformation. 


Ericsson aimed at improving the delivery of products within the stipulated time leading to an increase in customer satisfaction. To achieve this target, they adopted agility in 2008. They implemented cross-functional teams which could focus on specific projects along with building effective communication across several teams. Instead of individual targets, each team worked towards both organizational and group goals to receive desired results. After making such changes with the help of agile transformation, Ericsson could successfully achieve speedy development, faster customer feedback, and generate higher revenue according to desired company standards. 

Bank of America

In late 2012, the agile transformation in global markets at Bank of America began. Merrill Lynch, the director of global markets technology at the Bank of America expressed that their main aim was to improve the time to deliver better company solutions and also reduce key person dependencies across his technology team. They adopted Scrum (a specific Agile methodology) also providing an environment to the employees where they could experiment by taking risks to bring exceptional work results. The cross-functional team formation too was encouraged to turn business ideas into working products for achieving company targets. After a year of consistent efforts, they finally succeeded in meeting their business goals with agility.


LEGO attained success by adopting agile transformation in early 2018. They adopted this approach in their two large digital departments. After such adoption, they witnessed various improvements in several areas like market engagement, digitalization, and reduction in project delivery time. This further brought a sense of motivation and satisfaction among the employees. So, with this transformation, LEGO could set a successful journey of embracing change. 

To get more insight on a company's smooth agile transformation, you can go through this book-   “Agile Transformation: A Brief Story of How an Entertainment Company Developed New Capabilities and Unlocked Business Agility to Thrive in an Era of Rapid Change” which will give you an idea about a company in the entertainment industry who got excellent results by adopting agility in its work culture. This will be a good read.

Here is a video presented by Scrum Alliance about IBM’s wonderful experience of learning, implementing, and overcoming challenges with agile transformation. Without any further wait, take a look at their exciting agile transformation journey.

[embedded content]

Final thoughts

Agility is an approach to drive performance and provide endless innovation to organizations. Adopting this transformation can break the old traditional working methods enabling to achieve tremendous growth and advancement in business. So, the organizations will have to step out of their comfort and strive for something new which can deliver exceptional business outcomes.

Jun 16 2021
Jun 16

What’s new in Drupal 9.2.0?

The second feature release of Drupal 9 helps keep your site even more secure, and comes with increased visitor privacy protection, improved migration tools from Drupal 7, enhancements to the Olivero frontend theme and early support for the WebP image format.

Download Drupal 9.2.0

Security and privacy improvements

Critical security advisories and public service announcements will now be displayed on the status report page and certain administration pages for the site's administrators. This helps prepare site owners to apply security fixes in a timely manner. For increased privacy protection of your site visitors, Drupal 9.2.0 now blocks Google Federated Learning of Cohorts (FLoC) cookie-less user tracking by default.

Better building blocks out of the box

The Olivero theme, soon to be Drupal's new default frontend theme, has dozens of major improvements in this release, including a new form design and various accessibility fixes. The built-in Umami demo is now also more flexible with a built-in editor role and more versatile Layout Builder demonstration.

On the way to Drupal 10

In preparation for Drupal 10, all Symfony 5 and and several Symfony 6 compatibility issues have been resolved. As part of modernizing the frontend of Drupal 9, core's Tour feature now uses ShepherdJS instead of jQuery Joyride. This significantly improves accessibility of tours and removes one more reliance on jQuery.

Other improvements

The already stable migration path from Drupal 7 is now expanded with migrations for user settings, node/user reference fields and other previously missing pieces.

Drupal's GD toolkit integration, and, therefore image styles, can now manage WebP images. There is more to do for complete WebP support. Stay tuned for improvements in future releases.

Sneak peek at future core features

The upcoming core CKEditor 5 upgrade is being worked on in a contributed project. Progress has been made on various aspects of the roadmap, and the project is near to completing all issues identified as requirements for tagging a beta release. Core inclusion is expected in Drupal 9.3.0, but contributed projects are requested to build compatibility ahead of that.

The Automated Updates Initiative has been very active in the repositories under https://github.com/php-tuf building a PHP implementation of The Update Framework (TUF) with Typo3 and Joomla developers to provide signing and verification for secure PHP application updates. Results will be included with later Drupal releases.

Check out the initiative keynotes from DrupalCon North America 2021 on what else is in the works.

What does this mean for me?

Drupal 9 site owners

Drupal 9.0.x is now out of security coverage. Update at least to 9.1.x to continue to receive security support.

Drupal 8 site owners

Update to at least 8.9.x to continue receiving bug fixes until Drupal 8's end of life in November 2021. The next bug-fix release (8.9.17) is scheduled for July 7, 2021. (See the release schedule overview for more information.) Versions of Drupal 8 before 8.9.x no longer receive security coverage.

With only five months left until the end of life of Drupal 8, we suggest that you upgrade from Drupal 8 to Drupal 9 as soon as possible. Upgrading is supported directly from 8.8.x and 8.9.x. Of the top 1000 most used drupal.org projects, 94% are updated for Drupal 9, so the modules and themes you rely on are most likely compatible.

Drupal 7 site owners

Drupal 7 is supported until November 28, 2022, and will continue to receive bug and security fixes throughout this time. From November 2022 until at least November 2025, the Drupal 7 Vendor Extended Support program will be offered by vendors.

On the other hand, the migration path for Drupal 7 sites to Drupal 9 is stable. Read more about the migration to Drupal 9.

Translation, module, and theme contributors

Minor releases like Drupal 9.2.0 include backwards-compatible API additions for developers as well as new features.

Since minor releases are backwards-compatible, modules, themes, and translations that supported Drupal 9.1.x and earlier will be compatible with 9.2.x as well. However, the new version does include some changes to strings, user interfaces, internal APIs and API deprecations. This means that some small updates may be required for your translations, modules, and themes. Read the 9.2.0 release notes for a full list of changes that may affect your modules and themes.

This release has further advanced the Drupal project and represents the efforts of hundreds of volunteers and contributors from various organizations. Thank you to everyone who contributed to Drupal 9.2.0!

Jun 16 2021
Jun 16

What’s new in Drupal 9.2.0?

The second feature release of Drupal 9 helps keep your site even more secure, and comes with increased visitor privacy protection, improved migration tools from Drupal 7, enhancements to the Olivero frontend theme and early support for the WebP image format.

Download Drupal 9.2.0

Security and privacy improvements

Critical security advisories and public service announcements will now be displayed on the status report page and certain administration pages for the site's administrators. This helps prepare site owners to apply security fixes in a timely manner. For increased privacy protection of your site visitors, Drupal 9.2.0 now blocks Google Federated Learning of Cohorts (FLoC) cookie-less user tracking by default.

Better building blocks out of the box

The Olivero theme, soon to be Drupal's new default frontend theme, has dozens of major improvements in this release, including a new form design and various accessibility fixes. The built-in Umami demo is now also more flexible with a built-in editor role and more versatile Layout Builder demonstration.

On the way to Drupal 10

In preparation for Drupal 10, all Symfony 5 and and several Symfony 6 compatibility issues have been resolved. As part of modernizing the frontend of Drupal 9, core's Tour feature now uses ShepherdJS instead of jQuery Joyride. This significantly improves accessibility of tours and removes one more reliance on jQuery.

Other improvements

The already stable migration path from Drupal 7 is now expanded with migrations for user settings, node/user reference fields and other previously missing pieces.

Drupal's GD toolkit integration, and, therefore image styles, can now manage WebP images. There is more to do for complete WebP support. Stay tuned for improvements in future releases.

Sneak peek at future core features

The upcoming core CKEditor 5 upgrade is being worked on in a contributed project. Progress has been made on various aspects of the roadmap, and the project is near to completing all issues identified as requirements for tagging a beta release. Core inclusion is expected in Drupal 9.3.0, but contributed projects are requested to build compatibility ahead of that.

The Automated Updates Initiative has been very active in the repositories under https://github.com/php-tuf building a PHP implementation of The Update Framework (TUF) with Typo3 and Joomla developers to provide signing and verification for secure PHP application updates. Results will be included with later Drupal releases.

Check out the initiative keynotes from DrupalCon North America 2021 on what else is in the works.

What does this mean for me?

Drupal 9 site owners

Drupal 9.0.x is now out of security coverage. Update at least to 9.1.x to continue to receive security support.

Drupal 8 site owners

Update to at least 8.9.x to continue receiving bug fixes until Drupal 8's end of life in November 2021. The next bug-fix release (8.9.17) is scheduled for July 7, 2021. (See the release schedule overview for more information.) Versions of Drupal 8 before 8.9.x no longer receive security coverage.

With only five months left until the end of life of Drupal 8, we suggest that you upgrade from Drupal 8 to Drupal 9 as soon as possible. Upgrading is supported directly from 8.8.x and 8.9.x. Of the top 1000 most used drupal.org projects, 94% are updated for Drupal 9, so the modules and themes you rely on are most likely compatible.

Drupal 7 site owners

Drupal 7 is supported until November 28, 2022, and will continue to receive bug and security fixes throughout this time. From November 2022 until at least November 2025, the Drupal 7 Vendor Extended Support program will be offered by vendors.

On the other hand, the migration path for Drupal 7 sites to Drupal 9 is stable. Read more about the migration to Drupal 9.

Translation, module, and theme contributors

Minor releases like Drupal 9.2.0 include backwards-compatible API additions for developers as well as new features.

Since minor releases are backwards-compatible, modules, themes, and translations that supported Drupal 9.1.x and earlier will be compatible with 9.2.x as well. However, the new version does include some changes to strings, user interfaces, internal APIs and API deprecations. This means that some small updates may be required for your translations, modules, and themes. Read the 9.2.0 release notes for a full list of changes that may affect your modules and themes.

This release has further advanced the Drupal project and represents the efforts of hundreds of volunteers and contributors from various organizations. Thank you to everyone who contributed to Drupal 9.2.0!

Jun 16 2021
Jun 16

What’s new in Drupal 9.2.0?

The second feature release of Drupal 9 helps keep your site even more secure, and comes with increased visitor privacy protection, improved migration tools from Drupal 7, enhancements to the Olivero frontend theme and early support for the WebP image format.

Download Drupal 9.2.0

Security and privacy improvements

Critical security advisories and public service announcements will now be displayed on the status report page and certain administration pages for the site's administrators. This helps prepare site owners to apply security fixes in a timely manner. For increased privacy protection of your site visitors, Drupal 9.2.0 now blocks Google Federated Learning of Cohorts (FLoC) cookie-less user tracking by default.

Better building blocks out of the box

The Olivero theme, soon to be Drupal's new default frontend theme, has dozens of major improvements in this release, including a new form design and various accessibility fixes. The built-in Umami demo is now also more flexible with a built-in editor role and more versatile Layout Builder demonstration.

On the way to Drupal 10

In preparation for Drupal 10, all Symfony 5 and and several Symfony 6 compatibility issues have been resolved. As part of modernizing the frontend of Drupal 9, core's Tour feature now uses ShepherdJS instead of jQuery Joyride. This significantly improves accessibility of tours and removes one more reliance on jQuery.

Other improvements

The already stable migration path from Drupal 7 is now expanded with migrations for user settings, node/user reference fields and other previously missing pieces.

Drupal's GD toolkit integration, and, therefore image styles, can now manage WebP images. There is more to do for complete WebP support. Stay tuned for improvements in future releases.

Sneak peek at future core features

The upcoming core CKEditor 5 upgrade is being worked on in a contributed project. Progress has been made on various aspects of the roadmap, and the project is near to completing all issues identified as requirements for tagging a beta release. Core inclusion is expected in Drupal 9.3.0, but contributed projects are requested to build compatibility ahead of that.

The Automated Updates Initiative has been very active in the repositories under https://github.com/php-tuf building a PHP implementation of The Update Framework (TUF) with Typo3 and Joomla developers to provide signing and verification for secure PHP application updates. Results will be included with later Drupal releases.

Check out the initiative keynotes from DrupalCon North America 2021 on what else is in the works.

What does this mean for me?

Drupal 9 site owners

Drupal 9.0.x is now out of security coverage. Update at least to 9.1.x to continue to receive security support.

Drupal 8 site owners

Update to at least 8.9.x to continue receiving bug fixes until Drupal 8's end of life in November 2021. The next bug-fix release (8.9.17) is scheduled for July 7, 2021. (See the release schedule overview for more information.) Versions of Drupal 8 before 8.9.x no longer receive security coverage.

With only five months left until the end of life of Drupal 8, we suggest that you upgrade from Drupal 8 to Drupal 9 as soon as possible. Upgrading is supported directly from 8.8.x and 8.9.x. Of the top 1000 most used drupal.org projects, 94% are updated for Drupal 9, so the modules and themes you rely on are most likely compatible.

Drupal 7 site owners

Drupal 7 is supported until November 28, 2022, and will continue to receive bug and security fixes throughout this time. From November 2022 until at least November 2025, the Drupal 7 Vendor Extended Support program will be offered by vendors.

On the other hand, the migration path for Drupal 7 sites to Drupal 9 is stable. Read more about the migration to Drupal 9.

Translation, module, and theme contributors

Minor releases like Drupal 9.2.0 include backwards-compatible API additions for developers as well as new features.

Since minor releases are backwards-compatible, modules, themes, and translations that supported Drupal 9.1.x and earlier will be compatible with 9.2.x as well. However, the new version does include some changes to strings, user interfaces, internal APIs and API deprecations. This means that some small updates may be required for your translations, modules, and themes. Read the 9.2.0 release notes for a full list of changes that may affect your modules and themes.

This release has further advanced the Drupal project and represents the efforts of hundreds of volunteers and contributors from various organizations. Thank you to everyone who contributed to Drupal 9.2.0!

Jun 15 2021
Jun 15

Drupal 7 is nearing end of life (EOL) 

Drupal 7 will reach end-of-life (EOL) in November of 2022, which means that at least a half million webmasters & site owners have some decisions to make. What’s the next step for your organization’s website? What sorts of costs might you be looking at for this upgrade? What timeline can you plan on for this change? All good questions.

What is EOL and what does it mean to me?

The Drupal ecosystem of core and contributed modules is protected against hackers, data miners, automated exploits and other malicious actors by the Drupal Security Team — more than thirty developers working across three continents in almost a dozen countries to keep Drupal websites safe. The security team responds to reports of potential weaknesses in the Drupal core or contributed code and coordinates efforts to release new versions of the software that address those vulnerabilities.

The more than a million Drupal developers worldwide going about their day-to-day development tasks act as a passive network of quality control agents. Developers who discover security vulnerabilities while working with the code can confidentially report them so that the security team can go about fixing the problem before knowledge of the vulnerability is widely available. A million worldwide developers backing a thirty-something strong team of elite developers spells security — for your website, your data, and your organization.

In November of 2022, that all comes to an end for Drupal 7. That’s when the security team will officially retire from the Drupal 7 project in favor of modern versions of the platform. As new vulnerabilities in the code are discovered (and made public) you won’t have anyone in your corner to fight back with new security releases.

After EOL you can expect what’s left of the Drupal 7 community to move on, too. That means no new modules, new themes, or other new features built for the platform. It also means the pool of developers specializing in Drupal 7 starts to shrink very fast. If you’re still on Drupal 7 in late 2022, you’re out in the cold.

The good news is that there are options. Here are my top three picks:

Drupal 9: Drupal is dead, long live Drupal

Drupal 9 is the most modern iteration of the Drupal framework and CMS. It introduces a completely reimagined architecture and a rebuilt API more inline with modern development standards.

  • Cost: High
  • Build Time: High
  • Longevity: High
  • Support: High


Upgrading your site to the latest version of Drupal (9.1.10 at the time of this article) is, in most cases, the right move. Modern Drupal has grown to support a wide array of innovative features in core. Improved WYSIWYG content editing, a feature rich Media library, advanced publishing workflows, and rich JSON API are all available right out of the box. Couple that with Drupal’s new, highly modern architecture built on Symfony, the adoption of the Twig templating engine, and dependency management via Composer and you really do Build the best of the web in terms of technology, support, and longevity.

When you make the move to Drupal 9 you can count on Drupal’s huge and thriving community of developers (and security team) making the move right along with you. Existing modules from previous versions of Drupal are either — in almost all cases — already available, now packaged into core, or making their way to Drupal 9 at this moment. It’s very likely the agency you’re already working with has or is building a Drupal 9 proficiency, and it’s guaranteed that hundreds of other shops can pick up the slack in the odd case that your provider isn’t on board yet.

Finally, let’s not forget Drupal’s commitment to easy future upgrades which promises continuity in architecture that should facilitate easy upgrades to Drupal 10 and beyond. Gone are the days (probably) of “rebuild” style upgrades like those of Drupal 6 to Drupal 7, or Drupal 7 to Drupal 8/9.


Speaking of “rebuild” style upgrades... upgrading from Drupal 7 to Drupal 9 is one of them. While it could be your last major upgrade if you stick with Drupal for the long haul, moving from Drupal 7 to the more modern 8/9 and beyond architecture is a very heavy lift. For most organizations the move to Drupal 9 is the longest term, most feature-rich, most supported, and most modern option, but it generally entails a complete rebuild of your site’s backend and theme which basically means starting from scratch. Take a look at Joel’s post about the upgrade from Drupal 7 to Drupal 8 for more information — the process is comparable to a Drupal 7 to Drupal 9 upgrade.

Backdrop CMS: The same, but different

Backdrop CMS is a lightweight, flexible, and modernized platform built on Drupal 7 architecture with notable improvements. The software is a fork of the Drupal 7 code and boasts a simple, straightforward upgrade path.

  • Cost: Low / Medium
  • Build Time: Low / Medium
  • Longevity: Medium / High
  • Support: Medium


Drupal 7 sites moving to any other platform — including Drupal 8 / 9 — must be rebuilt. That’s not the case for Backdrop CMS, which gives you the option of protecting your investment in an existing Drupal 7 website and reaping the benefits of modern features like configuration management and advanced layout control. Backdrop CMS will prioritize backward compatibility with Drupal 7 until at least 2024, meaning that even fully custom Drupal 7 code — with very minor modifications — should work in the Backdrop CMS ecosystem. A large selection of widely used Drupal 7 modules are already available for Backdrop CMS, and more are on the way. And while backwards compatibility is a major selling point for Backdrop CMS, its architecture is forward thinking with the introduction of classed entities and an object-oriented approach to all of its new components and features.

While the Backdrop CMS developer community isn’t particularly large, Drupal 7 and Backdrop CMS development skill sets are virtually interchangeable for the time being due to the almost identical API. There’s also considerable overlap on the Drupal 8/9 front due to Backdrop’s preference for object-oriented code in all of its newly added features. That means your existing Drupal developers can help you make the switch, and while the upgrade process isn’t exactly seamless it’s definitely a far cry from a complete rebuild.

Backdrop CMS also has its own security team, which — for now at least — works closely with the Drupal security team. Active development for the current version of Backdrop CMS is planned through 2024 according to their Roadmap, with the next version of Backdrop CMS promising an even easier upgrade path compared to the Drupal 7 to Backdrop CMS upgrade.


Backdrop CMS implements both Drupal 7 style procedural coding and Drupal 8/9 style object-oriented coding, which in theory means that it caters to a wide range of developers. In practice it’s hard to predict the future of any up-and-coming development community. That makes the outlook for long term support a little opaque, in that it’s hard to say just how many developers will be supporting Backdrop CMS and building new features for it down the road a couple of years.

Also, while Backdrop CMS absolutely prioritizes backwards compatibility with Drupal 7, a greater number of contributed and custom modules in your existing site could complicate the upgrade process. Simpler Drupal 7 sites with fewer contributed and custom modules would probably encounter a low effort to complete the upgrade, while a greater number of contributed and custom modules are likely to see a medium effort as some of those modules may need to be converted.

Drupal 7 Vender Extended Support: Don’t move a muscle

Drupal 7 ES is the do nothing for now option. A small collection of approved and vetted vendors will be providing security updates and / or critical patches for Drupal 7 core and contributed modules following a variety of vendor-specific plans.

Note: I added some material to this article after publication regarding the points identified with asterisks*, based on feedback from an industry peer. Check it out at the bottom of the post.

  • Cost: Low
  • Build Time: None*
  • Longevity: Low / Medium
  • Support: Medium


The biggest plus here is simple: No further action is required at this time.* If you’re planning to work with a vendor that provides extended support for Drupal 7, you won’t need to take any action to protect your website from aging software until Drupal 7 EOL in 2022. At that point, you’ll need to plan on a flat or adjustable monthly fee through the end of 2025 — or possibly beyond. This could mean avoiding major financial decisions regarding your digital strategy for at least a few years, and all at a cost that (depending on the size of your organization / website) is probably a fraction of the cost of a software upgrade.

With the Drupal 7 EOL recently extended until November of 2022, many of these Vender Extended Support plans haven’t fully materialized — so details are still forthcoming. Agencies like Tag1Quo or MyDropWizard advertise services from a surprising $15 / month to $1250 / month for a range of beyond EOL Drupal support plans. Acquia and Lullabot are also named by Drupal.org as ES vendors — but without any specifics about pricing or support levels. While the picture isn’t entirely clear yet, availability of an affordable ES plan is virtually guaranteed by 2022.


Drupal 7 Vendor Extended Support may protect you against vulnerabilities and exploits discovered after Drupal 7 EOL, but community support will be all but dead by that time. That means no new features or modules will be released and the pool of Drupal 7 developers will be rapidly drying up. Unless you have an in-house development team, you can plan on your website coming to a standstill in terms of new features.

The amount of contributed and custom modules your site implements has an impact here, too. The greater number of custom and contributed modules, the greater you can expect the effort to be in supporting those modules beyond EOL.

Another concern with Drupal 7 ES is PHP 7 end-of-life. Once PHP 7 (the language Drupal 7 is largely built on) is no longer supported towards the end of 2022, you can expect the security of your Drupal 7 site to rapidly degrade. Updating Drupal 7 to be compliant with the newer, more secure PHP 8 is doable — but could be a difficult process.

Finally, it’s likely that you will still need to consider upgrading to a supported platform in the future if your website will need to change and adapt in the coming years. You can expect this process to become more challenging as time goes on and the gap between your existing website and modern platforms grows ever larger.

Taking the first step

There are other options, too. Moving from Drupal 7 to another platform entirely (WordPress?) could make the most sense depending on the complexities of your website. Moving to a less robust CMS could be nominally more cost effective than an upgrade to Drupal 9, but it also bakes in some hard limitations to what your website will be able to do.

A lot of organizations are beginning to evaluate options for their Drupal 7 sites. The best way forward depends largely on your goals as an organization, your ambitions for your digital presence, and the amount of time and effort you’re willing to invest. We’d love to consider your questions or learn more about the specific challenges you’re facing as you sort through your options. Get in touch today with your questions about upgrade paths from Drupal 7.

Additional notes for Drupal 7 Vender Extended Support, added June 22, 2021:
"Build time: None" is not strictly accurate - users who choose Drupal 7 ES will probably need to install an update status module to inform their chosen vendor of version data for their core and contributed modules. They will also need to adopt a new update strategy as their module updates will be coming from a new source (their chosen vendor). These steps won't need to be taken until we're closer to Drupal 7 EOL - perhaps the Spring or Summer of 2022.

"No further action required at this time" may be misleading. Action will be required as we approach Drupal 7 EOL in the Spring or Summer of 2022 - namely choosing an ES vendor and following their instructions.

Jun 15 2021
Jun 15
[embedded content]

Don’t forget to subscribe to our YouTube channel to stay up-to-date.

When someone tweets a link from your website, Twitter can use Twitter Cards to attach rich photos, videos and media to Tweets.

By doing some minimal configuration changes on your Drupal site using the Metatag Module and the Twitter Cards submodule, users can see a “Card” added below the tweet that contains neatly formatted information coming from your website, as shown in Image 1 below.

Image 1 shows an example of a “Card”.

The cards are generated using HTML markup in the HEAD region of your Drupal site; that’s why the Metatag module is used.

Twitter will scrape your site and generate the card using the HTML meta tags.

Table of Contents

Twitter Cards

There are four variations of Twitter cards. They are:

  1. Summary Card – Displays Title, description, and thumbnail
  2. Summary Card with Large Image – As the name suggests, similar to Summary Card but with a larger image
  3. App Card – A Card with a direct download to a mobile app. Use this Card to drive app downloads
  4. Player Card – Displays video/audio/media.

Image 1 above shows a “Card” of type Summary with Large Image.

In this tutorial, we will look at the steps involved in setting up the “Summary Card with Large Image” Twitter Card.

Getting Started

The Metatag module has a dependency on the Token module. However, if you download and enable the Drupal module using Composer and Drush, the dependency is automatically taken care of as we will show you now.

Use composer to download the module:

composer require drupal/metatag

Once the Metatag module is downloaded using composer, the Token module, which is a dependency, will be downloaded automatically.

Then enable the “Metatag: Twitter Card” submodule:

drush en metatag_twitter_cards -y

The above Drush command will automatically enable the Metatag: Twitter Card submodule, Metatag module and Token module.

Finally, it is always a good idea to clear the cache after enabling Drupal modules:

drush cr

Configure Twitter Cards

By default, Twitter Cards can be added to any content type. We will now configure the Twitter Cards for the Article Content type.

1. Go to Configuration > Metatag (admin/config/search/metatag) and click on “Add default meta tags”.

2. On the next page, select “Article” (or whatever content type you want to configure) from the Type dropdown.

3. Then click on Save. This is required for the correct tokens to appear in the “Browse available tokens” window.

4. Edit the “Content: Article” configuration from the Metatag page.

5. Click on “Twitter cards” to expand the field set and then select “Summary Card with large image” from the Twitter card type dropdown.

6. Now, we have to add tokens into the correct fields. Click “Browse available tokens.” then click on Nodes.

NOTE: If you can’t see “Nodes”, this means you need to save the “default meta tag” option first then edit it again.

Fill in the following fields:

  • Description: [node:summary]
  • Site’s Twitter account: Add your twitter account, i.e., @webwashnet
  • Title: [node:title]
  • Page URL: [node:url]
  • Image URL: [node:field_image] (adjust the field name accordingly)
  • Image alternative text: [node:field_image:alt] (adjust the field name accordingly)

Find Image Field Token

For this type of Twitter card, an image field must exist in your content type. We will show you how to use Token to grab that image data. Click on “Browse available tokens”.

Then drill down by going to Nodes -> Image. This assumes you’re using the Image (field_image) field on the Article content type.

The token should be [node:field_image].

Once you have found the image entity URL, make sure your mouse focus is in the empty Image URL Twitter Card meta tag field, and then click on the image entity URL token value. This will copy/paste the token value into the Image URL field.

Find Image Field Token on Media Asset

If you’re using a media field instead of an image field for handling assets, then use the following token, [node:field_media:entity:thumbnail] (change the field_media name accordingly).

7. Configure any extra fields as needed, then scroll down and click on Save.

8. Once you have filled out the other Twitter Card fields with their respective token values, you should validate the end result markup using the Twitter Card Validator tool. We will now show you how to validate your Twitter card.

As you can see, Twitter successfully recognised our “Summary with large image” card and displayed the information correctly.

NOTE: You’ll need to make sure your website is publicly accessible for the validator tool to work.

View HTML Source

If you want to see the generated markup, view the HTML source on your Drupal site and look for the “twitter:*” meta tags.


Twitter can display a neatly formatted version of your website’s content whenever someone’s tweets a link to your content. There are various types of Twitter cards depending on your needs.

We have shown how you can use the Metatag module and Twitter Cards submodule to configure Drupal 8 to correctly send your website’s content to Twitter and how to validate your markup to ensure Twitter correctly parses your website content.


Q: I changed the default meta tag configuration, but the tags are not changing?

Try clearing the site cache. Go to Configuration > Performance and click on “Clear all caches”.


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