
We recently wrapped up DrupalCon Global 2020. And we’d like to give you a sneak peek into our session. Our session Content Delivery of Tomorrow, Created by Drupal Today revolved around why content should be considered a part user experience and how Drupal enables content writers to reduce content roll-out time. With real-life examples and success stories where organizations that have adopted Drupal and empowered their Marketing teams to create a sustainable competitive advantage.
Over recent years, new features and roll-outs have evolved Drupal to become more than a CMS platform. Today, it is a Digital Experience Platform! As marketers, we are in a constant rush to bring forth contextual and targeted content for users. Drupal makes this content delivery seamless, effective, and faster.
Let’s take a look at Digital Around the World 2020

Digital platforms have experienced a surge in 2020 and Digital Marketing is getting more competitive. COVID-19 has uncovered different stress points for Marketing and IT.
Marketing acknowledges the need to connect with people - quickly and authentically. And we can’t emphasize enough on the need to deliver content at an elastic capacity and accelerated pace

The world is full of innovative products, services, technologies, and solutions today. Innovation alone cannot sustain a business; it must be paired with marketing. The pandemic is pushing marketers to re-evaluate their digital marketing roadmap. For this:
Customers are more connected and empowered than ever before, it’s essential to deliver tailor-made and memorable experiences. We need to connect design, technology, and content to unlock the power of the human experience
You need to ensure that your brand is capable of meeting disruptive behaviours and trends. This helps your brand anticipate and respond in moments of uncertainty.
Marketing’s forte is consumer connection, and the pandemic has taught marketers to do it quickly and authentically. And to thrive in a disrupted world we need to Adapt, Innovate, and Integrate.
Brands usually adopt either a viral marketing approach or a long tail marketing approach
Viral marketing is more like producing content that catches fire. The concept of viral marketing definitely deserves some revisiting as we enter a new decade/year.

Marketers are facing trouble with collaboration across teams, which also acts as a hurdle for them to execute marketing experiments at a faster pace. Managing change is also becoming difficult for marketers and they struggle with agility. These challenges are preventing the alignment of goals when it comes to marketing and IT functions.
For example, if we have to create a landing page for a webinar that we are hosting. Once the content is ready, we will have to be dependent on the dev team to help me build a page and place the content, maybe integrate it with analytics, redirect the audience, add a contact form, etc.

Content marketing lies at the core of every marketing team and the more content you put out there – the better for you! But when you have websites, social pages, and blogs, to work with, it can feel impossible to deliver everything with quality and speed. This results in a ‘The Content Crisis.’ One cannot solve the Content Crisis by just working harder. Instead, you need a plan and a platform that will help you deliver the volume and quality of content your audience demands.

While we have been emphasizing on the challenges of marketers and stats around content marketing, we’d like to shed some light on why a good editorial experience is important. Content editors/managers are likely the ones who use/visit your website the most. If they don’t like it, your CMS implementation is a failure!

Marketing automation tools help automate repetitive processes, provide personalization, improves efficiency, performance and also drives more leads and revenue!
With the endless benefits of Marketing automation, a considerable chunk of marketers thinks creating quality automation is their number 1 challenge. Marketers still struggle with data management, optimization, and segmentation or finding the right marketing automation tool.
With the explosion of content, and the influx of digital users you need to adapt your technology to overcome the disruption. And this is where Drupal and Digital Experience Platforms come in!
Brands need to provide content experiences outside a website, justifying the shift from web content management to DXPs.

Today brands need to provide content experiences outside a website. CMSs like Drupal that go beyond the web, are the backbone of a Digital Experience Platform! Drupal can bring together marketing information systems, SEO, advertising, analytics, tracking, and content to create robust digital marketing campaigns.
They can drive team success with easy content authoring tools that put their goals within reach - faster.

Drupal is a powerful tool for agile marketing and content management, and it doesn’t require any prior tech knowledge! Drupal’s content-first, commerce-first, and community-first marketing solutions help achieve the most ambitious business goals. With Drupal, it’s about giving your team the tools to move smart and agile. To make the biggest impact whether you’re seeking lead generation, conversion, or online sales. Drupal plays well with others, offering endless automation and integration opportunities

The first level is creating the content, but then managing it afterwards, being able to edit it, and interact with it also becomes very critical. Drupal puts many controls in the Admin experience, it allows site builders and editors to create content types, configure the fields that they use, and even configure some of how that data will be displayed to users.

Drupal’s Admin UI offers Intuitive tools that facilitate ease in content creation, workflow and publishing. Content admins can go and sort through the content in the content view. With filters for Publishing status, the Type of content, Title, Language.
Workflows - With all the tools in place Drupal offers a controlled content editing workflow. Content starts as a Draft - Gets Reviewed - Goes through a Revision Cycle - Is then Archived - Published.
Content moderation - displays who changed what, when, and can also revert to an older version of that content

And aren’t we all excited about The New Editor? This out of the box Drupal 8 and now Drupal 9 brand new editor is built on CK editor and empowers content admins to create their own content, allowing the tech team to focus on development rather than tweaking content. Along with the usual formatting, this editor is now customizable!

Drupal’s In-place editing allows content editors to edit the content on the screen itself and doesn’t require editors to go to the edit page, making the content even more flexible
Drupal 8 and now Drupal 9 comes with a Media Library! This media library is Built into the editor and it acts as a repository to manage and upload/bulk upload your media
And how can we not talk about the Layout Builder! The layout builder basically transforms the whole experience of creating web pages. Our marketing team can create beautiful case studies, service landing pages with the layout builder in no time! And with zero dev dependency!


Flexible pieces of media that can be moved around at will and not weaved in one way to use them together, you can use the components in different ways. Flexibility and scalability, structural variations and options that are smart, flexible layouts, etc. The author shouldn’t have to think about responsive design, as it provides a really good mobile experience.

Customer experience is not solely defined by your CMS, your system must be able to integrate seamlessly with other technologies, CRM’s, channels, and other marketing tools. Enabling marketers to deliver a cohesive customer experience. Drupal integrates seamlessly with a wide ecosystem of digital marketing technology and other business applications. Drupal’s API-first approach connects content to other sites and applications, making content more powerful.

While the Drupal community is continuously striving to improve the content editing experience, we’d like to talk about a couple of no-code/low-code platforms that make content marketers lives easy! Acquia Site Studio is not only a low-code technology for Drupal developers but it is also a no-code tool for marketers.
Read more about Acquia Site Studio here.
Another no-code application is Acquia Personalization also known as Acquia Lift:

