Advice and ordering system for lubricants - Total

Organisation
Polder Knowledge & Atom
The case
Category
Commerce
Client
TOTAL Lubricants
Summary
Polder Knowledge and Atom build an online advice and ordering system for TOTAL Lubricants where orders can be placed both manually and automatically (by Telemetry). Our challenge was to render various applications and web services in one front-end application. For this purpose we made optimum use of the specific strengths of Drupal and all components.
Project description
Polder Knowledge and Atom are two totally different IT companies. One has focus and experience in developing applications for optimizing business processes (i.e. onboarding, dashboarding) and the other one builds high-end Drupal applications.

Atom chooses Drupal because a lot of functionality can be created by configuration, modules from the community and by hooking in and extending functionality to get things done. For clients this is a huge money saver, but when things get more complex, doing it “the Drupal way” is sometimes more costly than using a custom build solution, next to other tradeoffs that could occur.

At the same time Polder Knowledge noticed that some parts of what they build custom are already present in Drupal. Functionalities that are far too costly to build yourself or maintain properly. For instance the whole permissions system and content management. So Polder Knowledge and Atom set out to prove that best of both worlds could be combined. This assignment for Total is one of the four 1.500+ hour applications we have build this way.

TOTAL Lubricants (subsidiary of TOTAL Nederland N.V.) asked us to build an online ordering system where the customer could easily place an order based on a sound lubricant advice. In addition, they were also looking for an automatic ordering system for their bulk consumers. The application focuses on the automotive, inland shipping, agricultural and industrial sectors.

Lubricants Advice Wizard
Lubricants are a complex product, a wrong product can have an adverse effect on the lifespan and fuel efficiency. So instead of assuming that the customer knows which product he needs, the approach is now more advice based.

Based on the brand, in combination with the model and type of vehicle (or machine), a lubricant advice is given for the engine oil and other types of oil (transmission, gearbox, hydraulics, etc.). For passenger cars, commercial vehicles and trucks, an advice can even be issued based on the license plate.

Automated orders via Total Telemetry Services
Bulk orders can be placed both manually and automatically. In the latter case customers can use the Total Telemetry Service. Tank levels are then continuously monitored via Telemetry (sensors use ultrasonic pulses to measure the tank capacity). Total can provide an optimum amount of deliveries with this up-to-date tank information. Orders to maintain the levels are automatically prepared as "telemetry order", after which the customer only needs to confirm the order.
Challenges
This project was our first project set up this way. The biggest challenge in this project was to render various applications and web services in one front-end and to make all this communicate with each other to functionally do the same as a monolithic application. Our vision is that we create synergy by using the strengths of all software components in the application. In our case it looked like this:

Within this application, Drupal is responsible for flow management, complex shop logic and entities. In Drupal an editor can simply manage all content and shop products including stock levels, price updates & media management.

Using smart search, managed and controlled by Drupal, users are presented only with results relevant for their type of user or organisation. So different users (or organisation) would get different results for the same search query. These results are based either on the market segment (agri, industry, shipping, automotive) defining the media items or on the market profile, making sure the users see only the products they are allowed to see.

For communication with external web services such as Olyslager (leading supplier of lubricant data for the oil industry) and SAP ERP, we created APIs with Apigility (API Builder by Zend).

For the best user experience of various components within the application we used Angular (such as the lubricant advice functionality). Drupal is used as a completely headless set-up.

Another, non-technical challenge was the collaboration between different teams and disciplines. Although we are all basically ‘nerds’ who just want to deliver the best result, communication is the key to success here.
Communication that cannot be solved with an API, but appeals to the soft skills of all project members involved.
Community contributions
There seem to be a constant battle going on between content management systems such as Drupal, No-code solutions such as Mendix, Apigility, Betty Blocks and custom code frameworks such as Laravel, Angular and Symfony. Polder Knowledge and Atom set out to prove the best result can be obtained by combining the best-of-breed platforms proving that Drupal as a content management system and application framework can indeed offer great value now and in the future as stand-alone solution. Drupal definitely also plays a key part in high-end enterprise solutions with thousands of hours of development.

Atom en Polder Knowledge plan to share this information and insights by writing blogs, Linkedin-posts and papers about it promoting Drupal as a framework that can play a bigger role in the IT landscape than we think is suitable (opinion) for other frameworks such as Wordpress. What we hope to achieve with that is that other companies like Polder Knowledge see a place for Open source and Drupal within their custom build applications and will seek out Drupal agencies to help deliver value to their clients. This project for a big name as Total, who is also very excited about Drupal, might help to do so.

Atom and Polder Knowledge made a big investment in research and development to find the best way to divide tasks among systems en make al systems integrate with each other in a reusable manor. We still have some way to go but when we are there we are more than happy to share knowledge and modules with the community of our findings.
Screenshot