CINXE.COM
Global Beauty Retail Brand Reduced Cost by 30% with a Decoupled LMS | Drupal.org
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr" xmlns:fb="http://ogp.me/ns/fb#" xmlns:og="http://ogp.me/ns#"> <head profile="http://www.w3.org/1999/xhtml/vocab"> <meta name="HandheldFriendly" content="true" /> <meta name="viewport" content="width=device-width" /> <meta name="MobileOptimized" content="width" /> <!--[if IE]><![endif]--> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="https://www.recaptcha.net/recaptcha/api.js?hl=en" async="async" defer="defer"></script> <meta name="description" content="We designed an open-source, decoupled learning platform for beauty advisors. The client achieved a major reduction in training costs." /> <meta name="generator" content="Drupal 7 (https://www.drupal.org)" /> <link rel="image_src" href="https://www.drupal.org/sites/all/themes/bluecheese/images/og.jpg" /> <link rel="canonical" href="https://www.drupal.org/case-study/global-beauty-retail-brand-reduced-cost-by-30-with-a-decoupled-lms" /> <link rel="shortlink" href="https://www.drupal.org/node/3045121" /> <meta property="og:site_name" content="Drupal.org" /> <meta property="og:type" content="article" /> <meta property="og:url" content="https://www.drupal.org/case-study/global-beauty-retail-brand-reduced-cost-by-30-with-a-decoupled-lms" /> <meta property="og:title" content="Global Beauty Retail Brand Reduced Cost by 30% with a Decoupled LMS" /> <meta property="og:description" content="We designed an open-source, decoupled learning platform for beauty advisors. The client achieved a major reduction in training costs." /> <meta property="og:updated_time" content="2024-04-17T12:47:24+00:00" /> <meta property="article:published_time" content="2019-04-02T06:45:51+00:00" /> <meta property="article:modified_time" content="2024-04-17T12:47:24+00:00" /> <title>Global Beauty Retail Brand Reduced Cost by 30% with a Decoupled LMS | Drupal.org</title> <link type="text/css" rel="stylesheet" href="/files/advagg_css/css__vwdslBVX8xVWQ4hx4mWxIC59-lKGPldWkMIm435ispk__msT4O19F5udTbXsVQpyNk2EFYlbaoLwufqq_ZcdDcB0__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.css" media="all" /> <link type="text/css" rel="stylesheet" href="/files/advagg_css/css__Xi-PZpvKTY78w7l1WNsqwUA52MIupHJebCMiX34Ugt0__D_EUHDAfEQdxcLiSDY7hREUWkG1Ge56_h2z3Er8V188__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.css" media="all" /> <link type="text/css" rel="stylesheet" href="/files/advagg_css/css__WF0PRotZAhCcl0aJjY5W2LYj8UwiYuB2dZEFluOh3Tc__FviX13FUB-Ppa2XB29BUIJQZ1Wg-F5XiDE7XD5y7mjQ__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.css" media="all" /> <link type="text/css" rel="stylesheet" href="/files/advagg_css/css__NIw_DPU8Mg3GtGpnuqMYJS_XlUsM5CO1It4gwoiU5b8__b3B8u7yzxUpe4SEH5X6eNTawzmAgeuHdw5UbV9NuhlI__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.css" media="all" /> <link type="text/css" rel="stylesheet" href="/files/advagg_css/css__pWCOPcaPe71p3QyGrAeqEd6dwL_n27prYOjnWQj4jVI__fR6RV6fh70jWL18FMzdVQpGUyYT8iL9Vw8wnms1DdQA__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.css" media="all" /> <link type="text/css" rel="stylesheet" href="/files/advagg_css/css__mlCLWKqAJJ-E-mMVCEmFp-7SE_XsgAxpf7HS-FcVqB0__7Tgy6u_PBeTp3b4s5UumhQPx9mJ_jhs1Z-WvSrqxAHk__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.css" media="all" /> <link type="text/css" rel="stylesheet" href="/files/advagg_css/css__QPp1snPjYt_xYr0c_V0IORcEElkIUBBBrvOB4ZE0Gnw__8jkPtXCYcQv4spuNwtiMBMbZXgCS-2GouDqwnCBDPRE__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.css" media="all" /> </head> <body class="html not-front not-logged-in no-sidebars page-node page-node- page-node-3045121 node-type-casestudy drupalorg-site-main" > <div id="skip-link" tabindex="-1"> <a class="element-invisible element-focusable" href="#content">Skip to main content</a> <a class="element-invisible element-focusable skip-link-search" href="#search-block-form">Skip to search</a> </div> <div class="region region-page-top"> <noscript aria-hidden="true"><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W36H8DW" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <div id="drupalorg-crosssite-gdpr">Can we use first and third party cookies and web beacons to <a href="https://www.drupal.org/terms">understand our audience, and to tailor promotions you see</a>?<br><button class="yes">Yes, please</button><button class="no">No, do not track me</button></div> </div> <div id="nav-header"> <div class="menu-nav"> <a class="nav-btn" id="nav-open-btn" href="#block-system-main-menu"><img src="/sites/all/themes/bluecheese/images/icon-w-menu.svg" alt="Main menu"></a> </div> <nav id="navigation-inner" class="container-12" role="navigation"> <div class="region region-navigation"> <div id="block-system-main-menu" class="block block-system block-menu"> <div class="block-inner"> <div class="content"> <div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="/home" title="Drupal.org home page">Drupal.org home</a></li> <li class="expanded"><a href="/about" title="">Why Drupal?</a><div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="/about" title="Learn about Drupal">About Drupal</a></li> <li class="leaf"><a href="/docs/getting-started/understanding-drupal/overview-of-drupal" title="">Platform overview</a></li> <li class="leaf"><a href="/about/11" title="">Drupal 11</a></li> <li class="leaf"><a href="/features/content-authoring" title="">Content Authoring</a></li> <li class="leaf"><a href="/features/content-as-a-service" title="">Content as a Service</a></li> <li class="leaf"><a href="/features/decoupled" title="">Decoupled</a></li> <li class="leaf"><a href="/features/accessibility" title="">Accessibility</a></li> <li class="leaf"><a href="/features/marketing-automation" title="">Marketing Automation</a></li> <li class="leaf"><a href="/features/multilingual" title="">Multilingual</a></li> <li class="leaf"><a href="/features/security" title="">Security</a></li> <li class="leaf"><a href="/features/personalization" title="">Personalization</a></li> <li class="leaf"><a href="/case-studies" title="View case studies to see how your peers have built success on Drupal">Case studies</a></li> <li class="leaf"><a href="https://www.drupal.org/association/beyond-the-build" title="">Video series</a></li> <li class="last leaf"><a href="/about/in-the-news" title="">News</a></li> </ul></div></li> <li class="expanded"><a href="/industries" title="Examples of solutions built on Drupal">Use cases</a><div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="/developers" title="">For Developers</a></li> <li class="leaf"><a href="/marketers" title="Why marketers should choose Drupal for their ambitious digital experiences">For Marketers</a></li> <li class="leaf"><a href="/industries/ecommerce" title="">E-commerce</a></li> <li class="leaf"><a href="/industries/education" title="">Education</a></li> <li class="leaf"><a href="/industries/fintech" title="">FinTech</a></li> <li class="leaf"><a href="/industries/government" title="">Government</a></li> <li class="leaf"><a href="/industries/healthcare" title="">Healthcare</a></li> <li class="leaf"><a href="/industries/hightech" title="">High Tech</a></li> <li class="leaf"><a href="/industries/nonprofit" title="">Nonprofit</a></li> <li class="leaf"><a href="/industries/retail" title="">Retail</a></li> <li class="last leaf"><a href="/industries/travel" title="">Travel</a></li> </ul></div></li> <li class="expanded"><a href="/documentation" title="Resources to help you on your Drupal journey">Resources</a><div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="/docs/getting-started/installing-drupal" title="">Installing Drupal</a></li> <li class="leaf"><a href="/documentation" title="Drupal Documentation">Documentation</a></li> <li class="leaf"><a href="/docs/user_guide/en/index.html" title="The Drupal 8 user guide will get you up to speed in no time">User guide</a></li> <li class="leaf"><a href="/docs/official_docs/local-development-guide" title="">Local Development Guide</a></li> <li class="leaf"><a href="/security" title="Find information about security releases for Drupal">Security</a></li> <li class="leaf"><a href="/news" title="News about the Drupal ecosystem">News</a></li> <li class="leaf"><a href="/planet" title="">Blog</a></li> <li class="last leaf"><a href="/about/drupal-7/d7eol/partners" title="Find help for your Drupal 7 migration">Migrate from D7</a></li> </ul></div></li> <li class="expanded"><a href="/drupal-services" title="Buy Drupal Products and Services">Services</a><div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="/drupal-services" title="View the Drupal service provider marketplace">Find an Agency Partner</a></li> <li class="leaf"><a href="/hosting" title="Find trusted Drupal hosting providers">Find Integrations & Hosting</a></li> <li class="leaf"><a href="/training" title="Find expert Drupal training">Find Drupal Training</a></li> <li class="leaf"><a href="/association/become-a-drupal-certified-partner" title="">Become a Certified Partner</a></li> <li class="last leaf"><a href="/about/drupal-7/d7eol/migration-resource-center/enterprise" title="">Find a D7 migration partner</a></li> </ul></div></li> <li class="expanded"><a href="/community" title="Drupal Community">Community</a><div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="/community/contributor-guide" title="">How to Contribute</a></li> <li class="leaf"><a href="/community" title="View the community portal and find all the ways you can contribute to Drupal">About the Community</a></li> <li class="leaf"><a href="/support" title="">Support</a></li> <li class="leaf"><a href="/project/governance" title="">Community Governance</a></li> <li class="last leaf"><a href="https://jobs.drupal.org" title="">Jobs/Careers</a></li> </ul></div></li> <li class="expanded"><a href="/community/events" title="Find Drupal Events around the world, from the official DrupalCons, to community Camps and Meet-Ups">Events</a><div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="https://events.drupal.org/barcelona2024" title="">DrupalCon Barcelona 2024</a></li> <li class="leaf"><a href="https://events.drupal.org/singapore2024" title="">DrupalCon Singapore 2024</a></li> <li class="leaf"><a href="https://events.drupal.org/atlanta2025" title="">DrupalCon Atlanta 2025</a></li> <li class="last leaf"><a href="/community/events" title="">Community Events</a></li> </ul></div></li> <li class="expanded"><a href="/download" title="Download and Extend Drupal">Download</a><div class="menu-block"><ul class="menu button"><li class="first collapsed"><a href="/download" title="Build your solution on Drupal">Download</a></li> <li class="leaf"><a href="/project/modules" title="Find modules to extend Drupal to meet any need">Modules</a></li> <li class="leaf"><a href="/project/themes" title="Browse themes as a starting point for making your Drupal site your own">Themes</a></li> <li class="leaf"><a href="/project/distributions" title="Use a distribution to start with a version of Drupal customized to purpose">Distributions</a></li> <li class="leaf"><a href="/project/issues" title="Dive into the issues queues and contribute back to Drupal">Issue queues</a></li> <li class="last leaf"><a href="https://git.drupalcode.org/project/drupal" title="">Browse Repository</a></li> </ul></div></li> <li class="expanded"><a href="/association" title="About the Drupal Association - the non-profit that supports the Drupal project">Give</a><div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="/association" title="Learn about the Drupal Association - the nonprofit that supports the Drupal project">Drupal Association</a></li> <li class="leaf"><a href="/association/organization-membership" title="Learn more about the organizations that support the Drupal Association and our mission">Become an Organization Member</a></li> <li class="leaf"><a href="/association/become-a-drupal-certified-partner" title="">Become a Certified Partner</a></li> <li class="leaf"><a href="/association/RippleMakers" title="">Become a Ripple Maker</a></li> <li class="leaf"><a href="/association/donate" title="">Make a Donation</a></li> <li class="leaf"><a href="/association/discover-drupal" title="">Discover Drupal</a></li> <li class="last leaf"><a href="https://www.drupal.org/swag?utm_source=drupalorg&utm_medium=banner&utm_campaign=drupal_swag_shop_2020_09_17" title="Purchase Drupal merchandise and be the coolest kid on the block">Drupal Swag Shop</a></li> </ul></div></li> <li class="last expanded"><a href="/try-drupal" title="Try Drupal">Demo</a><div class="menu-block"><ul class="menu button"><li class="first leaf"><a href="/try-drupal" title="Demo Drupal online with a Drupal platform partner">Demo online</a></li> <li class="last leaf"><a href="/download" title="">Download</a></li> </ul></div></li> </ul></div><a class="close-btn" href="#top">Return to content</a> </div> </div> </div> <div id="block-search-form" class="block block-search"> <div class="block-inner"> <div class="content"> <form action="/case-study/global-beauty-retail-brand-reduced-cost-by-30-with-a-decoupled-lms" method="post" id="search-block-form" accept-charset="UTF-8"><div><div class="container-inline"> <h2 class="element-invisible">Search form</h2> <div class="form-item form-type-textfield form-item-search-block-form"> <label class="element-invisible" for="edit-search-block-form--2">Search </label> <input placeholder="Search…" type="text" id="edit-search-block-form--2" name="search_block_form" value="" size="15" maxlength="128" class="form-text" /> </div> <div class="form-actions form-wrapper" id="edit-actions"><input alt="Search" type="image" id="edit-submit" name="submit" value="Search" src="/sites/all/themes/bluecheese/images/icon-w-search.svg" class="form-submit" /></div><input type="hidden" name="form_build_id" value="form--sJzQvgQTxPLCknH--CapR_7-Ca95U9gOfEQ8EXoIVY" /> <input type="hidden" name="form_id" value="search_block_form" /> </div> </div></form> </div> </div> </div> <div id="block-system-user-menu" class="block block-system block-menu"> <div class="block-inner"> <div class="content"> <div class="menu-block"><ul class="menu"><li class="button default"><a href="#block-system-user-menu"><img src="https://www.drupal.org/sites/all/themes/bluecheese/images/icon-w-user.svg" alt="Log in, view profile, and more"></a><ul><li class="first leaf"><a href="/user/login?destination=node/3045121" title="">Log in</a></li> <li class="last leaf"><a href="/user/register?destination=node/3045121" title="">Create account</a></li> </ul></li></ul></div> </div> </div> </div> </div> </nav> </div> <div id="header" class="clearfix"> <div id="header-inner" class="container-12 clearfix"> <div id="header-left"> <div id="site-name"><a href="/" title="Drupal.org"><img src="https://www.drupal.org/files/drupal-wordmark.svg" alt="Drupal.org" /></a></div> </div> <div id="header-right"> </div> </div> </div> <div id="banner" data-nosnippet> <div class="region region-banner"> <div id="block-drupalorg-announcements" class="block block-drupalorg"> <div class="block-inner"> <div class="content"> <div class="announcement"><img class="photo" src="https://www.drupal.org/files/styles/grid-2-2x-square/public/announcements/drupalcon-hexagon-icon-280X280px_2_0.png?itok=uzoGg7T8" width="280" height="280" alt="Announcement icon" title="Announcement icon" />Join us at DrupalCon Singapore from 9-11 December 2024, for three exciting days of Drupal content, training, contributions, networking, and the inaugural DrupalCon Splash Awards! Be part of this landmark event as we celebrate and expand Drupal's impact across Asia.</div> <div class="cta"><a href="https://events.humanitix.com/drupalcon-singapore-2024" class="global-announce-banner dc-singapore-registration">Get your tickets now</a></div> </div> </div> </div> </div> </div> <div id="page" class="clearfix"> <div id="page-heading"> <div class="breadbox"><nav class="breadcrumb container-12"><span><a href="/case-studies">Case studies</a></span></nav></div> <h1 id="page-title" class="container-12">Global Beauty Retail Brand Reduced Cost by 30% with a Decoupled LMS</h1> </div> <!-- /#page-heading --> <div class="container-12 page-inner"> <div id="main" role="main"> <div id="content" class="clearfix"> <div id="content-inner" class="clearfix"> <div class="region region-content"> <div id="block-system-main" class="block block-system"> <div class="block-inner"> <div class="content"> <div id="node-3045121" class="node node-casestudy node-content-3045121 clearfix"> <div class="submitted"> By <a href="/material">Material</a> on <time pubdate datetime="1554187551">2 April 2019</time> </div> <div class="content"> <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>The client is a global leader in prestige beauty — delighting its consumers with its transformative products and experiences, inspiring them to express their individual beauty. It takes pride in focussing solely on prestige makeup and beauty care with a diverse portfolio of <strong>25+ brands distributed globally through eCommerce channels </strong>and retail outlets sold in 150 countries.</p> <p>They aim to transform the beauty industry landscape with their customer service by providing modern training and understanding of the products with (digital solutions) to its teams.</p> <p><a href="https://www.srijan.net/?utm_source=drupal&utm_medium=case-study&utm_campaign=elc" rel="nofollow">Srijan</a> worked closely to design an <strong>open-source, multilingual, decoupled learning platform </strong>where beauty advisors could consume a vast set of learning resources.</p> <p>Here’s how we helped them<strong> reduce 30% cost in classroom training </strong>while also able to track ROI from the learning and training initiatives.</p></div></div></div><div class="field field-name-field-link field-type-link-field field-label-hidden"><div class="field-items"><div class="field-item even"><a href="https://www.srijan.net/case-studies">Visit srijan.net/case-studies →</a></div></div></div><div class="field field-name-field-mainimage field-type-image field-label-hidden"><div class="field-items"><div class="field-item even"><img src="https://www.drupal.org/files/styles/grid-10/public/Building%20a%20Decoupled%20LMS%20for%20a%20Global%20Beauty%20Brand.png?itok=EdgEZ48B" width="621" height="441" alt="" /></div></div></div><div class="field field-name-field-overview field-type-text-long field-label-above"><div class="field-label">Why Drupal was chosen: </div><div class="field-items"><div class="field-item even"><p>Drupal 8 was used to develop the core enterprise LMS because:</p> <ul> <li>It provides a powerful backend, with an organized and abled knowledge repository</li> <li>Greater flexibility for decoupling</li> <li>Built-in language handling abilities</li> </ul></div></div></div><div class="field field-name-field-goals field-type-text-long field-label-above"><div class="field-label">Describe the project (goals, requirements and outcome): </div><div class="field-items"><div class="field-item even"><h2>The Goals:</h2> <p>The key goals of the projects were:</p> <ul> <li>Build a scalable and engaging knowledge repository of resources</li> <li>In multiple languages</li> <li>While also providing analytical service to understand the user performance</li> </ul> <h2>Requirement</h2> <p>The LMS was built in a decoupled architecture since it was required to have multiple types of content (text, videos, audios, quiz, pdf) in different languages with a scalable backend and a creative UI.</p> <p>Drupal was chosen as the data repository because of its ability to scale the support to content-rich sites and experiences. React for its ability to efficiently update and render components across different channels (web, mobile apps, and chatbot/VoiceBots) with interactive UIs.</p> <p>The learning management platform would curate all resources eliminating the need to conduct periodic classroom sessions to train its people or repeat a session across different locations. Since the platform would be available both online and offline, the learning is no longer restricted to a particular time slot or place.</p> <p>The resources are available on both web and mobile platforms, giving people the flexibility to learn on the go.</p> <p>This gave people the freedom to learn at their convenience, and hence the solution was better adopted by them.</p> <p>Monitor the performance of the courses and videos using interactive reporting system via xAPI.</p> <p>This helps in understanding how the team members are faring with the learning process while also learning the needs across geographies.</p> <p>By tracking the learning actions, the brand could analyze how people are interacting with the learning resources and apart from knowing how the users are faring, we are able to also track if a learning r resource is being useful or not.</p> <p>For tracking the progress, the information was passed to the LRS (Learning Record Store) which transformed the data into reports.</p> <ol> <li><strong>A fast and scalable backend system with an interactive frontend (decoupled LMS)</strong></li> <li><strong>To build an engaging (learning) platform</strong></li> <li><strong>Analyze user’s performance</strong></li> </ol> <h3>Process</h3> <p>The core enterprise LMS was developed in Drupal 8 which would provide users with an organized knowledge repository, easily accessible through different devices. Since the courses covered different types of content, it was imperative to ensure the site doesn’t slow down.</p> <p>Therefore the backend was split from a monolithic application into smaller pieces to ensure fully automated deployment ecosystem while streamlining the overall application with faster speed.</p> <p>The <strong>Lumen microservice framework </strong>was used to add additional functionalities to the platform. It specifically dealt with user activity data like points, favourite courses, bookmarks, badges, and leaderboards to make the course engaging.</p> <p>Lumen’s features like caching, queue, validation, routing, middleware, and the service container ensured blazing fast APIs and LMS.</p> <p>A faceted search application with React using declarative components was built and integrated the app inside the Drupal as a block or template page.</p> <h2>Outcome</h2> <p>Some of the prominent features in the LMS used, were:</p> <ol> <li>Varying (Multilingual) content for different regions and brands</li> <li>Personal dashboards for users to track their progress, scores, rewards</li> <li>Complete repository of all products, bestseller lists</li> <li>The Drupal LMS is also linked to the client’s internal personnel management systems and used data from there to map individual learning progress.</li> </ol> <p><strong>5 of the company’s brands have already moved on to the new platform</strong>, reducing the need for separate LMSs and providing a more integrated learning system. Others are migrating.</p> <p><strong>Client has seen a 30% reduction in classroom training and associated cost.</strong></p> <p>The beauty advisors’ <strong>engagement levels with the learning resources have risen considerably.</strong></p> <p>The platform is completely reusable and can be easily rolled out for all of the client’s brands, and different markets, with content structured specifically for each market.</p></div></div></div><div class="accordion"><h3 id="technical-specifications"><span>Technical specifications</span></h3 id="technical-specifications"><div class="accordion-content"><div class="field field-name-taxonomy-vocabulary-5 field-type-taxonomy-term-reference field-label-inline clearfix"><div class="field-label">Drupal version: </div><div class="field-items"><div class="field-item even">Drupal 8.x</div></div></div><div class="field field-name-field-projects field-type-entityreference field-label-above"><div class="field-label">Key modules/theme/distribution used: </div><div class="field-items"><div class="field-item even"><a href="/project/migrate_api">Migrate API</a></div><div class="field-item odd"><a href="/project/paragraphs">Paragraphs</a></div><div class="field-item even"><a href="/project/media">D7 Media</a></div><div class="field-item odd"><a href="/project/simple_oauth">Simple OAuth (OAuth2) & OpenID Connect</a></div><div class="field-item even"><a href="/project/search_api">Search API</a></div></div></div><div class="field field-name-field-module-selection field-type-text-long field-label-above"><div class="field-label">Why these modules/theme/distribution were chosen: </div><div class="field-items"><div class="field-item even"><ol> <li><strong>Migration API</strong>: Used to migrate from Moodle to the new Drupal 8 application</li> <li><strong>Paragraphs</strong>: Used to separate out content in a structured manner for each of the components within the same entity. It also served the purpose of defining layout and type of information which will be filled in the entity.</li> <li><strong>Media</strong>: Provides an extensible framework for managing files and multimedia assets for client application - it is commonly referred to as a 'file browser to the internet'. Also, it was useful to reuse the same media for different perspectives.</li> <li><strong>Simple_oauth</strong>: As the responsibility of Drupal was to expose information as API, we have used simple oAuth to do the Authorisation of the user.</li> <li><strong>Search API</strong>: Used for data indexing with Elastic storage further used for searching and large complex calculations and aggregation.</li> </ol> <p>And other custom modules to handle the custom requirements of the applications.</p></div></div></div></div></div><div class="field field-name-field-case-organizations field-type-entityreference field-label-above"><div class="field-label">Organizations involved: </div><div class="field-items"><div class="field-item even"><a href="/material">Material</a></div></div></div><div class="field field-name-field-team-members field-type-entityreference field-label-above"><div class="field-label">Team members: </div><div class="field-items"><div class="field-item even"><a href="/u/j2r">j2r</a></div><div class="field-item odd"><a href="/u/ankitgarg">ankitgarg</a></div><div class="field-item even"><a href="/u/durgeshs">durgeshs</a></div><div class="field-item odd"><a href="/u/ankitsingh0188">ankitsingh0188</a></div><div class="field-item even"><a href="/u/sharmaamitt16">sharma.amitt16</a></div><div class="field-item odd"><a href="/u/deepak-goyal">deepak goyal</a></div><div class="field-item even"><a href="/u/hesnvabr">hesnvabr</a></div><div class="field-item odd"><a href="/u/ankitv18">ankitv18</a></div><div class="field-item even"><a href="/u/deepshikhasingh">deepshikha.singh</a></div><div class="field-item odd"><a href="/u/jyotisingh">jyoti.singh</a></div><div class="field-item even"><a href="/u/rajandro">rajandro</a></div><div class="field-item odd"><a href="/u/deepanker_bhalla">deepanker_bhalla</a></div><div class="field-item even"><a href="/u/singhrt">singhrt</a></div><div class="field-item odd"><a href="/u/shash">Shash</a></div></div></div><div class="field field-name-taxonomy-vocabulary-50 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Sectors: </div><div class="field-items"><div class="field-item even">Beauty and Fashion</div><div class="field-item odd">Education</div></div></div> </div> </div> </div> </div> </div> </div> </div> </div> <!-- /#content --> </div> <!-- /#column-left --> <div id="content-bottom-region" role="complementary" > <div class="region region-content-bottom"> <div id="block-block-142" class="block block-block"> <div class="block-inner"> <div class="content"> <p><a href="https://srijan.net" target="_blank"><img style="height:3em;display:inline;margin:0em 2em 1em 0em;;" src="/files/cta/graphic/Srijan%20M%2B%20blk%402x%20%281%29_1.png" alt="SRIJAN" /></a><br /> <strong>Our uniquely collaborative style can help redesign your business.</strong></p> </div> </div> </div> <div id="block-drupalorg-lead-capture" class="block block-drupalorg"> <div class="block-inner"> <div class="content"> <form action="/case-study/global-beauty-retail-brand-reduced-cost-by-30-with-a-decoupled-lms" method="post" id="drupalorg-lead-capture-form" accept-charset="UTF-8"><div><input type="hidden" name="retURL" value="https://www.drupal.org/industries/thank-you?utm_source=case-study/global-beauty-retail-brand-reduced-cost-by-30-with-a-decoupled-lms" /> <input type="hidden" name="00NA00000067D9R" value="https://www.drupal.org/case-study/global-beauty-retail-brand-reduced-cost-by-30-with-a-decoupled-lms" /> <div class="form-item form-type-textfield form-item-first-name"> <label class="element-invisible" for="edit-first-name">First name <span class="form-required" title="This field is required.">*</span></label> <input placeholder="* Required: First name" type="text" id="edit-first-name" name="first_name" value="" size="20" maxlength="40" class="form-text required" /> </div> <div class="form-item form-type-textfield form-item-last-name"> <label class="element-invisible" for="edit-last-name">Last name <span class="form-required" title="This field is required.">*</span></label> <input placeholder="* Required: Last name" type="text" id="edit-last-name" name="last_name" value="" size="20" maxlength="80" class="form-text required" /> </div> <div class="form-item form-type-textfield form-item-email"> <label class="element-invisible" for="edit-email">Email <span class="form-required" title="This field is required.">*</span></label> <input placeholder="* Required: Email" type="text" id="edit-email" name="email" value="" size="20" maxlength="80" class="form-text required" /> </div> <div class="form-item form-type-textfield form-item-phone"> <label class="element-invisible" for="edit-phone">Phone </label> <input placeholder="Phone" type="text" id="edit-phone" name="phone" value="" size="20" maxlength="40" class="form-text" /> </div> <div class="form-item form-type-textfield form-item-company"> <label class="element-invisible" for="edit-company">Company <span class="form-required" title="This field is required.">*</span></label> <input placeholder="* Required: Company" type="text" id="edit-company" name="company" value="" size="20" maxlength="40" class="form-text required" /> </div> <div class="form-item form-type-textfield form-item-00NA00000067Mm6"> <label class="element-invisible" for="edit-00na00000067mm6">Country </label> <input placeholder="Country" type="text" id="edit-00na00000067mm6" name="00NA00000067Mm6" value="" size="20" maxlength="60" class="form-text" /> </div> <div class="form-item form-type-select form-item-00NA00000067Ahk"> <label class="element-invisible" for="edit-00na00000067ahk">Region </label> <select id="edit-00na00000067ahk" name="00NA00000067Ahk" class="form-select"><option value="AMER">Americas</option><option value="EMEA">Europe, Middle East, Africa</option><option value="APAC" selected="selected">Asia Pacific, Australia, New Zealand</option></select> </div> <div class="form-item form-type-textarea form-item-00NA00000067AhfMAE"> <label class="element-invisible" for="edit-00na00000067ahfmae">Project description <span class="form-required" title="This field is required.">*</span></label> <div class="form-textarea-wrapper"><textarea placeholder="* Required: Project description" id="edit-00na00000067ahfmae" name="00NA00000067AhfMAE" cols="60" rows="5" class="form-textarea required"></textarea></div> </div> <div class="captcha"><input type="hidden" name="captcha_sid" value="9327010" /> <input type="hidden" name="captcha_token" value="07d6049131cac28add72fd9e7d6cef77" /> <input type="hidden" name="captcha_response" value="Google no captcha" /> <div class="g-recaptcha" data-sitekey="6Ld0uCoUAAAAAKyrLmkrfFj1hgzlTgicamh5KW5Y" data-theme="light" data-type="image"></div><noscript> <div style="width: 302px; height: 352px;"> <div style="width: 302px; height: 352px; position: relative;"> <div style="width: 302px; height: 352px; position: absolute;"> <iframe src="https://www.recaptcha.net/recaptcha/api/fallback?k=6Ld0uCoUAAAAAKyrLmkrfFj1hgzlTgicamh5KW5Y&hl=en" frameborder="0" scrolling="no" style="width: 302px; height:352px; border-style: none;"></iframe> </div> <div style="width: 250px; height: 80px; position: absolute; border-style: none; bottom: 21px; left: 25px; margin: 0px; padding: 0px; right: 25px;"> <textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 80px; border: 1px solid #c1c1c1; margin: 0px; padding: 0px; resize: none;" value=""></textarea> </div> </div> </div> </noscript> </div><input type="submit" id="edit-submit--2" name="op" value="Get Connected" class="form-submit" /><input type="hidden" name="honeypot_time" value="1732716597|IpmzdwMR5AxSKjRnk1dAmDP--fW2jGPaFgGrRf8TBUs" /> <input type="hidden" name="form_build_id" value="form-nRkBlX8SgBBrqBhUDMRkPsDdvEX60vwmvTPXyZcbzg8" /> <input type="hidden" name="form_id" value="drupalorg_lead_capture_form" /> <div class="drupalhomepage-textfield"><div class="form-item form-type-textfield form-item-drupalhomepage"> <label for="edit-drupalhomepage">Leave this field blank </label> <input autocomplete="off" type="text" id="edit-drupalhomepage" name="drupalhomepage" value="" size="20" maxlength="128" class="form-text" /> </div> </div></div></form> </div> </div> </div> </div> </div> <!-- /#content-bottom --> </div> </div> <!-- /#page --> <div id="footer" role="contentinfo"> <div class="region region-footer"> <div id="block-drupalorg-crosssite-drupalorg-footer" class="block block-drupalorg-crosssite"> <div class="block-inner"> <div class="content"> <h4 class="element-invisible">News items</h4><ul class="drupal-news"><li class="0 first"><a href="https://www.drupal.org/news">News</a></li> <li class="1"><a href="https://www.drupal.org/planet" title="News from Drupal community members">Planet Drupal</a></li> <li class="2"><a href="https://www.drupal.org/about/media-kit/social-media" title="Drupal on social media">Social media</a></li> <li class="3"><a href="https://www.drupal.org/subscribe">Sign up for Drupal news</a></li> <li class="4"><a href="https://www.drupal.org/security" title="Announcements from the Drupal Security Team">Security advisories</a></li> <li class="5 last"><a href="https://jobs.drupal.org/" title="Drupal Jobs">Jobs</a></li> </ul><h4 class="element-invisible">Our community</h4><ul class="community"><li class="0 first"><a href="https://www.drupal.org/community">Community</a></li> <li class="1"><span><a href="https://www.drupal.org/drupal-services" title="People and organizations offering Drupal services">Services</a>, <a href="https://www.drupal.org/training" title="People and organizations offering Drupal training">Training</a> & <a href="https://www.drupal.org/hosting" title="Organizations offering Drupal hosting">Hosting</a></span></li> <li class="2"><a href="https://www.drupal.org/community/contributor-guide">Contributor guide</a></li> <li class="3"><a href="https://groups.drupal.org/groups" title="groups.drupal.org">Groups & meetups</a></li> <li class="4"><a href="https://events.drupal.org" title="Upcoming and past DrupalCons">DrupalCon</a></li> <li class="5 last"><a href="https://www.drupal.org/dcoc" title="Drupal code of conduct">Code of conduct</a></li> </ul><h4 class="element-invisible">Documentation</h4><ul class="get-started"><li class="0 first"><a href="https://www.drupal.org/documentation" title="Documentation for working with Drupal">Documentation</a></li> <li class="1"><a href="https://www.drupal.org/docs">Drupal Guide</a></li> <li class="2"><a href="https://www.drupal.org/docs/user_guide/en/index.html">Drupal User Guide</a></li> <li class="3"><a href="https://www.drupal.org/documentation/develop">Developer docs</a></li> <li class="4 last"><a href="https://api.drupal.org/" title="Drupal API reference">API.Drupal.org</a></li> </ul><h4 class="element-invisible">Drupal code base</h4><ul class="download-extend"><li class="0 first"><a href="https://www.drupal.org/download">Download & Extend</a></li> <li class="1"><a href="https://www.drupal.org/project/drupal" title="Download the latest version of the Drupal software">Drupal core</a></li> <li class="2"><a href="https://www.drupal.org/project/project_module" title="Download add-on features and functionality">Modules</a></li> <li class="3"><a href="https://www.drupal.org/project/project_theme" title="Download pre-designed styles for Drupal">Themes</a></li> <li class="4 last"><a href="https://www.drupal.org/project/project_distribution" title="Download a pre-packaged Drupal site">Distributions</a></li> </ul><h4 class="element-invisible">Governance of community</h4><ul class="about"><li class="0 first"><a href="https://www.drupal.org/about">About</a></li> <li class="1"><a href="https://www.drupal.org/about/features/accessibility" title="Our committment to accessibility">Web accessibility</a></li> <li class="2"><a href="https://www.drupal.org/association" title="About the Drupal Association">Drupal Association</a></li> <li class="3"><a href="https://www.drupal.org/drupalorg" title="About Drupal.org">About Drupal.org</a></li> <li class="4"><a href="https://www.drupal.org/terms" title="Drupal.org terms of service">Terms of service</a></li> <li class="5 last"><a href="https://www.drupal.org/privacy" title="Drupal.org privacy policy">Privacy policy</a></li> </ul> </div> </div> </div> <div id="block-block-77" class="block block-block"> <div class="block-inner"> <div class="content"> <p>Drupal is a <a href="/about/trademark">registered trademark</a> of <a href="https://dri.es">Dries Buytaert</a>.</p> </div> </div> </div> </div> </div> <div class="region region-page-bottom"> <script type="text/javascript"> (function(){ window._pxAppId = 'PXVnPBBfwe'; window._pxParam2 = ''; window._pxParam3 = '0'; var p = document.getElementsByTagName('script')[0], s = document.createElement('script'); s.async = 1; s.src = '/VnPBBfwe/init.js'; p.parentNode.insertBefore(s,p); }()); </script> <noscript> <div style="position:fixed; top:0; left:0; display:none" width="1" height="1"> <img src="/VnPBBfwe/xhr/api/v1/collector/noScript.gif?appId=PXVnPBBfwe"> </div> </noscript> </div> <script type="text/javascript" src="/files/advagg_js/js__B0FBwiP97ZnD38IFraZus4upS4KVkMXI3ou0fJ2ZXGA__pPDESRJz9GHsxqQIwQ_V8xnFYEH5jipG2eicsfrdWCs__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <!--[if lte IE 9]> <script type="text/javascript" src="/files/advagg_js/js__79M6UrZjAw3oNGnUjsWip12JsvnUZmJGA3h9LI0kuzE__J0sbXAJNry2-C_ZL2xd0RdVuzwTLvwN-UisIv5RNCvU__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js#ie9-" onload="if(jQuery.isFunction(jQuery.holdReady)){jQuery.holdReady(true);}"></script> <![endif]--> <!--[if gt IE 9]> <script type="text/javascript" src="/files/advagg_js/js__79M6UrZjAw3oNGnUjsWip12JsvnUZmJGA3h9LI0kuzE__J0sbXAJNry2-C_ZL2xd0RdVuzwTLvwN-UisIv5RNCvU__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js#ie10+" defer="defer" onload="if(jQuery.isFunction(jQuery.holdReady)){jQuery.holdReady(true);}"></script> <![endif]--> <!--[if !IE]><!--> <script type="text/javascript" src="/files/advagg_js/js__79M6UrZjAw3oNGnUjsWip12JsvnUZmJGA3h9LI0kuzE__J0sbXAJNry2-C_ZL2xd0RdVuzwTLvwN-UisIv5RNCvU__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer" onload="if(jQuery.isFunction(jQuery.holdReady)){jQuery.holdReady(true);}"></script> <!--<![endif]--> <script type="text/javascript" src="/files/advagg_js/js__pqoYaVR8NVhof-vNXe50j2TKhFv__IihVag_h4G6kus__B4mbn4wICLQjWm1m3-z1kw8F1FtP0cDAHKp00Xy_-88__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__H5AFmq1RrXKsrazzPq_xPQPy4K0wUKqecPjczzRiTgQ__wor4r9P8YTtQ7p6fbywTetZ47Z_orumIfrrhgxrpLus__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer" onload=" function advagg_mod_1() { // Count how many times this function is called. advagg_mod_1.count = ++advagg_mod_1.count || 1; try { if (advagg_mod_1.count <= 40) { init_drupal_core_settings(); // Set this to 100 so that this function only runs once. advagg_mod_1.count = 100; } } catch(e) { if (advagg_mod_1.count >= 40) { // Throw the exception if this still fails after running 40 times. throw e; } else { // Try again in 1 ms. window.setTimeout(advagg_mod_1, 1); } } } function advagg_mod_1_check() { if (window.init_drupal_core_settings && window.jQuery && window.Drupal) { advagg_mod_1(); } else { window.setTimeout(advagg_mod_1_check, 1); } } advagg_mod_1_check();"></script> <script type="text/javascript" src="/files/advagg_js/js__Oc0wwB7MVRfxtYw6EQM7d9sXj9PAQePoWSzQJ0uTk6c__iXqOGoaPhZHCPEspUr5BC8BwOx5P8B11xv7VOhoUii8__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__FabcJ6qluktliDejymsuV-FqaN_HyMKGe93c2rO9Ky0__el1ZLGkKneOoCS6OWa01WHuIEsTsXZ46MRLCF390Fbw__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__YT6D1B_BKxvm6JCH_t9sZNI5L6yITa_DlU5QcSlOkAU__OXobH7d1IP1o3WABlniIrU_-pcJacVSIPUv9bpD-6pQ__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__xNXZEl6CREO_N4cX50nXAG3o3PPW1f2SzBBHY8rEKV8__vTuPvw9kFyhvW1mq6Cl_PG3exxZo1gi4hMxmKe9QZUI__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__Bg-Oyw0EdZHoFiDPJGaRblSi6o8N85W9n2yZXjXiWMA__NXjFZXHvidDrkoewGg5Fy4sKC4nBXn02iVvdeQL9EYI__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__mj2TlWhks9oJxPMS-NZeTpU46WwFVlMGEIo6S9H_Qx8__C389Vc_zjTfBmrTqoRNGUK0zY_nSOyzn-bjDheR_WiY__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__pLKQd4r7OrHglE7Qkqw53K2UXCqQdhqQ9v0cz7hMCQY__OErfYuQdGbFHcCoLoUW_ESSvaumApNojzjJit8-2xcw__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__hHUWFbMAa11eJtx5V0ym9o0YBsB1udk34qUT5wr1ihI__ntICfIdx3SsBpfvYB8AF0VuFk7gZjQgBaS1C9CyMj6o__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript"> <!--//--><![CDATA[//><!-- function init_drupal_core_settings() {jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","setHasJsCookie":0,"ajaxPageState":{"theme":"bluecheese","theme_token":"HBH5Jlpf-kPOGUSZyRZemXcdG8HNj3klqqFltVbfVLc"},"drupalorgGitlab":{"gitlab_base_url":"https:\/\/git.drupalcode.org","base_url":"https:\/\/www.drupal.org"},"urlIsAjaxTrusted":{"\/case-study\/global-beauty-retail-brand-reduced-cost-by-30-with-a-decoupled-lms":true},"field_group":{"div":"full"},"drupalorgCrosssiteConsentNeeded":true}); if(jQuery.isFunction(jQuery.holdReady)){jQuery.holdReady(false);}} if(window.jQuery && window.Drupal){init_drupal_core_settings();} //--><!]]> </script> <script type="text/javascript" src="/files/advagg_js/js__2k0CJ3KAQNFTFab3y6ZvNtxs3HLons0Brq7VwvPSkKo__RYlZCliQTuN7U7I5I1Xhn1dAop17g2hAft1wVGgKHGA__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> <script type="text/javascript" src="/files/advagg_js/js__vj0LjvNwl-3K1P9LGT4BGuXCZcAovYsVlVmoJN3TMRg__KW8SiGceRY3sjIKVrffDjf2MK4A5Vp3EDDxVO-4pegI__YaNGWokqa69Wq8hHbkE322PVJ8I-GmpfBsT8LGsMpcI.js" defer="defer"></script> </body> </html>