"DXP is an integrated software framework for engaging a broad array of audiences across a broad array of digital touchpoints".
– Gartner
Brands like Nestle, Pfizer, Novartis, Bayer, Grofers, and many more are thinking beyond websites and creating robust digital experience platforms. Enterprises are standardizing their marketing stack on Drupal -- funded by Marketing, driven by the knowledge of the customer journey, and powered by the explosion of non-browser channels and the new ecosystems of SaaS, Martech, and Microservices. This new landscape brings with it the ability to monitor, analyze and control the customer journey which the Marketing department expects.
Drupal's flexibility allows for standardisation of branding, Design systems, Authoring Experience, Content efficacy across hundreds and thousands of sites.

Leading brands are navigating disruption with Drupal. We delivered Multi-site Rollouts for a Fortune 500 swiss FMCG company with Acquia Site Factory. We Built and designed 70+ websites using the same design philosophy and a single codebase using Acquia Cloud Site Factory architecture. Looking at the stats we can’t deny that Drupal has empowered their teams! Rolling out 75 sites in 3 months.

We built an accurate, relevant, and easily accessible healthcare provider portal.
Landing page - choice of sections provided to create various landing pages with various options to apply different type of layout blocks on a single page.
We Enabled the client to create landing pages effortlessly by applying different types of layout blocks on a single page. And Eliminated the need to redirect to other platforms by enabling the client to build microsites for various product pages. We also integrated their platform with Salesforce and enabled Personalized Content - Sites now behave differently based on the area of expertise or the role of the current user.

We worked with Grofers on their CMS strategy for their Mobile App intending to reduce dependencies between marketing and engineering teams, easy and quick content publishing, run marketing experiments, and improve the overall throughput and velocity.

Ashoka’s website is served in 90+ countries, every page on the site has the potential of having a localized version for all the countries.

Today, we are responsible for owning our digital experience. Site builders, developers, and marketers must be empowered to build and improve websites without being stuck in lengthy development cycles and slow processes. As one of the early-adopting agencies of Acquia Site Studio and with Acquia Site Studio certified developers, we have covered Acquia Site Studio’s basics and its advanced features in our previous blogs. In this blog, we will talk about how Acquia empowers Content Marketers in Drupal.
Acquia Site Studio is not only a low-code technology for Drupal developers but it is also a no-code tool for marketers.
There are plenty of site building tools in the market like Wix, Elemento, and Squarespace where you can have your own customizations easily. There was a time when the Site Studio tool was being considered as an abstract concept in Drupal. But, now, all configurable features are available under Drupal’s hood as a site builder tool and that too with Dynamic content mapping.
Many of you must be thinking that how could it be helpful for the marketers?
Ever wondered how many times the marketing team is unsatisfied with site-building and are dependent on developers, despite possessing the required skills to create the promotional pages with different types of layout using CSS?
Acquia Site Studio is essentially slicing the frontend layer and presenting it as a user interface, where the frontend code can be directly applied along with the User Interface. It essentially serves as an accelerator for building your site with tools to create your own components and templates independently.
Having a component-based frontend layer available as a UI, it is really simple to create different layouts in no time by a mere drag-and-drop. Building new components is made effortless with an intuitive component builder tool in the UI. All these can be achieved without writing a single line of code.
This enables the development teams to focus on high-value features, while your marketing team can create beautiful experiences with Site Studio’s admin interface. Content editors can create pages and content rapidly by simply dragging components into the canvas editor without writing any code.

Site Studio not only empowers marketers with creating/building but also allows them to style components - such as colour, background image, font, and responsive breakpoint settings. This means marketers can tweak components without making design revisions or assigning a developer to implement them. These modifications can be previewed and changed in real-time, without deployments or site updates.
Components and styles are managed in Drupal and can have baselines set according to the branding guidelines of the organization, maintaining design and brand integrity. The style guide editor allows site managers to change the site-wide presentation of allowed elements in just a few clicks to go-live.

After creating the above Input button style it can be used like below screenshot on Dx8 Elements or Components through Style dropdown.

OR
Styles can be applied directly to the component as stated in below image

Site Studio provides the freedom and flexibility to respond to varying marketing demands by creating new components in no time. Since it leverages the established styles and design, developers do not need to update CSS styles or add HTML markup to enable the presentation of the new components.
Acquia Site Studio allows features and content to be reused across pageshttps://www.qed42.com/sites/. Editors can export their components, templates, styles, views, and site configuration and import them to other sites using Site Studio. This is especially beneficial to marketing teams that have numerous sites they need to get up and running quickly. The reuse provides tremendous value for companies building sites at scale.
Marketing teams often need to create landing pages for a promotion or campaign, with brand new layouts and components. However, they are dependent on the development team and are compelled to follow the process of creating new features or components for the landing page. This hampers the quick turnaround time that the Marketing team requires to execute any campaign.
Marketing teams need a design system, developed by following the style guide consistency, containing scalable, granular, reusable components which can be assembled to create ‘n’ number of pages.
Acquia Site Studio (Cohesion DX8) allows marketing teams to use the existing crafted components quickly and effectively from an existing component library. Allowing them to create multiple page layouts making sure they function perfectly in tandem, following the brand guidelines.
Once the design pattern is ready and available as components, it is very easy for the marketing team to use those components in the layout canvas field to create the desired layout, that too, without worrying if brand standard guidelines have been followed or not.
Acquia Site Studio also builds the design patterns device friendly using the breakpoints which have been set as per the brand guidelines. One example could be of Heading font size for different breakpoints or stacking of inline items in smaller breakpoints. Design systems and patterns show how much we think ahead in this digital age and Site Studio provides the platform to achieve our required page presentation effortlessly.
Currently designing and deploying 3+ Acquia Site Studio projects, our team of experts can help you plan, execute and deliver the digital ROI. If you wish to significantly reduce your time to market and explore Acquia Site Studio with Drupal, please reach out to us at business@qed42.com.

The Layout Builder provides the ability to drag and drop site-wide blocks and content fields into regions within a given layout. While working with default views of a layout we believe there is considerable scope for improvement, giving a cool configurable layout to the content editor and site builders.
We started to look for enhancement modules and we found a lot of useful modules from https://www.drupal.org/docs/8/core/modules/layout-builder/additional-modules.
We implemented a few modules and improved the look and feel, significantly!
While working with these modules we came across certain issues or improvements needed from the content editors perspective:
The interface for the user to write content within this custom block would be through the off-canvas dialog which is a standard solution chosen by the Layout Builder developers. The off-canvas dialog is very narrow and not an optimal user experience for this scenario.

Here’s the link to download the Layout Builder Modal: https://www.drupal.org/project/layout_builder_modal
The default Layout Builder’s ‘Manage Display’ interface shows all blocks (including all entity-specific fields), and all layouts that are registered in the system. For all sites, this poses a usability problem, as the list of blocks quickly becomes very large. Additionally, for many sites, the ability to curate which blocks and layouts are available on a given entity is an information architecture necessity.

