An Office Supplies Company
Management Tool Development (Web-based) | Production Support | UX Designing | Infrastructure Advisory & Architecting
Git, GitLab CI
Pushing Drupal into the application realm
Advanced Velocity's customer, a national office retailer, needed a portal that would act as a unified hub for suppliers, merchants, and monetization teams. We used Drupal's functionality along with Symfony Components to bring this application to life.
About the Customer
The customer is an American retail company that has served office supplies to businesses globally through office superstores, retail markets, postal, Internet, partner distribution networks.
years in operation
The customer offers many programs for suppliers to advertise themselves and improve their brand awareness and sales. They needed the Partnership Portal to not only allow them to attend/manage informative events but also act as a complete campaign management tool.
The portal needed to be built in a phased manner, starting with a basic supplier-facing website as the minimum viable product (MVP), to be launched in time for their Supplier Summit.
Their goals for each stage were as follows:
MVP: External/Supplier Focus
Phase 1: Internal Process Focus
A unified hub for the customer and their business stakeholders to communicate the variety and benefits of the customer's programs to improve sales and brand awareness of stakeholders' products/brands.
A unified hub for the customer, and their business stakeholders to facilitate the workflow for campaign and event management, and to provide a central location for all files and reporting around these activities under a single platform.
Drupal isn’t the right solution for everything, but it is a very capable solution for most web applications. And at Axelerant, we excel at getting things done with Drupal.
- Drupal is a web application framework with a powerful CMS on top.
- It provides many of the constructs to model content, whereas the framework built on top of Symfony Components provides the capabilities to bring it alive.
- There is a large and thriving community supporting its rich ecosystem of a highly functional core and a vast space of contributed extensions.
- Further, Drupal is highly flexible which makes almost every kind of integration possible.
This mix of features and flexibility made Drupal an excellent choice for building this hub where the customer can cater various programs and events to vendors while customizing the available content as per the vendor’s tier.
Delivering an MVP with rapid development
Since this is not a typical Drupal use case, it was important to Axelerant and to our customer to know if what we were setting out to do was feasible.
We started by building an MVP that addressed the customer’s most important areas of concern. Once we had demonstrated that such a system could indeed work effectively, we started the first phase, with more requirements, such as support for building campaigns with elaborate workflows.
As always, we followed our guiding principle of looking in the existing “contrib” space first for a solution; contributing next; and if both of these are not feasible, we write a custom solution (when it involves either proprietary technology or highly specialized code).
Application development with Drupal
Drupal 8 is built using Symfony Components which means that it boasts a strong and robust foundation built by the best minds in the web industry. The same components and design principles are available to developers, along with Drupal’s rich API space and functionality. This allows truly flexible and rapid application development with Drupal.
Utilizing Drupal’s content model to build functionality
One of the most important yet most boring parts of building an application is defining its storage. When building an application with rich content, Drupal provides a robust schema for free, allowing us to focus on functionality. We, at Axelerant, believe in delivering the best value to our customers by balancing reuse of Drupal’s content model with extensibility after considering our customer’s needs for performance, scalability, and long-term sustainability.
The customer’s needs for advanced access control (depending on the vendor’s tier) for its media-rich content were easily fulfilled with Drupal and our expertise.
Best of both worlds: Drupal's content model and Symfony's capabilities
Drupal is one of the leading content management systems in the industry. Apart from the rich developer experience, this is due to its highly extensible content model. The ability to model content and even data with a flexible field type system (vastly enriched by the contributed modules) makes it possible for application builders to quickly define a structure to define storage for their applications. The content model could represent simple blog posts to media-rich reusable components embedded in interconnected documents to, well, anything you can imagine. The Drupal API allows developer-friendly access to define workflows and functionality not otherwise available.
Minimalism: Integrating Drupal’s API to build an application
With the vast space the Drupal API covers along with Symfony components, developers are able to reuse boring code and focus on the interesting business logic. This allows us to efficiently build applications which may not appear to be Drupal-like at all. At Axelerant, we pride ourselves on understanding the depths and breadths of the API surface which allows us to write just the minimum amount of custom code on the top of community-tested and supported code.
Development practices ensuring quality and consistency
At Axelerant, we work hard to deliver high-quality solutions. Just like this client, all our customers, we followed our engineering standards from beginning development to each deployment on testing servers. Following these guidelines ensured we were able to deliver value with each commit and test case.
We designed our solution to use as much of Drupal’s system as possible to build functionality. We wrote glue code only to make the features work together. Each engineer at Axelerant carefully considers each additional dependency or contrib module added, and weighs the cost-benefit ratio when evaluating each. With Drupal 9 just around the corner, maintainability was an even more important concern.
Automated Quality Checks
Any custom code we write passes through automated quality checks which are stricter than the current industry standards. These checks happen with every commit and every merge request, enabling developers to write quality code at the outset. Further, problems which cannot be caught by automated tools are discussed and solved during a mandatory peer review.
Established Coding Standards
All these checks are expensive and we want to be mindful of the value we deliver to the client. This is why we have various approaches to enable engineers to write standard clean code in the first place with minimum effort. To this end, we utilize a suite of templates for reference and quick start, peer mentorship to upskill engineers, and an internal support channel to resolve problems.
Reduced Need for Customization: We helped develop a modern, responsive, user-friendly platform to meet the customer’s requirements. They are now able to offer a consistent experience to suppliers across devices and programs, with minimal customization needed from their team.
Long-term Cost Reduction: Our experience with Open Source technologies, particularly enterprise Drupal, helped us deliver a solution that allowed the customer to lower their costs in the long term.
Faster Go-to-Market: By using agile methodology, our team was able to rapidly align with the customer, collecting and applying feedback at an accelerated pace. We validated the initial concept with end users, identifying critical features for a key set of users, and getting their buy-in.
Overall, this Drupal-based solution from Axelerant and Advance Velocity allowed the customer to get the best of both worlds—cost efficiency with flexibility. They gained the ability to get started quickly and inexpensively without having to go through proprietary licensing hurdles or costly core Java based implementations to get there. They also have the ability to mature to a large scale, fully supported, enterprise-grade implementation.
Given that the current state of the global economy leaves almost any industry budget challenged, it made financial sense for the customer to leverage the Drupal community equivalent.
Additionally, the customer has entered into a long-term support and maintenance association with Axelerant.
With Axelerant backing me, I feel confident. I can sleep well at night… I can rely on them to be on top of the details.
- Bill Whitebone,
Multi-Tier Partner System
This portal is provided by the customer to their many vendors and suppliers. As different vendors enjoy different levels of access to their programs, we needed to represent this in the system.
The customer provides a tier system for its suppliers, with each tier adding benefits on top of the previous. We chose to implement this using Drupal’s roles system. Each Drupal user (representing a supplier) would be assigned one of the roles indicating their tier and also be assigned their own program specialist. Drupal’s sophisticated RBAC (role-based access control) system took care of making sure that a user cannot access content for which they don’t have authorization.
We utilized modules that supported access control per user as well, not just their role. This allowed the customer to have granular control over which of their programs are made available to their partners at various levels.
Above: Personalized “partner portal” journey design for the clients of the customer.
Campaigns functionality with a sophisticated workflow
The portal provides a unified interface to inquire about, request, and manage a campaign request to suppliers, media agencies, and the customer's admin. Based on their tier, suppliers can request certain types of campaigns. While certain programs can only be inquired about, campaigns for many of the programs can be immediately requested through a step-by-step interface, capturing all details such as budget, brand, and specific information about the type of the campaign.
The suppliers are automatically matched with media agencies based on the type of the campaign and budget. The media agency and the supplier can use this portal to communicate creatives and orders and execute a campaign.
Security and privacy are paramount in these kinds of scenarios. Axelerant utilized the standard Workflows module to build this entire workflow for campaigns themselves and also the creatives within the campaign. The permissions' based system is used to further harden access control for each of these campaigns, protecting users from different agencies stumbling upon campaigns not meant for them.
Sticking with our ideology of staying close to core and standard practices, we used the ubiquitous Paragraphs module to model content for different types of campaigns. The flow of different states of a campaign is defined using the core Workflows module, and Drupal’s access control system is used to limit access to only the intended users. These campaigns are integrated with the core media functionality to provide flexibility in handling creative assets. From using core modules whenever possible to using core fields like revision log to identify changes in the workflow state, Axelerant made sure to keep the system maintainable in the long run while providing the best value to the customer.
Access Controlled Media Library
The customer needed a secure way to send documents to business partners. Using Drupal core’s media functionality, we built a media library with access control based on Drupal roles and permissions. Media library functionality is present in Drupal core since 8.4, and it has grown more flexible and powerful over time. We were able to deliver functionality based on out-of-the-box Drupal features, which allowed us to keep the system lean and maintainable.
Above: Custom content blocks, specific to different user groups.
The customer runs training and other types of events for their business partners at various times. The portal allows specialists at the customer to create events and invite business partners. The system captures simple event information such as event details and dates. Suppliers can log in and RSVP each event by accepting it or delegating it to one of their colleagues.
As before, we chose to build this system as close as possible to standard Drupal modules, only picking supported contrib modules when required. With careful decision-making, we were able to reduce unnecessary bloat while providing a usable and maintainable user experience.