unomi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shu...@apache.org
Subject svn commit: r1783425 [6/9] - in /incubator/unomi/website: ./ rest-api-doc/ unomi-api/ unomi-extensions/ unomi-itests/ unomi-kar/ unomi-performance-tests/ unomi-persistence-elasticsearch/ unomi-persistence-spi/ unomi-plugins/ unomi-rest/ unomi-services/...
Date Fri, 17 Feb 2017 16:47:56 GMT
Added: incubator/unomi/website/versions/1.1/concepts.html
URL: http://svn.apache.org/viewvc/incubator/unomi/website/versions/1.1/concepts.html?rev=1783425&view=auto
==============================================================================
--- incubator/unomi/website/versions/1.1/concepts.html (added)
+++ incubator/unomi/website/versions/1.1/concepts.html Fri Feb 17 16:47:56 2017
@@ -0,0 +1,636 @@
+
+<!DOCTYPE html>
+<!--
+ Generated by Apache Maven Doxia at 2017-02-17
+ Rendered using Reflow Maven Skin 1.1.1 (http://andriusvelykis.github.io/reflow-maven-skin)
+-->
+<html  xml:lang="en" lang="en">
+
+	<head>
+		<meta charset="UTF-8" />
+		<title>Concepts | Apache Unomi</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+		<meta name="description" content="" />
+		<meta http-equiv="content-language" content="en" />
+ 
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" />
+		<link href="../..//css/docs.css" rel="stylesheet" />
+		<link href="../..//css/reflow-skin.css" rel="stylesheet" />
+
+		<link href="http://yandex.st/highlightjs/7.5/styles/github.min.css" rel="stylesheet" />
+
+		<link href="../..//css/lightbox.css" rel="stylesheet" />
+
+		<link href="../..//css/site.css" rel="stylesheet" />
+		<link href="../..//css/print.css" rel="stylesheet" media="print" />
+
+		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
+		<!--[if lt IE 9]>
+			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+		<![endif]-->
+
+
+
+		<!-- Google Analytics -->
+		<script type="text/javascript">
+
+			var _gaq = _gaq || [];
+			_gaq.push(['_setAccount', 'UA-70313240-1']);
+			_gaq.push(['_trackPageview']);
+
+			(function() {
+				var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+				ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+				var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+			})();
+
+		</script>
+		</head>
+
+	<body class="page-versions-11-concepts project-unomi-root" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
+
+		<div class="navbar navbar-fixed-top">
+			<div class="navbar-inner">
+				<div class="container">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
+						<span class="icon-bar"></span>
+						<span class="icon-bar"></span>
+						<span class="icon-bar"></span>
+					</a>
+					<a class="brand" href="../.."><img src="http://unomi.incubator.apache.org/images/unomi-86x20.png" /></a>
+					<div class="nav-collapse collapse" id="top-nav-collapse">
+						<ul class="nav pull-right">
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Download <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../download.html" title="Packages">Packages</a></li>
+									<li ><a href="../../license.html" title="License">License</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../" title="Home">Home</a></li>
+									<li class="dropdown-submenu disabled">
+										<a title="Version 1.1 (current)">Version 1.1 (current)</a>
+										<ul class="dropdown-menu">
+											<li ><a href="building-and-deploying.html" title="Building and deploying">Building and deploying</a></li>
+											<li ><a href="getting-started.html" title="Getting started">Getting started</a></li>
+											<li ><a href="configuration.html" title="Configuration">Configuration</a></li>
+											<li ><a href="clustering.html" title="Cluster setup">Cluster setup</a></li>
+											<li ><a href="../master/1.1.html" title="Concepts">Concepts</a></li>
+										</ul>
+									</li>
+									<li class="dropdown-submenu disabled">
+										<a title="Master (snapshot)">Master (snapshot)</a>
+										<ul class="dropdown-menu">
+											<li ><a href="../master/building-and-deploying.html" title="Building and deploying">Building and deploying</a></li>
+											<li ><a href="../master/getting-started.html" title="Getting started">Getting started</a></li>
+											<li ><a href="../master/configuration.html" title="Configuration">Configuration</a></li>
+											<li ><a href="../master/clustering.html" title="Cluster setup">Cluster setup</a></li>
+											<li ><a href="../master/concepts.html" title="Concepts">Concepts</a></li>
+										</ul>
+									</li>
+									<li ><a href="../../rest-api-doc/index.html" title="REST API documentation">REST API documentation</a></li>
+									<li ><a href="../../unomi-api/apidocs/index.html" title="API Javadoc">API Javadoc</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Standard <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="https://www.oasis-open.org/committees/cxs/" title="OASIS Context Server Technical Committee" class="externalLink">OASIS Context Server Technical Committee</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Privacy <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../privacy-policy.html" title="Site policy">Site policy</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Contribute <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../mail-lists.html" title="Mailing lists">Mailing lists</a></li>
+									<li ><a href="../../source-repository.html" title="Source">Source</a></li>
+									<li ><a href="../../issue-tracking.html" title="Issues">Issues</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../mail-lists.html" title="Mailing lists">Mailing lists</a></li>
+									<li ><a href="../../team-list.html" title="Team">Team</a></li>
+									<li ><a href="../../maturity-model-report.html" title="Maturity model report card">Maturity model report card</a></li>
+									<li ><a href="http://www.apache.org" title="The Apache Software Foundation" class="externalLink">The Apache Software Foundation</a></li>
+									<li ><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship" class="externalLink">Sponsorship</a></li>
+									<li ><a href="http://www.apache.org/foundation/thanks.html" title="Thanks" class="externalLink">Thanks</a></li>
+								</ul>
+							</li>
+						</ul>
+					</div><!--/.nav-collapse -->
+				</div>
+			</div>
+		</div>
+
+	<div class="container">
+
+	<!-- Masthead
+	================================================== -->
+
+	<header>
+		<div>
+			<ul class="breadcrumb">
+				<li class="publishDate version-date">Last Published: 2017-02-17</li>
+			</ul>
+		</div>
+	</header>
+
+	<div class="main-body">
+	<div class="row">
+		<div class="span8">
+			<div class="body-content">
+<!-- ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License. --> 
+<div class="page-header">
+ <h1 id="concepts">Concepts</h1>
+</div> 
+<p>Apache Unomi gathers information about users actions, information that is processed and stored by Unomi services. The collected information can then be used to personalize content, derive insights on user behavior, categorize the user profiles into segments along user-definable dimensions or acted upon by algorithms.</p> 
+<div class="section"> 
+ <h2 id="Items_and_types">Items and types</h2> 
+ <p>Unomi structures the information it collects using the concept of <tt>Item</tt> which provides the base information (an identifier and a type) the context server needs to process and store the data. Items are persisted according to their type (structure) and identifier (identity). This base structure can be extended, if needed, using properties in the form of key-value pairs.</p> 
+ <p>These properties are further defined by the <tt>Item</tt>’s type definition which explicits the <tt>Item</tt>’s structure and semantics. By defining new types, users specify which properties (including the type of values they accept) are available to items of that specific type.</p> 
+ <p>Unomi defines default value types: <tt>date</tt>, <tt>email</tt>, <tt>integer</tt> and <tt>string</tt>, all pretty self-explanatory. While you can think of these value types as “primitive” types, it is possible to extend Unomi by providing additional value types.</p> 
+ <p>Additionally, most items are also associated to a scope, which is a concept that Unomi uses to group together related items. A given scope is represented in Unomi by a simple string identifier and usually represents an application or set of applications from which Unomi gathers data, depending on the desired analysis granularity. In the context of web sites, a scope could, for example, represent a site or family of related sites being analyzed. Scopes allow clients accessing the context server to filter data to only see relevant data.</p> 
+ <p><i>Base <tt>Item</tt> structure:</i></p> 
+ <div class="source"> 
+  <pre>{
+  &quot;itemType&quot;: &lt;type of the item&gt;,
+  &quot;scope&quot;: &lt;scope&gt;,
+  &quot;itemId&quot;: &lt;item identifier&gt;,
+  &quot;properties&quot;: &lt;optional properties&gt;
+}
+</pre> 
+ </div> 
+ <p>Some types can be dynamically defined at runtime by calling to the REST API while other extensions are done via Unomi plugins. Part of extending Unomi, therefore, is a matter of defining new types and specifying which kind of Unomi entity (e.g. profiles) they can be affected to. For example, the following JSON document can be passed to Unomi to declare a new property type identified (and named) <tt>tweetNb</tt>, tagged with the <tt>social</tt> tag, targeting profiles and using the <tt>integer</tt> value type.</p> 
+ <p><i>Example JSON type definition:</i></p> 
+ <div class="source"> 
+  <pre>{
+    &quot;itemId&quot;: &quot;tweetNb&quot;,
+    &quot;itemType&quot;: &quot;propertyType&quot;,
+    &quot;metadata&quot;: {
+        &quot;id&quot;: &quot;tweetNb&quot;,
+        &quot;name&quot;: &quot;tweetNb&quot;
+    },
+    &quot;tags&quot;: [&quot;social&quot;],
+    &quot;target&quot;: &quot;profiles&quot;,
+    &quot;type&quot;: &quot;integer&quot;
+}
+</pre> 
+ </div> 
+ <blockquote> 
+  <p>Unomi defines a built-in scope (called <tt>systemscope</tt>) that clients can use to share data across scopes.</p> 
+ </blockquote> 
+</div> 
+<div class="section"> 
+ <h2 id="Events">Events</h2> 
+ <p>Users’ actions are conveyed from clients to the context server using events. Of course, the required information depends on what is collected and users’ interactions with the observed systems but events minimally provide a type, a scope and source and target items. Additionally, events are timestamped. Conceptually, an event can be seen as a sentence, the event’s type being the verb, the source the subject and the target the object.</p> 
+ <p><i>Event structure:</i></p> 
+ <div class="source"> 
+  <pre>{
+    &quot;eventType&quot;: &lt;type of the event&gt;,
+    &quot;scope&quot;: &lt;scope of the event&gt;,
+    &quot;source&quot;: &lt;Item&gt;,
+    &quot;target&quot;: &lt;Item&gt;,
+    &quot;properties&quot;: &lt;optional properties&gt;
+}
+</pre> 
+ </div> 
+ <p>Source and target can be any Unomi item but are not limited to them. In particular, as long as they can be described using properties and Unomi’s type mechanism and can be processed either natively or via extension plugins, source and target can represent just about anything. Events can also be triggered as part of Unomi’s internal processes for example when a rule is triggered.</p> 
+ <p>Events are sent to Unomi from client applications using the JSON format and a typical page view event from a web site could look something like the following:</p> 
+ <p><i>Example page view event:</i></p> 
+ <div class="source"> 
+  <pre>{
+    &quot;eventType&quot;: &quot;view&quot;,
+    &quot;scope&quot;: &quot;ACMESPACE&quot;,
+    &quot;source&quot;: {
+        &quot;itemType&quot;: &quot;site&quot;,
+        &quot;scope&quot;: &quot;ACMESPACE&quot;,
+        &quot;itemId&quot;: &quot;c4761bbf-d85d-432b-8a94-37e866410375&quot;
+    },
+    &quot;target&quot;: {
+        &quot;itemType&quot;: &quot;page&quot;,
+        &quot;scope&quot;: &quot;ACMESPACE&quot;,
+        &quot;itemId&quot;: &quot;b6acc7b3-6b9d-4a9f-af98-54800ec13a71&quot;,
+        &quot;properties&quot;: {
+            &quot;pageInfo&quot;: {
+            &quot;pageID&quot;: &quot;b6acc7b3-6b9d-4a9f-af98-54800ec13a71&quot;,
+            &quot;pageName&quot;: &quot;Home&quot;,
+            &quot;pagePath&quot;: &quot;/sites/ACMESPACE/home&quot;,
+            &quot;destinationURL&quot;: &quot;http://localhost:8080/sites/ACMESPACE/home.html&quot;,
+            &quot;referringURL&quot;: &quot;http://localhost:8080/&quot;,
+            &quot;language&quot;: &quot;en&quot;
+        },
+        &quot;category&quot;: {},
+        &quot;attributes&quot;: {}
+      }
+    }
+}
+</pre> 
+ </div> 
+</div> 
+<div class="section"> 
+ <h2 id="Profiles">Profiles</h2> 
+ <p>By processing events, Unomi progressively builds a picture of who the user is and how they behave. This knowledge is embedded in <tt>Profile</tt> object. A profile is an <tt>Item</tt> with any number of properties and optional segments and scores. Unomi provides default properties to cover common data (name, last name, age, email, etc.) as well as default segments to categorize users. Unomi users are, however, free and even encouraged to create additional properties and segments to better suit their needs.</p> 
+ <p>Contrary to other Unomi items, profiles are not part of a scope since we want to be able to track the associated user across applications. For this reason, data collected for a given profile in a specific scope is still available to any scoped item that accesses the profile information.</p> 
+ <p>It is interesting to note that there is not necessarily a one to one mapping between users and profiles as users can be captured across applications and different observation contexts. As identifying information might not be available in all contexts in which data is collected, resolving profiles to a single physical user can become complex because physical users are not observed directly. Rather, their portrait is progressively patched together and made clearer as Unomi captures more and more traces of their actions. Unomi will merge related profiles as soon as collected data permits positive association between distinct profiles, usually as a result of the user performing some identifying action in a context where the user hadn’t already been positively identified.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Sessions">Sessions</h2> 
+ <p>A session represents a time-bounded interaction between a user (via their associated profile) and a Unomi-enabled application. A session represents the sequence of actions the user performed during its duration. For this reason, events are associated with the session during which they occurred. In the context of web applications, sessions are usually linked to HTTP sessions. </p> 
+ <h1 id="extending_unomi_via_plugins">Extending Unomi via plugins</h1> 
+ <p>Unomi is architected so that users can provided extensions in the form of plugins.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Types_vs_instances">Types vs. instances</h2> 
+ <p>Several extension points in Unomi rely on the concept of type: the extension defines a prototype for what the actual items will be once parameterized with values known only at runtime. This is similar to the concept of classes in object-oriented programming: types define classes, providing the expected structure and which fields are expected to be provided at runtime, that are then instantiated when needed with actual values.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Plugin_structure">Plugin structure</h2> 
+ <p>Being built on top of Apache Karaf, Unomi leverages OSGi to support plugins. A Unomi plugin is, thus, an OSGi bundle specifying some specific metadata to tell Unomi the kind of entities it provides. A plugin can provide the following entities to extend Unomi, each with its associated definition (as a JSON file), located in a specific spot within the <tt>META-INF/cxs/</tt> directory of the bundle JAR file:</p> 
+ <table border="0" class="bodyTable table table-striped table-hover"> 
+  <thead> 
+   <tr class="a"> 
+    <th>Entity </th> 
+    <th>Location in <tt>cxs</tt> directory </th> 
+   </tr> 
+  </thead> 
+  <tbody> 
+   <tr class="b"> 
+    <td>ActionType </td> 
+    <td>actions </td> 
+   </tr> 
+   <tr class="a"> 
+    <td>ConditionType </td> 
+    <td>conditions </td> 
+   </tr> 
+   <tr class="b"> 
+    <td>Persona </td> 
+    <td>personas </td> 
+   </tr> 
+   <tr class="a"> 
+    <td>PropertyMergeStrategyType </td> 
+    <td>mergers </td> 
+   </tr> 
+   <tr class="b"> 
+    <td>PropertyType </td> 
+    <td>properties then profiles or sessions subdirectory then <tt>&lt;category name&gt;</tt> directory </td> 
+   </tr> 
+   <tr class="a"> 
+    <td>Rule </td> 
+    <td>rules </td> 
+   </tr> 
+   <tr class="b"> 
+    <td>Scoring </td> 
+    <td>scorings </td> 
+   </tr> 
+   <tr class="a"> 
+    <td>Segment </td> 
+    <td>segments </td> 
+   </tr> 
+   <tr class="b"> 
+    <td>Tag </td> 
+    <td>tags then <tt>&lt;category name&gt;</tt> directory </td> 
+   </tr> 
+   <tr class="a"> 
+    <td>ValueType </td> 
+    <td>values </td> 
+   </tr> 
+  </tbody> 
+ </table> 
+ <p><a class="externalLink" href="http://aries.apache.org/modules/blueprint.html">Blueprint</a> is used to declare what the plugin provides and inject any required dependency. The Blueprint file is located, as usual, at <tt>OSGI-INF/blueprint/blueprint.xml</tt> in the bundle JAR file.</p> 
+ <p>The plugin otherwise follows a regular maven project layout and should depend on the Unomi API maven artifact:</p> 
+ <div class="source"> 
+  <pre>&lt;dependency&gt;
+    &lt;groupId&gt;org.apache.unomi&lt;/groupId&gt;
+    &lt;artifactId&gt;unomi-api&lt;/artifactId&gt;
+    &lt;version&gt;...&lt;/version&gt;
+&lt;/dependency&gt;
+</pre> 
+ </div> 
+ <p>Some plugins consists only of JSON definitions that are used to instantiate the appropriate structures at runtime while some more involved plugins provide code that extends Unomi in deeper ways.</p> 
+ <p>In both cases, plugins can provide more that one type of extension. For example, a plugin could provide both <tt>ActionType</tt>s and <tt>ConditionType</tt>s.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Extension_points">Extension points</h2> 
+ <div class="section"> 
+  <h3 id="ActionType">ActionType</h3> 
+  <p><tt>ActionType</tt>s define new actions that can be used as consequences of Rules being triggered. When a rule triggers, it creates new actions based on the event data and the rule internal processes, providing values for parameters defined in the associated <tt>ActionType</tt>. Example actions include: “Set user property x to value y” or “Send a message to service x”.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="ConditionType">ConditionType</h3> 
+  <p><tt>ConditionType</tt>s define new conditions that can be applied to items (for example to decide whether a rule needs to be triggered or if a profile is considered as taking part in a campaign) or to perform queries against the stored Unomi data. They may be implemented in Java when attempting to define a particularly complex test or one that can better be optimized by coding it. They may also be defined as combination of other conditions. A simple condition could be: “User is male”, while a more generic condition with parameters may test whether a given property has a specific value: “User property x has value y”.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="Persona">Persona</h3> 
+  <p>A persona is a “virtual” profile used to represent categories of profiles, and may also be used to test how a personalized experience would look like using this virtual profile. A persona can define predefined properties and sessions. Persona definition make it possible to “emulate” a certain type of profile, e.g : US visitor, non-US visitor, etc.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="PropertyMergeStrategyType">PropertyMergeStrategyType</h3> 
+  <p>A strategy to resolve how to merge properties when merging profile together.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="PropertyType">PropertyType</h3> 
+  <p>Definition for a profile or session property, specifying how possible values are constrained, if the value is multi-valued (a vector of values as opposed to a scalar value). <tt>PropertyType</tt>s can also be categorized using tags or file system structure, using sub-directories to organize definition files.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="Rule">Rule</h3> 
+  <p><tt>Rule</tt>s are conditional sets of actions to be executed in response to incoming events. Triggering of rules is guarded by a condition: the rule is only triggered if the associated condition is satisfied. That condition can test the event itself, but also the profile or the session. Once a rule triggers, a list of actions can be performed as consequences. Also, when rules trigger, a specific event is raised so that other parts of Unomi can react accordingly.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="Scoring">Scoring</h3> 
+  <p><tt>Scoring</tt>s are set of conditions associated with a value to assign to profiles when matching so that the associated users can be scored along that dimension. Each scoring element is evaluated and matching profiles’ scores are incremented with the associated value.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="Segments">Segments</h3> 
+  <p><tt>Segment</tt>s represent dynamically evaluated groups of similar profiles in order to categorize the associated users. To be considered part of a given segment, users must satisfies the segment’s condition. If they match, users are automatically added to the segment. Similarly, if at any given point during, they cease to satisfy the segment’s condition, they are automatically removed from it.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="Tag">Tag</h3> 
+  <p><tt>Tag</tt>s are simple labels that are used to classify all other objects inside Unomi. Tags can define sub-tags.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="ValueType">ValueType</h3> 
+  <p>Definition for values that can be assigned to properties (“primitive” types).</p> 
+ </div> 
+</div> 
+<div class="section"> 
+ <h2 id="Other_Unomi_entities">Other Unomi entities</h2> 
+ <div class="section"> 
+  <h3 id="UserList">UserList</h3> 
+  <p>User list are simple static lists of users. The associated profile stores the lists it belongs to in a specific property.</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="Goal">Goal</h3> 
+  <p>Goals represent tracked activities / actions that can be accomplished by site (or more precisely scope) visitors. These are tracked in general because they relate to specific business objectives or are relevant to measure site/scope performance.</p> 
+  <p>Goals can be defined at the scope level or in the context of a particular <tt>Campaign</tt>. Either types of goals behave exactly the same way with the exception of two notable differences: - duration: scope-level goals are considered until removed while campaign-level goals are only considered for the campaign duration - audience filtering: any visitor is considered for scope-level goals while campaign-level goals only consider visitors who match the campaign’s conditions</p> 
+ </div> 
+ <div class="section"> 
+  <h3 id="Campaign">Campaign</h3> 
+  <p>A goal-oriented, time-limited marketing operation that needs to be evaluated for return on investment performance by tracking the ratio of visits to conversions.</p> 
+ </div> 
+</div>
+			</div>
+		</div>
+		<div class="span4">
+			<div id="toc-sidebar">
+				<div class="well">
+					<ul class="nav nav-list">
+						<li class="nav-header">Table of Contents</li>
+		<li class="dropdown"><a href="#concepts" title="Concepts">Concepts <b class="caret"></b></a>
+			<ul class="nav nav-list">
+		<li><a href="#Items_and_types" title="Items and types">Items and types</a>
+		<li><a href="#Events" title="Events">Events</a>
+		<li><a href="#Profiles" title="Profiles">Profiles</a>
+		<li><a href="#Sessions" title="Sessions">Sessions</a>
+				<li class="divider"></li>
+			</ul>
+		</li>
+		<li class="dropdown"><a href="#extending_unomi_via_plugins" title="Extending Unomi via plugins">Extending Unomi via plugins <b class="caret"></b></a>
+			<ul class="nav nav-list">
+		<li><a href="#Types_vs_instances" title="Types vs. instances">Types vs. instances</a>
+		<li><a href="#Plugin_structure" title="Plugin structure">Plugin structure</a>
+		<li class="dropdown"><a href="#Extension_points" title="Extension points">Extension points <b class="caret"></b></a>
+			<ul class="nav nav-list">
+		<li><a href="#ActionType" title="ActionType">ActionType</a>
+		<li><a href="#ConditionType" title="ConditionType">ConditionType</a>
+		<li><a href="#Persona" title="Persona">Persona</a>
+		<li><a href="#PropertyMergeStrategyType" title="PropertyMergeStrategyType">PropertyMergeStrategyType</a>
+		<li><a href="#PropertyType" title="PropertyType">PropertyType</a>
+		<li><a href="#Rule" title="Rule">Rule</a>
+		<li><a href="#Scoring" title="Scoring">Scoring</a>
+		<li><a href="#Segments" title="Segments">Segments</a>
+		<li><a href="#Tag" title="Tag">Tag</a>
+		<li><a href="#ValueType" title="ValueType">ValueType</a>
+				<li class="divider"></li>
+			</ul>
+		</li>
+		<li class="dropdown"><a href="#Other_Unomi_entities" title="Other Unomi entities">Other Unomi entities <b class="caret"></b></a>
+			<ul class="nav nav-list">
+		<li><a href="#UserList" title="UserList">UserList</a>
+		<li><a href="#Goal" title="Goal">Goal</a>
+		<li><a href="#Campaign" title="Campaign">Campaign</a>
+				<li class="divider"></li>
+			</ul>
+		</li>
+			</ul>
+		</li>
+					</ul>
+				</div>
+			</div>
+		</div>
+	</div>
+	</div>
+
+	</div><!-- /container -->
+
+	<!-- Footer
+	================================================== -->
+	<footer class="well">
+		<div class="container">
+			<div class="row">
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Download</li>
+						<li >
+							<a href="../../download.html" title="Packages">Packages</a>
+						</li>
+						<li >
+							<a href="../../license.html" title="License">License</a>
+						</li>
+						<li class="nav-header">Documentation</li>
+						<li >
+							<a href="../../" title="Home">Home</a>
+						</li>
+						<li >
+							<a title="Version 1.1 (current)">Version 1.1 (current) <i class="icon-chevron-down"></i></a>
+							<ul class="nav nav-list">
+						<li >
+							<a href="building-and-deploying.html" title="Building and deploying">Building and deploying</a>
+						</li>
+						<li >
+							<a href="getting-started.html" title="Getting started">Getting started</a>
+						</li>
+						<li >
+							<a href="configuration.html" title="Configuration">Configuration</a>
+						</li>
+						<li >
+							<a href="clustering.html" title="Cluster setup">Cluster setup</a>
+						</li>
+						<li >
+							<a href="../master/1.1.html" title="Concepts">Concepts</a>
+						</li>
+							</ul>
+						</li>
+						<li >
+							<a title="Master (snapshot)">Master (snapshot) <i class="icon-chevron-down"></i></a>
+							<ul class="nav nav-list">
+						<li >
+							<a href="../master/building-and-deploying.html" title="Building and deploying">Building and deploying</a>
+						</li>
+						<li >
+							<a href="../master/getting-started.html" title="Getting started">Getting started</a>
+						</li>
+						<li >
+							<a href="../master/configuration.html" title="Configuration">Configuration</a>
+						</li>
+						<li >
+							<a href="../master/clustering.html" title="Cluster setup">Cluster setup</a>
+						</li>
+						<li >
+							<a href="../master/concepts.html" title="Concepts">Concepts</a>
+						</li>
+							</ul>
+						</li>
+						<li >
+							<a href="../../rest-api-doc/index.html" title="REST API documentation">REST API documentation</a>
+						</li>
+						<li >
+							<a href="../../unomi-api/apidocs/index.html" title="API Javadoc">API Javadoc</a>
+						</li>
+						<li class="nav-header">Standard</li>
+						<li >
+							<a href="https://www.oasis-open.org/committees/cxs/" title="OASIS Context Server Technical Committee" class="externalLink">OASIS Context Server Technical Committee</a>
+						</li>
+						<li class="nav-header">Privacy</li>
+						<li >
+							<a href="../../privacy-policy.html" title="Site policy">Site policy</a>
+						</li>
+						<li class="nav-header">Contribute</li>
+						<li >
+							<a href="../../mail-lists.html" title="Mailing lists">Mailing lists</a>
+						</li>
+						<li >
+							<a href="../../source-repository.html" title="Source">Source</a>
+						</li>
+						<li >
+							<a href="../../issue-tracking.html" title="Issues">Issues</a>
+						</li>
+						<li class="nav-header">Community</li>
+						<li >
+							<a href="../../mail-lists.html" title="Mailing lists">Mailing lists</a>
+						</li>
+						<li >
+							<a href="../../team-list.html" title="Team">Team</a>
+						</li>
+						<li >
+							<a href="../../maturity-model-report.html" title="Maturity model report card">Maturity model report card</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org" title="The Apache Software Foundation" class="externalLink">The Apache Software Foundation</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship" class="externalLink">Sponsorship</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org/foundation/thanks.html" title="Thanks" class="externalLink">Thanks</a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Modules</li>
+						<li >
+							<a href="../../unomi-api/index.html" title="Apache Unomi :: Specification API">Apache Unomi :: Specification API</a>
+						</li>
+						<li >
+							<a href="../../unomi-persistence-spi/index.html" title="Apache Unomi :: Persistence :: SPI (Service Provider Interface)">Apache Unomi :: Persistence :: SPI (Service Provider Interface)</a>
+						</li>
+						<li >
+							<a href="../../unomi-lifecycle-watcher/index.html" title="Apache Unomi :: Main Lifecycle Watcher">Apache Unomi :: Main Lifecycle Watcher</a>
+						</li>
+						<li >
+							<a href="../../unomi-persistence-elasticsearch/index.html" title="Apache Unomi :: Persistence :: ElasticSearch">Apache Unomi :: Persistence :: ElasticSearch</a>
+						</li>
+						<li >
+							<a href="../../unomi-services/index.html" title="Apache Unomi :: Core Services">Apache Unomi :: Core Services</a>
+						</li>
+						<li >
+							<a href="../../unomi-rest/index.html" title="Apache Unomi :: REST API">Apache Unomi :: REST API</a>
+						</li>
+						<li >
+							<a href="../../unomi-wab/index.html" title="Apache Unomi :: Core Web Application">Apache Unomi :: Core Web Application</a>
+						</li>
+						<li >
+							<a href="../../unomi-plugins/index.html" title="Apache Unomi :: Plugins">Apache Unomi :: Plugins</a>
+						</li>
+						<li >
+							<a href="../../unomi-extensions/index.html" title="Apache Unomi :: Extensions">Apache Unomi :: Extensions</a>
+						</li>
+						<li >
+							<a href="../../unomi-kar/index.html" title="Apache Unomi :: Karaf KAR package">Apache Unomi :: Karaf KAR package</a>
+						</li>
+						<li >
+							<a href="../../samples/index.html" title="Apache Unomi :: Samples">Apache Unomi :: Samples</a>
+						</li>
+						<li >
+							<a href="../../unomi/index.html" title="Apache Unomi :: Distribution Package">Apache Unomi :: Distribution Package</a>
+						</li>
+						<li >
+							<a href="../../unomi-itests/index.html" title="Apache Unomi :: Integration Tests">Apache Unomi :: Integration Tests</a>
+						</li>
+						<li >
+							<a href="../../unomi-performance-tests/index.html" title="Apache Unomi :: Performance Tests">Apache Unomi :: Performance Tests</a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Project Documentation</li>
+						<li >
+							<a href="../../project-info.html" title="Project Information">Project Information <i class="icon-chevron-right"></i></a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-description">
+					<blockquote>Powered by Apache Karaf</blockquote>
+				</div>
+			</div>
+		</div>
+	</footer>
+
+	<div class="container subfooter">
+		<div class="row">
+			<div class="span12">
+				<p class="pull-right"><a href="#">Back to top</a></p>
+				<p class="copyright">Copyright &copy;2014-2017 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</p>
+				<p><a href="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+			</div>
+		</div>
+	</div>
+
+	<!-- Le javascript
+	================================================== -->
+	<!-- Placed at the end of the document so the pages load faster -->
+	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+
+	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
+	<script src="../..//js/lightbox.min.js"></script>
+	<script src="../..//js/reflow-scroll.js"></script>
+	<script src="http://yandex.st/highlightjs/7.5/highlight.min.js"></script>
+
+	<script src="../..//js/reflow-skin.js"></script>
+
+	</body>
+</html>
\ No newline at end of file

Added: incubator/unomi/website/versions/1.1/configuration.html
URL: http://svn.apache.org/viewvc/incubator/unomi/website/versions/1.1/configuration.html?rev=1783425&view=auto
==============================================================================
--- incubator/unomi/website/versions/1.1/configuration.html (added)
+++ incubator/unomi/website/versions/1.1/configuration.html Fri Feb 17 16:47:56 2017
@@ -0,0 +1,584 @@
+
+<!DOCTYPE html>
+<!--
+ Generated by Apache Maven Doxia at 2017-02-17
+ Rendered using Reflow Maven Skin 1.1.1 (http://andriusvelykis.github.io/reflow-maven-skin)
+-->
+<html  xml:lang="en" lang="en">
+
+	<head>
+		<meta charset="UTF-8" />
+		<title>Configuration | Apache Unomi</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+		<meta name="description" content="" />
+		<meta http-equiv="content-language" content="en" />
+ 
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet" />
+		<link href="../..//css/docs.css" rel="stylesheet" />
+		<link href="../..//css/reflow-skin.css" rel="stylesheet" />
+
+		<link href="http://yandex.st/highlightjs/7.5/styles/github.min.css" rel="stylesheet" />
+
+		<link href="../..//css/lightbox.css" rel="stylesheet" />
+
+		<link href="../..//css/site.css" rel="stylesheet" />
+		<link href="../..//css/print.css" rel="stylesheet" media="print" />
+
+		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
+		<!--[if lt IE 9]>
+			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+		<![endif]-->
+
+
+
+		<!-- Google Analytics -->
+		<script type="text/javascript">
+
+			var _gaq = _gaq || [];
+			_gaq.push(['_setAccount', 'UA-70313240-1']);
+			_gaq.push(['_trackPageview']);
+
+			(function() {
+				var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+				ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+				var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+			})();
+
+		</script>
+		</head>
+
+	<body class="page-versions-11-configuration project-unomi-root" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
+
+		<div class="navbar navbar-fixed-top">
+			<div class="navbar-inner">
+				<div class="container">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
+						<span class="icon-bar"></span>
+						<span class="icon-bar"></span>
+						<span class="icon-bar"></span>
+					</a>
+					<a class="brand" href="../.."><img src="http://unomi.incubator.apache.org/images/unomi-86x20.png" /></a>
+					<div class="nav-collapse collapse" id="top-nav-collapse">
+						<ul class="nav pull-right">
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Download <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../download.html" title="Packages">Packages</a></li>
+									<li ><a href="../../license.html" title="License">License</a></li>
+								</ul>
+							</li>
+							<li class="dropdown active">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../" title="Home">Home</a></li>
+									<li class="dropdown-submenu disabled">
+										<a title="Version 1.1 (current)">Version 1.1 (current)</a>
+										<ul class="dropdown-menu">
+											<li ><a href="building-and-deploying.html" title="Building and deploying">Building and deploying</a></li>
+											<li ><a href="getting-started.html" title="Getting started">Getting started</a></li>
+											<li class="active"><a href="" title="Configuration">Configuration</a></li>
+											<li ><a href="clustering.html" title="Cluster setup">Cluster setup</a></li>
+											<li ><a href="../master/1.1.html" title="Concepts">Concepts</a></li>
+										</ul>
+									</li>
+									<li class="dropdown-submenu disabled">
+										<a title="Master (snapshot)">Master (snapshot)</a>
+										<ul class="dropdown-menu">
+											<li ><a href="../master/building-and-deploying.html" title="Building and deploying">Building and deploying</a></li>
+											<li ><a href="../master/getting-started.html" title="Getting started">Getting started</a></li>
+											<li ><a href="../master/configuration.html" title="Configuration">Configuration</a></li>
+											<li ><a href="../master/clustering.html" title="Cluster setup">Cluster setup</a></li>
+											<li ><a href="../master/concepts.html" title="Concepts">Concepts</a></li>
+										</ul>
+									</li>
+									<li ><a href="../../rest-api-doc/index.html" title="REST API documentation">REST API documentation</a></li>
+									<li ><a href="../../unomi-api/apidocs/index.html" title="API Javadoc">API Javadoc</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Standard <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="https://www.oasis-open.org/committees/cxs/" title="OASIS Context Server Technical Committee" class="externalLink">OASIS Context Server Technical Committee</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Privacy <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../privacy-policy.html" title="Site policy">Site policy</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Contribute <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../mail-lists.html" title="Mailing lists">Mailing lists</a></li>
+									<li ><a href="../../source-repository.html" title="Source">Source</a></li>
+									<li ><a href="../../issue-tracking.html" title="Issues">Issues</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li ><a href="../../mail-lists.html" title="Mailing lists">Mailing lists</a></li>
+									<li ><a href="../../team-list.html" title="Team">Team</a></li>
+									<li ><a href="../../maturity-model-report.html" title="Maturity model report card">Maturity model report card</a></li>
+									<li ><a href="http://www.apache.org" title="The Apache Software Foundation" class="externalLink">The Apache Software Foundation</a></li>
+									<li ><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship" class="externalLink">Sponsorship</a></li>
+									<li ><a href="http://www.apache.org/foundation/thanks.html" title="Thanks" class="externalLink">Thanks</a></li>
+								</ul>
+							</li>
+						</ul>
+					</div><!--/.nav-collapse -->
+				</div>
+			</div>
+		</div>
+
+	<div class="container">
+
+	<!-- Masthead
+	================================================== -->
+
+	<header>
+		<div>
+			<ul class="breadcrumb">
+				<li class="publishDate version-date">Last Published: 2017-02-17</li>
+			</ul>
+		</div>
+	</header>
+
+	<div class="main-body">
+	<div class="row">
+		<div class="span8">
+			<div class="body-content">
+<!-- ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License. --> 
+<div class="page-header">
+ <h1 id="configuration">Configuration</h1>
+</div> 
+<div class="section"> 
+ <h2 id="Changing_the_default_configuration">Changing the default configuration</h2> 
+ <p>If you want to change the default configuration, you can perform any modification you want in the $MY_KARAF_HOME/etc directory.</p> 
+ <p>The context server configuration is kept in the $MY_KARAF_HOME/etc/org.apache.unomi.web.cfg . It defines the addresses and port where it can be found :</p> 
+ <div class="source"> 
+  <pre>contextserver.address=localhost
+contextserver.port=8181
+contextserver.secureAddress=localhost
+contextserver.securePort=9443
+contextserver.domain=apache.org
+</pre> 
+ </div> 
+ <p>If you need to specify an Elasticsearch cluster name that is different than the default, it is recommended to do this BEFORE you start the server for the first time, or you will loose all the data you have stored previously.</p> 
+ <p>To change the cluster name, first create a file called </p> 
+ <div class="source"> 
+  <pre>$MY_KARAF_HOME/etc/org.apache.unomi.persistence.elasticsearch.cfg
+</pre> 
+ </div> 
+ <p>with the following contents:</p> 
+ <div class="source"> 
+  <pre>cluster.name=contextElasticSearch
+index.name=context
+elasticSearchConfig=file:${karaf.etc}/elasticsearch.yml
+</pre> 
+ </div> 
+ <p>And replace the cluster.name parameter here by your cluster name.</p> 
+ <p>You can also put an elasticsearch configuration file in $MY_KARAF_HOME/etc/elasticsearch.yml , and put any standard Elasticsearch configuration options in this last file.</p> 
+ <p>If you want your context server to be a client only on a cluster of elasticsearch nodes, just set the node.data property to false.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Installing_the_MaxMind_GeoIPLite2_IP_lookup_database">Installing the MaxMind GeoIPLite2 IP lookup database</h2> 
+ <p>The Context Server requires an IP database in order to resolve IP addresses to user location. The GeoLite2 database can be downloaded from MaxMind here : <a class="externalLink" href="http://dev.maxmind.com/geoip/geoip2/geolite2/">http://dev.maxmind.com/geoip/geoip2/geolite2/</a></p> 
+ <p>Simply download the GeoLite2-City.mmdb file into the “etc” directory.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Installing_Geonames_database">Installing Geonames database</h2> 
+ <p>Context server includes a geocoding service based on the geonames database ( <a class="externalLink" href="http://www.geonames.org/">http://www.geonames.org/</a> ). It can be used to create conditions on countries or cities.</p> 
+ <p>In order to use it, you need to install the Geonames database into . Get the “allCountries.zip” database from here : <a class="externalLink" href="http://download.geonames.org/export/dump/">http://download.geonames.org/export/dump/</a></p> 
+ <p>Download it and put it in the “etc” directory, without unzipping it. Edit $MY_KARAF_HOME/etc/org.apache.unomi.geonames.cfg and set request.geonamesDatabase.forceImport to true, import should start right away. Otherwise, import should start at the next startup. Import runs in background, but can take about 15 minutes. At the end, you should have about 4 million entries in the geonames index.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="REST_API_Security">REST API Security</h2> 
+ <p>The Context Server REST API is protected using JAAS authentication and using Basic or Digest HTTP auth. By default, the login/password for the REST API full administrative access is “karaf/karaf”.</p> 
+ <p>The generated package is also configured with a default SSL certificate. You can change it by following these steps :</p> 
+ <ol style="list-style-type: decimal"> 
+  <li> <p>Replace the existing keystore in $MY_KARAF_HOME/etc/keystore by your own certificate :</p> <p><a class="externalLink" href="http://wiki.eclipse.org/Jetty/Howto/Configure_SSL">http://wiki.eclipse.org/Jetty/Howto/Configure_SSL</a></p></li> 
+  <li> <p>Update the keystore and certificate password in $MY_KARAF_HOME/etc/custom.properties file :</p></li> 
+ </ol> 
+ <div class="source"> 
+  <pre>    org.osgi.service.http.secure.enabled = true
+    org.ops4j.pax.web.ssl.keystore=${karaf.etc}/keystore
+    org.ops4j.pax.web.ssl.password=changeme
+    org.ops4j.pax.web.ssl.keypassword=changeme
+    org.osgi.service.http.port.secure=9443
+</pre> 
+ </div> 
+ <p>You should now have SSL setup on Karaf with your certificate, and you can test it by trying to access it on port 9443.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Automatic_profile_merging">Automatic profile merging</h2> 
+ <p>The context server is capable of merging profiles based on a common property value. In order to use this, you must add the MergeProfileOnPropertyAction to a rule (such as a login rule for example), and configure it with the name of the property that will be used to identify the profiles to be merged. An example could be the “email” property, meaning that if two (or more) profiles are found to have the same value for the “email” property they will be merged by this action.</p> 
+ <p>Upon merge, the old profiles are marked with a “mergedWith” property that will be used on next profile access to delete the original profile and replace it with the merged profile (aka “master” profile). Once this is done, all cookie tracking will use the merged profile.</p> 
+ <p>To test, simply configure the action in the “login” or “facebookLogin” rules and set it up on the “email” property. Upon sending one of the events, all matching profiles will be merged.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Securing_a_production_environment">Securing a production environment</h2> 
+ <p>Before going live with a project, you should <i>absolutely</i> read the following section that will help you setup a proper secure environment for running your context server. </p> 
+ <p>Step 1: Install and configure a firewall </p> 
+ <p>You should setup a firewall around your cluster of context servers and/or Elasticsearch nodes. If you have an application-level firewall you should only allow the following connections open to the whole world : </p> 
+ <ul> 
+  <li><a class="externalLink" href="http://localhost:8181/context.js">http://localhost:8181/context.js</a></li> 
+  <li><a class="externalLink" href="http://localhost:8181/eventcollector">http://localhost:8181/eventcollector</a></li> 
+ </ul> 
+ <p>All other ports should not be accessible to the world.</p> 
+ <p>For your Context Server client applications (such as the Jahia CMS), you will need to make the following ports accessible : </p> 
+ <div class="source"> 
+  <pre>8181 (Context Server HTTP port) 
+9443 (Context Server HTTPS port)
+</pre> 
+ </div> 
+ <p>The context server actually requires HTTP Basic Auth for access to the Context Server administration REST API, so it is highly recommended that you design your client applications to use the HTTPS port for accessing the REST API.</p> 
+ <p>The user accounts to access the REST API are actually routed through Karaf’s JAAS support, which you may find the documentation for here : </p> 
+ <ul> 
+  <li><a class="externalLink" href="http://karaf.apache.org/manual/latest/users-guide/security.html">http://karaf.apache.org/manual/latest/users-guide/security.html</a></li> 
+ </ul> 
+ <p>The default username/password is </p> 
+ <div class="source"> 
+  <pre>karaf/karaf
+</pre> 
+ </div> 
+ <p>You should really change this default username/password as soon as possible. To do so, simply modify the following file : </p> 
+ <div class="source"> 
+  <pre>$MY_KARAF_HOME/etc/users.properties
+</pre> 
+ </div> 
+ <p>For your context servers, and for any standalone Elasticsearch nodes you will need to open the following ports for proper node-to-node communication : 9200 (Elasticsearch REST API), 9300 (Elasticsearch TCP transport)</p> 
+ <p>Of course any ports listed here are the default ports configured in each server, you may adjust them if needed.</p> 
+ <p>Step 2 : Adjust the Context Server IP filtering</p> 
+ <p>By default the Context Server limits to connections to port 9200 and 9300 to the following IP ranges</p> 
+ <div class="source"> 
+  <pre>- localhost
+- 127.0.0.1
+- ::1
+- the current subnet (i.e., 192.168.1.0-192.168.1.255)
+</pre> 
+ </div> 
+ <p>(this is done using a custom plugin for Elasticsearch, that you may find here : <a class="externalLink" href="https://git-wip-us.apache.org/repos/asf/incubator-unomi/context-server/persistence-elasticsearch/plugins/security">https://git-wip-us.apache.org/repos/asf/incubator-unomi/context-server/persistence-elasticsearch/plugins/security</a>)</p> 
+ <p>You can adjust this setting by using the following setting in the $MY_KARAF_HOME/etc/elasticsearch.yml file : </p> 
+ <div class="source"> 
+  <pre>security.ipranges: localhost,127.0.0.1,::1,10.0.1.0-10.0.1.255
+</pre> 
+ </div> 
+ <p>Step 3 : Follow industry recommended best practices for securing Elasticsearch</p> 
+ <p>You may find more valuable recommendations here : </p> 
+ <ul> 
+  <li><a class="externalLink" href="https://www.elastic.co/blog/found-elasticsearch-security">https://www.elastic.co/blog/found-elasticsearch-security</a></li> 
+  <li><a class="externalLink" href="https://www.elastic.co/blog/scripting-security">https://www.elastic.co/blog/scripting-security</a></li> 
+ </ul> 
+ <p>Step 4 : Setup a proxy in front of the context server</p> 
+ <p>As an alternative to an application-level firewall, you could also route all traffic to the context server through a proxy, and use it to filter any communication.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Integrating_with_an_Apache_HTTP_web_server">Integrating with an Apache HTTP web server</h2> 
+ <p>If you want to setup an Apache HTTP web server in from of Apache Unomi, here is an example configuration using mod_proxy.</p> 
+ <p>In your Unomi package directory, in /etc/org.apache.unomi.web.cfg for unomi.apache.org</p> 
+ <p>contextserver.address=unomi.apache.org contextserver.port=80 contextserver.secureAddress=unomi.apache.org contextserver.securePort=443 contextserver.domain=apache.org</p> 
+ <p>Main virtual host config:</p> 
+ <div class="source"> 
+  <pre>&lt;VirtualHost *:80&gt;
+        Include /var/www/vhosts/unomi.apache.org/conf/common.conf
+&lt;/VirtualHost&gt;
+
+&lt;IfModule mod_ssl.c&gt;
+    &lt;VirtualHost *:443&gt;
+        Include /var/www/vhosts/unomi.apache.org/conf/common.conf
+
+        SSLEngine on
+
+        SSLCertificateFile    /var/www/vhosts/unomi.apache.org/conf/ssl/24d5b9691e96eafa.crt
+        SSLCertificateKeyFile /var/www/vhosts/unomi.apache.org/conf/ssl/apache.org.key
+        SSLCertificateChainFile /var/www/vhosts/unomi.apache.org/conf/ssl/gd_bundle-g2-g1.crt
+
+
+        &lt;FilesMatch &quot;\.(cgi|shtml|phtml|php)$&quot;&gt;
+                SSLOptions +StdEnvVars
+        &lt;/FilesMatch&gt;
+        &lt;Directory /usr/lib/cgi-bin&gt;
+                SSLOptions +StdEnvVars
+        &lt;/Directory&gt;
+        BrowserMatch &quot;MSIE [2-6]&quot; \
+                nokeepalive ssl-unclean-shutdown \
+                downgrade-1.0 force-response-1.0
+        BrowserMatch &quot;MSIE [17-9]&quot; ssl-unclean-shutdown
+
+    &lt;/VirtualHost&gt;
+&lt;/IfModule&gt;
+</pre> 
+ </div> 
+ <p>common.conf:</p> 
+ <div class="source"> 
+  <pre>ServerName unomi.apache.org
+ServerAdmin webmaster@apache.org
+
+DocumentRoot /var/www/vhosts/unomi.apache.org/html
+CustomLog /var/log/apache2/access-unomi.apache.org.log combined
+&lt;Directory /&gt;
+        Options FollowSymLinks
+        AllowOverride None
+&lt;/Directory&gt;
+&lt;Directory /var/www/vhosts/unomi.apache.org/html&gt;
+        Options FollowSymLinks MultiViews
+        AllowOverride None
+        Order allow,deny
+        allow from all
+&lt;/Directory&gt;
+&lt;Location /cxs&gt;
+    Order deny,allow
+    deny from all
+    allow from 88.198.26.2
+    allow from www.apache.org
+&lt;/Location&gt;
+
+RewriteEngine On
+RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
+RewriteRule .* - [F]
+ProxyPreserveHost On
+ProxyPass /server-status !
+ProxyPass /robots.txt !
+
+RewriteCond %{HTTP_USER_AGENT} Googlebot [OR]
+RewriteCond %{HTTP_USER_AGENT} msnbot [OR]
+RewriteCond %{HTTP_USER_AGENT} Slurp
+RewriteRule ^.* - [F,L]
+
+ProxyPass / http://localhost:8181/ connectiontimeout=20 timeout=300 ttl=120
+ProxyPassReverse / http://localhost:8181/
+</pre> 
+ </div> 
+</div>
+			</div>
+		</div>
+		<div class="span4">
+			<div id="toc-sidebar">
+				<div class="well">
+					<ul class="nav nav-list">
+						<li class="nav-header">Table of Contents</li>
+		<li class="dropdown"><a href="#configuration" title="Configuration">Configuration <b class="caret"></b></a>
+			<ul class="nav nav-list">
+		<li><a href="#Changing_the_default_configuration" title="Changing the default configuration">Changing the default configuration</a>
+		<li><a href="#Installing_the_MaxMind_GeoIPLite2_IP_lookup_database" title="Installing the MaxMind GeoIPLite2 IP lookup database">Installing the MaxMind GeoIPLite2 IP lookup database</a>
+		<li><a href="#Installing_Geonames_database" title="Installing Geonames database">Installing Geonames database</a>
+		<li><a href="#REST_API_Security" title="REST API Security">REST API Security</a>
+		<li><a href="#Automatic_profile_merging" title="Automatic profile merging">Automatic profile merging</a>
+		<li><a href="#Securing_a_production_environment" title="Securing a production environment">Securing a production environment</a>
+		<li><a href="#Integrating_with_an_Apache_HTTP_web_server" title="Integrating with an Apache HTTP web server">Integrating with an Apache HTTP web server</a>
+				<li class="divider"></li>
+			</ul>
+		</li>
+					</ul>
+				</div>
+			</div>
+		</div>
+	</div>
+	</div>
+
+	</div><!-- /container -->
+
+	<!-- Footer
+	================================================== -->
+	<footer class="well">
+		<div class="container">
+			<div class="row">
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Download</li>
+						<li >
+							<a href="../../download.html" title="Packages">Packages</a>
+						</li>
+						<li >
+							<a href="../../license.html" title="License">License</a>
+						</li>
+						<li class="nav-header">Documentation</li>
+						<li >
+							<a href="../../" title="Home">Home</a>
+						</li>
+						<li >
+							<a title="Version 1.1 (current)">Version 1.1 (current) <i class="icon-chevron-down"></i></a>
+							<ul class="nav nav-list">
+						<li >
+							<a href="building-and-deploying.html" title="Building and deploying">Building and deploying</a>
+						</li>
+						<li >
+							<a href="getting-started.html" title="Getting started">Getting started</a>
+						</li>
+						<li class="active">
+							<a href="#" title="Configuration">Configuration</a>
+						</li>
+						<li >
+							<a href="clustering.html" title="Cluster setup">Cluster setup</a>
+						</li>
+						<li >
+							<a href="../master/1.1.html" title="Concepts">Concepts</a>
+						</li>
+							</ul>
+						</li>
+						<li >
+							<a title="Master (snapshot)">Master (snapshot) <i class="icon-chevron-down"></i></a>
+							<ul class="nav nav-list">
+						<li >
+							<a href="../master/building-and-deploying.html" title="Building and deploying">Building and deploying</a>
+						</li>
+						<li >
+							<a href="../master/getting-started.html" title="Getting started">Getting started</a>
+						</li>
+						<li >
+							<a href="../master/configuration.html" title="Configuration">Configuration</a>
+						</li>
+						<li >
+							<a href="../master/clustering.html" title="Cluster setup">Cluster setup</a>
+						</li>
+						<li >
+							<a href="../master/concepts.html" title="Concepts">Concepts</a>
+						</li>
+							</ul>
+						</li>
+						<li >
+							<a href="../../rest-api-doc/index.html" title="REST API documentation">REST API documentation</a>
+						</li>
+						<li >
+							<a href="../../unomi-api/apidocs/index.html" title="API Javadoc">API Javadoc</a>
+						</li>
+						<li class="nav-header">Standard</li>
+						<li >
+							<a href="https://www.oasis-open.org/committees/cxs/" title="OASIS Context Server Technical Committee" class="externalLink">OASIS Context Server Technical Committee</a>
+						</li>
+						<li class="nav-header">Privacy</li>
+						<li >
+							<a href="../../privacy-policy.html" title="Site policy">Site policy</a>
+						</li>
+						<li class="nav-header">Contribute</li>
+						<li >
+							<a href="../../mail-lists.html" title="Mailing lists">Mailing lists</a>
+						</li>
+						<li >
+							<a href="../../source-repository.html" title="Source">Source</a>
+						</li>
+						<li >
+							<a href="../../issue-tracking.html" title="Issues">Issues</a>
+						</li>
+						<li class="nav-header">Community</li>
+						<li >
+							<a href="../../mail-lists.html" title="Mailing lists">Mailing lists</a>
+						</li>
+						<li >
+							<a href="../../team-list.html" title="Team">Team</a>
+						</li>
+						<li >
+							<a href="../../maturity-model-report.html" title="Maturity model report card">Maturity model report card</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org" title="The Apache Software Foundation" class="externalLink">The Apache Software Foundation</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship" class="externalLink">Sponsorship</a>
+						</li>
+						<li >
+							<a href="http://www.apache.org/foundation/thanks.html" title="Thanks" class="externalLink">Thanks</a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Modules</li>
+						<li >
+							<a href="../../unomi-api/index.html" title="Apache Unomi :: Specification API">Apache Unomi :: Specification API</a>
+						</li>
+						<li >
+							<a href="../../unomi-persistence-spi/index.html" title="Apache Unomi :: Persistence :: SPI (Service Provider Interface)">Apache Unomi :: Persistence :: SPI (Service Provider Interface)</a>
+						</li>
+						<li >
+							<a href="../../unomi-lifecycle-watcher/index.html" title="Apache Unomi :: Main Lifecycle Watcher">Apache Unomi :: Main Lifecycle Watcher</a>
+						</li>
+						<li >
+							<a href="../../unomi-persistence-elasticsearch/index.html" title="Apache Unomi :: Persistence :: ElasticSearch">Apache Unomi :: Persistence :: ElasticSearch</a>
+						</li>
+						<li >
+							<a href="../../unomi-services/index.html" title="Apache Unomi :: Core Services">Apache Unomi :: Core Services</a>
+						</li>
+						<li >
+							<a href="../../unomi-rest/index.html" title="Apache Unomi :: REST API">Apache Unomi :: REST API</a>
+						</li>
+						<li >
+							<a href="../../unomi-wab/index.html" title="Apache Unomi :: Core Web Application">Apache Unomi :: Core Web Application</a>
+						</li>
+						<li >
+							<a href="../../unomi-plugins/index.html" title="Apache Unomi :: Plugins">Apache Unomi :: Plugins</a>
+						</li>
+						<li >
+							<a href="../../unomi-extensions/index.html" title="Apache Unomi :: Extensions">Apache Unomi :: Extensions</a>
+						</li>
+						<li >
+							<a href="../../unomi-kar/index.html" title="Apache Unomi :: Karaf KAR package">Apache Unomi :: Karaf KAR package</a>
+						</li>
+						<li >
+							<a href="../../samples/index.html" title="Apache Unomi :: Samples">Apache Unomi :: Samples</a>
+						</li>
+						<li >
+							<a href="../../unomi/index.html" title="Apache Unomi :: Distribution Package">Apache Unomi :: Distribution Package</a>
+						</li>
+						<li >
+							<a href="../../unomi-itests/index.html" title="Apache Unomi :: Integration Tests">Apache Unomi :: Integration Tests</a>
+						</li>
+						<li >
+							<a href="../../unomi-performance-tests/index.html" title="Apache Unomi :: Performance Tests">Apache Unomi :: Performance Tests</a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Project Documentation</li>
+						<li >
+							<a href="../../project-info.html" title="Project Information">Project Information <i class="icon-chevron-right"></i></a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-description">
+					<blockquote>Powered by Apache Karaf</blockquote>
+				</div>
+			</div>
+		</div>
+	</footer>
+
+	<div class="container subfooter">
+		<div class="row">
+			<div class="span12">
+				<p class="pull-right"><a href="#">Back to top</a></p>
+				<p class="copyright">Copyright &copy;2014-2017 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</p>
+				<p><a href="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+			</div>
+		</div>
+	</div>
+
+	<!-- Le javascript
+	================================================== -->
+	<!-- Placed at the end of the document so the pages load faster -->
+	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+
+	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
+	<script src="../..//js/lightbox.min.js"></script>
+	<script src="../..//js/reflow-scroll.js"></script>
+	<script src="http://yandex.st/highlightjs/7.5/highlight.min.js"></script>
+
+	<script src="../..//js/reflow-skin.js"></script>
+
+	</body>
+</html>
\ No newline at end of file



Mime
View raw message