Here’s the link to download the Layout Builder Restrictions module: https://www.drupal.org/project/layout_builder_restrictions
To edit the content by using the Layout Builder; a content editor needs to visit the page and click on layout link to edit the page.

Here’s the link to download the Layout Builder Operation Link module: https://www.drupal.org/project/layout_builder_operation_link
At times the content editor’s need to deal with different attributes for example class, id, Data-* attributes, etc. to achieve specific features., for this Layout Builder Component Attributes will be helpful.

Here’s the link to download the Layout Builder Component Attributes module:https://www.drupal.org/project/layout_builder_component_attributes
Layout Builder is a game-changer for content editors and marketers. The modules that we looked at really help make it easier to use!
If you would like to create your dream website with the Drupal Layout Builder, feel free to reach out to us at business@qed42.com.

This blog is a tutorial for setting the mobile menu (Hamburger menu) in Acquia Site Studio which was earlier known as Cohesion DX8. Converting the desktop horizontal dropdown menu to a Hamburger menu in mobile delivers the best UX for mobile users.
Here is a screenshot of the desktop and mobile menu which we now implement with Acquia Site Studio.



But here in this tutorial, we will see how to implement the hamburger menu with Acquia Site Studio without writing a single line of code and without using any external library or module. Everything is achievable through Site Studio’s core elements.
Here, I would like to take a reference to one of our previous Cohesion blogs, where the menu template has been explained. For quick reference, adding a below screenshot of Menu Template, using which we could easily implement above mentioned Desktop Menu with dropdown level.
After creating this template and applying a few styles, the Desktop menu with dropdown would work flawlessly. But when viewed on mobile devices, it won’t appear perfect.
Now, let's look at all the things which should be taken care of while converting a desktop menu to a mobile hamburger menu.

To cover the whole structure, we need to convert the above-mentioned Menu template and add a few Site studio core elements as shown in the screenshot below.

Now, let’s compare and look at the new elements added in the Menu template.
List of elements added:
This container is for holding the whole structure of the menu and also to apply a few of the styles and add some modifiers through button elements.
As mentioned in the above point, the button is helpful to add/remove/toggle modifiers to the menu structure and also to toggle the view of the whole menu.
Adding a screenshot of the hamburger button configuration which will help you understand the modifiers added and how the menu toggling has been achieved.

Here we need to take care of two sets of configurations:
As displayed in the above image, we need to add modifiers for elements of the page:
Moreover, Toggle jQuery animation needs to be configured.
Now, let’s move to the next element i.e. <button> Menu level 1 (Sub menu visibility toggle) and refer to the screenshot below:

As per the screenshot, it can be seen that for desktop breakpoint no interaction is required and for the tablet breakpoint, we need to set the interaction for toggling the dropdown.
This button will be to remove a few modifiers and also the Menu Drawer will be closed. Below is the screenshot for Close button configuration.

Basically, we need to exactly reverse what we have implemented for the Hamburger menu button. So, it means, we need to remove the modifiers and jQuery toggling animation which have been added through the hamburger menu button.
By following the above steps, you would be able to create the mobile hamburger menu. Few CSS needs to be implemented for a couple of basic things which can be implemented through the Menu container styles’ properties.
For any queries, you can drop your questions in the chat below or you can catch me on Twitter @qed42.

After a basic outline about Acquia Cohesion DX8 now renamed as Site Studio in our previous blog, Cohesion - Low Code Enterprise-grade, Drupal website building platform, let’s dive into a few advanced features of Site Studio.
In our previous blog, we have seen the basic setup of cohesion where we have covered the implementation of the base style, custom style, how to create components and how to use the cohesion elements in it. Now that our basics are covered, let us explore what makes Site Studio a low-code solution for building Drupal sites?
Let’s start with Style helpers.
Style helper is a set of CSS properties which are used once while creating base/custom style and stored for future use.
Let’s look at an example - In the images below it can be seen that a custom style has been created for a large button and certain CSS properties are being used for it. Even the hover pseudo-selector has a few CSS properties. After adding CSS properties, we can save these properties for future use by clicking on the Style helper menu icon (as highlighted in the image) and save it as Style helpers without saving/loading it into the CSS file till we use it.


Now, let’s look at the real beauty of Style helpers.
Let’s try to create one more custom style - a small button, where similar properties are required. Here, instead of writing/adding these CSS properties all over again, the Style helper can be used.

Like the Style helper stores the CSS properties, similarly, Component helper stores the list of components which are commonly being used while creating pages.
Let’s look at the example below.
Let’s say there are a few pages which require similar components to be used and the page which has been created earlier has a long list of components and is complex. Now, creating similar pages with similar components would be a tedious task. Instead, we can create a page and whatever components we have used will be saved for future use.

Here in the above image, you can see that once the landing page has been created it has a long list of components added on the page. So now think, how tedious it would be to create multiple similar pages?
By clicking on the options menu of the Layout Canvas field, you can save this list of components and this is known as a helper. Follow the below images for better understanding.

This feature makes Site Studio a low-code framework in the true sense. All templates can be handled and are configurable from Admin menu -> Acquia Site Studio -> Templates option.
This template basically serves the purpose of page.html.twig which means this template should be used only to render the regions like header, content, and footer. The master template looks like this:

As per our requirement, if we want a different header and footer on some of the pages, that also can be done by creating multiple master templates. While creating a content template, we can select which master template to use.
Moreover, the master template that has been set as default will be applied throughout the site unless we select the specific master template to be used while creating a content template.
Use Case:
Here we can consider the new concept of a microsite, where the whole site is containing a similar structure. But to change a few pages, it is required to change the whole structure of the template including header and footer. The best example could be https://www.drupal.org/ and https://events.drupal.org/global2020.
There are plenty of sub-categories of content templates. Let’s look into the Content-type’s view mode templates.
Each content type can have multiple view modes and those view modes can have their own customized layouts. To achieve this we can create multiple view mode templates which would have a Layout canvas field which will be useful for creating different layouts.
For example:
A full view mode is basically used to display the entire content of a node page whereas the teaser view mode can have fewer number fields’ data to be displayed. Based on this we can distinguish the usage of templates.
There are plenty of menus we usually have on the site and each menu has its own structure and relevance.
Usually, we have the main menu, sidebar menu for quick content reference (with or without dropdown), and the user account menu.
The main menu has up to 2 levels, where 1st level will be visible and the second level will be visible on hover and the Sidebar menu and user menu have only 1 level menu links.
Site Studio provides menu templates to define the structure of the menu which will look similar as shown in the image below. Adding an image as an example of the main menu structure.
As per the image, we can see that to create the main menu with up to 2 levels, it is required to have a nesting level of menus like menu container(ul), menu item(li) and menu link(a)

