---
title: Main Page
layout: default
---

      <div class="container-fluid product pt-5 pb-5 mx-auto">
        <div class="row pt-5 pb-5">
          <div class="container">
            <div class="col pt-5 mx-auto text-left">
              <h1 class="display-5">Apache Unomi&trade;: The Open Source Customer Data Platform</h1>
              <p class="lead">Apache Unomi&trade; (pronounced "You know me") is a Java Open Source customer data platform, a Java server designed to manage customers, leads and visitors data and help personalize customers experiences while also offering features to respect visitor privacy rules (such as GDPR)</p>
              <div class="pt-4">
                <a class="btn btn-primary btn-lg" href="get-started.html">Learn more</a>&nbsp;&nbsp;
                <a class="btn btn-primary btn-lg" href="download.html">Download</a>
              </div>
            </div>
          </div>
        </div>
      </div>


      <!-- Marketing messaging and featurettes
      ================================================== -->
      <!-- Wrap the rest of the page in another container to center all the content. -->

      <div class="container marketing pt-5">

        <h1>News</h1>

        <div class="row">
          <div class="col-lg-6 pl-5">
            <h3>Version 1.5 released !</h3>
            <p>Feature highlights:
            <h4>ElasticSearch 7 support</h4>
            <ul>
              <li>New data model to support ElasticSearch 7 and up</li>
              <li>Better compatibility with Kibana</li>
              <li>Migration tool updated to make the upgrade from the old to the new data model seamless</li>
            </ul>
            <h4>Docker / Cloud improvements</h4>
            <ul>
              <li>Official Docker image now on Docker Hub!</li>
              <li>Improved Docker project to be in line with latest project builds</li>
            </ul>
            <h4>Profiles</h4>
            <ul>
              <li>Added last updated property to profiles to make it easy to query last modified profiles</li>
            </ul>
            <h4>Actions</h4>
            <ul>
              <li>It is now possible to build Unomi actions using Groovy scripts inside a plugin</li>
            </ul>
            <h4>JDK support</h4>
            <ul>
              <li>Both JDK 11 and JDK 8 are now supported.</li>
            </ul>
            <h4>Kafka support</h4>
            <ul>
              <li>Initial Kafka consumer support</li>
            </ul>
            </p>
          </div><!-- /.col-lg-8 -->
          <div class="col-lg-6 my-auto mx-auto">
            <img src="assets/images/apache-unomi-functionalities.png" class="img-thumbnail" alt="Apache Unomi profile view shell command" />
          </div><!-- /.col-lg-4 -->
        </div><!-- /.row -->

        <hr class="featurette-divider">

        <div class="row">
          <div class="col-lg-4 my-auto mx-auto">
            <img src="assets/images/unomi-profile-view.png" class="img-thumbnail" alt="Apache Unomi profile view shell command" width="350" />
          </div><!-- /.col-lg-4 -->
          <div class="col-lg-8 pl-5">
            <h3>Version 1.4.0 released !</h3>
            <p>Feature highlights:
            <h4>Container/Cloud deployments</h4>
            <ul>
              <li>Centralized configuration compatible with Docker environment variables
              </li>
              <li>New Dockerfile and Docker Compose project files (official Apache Unomi Docker image coming soon!)
              </li>
            </ul>
            <h4>Event, rules, profiles management and tools</h4>
            <ul>
              <li>New Karaf Shell Commands to view events, sessions and profiles, analyze rule executions, view incoming events, and much more...</li>
              <li>Endpoint to search in events has been added</li>
              <li>New patch system to improve modifying default definitions (rules, segments, …)</li>
            </ul>
            <h4>Data collection</h4>
            <ul>
              <li>Analytics.js integration, providing an out-of-the-box ready-to-use web tracker</li>
            </ul>
            </p>
          </div><!-- /.col-lg-8 -->
        </div><!-- /.row -->

        <hr class="featurette-divider">

        <div class="row">
          <div class="col-lg-8 pl-5">
            <h3>Version 1.3.0 introduced Privacy (GPDR consent management) features</h3>
            <p>New in release 1.3.0 are features to manage visitor consents,
              in order to make it easier to comply with new privacy regulations such as the <a target="_blank"
                                                                                               href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">GDPR</a>.
              A quick guide to these new features is also available <a href="manual/latest/#_consent_api">here</a>.</p>
          </div><!-- /.col-lg-8 -->
          <div class="col-lg-4 my-auto mx-auto">
            <img src="assets/images/europe-gdpr.jpg" class="img-thumbnail" alt="GDPR Illustration" width="350" />
          </div><!-- /.col-lg-4 -->
        </div><!-- /.row -->

        <hr class="featurette-divider">

        <div class="row featurette">
          <div class="col-md-12">
            <h2 class="featurette-heading">Why would you need a <span class="text-muted">Customer Data Platform</span> ?</h2>
            <p>Organizations collect data from multiple sources and channels - sales, web, emails, mobile, brick and mortar - and all of this data is spread across different departments and technologies. As a result, many professionals are lacking the data they need to do their job, especially data analysts and marketers.</p>
            <p>A customer data platform helps business users collect all the customer data in one place, providing a complete view of the customers. When the data is collected, the customer data platform will also play a key role in choosing which content or offer is more relevant to a customer.</p>
          </div>
        </div>

        <div class="row featurette pt-5">
          <div class="col-md-12">
            <h2 class="featurette-heading">The <span class="text-muted">Apache Unomi&trade;</span> advantage ?</h2>
            <p>Each organization is unique and will always have specific needs, this is why Apache Unomi&trade; has been designed to be extended and to ease the integration of external data. The embedded features such as segmentation, scoring and built-in privacy will be appreciated by business users while horizontal scalability and open source positioning will be loved by developers and architects. </p>
            <p>Apache Unomi&trade; is also the reference implementation of the upcoming OASIS Context Server Customer Data Platform (CDP) standard (<a target="_blank" href="https://www.oasis-open.org/committees/cxs/">https://www.oasis-open.org/committees/cxs/</a>) to help standardize personalization of customer experience while promoting ethical web experience management and increased user privacy controls. </p>
          </div>
        </div>

        <div class="row featurette pt-5">
          <div class="col-md-12">
            <h2 class="featurette-heading">Business cases based on <span class="text-muted">Apache Unomi&trade;</span> ?</h2>
            <ul>
              <li>Build a web personalization software to adapt the content on your website to your audience</li>
              <li>Collect data from mobile application and feed Apache Unomi&trade; to track and understand your customers’ journeys</li>
              <li>Connect the beacons deployed in your stores to Apache Unomi&trade; and consolidate the profile of your customers and leads across all these channels</li>
              <li>Automatically push profiles from Apache Unomi&trade; to your CRM when a lead reach a given number of points in one of your scoring plans</li>
            </ul>
          </div>
        </div>

        <div class="row featurette pt-5">
          <div class="col-md-12">
            <h2 class="featurette-heading"><span class="text-muted">Apache Unomi&trade;</span> logical architecture</h2>
            <p>All communication is done using HTTP REST requests and JSON data formats.</p>
          </div>
        </div>

        <div class="row featurette">
          <div class="col-md-12">
            <img src="assets/images/unomi-logical-architecture-diagram.png" alt="Apache Unomi logical architecture diagram" class="img-fluid" />
          </div>
        </div>

        <div class="row featurette pt-5">
          <div class="col-md-6">
            <h2>For developers</h2>
            <ul>
              <li>Uses ElasticSearch for data storage, dynamic data structure</li>
              <li>Highly scalable architecture</li>
              <li>Very simple to deploy and install (simply unzip &amp; run)</li>
              <li>Uses Apache Karaf&trade; as the OSGi runtime</li>
              <li>Full &amp; simple REST API</li>
              <li>Extensible through plugin architecture (using OSGi &amp; simple JSON descriptors)</li>
              <li>Apache Open Source project</li>
            </ul>
          </div>
          <div class="col-md-6">
            <h2>For IT stakeholders and business users</h2>
            <ul>
              <li>First-Party Data Collection and Ownership</li>
              <li>Persistent and consolidated profiles for all your audience (customers &amp; leads), storing anonymous and personally identifiable information</li>
              <li>Regulation-proof and privacy management built-in</li>
              <li>Real-Time Decisioning (Scoring logics, segmentation)</li>
              <li>Open standard, easy integration and extension</li>
            </ul>
          </div>
        </div>

        <div class="row featurette pt-5">
          <div class="col-md-12">
            <h2 class="featurette-heading">News</h2>
            <ul>
              <li>2021-05-10 Released version 1.5.6</li>
              <li>2021-04-27 Released version 1.5.5</li>
              <li>2020-11-23 Released version 1.5.4</li>
              <li>2020-11-21 Released version 1.5.3</li>
              <li>2020-11-01 Released version 1.5.2</li>
              <li>2020-05-14 Released version 1.5.1</li>
              <li>2020-05-09 Released version 1.5.0</li>
              <li>2019-05-24 Released version 1.4.0</li>
              <li>2019-02-21 Top Level Project promoted!</li>
              <li>2018-09-10 Released version 1.3.0-incubating</li>
              <li>2017-09-28 Released version 1.2.0-incubating</li>
              <li>2017-07-19 New Salesforce CRM connector contributed</li>
              <li>2016-10-04 Released version 1.1.0-incubating</li>
              <li>2016-05-22 Released version 1.0.0-incubating</li>
              <li>2015-11-23 Initial code base import in <a href="https://gitbox.apache.org/repos/asf?p=unomi.git" target="_blank">Git repository</a></li>
              <li>2015-11-20 Added <a href="community-maturity-model-report.html">Apache Maturity Model report page</a></li>
              <li>2015-11-13 Initial web site created</li>
              <li>2015-10-20 JIRA, mailing lists, git, website space created.</li>
              <li>2015-10-05 Project enters incubation.</li>
            </ul>
          </div>
        </div>

        <div class="row featurette pt-5">
          <div class="col-md-12">
            <h2 class="featurette-heading">Articles &amp; slides</h2>
            <p>Checkout the latest <a href="resources.html#articlesAndSlides">articles and slides</a></p>
          </div>
        </div>

        <div class="row featurette mb-5 pt-5">
          <div class="col-md-7">
            <h2 class="featurette-heading">Apache & OpenSource.</h2>
            <p>
              Unomi&trade; is your project ! Unomi&trade; is an Apache Software Foundation project, available under the Apache v2 license.
              It's a complete open community, always listening proposals and comments.
              Sources, mailing lists, issue tracker: it's fully open, you can access directly.
              We also love contributions : don't hesitate to contribute.
            </p>
            <p>
              <a href="community.html">Be Involved In The Community</a> |
              <a href="contribute.html">How To Contribute</a>
            </p>
          </div>
          <div class="col-md-5 align-items-center">
            <a href="http://apache.org" target="_blank">
            <img class="featurette-image img-fluid mx-auto" src="assets/images/apache.png" alt="Apache Software Foundation">
            </a>
            <br><br><br>
            <a href="https://events.apache.org/x/current-event.html" target="_blank">
              <img class="featurette-image img-fluid mx-auto" src="http://www.apache.org/events/current-event-234x60.png" alt="ApacheCon" />
            </a>
          </div>
        </div>

        <!-- /END THE FEATURETTES -->

      </div><!-- /.container -->