One of the features of this Template menu’s element can determine how the next level of the menu can be expanded with/without animation and also different behaviour of menus opening can be set based on the breakpoints.

As per the image above, it can be seen that the opening and closing behaviour of the dropdown can be decided by the menu link element of the first level.
Moreover, with the menu template, we can map the custom styles we have created for the menu container, menu item, or menu link.
This menu template will be used while mapping it with the menu element which has been defined in the header template that is the part of the master template as displayed in the screenshot below.

Similarly, it is required to create menu templates for a sidebar menu or user menu which may not require nesting levels.
Now, let’s move to the last category of the templates i.e. the Views template. As we all know that Views is a query builder and is useful in creating a diverse list of contents based on the condition and/or contextual filter. The way we get the template for view in a normal Drupal installation, similarly we get the option to create a custom layout of views in Site Studio using Views template.
Views template provides the structure to your View page or Block and uses different view modes to display the results. But before creating a Views template it is required to have a views page or block.
Here is an example of how to display the teaser list of content using the teaser view mode.
To create a view template there are certain views elements required. Below is the list of views elements which can be used:
Moreover, we would be able to use cohesion elements like row for columns and columns to create the desired layout. Here’s a screenshot for reference.

Explore how Site Studio enables you to apply design systems on your Digital Experience built on Drupal!
I hope this blog was helpful in understanding Acquia’s Site Studio better. If you are looking to harness the benefits of Acquia Site Studio for your projects, do reach out to us for business consultation by emailing business@qed42.com.
.avif)
The Drupal community is super excited for the Drupal 9 release, and so are we!
In the spirit of our tradition of keeping the QED42 website up to date with the latest Drupal releases, we decided to celebrate the Drupal 9 release day by porting our website to Drupal 9. And we’d love to share our learnings with the Drupal community.
In the DrupalCon Amsterdam Driesnote presentation, Dries stated that
Drupal 9 will be the easiest major update
And we decided to experience it first hand! Thus our journey of upgrading the QED42 website began.
Before we share our Drupal 9 porting experience, it is important to understand our website’s current stack.
It is a composer based project setup using drupal-composer/drupal-project as a starter-kit template.
We followed these simple steps to upgrade our site to Drupal 9:
Upgrade status module provides comprehensive support for preparing your upgrade to Drupal 9. This helps identify deprecation in contributed/custom modules and themes and suggested an update to the available version, validate the system requirements and much more. Read more about it on Drupal.org. If you are using composer based setup then use
We identified the current state of our contributed modules - out of 52 contributed modules, only 18 were ready with Drupal 9 release.

Next, you need to review the new dependencies and some of the most commonly used APIs that are removed in 9.0.0. Read our blog to know more about identifying deprecation /insights/coe/drupal/preview-breaking-changes-drupal-9
We are now at our final step to update the Drupal core, but wait we have a roadblock. Our composer setup is based on drupal-composer/drupal-project.
This project template made use of some packages that are no longer connected to the upstream and now deprecated and are in favour of new ones (drupal/recommended-project or drupal/legacy-project) that are provided by Drupal core
So, you'll need to make the following changes:
Note: Follow the blog by Drupalize.me to know more.
Now we are ready to update our Drupal website. However if any of your packages don’t have a release explicitly declared as D9-compatible (i.e. you are relying on a patch to make it ready), you will likely run into a dependency error when trying to update your codebase.
To get around this, you can simply add an alias to drupal/core:
(Make sure you replace 9.0.0 and 8.9.0 to whatever versions you are using in your installation)
We are now ready to run composer update and visit our Drupal 9 website.
Really? Yes, modules with stable release might have a few corner case scenarios which the upgrade status module did not report.
Here are a few issues we ran into while skimming through upgraded Drupal 9 website.
Eg: config_split 8.x-1.5-rc1 stable version for Drupal 9.
https://www.drupal.org/files/issues/2020-05-05/3133805-2.patch
Eg:
Hurray! Finally, our site is upgraded to Drupal 9! Go ahead and check it out!

We would also love to hear about your Drupal 9 upgrade experience, do share your comments below.
We agree with Dries and do believe that Drupal 9 is the easiest upgrade ever!
Happy Drupal 9 !!!

Welcome to yet another blog post! In this article, we will learn how to decouple Drupal Commerce with Gatsby to build an e-commerce site that includes product detail pages, product listing pages, and much more.
Let’s get started!
We will be covering the checkout functionality our next blog post.
You should have some prior knowledge of Drupal Commerce and Gatsby.
We can install our Drupal demo site with the below-mentioned command. This provides us with a starter project and all the required products we need to get started with. If you are not familiar with how to set up the commerce site from scratch, visit the Commerce documentation(https://docs.drupalcommerce.org/commerce2) to know more about it.
Once you are done installing the site. You need to do a few more things:
Here is a link to the starter project. Go through the readme file to check how to set up your Gatsby site.
Let me walk you through the code and the flow:

2. Gatsby-node.js:

By default, the gatsby-drupal-source plugin does not create product listing resources. If you visit your GraphQL endpoint you won’t find it. We are using OnCreateNode hook with some custom logic to create the allCommerceProduct listing resource at our GraphQL endpoint.

Here we are querying allProducts to create product pages dynamically by, passing the product id to our ProductDetail.js template. Then by using the context id in our template file we can query the product data for each product.
If you go to ProductDetail.js template file you can see how we are using the context id to query our product data.
The rest of the code is self-explanatory if you have worked with React before.
Essentially these are the components that require your attention:

Then we use it in our cart Component like this:
You can similarly modify your cart. Checkout Commerce API to learn more. You can integrate the user authentication functionality similarly. I have already written a blog post regarding this. Here is the link.
This is all for now. Will come back with another blog post that will cover the payment integration. Till then see ya!
P.S - Please mention your queries in the comments section. Happy to answer.

Low-code platforms have been slowly gaining popularity in the Marketing stack of organisations. Low-code essentially means being able to assemble UI of your Digital experience visually and often without the need for a dedicated Development team. Webflow for Websites and Shopify for e-commerce are among the list of rising low-code platforms. These platforms help organisations become more agile and help enable various functions like Design, Marketing to come on board as Makers on the Digital experience. Today we will talk about Cohesion now renamed as Site Studio, a low code offering for Drupal websites by Acquia, we will discuss benefits and some of the paradigms that make it an effective low code option in Drupal stack.
Drupal has witnessed a healthy growth over these years as a pillar for Enterprise Digital stack, Acquia's Site Studio brings the DIY spirit to this stack. What more and more Marketers are looking for is quicker and cheaper ways to assemble landing pages and work out of a component library of Digital elements that are performant and consistent to the Design systems of the organisation. A low code approach to Drupal will only work if its aware of its capabilities & flexibility, that is what Cohesion brings on the table. Ability to apply Design systems on your Digital Experience built on Drupal, DIY!
Acquia's Site Studio provides a contributed module and theme which needs to be installed in Drupal, quite similar to the way we install other modules and themes. However, to use this service, it is required to purchase a cohesion package that provides us with an API Key, Agency Key, Site ID, and an API Server URL which needs to be inserted in the Account Settings form.

Here are the settings and key features of Acquia's Site Studio:
Site Studio provides an in-site configuration form which takes care of your branding requirements. You can add your own branding elements like fonts, colours, icons, grid settings, SCSS variables, etc. directly onto the site. And there is absolutely no need to make any changes in the theme folder as well as the theme settings. Doesn’t this sound cool! Your basic frontend settings would be handy to you and you can modify it directly from the site without asking for help from a developer.

It’s not over yet, with Acquia Site Studio you can create/modify styles of a site. Acquia Site Studio provides settings to update the base style or to create custom styles.

And this is how the default preview and configuration pane looks like.
Now let’s understand what comes under Base styling and Custom styling
Base styling - Styling which is going to be consistent throughout the site, e.g., font-size of body. Font formatting of Headings, Style of a button, style of link, etc.
Custom styling - Styling which will be different for each instance or as a variation of base style. E.g., Big button, Small button, Read More Link, Consistent layout related styles (Padding Top & Bottom Large, Padding Top & Bottom Small), Social icons theming, etc.
Let’s look at the example of CTA link styling.



Now let’s introduce the coolest feature of the Acquia's Site Studio - a Component Builder. Acquia Site Studio follows a complete component-based development approach. So, what is the component-based development approach?
Acquia Site Studio provides a list of elements. By using these elements even simple and complex components can be created and be made configurable by creating a component form. The amazing part is that everything can be built by mere drag and drop. Doesn’t it sound super user friendly?
Let’s look at an example of a Hero Component and figure out which elements could be part of this component? Let’s create a list of elements(atoms).
Let’s consider the below-displayed hero component that we are trying to achieve.

Based on the Hero component design, the hero component structure would look similar as described in the below image.

A component will be created which will have the above-mentioned elements. But what about styling? This is the real beauty of Acquia Site Studio. It allows us to create a base style as well as a custom style and those can be appended to the component. Doesn’t it sound fascinating?
Here would like to take you back to the styling part of the section where we have styled CTA link. Now, here in the above component CTA link element can directly assign the style which has been created under custom style. And as per image, styling can be appended to CTA Link element.

There are multiple ways to create different layouts. Here, with Acquia Site Studio, the layout can be defined by a Layout Category component and also component dropzone element can be provided to add other components.
Does it mean? Woah! Yes, it means nesting use of the component is also possible. I won’t provide the screenshot for this example right now.
There are four main templates:
The template names clearly state the use of each template, but, I am sure you must have some questions related to master templates.
What will it hold? The thumb rule is, this template should be least modifiable, means, it should not be updated frequently. We can ensure this by using only consistent section/components/regions added to it.
Explore how Site Studio enables you to apply design systems on your Digital Experience built on Drupal!
I hope this blog was helpful to understand the basic outline of Acquia Site Studio. Stay tuned! We have an upcoming blog that will talk about the advanced usage of templates.
P.S - If you want to learn more about Site Studio, Acquia has a training and a full support guide - https://cohesiondocs.acquia.com/6.1 and get access to the free sandbox here - https://www.acquia.com/products-services/acquia-cohesion#create-sandbox.

Authentication is one of the most important functions in any application. This authentication process has to be secure enough such that data being transmitted should not be compromised. Authentication dictates what users are able to see and do when they log in. Everyone knows how important it is to have a secure authentication method and how it works. I’ll skip that part! Let’s dive right into implementing authentication with Drupal and Gatsby.
On Drupal end will be using the simple OAuth module. Head over to my blog Alexa Account Linking and Custom Skill Model to find step by step instructions on how to configure this module.
Now that we have our OAuth setup ready let's make the required changes on the Gatsby site. I believe that you already have a setup ready to write some code as the blog proceeds.
Some developers prefer to place their helper functions under the ‘services’ folder while the others keep them under ‘utils’. Hence the location of the file doesn’t actually matter, it’s merely individual preference. I am going to create this file under src/services/auth.js
Let's create a new SignIn form component that displays a form users can fill out with a username and password to log in.
That’s all! We have our authentication functionality ready on the site. Now let’s take a look at each function and what it does.
SaveToken(): this function is used to store the token in local storage.
fetchOauthtoken(): This function takes a username and password as parameters, and uses them to make a request to the Drupal /oauth/token endpoint attempting to retrieve a new OAuth token.
fetchSaveOauthToken(): it generates new access token by making use on fetchOauthtoken function. Then stores this token in local storage to access various resources.
drupalLogin(): This function gets invoked when a user tries to log in into the site. It makes a request to /user/login REST resource with username and password. Which returns a user object if the passed credentials are correct else it will return an error message.
handleLogin(): It makes a call to the drupalLogin function to verify that the user exists and provided credentials are right. If a user exists, using fetchSaveOauthToken() generates new access token and stores it in local storage so it can be used for subsequent requests.
isLoggedIn(): This function verifies whether the user accessing the site is authenticated or not. Considering the various scenarios mentioned below it will consider that the user is logged in to the site which means that token is available in local storage.
drupalLogout(): Verifies if a user is logged in or not, if true then it makes a request to Drupal site using the access token to logout out from the site.
handleLogout(): This function makes use of drupalLogout() function and if it is successful then removes the token stored in local storage.
We have a login page and if we try to log in it works perfectly but do you think there is any problem? If yes, then you are right. If you open the Chrome developer console, go to the Network tab, and inspect your OAuth/token request you will be able to see the client ID and client secret in the request header which is not right this can cause a security issue within your site.
Let’s take a look at the options we have in our hand.
Write simple functions that automatically become APIs. Netlify deploys the functions you write as full API endpoints and will even run them automatically in response to events (like a form submission or a user login). Functions receive request context or event data and return data back to your frontend.
In our case, we get the necessary information i.e. username and password, pass it to the netlify function. This will pre-define our sensitive data in the netlify function which is client ID and client secret and make authentication requests from it to Drupal.
By doing this, only the response will be visible to the user but what is being sent inside the header of the request won’t be available.
One downside to this is that you have to pay as per your usage to use netlify functions.
Let us know if you would like to hear more about netlify dev setup and netlify function from us. We will get back to you with another post talking about it.
When you hit a request to /oauth/token endpoint to get an access token this simple_oauth/src/Controller/Oauth2Token.php controller is being executed.
This controller is responsible for generating a token for you based on the headers you sent in the request.
So we thought, what if we override this controller in a custom module and define our client ID and client secret here and when a request comes in and attach these both to the request. The requirement of the Oauth controller to generate a token is being satisfied and our problem of client secret and ID being exposed gets resolved. In addition, we also save some money for our client.
To override the OAuth controller we will have to let Drupal know that when /oauth/token route is requested rather than using a controller provided by a simple OAuth module use the controller from our custom module.
We will have to alter the route so that we can inform Drupal.
Add a YAML file my_module.services.yml into the module's folder with the following content
Now we have to create a Routsubscriber class under my_module/src/Routing where we will notify Drupal to use our custom controller when oauth2_token.token route is requested.
The overridden controller will look like as below
After this, we can remove the following lines from IsLoggedIn and fetchOauthToken function from auth.js file.
Please do let us know if you have any questions or a better approach to achieve this in the comment section.
.avif)
Every time you run a Gatsby build, the following steps are processed internally:
For sites with a large amount of content, this process can be quiet time-consuming. For instance, you make modifications to only 2 nodes in a Drupal site that has 20,000 nodes. However when you run the Gatsby build it will consider changes for all the 20,000 nodes and process the above the steps.
For sites that are hosted on the Gatsby Cloud, the solution to the problem is Gatbsy Cloud builds feature.
But for self-hosted Drupal environments, since this is cannot be the solution Gatsby provides us with environmental variables that helps us to reduce the build time by possessing the .cache and .public directories between the builds.
So every time you run a Gatsby build with the environment variable flag. It compares the page data from the previous build and creates a list of page directories that are finally passed to the build process. Which means it will only trigger build for the changed nodes.
The difference between the build time is quite visible. For our Drupal site that has no more than 100 nodes, there was a difference of 50 seconds in the consequent builds which I think is pretty huge.
The first build will trigger build for all the pages.

On the second build, only the pages with content change are updated.

1. Upgrade your Gatsby to the latest version
2. Add a flag to your build command in package.json
or you can simply use the environment variable in your terminal every time you run your build command.
To get this working with Netlify you need to add the netlify-plugin-gatsby-cache to your netlify.toml config file. You can follow this blog to see how it is implemented.
For more in-depth information about how this works, you can follow the pull request details here.
P.S - In case you have any queries, you may mention them in the comments section.Incremental build functionality is now a part of the Gatsby core. Although an experimental feature, it is pretty significant and a much-awaited one. Let's understand why the Gatsby incremental build is required for self-hosted Drupal environments and how to implement it.Note: This post is also applicable for other backends and environments.
.avif)

We are done from the Drupal end here. Let’s move to the Gatsby end now.
The first thing we will do is add user registration functionality.
Create your UserRegistration form and pass all the valid arguments to the registerUser function. Now submit your form to see your user registered on the Drupal end under the People tab. In case you get any permission issues, check under config/people/accounts to see if visitors are allowed to register.
Now that our user is registered. Our next step is to log in.
Our log-in functionality is based on the React Context API. So it is necessary you know how the Context API works.
Visit this link and copy four of the below-mentioned files:
Place all four files in a single directory named drupal-OAuth. Next, wrap your base component with DrupalOAuthConsumer to initialize the context provider. Your base component will look something like this:
Now to create your sign-in or login form take a look at the below code:
export default withDrupalOauthConsumer(SignIn);
When you submit the form Drupal will take care of generating the OAuth token and return it to you. To check this you can wrap your component with DrupalOAuthConsumer, and check via the props.userAuthenticated.
One thing to note here is that the above code does not take into account the user login on the Drupal end. So to be able to log in on the Drupal end add the drupalLogIn code to your drupalOauth.js file and call it inside the fetchOauthToken function. So that every time user tries to log in on the Gatsby end, the user session gets initiated on the Drupal end as well.
Remember we are only taking into account the login functionality here. If you are trying to implement the logout functionality as well, make the below piece of code work same as login.
Also, take into account that drupalOauth.js is a class service. So drupalLogin and drupalLogout functions should be an implementation of a class and need some modifications accordingly.
Now that our user is logged in and registered, our next step is to post the data to our commerce cart.
If you go through the commerce cart API documentation. It explains how the commerce cart API module works. To post data to the cart as an authenticated user you must be logged in. Once you are logged in. We can POST, GET, and UPDATE our cart. Go through the below code. Which is fairly simple to understand. We are just taking the access token generated by simple OAuth from the Drupal end on login that we have already stored in our browser local storage and sending it as a bearer token as part of our request header to the Drupal end so it can recognize that the user is Authenticated.
This will allow you to post the cart data as an anonymous user when you are not logged in as well as authenticated user once you are logged in. (Add uuid-token-generator) to your packages to make it work.
To add a product to your cart you can simply import the CartService class into your component and use it as :
P.S - If you face any issues. Kindly mention in the comments.
We are building a decoupled E-commerce site with Gatsby and Drupal commerce. As you are well aware of the fact that in all web applications one of the most important features is user-authenticated browsing. I will not go into the details of why user-authenticated browsing is important as you will find plenty of blog posts on that.This blog post is aimed at users who may find themselves struggling as I did while trying to add the user authentication functionality to a Gatsby site. So let us get started.

While trying to build a form, I found that it would be useful to have a one-click/touch option to clear text field values instead of selecting all the text and removing it. Even though this appears like a small issue, solving this would make users life easy! This was the driving force behind creating the Clear Field Values module for Drupal 8. The Clear Field Values module provides a way to clear data in the text field values with a single click/touch.
This module adds a button to clear text field values in one click/touch and provides two options at present, one is a simple cross button and the other is using font awesome icons.
Follow these steps to configure the Clear Field:
Select Type of Button
Selecting the above option would add X(cross) with text beside the text field
Enable FontAwesome module https://www.drupal.org/project/fontawesome and you can add the cross button
Default values for the text of the icon and tooltip are Clear Field & Clear field value which can be overridden.
Default values for the Classes are form-text form-email separated by a space.
For a custom-form add custom classes defined under element’s attributes under Classes field.
https://youtu.be/1czrz9RcCs8
This module is supported by
https://www.drupal.org/project/clear_field
https://www.drupal.org/project/clear_field/releases/8.x-1.x-dev
Do send in your feedback around this module! We would love to hear from you.
Reference: https://www.geeksforgeeks.org/html-clearing-the-input-field/

CSS Injector allows administrators to inject CSS into the page output based on configurable rules. It's useful for adding simple CSS tweaks without modifying a site's official theme.
JS Injector allows administrators to inject JS into the page output based on configurable rules. It's useful for adding simple JS tweaks without modifying a site's official theme.
Note: Block class will be appended automatically to each CSS.
For example when we add a CSS as given below:




To understand Layout Builder in detail refer https://www.drupal.org/docs/8/core/modules/layout-builder
Note: You don't need to add it manually.



Click here for the steps to install the Layout Builder asset injector module - https://www.drupal.org/docs/8/extending-drupal-8/installing-drupal-8-modules
https://youtu.be/v3NYUYyg-3s
Kishor Kolekar: https://www.drupal.org/u/kishor_kolekar
Harshal Pradhan: https://www.drupal.org/u/hash6
Abhishek Mazumdar: https://www.drupal.org/u/abhisekmazumdar
Hardik Patel: https://www.drupal.org/u/hardik_patel_12
Naresh Bavaskar: https://www.drupal.org/u/naresh_bavaskar
https://www.drupal.org/project/layout_builder_asset
https://www.drupal.org/project/asset_injector
https://www.drupal.org/project/layout_builder_styles
Drupal 8's Layout Builder allows content editors and site builders to easily and quickly create visual layouts for displaying content. Users can customize how content is arranged on a single page, or across types of content, or even create custom landing pages with an easy to use drag-and-drop interface. Our recently contributed module - The Layout Builder Asset Injector module is definitely not a replacement for theming, but it provides site administrators with a quick and easy approach. The Layout Builder Asset Injector module allows site builders to add CSS and JS to the layout builder blocks.

The drupal_add_css(), drupal_add_js(), and drupal_add_library() were removed from Drupal 8 for various reasons. Thus to attach CSS or JS assets to views, nodes, etc., Drupal's #attached functionality had to be applied to 'attach' assets (like CSS and JS) to rendered elements on the page. Previously we used the hook_views_pre_render() hook method to attach a library in the view. Let's explore this recently contributed module by QED42, the 'Views Attach Library'.
Views Attach Library module is designed to attach JS and CSS library in views, by merely mentioning the library name. It provides a simple UI option in the views where a user has to simply mention the libraries name.
To implement this, I attached a CSS or JS library to a view in Drupal 8 via a custom module such that, wherever the view is displayed on a site, the custom CSS and JS file from my module were attached automatically.
The module provides a simple UI option in all view pages and blocks. We can upload single as well as multiple libraries just by declaring the libraries name in the UI textfield.

Installation is as simple as copying the module into your 'modules' contrib directory and then enabling the module.
To add the library in view follow the below steps:
Let’s understand the application of this module via an example.
Consider a custom module called ‘abc’ and this module has a library called ‘abc-js’ and this library has one CSS(abc.css) and two JS(abc1.js, abc2.js) files.
Now add ‘portal_abc/abc-js’ in the textfield which is nothing but a library name, where ‘abc’ is the module or theme name and ‘abc-js’ is the library name.
In this way, the view will now include one CSS(abc.css) and two JS(abc1.js, abc2.js) file.
https://youtu.be/oblgBx2Cmu4
Current maintainers:
Check out the Views Attach Library module here - https://www.drupal.org/project/views_attach_library

At times different classes need to be applied to the body tags of different pages, for CSS styling or some different purpose. Page Specific Class module enables this by adding HTML attribute classes for CSS styling to the <body> tag based on path conditions. Body classes for pages are specified by using their paths.
Learn more about the Page Specific Class here - https://www.drupal.org/project/page_specific_class
This module enables a user to add different classes to the body tag of any desired page. It supports all pages which can be created via Node, Views, or a Custom Route.
Installation is as simple as copying the module into your 'modules' contrib directory and then enabling the module.
To add the classes in the body tag of the page follow the below steps:

For example: Enter below value in the text area:
Here:
https://youtu.be/bicPJaxA2Ak
Click here to submit bug reports and feature suggestions, or to track changes: https://www.drupal.org/project/issues/search/page_specific_class
You may download this module from Drupal.org - https://www.drupal.org/project/page_specific_class
In case of any queries please feel free to reach out to us by commenting below or send us an email at code@qed42.com and we'll get back to you! QED42 has always encouraged contributions to the Drupal ecosystem via code and community. This blog post talks about my recent contribution to Drupal 8 - the Page Specific Class module.
.avif)
Drupal 9 is scheduled to be released on June 03, 2020. This is when the final Drupal 8 minor release 8.9 will also be released. Considering the history of previous Drupal major upgrades, Drupal 9 will relatively be smooth. Thanks to the semantic versioning introduced in Drupal 8. The upgrade to Drupal 9 will just be another minor upgrade with deprecated code removed. Drupal 8 has brought a lot of standardization in the Drupal world, thus allowing Drupal as a project to grow incrementally.
To put it in simple terms, Drupal 9 contains the same code as of 8.9 + deprecated code removed. Here’s a reference image from the Drupal 9 documentation.

That is if you reduce Drupal 9 from the last Drupal 8 version (8.8.x) the rest is just the deprecated code and dependency upgrades.
However, upgrading all the underlying dependencies and removing all deprecated API is a challenging task. Contributors around the world are working hard to get this done especially when the world is facing an epidemic. This is a challenging time for the entire world, yet Drupal contributors have shown their love towards Drupal and are helping it advance to the next release.
This article highlights some of the system requirements, the new dependencies and some of the most commonly used APIs which are going to be removed in 9.0.0.
Drupal 9 will have the same new features as of Drupal 8.9. Thus, Drupal 9.0 will not include new features. But Drupal 9.1 will continue to receive new features as it did for the minor D8 releases.
Following is a list of major APIs which were deprecated in Drupal 8 and will be removed in Drupal 9.0.0. That means if your code contains any of these codes, they need to be replaced before upgrading to Drupal 9. This list is not exhaustive and has been curated by scanning Drupal core codebase for deprecated warnings and sorted according to the usage of these APIs in contributed projects as given Drupal 10 Deprecation Status by Acquia.
Some of the functions and hooks removed (change record)
Following functions removed (change record)
At this point, 9.0.0-beta2 is released, which means the code for 9.0.0 is stable and is ready for testing by end-users. Now is a good time to test upgrade your existing D8 sites to the latest version of 9. If you have contributed a project in drupal.org, it is also a good time to check your extensions for D9 readiness. There are several tools which can speed up this process of making your extensions compatible with D9.
Have questions about how Drupal 9 will impact your site? We are here to help. Check out our Drupal Services or send us an email at business@qed42.com!
If you see any discrepancies in the information provided above, please let us know.
Thanks!Drupal 9 is scheduled to be released on June 03, 2020. This is when the final Drupal 8 minor release 8.9 will also be released. Considering the history of previous Drupal major upgrades, Drupal 9 will relatively be smooth. Thanks to the semantic versioning introduced in Drupal 8. The upgrade to Drupal 9 will just be another minor upgrade with deprecated code removed. Drupal 8 has brought a lot of standardization in the Drupal world, thus allowing Drupal as a project to grow incrementally. To put it in simple terms, Drupal 9 contains the same code as of 8.9 + deprecated code removed. Here’s a reference image from the Drupal 9 documentation.
_0.avif)
Drupal CMS offers a rich user interface and powerful content editing experience. There are a lot of contributed modules that enhance the system and its editing experience. One of the projects I was working with called for concurrent editing implementation. Concurrent editing simply means allowing multiple editors to edit the same content at the same time, without the possibility of conflicts arising due to concurrent actions.
In today’s editorial landscape, content creators can not only access a document countless times to revise and update content but also work with distributed teams. For this reason, concurrent editing has become among the most essential and commonly requested features for any content management solution.
The project (Layout Engine) involved configuring pages and blocks of a mobile application through Drupal.
A single page of a mobile application consists of multiple sections, these sections could contain data as per user’s locations or any other criteria. A page in Drupal was primarily a content type. We used paragraphs to configure blocks which we call widgets. So basically, a banner on the homepage of a mobile application is a widget.
These pages and widgets were configured by our client’s marketing team. Any page on the mobile app could consist of 'N' number of widgets. Due to a large number of widgets present, it was difficult for a single user to be familiar with all of them. Multiple members of the marketing team worked on the app simultaneously, making it difficult to edit the layouts/widgets.
Thus the client needed a system where multiple users could simultaneously edit the layouts and their widgets independently.
Collaborative editing has long existed as a concept outside the content management system (CMS). It is a limitation of Drupal at the moment, and we don’t see any solution for it in Drupal core soon. A big thanks to the members of the community who contribute their code in the form of modules making solutions available to the world in a quick google search.
We explored a couple of modules which fulfilled our requirements to some extent.
This module provides quick editing of widgets on the view page itself.
A user won’t have to go to the edit page and then search for the widget to update and then save the whole node. He can do it quickly on the view screen. We believed this would allow multiple users to quickly edit the widgets and will solve the issues. But, it turned out that the module throws a deadlock error when multiple users are updating different paragraphs of the same node. Therefore, we discarded the possibility of using the Paragraph Frontend UI module.
The next module we explored was the Paragraph Edit module. It provides a separate page to edit the paragraphs through the contextual links. It does not break when multiple users attempt to edit different paragraphs simultaneously. But the issue with this approach was that it supported separate editing only. So if a user had to create a new paragraph/widget, he/she had to go to the edit node form. The tricky part here is, if an editor is on the node edit form while some other editor made changes through the quick link, the current form will contain the old data. In this case, when a user saves the node, it will revert those changes to the previous version. We did not want that either.
It does not have any additional configuration attached to it. I am adding two screenshots below to show how it works. This is what the second user will see when the first user has already saved the node and content is in the database. To know more visit - https://www.drupal.org/project/conflict

Once the user clicks on the 'resolve conflicts' button, it shows two versions of each field, something like in the following screenshot. Users have to manually update the field accordingly and need to save the content again.

This module is a good solution under the following instances:
As the name suggests this module locks the content for the first editor who started to edit the content. Any other editor will see the message and all the fields will be disabled for him/her.
Features of Content Lock (anti-concurrent editing):
The content lock was used until we had a proper solution for concurrent editing.
After countless discussions with the marketing team, we decided to provide a solution to overcome the concurrent editing problem. We decoupled all the widget creation as a separate node and referred those nodes into the Layouts. This way, everybody had control on their own widgets and they did not need to wait for the content lock to end.
If you have implemented a better solution for concurrent editing, we would love to hear about it!
.avif)
Consider a small-mid size Drupal Project. Usually what happens is that once development is complete, sites (Drupal or Wordpress or any other framework) are left forgotten. This leaves the site vulnerable to attack, especially when a new Drupal security release is announced as it exposes the vulnerability publicly. It is good if a site is properly maintained & updated at regular intervals. But not at all recommended if left unattended.
Many a time people have questions like:
What if we had a process where Drupal could automatically update itself removing the vulnerability altogether.
There have been talks since the past few years about automating the Drupal core updates, thus a Drupal core strategic initiative was formed “Automatic Updates”. If successful, it would secure a lot of vulnerable Drupal sites.
Currently, the Automatic Update feature is being developed as a contributed module and eventually, it will be shipped into Drupal core as an experiment and finally if all goes well it could land as a new Drupal core feature.
Since the work for Automatic Updates is so vast, tasks are being worked in phases. Currently, Automatic Updates is divided into the following two phases out of which, phase I is now stable.
In this first phase, the Automatic Updates module includes the Public Service Announcement and Readiness Check features and can apply In-Place Updates manually or on cron. Updates that contain database updates will cause a rollback of the update.
The goal is to implement a secure system for automatically installing updates in Drupal, lowering the total cost of ownership of maintaining a Drupal site, and improving the security of Drupal sites.
Announcements for highly critical security releases for core and contrib modules are done infrequently. When a PSA is released, site owners should review their sites to verify they are up to date with the latest releases and the site is in a good state to quickly update once the fixes are provided to the community.
Drupal.org provides a JSON feed of Drupal Public Security Announcements to be consumed by the automatic updates module.
That feed includes values for the following:
Below are possible points that should be checked to decide whether a site is ready for an upgrade or not.
Sites can’t receive automatic updates in case
When PSA is released and the site is failing readiness checks, it is important to resolve the readiness issues so the site can quickly be updated.
Step 1: First, check if the update is available or not by going to “Reports » Available Updates” from the administration pages.

Step 2: Install & Configuration of automatic updates contrib module. Go to “Config » System » Automatic Updates”.

Step 3: Now check the PSAs and Readiness checks in the configurations. Notice the PSA shown in the messages section.

Step 4: Click on the “Manually run the readiness checks” link under READINESS CHECKS.
If the Readiness check has failed a list of error failed checks are shown in messages. These error messages with reasons can also be found under “Errors found” of the status report page.


Step 5: If Readiness check shows “No issues found. Your site is ready for automatic updates”. It means our site is ready for an automatic upgrade.

Step 6: Click on the “manually update now” link inside the “Experimental” section to upgrade the site.

