You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by dg...@apache.org on 2017/10/06 13:33:25 UTC

[01/15] incubator-unomi git commit: [jgitflow-maven-plugin]updating poms for unomi_117 version

Repository: incubator-unomi
Updated Branches:
  refs/heads/master 8baf62691 -> abffc918e


[jgitflow-maven-plugin]updating poms for unomi_117 version

Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/b4ec20f0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/b4ec20f0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/b4ec20f0

Branch: refs/heads/master
Commit: b4ec20f094ff062fe7b495ad572c1bc62f8ab9c0
Parents: 98e7419
Author: dgaillard <dg...@jahia.com>
Authored: Wed Aug 2 15:53:39 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Thu Sep 28 10:49:14 2017 +0200

----------------------------------------------------------------------
 api/pom.xml                                     |  2 +-
 extensions/geonames/pom.xml                     |  2 +-
 extensions/geonames/rest/pom.xml                |  8 ++---
 extensions/geonames/services/pom.xml            |  8 ++---
 extensions/lists-extension/actions/pom.xml      |  8 ++---
 extensions/lists-extension/pom.xml              |  4 +--
 extensions/lists-extension/rest/pom.xml         |  8 ++---
 extensions/lists-extension/services/pom.xml     |  8 ++---
 extensions/pom.xml                              |  2 +-
 extensions/privacy-extension/pom.xml            |  4 +--
 extensions/privacy-extension/rest/pom.xml       |  8 ++---
 extensions/privacy-extension/services/pom.xml   |  8 ++---
 extensions/router/pom.xml                       |  2 +-
 extensions/router/router-api/pom.xml            |  2 +-
 extensions/router/router-core/pom.xml           |  2 +-
 extensions/router/router-karaf-feature/pom.xml  |  2 +-
 extensions/router/router-rest/pom.xml           |  2 +-
 extensions/router/router-service/pom.xml        |  2 +-
 extensions/salesforce-connector/actions/pom.xml |  6 ++--
 .../salesforce-connector/karaf-kar/pom.xml      | 10 +++---
 extensions/salesforce-connector/pom.xml         |  2 +-
 extensions/salesforce-connector/rest/pom.xml    |  8 ++---
 .../salesforce-connector/services/pom.xml       |  6 ++--
 kar/pom.xml                                     | 32 ++++++++++----------
 lifecycle-watcher/pom.xml                       |  2 +-
 package/pom.xml                                 |  6 ++--
 persistence-elasticsearch/core/pom.xml          |  6 ++--
 persistence-elasticsearch/pom.xml               |  2 +-
 persistence-spi/pom.xml                         |  4 +--
 plugins/baseplugin/pom.xml                      |  6 ++--
 plugins/hover-event/pom.xml                     |  4 +--
 plugins/mail/pom.xml                            |  4 +--
 plugins/optimization-test/pom.xml               |  2 +-
 plugins/past-event/pom.xml                      |  6 ++--
 plugins/pom.xml                                 |  4 +--
 plugins/request/pom.xml                         |  2 +-
 plugins/tracked-event/pom.xml                   |  6 ++--
 pom.xml                                         |  2 +-
 rest/pom.xml                                    |  6 ++--
 samples/login-integration/pom.xml               |  4 +--
 samples/pom.xml                                 |  2 +-
 samples/tweet-button-plugin/pom.xml             |  4 +--
 services/pom.xml                                |  6 ++--
 wab/pom.xml                                     |  6 ++--
 44 files changed, 115 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/api/pom.xml
----------------------------------------------------------------------
diff --git a/api/pom.xml b/api/pom.xml
index 3ad25fb..7da7999 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-api</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/geonames/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/pom.xml b/extensions/geonames/pom.xml
index 6657279..a299826 100644
--- a/extensions/geonames/pom.xml
+++ b/extensions/geonames/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>cxs-geonames</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/geonames/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/rest/pom.xml b/extensions/geonames/rest/pom.xml
index 89f7d7b..80fd209 100644
--- a/extensions/geonames/rest/pom.xml
+++ b/extensions/geonames/rest/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>cxs-geonames</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -76,7 +76,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/geonames/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/services/pom.xml b/extensions/geonames/services/pom.xml
index 72ed9d7..d5099d8 100644
--- a/extensions/geonames/services/pom.xml
+++ b/extensions/geonames/services/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>cxs-geonames</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
@@ -28,20 +28,20 @@
     <artifactId>cxs-geonames-services</artifactId>
     <name>Apache Unomi :: Extensions :: Geonames Database :: Service</name>
     <description>Service implementation for the Apache Unomi Context Server extension that integrates with the Geonames database</description>
-    <version>1.3.0-incubating-SNAPSHOT</version>
+    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/lists-extension/actions/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/actions/pom.xml b/extensions/lists-extension/actions/pom.xml
index 2be2fa0..9028694 100644
--- a/extensions/lists-extension/actions/pom.xml
+++ b/extensions/lists-extension/actions/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -28,21 +28,21 @@
     <name>Apache Unomi :: Extensions :: Lists :: Actions</name>
     <description>List extension rule actions for the Apache Unomi Context Server</description>
 
-    <version>1.3.0-incubating-SNAPSHOT</version>
+    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/lists-extension/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/pom.xml b/extensions/lists-extension/pom.xml
index a33d2fa..8cc50c5 100644
--- a/extensions/lists-extension/pom.xml
+++ b/extensions/lists-extension/pom.xml
@@ -28,12 +28,12 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>cxs-lists-extension</artifactId>
     <name>Apache Unomi :: Extensions :: Lists</name>
     <description>List extension for the Apache Unomi Context Server</description>
-    <version>1.3.0-incubating-SNAPSHOT</version>
+    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     <packaging>pom</packaging>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/lists-extension/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/rest/pom.xml b/extensions/lists-extension/rest/pom.xml
index 0a9cad3..ca5474c 100644
--- a/extensions/lists-extension/rest/pom.xml
+++ b/extensions/lists-extension/rest/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -34,14 +34,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -77,7 +77,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/lists-extension/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/services/pom.xml b/extensions/lists-extension/services/pom.xml
index c3d16eb..84477b9 100644
--- a/extensions/lists-extension/services/pom.xml
+++ b/extensions/lists-extension/services/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -28,20 +28,20 @@
     <name>Apache Unomi :: Extensions :: Lists :: Service</name>
     <description>List extension service implementation for the Apache Unomi Context Server</description>
 
-    <version>1.3.0-incubating-SNAPSHOT</version>
+    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/pom.xml b/extensions/pom.xml
index a23d4db..6350643 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-extensions</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/privacy-extension/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/pom.xml b/extensions/privacy-extension/pom.xml
index ef7919a..9629edb 100644
--- a/extensions/privacy-extension/pom.xml
+++ b/extensions/privacy-extension/pom.xml
@@ -27,12 +27,12 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>cxs-privacy-extension</artifactId>
     <name>Apache Unomi :: Extensions :: Privacy</name>
     <description>Privacy management extension for the Apache Unomi Context Server</description>
-    <version>1.3.0-incubating-SNAPSHOT</version>
+    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     <packaging>pom</packaging>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/privacy-extension/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/rest/pom.xml b/extensions/privacy-extension/rest/pom.xml
index 514f1be..16f40d8 100644
--- a/extensions/privacy-extension/rest/pom.xml
+++ b/extensions/privacy-extension/rest/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>cxs-privacy-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -76,7 +76,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/privacy-extension/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/services/pom.xml b/extensions/privacy-extension/services/pom.xml
index 3b72da7..97b1e9e 100644
--- a/extensions/privacy-extension/services/pom.xml
+++ b/extensions/privacy-extension/services/pom.xml
@@ -20,27 +20,27 @@
     <parent>
         <artifactId>cxs-privacy-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>cxs-privacy-extension-services</artifactId>
     <name>Apache Unomi :: Extensions :: Privacy :: Services</name>
     <description>Privacy management extension service implementation for the Apache Unomi Context Server</description>
-    <version>1.3.0-incubating-SNAPSHOT</version>
+    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/router/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/pom.xml b/extensions/router/pom.xml
index 6a98d4d..d05e480 100644
--- a/extensions/router/pom.xml
+++ b/extensions/router/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-router</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/router/router-api/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/pom.xml b/extensions/router/router-api/pom.xml
index 6040947..931379e 100644
--- a/extensions/router/router-api/pom.xml
+++ b/extensions/router/router-api/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/router/router-core/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/pom.xml b/extensions/router/router-core/pom.xml
index 1f86696..182d2b3 100644
--- a/extensions/router/router-core/pom.xml
+++ b/extensions/router/router-core/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/router/router-karaf-feature/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-karaf-feature/pom.xml b/extensions/router/router-karaf-feature/pom.xml
index f8a4279..5d4ad7c 100644
--- a/extensions/router/router-karaf-feature/pom.xml
+++ b/extensions/router/router-karaf-feature/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/router/router-rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/pom.xml b/extensions/router/router-rest/pom.xml
index 459fe6f..288dd0d 100644
--- a/extensions/router/router-rest/pom.xml
+++ b/extensions/router/router-rest/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/router/router-service/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-service/pom.xml b/extensions/router/router-service/pom.xml
index 13f9c6f..5d43114 100644
--- a/extensions/router/router-service/pom.xml
+++ b/extensions/router/router-service/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/salesforce-connector/actions/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/actions/pom.xml b/extensions/salesforce-connector/actions/pom.xml
index 18a8aa5..1f7b235 100644
--- a/extensions/salesforce-connector/actions/pom.xml
+++ b/extensions/salesforce-connector/actions/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-salesforce-connector</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/salesforce-connector/karaf-kar/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/karaf-kar/pom.xml b/extensions/salesforce-connector/karaf-kar/pom.xml
index 3e9168c..0347088 100644
--- a/extensions/salesforce-connector/karaf-kar/pom.xml
+++ b/extensions/salesforce-connector/karaf-kar/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-salesforce-connector</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -50,17 +50,17 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-rest</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-actions</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
 
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/salesforce-connector/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/pom.xml b/extensions/salesforce-connector/pom.xml
index 67e1fee..13c8725 100644
--- a/extensions/salesforce-connector/pom.xml
+++ b/extensions/salesforce-connector/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-salesforce-connector</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/salesforce-connector/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/rest/pom.xml b/extensions/salesforce-connector/rest/pom.xml
index e05461b..84c9ff7 100644
--- a/extensions/salesforce-connector/rest/pom.xml
+++ b/extensions/salesforce-connector/rest/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-salesforce-connector</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -83,7 +83,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/extensions/salesforce-connector/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/services/pom.xml b/extensions/salesforce-connector/services/pom.xml
index 172bd17..65889d3 100644
--- a/extensions/salesforce-connector/services/pom.xml
+++ b/extensions/salesforce-connector/services/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-salesforce-connector</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
@@ -34,13 +34,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/kar/pom.xml
----------------------------------------------------------------------
diff --git a/kar/pom.xml b/kar/pom.xml
index 49ad5f8..f5a9dc3 100644
--- a/kar/pom.xml
+++ b/kar/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-kar</artifactId>
@@ -34,77 +34,77 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-wab</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-base</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-request</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-mail</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-optimization-test</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-rest</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-actions</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-rest</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-services</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-rest</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/lifecycle-watcher/pom.xml
----------------------------------------------------------------------
diff --git a/lifecycle-watcher/pom.xml b/lifecycle-watcher/pom.xml
index ec18f38..a2ecc3f 100644
--- a/lifecycle-watcher/pom.xml
+++ b/lifecycle-watcher/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>unomi-root</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/package/pom.xml
----------------------------------------------------------------------
diff --git a/package/pom.xml b/package/pom.xml
index a1cae4b..be0d876 100644
--- a/package/pom.xml
+++ b/package/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi</artifactId>
@@ -85,7 +85,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-kar</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>
@@ -94,7 +94,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-router-karaf-feature</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/persistence-elasticsearch/core/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/pom.xml b/persistence-elasticsearch/core/pom.xml
index 5254542..1687799 100644
--- a/persistence-elasticsearch/core/pom.xml
+++ b/persistence-elasticsearch/core/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-persistence-elasticsearch</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-persistence-elasticsearch-core</artifactId>
@@ -45,13 +45,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/persistence-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/pom.xml b/persistence-elasticsearch/pom.xml
index c0ae7f6..00210a0 100644
--- a/persistence-elasticsearch/pom.xml
+++ b/persistence-elasticsearch/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-persistence-elasticsearch</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/persistence-spi/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-spi/pom.xml b/persistence-spi/pom.xml
index 5d52eea..2ba15b7 100644
--- a/persistence-spi/pom.xml
+++ b/persistence-spi/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-persistence-spi</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/plugins/baseplugin/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/pom.xml b/plugins/baseplugin/pom.xml
index fb1068c..15761fa 100644
--- a/plugins/baseplugin/pom.xml
+++ b/plugins/baseplugin/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-base</artifactId>
@@ -56,13 +56,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/plugins/hover-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/hover-event/pom.xml b/plugins/hover-event/pom.xml
index ee6e14d..101bccc 100644
--- a/plugins/hover-event/pom.xml
+++ b/plugins/hover-event/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-hover-event</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/plugins/mail/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/mail/pom.xml b/plugins/mail/pom.xml
index 2cfe8e8..680c2a3 100644
--- a/plugins/mail/pom.xml
+++ b/plugins/mail/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-mail</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/plugins/optimization-test/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/optimization-test/pom.xml b/plugins/optimization-test/pom.xml
index ef80ffe..29e8ea1 100644
--- a/plugins/optimization-test/pom.xml
+++ b/plugins/optimization-test/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-optimization-test</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/plugins/past-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/past-event/pom.xml b/plugins/past-event/pom.xml
index 3c6414f..fa1e6b1 100644
--- a/plugins/past-event/pom.xml
+++ b/plugins/past-event/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-past-event</artifactId>
@@ -34,13 +34,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/plugins/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/pom.xml b/plugins/pom.xml
index 5bf5e03..bee7e9d 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins</artifactId>
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/plugins/request/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/request/pom.xml b/plugins/request/pom.xml
index 0c9174b..9673a00 100644
--- a/plugins/request/pom.xml
+++ b/plugins/request/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-request</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/plugins/tracked-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/tracked-event/pom.xml b/plugins/tracked-event/pom.xml
index b12279a..f09ae80 100644
--- a/plugins/tracked-event/pom.xml
+++ b/plugins/tracked-event/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-tracked-event</artifactId>
@@ -34,13 +34,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index cb8fa32..84b09f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
         event tracking server.
     </description>
     <url>http://unomi.incubator.apache.org</url>
-    <version>1.3.0-incubating-SNAPSHOT</version>
+    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <licenses>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/rest/pom.xml
----------------------------------------------------------------------
diff --git a/rest/pom.xml b/rest/pom.xml
index 6096b9a..4353da1 100644
--- a/rest/pom.xml
+++ b/rest/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-rest</artifactId>
@@ -42,7 +42,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -84,7 +84,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <!--<dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/samples/login-integration/pom.xml
----------------------------------------------------------------------
diff --git a/samples/login-integration/pom.xml b/samples/login-integration/pom.xml
index bc3427f..20c6e2c 100644
--- a/samples/login-integration/pom.xml
+++ b/samples/login-integration/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>samples</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>login-integration-sample</artifactId>
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
index 9ae9d9f..750a0f5 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-root</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/samples/tweet-button-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/pom.xml b/samples/tweet-button-plugin/pom.xml
index 167f24d..855811a 100644
--- a/samples/tweet-button-plugin/pom.xml
+++ b/samples/tweet-button-plugin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>samples</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>tweet-button-plugin</artifactId>
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/services/pom.xml
----------------------------------------------------------------------
diff --git a/services/pom.xml b/services/pom.xml
index d62771c..4d5cc26 100644
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-services</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -53,7 +53,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b4ec20f0/wab/pom.xml
----------------------------------------------------------------------
diff --git a/wab/pom.xml b/wab/pom.xml
index acdf449..a843cdc 100644
--- a/wab/pom.xml
+++ b/wab/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-wab</artifactId>
@@ -43,13 +43,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 


[04/15] incubator-unomi git commit: UNOMI-117 refactor tags as an open string, removed tags definitions, removed tags hierarchy and associated functions, add previously parent tag to children

Posted by dg...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json b/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
index 473cda8..81c468a 100644
--- a/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
+++ b/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
@@ -4,6 +4,7 @@
     "name": "incrementTweetNumberAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
index 4771eee..98270c7 100644
--- a/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
@@ -19,7 +19,6 @@ package org.apache.unomi.services.services;
 
 import org.apache.unomi.api.PluginType;
 import org.apache.unomi.api.PropertyMergeStrategyType;
-import org.apache.unomi.api.Tag;
 import org.apache.unomi.api.ValueType;
 import org.apache.unomi.api.actions.ActionType;
 import org.apache.unomi.api.conditions.Condition;
@@ -44,12 +43,10 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
 
     private PersistenceService persistenceService;
 
-    private Map<String, Tag> tags = new HashMap<>();
-    private Set<Tag> rootTags = new LinkedHashSet<>();
     private Map<String, ConditionType> conditionTypeById = new HashMap<>();
     private Map<String, ActionType> actionTypeById = new HashMap<>();
     private Map<String, ValueType> valueTypeById = new HashMap<>();
-    private Map<Tag, Set<ValueType>> valueTypeByTag = new HashMap<>();
+    private Map<String, Set<ValueType>> valueTypeByTag = new HashMap<>();
     private Map<Long, List<PluginType>> pluginTypes = new HashMap<>();
     private Map<String, PropertyMergeStrategyType> propertyMergeStrategyTypeById = new HashMap<>();
 
@@ -89,8 +86,6 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
 
         pluginTypes.put(bundleContext.getBundle().getBundleId(), new ArrayList<PluginType>());
 
-        loadPredefinedTags(bundleContext);
-
         loadPredefinedConditionTypes(bundleContext);
         loadPredefinedActionTypes(bundleContext);
         loadPredefinedValueTypes(bundleContext);
@@ -108,56 +103,21 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
                 if (type instanceof ValueType) {
                     ValueType valueType = (ValueType) type;
                     valueTypeById.remove(valueType.getId());
-                    for (Tag tag : valueType.getTags()) {
-                        valueTypeByTag.get(tag).remove(valueType);
+                    for (String tag : valueType.getTags()) {
+                        if (valueTypeByTag.containsKey(tag)) {
+                            valueTypeByTag.get(tag).remove(valueType);
+                        }
                     }
                 }
             }
         }
     }
 
-
     public void preDestroy() {
         bundleContext.removeBundleListener(this);
         logger.info("Definitions service shutdown.");
     }
 
-    @Deprecated
-    private void loadPredefinedTags(BundleContext bundleContext) {
-        Enumeration<URL> predefinedTagEntries = bundleContext.getBundle().findEntries("META-INF/cxs/tags", "*.json", true);
-        if (predefinedTagEntries == null) {
-            return;
-        }
-        while (predefinedTagEntries.hasMoreElements()) {
-            URL predefinedTagURL = predefinedTagEntries.nextElement();
-            logger.debug("Found predefined tags at " + predefinedTagURL + ", loading... ");
-
-            try {
-                Tag tag = CustomObjectMapper.getObjectMapper().readValue(predefinedTagURL, Tag.class);
-                tag.setPluginId(bundleContext.getBundle().getBundleId());
-                tags.put(tag.getId(), tag);
-            } catch (IOException e) {
-                logger.error("Error while loading segment definition " + predefinedTagEntries, e);
-            }
-        }
-
-        // now let's resolve all the children.
-        resolveTagsChildren();
-    }
-
-    private void resolveTagsChildren() {
-        for (Tag tag : tags.values()) {
-            if (tag.getParentId() != null && tag.getParentId().length() > 0) {
-                Tag parentTag = tags.get(tag.getParentId());
-                if (parentTag != null) {
-                    parentTag.getSubTags().add(tag);
-                }
-            } else {
-                rootTags.add(tag);
-            }
-        }
-    }
-
     private void loadPredefinedConditionTypes(BundleContext bundleContext) {
         Enumeration<URL> predefinedConditionEntries = bundleContext.getBundle().findEntries("META-INF/cxs/conditions", "*.json", true);
         if (predefinedConditionEntries == null) {
@@ -212,8 +172,7 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
                 valueType.setPluginId(bundleContext.getBundle().getBundleId());
                 valueTypeById.put(valueType.getId(), valueType);
                 pluginTypeArrayList.add(valueType);
-                for (String tagId : valueType.getTagIds()) {
-                    Tag tag = tags.get(tagId);
+                for (String tag : valueType.getTags()) {
                     if (tag != null) {
                         valueType.getTags().add(tag);
                         Set<ValueType> valueTypes = valueTypeByTag.get(tag);
@@ -224,7 +183,7 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
                         valueTypeByTag.put(tag, valueTypes);
                     } else {
                         // we found a tag that is not defined, we will define it automatically
-                        logger.warn("Unknown tag " + tagId + " used in property type definition " + predefinedPropertyURL);
+                        logger.debug("Unknown tag " + tag + " used in property type definition " + predefinedPropertyURL);
                     }
                 }
             } catch (Exception e) {
@@ -234,30 +193,6 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
 
     }
 
-    @Deprecated
-    public Set<Tag> getAllTags() {
-        return new HashSet<Tag>(tags.values());
-    }
-
-    @Deprecated
-    public Set<Tag> getRootTags() {
-        return rootTags;
-    }
-
-    @Deprecated
-    public Tag getTag(String tagId) {
-        Tag completeTag = tags.get(tagId);
-        return completeTag;
-    }
-
-    @Deprecated
-    public void addTag(Tag tag) {
-        tag.setPluginId(bundleContext.getBundle().getBundleId());
-        tags.put(tag.getId(), tag);
-        // now let's resolve all the children.
-        resolveTagsChildren();
-    }
-
     public Map<Long, List<PluginType>> getTypesByPlugin() {
         return pluginTypes;
     }
@@ -272,25 +207,6 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
         return all;
     }
 
-    @Deprecated
-    public Set<ConditionType> getConditionTypesByTag(Tag tag, boolean includeFromSubtags) {
-        Set<ConditionType> conditionTypes = new LinkedHashSet<ConditionType>();
-        List<ConditionType> directConditionTypes = persistenceService.query("metadata.tags",tag.getId(),null, ConditionType.class);
-        for (ConditionType type : directConditionTypes) {
-            if (type.getParentCondition() != null) {
-                ParserHelper.resolveConditionType(this, type.getParentCondition());
-            }
-        }
-        conditionTypes.addAll(directConditionTypes);
-        if (includeFromSubtags) {
-            for (Tag subTag : tag.getSubTags()) {
-                Set<ConditionType> childConditionTypes = getConditionTypesByTag(subTag, true);
-                conditionTypes.addAll(childConditionTypes);
-            }
-        }
-        return conditionTypes;
-    }
-
     public Set<ConditionType> getConditionTypesByTag(String tag) {
         Set<ConditionType> conditionTypes = new LinkedHashSet<ConditionType>();
         List<ConditionType> directConditionTypes = persistenceService.query("metadata.tags", tag,null, ConditionType.class);
@@ -333,20 +249,6 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
         return persistenceService.getAllItems(ActionType.class);
     }
 
-    @Deprecated
-    public Set<ActionType> getActionTypeByTag(Tag tag, boolean includeFromSubtags) {
-        Set<ActionType> actionTypes = new LinkedHashSet<ActionType>();
-        List<ActionType> directActionTypes = persistenceService.query("metadata.tags",tag.getId(),null, ActionType.class);
-        actionTypes.addAll(directActionTypes);
-        if (includeFromSubtags) {
-            for (Tag subTag : tag.getSubTags()) {
-                Set<ActionType> childActionTypes = getActionTypeByTag(subTag, true);
-                actionTypes.addAll(childActionTypes);
-            }
-        }
-        return actionTypes;
-    }
-
     public Set<ActionType> getActionTypeByTag(String tag) {
         Set<ActionType> actionTypes = new LinkedHashSet<ActionType>();
         List<ActionType> directActionTypes = persistenceService.query("metadata.tags", tag,null, ActionType.class);
@@ -378,28 +280,10 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
         return valueTypeById.values();
     }
 
-    @Deprecated
-    public Set<ValueType> getValueTypeByTag(Tag tag, boolean includeFromSubtags) {
-        Set<ValueType> valueTypes = new LinkedHashSet<ValueType>();
-        Set<ValueType> directValueTypes = valueTypeByTag.get(tag);
-        if (directValueTypes != null) {
-            valueTypes.addAll(directValueTypes);
-        }
-        if (includeFromSubtags) {
-            for (Tag subTag : tag.getSubTags()) {
-                Set<ValueType> childValueTypes = getValueTypeByTag(subTag, true);
-                valueTypes.addAll(childValueTypes);
-            }
-        }
-        return valueTypes;
-    }
-
     public Set<ValueType> getValueTypeByTag(String tag) {
         Set<ValueType> valueTypes = new LinkedHashSet<ValueType>();
-        for (Tag legacyTag : valueTypeByTag.keySet()) {
-            if (legacyTag.getId().equals(tag)) {
-                valueTypes.addAll(valueTypeByTag.get(legacyTag));
-            }
+        if (valueTypeByTag.containsKey(tag)) {
+            valueTypes.addAll(valueTypeByTag.get(tag));
         }
 
         return valueTypes;
@@ -462,13 +346,13 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
         }
     }
 
-    public Condition extractConditionByTag(Condition rootCondition, String tagId) {
+    public Condition extractConditionByTag(Condition rootCondition, String tag) {
         if (rootCondition.containsParameter("subConditions")) {
             @SuppressWarnings("unchecked")
             List<Condition> subConditions = (List<Condition>) rootCondition.getParameter("subConditions");
             List<Condition> matchingConditions = new ArrayList<Condition>();
             for (Condition condition : subConditions) {
-                Condition c = extractConditionByTag(condition, tagId);
+                Condition c = extractConditionByTag(condition, tag);
                 if (c != null) {
                     matchingConditions.add(c);
                 }
@@ -489,7 +373,7 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
                 }
             }
             throw new IllegalArgumentException();
-        } else if (rootCondition.getConditionType() != null && rootCondition.getConditionType().getMetadata().getTags().contains(tagId)) {
+        } else if (rootCondition.getConditionType() != null && rootCondition.getConditionType().getMetadata().getTags().contains(tag)) {
             return rootCondition;
         } else {
             return null;

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java
index e67d534..a12a768 100644
--- a/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java
@@ -57,7 +57,7 @@ public class GoalsServiceImpl implements GoalsService, SynchronousBundleListener
 
     private RulesService rulesService;
 
-    private Map<Tag, Set<Goal>> goalByTag = new HashMap<>();
+    private Map<String, Set<Goal>> goalByTag = new HashMap<>();
 
     public void setBundleContext(BundleContext bundleContext) {
         this.bundleContext = bundleContext;
@@ -121,9 +121,8 @@ public class GoalsServiceImpl implements GoalsService, SynchronousBundleListener
                     goal.getMetadata().setScope("systemscope");
                 }
                 if (getGoal(goal.getMetadata().getId()) == null) {
-                    for (String tagId : goal.getMetadata().getTags()) {
-                        Tag tag = definitionsService.getTag(tagId);
-                        if (tag != null) {
+                    for (String tag : goal.getMetadata().getTags()) {
+                        if (goalByTag.containsKey(tag)) {
                             Set<Goal> goals = goalByTag.get(tag);
                             if (goals == null) {
                                 goals = new LinkedHashSet<>();
@@ -132,7 +131,7 @@ public class GoalsServiceImpl implements GoalsService, SynchronousBundleListener
                             goalByTag.put(tag, goals);
                         } else {
                             // we found a tag that is not defined, we will define it automatically
-                            logger.warn("Unknown tag " + tagId + " used in goal definition " + predefinedGoalURL);
+                            logger.debug("Unknown tag " + tag + " used in goal definition " + predefinedGoalURL);
                         }
                     }
 
@@ -540,29 +539,12 @@ public class GoalsServiceImpl implements GoalsService, SynchronousBundleListener
         return report;
     }
 
-    @Deprecated
-    public Set<Goal> getGoalByTag(Tag tag, boolean recursive) {
+    public Set<Goal> getGoalByTag(String tag) {
         Set<Goal> goals = new LinkedHashSet<>();
         Set<Goal> directGoals = goalByTag.get(tag);
         if (directGoals != null) {
             goals.addAll(directGoals);
         }
-        if (recursive) {
-            for (Tag subTag : tag.getSubTags()) {
-                Set<Goal> childGoals = getGoalByTag(subTag, true);
-                goals.addAll(childGoals);
-            }
-        }
-        return goals;
-    }
-
-    public Set<Goal> getGoalByTag(String tag) {
-        Set<Goal> goals = new LinkedHashSet<>();
-        for (Tag legacyTag : goalByTag.keySet()) {
-            if (legacyTag.getId().equals(tag)) {
-                goals.addAll(goalByTag.get(legacyTag));
-            }
-        }
 
         return goals;
     }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
index 0a45be9..273b64c 100644
--- a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
@@ -294,10 +294,10 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
     }
 
     @Override
-    public Set<PropertyType> getExistingProperties(String tagId, String itemType) {
+    public Set<PropertyType> getExistingProperties(String tag, String itemType) {
         Set<PropertyType> filteredProperties = new LinkedHashSet<PropertyType>();
         // TODO: here we limit the result to the definition we have, but what if some properties haven't definition but exist in ES mapping ?
-        Set<PropertyType> profileProperties = getPropertyTypeByTag(tagId, true);
+        Set<PropertyType> profileProperties = getPropertyTypeByTag(tag);
         Map<String, Map<String, Object>> itemMapping = persistenceService.getPropertiesMapping(itemType);
 
         if (itemMapping == null || itemMapping.isEmpty() || itemMapping.get("properties") == null || itemMapping.get("properties").get("properties") == null) {
@@ -593,9 +593,6 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
 
         for (Profile profile : profiles) {
             if (PropertyHelper.setProperty(profile, update.getPropertyName(), update.getPropertyValue(), update.getStrategy())) {
-//                Event profileUpdated = new Event("profileUpdated", null, profile, null, null, profile, new Date());
-//                profileUpdated.setPersistent(false);
-//                eventService.send(profileUpdated);
                 save(profile);
             }
         }
@@ -642,26 +639,6 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
         return propertyTypes;
     }
 
-    @Deprecated
-    public Set<PropertyType> getPropertyTypeByTag(String tagId, boolean includeFromSubtags) {
-        Set<PropertyType> propertyTypes = new LinkedHashSet<PropertyType>();
-        Collection<PropertyType> directPropertyTypes = persistenceService.query("tags", tagId, "rank", PropertyType.class);
-
-        if (directPropertyTypes != null) {
-            propertyTypes.addAll(directPropertyTypes);
-        }
-        if (includeFromSubtags) {
-            Tag tag = definitionsService.getTag(tagId);
-            if (tag != null) {
-                for (Tag subTag : tag.getSubTags()) {
-                    Set<PropertyType> childPropertyTypes = getPropertyTypeByTag(subTag.getId(), true);
-                    propertyTypes.addAll(childPropertyTypes);
-                }
-            }
-        }
-        return propertyTypes;
-    }
-
     public Set<PropertyType> getPropertyTypeByTag(String tag) {
         Set<PropertyType> propertyTypes = new LinkedHashSet<PropertyType>();
         Collection<PropertyType> directPropertyTypes = persistenceService.query("tags", tag, "rank", PropertyType.class);

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
index 6ed8836..a538e3e 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "firstName", "name": "First name"   },
     "type": "string",
-    "tags": [ "basicProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "basicProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "101.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
index 610a548..425b6bd 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "gender", "name": "Gender"   },
     "type": "string",
-    "tags": [ "basicProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "basicProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "104.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
index 6468c17..ae43fc4 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "lastName", "name": "Last name"   },
     "type": "string",
-    "tags": [ "basicProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "basicProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "102.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
index 66748bb..72f3dee 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "nationality", "name": "Nationality"   },
     "type": "string",
-    "tags": [ "basicProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "basicProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "103.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
index 17791d0..ad1cac4 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
@@ -1,7 +1,11 @@
 {
   "metadata": {"id": "address", "name": "Address"},
   "type": "string",
-  "tags": ["contactProfileProperties"],
+  "tags": [
+    "properties",
+    "profileProperties",
+    "contactProfileProperties"
+  ],
   "defaultValue": "",
   "automaticMappingsFrom": [],
   "rank": "303.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
index 4cd698d..e8bfe3a 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "city", "name": "City"   },
     "type": "string",
-    "tags": ["contactProfileProperties"],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "contactProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "304.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
index 1d1fd6e..5c5b1ae 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "countryName", "name": "Country"   },
     "type": "string",
-    "tags": ["contactProfileProperties"],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "contactProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "305.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
index aecd6af..3cd1d15 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "email", "name": "Email"   },
     "type": "email",
-    "tags": ["contactProfileProperties"],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "contactProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "301.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
index e8dc563..bd4319f 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "phoneNumber", "name": "Phone number"   },
     "type": "string",
-    "tags": ["contactProfileProperties"],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "contactProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "302.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
index 5d9d272..081313a 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "zipCode", "name": "ZIP Code"   },
     "type": "string",
-    "tags": ["contactProfileProperties"],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "contactProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "306.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json b/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
index 00c5c48..4e445bd 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "leadAssignedTo", "name": "Assigned to"   },
     "type": "string",
-    "tags": [ "leadProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "leadProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "201.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
index fbed245..2f155f2 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
@@ -4,7 +4,11 @@
     "name": "Age"
   },
   "type": "integer",
-  "tags": ["personalProfileProperties"],
+  "tags": [
+    "properties",
+    "profileProperties",
+    "personalProfileProperties"
+  ],
   "defaultValue": "",
   "numericRanges": [
     {"key":"*_10", "to" : 10 },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
index 203d48d..2d1101d 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
@@ -4,7 +4,11 @@
     "name": "Birth Date"
   },
   "type": "date",
-  "tags": ["personalProfileProperties"],
+  "tags": [
+    "properties",
+    "profileProperties",
+    "personalProfileProperties"
+  ],
   "defaultValue": "",
   "dateRanges": [
     {"key":"*_10", "from": "now-10y/y" },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
index 0141d2e..0a58820 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "kids", "name": "Kids"   },
     "type": "integer",
-    "tags": ["personalProfileProperties"],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "personalProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "504.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
index 8e2e9c9..5bcd149 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "maritalStatus", "name": "Marital status"   },
     "type": "string",
-    "tags": ["personalProfileProperties"],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "personalProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "503.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
index 2596440..b325f19 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "facebookId", "name": "Facebook ID"   },
     "type": "string",
-    "tags": [ "socialProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "socialProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "401.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
index a0fc1de..48d54b8 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "googleId", "name": "Google ID"   },
     "type": "string",
-    "tags": [ "socialProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "socialProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "403.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
index e57a8e5..a6947e1 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "linkedInId", "name": "LinkedIn ID"   },
     "type": "string",
-    "tags": [ "socialProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "socialProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "402.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
index e47668f..40fad1d 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "twitterId", "name": "Twitter ID"   },
     "type": "string",
-    "tags": [ "socialProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "socialProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "404.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
index d5a4aab..e1f4f32 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "firstVisit", "name": "First visit"   },
     "type": "date",
-    "tags": [ "systemProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "systemProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "mergeStrategy": "oldestMergeStrategy",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
index 3af2a94..db2ffb9 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "lastVisit", "name": "Last visit"   },
     "type": "date",
-    "tags": [ "systemProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "systemProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "mergeStrategy": "mostRecentMergeStrategy",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
index 921fca9..94a9123 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "nbOfVisits", "name": "Number of visits"   },
     "type": "integer",
-    "tags": [ "systemProfileProperties" ],
+    "tags": [
+      "properties",
+      "profileProperties",
+      "systemProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "numericRanges": [

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
index 6094746..a06f26f 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
@@ -1,7 +1,11 @@
 {
   "metadata": {     "id": "previousVisit", "name": "Previous visit"   },
   "type": "date",
-  "tags": [ "systemProfileProperties" ],
+  "tags": [
+    "properties",
+    "profileProperties",
+    "systemProfileProperties"
+  ],
   "defaultValue": "",
   "automaticMappingsFrom": [ ],
   "mergeStrategy": "mostRecentMergeStrategy",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
index d94c3eb..940792b 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "company", "name": "Company"   },
     "type": "string",
-    "tags": [ "workProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "workProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "601.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
index bebad96..47df006 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "income", "name": "Income"   },
     "type": "integer",
-    "tags": [ "workProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "workProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "603.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
index d23fad4..22cc39f 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "jobTitle", "name": "Job Title"   },
     "type": "string",
-    "tags": [ "workProfileProperties" ],
+    "tags": [
+        "properties",
+        "profileProperties",
+        "workProfileProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "602.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
index 2c1b078..1f8c92c 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "latitude", "name": "Latitude"   },
     "type": "string",
-    "tags": ["geographicSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "geographicSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "4.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
index 7ddca37..f983d52 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "longitude", "name": "Longitude"   },
     "type": "string",
-    "tags": ["geographicSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "geographicSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "5.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
index 5383fae..7591485 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
@@ -1,7 +1,11 @@
 {
   "metadata": {     "id": "sessionAdminSubDiv1", "name": "State/Region/Province"   },
   "type": "string",
-  "tags": ["geographicSessionProperties"],
+  "tags": [
+    "properties",
+    "sessionProperties",
+    "geographicSessionProperties"
+  ],
   "defaultValue": "",
   "automaticMappingsFrom": [ ],
   "rank": "2.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
index 816dc2e..2f7a7e2 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
@@ -1,7 +1,11 @@
 {
   "metadata": {     "id": "sessionAdminSubDiv2", "name": "SubRegion/County"   },
   "type": "string",
-  "tags": ["geographicSessionProperties"],
+  "tags": [
+    "properties",
+    "sessionProperties",
+    "geographicSessionProperties"
+  ],
   "defaultValue": "",
   "automaticMappingsFrom": [ ],
   "rank": "2.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
index 947a817..2f353e5 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "sessionCity", "name": "City"   },
     "type": "string",
-    "tags": ["geographicSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "geographicSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "3.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
index 9ed3f89..47cbe2c 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "sessionCountryCode", "name": "Country code"   },
     "type": "string",
-    "tags": ["geographicSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "geographicSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ "j:country" ],
     "rank": "1.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
index 44bae0e..4198d30 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "sessionCountryName", "name": "Country"   },
     "type": "string",
-    "tags": ["geographicSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "geographicSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "2.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
index 508734e..3795e96 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "deviceCategory", "name": "Device category"   },
     "type": "string",
-    "tags": ["technicalSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "technicalSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "105.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
index eff2d68..b1f9653 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "operatingSystemFamily", "name": "Operating system family"   },
     "type": "string",
-    "tags": ["technicalSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "technicalSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "101.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
index a00aa94..bf08a07 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "operatingSystemName", "name": "Operating system name"   },
     "type": "string",
-    "tags": ["technicalSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "technicalSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "102.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
index d19b808..c971bc9 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "pageReferringURL", "name": "Previous page URL"   },
     "type": "string",
-    "tags": ["technicalSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "technicalSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "108.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
index e255fda..71531de 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "remoteAddr", "name": "Remote IP address"   },
     "type": "string",
-    "tags": ["technicalSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "technicalSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "106.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
index a12e948..1864348 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "remoteHost", "name": "Remote host address"   },
     "type": "string",
-    "tags": ["technicalSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "technicalSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "107.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
index d48b042..8849081 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "userAgentName", "name": "Browser user agent name"   },
     "type": "string",
-    "tags": ["technicalSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "technicalSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "103.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
index 4b1177c..343f3bf 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
@@ -1,7 +1,11 @@
 {
     "metadata": {     "id": "userAgentVersion", "name": "Browser user agent version"   },
     "type": "string",
-    "tags": ["technicalSessionProperties"],
+    "tags": [
+        "properties",
+        "sessionProperties",
+        "technicalSessionProperties"
+    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "104.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/aggregated.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/aggregated.json b/services/src/main/resources/META-INF/cxs/tags/aggregated.json
deleted file mode 100644
index 83f417c..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/aggregated.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "aggregated",
-    "parent": "profileTags"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/autocompleted.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/autocompleted.json b/services/src/main/resources/META-INF/cxs/tags/autocompleted.json
deleted file mode 100644
index 089bf12..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/autocompleted.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "id": "autocompleted",
-  "parent": "profileTags"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/campaign/campaign.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/campaign/campaign.json b/services/src/main/resources/META-INF/cxs/tags/campaign/campaign.json
deleted file mode 100644
index 8681c0e..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/campaign/campaign.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "campaign",
-    "parent": "root"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/campaign/landingCampaign.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/campaign/landingCampaign.json b/services/src/main/resources/META-INF/cxs/tags/campaign/landingCampaign.json
deleted file mode 100644
index d329ff0..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/campaign/landingCampaign.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "landing",
-    "parent": "campaign"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/campaign/parameterCampaign.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/campaign/parameterCampaign.json b/services/src/main/resources/META-INF/cxs/tags/campaign/parameterCampaign.json
deleted file mode 100644
index e9abade..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/campaign/parameterCampaign.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "parameter",
-    "parent": "campaign"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/campaign/referrerCampaign.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/campaign/referrerCampaign.json b/services/src/main/resources/META-INF/cxs/tags/campaign/referrerCampaign.json
deleted file mode 100644
index 50a2bee..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/campaign/referrerCampaign.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "referrer",
-    "parent": "campaign"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/conditions/condition.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/conditions/condition.json b/services/src/main/resources/META-INF/cxs/tags/conditions/condition.json
deleted file mode 100644
index e37ddc7..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/conditions/condition.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "condition",
-    "parent": "root"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/conditions/eventCondition.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/conditions/eventCondition.json b/services/src/main/resources/META-INF/cxs/tags/conditions/eventCondition.json
deleted file mode 100644
index 287678f..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/conditions/eventCondition.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "eventCondition",
-    "parent": "condition"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/conditions/profileCondition.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/conditions/profileCondition.json b/services/src/main/resources/META-INF/cxs/tags/conditions/profileCondition.json
deleted file mode 100644
index bade28c..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/conditions/profileCondition.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "profileCondition",
-    "parent": "condition"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/conditions/sessionCondition.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/conditions/sessionCondition.json b/services/src/main/resources/META-INF/cxs/tags/conditions/sessionCondition.json
deleted file mode 100644
index bca7a98..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/conditions/sessionCondition.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "sessionCondition",
-    "parent": "condition"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/conditions/sourceEventCondition.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/conditions/sourceEventCondition.json b/services/src/main/resources/META-INF/cxs/tags/conditions/sourceEventCondition.json
deleted file mode 100644
index ee72d19..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/conditions/sourceEventCondition.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "sourceEventCondition",
-    "parent": "condition"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/conditions/trackedCondition.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/conditions/trackedCondition.json b/services/src/main/resources/META-INF/cxs/tags/conditions/trackedCondition.json
deleted file mode 100644
index f4e0f66..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/conditions/trackedCondition.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "trackedCondition",
-    "parent": "condition"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/conditions/usableInPastEventCondition.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/conditions/usableInPastEventCondition.json b/services/src/main/resources/META-INF/cxs/tags/conditions/usableInPastEventCondition.json
deleted file mode 100644
index 428c3b1..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/conditions/usableInPastEventCondition.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "usableInPastEventCondition",
-    "parent": "condition"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/demographic.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/demographic.json b/services/src/main/resources/META-INF/cxs/tags/demographic.json
deleted file mode 100644
index cb7078d..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/demographic.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "demographic",
-    "parent": "profileTags"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/event.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/event.json b/services/src/main/resources/META-INF/cxs/tags/event.json
deleted file mode 100644
index 734540c..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/event.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "event",
-    "parent": "profileTags"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/geographic.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/geographic.json b/services/src/main/resources/META-INF/cxs/tags/geographic.json
deleted file mode 100644
index 5e5b03e..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/geographic.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "geographic",
-    "parent": "profileTags"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/goals/downloadGoal.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/goals/downloadGoal.json b/services/src/main/resources/META-INF/cxs/tags/goals/downloadGoal.json
deleted file mode 100644
index a7bd401..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/goals/downloadGoal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "downloadGoal",
-    "parent": "goal"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/goals/formGoal.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/goals/formGoal.json b/services/src/main/resources/META-INF/cxs/tags/goals/formGoal.json
deleted file mode 100644
index c0628af..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/goals/formGoal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "formGoal",
-    "parent": "goal"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/goals/funnelGoal.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/goals/funnelGoal.json b/services/src/main/resources/META-INF/cxs/tags/goals/funnelGoal.json
deleted file mode 100644
index a6bbc12..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/goals/funnelGoal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "funnelGoal",
-    "parent": "goal"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/goals/goal.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/goals/goal.json b/services/src/main/resources/META-INF/cxs/tags/goals/goal.json
deleted file mode 100644
index fee565a..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/goals/goal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "goal",
-    "parent": "root"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/goals/landingPageGoal.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/goals/landingPageGoal.json b/services/src/main/resources/META-INF/cxs/tags/goals/landingPageGoal.json
deleted file mode 100644
index 2f9fe9a..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/goals/landingPageGoal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "landingPageGoal",
-    "parent": "goal"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/goals/pageVisitGoal.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/goals/pageVisitGoal.json b/services/src/main/resources/META-INF/cxs/tags/goals/pageVisitGoal.json
deleted file mode 100644
index eca6077..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/goals/pageVisitGoal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "pageVisitGoal",
-    "parent": "goal"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/goals/videoGoal.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/goals/videoGoal.json b/services/src/main/resources/META-INF/cxs/tags/goals/videoGoal.json
deleted file mode 100644
index 1712367..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/goals/videoGoal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "videoGoal",
-    "parent": "goal"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/logical.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/logical.json b/services/src/main/resources/META-INF/cxs/tags/logical.json
deleted file mode 100644
index 22ecec9..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/logical.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "logical",
-    "parent": "profileTags"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/profileTags.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/profileTags.json b/services/src/main/resources/META-INF/cxs/tags/profileTags.json
deleted file mode 100644
index 7b4e02f..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/profileTags.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "profileTags",
-    "parent": "root"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/profiles/basicProfileProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/basicProfileProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/profiles/basicProfileProperties.json
deleted file mode 100644
index a445b4f..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/basicProfileProperties.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "id": "basicProfileProperties",
-    "parent": "profileProperties",
-    "rank": "2.0",
-    "hidden": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/profiles/contactProfileProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/contactProfileProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/profiles/contactProfileProperties.json
deleted file mode 100644
index 9f5c9e9..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/contactProfileProperties.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "id": "contactProfileProperties",
-    "parent": "profileProperties",
-    "rank": "4.0"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/profiles/leadProfileProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/leadProfileProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/profiles/leadProfileProperties.json
deleted file mode 100644
index 37b0f0b..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/leadProfileProperties.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "id": "leadProfileProperties",
-    "parent": "profileProperties",
-    "rank": "3.0",
-    "hidden": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/profiles/personalProfileProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/personalProfileProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/profiles/personalProfileProperties.json
deleted file mode 100644
index 5fba6a0..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/personalProfileProperties.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "id": "personalProfileProperties",
-    "parent": "profileProperties",
-    "rank": "6.0"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/profiles/profileProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/profileProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/profiles/profileProperties.json
deleted file mode 100644
index b8eeeba..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/profileProperties.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "profileProperties",
-    "parent": "properties"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/profiles/socialProfileProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/socialProfileProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/profiles/socialProfileProperties.json
deleted file mode 100644
index 2469130..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/socialProfileProperties.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "id": "socialProfileProperties",
-    "parent": "profileProperties",
-    "rank": "5.0",
-    "hidden": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/profiles/systemProfileProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/systemProfileProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/profiles/systemProfileProperties.json
deleted file mode 100644
index 55c3d06..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/systemProfileProperties.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "id": "systemProfileProperties",
-    "parent": "profileProperties",
-    "rank": "1.0",
-    "hidden": true
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/profiles/workProfileProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/workProfileProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/profiles/workProfileProperties.json
deleted file mode 100644
index b6b3cd2..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/profiles/workProfileProperties.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "id": "workProfileProperties",
-    "parent": "profileProperties",
-    "rank": "7.0"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/properties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/properties.json b/services/src/main/resources/META-INF/cxs/tags/properties/properties.json
deleted file mode 100644
index b9fb703..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/properties.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "properties",
-    "parent": "root"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/sessions/geographicSessionProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/sessions/geographicSessionProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/sessions/geographicSessionProperties.json
deleted file mode 100644
index b2cf9e4..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/sessions/geographicSessionProperties.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "id": "geographicSessionProperties",
-    "parent": "sessionProperties",
-    "rank": "1.0"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/sessions/sessionProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/sessions/sessionProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/sessions/sessionProperties.json
deleted file mode 100644
index eea2e7e..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/sessions/sessionProperties.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "sessionProperties",
-    "parent": "properties"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/properties/sessions/technicalSessionProperties.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/properties/sessions/technicalSessionProperties.json b/services/src/main/resources/META-INF/cxs/tags/properties/sessions/technicalSessionProperties.json
deleted file mode 100644
index dc7a821..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/properties/sessions/technicalSessionProperties.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "id": "technicalSessionProperties",
-    "parent": "sessionProperties",
-    "rank": "2.0"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/root.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/root.json b/services/src/main/resources/META-INF/cxs/tags/root.json
deleted file mode 100644
index 47f108a..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/root.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "id": "root",
-    "parent": ""
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/services/src/main/resources/META-INF/cxs/tags/rules/formMappingRule.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/tags/rules/formMappingRule.json b/services/src/main/resources/META-INF/cxs/tags/rules/formMappingRule.json
deleted file mode 100644
index aa42de4..0000000
--- a/services/src/main/resources/META-INF/cxs/tags/rules/formMappingRule.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "id": "formMappingRule",
-  "parent": "root"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/src/site/markdown/versions/1.1/concepts.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/1.1/concepts.md b/src/site/markdown/versions/1.1/concepts.md
index 6947c5b..56a7e7c 100644
--- a/src/site/markdown/versions/1.1/concepts.md
+++ b/src/site/markdown/versions/1.1/concepts.md
@@ -142,7 +142,7 @@ Being built on top of Apache Karaf, Unomi leverages OSGi to support plugins. A U
 | Rule | rules |
 | Scoring | scorings |
 | Segment | segments |
-| Tag | tags then `<category name>` directory |
+| Tag | tags |
 | ValueType | values |
 
 [Blueprint](http://aries.apache.org/modules/blueprint.html) is used to declare what the plugin provides and inject any required dependency. The Blueprint file is located, as usual, at `OSGI-INF/blueprint/blueprint.xml` in the bundle JAR file.
@@ -188,7 +188,7 @@ Definition for a profile or session property, specifying how possible values are
 `Segment`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.
 
 ### Tag
-`Tag`s are simple labels that are used to classify all other objects inside Unomi. Tags can define sub-tags.
+`Tag`s are simple labels that are used to classify all other objects inside Unomi.
 
 ### ValueType
 Definition for values that can be assigned to properties ("primitive" types).

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/src/site/markdown/versions/master/concepts.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/master/concepts.md b/src/site/markdown/versions/master/concepts.md
index 6947c5b..57ef1e2 100644
--- a/src/site/markdown/versions/master/concepts.md
+++ b/src/site/markdown/versions/master/concepts.md
@@ -142,7 +142,7 @@ Being built on top of Apache Karaf, Unomi leverages OSGi to support plugins. A U
 | Rule | rules |
 | Scoring | scorings |
 | Segment | segments |
-| Tag | tags then `<category name>` directory |
+| Tag | tags |
 | ValueType | values |
 
 [Blueprint](http://aries.apache.org/modules/blueprint.html) is used to declare what the plugin provides and inject any required dependency. The Blueprint file is located, as usual, at `OSGI-INF/blueprint/blueprint.xml` in the bundle JAR file.
@@ -188,7 +188,7 @@ Definition for a profile or session property, specifying how possible values are
 `Segment`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.
 
 ### Tag
-`Tag`s are simple labels that are used to classify all other objects inside Unomi. Tags can define sub-tags.
+`Tag`s are simple labels that are used to classify all other objects inside Unomi. 
 
 ### ValueType
 Definition for values that can be assigned to properties ("primitive" types).


[07/15] incubator-unomi git commit: UNOMI-117 move tags from the root of property type to their metadata to reflect others object structure

Posted by dg...@apache.org.
UNOMI-117 move tags from the root of property type to their metadata to reflect others object structure


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/a5beefc4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/a5beefc4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/a5beefc4

Branch: refs/heads/master
Commit: a5beefc459bed4205425832b0e8e8534e84e7ab9
Parents: eb8f07b
Author: dgaillard <dg...@jahia.com>
Authored: Fri Sep 15 17:57:09 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Thu Sep 28 10:50:13 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/unomi/api/PropertyType.java | 19 ----------------
 .../sessions/weather/weatherLike.json           |  9 ++++----
 .../sessions/weather/weatherTemp.json           |  9 ++++----
 .../sessions/weather/weatherWindDirection.json  |  9 ++++----
 .../sessions/weather/weatherWindSpeed.json      |  9 ++++----
 .../unomi/rest/ProfileServiceEndPoint.java      | 12 +++++-----
 .../actions/IncrementTweetNumberAction.java     |  4 ++--
 .../services/services/ProfileServiceImpl.java   |  2 +-
 .../properties/profiles/basic/firstName.json    | 15 ++++++++-----
 .../cxs/properties/profiles/basic/gender.json   | 15 ++++++++-----
 .../cxs/properties/profiles/basic/lastName.json | 15 ++++++++-----
 .../properties/profiles/basic/nationality.json  | 15 ++++++++-----
 .../properties/profiles/contact/address.json    | 23 +++++++++++---------
 .../cxs/properties/profiles/contact/city.json   | 15 ++++++++-----
 .../profiles/contact/countryName.json           | 15 ++++++++-----
 .../cxs/properties/profiles/contact/email.json  | 15 ++++++++-----
 .../profiles/contact/phoneNumber.json           | 15 ++++++++-----
 .../properties/profiles/contact/zipCode.json    | 15 ++++++++-----
 .../profiles/lead/leadAssignedTo.json           | 15 ++++++++-----
 .../cxs/properties/profiles/personal/age.json   | 12 +++++-----
 .../properties/profiles/personal/birthDate.json | 12 +++++-----
 .../cxs/properties/profiles/personal/kids.json  | 15 ++++++++-----
 .../profiles/personal/maritalStatus.json        | 15 ++++++++-----
 .../properties/profiles/social/facebookId.json  | 15 ++++++++-----
 .../properties/profiles/social/googleid.json    | 15 ++++++++-----
 .../properties/profiles/social/linkedInId.json  | 15 ++++++++-----
 .../properties/profiles/social/twitterId.json   | 15 ++++++++-----
 .../properties/profiles/system/firstVisit.json  | 15 ++++++++-----
 .../properties/profiles/system/lastVisit.json   | 15 ++++++++-----
 .../properties/profiles/system/nbOfVisits.json  | 15 ++++++++-----
 .../profiles/system/previousVisit.json          | 15 ++++++++-----
 .../cxs/properties/profiles/work/company.json   | 15 ++++++++-----
 .../cxs/properties/profiles/work/income.json    | 15 ++++++++-----
 .../cxs/properties/profiles/work/jobTitle.json  | 15 ++++++++-----
 .../sessions/geographic/latitude.json           | 15 ++++++++-----
 .../sessions/geographic/longitude.json          | 15 ++++++++-----
 .../geographic/sessionAdminSubDiv1.json         | 15 ++++++++-----
 .../geographic/sessionAdminSubDiv2.json         | 15 ++++++++-----
 .../sessions/geographic/sessionCity.json        | 15 ++++++++-----
 .../sessions/geographic/sessionCountryCode.json | 15 ++++++++-----
 .../sessions/geographic/sessionCountryName.json | 15 ++++++++-----
 .../sessions/technical/deviceCategory.json      | 15 ++++++++-----
 .../technical/operatingSystemFamily.json        | 15 ++++++++-----
 .../sessions/technical/operatingSystemName.json | 15 ++++++++-----
 .../sessions/technical/pageReferringURL.json    | 15 ++++++++-----
 .../sessions/technical/remoteAddr.json          | 15 ++++++++-----
 .../sessions/technical/remoteHost.json          | 15 ++++++++-----
 .../sessions/technical/userAgentName.json       | 15 ++++++++-----
 .../sessions/technical/userAgentVersion.json    | 15 ++++++++-----
 src/site/markdown/versions/1.1/concepts.md      |  4 ++--
 src/site/markdown/versions/master/concepts.md   |  4 ++--
 .../versions/master/custom-extensions.md        |  7 ++++--
 52 files changed, 404 insertions(+), 301 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/api/src/main/java/org/apache/unomi/api/PropertyType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/PropertyType.java b/api/src/main/java/org/apache/unomi/api/PropertyType.java
index 01bc934..45a81cb 100644
--- a/api/src/main/java/org/apache/unomi/api/PropertyType.java
+++ b/api/src/main/java/org/apache/unomi/api/PropertyType.java
@@ -46,7 +46,6 @@ public class PropertyType extends MetadataItem {
     private Set<String> automaticMappingsFrom = new HashSet<>();
     private Double rank;
     private String mergeStrategy;
-    private Set<String> tags = new LinkedHashSet<>();
     private Boolean multivalued;
     private Boolean protekted;
 
@@ -128,24 +127,6 @@ public class PropertyType extends MetadataItem {
     }
 
     /**
-     * Retrieves the tags used by this PropertyType.
-     *
-     * @return the tags used by this PropertyType
-     */
-    public Set<String> getTags() {
-        return tags;
-    }
-
-    /**
-     * Sets the tags used by this PropertyType.
-     *
-     * @param tags the tags used by this PropertyType
-     */
-    public void setTags(Set<String> tags) {
-        this.tags = tags;
-    }
-
-    /**
      * Retrieves the default value defined for property using this PropertyType.
      *
      * @return the default value defined for property using this PropertyType

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json
index ade7495..5f9a5bf 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json
@@ -1,12 +1,13 @@
 {
   "metadata": {
     "id": "weatherLike",
-    "name": "Weather Description"
+    "name": "Weather Description",
+    "tags": [
+      "properties",
+      "sessionProperties"
+    ]
   },
   "type": "string",
-  "tags": [
-    "sessionProperties"
-  ],
   "defaultValue": "",
   "automaticMappingsFrom": [],
   "rank": "302.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json
index d3aebe5..11865d8 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json
@@ -1,12 +1,13 @@
 {
   "metadata": {
     "id": "weatherTemperature",
-    "name": "Weather Temperature"
+    "name": "Weather Temperature",
+    "tags": [
+      "properties",
+      "sessionProperties"
+    ]
   },
   "type": "integer",
-  "tags": [
-    "sessionProperties"
-  ],
   "defaultValue": "",
   "automaticMappingsFrom": [],
   "rank": "302.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json
index c9fc3e6..8e99d87 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json
@@ -1,12 +1,13 @@
 {
   "metadata": {
     "id": "weatherWindDirection",
-    "name": "Weather Wind Direction"
+    "name": "Weather Wind Direction",
+    "tags": [
+      "properties",
+      "sessionProperties"
+    ]
   },
   "type": "string",
-  "tags": [
-    "sessionProperties"
-  ],
   "defaultValue": "",
   "automaticMappingsFrom": [],
   "rank": "302.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json
index 5077f1e..422090d 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json
@@ -1,12 +1,13 @@
 {
   "metadata": {
     "id": "weatherWindSpeed",
-    "name": "Weather Wind Speed"
+    "name": "Weather Wind Speed",
+    "tags": [
+      "properties",
+      "sessionProperties"
+    ]
   },
   "type": "integer",
-  "tags": [
-    "sessionProperties"
-  ],
   "defaultValue": "",
   "automaticMappingsFrom": [],
   "rank": "302.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
index e7c35ce..156eb91 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
@@ -475,15 +475,14 @@ public class ProfileServiceEndPoint {
      * TODO: move to a different class
      * Deprecated : use a /properties/targets collection instead, this URI will be used for looking up properties by id instead.
      *
-     * @param target   the target for which we want to retrieve the associated property types
-     * @param language the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
+     * @param propertyId    the target for which we want to retrieve the associated property types
+     * @param language      the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
      * @return a collection of all the property types associated with the specified target
      */
     @GET
-    @Path("/properties/{target}")
-    @Deprecated
-    public Collection<PropertyType> getPropertyTypesByTargetDeprecated(@PathParam("target") String target, @HeaderParam("Accept-Language") String language) {
-        return profileService.getAllPropertyTypes(target);
+    @Path("/properties/{propertyId}")
+    public PropertyType getPropertyType(@PathParam("propertyId") String propertyId, @HeaderParam("Accept-Language") String language) {
+        return profileService.getPropertyType(propertyId);
     }
 
     /**
@@ -497,7 +496,6 @@ public class ProfileServiceEndPoint {
      */
     @GET
     @Path("/properties/targets/{target}")
-    @Deprecated
     public Collection<PropertyType> getPropertyTypesByTarget(@PathParam("target") String target, @HeaderParam("Accept-Language") String language) {
         return profileService.getAllPropertyTypes(target);
     }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java b/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
index d291f09..c6fa4e5 100644
--- a/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
+++ b/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
@@ -45,14 +45,14 @@ public class IncrementTweetNumberAction implements ActionExecutor {
             // create tweet number property type
             PropertyType propertyType = new PropertyType(new Metadata(event.getScope(), TWEET_NB_PROPERTY, TWEET_NB_PROPERTY, "Number of times a user tweeted"));
             propertyType.setValueTypeId("integer");
-            propertyType.setTags(Collections.singleton("social"));
+            propertyType.getMetadata().setTags(Collections.singleton("social"));
             propertyType.setTarget(TARGET);
             service.setPropertyType(propertyType);
 
             // create tweeted from property type
             propertyType = new PropertyType(new Metadata(event.getScope(), TWEETED_FROM_PROPERTY, TWEETED_FROM_PROPERTY, "The list of pages a user tweeted from"));
             propertyType.setValueTypeId("string");
-            propertyType.setTags(Collections.singleton("social"));
+            propertyType.getMetadata().setTags(Collections.singleton("social"));
             propertyType.setTarget(TARGET);
             propertyType.setMultivalued(true);
             service.setPropertyType(propertyType);

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
index 273b64c..b95363c 100644
--- a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
@@ -641,7 +641,7 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
 
     public Set<PropertyType> getPropertyTypeByTag(String tag) {
         Set<PropertyType> propertyTypes = new LinkedHashSet<PropertyType>();
-        Collection<PropertyType> directPropertyTypes = persistenceService.query("tags", tag, "rank", PropertyType.class);
+        Collection<PropertyType> directPropertyTypes = persistenceService.query("metadata.tags", tag, "rank", PropertyType.class);
 
         if (directPropertyTypes != null) {
             propertyTypes.addAll(directPropertyTypes);

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
index a538e3e..1104066 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "firstName", "name": "First name"   },
+    "metadata": {
+        "id": "firstName",
+        "name": "First name",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "basicProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "basicProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "101.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
index 425b6bd..5a39b39 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "gender", "name": "Gender"   },
+    "metadata": {
+        "id": "gender",
+        "name": "Gender",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "basicProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "basicProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "104.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
index ae43fc4..b7aaa1c 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "lastName", "name": "Last name"   },
+    "metadata": {
+        "id": "lastName",
+        "name": "Last name",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "basicProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "basicProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "102.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
index 72f3dee..06fa815 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "nationality", "name": "Nationality"   },
+    "metadata": {
+        "id": "nationality",
+        "name": "Nationality",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "basicProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "basicProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "103.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
index ad1cac4..4bab6c8 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
@@ -1,12 +1,15 @@
 {
-  "metadata": {"id": "address", "name": "Address"},
-  "type": "string",
-  "tags": [
-    "properties",
-    "profileProperties",
-    "contactProfileProperties"
-  ],
-  "defaultValue": "",
-  "automaticMappingsFrom": [],
-  "rank": "303.0"
+    "metadata": {
+        "id": "address",
+        "name": "Address",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "contactProfileProperties"
+        ]
+    },
+    "type": "string",
+    "defaultValue": "",
+    "automaticMappingsFrom": [],
+    "rank": "303.0"
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
index e8bfe3a..166baba 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "city", "name": "City"   },
+    "metadata": {
+        "id": "city",
+        "name": "City",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "contactProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "contactProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "304.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
index 5c5b1ae..1e34b94 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "countryName", "name": "Country"   },
+    "metadata": {
+        "id": "countryName",
+        "name": "Country",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "contactProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "contactProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "305.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
index 3cd1d15..028eee3 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "email", "name": "Email"   },
+    "metadata": {
+        "id": "email",
+        "name": "Email",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "contactProfileProperties"
+        ]
+    },
     "type": "email",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "contactProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "301.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
index bd4319f..3c40ff1 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "phoneNumber", "name": "Phone number"   },
+    "metadata": {
+        "id": "phoneNumber",
+        "name": "Phone number",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "contactProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "contactProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "302.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
index 081313a..ff1f676 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "zipCode", "name": "ZIP Code"   },
+    "metadata": {
+        "id": "zipCode",
+        "name": "ZIP Code",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "contactProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "contactProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "306.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json b/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
index 4e445bd..7d1f66d 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "leadAssignedTo", "name": "Assigned to"   },
+    "metadata": {
+        "id": "leadAssignedTo",
+        "name": "Assigned to",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "leadProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "leadProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "201.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
index 2f155f2..cd0f03d 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
@@ -1,14 +1,14 @@
 {
   "metadata": {
     "id": "age",
-    "name": "Age"
+    "name": "Age",
+    "tags": [
+      "properties",
+      "profileProperties",
+      "personalProfileProperties"
+    ]
   },
   "type": "integer",
-  "tags": [
-    "properties",
-    "profileProperties",
-    "personalProfileProperties"
-  ],
   "defaultValue": "",
   "numericRanges": [
     {"key":"*_10", "to" : 10 },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
index 2d1101d..ef6dee5 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
@@ -1,14 +1,14 @@
 {
   "metadata": {
     "id": "birthDate",
-    "name": "Birth Date"
+    "name": "Birth Date",
+    "tags": [
+      "properties",
+      "profileProperties",
+      "personalProfileProperties"
+    ]
   },
   "type": "date",
-  "tags": [
-    "properties",
-    "profileProperties",
-    "personalProfileProperties"
-  ],
   "defaultValue": "",
   "dateRanges": [
     {"key":"*_10", "from": "now-10y/y" },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
index 0a58820..f422883 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "kids", "name": "Kids"   },
+    "metadata": {
+        "id": "kids",
+        "name": "Kids",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "personalProfileProperties"
+        ]
+    },
     "type": "integer",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "personalProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "504.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
index 5bcd149..774f8f5 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "maritalStatus", "name": "Marital status"   },
+    "metadata": {
+        "id": "maritalStatus",
+        "name": "Marital status",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "personalProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "personalProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "503.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
index b325f19..5f912ee 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "facebookId", "name": "Facebook ID"   },
+    "metadata": {
+        "id": "facebookId",
+        "name": "Facebook ID",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "socialProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "socialProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "401.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
index 48d54b8..6b1806a 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "googleId", "name": "Google ID"   },
+    "metadata": {
+        "id": "googleId",
+        "name": "Google ID",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "socialProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "socialProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "403.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
index a6947e1..d6b6ad6 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "linkedInId", "name": "LinkedIn ID"   },
+    "metadata": {
+        "id": "linkedInId",
+        "name": "LinkedIn ID",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "socialProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "socialProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "402.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
index 40fad1d..a3789c6 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "twitterId", "name": "Twitter ID"   },
+    "metadata": {
+        "id": "twitterId",
+        "name": "Twitter ID",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "socialProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "socialProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "404.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
index e1f4f32..058bcbe 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "firstVisit", "name": "First visit"   },
+    "metadata": {
+        "id": "firstVisit",
+        "name": "First visit",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "systemProfileProperties"
+        ]
+    },
     "type": "date",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "systemProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "mergeStrategy": "oldestMergeStrategy",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
index db2ffb9..d784f5c 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "lastVisit", "name": "Last visit"   },
+    "metadata": {
+        "id": "lastVisit",
+        "name": "Last visit",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "systemProfileProperties"
+        ]
+    },
     "type": "date",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "systemProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "mergeStrategy": "mostRecentMergeStrategy",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
index 94a9123..5759e36 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "nbOfVisits", "name": "Number of visits"   },
+    "metadata": {
+      "id": "nbOfVisits",
+      "name": "Number of visits",
+      "tags": [
+        "properties",
+        "profileProperties",
+        "systemProfileProperties"
+      ]
+    },
     "type": "integer",
-    "tags": [
-      "properties",
-      "profileProperties",
-      "systemProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "numericRanges": [

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
index a06f26f..4aa04a1 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
@@ -1,11 +1,14 @@
 {
-  "metadata": {     "id": "previousVisit", "name": "Previous visit"   },
+  "metadata": {
+    "id": "previousVisit",
+    "name": "Previous visit",
+    "tags": [
+      "properties",
+      "profileProperties",
+      "systemProfileProperties"
+    ]
+  },
   "type": "date",
-  "tags": [
-    "properties",
-    "profileProperties",
-    "systemProfileProperties"
-  ],
   "defaultValue": "",
   "automaticMappingsFrom": [ ],
   "mergeStrategy": "mostRecentMergeStrategy",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
index 940792b..18a4ee2 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "company", "name": "Company"   },
+    "metadata": {
+        "id": "company",
+        "name": "Company",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "workProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "workProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "601.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
index 47df006..d9a88a0 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "income", "name": "Income"   },
+    "metadata": {
+        "id": "income",
+        "name": "Income",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "workProfileProperties"
+        ]
+    },
     "type": "integer",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "workProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "603.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
index 22cc39f..fc0ca15 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "jobTitle", "name": "Job Title"   },
+    "metadata": {
+        "id": "jobTitle",
+        "name": "Job Title",
+        "tags": [
+            "properties",
+            "profileProperties",
+            "workProfileProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "profileProperties",
-        "workProfileProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "602.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
index 1f8c92c..0f72c88 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "latitude", "name": "Latitude"   },
+    "metadata": {
+        "id": "latitude",
+        "name": "Latitude",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "geographicSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "geographicSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "4.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
index f983d52..7cbcd7a 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "longitude", "name": "Longitude"   },
+    "metadata": {
+        "id": "longitude",
+        "name": "Longitude",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "geographicSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "geographicSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "5.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
index 7591485..c8939ce 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
@@ -1,11 +1,14 @@
 {
-  "metadata": {     "id": "sessionAdminSubDiv1", "name": "State/Region/Province"   },
+  "metadata": {
+    "id": "sessionAdminSubDiv1",
+    "name": "State/Region/Province",
+    "tags": [
+      "properties",
+      "sessionProperties",
+      "geographicSessionProperties"
+    ]
+  },
   "type": "string",
-  "tags": [
-    "properties",
-    "sessionProperties",
-    "geographicSessionProperties"
-  ],
   "defaultValue": "",
   "automaticMappingsFrom": [ ],
   "rank": "2.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
index 2f7a7e2..bad2a10 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
@@ -1,11 +1,14 @@
 {
-  "metadata": {     "id": "sessionAdminSubDiv2", "name": "SubRegion/County"   },
+  "metadata": {
+    "id": "sessionAdminSubDiv2",
+    "name": "SubRegion/County",
+    "tags": [
+      "properties",
+      "sessionProperties",
+      "geographicSessionProperties"
+    ]
+  },
   "type": "string",
-  "tags": [
-    "properties",
-    "sessionProperties",
-    "geographicSessionProperties"
-  ],
   "defaultValue": "",
   "automaticMappingsFrom": [ ],
   "rank": "2.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
index 2f353e5..57632ca 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "sessionCity", "name": "City"   },
+    "metadata": {
+        "id": "sessionCity",
+        "name": "City",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "geographicSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "geographicSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "3.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
index 47cbe2c..38e7680 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "sessionCountryCode", "name": "Country code"   },
+    "metadata": {
+        "id": "sessionCountryCode",
+        "name": "Country code",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "geographicSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "geographicSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ "j:country" ],
     "rank": "1.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
index 4198d30..ff61cc0 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "sessionCountryName", "name": "Country"   },
+    "metadata": {
+        "id": "sessionCountryName",
+        "name": "Country",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "geographicSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "geographicSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "2.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
index 3795e96..706915f 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "deviceCategory", "name": "Device category"   },
+    "metadata": {
+        "id": "deviceCategory",
+        "name": "Device category",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "technicalSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "technicalSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "105.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
index b1f9653..bce7688 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "operatingSystemFamily", "name": "Operating system family"   },
+    "metadata": {
+        "id": "operatingSystemFamily",
+        "name": "Operating system family",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "technicalSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "technicalSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "101.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
index bf08a07..5d77863 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "operatingSystemName", "name": "Operating system name"   },
+    "metadata": {
+        "id": "operatingSystemName",
+        "name": "Operating system name",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "technicalSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "technicalSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "102.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
index c971bc9..378a97c 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "pageReferringURL", "name": "Previous page URL"   },
+    "metadata": {
+        "id": "pageReferringURL",
+        "name": "Previous page URL",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "technicalSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "technicalSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "108.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
index 71531de..8231c2f 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "remoteAddr", "name": "Remote IP address"   },
+    "metadata": {
+        "id": "remoteAddr",
+        "name": "Remote IP address",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "technicalSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "technicalSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "106.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
index 1864348..b33265e 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "remoteHost", "name": "Remote host address"   },
+    "metadata": {
+        "id": "remoteHost",
+        "name": "Remote host address",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "technicalSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "technicalSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "107.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
index 8849081..1a2855d 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "userAgentName", "name": "Browser user agent name"   },
+    "metadata": {
+        "id": "userAgentName",
+        "name": "Browser user agent name",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "technicalSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "technicalSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "103.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
index 343f3bf..0675427 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
@@ -1,11 +1,14 @@
 {
-    "metadata": {     "id": "userAgentVersion", "name": "Browser user agent version"   },
+    "metadata": {
+        "id": "userAgentVersion",
+        "name": "Browser user agent version",
+        "tags": [
+            "properties",
+            "sessionProperties",
+            "technicalSessionProperties"
+        ]
+    },
     "type": "string",
-    "tags": [
-        "properties",
-        "sessionProperties",
-        "technicalSessionProperties"
-    ],
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "rank": "104.0"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/src/site/markdown/versions/1.1/concepts.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/1.1/concepts.md b/src/site/markdown/versions/1.1/concepts.md
index 56a7e7c..4f4e7be 100644
--- a/src/site/markdown/versions/1.1/concepts.md
+++ b/src/site/markdown/versions/1.1/concepts.md
@@ -50,9 +50,9 @@ Some types can be dynamically defined at runtime by calling to the REST API whil
     "itemType": "propertyType",
     "metadata": {
         "id": "tweetNb",
-        "name": "tweetNb"
+        "name": "tweetNb",
+        "tags": ["social"]
     },
-    "tags": ["social"],
     "target": "profiles",
     "type": "integer"
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/src/site/markdown/versions/master/concepts.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/master/concepts.md b/src/site/markdown/versions/master/concepts.md
index 57ef1e2..8b33c89 100644
--- a/src/site/markdown/versions/master/concepts.md
+++ b/src/site/markdown/versions/master/concepts.md
@@ -50,9 +50,9 @@ Some types can be dynamically defined at runtime by calling to the REST API whil
     "itemType": "propertyType",
     "metadata": {
         "id": "tweetNb",
-        "name": "tweetNb"
+        "name": "tweetNb",
+        "tags": ["social"]
     },
-    "tags": ["social"],
     "target": "profiles",
     "type": "integer"
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/a5beefc4/src/site/markdown/versions/master/custom-extensions.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/master/custom-extensions.md b/src/site/markdown/versions/master/custom-extensions.md
index 355896a..866f4f9 100644
--- a/src/site/markdown/versions/master/custom-extensions.md
+++ b/src/site/markdown/versions/master/custom-extensions.md
@@ -158,9 +158,12 @@ For profile properties you must create the JSON file inside the directory in you
 Here is an example of a property definition JSON file
 
     {
-        "metadata": {     "id": "city", "name": "City"   },
+        "metadata": {
+            "id": "city",
+            "name": "City",
+            "tags": ["properties", "profileProperties", "contactProfileProperties"]
+        },
         "type": "string",
-        "tags": ["contactProfileProperties"],
         "defaultValue": "",
         "automaticMappingsFrom": [ ],
         "rank": "304.0"


[13/15] incubator-unomi git commit: UNOMI-117 fix javadoc, add bulk entry point to update property type

Posted by dg...@apache.org.
UNOMI-117 fix javadoc, add bulk entry point to update property type


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/ccc3c2c7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/ccc3c2c7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/ccc3c2c7

Branch: refs/heads/master
Commit: ccc3c2c7058a310263a46bd51ad8da6f8e2b79e2
Parents: f479d8f
Author: dgaillard <dg...@jahia.com>
Authored: Fri Oct 6 15:09:38 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Fri Oct 6 15:09:38 2017 +0200

----------------------------------------------------------------------
 .../unomi/rest/ProfileServiceEndPoint.java      | 25 ++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ccc3c2c7/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
index dff5bab..34ac552 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
@@ -476,14 +476,13 @@ public class ProfileServiceEndPoint {
     }
 
     /**
-     * Retrieves all the property types associated with the specified target.
+     * Retrieves the property type associated with the specified property ID.
      *
      * TODO: move to a different class
-     * Deprecated : use a /properties/targets collection instead, this URI will be used for looking up properties by id instead.
      *
-     * @param propertyId    the target for which we want to retrieve the associated property types
+     * @param propertyId    the property ID for which we want to retrieve the associated property type
      * @param language      the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
-     * @return a collection of all the property types associated with the specified target
+     * @return the property type associated with the specified ID
      */
     @GET
     @Path("/properties/{propertyId}")
@@ -563,6 +562,24 @@ public class ProfileServiceEndPoint {
     }
 
     /**
+     * Persists the specified properties type in the context server.
+     *
+     * TODO: move to a different class
+     *
+     * @param properties the properties type to persist
+     * @return {@code true} if the property type was properly created, {@code false} otherwise (for example, if the property type already existed
+     */
+    @POST
+    @Path("/properties/bulk")
+    public boolean setPropertyTypes(List<PropertyType> properties) {
+        boolean saved = false;
+        for (PropertyType property : properties) {
+            saved |= profileService.setPropertyType(property);
+        }
+        return saved;
+    }
+
+    /**
      * Deletes the property type identified by the specified identifier.
      *
      * TODO: move to a different class


[03/15] incubator-unomi git commit: UNOMI-117 Create tools package that contain a shell bundle so we can define our custom shell commands for unomi, create a migration shell command to ease the migration to a new version

Posted by dg...@apache.org.
UNOMI-117 Create tools package that contain a shell bundle so we can define our custom shell commands for unomi, create a migration shell command to ease the migration to a new version


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/f0100317
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/f0100317
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/f0100317

Branch: refs/heads/master
Commit: f0100317f5788aa5044f31916ae7d9ad50ebd9c8
Parents: ebfd560
Author: dgaillard <dg...@jahia.com>
Authored: Fri Sep 8 17:50:12 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Thu Sep 28 10:49:15 2017 +0200

----------------------------------------------------------------------
 pom.xml                                         |   1 +
 tools/pom.xml                                   |  37 +++++
 tools/shell-commands/pom.xml                    | 108 +++++++++++++
 .../org/apache/unomi/shell/actions/Migrate.java |  67 ++++++++
 .../org/apache/unomi/shell/actions/Version.java |  29 ++++
 .../migrations/AbstractMigrationResource.java   |  81 ++++++++++
 .../unomi/shell/migrations/MigrationTo200.java  | 130 ++++++++++++++++
 .../apache/unomi/shell/utils/ConsoleUtils.java  |  82 ++++++++++
 .../org/apache/unomi/shell/utils/HttpUtils.java | 155 +++++++++++++++++++
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  32 ++++
 10 files changed, 722 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 84b09f5..fefee15 100644
--- a/pom.xml
+++ b/pom.xml
@@ -847,6 +847,7 @@
         <module>kar</module>
         <module>samples</module>
         <module>package</module>
+        <module>tools</module>
     </modules>
 
     <dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/pom.xml
----------------------------------------------------------------------
diff --git a/tools/pom.xml b/tools/pom.xml
new file mode 100644
index 0000000..9a42616
--- /dev/null
+++ b/tools/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.unomi</groupId>
+        <artifactId>unomi-root</artifactId>
+        <version>1.2.0-incubating-unomi_117-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>unomi-tools</artifactId>
+    <name>Apache Unomi :: Tools</name>
+    <description>Apache Unomi Context Server tools</description>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>shell-commands</module>
+    </modules>
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/shell-commands/pom.xml
----------------------------------------------------------------------
diff --git a/tools/shell-commands/pom.xml b/tools/shell-commands/pom.xml
new file mode 100644
index 0000000..51f1f06
--- /dev/null
+++ b/tools/shell-commands/pom.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>unomi-tools</artifactId>
+        <groupId>org.apache.unomi</groupId>
+        <version>1.2.0-incubating-unomi_117-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>shell-commands</artifactId>
+    <name>Apache Unomi :: Tools :: Shell commands</name>
+    <description>Provides the shell commands to interact with Apache Unomi Context Server</description>
+    <version>1.2.0-incubating-unomi_117-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.karaf.shell</groupId>
+            <artifactId>org.apache.karaf.shell.console</artifactId>
+            <version>3.0.8</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient-osgi</artifactId>
+            <version>4.5.1</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+            <version>20160212</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>5.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+            <version>5.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>2.5.4</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Export-Package>org.apache.unomi*;version=${project.version}</Export-Package>
+                        <Import-Package>!org.apache.unomi*,
+                            org.apache.aries.blueprint,
+                            org.osgi.service.blueprint.container,
+                            org.osgi.service.blueprint.reflect,
+                            org.apache.felix.service.command,
+                            org.apache.karaf.shell.commands,
+                            org.apache.karaf.shell.console,
+                            *
+                        </Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Migrate.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Migrate.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Migrate.java
new file mode 100644
index 0000000..f24a884
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Migrate.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.actions;
+
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Argument;
+import org.apache.unomi.shell.migrations.MigrationTo200;
+import org.apache.unomi.shell.utils.ConsoleUtils;
+import org.osgi.framework.Version;
+
+import java.util.*;
+
+@Command(scope = "unomi", name = "migrate", description = "This will Migrate your date in ES to be compliant with current version")
+public class Migrate extends OsgiCommandSupport {
+
+    @Argument(name = "fromVersionWithoutSuffix", description = "Origin version without suffix/qualifier (e.g: 1.2.0)", required = true, multiValued = false, valueToShowInHelp = "1.2.0")
+    private String fromVersionWithoutSuffix;
+
+    protected Object doExecute() throws Exception {
+        String confirmation = ConsoleUtils.askUserWithAuthorizedAnswer(session,"[WARNING] You are about to execute a migration, this a very sensitive operation, are you sure? (yes/no): ", Arrays.asList("yes", "no"));
+        if (confirmation.equalsIgnoreCase("no")) {
+            System.out.println("Migration process aborted");
+            return null;
+        }
+
+        System.out.println("Starting migration process from version: " + fromVersionWithoutSuffix);
+
+        Version fromVersion = new Version(fromVersionWithoutSuffix);
+        Version currentVersion = getCurrentVersionWithoutQualifier();
+        System.out.println("current version: " + currentVersion.toString());
+        if (currentVersion.compareTo(fromVersion) <= 0) {
+            System.out.println("From version is same or superior than current version, nothing to migrate.");
+            return null;
+        }
+
+        if (fromVersion.compareTo(new Version("2.0.0")) < 0) {
+            System.out.println("Starting migration to version 2.0.0");
+
+            MigrationTo200 migrationTo200 = new MigrationTo200(session);
+            migrationTo200.execute();
+
+            System.out.println("Migration to version 2.0.0 done successfully");
+        }
+
+        return null;
+    }
+
+    private Version getCurrentVersionWithoutQualifier() {
+        Version currentVersion = bundleContext.getBundle().getVersion();
+        return new Version(currentVersion.getMajor() + "." + currentVersion.getMinor() + "." + currentVersion.getMicro());
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Version.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Version.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Version.java
new file mode 100644
index 0000000..50661e0
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Version.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.actions;
+
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+
+@Command(scope = "unomi", name = "version", description = "This will print Apache Unomi current version")
+public class Version extends OsgiCommandSupport {
+
+    protected Object doExecute() throws Exception {
+         System.out.println("Apache Unomi version: " + bundleContext.getBundle().getVersion().toString());
+         return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/AbstractMigrationResource.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/AbstractMigrationResource.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/AbstractMigrationResource.java
new file mode 100644
index 0000000..37171a0
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/AbstractMigrationResource.java
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migrations;
+
+import org.apache.felix.service.command.CommandSession;
+import org.apache.http.HttpEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.apache.unomi.shell.utils.ConsoleUtils;
+import org.apache.unomi.shell.utils.HttpUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @author dgaillard
+ */
+public abstract class AbstractMigrationResource {
+    protected CloseableHttpClient httpClient;
+    protected CommandSession session;
+
+    protected AbstractMigrationResource(CommandSession session) throws IOException {
+        this.session = session;
+    }
+
+    protected void initHttpClient() throws IOException {
+        if (httpClient == null) {
+            String confirmation = ConsoleUtils.askUserWithAuthorizedAnswer(session,"We need to initialize a HttpClient, do we need to trust all certificates? (yes/no):", Arrays.asList("yes", "no"));
+            httpClient = HttpUtils.initHttpClient(confirmation.equalsIgnoreCase("yes"));
+        }
+    }
+
+    protected void closeHttpClient() throws IOException {
+        if (httpClient != null) {
+            httpClient.close();
+        }
+    }
+
+    protected List<JSONArray> getDataToMigrate(String url, int offset, int size) throws IOException {
+        String jsonData = "{\"query\":{\"bool\":{\"should\":[{\"match_all\":{}}]}},\"from\":" + offset + ",\"size\":" + size + "}";
+
+        HttpEntity entity = HttpUtils.executePostRequest(httpClient, url, jsonData, null);
+        JSONObject responseJSON = new JSONObject(EntityUtils.toString(entity));
+        EntityUtils.consumeQuietly(entity);
+
+        List<JSONArray> totalHits = new ArrayList<>();
+        if (responseJSON.has("hits")) {
+            JSONObject hitsObject = responseJSON.getJSONObject("hits");
+            JSONArray hits = hitsObject.getJSONArray("hits");
+            totalHits.add(hits);
+            int newOffset = size + offset;
+            if (newOffset <= hitsObject.getInt("total")) {
+                totalHits.addAll(getDataToMigrate(url, newOffset, size));
+            }
+        }
+
+        return totalHits;
+    }
+
+    protected void bulkUpdate(String url, String jsonData) throws IOException {
+        HttpEntity entity = HttpUtils.executePostRequest(httpClient, url, jsonData, null);
+        JSONObject responseJSON = new JSONObject(EntityUtils.toString(entity));
+        EntityUtils.consumeQuietly(entity);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/MigrationTo200.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/MigrationTo200.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/MigrationTo200.java
new file mode 100644
index 0000000..134db02
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/MigrationTo200.java
@@ -0,0 +1,130 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migrations;
+
+import org.apache.felix.service.command.CommandSession;
+import org.apache.unomi.shell.utils.ConsoleUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @author dgaillard
+ */
+public class MigrationTo200 extends AbstractMigrationResource {
+
+    public MigrationTo200(CommandSession session) throws IOException {
+        super(session);
+    }
+
+    public void execute() throws IOException {
+        try {
+            initHttpClient();
+            migrateTags();
+        } catch (IOException e) {
+            closeHttpClient();
+            throw e;
+        }
+    }
+
+    private void migrateTags() throws IOException {
+        String hostAddress = ConsoleUtils.askUserWithDefaultAnswer(session, "Host address (default = http://localhost:9200): ", "http://localhost:9200");
+
+        List<JSONArray> totalHits = getDataToMigrate(hostAddress + "/context/propertyType/_search", 0, 10);
+
+        StringBuilder updatedHits = new StringBuilder();
+        for (JSONArray hits : totalHits) {
+            Iterator<Object> hitsIterator = hits.iterator();
+            LinkedHashMap<String, List<String>> legacyTags = getTagsStructurePriorTo200();
+            while (hitsIterator.hasNext()) {
+                JSONObject hit = (JSONObject) hitsIterator.next();
+                if (hit.has("_source")) {
+                    JSONObject hitSource = hit.getJSONObject("_source");
+                    if (hitSource.has("tags")) {
+                        JSONArray hitTags = hitSource.getJSONArray("tags");
+                        Iterator<Object> tagsIterator = hitTags.iterator();
+                        List<String> tagsBeforeMigration = new ArrayList<>();
+                        List<String> tagsAfterMigration = new ArrayList<>();
+                        while (tagsIterator.hasNext()) {
+                            tagsBeforeMigration.add((String) tagsIterator.next());
+                        }
+                        for (String tag : tagsBeforeMigration) {
+                            if (legacyTags.containsKey(tag) && !tagsAfterMigration.containsAll(legacyTags.get(tag))) {
+                                tagsAfterMigration.addAll(legacyTags.get(tag));
+                            }
+
+                            if (!tagsAfterMigration.contains(tag)) {
+                                tagsAfterMigration.add(tag);
+                            }
+                        }
+
+                        updatedHits.append("{\"update\":{\"_id\":\"").append(hit.getString("_id")).append("\"}}\n");
+                        updatedHits.append("{\"doc\":{\"tags\":").append(new JSONArray(tagsAfterMigration)).append("}}\n");
+                    }
+                }
+            }
+        }
+        bulkUpdate(hostAddress + "/context/propertyType/_bulk", updatedHits.toString());
+    }
+
+    private LinkedHashMap<String, List<String>> getTagsStructurePriorTo200() {
+        LinkedHashMap<String, List<String>> tags = new LinkedHashMap<>();
+        tags.put("landing", Collections.singletonList("campaign"));
+        tags.put("parameter", Collections.singletonList("campaign"));
+        tags.put("referrer", Collections.singletonList("campaign"));
+
+        tags.put("eventCondition", Collections.singletonList("condition"));
+        tags.put("profileCondition", Collections.singletonList("condition"));
+        tags.put("sessionCondition", Collections.singletonList("condition"));
+        tags.put("sourceEventCondition", Collections.singletonList("condition"));
+        tags.put("trackedCondition", Collections.singletonList("condition"));
+        tags.put("usableInPastEventCondition", Collections.singletonList("condition"));
+
+        tags.put("formMappingRule", Collections.<String>emptyList());
+
+        tags.put("downloadGoal", Collections.singletonList("goal"));
+        tags.put("formGoal", Collections.singletonList("goal"));
+        tags.put("funnelGoal", Collections.singletonList("goal"));
+        tags.put("landingPageGoal", Collections.singletonList("goal"));
+        tags.put("pageVisitGoal", Collections.singletonList("goal"));
+        tags.put("videoGoal", Collections.singletonList("goal"));
+
+        tags.put("aggregated", Collections.singletonList("profileTags"));
+        tags.put("autocompleted", Collections.singletonList("profileTags"));
+        tags.put("demographic", Collections.singletonList("profileTags"));
+        tags.put("event", Collections.singletonList("profileTags"));
+        tags.put("geographic", Collections.singletonList("profileTags"));
+        tags.put("logical", Collections.singletonList("profileTags"));
+
+        tags.put("profileProperties", Collections.singletonList("properties"));
+        tags.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tags.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tags.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tags.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tags.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tags.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tags.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
+
+        tags.put("sessionProperties", Collections.singletonList("properties"));
+        tags.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
+        tags.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
+
+        return tags;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/ConsoleUtils.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/ConsoleUtils.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/ConsoleUtils.java
new file mode 100644
index 0000000..b2c6323
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/ConsoleUtils.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.utils;
+
+import jline.console.ConsoleReader;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.felix.service.command.CommandSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author dgaillard
+ */
+public class ConsoleUtils {
+    private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
+
+    /**
+     * This will ask a question to the user and return the default answer if the user does not answer.
+     *
+     * @param session           CommandSession
+     * @param msg               String message to ask
+     * @param defaultAnswer     String default answer
+     * @return the user answer
+     * @throws IOException
+     */
+    public static String askUserWithDefaultAnswer(CommandSession session, String msg, String defaultAnswer) throws IOException {
+        String answer = promptMessageToUser(session, msg);
+        if (StringUtils.isBlank(answer)) {
+            return defaultAnswer;
+        }
+        return answer;
+    }
+
+    /**
+     * This method allow you to ask a question to the user.
+     * The answer is controlled before being return so the question will be ask until the user enter one the authorized answer
+     *
+     * @param session           CommandSession
+     * @param msg               String message to ask
+     * @param authorizedAnswer  Array of possible answer, all answer must be in lower case
+     * @return the user answer
+     * @throws IOException
+     */
+    public static String askUserWithAuthorizedAnswer(CommandSession session, String msg, List<String> authorizedAnswer) throws IOException {
+        String answer;
+        do {
+            answer = promptMessageToUser(session,msg);
+        } while (!authorizedAnswer.contains(answer.toLowerCase()));
+        return answer;
+    }
+
+    /**
+     * This method allow you to prompt a message to the user.
+     * No control is done on the answer provided by the user.
+     *
+     * @param session   CommandSession
+     * @param msg       String message to prompt
+     * @return the user answer
+     * @throws IOException
+     */
+    public static String promptMessageToUser(CommandSession session, String msg) throws IOException {
+        ConsoleReader reader = (ConsoleReader) session.get(".jline.reader");
+        return reader.readLine(msg, null);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/HttpUtils.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/HttpUtils.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/HttpUtils.java
new file mode 100644
index 0000000..6fd1e58
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/HttpUtils.java
@@ -0,0 +1,155 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.utils;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.*;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.entity.BufferedHttpEntity;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.IOException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import java.util.Map;
+
+/**
+ * @author dgaillard
+ */
+public class HttpUtils {
+    private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
+
+    public static CloseableHttpClient initHttpClient(boolean trustAllCertificates) {
+        long requestStartTime = System.currentTimeMillis();
+
+        HttpClientBuilder httpClientBuilder = HttpClients.custom().useSystemProperties();
+
+        if (trustAllCertificates) {
+            try {
+                SSLContext sslContext = SSLContext.getInstance("SSL");
+                sslContext.init(null, new TrustManager[]{new X509TrustManager() {
+                    public X509Certificate[] getAcceptedIssuers() {
+                        return null;
+                    }
+
+                    public void checkClientTrusted(X509Certificate[] certs,
+                                                   String authType) {
+                    }
+
+                    public void checkServerTrusted(X509Certificate[] certs,
+                                                   String authType) {
+                    }
+                }}, new SecureRandom());
+
+                Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
+                        .register("http", PlainConnectionSocketFactory.getSocketFactory())
+                        .register("https", new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER))
+                        .build();
+
+                httpClientBuilder.setHostnameVerifier(SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
+                        .setConnectionManager(new PoolingHttpClientConnectionManager(socketFactoryRegistry));
+
+            } catch (NoSuchAlgorithmException | KeyManagementException e) {
+                logger.error("Error creating SSL Context", e);
+            }
+        } else {
+            httpClientBuilder.setConnectionManager(new PoolingHttpClientConnectionManager());
+        }
+
+        RequestConfig requestConfig = RequestConfig.custom().build();
+        httpClientBuilder.setDefaultRequestConfig(requestConfig);
+
+        if (logger.isDebugEnabled()) {
+            long totalRequestTime = System.currentTimeMillis() - requestStartTime;
+            logger.debug("Init HttpClient executed in " + totalRequestTime + "ms");
+        }
+
+        return httpClientBuilder.build();
+    }
+
+    public static HttpEntity executeGetRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers) throws IOException {
+        HttpGet httpGet = new HttpGet(url);
+        httpGet.addHeader("accept", "application/json");
+
+        return getHttpEntity(httpClient, url, headers, httpGet);
+    }
+
+    public static HttpEntity executeDeleteRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers) throws IOException {
+        HttpDelete httpDelete = new HttpDelete(url);
+        httpDelete.addHeader("accept", "application/json");
+
+        return getHttpEntity(httpClient, url, headers, httpDelete);
+    }
+
+    public static HttpEntity executePostRequest(CloseableHttpClient httpClient, String url, String jsonData, Map<String, String> headers) throws IOException {
+        HttpPost httpPost = new HttpPost(url);
+        httpPost.addHeader("accept", "application/json");
+
+        if (jsonData != null) {
+            StringEntity input = new StringEntity(jsonData);
+            input.setContentType("application/json");
+            httpPost.setEntity(input);
+        }
+
+        return getHttpEntity(httpClient, url, headers, httpPost);
+    }
+
+    private static HttpEntity getHttpEntity(CloseableHttpClient httpClient, String url, Map<String, String> headers, HttpRequestBase httpRequestBase) throws IOException {
+        long requestStartTime = System.currentTimeMillis();
+        if (headers != null) {
+            for (Map.Entry<String, String> entry : headers.entrySet()) {
+                httpRequestBase.setHeader(entry.getKey(), entry.getValue());
+            }
+        }
+
+        CloseableHttpResponse response = httpClient.execute(httpRequestBase);
+        final int statusCode = response.getStatusLine().getStatusCode();
+        if (statusCode >= 400) {
+            throw new IOException("Couldn't execute " + httpRequestBase + " response: " + EntityUtils.toString(response.getEntity()));
+        }
+
+        HttpEntity entity = response.getEntity();
+        if (logger.isDebugEnabled()) {
+            if (entity !=null) {
+                entity = new BufferedHttpEntity(response.getEntity());
+            }
+            logger.debug("POST request " + httpRequestBase + " executed with code: " + statusCode + " and message: " + (entity!=null?EntityUtils.toString(entity):null));
+
+            long totalRequestTime = System.currentTimeMillis() - requestStartTime;
+            logger.debug("Request to Apache Unomi url: " + url + " executed in " + totalRequestTime + "ms");
+        }
+
+        return entity;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f0100317/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
new file mode 100644
index 0000000..8f1080b
--- /dev/null
+++ b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+           xsi:schemaLocation="http://karaf.apache.org/xmlns/shell/v1.1.0">
+
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
+        <command>
+            <action class="org.apache.unomi.shell.actions.Migrate"/>
+        </command>
+        <command>
+            <action class="org.apache.unomi.shell.actions.Version"/>
+        </command>
+    </command-bundle>
+
+</blueprint>



[05/15] incubator-unomi git commit: UNOMI-117 refactor tags as an open string, removed tags definitions, removed tags hierarchy and associated functions, add previously parent tag to children

Posted by dg...@apache.org.
UNOMI-117 refactor tags as an open string, removed tags definitions, removed tags hierarchy and associated functions, add previously parent tag to children


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/ebfd560d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/ebfd560d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/ebfd560d

Branch: refs/heads/master
Commit: ebfd560db90ce85ba59fcc6c237b1b3d2afdd0ae
Parents: b4ec20f
Author: dgaillard <dg...@jahia.com>
Authored: Tue Aug 8 14:39:30 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Thu Sep 28 10:49:15 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/unomi/api/Metadata.java     |  10 +-
 .../java/org/apache/unomi/api/PropertyType.java |  36 +---
 api/src/main/java/org/apache/unomi/api/Tag.java | 193 -------------------
 .../java/org/apache/unomi/api/ValueType.java    |  38 +---
 .../unomi/api/services/DefinitionsService.java  |  78 +-------
 .../unomi/api/services/ProfileService.java      |  17 +-
 .../META-INF/cxs/actions/addToLists.json        |   1 +
 .../cxs/actions/sfdcCreateOrUpdateLead.json     |   1 +
 .../cxs/actions/sfdcUpdateProfileFromLead.json  |   1 +
 .../src/test/scala/unomi/AdminScenario.scala    |   2 +-
 .../allEventToProfilePropertiesAction.json      |   1 +
 .../cxs/actions/evaluateProfileAgeAction.json   |   1 +
 .../actions/evaluateProfileSegmentsAction.json  |   1 +
 .../actions/eventToProfilePropertyAction.json   |   1 +
 .../actions/mergeProfilesOnPropertyAction.json  |   1 +
 .../META-INF/cxs/actions/sendEventAction.json   |   1 +
 .../actions/setEventOccurenceCountAction.json   |   1 +
 .../META-INF/cxs/actions/setPropertyAction.json |   1 +
 .../cxs/conditions/booleanCondition.json        |   2 +
 .../cxs/conditions/eventPropertyCondition.json  |   2 +
 .../cxs/conditions/eventTypeCondition.json      |   2 +
 .../cxs/conditions/formEventCondition.json      |   2 +
 .../geoLocationByPointSessionCondition.json     |   2 +
 .../conditions/geoLocationSessionCondition.json |   2 +
 .../cxs/conditions/goalMatchCondition.json      |   2 +
 .../cxs/conditions/matchAllCondition.json       |   2 +
 .../cxs/conditions/newVisitorCondition.json     |   2 +
 .../META-INF/cxs/conditions/notCondition.json   |   2 +
 .../cxs/conditions/pastEventCondition.json      |   2 +
 .../conditions/profilePropertyCondition.json    |   2 +
 .../cxs/conditions/profileSegmentCondition.json |   2 +
 .../profileUpdatedEventCondition.json           |   2 +
 .../conditions/profileUserListCondition.json    |   2 +
 .../conditions/returningVisitorCondition.json   |   2 +
 .../cxs/conditions/scoringCondition.json        |   2 +
 .../sessionCreatedEventCondition.json           |   2 +
 .../conditions/sessionDurationCondition.json    |   2 +
 .../conditions/sessionPropertyCondition.json    |   2 +
 .../sourceEventPropertyCondition.json           |   1 +
 .../cxs/conditions/videoViewEventCondition.json |   2 +
 .../cxs/conditions/hoverEventCondition.json     |   2 +
 .../META-INF/cxs/actions/sendMailAction.json    |   1 +
 .../requestHeaderToProfilePropertyAction.json   |   1 +
 ...requestParameterToProfilePropertyAction.json |   1 +
 .../cxs/actions/setRemoteHostInfoAction.json    |   1 +
 .../unomi/rest/DefinitionsServiceEndPoint.java  |  97 ++--------
 .../apache/unomi/rest/LocalizationHelper.java   |  65 +------
 .../unomi/rest/ProfileServiceEndPoint.java      |  15 +-
 .../org/apache/unomi/rest/RESTActionType.java   |   8 +-
 .../apache/unomi/rest/RESTConditionType.java    |  11 +-
 .../java/org/apache/unomi/rest/RESTTag.java     |  87 ---------
 .../org/apache/unomi/rest/RESTValueType.java    |   8 +-
 .../training/TrainedNotificationAction.java     |   2 +-
 .../cxs/actions/trainingNotifAction.json        |   1 +
 .../actions/IncrementTweetNumberAction.java     |   4 +-
 .../cxs/actions/incrementTweetNumberAction.json |   1 +
 .../services/DefinitionsServiceImpl.java        | 140 ++------------
 .../services/services/GoalsServiceImpl.java     |  28 +--
 .../services/services/ProfileServiceImpl.java   |  27 +--
 .../properties/profiles/basic/firstName.json    |   6 +-
 .../cxs/properties/profiles/basic/gender.json   |   6 +-
 .../cxs/properties/profiles/basic/lastName.json |   6 +-
 .../properties/profiles/basic/nationality.json  |   6 +-
 .../properties/profiles/contact/address.json    |   6 +-
 .../cxs/properties/profiles/contact/city.json   |   6 +-
 .../profiles/contact/countryName.json           |   6 +-
 .../cxs/properties/profiles/contact/email.json  |   6 +-
 .../profiles/contact/phoneNumber.json           |   6 +-
 .../properties/profiles/contact/zipCode.json    |   6 +-
 .../profiles/lead/leadAssignedTo.json           |   6 +-
 .../cxs/properties/profiles/personal/age.json   |   6 +-
 .../properties/profiles/personal/birthDate.json |   6 +-
 .../cxs/properties/profiles/personal/kids.json  |   6 +-
 .../profiles/personal/maritalStatus.json        |   6 +-
 .../properties/profiles/social/facebookId.json  |   6 +-
 .../properties/profiles/social/googleid.json    |   6 +-
 .../properties/profiles/social/linkedInId.json  |   6 +-
 .../properties/profiles/social/twitterId.json   |   6 +-
 .../properties/profiles/system/firstVisit.json  |   6 +-
 .../properties/profiles/system/lastVisit.json   |   6 +-
 .../properties/profiles/system/nbOfVisits.json  |   6 +-
 .../profiles/system/previousVisit.json          |   6 +-
 .../cxs/properties/profiles/work/company.json   |   6 +-
 .../cxs/properties/profiles/work/income.json    |   6 +-
 .../cxs/properties/profiles/work/jobTitle.json  |   6 +-
 .../sessions/geographic/latitude.json           |   6 +-
 .../sessions/geographic/longitude.json          |   6 +-
 .../geographic/sessionAdminSubDiv1.json         |   6 +-
 .../geographic/sessionAdminSubDiv2.json         |   6 +-
 .../sessions/geographic/sessionCity.json        |   6 +-
 .../sessions/geographic/sessionCountryCode.json |   6 +-
 .../sessions/geographic/sessionCountryName.json |   6 +-
 .../sessions/technical/deviceCategory.json      |   6 +-
 .../technical/operatingSystemFamily.json        |   6 +-
 .../sessions/technical/operatingSystemName.json |   6 +-
 .../sessions/technical/pageReferringURL.json    |   6 +-
 .../sessions/technical/remoteAddr.json          |   6 +-
 .../sessions/technical/remoteHost.json          |   6 +-
 .../sessions/technical/userAgentName.json       |   6 +-
 .../sessions/technical/userAgentVersion.json    |   6 +-
 .../resources/META-INF/cxs/tags/aggregated.json |   4 -
 .../META-INF/cxs/tags/autocompleted.json        |   4 -
 .../META-INF/cxs/tags/campaign/campaign.json    |   4 -
 .../cxs/tags/campaign/landingCampaign.json      |   4 -
 .../cxs/tags/campaign/parameterCampaign.json    |   4 -
 .../cxs/tags/campaign/referrerCampaign.json     |   4 -
 .../META-INF/cxs/tags/conditions/condition.json |   4 -
 .../cxs/tags/conditions/eventCondition.json     |   4 -
 .../cxs/tags/conditions/profileCondition.json   |   4 -
 .../cxs/tags/conditions/sessionCondition.json   |   4 -
 .../tags/conditions/sourceEventCondition.json   |   4 -
 .../cxs/tags/conditions/trackedCondition.json   |   4 -
 .../conditions/usableInPastEventCondition.json  |   4 -
 .../META-INF/cxs/tags/demographic.json          |   4 -
 .../main/resources/META-INF/cxs/tags/event.json |   4 -
 .../resources/META-INF/cxs/tags/geographic.json |   4 -
 .../META-INF/cxs/tags/goals/downloadGoal.json   |   4 -
 .../META-INF/cxs/tags/goals/formGoal.json       |   4 -
 .../META-INF/cxs/tags/goals/funnelGoal.json     |   4 -
 .../resources/META-INF/cxs/tags/goals/goal.json |   4 -
 .../cxs/tags/goals/landingPageGoal.json         |   4 -
 .../META-INF/cxs/tags/goals/pageVisitGoal.json  |   4 -
 .../META-INF/cxs/tags/goals/videoGoal.json      |   4 -
 .../resources/META-INF/cxs/tags/logical.json    |   4 -
 .../META-INF/cxs/tags/profileTags.json          |   4 -
 .../profiles/basicProfileProperties.json        |   6 -
 .../profiles/contactProfileProperties.json      |   5 -
 .../profiles/leadProfileProperties.json         |   6 -
 .../profiles/personalProfileProperties.json     |   5 -
 .../properties/profiles/profileProperties.json  |   4 -
 .../profiles/socialProfileProperties.json       |   6 -
 .../profiles/systemProfileProperties.json       |   6 -
 .../profiles/workProfileProperties.json         |   5 -
 .../cxs/tags/properties/properties.json         |   4 -
 .../sessions/geographicSessionProperties.json   |   5 -
 .../properties/sessions/sessionProperties.json  |   4 -
 .../sessions/technicalSessionProperties.json    |   5 -
 .../main/resources/META-INF/cxs/tags/root.json  |   4 -
 .../cxs/tags/rules/formMappingRule.json         |   4 -
 src/site/markdown/versions/1.1/concepts.md      |   4 +-
 src/site/markdown/versions/master/concepts.md   |   4 +-
 141 files changed, 343 insertions(+), 1008 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/api/src/main/java/org/apache/unomi/api/Metadata.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/Metadata.java b/api/src/main/java/org/apache/unomi/api/Metadata.java
index 4c326f4..22216c9 100644
--- a/api/src/main/java/org/apache/unomi/api/Metadata.java
+++ b/api/src/main/java/org/apache/unomi/api/Metadata.java
@@ -145,9 +145,9 @@ public class Metadata implements Comparable<Metadata> {
     }
 
     /**
-     * Retrieves a set of {@link Tag} names associated with this Metadata
+     * Retrieves a set of {@link String} tag names associated with this Metadata
      *
-     * @return a set of {@link Tag} names associated with this Metadata
+     * @return a set of {@link String} tag names associated with this Metadata
      */
     public Set<String> getTags() {
         return tags;
@@ -156,10 +156,10 @@ public class Metadata implements Comparable<Metadata> {
     /**
      * Sets the tags.
      *
-     * @param tagIDs the tag i ds
+     * @param tags the tag i ds
      */
-    public void setTags(Set<String> tagIDs) {
-        this.tags = tagIDs;
+    public void setTags(Set<String> tags) {
+        this.tags = tags;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/api/src/main/java/org/apache/unomi/api/PropertyType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/PropertyType.java b/api/src/main/java/org/apache/unomi/api/PropertyType.java
index 7c5b7c9..01bc934 100644
--- a/api/src/main/java/org/apache/unomi/api/PropertyType.java
+++ b/api/src/main/java/org/apache/unomi/api/PropertyType.java
@@ -46,9 +46,7 @@ public class PropertyType extends MetadataItem {
     private Set<String> automaticMappingsFrom = new HashSet<>();
     private Double rank;
     private String mergeStrategy;
-    @Deprecated
-    private Set<Tag> tags = new TreeSet<Tag>();
-    private Set<String> tagIds = new LinkedHashSet<String>();
+    private Set<String> tags = new LinkedHashSet<>();
     private Boolean multivalued;
     private Boolean protekted;
 
@@ -133,11 +131,8 @@ public class PropertyType extends MetadataItem {
      * Retrieves the tags used by this PropertyType.
      *
      * @return the tags used by this PropertyType
-     * @deprecated will be removed in next major release as tag become an open string
      */
-    @XmlTransient
-    @Deprecated
-    public Set<Tag> getTags() {
+    public Set<String> getTags() {
         return tags;
     }
 
@@ -145,37 +140,12 @@ public class PropertyType extends MetadataItem {
      * Sets the tags used by this PropertyType.
      *
      * @param tags the tags used by this PropertyType
-     * @deprecated will be removed in next major release as tag become an open string
      */
-    @Deprecated
-    public void setTags(Set<Tag> tags) {
+    public void setTags(Set<String> tags) {
         this.tags = tags;
     }
 
     /**
-     * Retrieves the identifiers of the tags used by this PropertyType.
-     *
-     * @return the identifiers of the tags used by this PropertyType
-     * @deprecated will be rename to getTags() in next major release as tag become an open string
-     */
-    @XmlElement(name = "tags")
-    @Deprecated
-    public Set<String> getTagIds() {
-        return tagIds;
-    }
-
-    /**
-     * Sets the identifiers of the tags used by this PropertyType.
-     *
-     * @param tagIds the identifiers of the tags used by this PropertyType
-     * @deprecated will be rename to setTags(Set&lt;String&gt; tags) in next major release as tag become an open string
-     */
-    @Deprecated
-    public void setTagIds(Set<String> tagIds) {
-        this.tagIds = tagIds;
-    }
-
-    /**
      * Retrieves the default value defined for property using this PropertyType.
      *
      * @return the default value defined for property using this PropertyType

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/api/src/main/java/org/apache/unomi/api/Tag.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/Tag.java b/api/src/main/java/org/apache/unomi/api/Tag.java
deleted file mode 100644
index a751336..0000000
--- a/api/src/main/java/org/apache/unomi/api/Tag.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.unomi.api;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * A tag to help categorize entities. A tag can have sub-tags.
- *
- * @deprecated tags will be an open string in next major release
- */
-@Deprecated
-public class Tag implements PluginType, Comparable<Tag> {
-
-    private Set<Tag> subTags = new TreeSet<>();
-    private String id;
-    private String nameKey;
-    private String descriptionKey;
-    private String parentId;
-    private double rank = 0.0;
-    private long pluginId;
-    private boolean hidden = false;
-
-    /**
-     * Instantiates a new Tag.
-     */
-    public Tag() {
-    }
-
-    /**
-     * Instantiates a new Tag.
-     *
-     * @param id             the identifier
-     * @param nameKey        the {@link java.util.ResourceBundle} key used to localize this Tag's name
-     * @param descriptionKey the {@link java.util.ResourceBundle} key used to localize this Tag's description
-     * @param parentId       the identifier of this Tag's parent Tag
-     */
-    public Tag(String id, String nameKey, String descriptionKey, String parentId) {
-        this.id = id;
-        this.nameKey = nameKey;
-        this.descriptionKey = descriptionKey;
-        this.parentId = parentId;
-    }
-
-    /**
-     * Retrieves this Tag's identifier.
-     *
-     * @return the id
-     */
-    public String getId() {
-        return id;
-    }
-
-    /**
-     * Retrieves the {@link java.util.ResourceBundle} key used to localize this Tag's name.
-     *
-     * @return the {@link java.util.ResourceBundle} key used to localize this Tag's name
-     */
-    public String getNameKey() {
-        if (nameKey == null) {
-            nameKey = "tag." + id + ".name";
-        }
-        return nameKey;
-    }
-
-    /**
-     * Retrieves the {@link java.util.ResourceBundle} key used to localize this Tag's description.
-     *
-     * @return the {@link java.util.ResourceBundle} key used to localize this Tag's name
-     */
-    public String getDescriptionKey() {
-        if (descriptionKey == null) {
-            descriptionKey = "tag." + id + ".description";
-        }
-        return descriptionKey;
-    }
-
-    /**
-     * Retrieves the identifier of this Tag's parent Tag.
-     *
-     * @return the identifier of this Tag's parent Tag
-     */
-    @XmlElement(name = "parent")
-    public String getParentId() {
-        return parentId;
-    }
-
-    /**
-     * Retrieves the sub tags.
-     *
-     * @return the sub tags
-     */
-    public Set<Tag> getSubTags() {
-        return subTags;
-    }
-
-    /**
-     * Sets the sub tags.
-     *
-     * @param subTags the sub tags
-     */
-    public void setSubTags(Set<Tag> subTags) {
-        this.subTags = subTags;
-    }
-
-    /**
-     * Retrieves the rank of this PropertyType for ordering purpose.
-     *
-     * @return the rank of this PropertyType for ordering purpose
-     */
-    public double getRank() {
-        return rank;
-    }
-
-    /**
-     * Specifies the rank of this PropertyType for ordering purpose.
-     *
-     * @param rank the rank of this PropertyType for ordering purpose
-     */
-    public void setRank(double rank) {
-        this.rank = rank;
-    }
-
-    /**
-     * Whether this Tag is considered for internal purposes only and should therefore be hidden to accessing UIs.
-     *
-     * @return {@code true} if the Tag needs to be hidden, {@code false} otherwise
-     */
-    public boolean isHidden() {
-        return hidden;
-    }
-
-    /**
-     * Specifies whether this Tag is hidden.
-     *
-     * @param hidden {@code true} if the Tag needs to be hidden, {@code false} otherwise
-     */
-    public void setHidden(boolean hidden) {
-        this.hidden = hidden;
-    }
-
-    @XmlTransient
-    public long getPluginId() {
-        return pluginId;
-    }
-
-    public void setPluginId(long pluginId) {
-        this.pluginId = pluginId;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Tag that = (Tag) o;
-
-        return !(id != null ? !id.equals(that.id) : that.id != null);
-
-    }
-
-    @Override
-    public int hashCode() {
-        int result = id != null ? id.hashCode() : 0;
-        return result;
-    }
-
-    public int compareTo(Tag otherRank) {
-        int rankCompare = Double.compare(rank, otherRank.rank);
-        if (rankCompare != 0) {
-            return rankCompare;
-        }
-        return id.compareTo(otherRank.id);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/api/src/main/java/org/apache/unomi/api/ValueType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/ValueType.java b/api/src/main/java/org/apache/unomi/api/ValueType.java
index faf2a16..d90321d 100644
--- a/api/src/main/java/org/apache/unomi/api/ValueType.java
+++ b/api/src/main/java/org/apache/unomi/api/ValueType.java
@@ -17,12 +17,10 @@
 
 package org.apache.unomi.api;
 
-import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 import java.util.LinkedHashSet;
 import java.util.Set;
-import java.util.TreeSet;
 
 /**
  * A value type to be used to constrain property values.
@@ -34,9 +32,7 @@ public class ValueType implements PluginType {
     private String nameKey;
     private String descriptionKey;
     private long pluginId;
-    @Deprecated
-    private Set<Tag> tags = new TreeSet<>();
-    private Set<String> tagIds = new LinkedHashSet<>();
+    private Set<String> tags = new LinkedHashSet<>();
 
     /**
      * Instantiates a new Value type.
@@ -126,11 +122,8 @@ public class ValueType implements PluginType {
      * Retrieves the tags used by this ValueType.
      *
      * @return the tags used by this ValueType
-     * @deprecated will be removed in next major release as tag become an open string
      */
-    @XmlTransient
-    @Deprecated
-    public Set<Tag> getTags() {
+    public Set<String> getTags() {
         return tags;
     }
 
@@ -138,36 +131,11 @@ public class ValueType implements PluginType {
      * Sets the tags used by this ValueType.
      *
      * @param tags the tags used by this ValueType
-     * @deprecated will be removed in next major release as tag become an open string
      */
-    @Deprecated
-    public void setTags(Set<Tag> tags) {
+    public void setTags(Set<String> tags) {
         this.tags = tags;
     }
 
-    /**
-     * Retrieves the identifiers of the tags used by this ValueType.
-     *
-     * @return the identifiers of the tags used by this ValueType
-     * @deprecated will be rename to getTags() in next major release as tag become an open string
-     */
-    @XmlElement(name = "tags")
-    @Deprecated
-    public Set<String> getTagIds() {
-        return tagIds;
-    }
-
-    /**
-     * Sets the identifiers of the tags used by this ValueType.
-     *
-     * @param tagIds the identifiers of the tags used by this ValueType
-     * @deprecated will be rename to setTags(Set&lt;String&gt; tags) in next major release as tag become an open string
-     */
-    @Deprecated
-    public void setTagIds(Set<String> tagIds) {
-        this.tagIds = tagIds;
-    }
-
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java b/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java
index 500fbd2..655705a 100644
--- a/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java
@@ -19,7 +19,6 @@ package org.apache.unomi.api.services;
 
 import org.apache.unomi.api.PluginType;
 import org.apache.unomi.api.PropertyMergeStrategyType;
-import org.apache.unomi.api.Tag;
 import org.apache.unomi.api.ValueType;
 import org.apache.unomi.api.actions.ActionType;
 import org.apache.unomi.api.conditions.Condition;
@@ -35,42 +34,6 @@ import java.util.Set;
  */
 public interface DefinitionsService {
     /**
-     * Retrieves all known tags.
-     *
-     * @return the set of all known tags
-     * @deprecated will be removed in next major release as tag become an open string
-     */
-    @Deprecated
-    Set<Tag> getAllTags();
-
-    /**
-     * Retrieves the set of all root tags from which all other tags are derived via sub-tags.
-     *
-     * @return the set of all root tags
-     * @deprecated will be removed in next major release as tag become an open string
-     */
-    @Deprecated
-    Set<Tag> getRootTags();
-
-    /**
-     * Retrieves the tag with the specified identifier.
-     *
-     * @param tagId the identifier of the tag to retrieve
-     * @return the tag with the specified identifier
-     * @deprecated will be removed in next major release as tag become an open string
-     */
-    @Deprecated
-    Tag getTag(String tagId);
-
-    /**
-     * Add a new tag to the list of tags
-     * @param tag the tag to add
-     * @deprecated will be removed in next major release as tag become an open string
-     */
-    @Deprecated
-    void addTag(Tag tag);
-
-    /**
      * Retrieves all condition types.
      *
      * @return a Collection of all collection types
@@ -81,17 +44,6 @@ public interface DefinitionsService {
      * Retrieves the set of condition types with the specified tag also retrieving condition types from sub-tags if so specified.
      *
      * @param tag                the tag marking the condition types we want to retrieve
-     * @param includeFromSubtags {@code true} if we want to also include condition types marked by sub-tags of the specified tag
-     * @return the set of condition types with the specified tag (and its sub-tags, if specified)
-     * @deprecated will be replace by {@link #getConditionTypesByTag(String)}
-     */
-    @Deprecated
-    Set<ConditionType> getConditionTypesByTag(Tag tag, boolean includeFromSubtags);
-
-    /**
-     * Retrieves the set of condition types with the specified tag also retrieving condition types from sub-tags if so specified.
-     *
-     * @param tag                the tag marking the condition types we want to retrieve
      * @return the set of condition types with the specified tag (and its sub-tags, if specified)
      */
     Set<ConditionType> getConditionTypesByTag(String tag);
@@ -129,17 +81,6 @@ public interface DefinitionsService {
      * Retrieves the set of action types with the specified tag also retrieving action types from sub-tags if so specified.
      *
      * @param tag                the tag marking the action types we want to retrieve
-     * @param includeFromSubtags {@code true} if we want to also include action types marked by sub-tags of the specified tag
-     * @return the set of action types with the specified tag (and its sub-tags, if specified)
-     * @deprecated will be replace by {@link #getActionTypeByTag(String)}
-     */
-    @Deprecated
-    Set<ActionType> getActionTypeByTag(Tag tag, boolean includeFromSubtags);
-
-    /**
-     * Retrieves the set of action types with the specified tag also retrieving action types from sub-tags if so specified.
-     *
-     * @param tag                the tag marking the action types we want to retrieve
      * @return the set of action types with the specified tag (and its sub-tags, if specified)
      */
     Set<ActionType> getActionTypeByTag(String tag);
@@ -177,17 +118,6 @@ public interface DefinitionsService {
      * Retrieves the set of value types with the specified tag also retrieving value types from sub-tags if so specified.
      *
      * @param tag                the tag marking the value types we want to retrieve
-     * @param includeFromSubtags {@code true} if we want to also include value types marked by sub-tags of the specified tag
-     * @return the set of value types with the specified tag (and its sub-tags, if specified)
-     * @deprecated will be replace by {@link #getValueTypeByTag(String)}
-     */
-    @Deprecated
-    Set<ValueType> getValueTypeByTag(Tag tag, boolean includeFromSubtags);
-
-    /**
-     * Retrieves the set of value types with the specified tag also retrieving value types from sub-tags if so specified.
-     *
-     * @param tag                the tag marking the value types we want to retrieve
      * @return the set of value types with the specified tag (and its sub-tags, if specified)
      */
     Set<ValueType> getValueTypeByTag(String tag);
@@ -232,11 +162,11 @@ public interface DefinitionsService {
      * TODO: remove from API and move to a different class?
      * TODO: purpose and behavior not clear
      *
-     * @param rootCondition root condition
-     * @param tagId tag to extract
-     * @return condition
+     * @param rootCondition
+     * @param tag
+     * @return
      */
-    Condition extractConditionByTag(Condition rootCondition, String tagId);
+    Condition extractConditionByTag(Condition rootCondition, String tag);
 
     /**
      * Resolves (if possible) the {@link ConditionType}s for the specified condition and its sub-conditions (if any) from the type identifiers existing on the specified condition

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
index b544e88..c6daab8 100644
--- a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
@@ -261,19 +261,6 @@ public interface ProfileService {
      * TODO: move to a different class
      *
      * @param tag                the tag name marking property types we want to retrieve
-     * @param includeFromSubtags {@code true} if sub-tags of the specified tag should also be considered, {@code false} otherwise
-     * @return a Set of the property types with the specified tag
-     * @deprecated will be replace by {@link #getPropertyTypeByTag(String)} in next major release
-     */
-    @Deprecated
-    Set<PropertyType> getPropertyTypeByTag(String tag, boolean includeFromSubtags);
-
-    /**
-     * Retrieves all property types with the specified tag also retrieving property types with sub-tags of the specified tag if so specified.
-     *
-     * TODO: move to a different class
-     *
-     * @param tag                the tag name marking property types we want to retrieve
      * @return a Set of the property types with the specified tag
      */
     Set<PropertyType> getPropertyTypeByTag(String tag);
@@ -327,11 +314,11 @@ public interface ProfileService {
      *
      * TODO: move to a different class
      *
-     * @param tagId    the tag we're interested in
+     * @param tag      the tag we're interested in
      * @param itemType the String representation of the item type we want to retrieve the count of, as defined by its class' {@code ITEM_TYPE} field
      * @return all property types defined for the specified item type and with the specified tag
      */
-    Set<PropertyType> getExistingProperties(String tagId, String itemType);
+    Set<PropertyType> getExistingProperties(String tag, String itemType);
 
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json b/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json
index 7c7e096..ec4a531 100644
--- a/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json
+++ b/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json
@@ -4,6 +4,7 @@
     "name": "addToListsAction",
     "description": "",
     "tags": [
+      "profileTags",
       "demographic",
       "hidden.availableToEndUser"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json b/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json
index 55c7da3..f5b9bf5 100644
--- a/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json
+++ b/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json
@@ -4,6 +4,7 @@
     "name": "sfdcCreateOrUpdateLeadAction",
     "description": "",
     "tags": [
+      "profileTags",
       "demographic",
       "hidden.availableToEndUser"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json b/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json
index 598edb7..f53501f 100644
--- a/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json
+++ b/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json
@@ -4,6 +4,7 @@
     "name": "sfdcUpdateProfileFromLeadAction",
     "description": "",
     "tags": [
+      "profileTags",
       "demographic",
       "hidden.availableToEndUser"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/performance-tests/src/test/scala/unomi/AdminScenario.scala
----------------------------------------------------------------------
diff --git a/performance-tests/src/test/scala/unomi/AdminScenario.scala b/performance-tests/src/test/scala/unomi/AdminScenario.scala
index f71540c..74be4d0 100644
--- a/performance-tests/src/test/scala/unomi/AdminScenario.scala
+++ b/performance-tests/src/test/scala/unomi/AdminScenario.scala
@@ -105,7 +105,7 @@ object AdminScenario {
       .headers(adminHeaders)
       .check(jsonPath("$..id").find.is("profileTags")))
 
-    .exec(http("Existing profile properties").get("/cxs/profiles/existingProperties?tagId=profileProperties&itemType=profile")
+    .exec(http("Existing profile properties").get("/cxs/profiles/existingProperties?tag=profileProperties&itemType=profile")
       .headers(adminHeaders)
       .check(jsonPath("$..itemId").find.exists))
       

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json
index adb62e6..869a287 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json
@@ -4,6 +4,7 @@
     "name": "allEventToProfilePropertiesAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json
index 553f021..0ed9ebd 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json
@@ -4,6 +4,7 @@
     "name": "evaluateProfileAgeAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json
index e5a86e2..188f547 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json
@@ -4,6 +4,7 @@
     "name": "evaluateProfileSegmentsAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json
index 5539e1d..a3a045d 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json
@@ -4,6 +4,7 @@
     "name": "eventToProfilePropertyAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json
index 62d3719..77d9969 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json
@@ -4,6 +4,7 @@
     "name": "mergeProfilesOnPropertyAction",
     "description": "",
     "tags": [
+      "profileTags",
       "demographic"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json
index ef8535c..d7a8d09 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json
@@ -4,6 +4,7 @@
     "name": "sendEventAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json
index 9a48874..4bd77bb 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json
@@ -4,6 +4,7 @@
     "name": "setEventOccurenceCountAction",
     "description": "",
     "tags": [
+      "profileTags",
       "demographic"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json
index 53c1b64..25cf616 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json
@@ -4,6 +4,7 @@
     "name": "setPropertyAction",
     "description": "",
     "tags": [
+      "profileTags",
       "demographic",
       "hidden.availableToEndUser",
       "hidden.allowMultipleInstances"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json
index ba3b806..a12a0dd 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json
@@ -4,7 +4,9 @@
     "name": "booleanCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "logical",
+      "condition",
       "profileCondition",
       "eventCondition",
       "sessionCondition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json
index 6c3ef41..45482cc 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json
@@ -4,7 +4,9 @@
     "name": "eventPropertyCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "demographic",
+      "condition",
       "eventCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json
index 0715f7a..0a104e4 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json
@@ -4,7 +4,9 @@
     "name": "eventTypeCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "eventCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json
index e375267..b1e4fff 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json
@@ -4,7 +4,9 @@
     "name": "formEventCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "eventCondition",
       "usableInPastEventCondition",
       "trackedCondition"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
index 4c77df3..cdc340d 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
@@ -4,7 +4,9 @@
     "name": "geoLocationByPointSessionCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "geographic",
+      "condition",
       "sessionCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json
index 4468079..c3206ae 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json
@@ -4,7 +4,9 @@
     "name": "geoLocationSessionCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "geographic",
+      "condition",
       "sessionCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json
index 417f01d..8d9743b 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json
@@ -4,7 +4,9 @@
     "name": "goalMatchCondition",
     "description": "",
     "tags": [
+      "condition",
       "profileCondition",
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json
index c10446e..b866e48 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json
@@ -4,7 +4,9 @@
     "name": "matchAllCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "logical",
+      "condition",
       "profileCondition",
       "eventCondition",
       "sessionCondition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json
index 6bdb2f6..c90ce4f 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json
@@ -4,7 +4,9 @@
     "name": "newVisitorCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "sessionCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json
index 4776d4d..3ab26b3 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json
@@ -4,7 +4,9 @@
     "name": "notCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "logical",
+      "condition",
       "profileCondition",
       "eventCondition",
       "sessionCondition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json
index a0e280e..52c9d5e 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json
@@ -4,7 +4,9 @@
     "name": "pastEventCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "profileCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json
index abaabd5..06ae965 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json
@@ -4,7 +4,9 @@
     "name": "profilePropertyCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "demographic",
+      "condition",
       "profileCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json
index 40235e0..b1a40e1 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json
@@ -4,7 +4,9 @@
     "name": "profileSegmentCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "aggregated",
+      "condition",
       "profileCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json
index b2efa0b..7910a13 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json
@@ -4,7 +4,9 @@
     "name": "profileUpdatedEventCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "eventCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json
index 221f5f9..4891a5a 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json
@@ -4,7 +4,9 @@
     "name": "profileUserListCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "aggregated",
+      "condition",
       "profileCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json
index 2ecf315..165ee4a 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json
@@ -4,7 +4,9 @@
     "name": "returningVisitorCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "sessionCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json
index 6ef37fc..89c176f 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json
@@ -4,7 +4,9 @@
     "name": "scoringCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "aggregated",
+      "condition",
       "profileCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json
index 25f1818..fb43b88 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json
@@ -4,7 +4,9 @@
     "name": "sessionCreatedEventCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "eventCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json
index f55b85c..47b214b 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json
@@ -4,7 +4,9 @@
     "name": "sessionDurationCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "sessionCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json
index 3c3328a..c613839 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json
@@ -4,7 +4,9 @@
     "name": "sessionPropertyCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "sessionCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
index d977dbc..1aaf934 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
@@ -4,6 +4,7 @@
     "name": "sourceEventPropertyCondition",
     "description": "",
     "tags": [
+      "condition",
       "sourceEventCondition"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json
index cc74144..8efc923 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json
@@ -4,7 +4,9 @@
     "name": "videoViewEventCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "eventCondition",
       "usableInPastEventCondition",
       "trackedCondition"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json b/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json
index 711eb61..a205b9c 100644
--- a/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json
+++ b/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json
@@ -4,7 +4,9 @@
     "name": "hoverEventCondition",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
+      "condition",
       "eventCondition",
       "usableInPastEventCondition"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json
----------------------------------------------------------------------
diff --git a/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json b/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json
index ffe346a..fd3c8e9 100644
--- a/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json
+++ b/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json
@@ -4,6 +4,7 @@
     "name": "sendMailAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event",
       "hidden.availableToEndUser",
       "hidden.allowMultipleInstances"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json b/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json
index fbe702f..3bd5d81 100644
--- a/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json
+++ b/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json
@@ -4,6 +4,7 @@
     "name": "requestHeaderToProfilePropertyAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json b/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json
index b7eba57..0288056 100644
--- a/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json
+++ b/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json
@@ -4,6 +4,7 @@
     "name": "requestParameterToProfilePropertyAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json
----------------------------------------------------------------------
diff --git a/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json b/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json
index 803b2e5..09935f5 100644
--- a/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json
+++ b/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json
@@ -4,6 +4,7 @@
     "name": "setRemoteHostInfoAction",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
index 4337ccd..2fd415a 100644
--- a/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
@@ -20,7 +20,6 @@ package org.apache.unomi.rest;
 import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
 import org.apache.unomi.api.PluginType;
 import org.apache.unomi.api.PropertyMergeStrategyType;
-import org.apache.unomi.api.Tag;
 import org.apache.unomi.api.ValueType;
 import org.apache.unomi.api.actions.ActionType;
 import org.apache.unomi.api.conditions.ConditionType;
@@ -60,66 +59,6 @@ public class DefinitionsServiceEndPoint {
     }
 
     /**
-     * Retrieves all known tags localized using the specified language.
-     *
-     * @param language the language to use to localize
-     * @return the set of all known tags
-     * @deprecated will be removed in next major release as tag become an open string
-     */
-    @GET
-    @Path("/tags")
-    @Deprecated
-    public Collection<RESTTag> getAllTags(@HeaderParam("Accept-Language") String language) {
-        return localizationHelper.generateTags(definitionsService.getAllTags(), language);
-    }
-
-    /**
-     * Retrieves the set of all root tags from which all other tags are derived via sub-tags localized using the specified language.
-     *
-     * @param language the language to use to localize.
-     * @return the set of all root tags
-     * @deprecated will be removed in next major release as tag become an open string
-     */
-    @GET
-    @Path("/rootTags")
-    @Deprecated
-    public Collection<RESTTag> getRootTags(@HeaderParam("Accept-Language") String language) {
-        return localizationHelper.generateTags(definitionsService.getRootTags(), language);
-    }
-
-    /**
-     * Retrieves the tag with the specified identifier localized using the specified language.
-     *
-     * @param language     the language to use to localize.
-     * @param tagId          the identifier of the tag to retrieve
-     * @param filterHidden {@code true} if hidden sub-tags should be filtered out, {@code false} otherwise
-     * @return the tag with the specified identifier
-     * @deprecated will be removed in next major release as tag become an open string
-     */
-    @GET
-    @Path("/tags/{tagId}")
-    @Deprecated
-    public RESTTag getTag(@PathParam("tagId") String tagId, @QueryParam("filterHidden") @DefaultValue("false") boolean filterHidden, @HeaderParam("Accept-Language") String language) {
-        Tag tag = definitionsService.getTag(tagId);
-        if (tag == null) {
-            throw new NotFoundException(new NoSuchElementException(tagId)); // return 404 when tag is not found
-        }
-        return localizationHelper.generateTag(tag, language, filterHidden);
-    }
-
-    /**
-     * Add a new tag to the list of tags
-     * @param tag the tag to add
-     * @deprecated will be removed in next major release as tag become an open string
-     */
-    @POST
-    @Path("/tags")
-    @Deprecated
-    public void addTag(Tag tag) {
-        definitionsService.addTag(tag);
-    }
-
-    /**
      * Retrieves all condition types localized using the specified language.
      *
      * @param language the language to use to localize.
@@ -137,19 +76,15 @@ public class DefinitionsServiceEndPoint {
      *
      * @param language  the language to use to localize.
      * @param tags      a comma-separated list of tag identifiers
-     * @param recursive {@code true} if we want to also include condition types marked by sub-tags of the specified tag
      * @return the set of condition types with the specified tag (and its sub-tags, if specified)
      */
     @GET
-    @Path("/conditions/tags/{tagId}")
-    public Collection<RESTConditionType> getConditionTypesByTag(@PathParam("tagId") String tags, @Deprecated @QueryParam("recursive") @DefaultValue("false") boolean recursive, @HeaderParam("Accept-Language") String language) {
+    @Path("/conditions/tags/{tags}")
+    public Collection<RESTConditionType> getConditionTypesByTag(@PathParam("tags") String tags, @HeaderParam("Accept-Language") String language) {
         String[] tagsArray = tags.split(",");
         Set<ConditionType> results = new LinkedHashSet<>();
-        for (String s : tagsArray) {
-            Tag tag = definitionsService.getTag(s);
-            if (tag != null) {
-                results.addAll(definitionsService.getConditionTypesByTag(tag, recursive));
-            }
+        for (String tag : tagsArray) {
+            results.addAll(definitionsService.getConditionTypesByTag(tag));
         }
         return localizationHelper.generateConditions(results, language);
     }
@@ -208,19 +143,15 @@ public class DefinitionsServiceEndPoint {
      *
      * @param language  the language to use to localize.
      * @param tags      the tag marking the action types we want to retrieve
-     * @param recursive {@code true} if we want to also include action types marked by sub-tags of the specified tag
      * @return the set of action types with the specified tag (and its sub-tags, if specified)
      */
     @GET
-    @Path("/actions/tags/{tagId}")
-    public Collection<RESTActionType> getActionTypeByTag(@PathParam("tagId") String tags, @Deprecated @QueryParam("recursive") @DefaultValue("false") boolean recursive, @HeaderParam("Accept-Language") String language) {
+    @Path("/actions/tags/{tags}")
+    public Collection<RESTActionType> getActionTypeByTag(@PathParam("tags") String tags, @HeaderParam("Accept-Language") String language) {
         String[] tagsArray = tags.split(",");
         Set<ActionType> results = new LinkedHashSet<>();
-        for (String s : tagsArray) {
-            Tag tag = definitionsService.getTag(s);
-            if (tag != null) {
-                results.addAll(definitionsService.getActionTypeByTag(tag, recursive));
-            }
+        for (String tag : tagsArray) {
+            results.addAll(definitionsService.getActionTypeByTag(tag));
         }
         return localizationHelper.generateActions(results, language);
     }
@@ -278,19 +209,15 @@ public class DefinitionsServiceEndPoint {
      *
      * @param language  the language to use to localize.
      * @param tags      the tag marking the value types we want to retrieve
-     * @param recursive {@code true} if we want to also include value types marked by sub-tags of the specified tag
      * @return the set of value types with the specified tag (and its sub-tags, if specified)
      */
     @GET
-    @Path("/values/tags/{tagId}")
-    public Collection<RESTValueType> getValueTypeByTag(@PathParam("tagId") String tags, @Deprecated @QueryParam("recursive") @DefaultValue("false") boolean recursive, @HeaderParam("Accept-Language") String language) {
+    @Path("/values/tags/{tags}")
+    public Collection<RESTValueType> getValueTypeByTag(@PathParam("tags") String tags, @HeaderParam("Accept-Language") String language) {
         String[] tagsArray = tags.split(",");
         Set<ValueType> results = new LinkedHashSet<>();
-        for (String s : tagsArray) {
-            Tag tag = definitionsService.getTag(s);
-            if (tag != null) {
-                results.addAll(definitionsService.getValueTypeByTag(tag, recursive));
-            }
+        for (String tag : tagsArray) {
+            results.addAll(definitionsService.getValueTypeByTag(tag));
         }
         return localizationHelper.generateValueTypes(results, language);
     }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java b/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
index bed42e8..1899f2a 100644
--- a/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
+++ b/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
@@ -18,7 +18,6 @@
 package org.apache.unomi.rest;
 
 import org.apache.unomi.api.Parameter;
-import org.apache.unomi.api.Tag;
 import org.apache.unomi.api.ValueType;
 import org.apache.unomi.api.actions.ActionType;
 import org.apache.unomi.api.conditions.ConditionType;
@@ -173,69 +172,7 @@ public class LocalizationHelper {
         ResourceBundle bundle = resourceBundleHelper.getResourceBundle(valueType, language);
         result.setName(resourceBundleHelper.getResourceBundleValue(bundle, valueType.getNameKey()));
         result.setDescription(resourceBundleHelper.getResourceBundleValue(bundle, valueType.getDescriptionKey()));
-        result.setTags(generateTags(valueType.getTags(), language));
-        return result;
-    }
-
-    /**
-     * Same as generateTages(tags, language, false).
-     * @param tags the tag
-     * @param language the language
-     * @return list of tags
-     */
-    public Collection<RESTTag> generateTags(Collection<Tag> tags, String language) {
-        return generateTags(tags, language, false);
-    }
-
-    /**
-     * Creates {@link RESTTag}s, localized using the specified language, based on the specified {@link Tag}s.
-     *
-     * @param tags         the {@link Tag}s to be localized
-     * @param language     the language to use to localize {@link Tag}s
-     * @param filterHidden {@code true} to filter out hidden tags, {@code false} otherwise
-     * @return a collection of {@link RESTTag}s based on the specified {@link Tag}s and localized using the specified language
-     */
-    public Collection<RESTTag> generateTags(Collection<Tag> tags, String language, boolean filterHidden) {
-        List<RESTTag> result = new ArrayList<RESTTag>();
-        for (Tag tag : tags) {
-            RESTTag subTag = generateTag(tag, language, filterHidden);
-            if (subTag != null) {
-                result.add(subTag);
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Same as generateTag(tag, language, false).
-     * @param tag the tag
-     * @param language the language
-     * @return tag
-     */
-    public RESTTag generateTag(Tag tag, String language) {
-        return generateTag(tag, language, false);
-    }
-
-    /**
-     * Creates a {@link RESTTag}, localized using the specified language, based on the specified {@link Tag}.
-     *
-     * @param tag          the {@link Tag} to be localized
-     * @param language     the language to use to localize the {@link Tag}
-     * @param filterHidden {@code true} to filter out hidden sub-tags, {@code false} otherwise
-     * @return a {@link RESTTag} based on the specified {@link Tag} and localized using the specified language
-     */
-    public RESTTag generateTag(Tag tag, String language, boolean filterHidden) {
-        if (tag == null || (filterHidden && tag.isHidden())) {
-            return null;
-        }
-        RESTTag result = new RESTTag();
-        result.setId(tag.getId());
-        ResourceBundle bundle = resourceBundleHelper.getResourceBundle(tag, language);
-        result.setName(resourceBundleHelper.getResourceBundleValue(bundle, tag.getNameKey()));
-        result.setDescription(resourceBundleHelper.getResourceBundleValue(bundle, tag.getDescriptionKey()));
-        result.setParentId(tag.getParentId());
-        result.setRank(tag.getRank());
-        result.setSubTags(generateTags(tag.getSubTags(), language, filterHidden));
+        result.setTags(valueType.getTags());
         return result;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
index 9b5ce74..e7c35ce 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
@@ -443,15 +443,15 @@ public class ProfileServiceEndPoint {
      *
      * TODO: move to a different class
      *
-     * @param tagId    the tag we're interested in
+     * @param tag      the tag we're interested in
      * @param itemType the String representation of the item type we want to retrieve the count of, as defined by its class' {@code ITEM_TYPE} field
      * @param language the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
      * @return all property types defined for the specified item type and with the specified tag
      */
     @GET
     @Path("/existingProperties")
-    public Collection<PropertyType> getExistingProperties(@QueryParam("tagId") String tagId, @QueryParam("itemType") String itemType, @HeaderParam("Accept-Language") String language) {
-        Set<PropertyType> properties = profileService.getExistingProperties(tagId, itemType);
+    public Collection<PropertyType> getExistingProperties(@QueryParam("tag") String tag, @QueryParam("itemType") String itemType, @HeaderParam("Accept-Language") String language) {
+        Set<PropertyType> properties = profileService.getExistingProperties(tag, itemType);
         return properties;
     }
 
@@ -509,17 +509,16 @@ public class ProfileServiceEndPoint {
      * TODO: passing a list of tags via a comma-separated list is not very RESTful
      *
      * @param tags      a comma-separated list of tag identifiers
-     * @param recursive {@code true} if sub-tags of the specified tag should also be considered, {@code false} otherwise
      * @param language  the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
      * @return a Set of the property types with the specified tag
      */
     @GET
-    @Path("/properties/tags/{tagId}")
-    public Collection<PropertyType> getPropertyTypeByTag(@PathParam("tagId") String tags, @Deprecated @QueryParam("recursive") @DefaultValue("false") boolean recursive, @HeaderParam("Accept-Language") String language) {
+    @Path("/properties/tags/{tags}")
+    public Collection<PropertyType> getPropertyTypeByTag(@PathParam("tags") String tags, @HeaderParam("Accept-Language") String language) {
         String[] tagsArray = tags.split(",");
         Set<PropertyType> results = new LinkedHashSet<>();
-        for (String s : tagsArray) {
-            results.addAll(profileService.getPropertyTypeByTag(s, recursive));
+        for (String tag : tagsArray) {
+            results.addAll(profileService.getPropertyTypeByTag(tag));
         }
         return results;
     }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java b/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
index 5e73a0f..b135adc 100644
--- a/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
+++ b/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
@@ -19,8 +19,8 @@ package org.apache.unomi.rest;
 
 import org.apache.unomi.api.actions.ActionType;
 
-import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 
 /**
  * A representation of an {@link ActionType} better suited for definitions.
@@ -29,7 +29,7 @@ public class RESTActionType {
     private String id;
     private String name;
     private String description;
-    private Collection<String> tags;
+    private Set<String> tags;
     private List<RESTParameter> parameters;
 
     public String getId() {
@@ -56,11 +56,11 @@ public class RESTActionType {
         this.description = description;
     }
 
-    public Collection<String> getTags() {
+    public Set<String> getTags() {
         return tags;
     }
 
-    public void setTags(Collection<String> tags) {
+    public void setTags(Set<String> tags) {
         this.tags = tags;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java b/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
index e37156f..6ffce83 100644
--- a/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
+++ b/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
@@ -19,10 +19,7 @@ package org.apache.unomi.rest;
 
 import org.apache.unomi.api.conditions.ConditionType;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.TreeSet;
+import java.util.*;
 
 /**
  * A representation of a {@link ConditionType} better suited for definitions.
@@ -31,7 +28,7 @@ public class RESTConditionType {
     private String id;
     private String name;
     private String description;
-    private Collection<String> tags = new TreeSet<String>();
+    private Set<String> tags = new LinkedHashSet<>();
     private List<RESTParameter> parameters = new ArrayList<RESTParameter>();
 
     public RESTConditionType() {
@@ -61,11 +58,11 @@ public class RESTConditionType {
         this.description = description;
     }
 
-    public Collection<String> getTags() {
+    public Set<String> getTags() {
         return tags;
     }
 
-    public void setTags(Collection<String> tags) {
+    public void setTags(Set<String> tags) {
         this.tags = tags;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/rest/src/main/java/org/apache/unomi/rest/RESTTag.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/RESTTag.java b/rest/src/main/java/org/apache/unomi/rest/RESTTag.java
deleted file mode 100644
index da1c394..0000000
--- a/rest/src/main/java/org/apache/unomi/rest/RESTTag.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.unomi.rest;
-
-import org.apache.unomi.api.Tag;
-
-import java.util.Collection;
-import java.util.TreeSet;
-
-/**
- * A representation of a {@link Tag} better suited for definitions.
- *
- * @deprecated tags will be an open string in next major release
- */
-@Deprecated
-public class RESTTag {
-    private String id;
-    private String name;
-    private String description;
-    private String parentId;
-    private double rank = 0.0;
-    private Collection<RESTTag> subTags = new TreeSet<RESTTag>();
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getParentId() {
-        return parentId;
-    }
-
-    public void setParentId(String parentId) {
-        this.parentId = parentId;
-    }
-
-    public double getRank() {
-        return rank;
-    }
-
-    public void setRank(double rank) {
-        this.rank = rank;
-    }
-
-    public Collection<RESTTag> getSubTags() {
-        return subTags;
-    }
-
-    public void setSubTags(Collection<RESTTag> subTags) {
-        this.subTags = subTags;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/rest/src/main/java/org/apache/unomi/rest/RESTValueType.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/RESTValueType.java b/rest/src/main/java/org/apache/unomi/rest/RESTValueType.java
index 95edadf..3891a35 100644
--- a/rest/src/main/java/org/apache/unomi/rest/RESTValueType.java
+++ b/rest/src/main/java/org/apache/unomi/rest/RESTValueType.java
@@ -19,7 +19,7 @@ package org.apache.unomi.rest;
 
 import org.apache.unomi.api.ValueType;
 
-import java.util.Collection;
+import java.util.Set;
 
 /**
  * A representation of a {@link ValueType} better suited for definitions.
@@ -29,7 +29,7 @@ public class RESTValueType {
     private String id;
     private String name;
     private String description;
-    private Collection<RESTTag> tags;
+    private Set<String> tags;
 
     public RESTValueType() {
     }
@@ -58,11 +58,11 @@ public class RESTValueType {
         this.description = description;
     }
 
-    public Collection<RESTTag> getTags() {
+    public Set<String> getTags() {
         return tags;
     }
 
-    public void setTags(Collection<RESTTag> tags) {
+    public void setTags(Set<String> tags) {
         this.tags = tags;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/samples/trainingplugin/src/main/java/org/apache/unomi/training/TrainedNotificationAction.java
----------------------------------------------------------------------
diff --git a/samples/trainingplugin/src/main/java/org/apache/unomi/training/TrainedNotificationAction.java b/samples/trainingplugin/src/main/java/org/apache/unomi/training/TrainedNotificationAction.java
index 7f64cbd..d9493b0 100644
--- a/samples/trainingplugin/src/main/java/org/apache/unomi/training/TrainedNotificationAction.java
+++ b/samples/trainingplugin/src/main/java/org/apache/unomi/training/TrainedNotificationAction.java
@@ -50,7 +50,7 @@ public class TrainedNotificationAction implements ActionExecutor {
             // create trained flag property type
             PropertyType propertyType = new PropertyType(new Metadata(event.getScope(), TRAINED_NB_PROPERTY, TRAINED_NB_PROPERTY, "Am I trained"));
             propertyType.setValueTypeId("boolean");
-            propertyType.setTagIds(Collections.singleton("training"));
+            propertyType.setTags(Collections.singleton("training"));
             propertyType.setTarget(TARGET);
             service.setPropertyType(propertyType);
         }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json
----------------------------------------------------------------------
diff --git a/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json b/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json
index 2ac9763..a14a343 100644
--- a/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json
+++ b/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json
@@ -4,6 +4,7 @@
     "name": "Training Action",
     "description": "",
     "tags": [
+      "profileTags",
       "event"
     ],
     "readOnly": true

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/ebfd560d/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java b/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
index c459519..d291f09 100644
--- a/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
+++ b/samples/tweet-button-plugin/src/main/java/org/apache/unomi/samples/tweet_button_plugin/actions/IncrementTweetNumberAction.java
@@ -45,14 +45,14 @@ public class IncrementTweetNumberAction implements ActionExecutor {
             // create tweet number property type
             PropertyType propertyType = new PropertyType(new Metadata(event.getScope(), TWEET_NB_PROPERTY, TWEET_NB_PROPERTY, "Number of times a user tweeted"));
             propertyType.setValueTypeId("integer");
-            propertyType.setTagIds(Collections.singleton("social"));
+            propertyType.setTags(Collections.singleton("social"));
             propertyType.setTarget(TARGET);
             service.setPropertyType(propertyType);
 
             // create tweeted from property type
             propertyType = new PropertyType(new Metadata(event.getScope(), TWEETED_FROM_PROPERTY, TWEETED_FROM_PROPERTY, "The list of pages a user tweeted from"));
             propertyType.setValueTypeId("string");
-            propertyType.setTagIds(Collections.singleton("social"));
+            propertyType.setTags(Collections.singleton("social"));
             propertyType.setTarget(TARGET);
             propertyType.setMultivalued(true);
             service.setPropertyType(propertyType);



[11/15] incubator-unomi git commit: UNOMI-117 fix issue with version not present in some object

Posted by dg...@apache.org.
UNOMI-117 fix issue with version not present in some object


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/003f8e9c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/003f8e9c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/003f8e9c

Branch: refs/heads/master
Commit: 003f8e9c866b7fb3301ba95a1329b525938ff4ad
Parents: 6a4a7e6
Author: dgaillard <dg...@jahia.com>
Authored: Sat Sep 30 11:19:50 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Sat Sep 30 11:19:50 2017 +0200

----------------------------------------------------------------------
 .../apache/unomi/services/services/DefinitionsServiceImpl.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/003f8e9c/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
index 7c4252e..583cbc5 100644
--- a/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
@@ -239,7 +239,7 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
             return null;
         }
         ConditionType type = conditionTypeById.get(id);
-        if (type == null) {
+        if (type == null || type.getVersion() == null) {
             type = persistenceService.load(id, ConditionType.class);
             conditionTypeById.put(id, type);
         }
@@ -281,7 +281,7 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
 
     public ActionType getActionType(String id) {
         ActionType type = actionTypeById.get(id);
-        if (type == null) {
+        if (type == null || type.getVersion() == null) {
             type = persistenceService.load(id, ActionType.class);
             actionTypeById.put(id, type);
         }


[12/15] incubator-unomi git commit: UNOMI-117 apply changes after review from @shuber

Posted by dg...@apache.org.
UNOMI-117 apply changes after review from @shuber


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/f479d8f5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/f479d8f5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/f479d8f5

Branch: refs/heads/master
Commit: f479d8f5db528357db2dd0151b7fd4a98e3fd6ff
Parents: 003f8e9
Author: dgaillard <dg...@jahia.com>
Authored: Thu Oct 5 16:54:08 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Thu Oct 5 16:54:08 2017 +0200

----------------------------------------------------------------------
 .../src/test/scala/unomi/AdminScenario.scala    |  8 +-
 .../elasticsearch/ESCustomObjectMapper.java     |  1 +
 .../persistence/elasticsearch/ESItemMixIn.java  |  1 +
 .../apache/unomi/shell/migration/Migration.java | 16 ++++
 .../shell/migration/impl/MigrationTo130.java    | 90 ++++++++++----------
 .../shell/services/UnomiManagementService.java  |  9 ++
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  4 +-
 7 files changed, 78 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/performance-tests/src/test/scala/unomi/AdminScenario.scala
----------------------------------------------------------------------
diff --git a/performance-tests/src/test/scala/unomi/AdminScenario.scala b/performance-tests/src/test/scala/unomi/AdminScenario.scala
index 74be4d0..1139ab7 100644
--- a/performance-tests/src/test/scala/unomi/AdminScenario.scala
+++ b/performance-tests/src/test/scala/unomi/AdminScenario.scala
@@ -101,19 +101,19 @@ object AdminScenario {
 
   // view the engaged users for the picked campaign ID
   val campaignEngaged = feed(requestsFeed)
-    .exec(http("Profile tags").get("/cxs/definitions/tags/profileTags")
+    .exec(http("Profile system tags").get("/cxs/definitions/systemTags/profileTags")
       .headers(adminHeaders)
       .check(jsonPath("$..id").find.is("profileTags")))
 
-    .exec(http("Existing profile properties").get("/cxs/profiles/existingProperties?tag=profileProperties&itemType=profile")
+    .exec(http("Existing profile properties").get("/cxs/profiles/existingProperties?tag=profileProperties&itemType=profile&isSystemTag=true")
       .headers(adminHeaders)
       .check(jsonPath("$..itemId").find.exists))
       
-    .exec(http("Profile conditions").get("/cxs/definitions/conditions/tags/profileCondition")
+    .exec(http("Profile conditions").get("/cxs/definitions/conditions/systemTags/profileCondition")
       .headers(adminHeaders)
       .check(jsonPath("$..id").find.is("booleanCondition")))
     
-    .exec(http("Profile conditions").get("/cxs/definitions/conditions/tags/usableInPastEventCondition")
+    .exec(http("Profile conditions").get("/cxs/definitions/conditions/systemTags/usableInPastEventCondition")
       .headers(adminHeaders)
       .check(jsonPath("$..id").find.exists))
     

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
index 119d1b2..66e0e89 100644
--- a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
+++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
@@ -21,6 +21,7 @@ import org.apache.unomi.api.Item;
 import org.apache.unomi.persistence.spi.CustomObjectMapper;
 
 /**
+ * This CustomObjectMapper is used to avoid the version parameter to be registered in ES
  * @author dgaillard
  */
 public class ESCustomObjectMapper extends CustomObjectMapper {

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
index 40ea3c3..c20d8ef 100644
--- a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
+++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
@@ -19,6 +19,7 @@ package org.apache.unomi.persistence.elasticsearch;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
 /**
+ * This mixin is used in ESCustomObjectMapper to avoid the version parameter to be registered in ES
  * @author dgaillard
  */
 public abstract class ESItemMixIn {

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
index 08fb797..50307cb 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
@@ -23,12 +23,28 @@ import org.osgi.framework.Version;
 import java.io.IOException;
 
 /**
+ * This interface must be implemented if you create a new migration class
  * @author dgaillard
  */
 public interface Migration {
+    /**
+     * This method return the minimal version before applying this migration
+     * TODO: not used for now
+     * @return return the version
+     */
     Version getFromVersion();
 
+    /**
+     * This method return the target version after migration
+     * @return the target version
+     */
     Version getToVersion();
 
+    /**
+     * This method is called to execute the migration
+     * @param session       CommandSession
+     * @param httpClient    CloseableHttpClient
+     * @throws IOException
+     */
     void execute(CommandSession session, CloseableHttpClient httpClient) throws IOException;
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
index a2cf255..bb252f6 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
@@ -36,7 +36,7 @@ public class MigrationTo130 implements Migration {
 
     private CloseableHttpClient httpClient;
     private CommandSession session;
-    private LinkedHashMap<String, List<String>> tagsStructurePriorTo200;
+    private LinkedHashMap<String, List<String>> tagsStructurePriorTo130;
 
     @Override
     public Version getFromVersion() {
@@ -63,7 +63,7 @@ public class MigrationTo130 implements Migration {
     }
 
     private void migrateTags() throws IOException {
-        initTagsStructurePriorTo200();
+        initTagsStructurePriorTo130();
         String hostAddress = ConsoleUtils.askUserWithDefaultAnswer(session, "Host address (default = http://localhost:9200): ", "http://localhost:9200");
         String tagsOperation = ConsoleUtils.askUserWithAuthorizedAnswer(session, "How to manage tags?\nno change: will keep tags in tags property\ncopy: will duplicate tags in systemTags property\nmove: will move tags in systemTags property\n(default/copy/move): ", Arrays.asList("no change", "copy", "move"));
 
@@ -138,8 +138,8 @@ public class MigrationTo130 implements Migration {
                 }
 
                 for (String tag : tagsBeforeMigration) {
-                    if (tagsStructurePriorTo200.containsKey(tag)) {
-                        tagsAfterMigration.addAll(tagsStructurePriorTo200.get(tag));
+                    if (tagsStructurePriorTo130.containsKey(tag)) {
+                        tagsAfterMigration.addAll(tagsStructurePriorTo130.get(tag));
                     }
                     tagsAfterMigration.add(tag);
                 }
@@ -185,46 +185,46 @@ public class MigrationTo130 implements Migration {
         return tags;
     }
 
-    private void initTagsStructurePriorTo200() {
-        tagsStructurePriorTo200 = new LinkedHashMap<>();
-        tagsStructurePriorTo200.put("landing", Collections.singletonList("campaign"));
-        tagsStructurePriorTo200.put("parameter", Collections.singletonList("campaign"));
-        tagsStructurePriorTo200.put("referrer", Collections.singletonList("campaign"));
-
-        tagsStructurePriorTo200.put("eventCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("profileCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("sessionCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("sourceEventCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("trackedCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("usableInPastEventCondition", Collections.singletonList("condition"));
-
-        tagsStructurePriorTo200.put("formMappingRule", Collections.<String>emptyList());
-
-        tagsStructurePriorTo200.put("downloadGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("formGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("funnelGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("landingPageGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("pageVisitGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("videoGoal", Collections.singletonList("goal"));
-
-        tagsStructurePriorTo200.put("aggregated", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("autocompleted", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("demographic", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("event", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("geographic", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("logical", Collections.singletonList("profileTags"));
-
-        tagsStructurePriorTo200.put("profileProperties", Collections.singletonList("properties"));
-        tagsStructurePriorTo200.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
-
-        tagsStructurePriorTo200.put("sessionProperties", Collections.singletonList("properties"));
-        tagsStructurePriorTo200.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
-        tagsStructurePriorTo200.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
+    private void initTagsStructurePriorTo130() {
+        tagsStructurePriorTo130 = new LinkedHashMap<>();
+        tagsStructurePriorTo130.put("landing", Collections.singletonList("campaign"));
+        tagsStructurePriorTo130.put("parameter", Collections.singletonList("campaign"));
+        tagsStructurePriorTo130.put("referrer", Collections.singletonList("campaign"));
+
+        tagsStructurePriorTo130.put("eventCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo130.put("profileCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo130.put("sessionCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo130.put("sourceEventCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo130.put("trackedCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo130.put("usableInPastEventCondition", Collections.singletonList("condition"));
+
+        tagsStructurePriorTo130.put("formMappingRule", Collections.<String>emptyList());
+
+        tagsStructurePriorTo130.put("downloadGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo130.put("formGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo130.put("funnelGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo130.put("landingPageGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo130.put("pageVisitGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo130.put("videoGoal", Collections.singletonList("goal"));
+
+        tagsStructurePriorTo130.put("aggregated", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo130.put("autocompleted", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo130.put("demographic", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo130.put("event", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo130.put("geographic", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo130.put("logical", Collections.singletonList("profileTags"));
+
+        tagsStructurePriorTo130.put("profileProperties", Collections.singletonList("properties"));
+        tagsStructurePriorTo130.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo130.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo130.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo130.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo130.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo130.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo130.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
+
+        tagsStructurePriorTo130.put("sessionProperties", Collections.singletonList("properties"));
+        tagsStructurePriorTo130.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
+        tagsStructurePriorTo130.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
index e77f4b9..f4070c0 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
@@ -19,11 +19,20 @@ package org.apache.unomi.shell.services;
 import org.osgi.framework.BundleException;
 
 /**
+ * This service provide method to manage unomi
  * @author dgaillard
  */
 public interface UnomiManagementService {
 
+    /**
+     * This method will start Apache Unomi
+     * @throws BundleException
+     */
     void startUnomi() throws BundleException;
 
+    /**
+     * This method will stop Apache Unomi
+     * @throws BundleException
+     */
     void stopUnomi() throws BundleException;
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/f479d8f5/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 7b31650..65f91f4 100644
--- a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -21,7 +21,7 @@
            xmlns:shell="http://karaf.apache.org/xmlns/shell/v1.1.0"
            xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
 
-    <bean id="migrateTo200" class="org.apache.unomi.shell.migration.impl.MigrationTo130"/>
+    <bean id="migrateTo130" class="org.apache.unomi.shell.migration.impl.MigrationTo130"/>
 
     <shell:command-bundle>
         <shell:command>
@@ -29,7 +29,7 @@
                 <shell:property name="migrations">
                     <list>
                         <!-- Migration beans must be executed in the right order so you must place new bean at the end of this list -->
-                        <ref component-id="migrateTo200"/>
+                        <ref component-id="migrateTo130"/>
                     </list>
                 </shell:property>
             </shell:action>


[02/15] incubator-unomi git commit: UNOMI-117 improve shell commands, add a start and stop command, change behavior of Unomi by default it's not starting automatically on a fresh install unless you add the property unomi.autoStart=true to your setenv.sh

Posted by dg...@apache.org.
UNOMI-117 improve shell commands, add a start and stop command, change behavior of Unomi by default it's not starting automatically on a fresh install unless you add the property unomi.autoStart=true to your setenv.sh


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/eb8f07b8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/eb8f07b8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/eb8f07b8

Branch: refs/heads/master
Commit: eb8f07b80fa861aba6bd0d862ee9db7bf17130dc
Parents: f010031
Author: dgaillard <dg...@jahia.com>
Authored: Fri Sep 15 17:55:46 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Thu Sep 28 10:49:15 2017 +0200

----------------------------------------------------------------------
 .../src/main/feature/feature.xml                |  42 ++++
 kar/src/main/feature/feature.xml                |  33 ++--
 .../org/apache/unomi/shell/actions/Migrate.java |  67 -------
 .../org/apache/unomi/shell/actions/Start.java   |  37 ++++
 .../org/apache/unomi/shell/actions/Stop.java    |  37 ++++
 .../apache/unomi/shell/migration/Migration.java |  34 ++++
 .../unomi/shell/migration/actions/Migrate.java  |  81 ++++++++
 .../shell/migration/impl/MigrationTo200.java    | 194 +++++++++++++++++++
 .../shell/migration/utils/ConsoleUtils.java     |  82 ++++++++
 .../unomi/shell/migration/utils/HttpUtils.java  | 163 ++++++++++++++++
 .../shell/migration/utils/MigrationUtils.java   |  47 +++++
 .../migrations/AbstractMigrationResource.java   |  81 --------
 .../unomi/shell/migrations/MigrationTo200.java  | 130 -------------
 .../shell/services/UnomiManagementService.java  |  29 +++
 .../internal/UnomiManagementServiceImpl.java    |  88 +++++++++
 .../apache/unomi/shell/utils/ConsoleUtils.java  |  82 --------
 .../org/apache/unomi/shell/utils/HttpUtils.java | 155 ---------------
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  69 ++++++-
 18 files changed, 915 insertions(+), 536 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/extensions/router/router-karaf-feature/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-karaf-feature/src/main/feature/feature.xml b/extensions/router/router-karaf-feature/src/main/feature/feature.xml
new file mode 100644
index 0000000..0d9e122
--- /dev/null
+++ b/extensions/router/router-karaf-feature/src/main/feature/feature.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  ~ 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.
+  -->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.1" name="unomi-router-karaf-feature">
+    <feature name="unomi-router-karaf-feature" version="${project.version}" description="Apache Unomi :: Extensions :: Router :: Apache Karaf Feature">
+        <details>Apache Karaf feature for the Apache Unomi Context Server extension</details>
+        <feature>unomi-kar</feature>
+        <bundle start-level="90">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/0.1.54_1</bundle>
+        <bundle start-level="90">mvn:commons-net/commons-net/3.5</bundle>
+        <bundle start-level="90">wrap:mvn:org.apache.kafka/kafka-clients/0.10.1.0</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-core/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-core-osgi/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-blueprint/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-jackson/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-http-common/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-servlet/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-ftp/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-stream/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.camel/camel-kafka/2.19.1</bundle>
+        <bundle start-level="90">mvn:org.apache.cxf/cxf-rt-rs-security-cors/3.0.2</bundle>
+        <bundle start-level="90" start="false">mvn:org.apache.unomi/unomi-router-api/${project.version}</bundle>
+        <bundle start-level="90" start="false">mvn:org.apache.unomi/unomi-router-core/${project.version}</bundle>
+        <bundle start-level="90" start="false">mvn:org.apache.unomi/unomi-router-service/${project.version}</bundle>
+        <bundle start-level="90" start="false">mvn:org.apache.unomi/unomi-router-rest/${project.version}</bundle>
+        <bundle start-level="90">mvn:org.apache.httpcomponents/httpclient-osgi/4.3.6</bundle>
+        <bundle start-level="90">mvn:org.apache.httpcomponents/httpcore-osgi/4.3.3</bundle>
+    </feature>
+</features>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/kar/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/kar/src/main/feature/feature.xml b/kar/src/main/feature/feature.xml
index e541135..bb672b4 100644
--- a/kar/src/main/feature/feature.xml
+++ b/kar/src/main/feature/feature.xml
@@ -32,7 +32,6 @@
         <configfile finalname="/etc/hazelcast.xml">mvn:org.apache.unomi/unomi-services/${project.version}/xml/hazelcastconfig</configfile>
         <configfile finalname="/etc/org.apache.unomi.privacy.cfg">mvn:org.apache.unomi/cxs-privacy-extension-services/${project.version}/cfg/privacycfg</configfile>
         <configfile finalname="/etc/org.apache.unomi.geonames.cfg">mvn:org.apache.unomi/cxs-geonames-services/${project.version}/cfg/geonamescfg</configfile>
-        <bundle start-level="70">mvn:org.apache.unomi/unomi-lifecycle-watcher/${project.version}</bundle>
         <bundle start-level="75">mvn:commons-io/commons-io/2.4</bundle>
         <bundle start-level="75">mvn:com.fasterxml.jackson.core/jackson-core/${version.jackson.core}</bundle>
         <bundle start-level="75">mvn:com.fasterxml.jackson.core/jackson-databind/${version.jackson.core}</bundle>
@@ -42,16 +41,26 @@
         <bundle start-level="75">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${version.jackson.core}</bundle>
         <bundle start-level="75">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jakarta-regexp/1.4_1</bundle>
         <bundle start-level="75">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.joda-time/2.3_1</bundle>
-        <bundle start-level="75">mvn:org.apache.unomi/unomi-api/${project.version}</bundle>
-        <bundle start-level="75">mvn:org.apache.unomi/unomi-persistence-spi/${project.version}</bundle>
-        <bundle start-level="76">mvn:org.apache.unomi/unomi-persistence-elasticsearch-core/${project.version}</bundle>
-        <bundle start-level="77">mvn:org.apache.unomi/unomi-services/${project.version}</bundle>
-        <bundle start-level="77">mvn:org.apache.unomi/cxs-lists-extension-services/${project.version}</bundle>
-        <bundle start-level="77">mvn:org.apache.unomi/cxs-lists-extension-rest/${project.version}</bundle>
-        <bundle start-level="77">mvn:org.apache.unomi/cxs-geonames-services/${project.version}</bundle>
-        <bundle start-level="77">mvn:org.apache.unomi/cxs-geonames-rest/${project.version}</bundle>
-        <bundle start-level="77">mvn:org.apache.unomi/cxs-privacy-extension-services/${project.version}</bundle>
-        <bundle start-level="77">mvn:org.apache.unomi/cxs-privacy-extension-rest/${project.version}</bundle>
-        <bundle start-level="78">mvn:org.apache.unomi/unomi-rest/${project.version}</bundle>
+
+        <bundle start-level="70" start="false">mvn:org.apache.unomi/unomi-lifecycle-watcher/${project.version}</bundle>
+        <bundle start-level="75" start="false">mvn:org.apache.unomi/unomi-api/${project.version}</bundle>
+        <bundle start-level="75" start="false">mvn:org.apache.unomi/unomi-persistence-spi/${project.version}</bundle>
+        <bundle start-level="76" start="false">mvn:org.apache.unomi/unomi-persistence-elasticsearch-core/${project.version}</bundle>
+        <bundle start-level="77" start="false">mvn:org.apache.unomi/unomi-services/${project.version}</bundle>
+        <bundle start-level="77" start="false">mvn:org.apache.unomi/cxs-lists-extension-services/${project.version}</bundle>
+        <bundle start-level="77" start="false">mvn:org.apache.unomi/cxs-lists-extension-rest/${project.version}</bundle>
+        <bundle start-level="77" start="false">mvn:org.apache.unomi/cxs-geonames-services/${project.version}</bundle>
+        <bundle start-level="77" start="false">mvn:org.apache.unomi/cxs-geonames-rest/${project.version}</bundle>
+        <bundle start-level="77" start="false">mvn:org.apache.unomi/cxs-privacy-extension-services/${project.version}</bundle>
+        <bundle start-level="77" start="false">mvn:org.apache.unomi/cxs-privacy-extension-rest/${project.version}</bundle>
+        <bundle start-level="78" start="false">mvn:org.apache.unomi/unomi-rest/${project.version}</bundle>
+        <bundle start-level="85" start="false">mvn:org.apache.unomi/unomi-wab/${project.version}</bundle>
+        <bundle start-level="85" start="false">mvn:org.apache.unomi/unomi-plugins-base/${project.version}</bundle>
+        <bundle start-level="85" start="false">mvn:org.apache.unomi/unomi-plugins-request/${project.version}</bundle>
+        <bundle start-level="85" start="false">mvn:org.apache.unomi/unomi-plugins-mail/${project.version}</bundle>
+        <bundle start-level="85" start="false">mvn:org.apache.unomi/unomi-plugins-optimization-test/${project.version}</bundle>
+        <bundle start-level="85" start="false">mvn:org.apache.unomi/cxs-lists-extension-actions/${project.version}</bundle>
+
+        <bundle start-level="99">mvn:org.apache.unomi/shell-commands/${project.version}</bundle>
     </feature>
 </features>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Migrate.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Migrate.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Migrate.java
deleted file mode 100644
index f24a884..0000000
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Migrate.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.
- */
-package org.apache.unomi.shell.actions;
-
-import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.unomi.shell.migrations.MigrationTo200;
-import org.apache.unomi.shell.utils.ConsoleUtils;
-import org.osgi.framework.Version;
-
-import java.util.*;
-
-@Command(scope = "unomi", name = "migrate", description = "This will Migrate your date in ES to be compliant with current version")
-public class Migrate extends OsgiCommandSupport {
-
-    @Argument(name = "fromVersionWithoutSuffix", description = "Origin version without suffix/qualifier (e.g: 1.2.0)", required = true, multiValued = false, valueToShowInHelp = "1.2.0")
-    private String fromVersionWithoutSuffix;
-
-    protected Object doExecute() throws Exception {
-        String confirmation = ConsoleUtils.askUserWithAuthorizedAnswer(session,"[WARNING] You are about to execute a migration, this a very sensitive operation, are you sure? (yes/no): ", Arrays.asList("yes", "no"));
-        if (confirmation.equalsIgnoreCase("no")) {
-            System.out.println("Migration process aborted");
-            return null;
-        }
-
-        System.out.println("Starting migration process from version: " + fromVersionWithoutSuffix);
-
-        Version fromVersion = new Version(fromVersionWithoutSuffix);
-        Version currentVersion = getCurrentVersionWithoutQualifier();
-        System.out.println("current version: " + currentVersion.toString());
-        if (currentVersion.compareTo(fromVersion) <= 0) {
-            System.out.println("From version is same or superior than current version, nothing to migrate.");
-            return null;
-        }
-
-        if (fromVersion.compareTo(new Version("2.0.0")) < 0) {
-            System.out.println("Starting migration to version 2.0.0");
-
-            MigrationTo200 migrationTo200 = new MigrationTo200(session);
-            migrationTo200.execute();
-
-            System.out.println("Migration to version 2.0.0 done successfully");
-        }
-
-        return null;
-    }
-
-    private Version getCurrentVersionWithoutQualifier() {
-        Version currentVersion = bundleContext.getBundle().getVersion();
-        return new Version(currentVersion.getMajor() + "." + currentVersion.getMinor() + "." + currentVersion.getMicro());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Start.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Start.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Start.java
new file mode 100644
index 0000000..8f7530e
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Start.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.actions;
+
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.unomi.shell.services.UnomiManagementService;
+
+@Command(scope = "unomi", name = "start", description = "This will start Apache Unomi")
+public class Start extends OsgiCommandSupport {
+
+    private UnomiManagementService unomiManagementService;
+
+    protected Object doExecute() throws Exception {
+        unomiManagementService.startUnomi();
+
+        return null;
+    }
+
+    public void setUnomiManagementService(UnomiManagementService unomiManagementService) {
+        this.unomiManagementService = unomiManagementService;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Stop.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Stop.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Stop.java
new file mode 100644
index 0000000..d612cdc
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/actions/Stop.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.actions;
+
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.unomi.shell.services.UnomiManagementService;
+
+@Command(scope = "unomi", name = "stop", description = "This will stop Apache Unomi")
+public class Stop extends OsgiCommandSupport {
+
+    private UnomiManagementService unomiManagementService;
+
+    protected Object doExecute() throws Exception {
+        unomiManagementService.stopUnomi();
+
+        return null;
+    }
+
+    public void setUnomiManagementService(UnomiManagementService unomiManagementService) {
+        this.unomiManagementService = unomiManagementService;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
new file mode 100644
index 0000000..08fb797
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/Migration.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migration;
+
+import org.apache.felix.service.command.CommandSession;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.osgi.framework.Version;
+
+import java.io.IOException;
+
+/**
+ * @author dgaillard
+ */
+public interface Migration {
+    Version getFromVersion();
+
+    Version getToVersion();
+
+    void execute(CommandSession session, CloseableHttpClient httpClient) throws IOException;
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
new file mode 100644
index 0000000..45d6471
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migration.actions;
+
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Argument;
+import org.apache.unomi.shell.migration.Migration;
+import org.apache.unomi.shell.migration.utils.ConsoleUtils;
+import org.apache.unomi.shell.migration.utils.HttpUtils;
+import org.osgi.framework.Version;
+
+import java.util.*;
+
+@Command(scope = "unomi", name = "migrate", description = "This will Migrate your date in ES to be compliant with current version")
+public class Migrate extends OsgiCommandSupport {
+
+    private List<Migration> migrations;
+
+    @Argument(name = "fromVersionWithoutSuffix", description = "Origin version without suffix/qualifier (e.g: 1.2.0)", required = true, multiValued = false, valueToShowInHelp = "1.2.0")
+    private String fromVersionWithoutSuffix;
+
+    protected Object doExecute() throws Exception {
+        String confirmation = ConsoleUtils.askUserWithAuthorizedAnswer(session,"[WARNING] You are about to execute a migration, this a very sensitive operation, are you sure? (yes/no): ", Arrays.asList("yes", "no"));
+        if (confirmation.equalsIgnoreCase("no")) {
+            System.out.println("Migration process aborted");
+            return null;
+        }
+
+        System.out.println("Starting migration process from version: " + fromVersionWithoutSuffix);
+
+        Version fromVersion = new Version(fromVersionWithoutSuffix);
+        Version currentVersion = getCurrentVersionWithoutQualifier();
+        System.out.println("current version: " + currentVersion.toString());
+        if (currentVersion.compareTo(fromVersion) <= 0) {
+            System.out.println("From version is same or superior than current version, nothing to migrate.");
+            return null;
+        }
+
+        CloseableHttpClient httpClient = HttpUtils.initHttpClient(session);
+
+        for (Migration migration : migrations) {
+            if (fromVersion.compareTo(migration.getToVersion()) < 0) {
+                System.out.println("Starting migration to version " + migration.getToVersion());
+                migration.execute(session, httpClient);
+
+                System.out.println("Migration to version 2.0.0 done successfully");
+            }
+        }
+
+        if (httpClient != null) {
+            httpClient.close();
+        }
+
+        return null;
+    }
+
+    private Version getCurrentVersionWithoutQualifier() {
+        Version currentVersion = bundleContext.getBundle().getVersion();
+        return new Version(currentVersion.getMajor() + "." + currentVersion.getMinor() + "." + currentVersion.getMicro());
+    }
+
+    public void setMigrations(List<Migration> migrations) {
+        this.migrations = migrations;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo200.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo200.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo200.java
new file mode 100644
index 0000000..99e2fb2
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo200.java
@@ -0,0 +1,194 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migration.impl;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.felix.service.command.CommandSession;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.unomi.shell.migration.Migration;
+import org.apache.unomi.shell.migration.utils.ConsoleUtils;
+import org.apache.unomi.shell.migration.utils.MigrationUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.osgi.framework.Version;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @author dgaillard
+ */
+public class MigrationTo200 implements Migration {
+
+    private CloseableHttpClient httpClient;
+    private CommandSession session;
+    private LinkedHashMap<String, List<String>> tagsStructurePriorTo200;
+
+    @Override
+    public Version getFromVersion() {
+        return null;
+    }
+
+    @Override
+    public Version getToVersion() {
+        return new Version("2.0.0");
+    }
+
+    @Override
+    public void execute(CommandSession session, CloseableHttpClient httpClient) throws IOException {
+        try {
+            this.httpClient = httpClient;
+            this.session = session;
+            migrateTags();
+        } catch (IOException e) {
+            if (httpClient != null) {
+                httpClient.close();
+            }
+            throw e;
+        }
+    }
+
+    private void migrateTags() throws IOException {
+        initTagsStructurePriorTo200();
+        String hostAddress = ConsoleUtils.askUserWithDefaultAnswer(session, "Host address (default = http://localhost:9200): ", "http://localhost:9200");
+
+        List<String> typeToMigrate = Arrays.asList("actionType", "conditionType", "campaign", "goal", "rule", "scoring", "segment", "userList");
+        for (String type : typeToMigrate) {
+            migrateTypeTags(hostAddress, type);
+        }
+
+        migratePropertyTypesTags(hostAddress);
+    }
+
+    private void migrateTypeTags(String hostAddress, String type) throws IOException {
+        JSONObject responseJSON = MigrationUtils.queryWithScroll(httpClient, hostAddress + "/context/" + type + "/_search");
+
+        migrateTagsInResult(responseJSON, hostAddress, type,10, true);
+    }
+
+    private void migratePropertyTypesTags(String hostAddress) throws IOException {
+        JSONObject responseJSON = MigrationUtils.queryWithScroll(httpClient,hostAddress + "/context/propertyType/_search");
+
+        migrateTagsInResult(responseJSON, hostAddress, "propertyType", 10, false);
+    }
+
+    private void migrateTagsInResult(JSONObject responseJSON, String hostAddress, String type, int currentOffset, boolean tagsInMetadata) throws IOException {
+        if (responseJSON.has("hits")) {
+            JSONObject hitsObject = responseJSON.getJSONObject("hits");
+            if (hitsObject.has("hits")) {
+                JSONArray hits = hitsObject.getJSONArray("hits");
+
+                StringBuilder updatedHits = new StringBuilder();
+                Iterator<Object> hitsIterator = hits.iterator();
+                while (hitsIterator.hasNext()) {
+                    JSONObject hit = (JSONObject) hitsIterator.next();
+                    if (hit.has("_source")) {
+                        JSONObject hitSource = hit.getJSONObject("_source");
+                        if (tagsInMetadata && hitSource.has("metadata")) {
+                            JSONObject hitMetadata = hitSource.getJSONObject("metadata");
+                            updateTagsForHit(updatedHits, hit.getString("_id"), hitMetadata, tagsInMetadata);
+                        } else if (!tagsInMetadata) {
+                            updateTagsForHit(updatedHits, hit.getString("_id"), hitSource, tagsInMetadata);
+                        }
+                    }
+                }
+                String jsonData = updatedHits.toString();
+                if (StringUtils.isNotBlank(jsonData)) {
+                    MigrationUtils.bulkUpdate(httpClient, hostAddress + "/context/" + type + "/_bulk", jsonData);
+                }
+
+                if (hitsObject.getInt("total") > currentOffset) {
+                    migrateTagsInResult(MigrationUtils.continueQueryWithScroll(httpClient, hostAddress, responseJSON.getString("_scroll_id")), hostAddress, type,currentOffset + 10, tagsInMetadata);
+                }
+            }
+        }
+    }
+
+    private void updateTagsForHit(StringBuilder updatedHits, String hitId, JSONObject jsonObject, boolean tagsInMetadata) {
+        if (jsonObject.has("tags")) {
+            JSONArray hitTags = jsonObject.getJSONArray("tags");
+            Iterator<Object> tagsIterator = hitTags.iterator();
+            List<String> tagsBeforeMigration = new ArrayList<>();
+            List<String> tagsAfterMigration = new ArrayList<>();
+            if (tagsIterator.hasNext()) {
+                while (tagsIterator.hasNext()) {
+                    tagsBeforeMigration.add((String) tagsIterator.next());
+                }
+
+                for (String tag : tagsBeforeMigration) {
+                    if (tagsStructurePriorTo200.containsKey(tag) && !tagsAfterMigration.containsAll(tagsStructurePriorTo200.get(tag))) {
+                        tagsAfterMigration.addAll(tagsStructurePriorTo200.get(tag));
+                    }
+
+                    if (!tagsAfterMigration.contains(tag)) {
+                        tagsAfterMigration.add(tag);
+                    }
+                }
+
+                updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
+                updatedHits.append("{\"doc\":{\"metadata\":{\"tags\":").append(new JSONArray(tagsAfterMigration)).append("}}}\n");
+                if (!tagsInMetadata) {
+                    updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
+                    updatedHits.append("{\"script\":\"ctx._source.remove(\\\"tags\\\")\"}\n");
+                }
+            }
+        }
+    }
+
+    private void initTagsStructurePriorTo200() {
+        tagsStructurePriorTo200 = new LinkedHashMap<>();
+        tagsStructurePriorTo200.put("landing", Collections.singletonList("campaign"));
+        tagsStructurePriorTo200.put("parameter", Collections.singletonList("campaign"));
+        tagsStructurePriorTo200.put("referrer", Collections.singletonList("campaign"));
+
+        tagsStructurePriorTo200.put("eventCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("profileCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("sessionCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("sourceEventCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("trackedCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("usableInPastEventCondition", Collections.singletonList("condition"));
+
+        tagsStructurePriorTo200.put("formMappingRule", Collections.<String>emptyList());
+
+        tagsStructurePriorTo200.put("downloadGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("formGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("funnelGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("landingPageGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("pageVisitGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("videoGoal", Collections.singletonList("goal"));
+
+        tagsStructurePriorTo200.put("aggregated", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("autocompleted", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("demographic", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("event", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("geographic", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("logical", Collections.singletonList("profileTags"));
+
+        tagsStructurePriorTo200.put("profileProperties", Collections.singletonList("properties"));
+        tagsStructurePriorTo200.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
+
+        tagsStructurePriorTo200.put("sessionProperties", Collections.singletonList("properties"));
+        tagsStructurePriorTo200.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
+        tagsStructurePriorTo200.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/ConsoleUtils.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/ConsoleUtils.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/ConsoleUtils.java
new file mode 100644
index 0000000..e8fdc83
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/ConsoleUtils.java
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migration.utils;
+
+import jline.console.ConsoleReader;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.felix.service.command.CommandSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author dgaillard
+ */
+public class ConsoleUtils {
+    private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
+
+    /**
+     * This will ask a question to the user and return the default answer if the user does not answer.
+     *
+     * @param session           CommandSession
+     * @param msg               String message to ask
+     * @param defaultAnswer     String default answer
+     * @return the user answer
+     * @throws IOException
+     */
+    public static String askUserWithDefaultAnswer(CommandSession session, String msg, String defaultAnswer) throws IOException {
+        String answer = promptMessageToUser(session, msg);
+        if (StringUtils.isBlank(answer)) {
+            return defaultAnswer;
+        }
+        return answer;
+    }
+
+    /**
+     * This method allow you to ask a question to the user.
+     * The answer is controlled before being return so the question will be ask until the user enter one the authorized answer
+     *
+     * @param session           CommandSession
+     * @param msg               String message to ask
+     * @param authorizedAnswer  Array of possible answer, all answer must be in lower case
+     * @return the user answer
+     * @throws IOException
+     */
+    public static String askUserWithAuthorizedAnswer(CommandSession session, String msg, List<String> authorizedAnswer) throws IOException {
+        String answer;
+        do {
+            answer = promptMessageToUser(session,msg);
+        } while (!authorizedAnswer.contains(answer.toLowerCase()));
+        return answer;
+    }
+
+    /**
+     * This method allow you to prompt a message to the user.
+     * No control is done on the answer provided by the user.
+     *
+     * @param session   CommandSession
+     * @param msg       String message to prompt
+     * @return the user answer
+     * @throws IOException
+     */
+    public static String promptMessageToUser(CommandSession session, String msg) throws IOException {
+        ConsoleReader reader = (ConsoleReader) session.get(".jline.reader");
+        return reader.readLine(msg, null);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/HttpUtils.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/HttpUtils.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/HttpUtils.java
new file mode 100644
index 0000000..2f16c83
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/HttpUtils.java
@@ -0,0 +1,163 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migration.utils;
+
+import org.apache.felix.service.command.CommandSession;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.*;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.entity.BufferedHttpEntity;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.IOException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import java.util.Arrays;
+import java.util.Map;
+
+/**
+ * @author dgaillard
+ */
+public class HttpUtils {
+    private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
+
+    public static CloseableHttpClient initHttpClient(CommandSession session) throws IOException {
+        String confirmation = ConsoleUtils.askUserWithAuthorizedAnswer(session,"We need to initialize a HttpClient, do we need to trust all certificates? (yes/no): ", Arrays.asList("yes", "no"));
+        boolean trustAllCertificates = confirmation.equalsIgnoreCase("yes");
+
+        long requestStartTime = System.currentTimeMillis();
+
+        HttpClientBuilder httpClientBuilder = HttpClients.custom().useSystemProperties();
+
+        if (trustAllCertificates) {
+            try {
+                SSLContext sslContext = SSLContext.getInstance("SSL");
+                sslContext.init(null, new TrustManager[]{new X509TrustManager() {
+                    public X509Certificate[] getAcceptedIssuers() {
+                        return null;
+                    }
+
+                    public void checkClientTrusted(X509Certificate[] certs,
+                                                   String authType) {
+                    }
+
+                    public void checkServerTrusted(X509Certificate[] certs,
+                                                   String authType) {
+                    }
+                }}, new SecureRandom());
+
+                Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
+                        .register("http", PlainConnectionSocketFactory.getSocketFactory())
+                        .register("https", new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER))
+                        .build();
+
+                httpClientBuilder.setHostnameVerifier(SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
+                        .setConnectionManager(new PoolingHttpClientConnectionManager(socketFactoryRegistry));
+
+            } catch (NoSuchAlgorithmException | KeyManagementException e) {
+                logger.error("Error creating SSL Context", e);
+            }
+        } else {
+            httpClientBuilder.setConnectionManager(new PoolingHttpClientConnectionManager());
+        }
+
+        RequestConfig requestConfig = RequestConfig.custom().build();
+        httpClientBuilder.setDefaultRequestConfig(requestConfig);
+
+        if (logger.isDebugEnabled()) {
+            long totalRequestTime = System.currentTimeMillis() - requestStartTime;
+            logger.debug("Init HttpClient executed in " + totalRequestTime + "ms");
+        }
+
+        return httpClientBuilder.build();
+    }
+
+    public static String executeGetRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers) throws IOException {
+        HttpGet httpGet = new HttpGet(url);
+        httpGet.addHeader("accept", "application/json");
+
+        return getResponse(httpClient, url, headers, httpGet);
+    }
+
+    public static String executeDeleteRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers) throws IOException {
+        HttpDelete httpDelete = new HttpDelete(url);
+        httpDelete.addHeader("accept", "application/json");
+
+        return getResponse(httpClient, url, headers, httpDelete);
+    }
+
+    public static String executePostRequest(CloseableHttpClient httpClient, String url, String jsonData, Map<String, String> headers) throws IOException {
+        HttpPost httpPost = new HttpPost(url);
+        httpPost.addHeader("accept", "application/json");
+
+        if (jsonData != null) {
+            StringEntity input = new StringEntity(jsonData);
+            input.setContentType("application/json");
+            httpPost.setEntity(input);
+        }
+
+        return getResponse(httpClient, url, headers, httpPost);
+    }
+
+    private static String getResponse(CloseableHttpClient httpClient, String url, Map<String, String> headers, HttpRequestBase httpRequestBase) throws IOException {
+        long requestStartTime = System.currentTimeMillis();
+        if (headers != null) {
+            for (Map.Entry<String, String> entry : headers.entrySet()) {
+                httpRequestBase.setHeader(entry.getKey(), entry.getValue());
+            }
+        }
+
+        CloseableHttpResponse response = httpClient.execute(httpRequestBase);
+        final int statusCode = response.getStatusLine().getStatusCode();
+        if (statusCode >= 400) {
+            throw new IOException("Couldn't execute " + httpRequestBase + " response: " + EntityUtils.toString(response.getEntity()));
+        }
+
+        HttpEntity entity = response.getEntity();
+        if (logger.isDebugEnabled()) {
+            if (entity !=null) {
+                entity = new BufferedHttpEntity(response.getEntity());
+            }
+            logger.debug("POST request " + httpRequestBase + " executed with code: " + statusCode + " and message: " + (entity!=null?EntityUtils.toString(entity):null));
+
+            long totalRequestTime = System.currentTimeMillis() - requestStartTime;
+            logger.debug("Request to Apache Unomi url: " + url + " executed in " + totalRequestTime + "ms");
+        }
+
+        String stringResponse = EntityUtils.toString(entity);
+        EntityUtils.consumeQuietly(entity);
+
+        return stringResponse;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/MigrationUtils.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/MigrationUtils.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/MigrationUtils.java
new file mode 100644
index 0000000..ccc67f2
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/utils/MigrationUtils.java
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migration.utils;
+
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+/**
+ * @author dgaillard
+ */
+public class MigrationUtils {
+    private static final Logger logger = LoggerFactory.getLogger(MigrationUtils.class);
+
+    public static JSONObject queryWithScroll(CloseableHttpClient httpClient, String url) throws IOException {
+        url += "?scroll=1m";
+
+        return new JSONObject(HttpUtils.executeGetRequest(httpClient, url, null));
+    }
+
+    public static JSONObject continueQueryWithScroll(CloseableHttpClient httpClient, String url, String scrollId) throws IOException {
+        url += "/_search/scroll?scroll=1m&scroll_id=" + scrollId;
+
+        return new JSONObject(HttpUtils.executeGetRequest(httpClient, url, null));
+    }
+
+    public static void bulkUpdate(CloseableHttpClient httpClient, String url, String jsonData) throws IOException {
+        HttpUtils.executePostRequest(httpClient, url, jsonData, null);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/AbstractMigrationResource.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/AbstractMigrationResource.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/AbstractMigrationResource.java
deleted file mode 100644
index 37171a0..0000000
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/AbstractMigrationResource.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.
- */
-package org.apache.unomi.shell.migrations;
-
-import org.apache.felix.service.command.CommandSession;
-import org.apache.http.HttpEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.util.EntityUtils;
-import org.apache.unomi.shell.utils.ConsoleUtils;
-import org.apache.unomi.shell.utils.HttpUtils;
-import org.json.JSONArray;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.util.*;
-
-/**
- * @author dgaillard
- */
-public abstract class AbstractMigrationResource {
-    protected CloseableHttpClient httpClient;
-    protected CommandSession session;
-
-    protected AbstractMigrationResource(CommandSession session) throws IOException {
-        this.session = session;
-    }
-
-    protected void initHttpClient() throws IOException {
-        if (httpClient == null) {
-            String confirmation = ConsoleUtils.askUserWithAuthorizedAnswer(session,"We need to initialize a HttpClient, do we need to trust all certificates? (yes/no):", Arrays.asList("yes", "no"));
-            httpClient = HttpUtils.initHttpClient(confirmation.equalsIgnoreCase("yes"));
-        }
-    }
-
-    protected void closeHttpClient() throws IOException {
-        if (httpClient != null) {
-            httpClient.close();
-        }
-    }
-
-    protected List<JSONArray> getDataToMigrate(String url, int offset, int size) throws IOException {
-        String jsonData = "{\"query\":{\"bool\":{\"should\":[{\"match_all\":{}}]}},\"from\":" + offset + ",\"size\":" + size + "}";
-
-        HttpEntity entity = HttpUtils.executePostRequest(httpClient, url, jsonData, null);
-        JSONObject responseJSON = new JSONObject(EntityUtils.toString(entity));
-        EntityUtils.consumeQuietly(entity);
-
-        List<JSONArray> totalHits = new ArrayList<>();
-        if (responseJSON.has("hits")) {
-            JSONObject hitsObject = responseJSON.getJSONObject("hits");
-            JSONArray hits = hitsObject.getJSONArray("hits");
-            totalHits.add(hits);
-            int newOffset = size + offset;
-            if (newOffset <= hitsObject.getInt("total")) {
-                totalHits.addAll(getDataToMigrate(url, newOffset, size));
-            }
-        }
-
-        return totalHits;
-    }
-
-    protected void bulkUpdate(String url, String jsonData) throws IOException {
-        HttpEntity entity = HttpUtils.executePostRequest(httpClient, url, jsonData, null);
-        JSONObject responseJSON = new JSONObject(EntityUtils.toString(entity));
-        EntityUtils.consumeQuietly(entity);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/MigrationTo200.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/MigrationTo200.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/MigrationTo200.java
deleted file mode 100644
index 134db02..0000000
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migrations/MigrationTo200.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.
- */
-package org.apache.unomi.shell.migrations;
-
-import org.apache.felix.service.command.CommandSession;
-import org.apache.unomi.shell.utils.ConsoleUtils;
-import org.json.JSONArray;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.util.*;
-
-/**
- * @author dgaillard
- */
-public class MigrationTo200 extends AbstractMigrationResource {
-
-    public MigrationTo200(CommandSession session) throws IOException {
-        super(session);
-    }
-
-    public void execute() throws IOException {
-        try {
-            initHttpClient();
-            migrateTags();
-        } catch (IOException e) {
-            closeHttpClient();
-            throw e;
-        }
-    }
-
-    private void migrateTags() throws IOException {
-        String hostAddress = ConsoleUtils.askUserWithDefaultAnswer(session, "Host address (default = http://localhost:9200): ", "http://localhost:9200");
-
-        List<JSONArray> totalHits = getDataToMigrate(hostAddress + "/context/propertyType/_search", 0, 10);
-
-        StringBuilder updatedHits = new StringBuilder();
-        for (JSONArray hits : totalHits) {
-            Iterator<Object> hitsIterator = hits.iterator();
-            LinkedHashMap<String, List<String>> legacyTags = getTagsStructurePriorTo200();
-            while (hitsIterator.hasNext()) {
-                JSONObject hit = (JSONObject) hitsIterator.next();
-                if (hit.has("_source")) {
-                    JSONObject hitSource = hit.getJSONObject("_source");
-                    if (hitSource.has("tags")) {
-                        JSONArray hitTags = hitSource.getJSONArray("tags");
-                        Iterator<Object> tagsIterator = hitTags.iterator();
-                        List<String> tagsBeforeMigration = new ArrayList<>();
-                        List<String> tagsAfterMigration = new ArrayList<>();
-                        while (tagsIterator.hasNext()) {
-                            tagsBeforeMigration.add((String) tagsIterator.next());
-                        }
-                        for (String tag : tagsBeforeMigration) {
-                            if (legacyTags.containsKey(tag) && !tagsAfterMigration.containsAll(legacyTags.get(tag))) {
-                                tagsAfterMigration.addAll(legacyTags.get(tag));
-                            }
-
-                            if (!tagsAfterMigration.contains(tag)) {
-                                tagsAfterMigration.add(tag);
-                            }
-                        }
-
-                        updatedHits.append("{\"update\":{\"_id\":\"").append(hit.getString("_id")).append("\"}}\n");
-                        updatedHits.append("{\"doc\":{\"tags\":").append(new JSONArray(tagsAfterMigration)).append("}}\n");
-                    }
-                }
-            }
-        }
-        bulkUpdate(hostAddress + "/context/propertyType/_bulk", updatedHits.toString());
-    }
-
-    private LinkedHashMap<String, List<String>> getTagsStructurePriorTo200() {
-        LinkedHashMap<String, List<String>> tags = new LinkedHashMap<>();
-        tags.put("landing", Collections.singletonList("campaign"));
-        tags.put("parameter", Collections.singletonList("campaign"));
-        tags.put("referrer", Collections.singletonList("campaign"));
-
-        tags.put("eventCondition", Collections.singletonList("condition"));
-        tags.put("profileCondition", Collections.singletonList("condition"));
-        tags.put("sessionCondition", Collections.singletonList("condition"));
-        tags.put("sourceEventCondition", Collections.singletonList("condition"));
-        tags.put("trackedCondition", Collections.singletonList("condition"));
-        tags.put("usableInPastEventCondition", Collections.singletonList("condition"));
-
-        tags.put("formMappingRule", Collections.<String>emptyList());
-
-        tags.put("downloadGoal", Collections.singletonList("goal"));
-        tags.put("formGoal", Collections.singletonList("goal"));
-        tags.put("funnelGoal", Collections.singletonList("goal"));
-        tags.put("landingPageGoal", Collections.singletonList("goal"));
-        tags.put("pageVisitGoal", Collections.singletonList("goal"));
-        tags.put("videoGoal", Collections.singletonList("goal"));
-
-        tags.put("aggregated", Collections.singletonList("profileTags"));
-        tags.put("autocompleted", Collections.singletonList("profileTags"));
-        tags.put("demographic", Collections.singletonList("profileTags"));
-        tags.put("event", Collections.singletonList("profileTags"));
-        tags.put("geographic", Collections.singletonList("profileTags"));
-        tags.put("logical", Collections.singletonList("profileTags"));
-
-        tags.put("profileProperties", Collections.singletonList("properties"));
-        tags.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tags.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tags.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tags.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tags.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tags.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tags.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
-
-        tags.put("sessionProperties", Collections.singletonList("properties"));
-        tags.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
-        tags.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
-
-        return tags;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
new file mode 100644
index 0000000..e77f4b9
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/UnomiManagementService.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.services;
+
+import org.osgi.framework.BundleException;
+
+/**
+ * @author dgaillard
+ */
+public interface UnomiManagementService {
+
+    void startUnomi() throws BundleException;
+
+    void stopUnomi() throws BundleException;
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/internal/UnomiManagementServiceImpl.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/internal/UnomiManagementServiceImpl.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/internal/UnomiManagementServiceImpl.java
new file mode 100644
index 0000000..fedb8bb
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/services/internal/UnomiManagementServiceImpl.java
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.services.internal;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.unomi.shell.services.UnomiManagementService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author dgaillard
+ */
+public class UnomiManagementServiceImpl implements UnomiManagementService {
+
+    private BundleContext bundleContext;
+    private List<String> bundleSymbolicNames;
+    private List<String> reversedBundleSymbolicNames;
+
+    public void init() throws BundleException {
+        initReversedBundleSymbolicNames();
+        if (StringUtils.isNotBlank(bundleContext.getProperty("unomi.autoStart")) && bundleContext.getProperty("unomi.autoStart").equals("true")) {
+            startUnomi();
+        }
+    }
+
+    @Override
+    public void startUnomi() throws BundleException {
+        for (String bundleSymbolicName : bundleSymbolicNames) {
+            for (Bundle bundle : bundleContext.getBundles()) {
+                if (bundle.getSymbolicName().equals(bundleSymbolicName)) {
+                    if (bundle.getState() == Bundle.RESOLVED) {
+                        bundle.start();
+                    }
+                    break;
+                }
+            }
+        }
+    }
+
+    @Override
+    public void stopUnomi() throws BundleException {
+        for (String bundleSymbolicName : reversedBundleSymbolicNames) {
+            for (Bundle bundle : bundleContext.getBundles()) {
+                if (bundle.getSymbolicName().equals(bundleSymbolicName)) {
+                    if (bundle.getState() == Bundle.ACTIVE) {
+                        bundle.stop();
+                    }
+                    break;
+                }
+            }
+        }
+    }
+
+    public void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
+
+    public void setBundleSymbolicNames(List<String> bundleSymbolicNames) {
+        this.bundleSymbolicNames = bundleSymbolicNames;
+    }
+
+    public void initReversedBundleSymbolicNames() {
+        if (reversedBundleSymbolicNames == null || reversedBundleSymbolicNames.isEmpty()) {
+            this.reversedBundleSymbolicNames = new ArrayList<>();
+            reversedBundleSymbolicNames.addAll(bundleSymbolicNames);
+            Collections.reverse(reversedBundleSymbolicNames);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/ConsoleUtils.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/ConsoleUtils.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/ConsoleUtils.java
deleted file mode 100644
index b2c6323..0000000
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/ConsoleUtils.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.
- */
-package org.apache.unomi.shell.utils;
-
-import jline.console.ConsoleReader;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.felix.service.command.CommandSession;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * @author dgaillard
- */
-public class ConsoleUtils {
-    private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
-
-    /**
-     * This will ask a question to the user and return the default answer if the user does not answer.
-     *
-     * @param session           CommandSession
-     * @param msg               String message to ask
-     * @param defaultAnswer     String default answer
-     * @return the user answer
-     * @throws IOException
-     */
-    public static String askUserWithDefaultAnswer(CommandSession session, String msg, String defaultAnswer) throws IOException {
-        String answer = promptMessageToUser(session, msg);
-        if (StringUtils.isBlank(answer)) {
-            return defaultAnswer;
-        }
-        return answer;
-    }
-
-    /**
-     * This method allow you to ask a question to the user.
-     * The answer is controlled before being return so the question will be ask until the user enter one the authorized answer
-     *
-     * @param session           CommandSession
-     * @param msg               String message to ask
-     * @param authorizedAnswer  Array of possible answer, all answer must be in lower case
-     * @return the user answer
-     * @throws IOException
-     */
-    public static String askUserWithAuthorizedAnswer(CommandSession session, String msg, List<String> authorizedAnswer) throws IOException {
-        String answer;
-        do {
-            answer = promptMessageToUser(session,msg);
-        } while (!authorizedAnswer.contains(answer.toLowerCase()));
-        return answer;
-    }
-
-    /**
-     * This method allow you to prompt a message to the user.
-     * No control is done on the answer provided by the user.
-     *
-     * @param session   CommandSession
-     * @param msg       String message to prompt
-     * @return the user answer
-     * @throws IOException
-     */
-    public static String promptMessageToUser(CommandSession session, String msg) throws IOException {
-        ConsoleReader reader = (ConsoleReader) session.get(".jline.reader");
-        return reader.readLine(msg, null);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/HttpUtils.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/HttpUtils.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/HttpUtils.java
deleted file mode 100644
index 6fd1e58..0000000
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/utils/HttpUtils.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * 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.
- */
-package org.apache.unomi.shell.utils;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.*;
-import org.apache.http.config.Registry;
-import org.apache.http.config.RegistryBuilder;
-import org.apache.http.conn.socket.ConnectionSocketFactory;
-import org.apache.http.conn.socket.PlainConnectionSocketFactory;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.entity.BufferedHttpEntity;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import java.io.IOException;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.security.cert.X509Certificate;
-import java.util.Map;
-
-/**
- * @author dgaillard
- */
-public class HttpUtils {
-    private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
-
-    public static CloseableHttpClient initHttpClient(boolean trustAllCertificates) {
-        long requestStartTime = System.currentTimeMillis();
-
-        HttpClientBuilder httpClientBuilder = HttpClients.custom().useSystemProperties();
-
-        if (trustAllCertificates) {
-            try {
-                SSLContext sslContext = SSLContext.getInstance("SSL");
-                sslContext.init(null, new TrustManager[]{new X509TrustManager() {
-                    public X509Certificate[] getAcceptedIssuers() {
-                        return null;
-                    }
-
-                    public void checkClientTrusted(X509Certificate[] certs,
-                                                   String authType) {
-                    }
-
-                    public void checkServerTrusted(X509Certificate[] certs,
-                                                   String authType) {
-                    }
-                }}, new SecureRandom());
-
-                Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
-                        .register("http", PlainConnectionSocketFactory.getSocketFactory())
-                        .register("https", new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER))
-                        .build();
-
-                httpClientBuilder.setHostnameVerifier(SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
-                        .setConnectionManager(new PoolingHttpClientConnectionManager(socketFactoryRegistry));
-
-            } catch (NoSuchAlgorithmException | KeyManagementException e) {
-                logger.error("Error creating SSL Context", e);
-            }
-        } else {
-            httpClientBuilder.setConnectionManager(new PoolingHttpClientConnectionManager());
-        }
-
-        RequestConfig requestConfig = RequestConfig.custom().build();
-        httpClientBuilder.setDefaultRequestConfig(requestConfig);
-
-        if (logger.isDebugEnabled()) {
-            long totalRequestTime = System.currentTimeMillis() - requestStartTime;
-            logger.debug("Init HttpClient executed in " + totalRequestTime + "ms");
-        }
-
-        return httpClientBuilder.build();
-    }
-
-    public static HttpEntity executeGetRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers) throws IOException {
-        HttpGet httpGet = new HttpGet(url);
-        httpGet.addHeader("accept", "application/json");
-
-        return getHttpEntity(httpClient, url, headers, httpGet);
-    }
-
-    public static HttpEntity executeDeleteRequest(CloseableHttpClient httpClient, String url, Map<String, String> headers) throws IOException {
-        HttpDelete httpDelete = new HttpDelete(url);
-        httpDelete.addHeader("accept", "application/json");
-
-        return getHttpEntity(httpClient, url, headers, httpDelete);
-    }
-
-    public static HttpEntity executePostRequest(CloseableHttpClient httpClient, String url, String jsonData, Map<String, String> headers) throws IOException {
-        HttpPost httpPost = new HttpPost(url);
-        httpPost.addHeader("accept", "application/json");
-
-        if (jsonData != null) {
-            StringEntity input = new StringEntity(jsonData);
-            input.setContentType("application/json");
-            httpPost.setEntity(input);
-        }
-
-        return getHttpEntity(httpClient, url, headers, httpPost);
-    }
-
-    private static HttpEntity getHttpEntity(CloseableHttpClient httpClient, String url, Map<String, String> headers, HttpRequestBase httpRequestBase) throws IOException {
-        long requestStartTime = System.currentTimeMillis();
-        if (headers != null) {
-            for (Map.Entry<String, String> entry : headers.entrySet()) {
-                httpRequestBase.setHeader(entry.getKey(), entry.getValue());
-            }
-        }
-
-        CloseableHttpResponse response = httpClient.execute(httpRequestBase);
-        final int statusCode = response.getStatusLine().getStatusCode();
-        if (statusCode >= 400) {
-            throw new IOException("Couldn't execute " + httpRequestBase + " response: " + EntityUtils.toString(response.getEntity()));
-        }
-
-        HttpEntity entity = response.getEntity();
-        if (logger.isDebugEnabled()) {
-            if (entity !=null) {
-                entity = new BufferedHttpEntity(response.getEntity());
-            }
-            logger.debug("POST request " + httpRequestBase + " executed with code: " + statusCode + " and message: " + (entity!=null?EntityUtils.toString(entity):null));
-
-            long totalRequestTime = System.currentTimeMillis() - requestStartTime;
-            logger.debug("Request to Apache Unomi url: " + url + " executed in " + totalRequestTime + "ms");
-        }
-
-        return entity;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/eb8f07b8/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 8f1080b..562159f 100644
--- a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -18,15 +18,66 @@
 
 <blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-           xsi:schemaLocation="http://karaf.apache.org/xmlns/shell/v1.1.0">
+           xmlns:shell="http://karaf.apache.org/xmlns/shell/v1.1.0"
+           xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
 
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
-        <command>
-            <action class="org.apache.unomi.shell.actions.Migrate"/>
-        </command>
-        <command>
-            <action class="org.apache.unomi.shell.actions.Version"/>
-        </command>
-    </command-bundle>
+    <bean id="migrateTo200" class="org.apache.unomi.shell.migration.impl.MigrationTo200"/>
+
+    <shell:command-bundle>
+        <shell:command>
+            <shell:action class="org.apache.unomi.shell.migration.actions.Migrate">
+                <shell:property name="migrations">
+                    <list>
+                        <!-- Migration beans must be executed in the right order so you must place new bean at the end of this list -->
+                        <ref component-id="migrateTo200"/>
+                    </list>
+                </shell:property>
+            </shell:action>
+        </shell:command>
+        <shell:command>
+            <shell:action class="org.apache.unomi.shell.actions.Version"/>
+        </shell:command>
+        <shell:command>
+            <shell:action class="org.apache.unomi.shell.actions.Start">
+                <shell:property name="unomiManagementService" ref="unomiManagementServiceImpl"/>
+            </shell:action>
+        </shell:command>
+        <shell:command>
+            <shell:action class="org.apache.unomi.shell.actions.Stop">
+                <shell:property name="unomiManagementService" ref="unomiManagementServiceImpl"/>
+            </shell:action>
+        </shell:command>
+    </shell:command-bundle>
+
+    <bean id="unomiManagementServiceImpl" class="org.apache.unomi.shell.services.internal.UnomiManagementServiceImpl" init-method="init">
+        <property name="bundleSymbolicNames">
+            <list>
+                <value>org.apache.unomi.lifecycle-watcher</value>
+                <value>org.apache.unomi.api</value>
+                <value>org.apache.unomi.persistence-spi</value>
+                <value>org.apache.unomi.persistence-elasticsearch-core</value>
+                <value>org.apache.unomi.services</value>
+                <value>org.apache.unomi.cxs-lists-extension-services</value>
+                <value>org.apache.unomi.cxs-lists-extension-rest</value>
+                <value>org.apache.unomi.cxs-geonames-services</value>
+                <value>org.apache.unomi.cxs-geonames-rest</value>
+                <value>org.apache.unomi.cxs-privacy-extension-services</value>
+                <value>org.apache.unomi.cxs-privacy-extension-rest</value>
+                <value>org.apache.unomi.rest</value>
+                <value>org.apache.unomi.wab</value>
+                <value>org.apache.unomi.plugins-base</value>
+                <value>org.apache.unomi.plugins-request</value>
+                <value>org.apache.unomi.plugins-mail</value>
+                <value>org.apache.unomi.plugins-optimization-test</value>
+                <value>org.apache.unomi.cxs-lists-extension-actions</value>
+                <value>org.apache.unomi.router-api</value>
+                <value>org.apache.unomi.router-core</value>
+                <value>org.apache.unomi.router-service</value>
+                <value>org.apache.unomi.router-rest</value>
+            </list>
+        </property>
+        <property name="bundleContext" ref="blueprintBundleContext"/>
+    </bean>
+    <service id="unomiManagementService" ref="unomiManagementServiceImpl" auto-export="interfaces"/>
 
 </blueprint>


[14/15] incubator-unomi git commit: [jgitflow-maven-plugin]updating poms for unomi_117 version

Posted by dg...@apache.org.
[jgitflow-maven-plugin]updating poms for unomi_117 version

Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/6a01edc8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/6a01edc8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/6a01edc8

Branch: refs/heads/master
Commit: 6a01edc8bffe0b54930a838d60db228039f7f509
Parents: ccc3c2c
Author: dgaillard <dg...@jahia.com>
Authored: Fri Oct 6 15:33:04 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Fri Oct 6 15:33:04 2017 +0200

----------------------------------------------------------------------
 api/pom.xml                                     |  2 +-
 extensions/geonames/pom.xml                     |  2 +-
 extensions/geonames/rest/pom.xml                |  8 ++---
 extensions/geonames/services/pom.xml            |  8 ++---
 extensions/lists-extension/actions/pom.xml      |  8 ++---
 extensions/lists-extension/pom.xml              |  4 +--
 extensions/lists-extension/rest/pom.xml         |  8 ++---
 extensions/lists-extension/services/pom.xml     |  8 ++---
 extensions/pom.xml                              |  2 +-
 extensions/privacy-extension/pom.xml            |  4 +--
 extensions/privacy-extension/rest/pom.xml       |  8 ++---
 extensions/privacy-extension/services/pom.xml   |  8 ++---
 extensions/router/pom.xml                       |  2 +-
 extensions/router/router-api/pom.xml            |  2 +-
 extensions/router/router-core/pom.xml           |  2 +-
 extensions/router/router-karaf-feature/pom.xml  |  2 +-
 extensions/router/router-rest/pom.xml           |  2 +-
 extensions/router/router-service/pom.xml        |  2 +-
 extensions/salesforce-connector/actions/pom.xml |  6 ++--
 .../salesforce-connector/karaf-kar/pom.xml      | 10 +++---
 extensions/salesforce-connector/pom.xml         |  2 +-
 extensions/salesforce-connector/rest/pom.xml    |  8 ++---
 .../salesforce-connector/services/pom.xml       |  6 ++--
 kar/pom.xml                                     | 32 ++++++++++----------
 lifecycle-watcher/pom.xml                       |  2 +-
 package/pom.xml                                 |  6 ++--
 persistence-elasticsearch/core/pom.xml          |  6 ++--
 persistence-elasticsearch/pom.xml               |  2 +-
 persistence-spi/pom.xml                         |  4 +--
 plugins/baseplugin/pom.xml                      |  6 ++--
 plugins/hover-event/pom.xml                     |  4 +--
 plugins/mail/pom.xml                            |  4 +--
 plugins/optimization-test/pom.xml               |  2 +-
 plugins/past-event/pom.xml                      |  6 ++--
 plugins/pom.xml                                 |  4 +--
 plugins/request/pom.xml                         |  2 +-
 plugins/tracked-event/pom.xml                   |  6 ++--
 pom.xml                                         |  2 +-
 rest/pom.xml                                    |  6 ++--
 samples/login-integration/pom.xml               |  4 +--
 samples/pom.xml                                 |  2 +-
 samples/tweet-button-plugin/pom.xml             |  4 +--
 services/pom.xml                                |  6 ++--
 tools/pom.xml                                   |  5 ++-
 tools/shell-commands/pom.xml                    |  5 ++-
 wab/pom.xml                                     |  6 ++--
 46 files changed, 119 insertions(+), 121 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/api/pom.xml
----------------------------------------------------------------------
diff --git a/api/pom.xml b/api/pom.xml
index 7da7999..3ad25fb 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-api</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/geonames/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/pom.xml b/extensions/geonames/pom.xml
index a299826..6657279 100644
--- a/extensions/geonames/pom.xml
+++ b/extensions/geonames/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>cxs-geonames</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/geonames/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/rest/pom.xml b/extensions/geonames/rest/pom.xml
index 80fd209..89f7d7b 100644
--- a/extensions/geonames/rest/pom.xml
+++ b/extensions/geonames/rest/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>cxs-geonames</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -76,7 +76,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/geonames/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/services/pom.xml b/extensions/geonames/services/pom.xml
index d5099d8..72ed9d7 100644
--- a/extensions/geonames/services/pom.xml
+++ b/extensions/geonames/services/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>cxs-geonames</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
@@ -28,20 +28,20 @@
     <artifactId>cxs-geonames-services</artifactId>
     <name>Apache Unomi :: Extensions :: Geonames Database :: Service</name>
     <description>Service implementation for the Apache Unomi Context Server extension that integrates with the Geonames database</description>
-    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+    <version>1.3.0-incubating-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/lists-extension/actions/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/actions/pom.xml b/extensions/lists-extension/actions/pom.xml
index 9028694..2be2fa0 100644
--- a/extensions/lists-extension/actions/pom.xml
+++ b/extensions/lists-extension/actions/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -28,21 +28,21 @@
     <name>Apache Unomi :: Extensions :: Lists :: Actions</name>
     <description>List extension rule actions for the Apache Unomi Context Server</description>
 
-    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+    <version>1.3.0-incubating-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/lists-extension/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/pom.xml b/extensions/lists-extension/pom.xml
index 8cc50c5..a33d2fa 100644
--- a/extensions/lists-extension/pom.xml
+++ b/extensions/lists-extension/pom.xml
@@ -28,12 +28,12 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>cxs-lists-extension</artifactId>
     <name>Apache Unomi :: Extensions :: Lists</name>
     <description>List extension for the Apache Unomi Context Server</description>
-    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+    <version>1.3.0-incubating-SNAPSHOT</version>
     <packaging>pom</packaging>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/lists-extension/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/rest/pom.xml b/extensions/lists-extension/rest/pom.xml
index ca5474c..0a9cad3 100644
--- a/extensions/lists-extension/rest/pom.xml
+++ b/extensions/lists-extension/rest/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -34,14 +34,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -77,7 +77,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/lists-extension/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/services/pom.xml b/extensions/lists-extension/services/pom.xml
index 84477b9..c3d16eb 100644
--- a/extensions/lists-extension/services/pom.xml
+++ b/extensions/lists-extension/services/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -28,20 +28,20 @@
     <name>Apache Unomi :: Extensions :: Lists :: Service</name>
     <description>List extension service implementation for the Apache Unomi Context Server</description>
 
-    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+    <version>1.3.0-incubating-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 6350643..a23d4db 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-extensions</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/privacy-extension/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/pom.xml b/extensions/privacy-extension/pom.xml
index 9629edb..ef7919a 100644
--- a/extensions/privacy-extension/pom.xml
+++ b/extensions/privacy-extension/pom.xml
@@ -27,12 +27,12 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>cxs-privacy-extension</artifactId>
     <name>Apache Unomi :: Extensions :: Privacy</name>
     <description>Privacy management extension for the Apache Unomi Context Server</description>
-    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+    <version>1.3.0-incubating-SNAPSHOT</version>
     <packaging>pom</packaging>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/privacy-extension/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/rest/pom.xml b/extensions/privacy-extension/rest/pom.xml
index 16f40d8..514f1be 100644
--- a/extensions/privacy-extension/rest/pom.xml
+++ b/extensions/privacy-extension/rest/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>cxs-privacy-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -76,7 +76,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/privacy-extension/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/services/pom.xml b/extensions/privacy-extension/services/pom.xml
index 97b1e9e..3b72da7 100644
--- a/extensions/privacy-extension/services/pom.xml
+++ b/extensions/privacy-extension/services/pom.xml
@@ -20,27 +20,27 @@
     <parent>
         <artifactId>cxs-privacy-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>cxs-privacy-extension-services</artifactId>
     <name>Apache Unomi :: Extensions :: Privacy :: Services</name>
     <description>Privacy management extension service implementation for the Apache Unomi Context Server</description>
-    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+    <version>1.3.0-incubating-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/router/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/pom.xml b/extensions/router/pom.xml
index d05e480..6a98d4d 100644
--- a/extensions/router/pom.xml
+++ b/extensions/router/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-router</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/router/router-api/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/pom.xml b/extensions/router/router-api/pom.xml
index 931379e..6040947 100644
--- a/extensions/router/router-api/pom.xml
+++ b/extensions/router/router-api/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/router/router-core/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/pom.xml b/extensions/router/router-core/pom.xml
index 182d2b3..1f86696 100644
--- a/extensions/router/router-core/pom.xml
+++ b/extensions/router/router-core/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/router/router-karaf-feature/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-karaf-feature/pom.xml b/extensions/router/router-karaf-feature/pom.xml
index 5d4ad7c..f8a4279 100644
--- a/extensions/router/router-karaf-feature/pom.xml
+++ b/extensions/router/router-karaf-feature/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/router/router-rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/pom.xml b/extensions/router/router-rest/pom.xml
index 288dd0d..459fe6f 100644
--- a/extensions/router/router-rest/pom.xml
+++ b/extensions/router/router-rest/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/router/router-service/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-service/pom.xml b/extensions/router/router-service/pom.xml
index 5d43114..13f9c6f 100644
--- a/extensions/router/router-service/pom.xml
+++ b/extensions/router/router-service/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/salesforce-connector/actions/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/actions/pom.xml b/extensions/salesforce-connector/actions/pom.xml
index 1f7b235..18a8aa5 100644
--- a/extensions/salesforce-connector/actions/pom.xml
+++ b/extensions/salesforce-connector/actions/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-salesforce-connector</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/salesforce-connector/karaf-kar/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/karaf-kar/pom.xml b/extensions/salesforce-connector/karaf-kar/pom.xml
index 0347088..3e9168c 100644
--- a/extensions/salesforce-connector/karaf-kar/pom.xml
+++ b/extensions/salesforce-connector/karaf-kar/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-salesforce-connector</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -50,17 +50,17 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-rest</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-actions</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
 
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/salesforce-connector/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/pom.xml b/extensions/salesforce-connector/pom.xml
index 13c8725..67e1fee 100644
--- a/extensions/salesforce-connector/pom.xml
+++ b/extensions/salesforce-connector/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-salesforce-connector</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/salesforce-connector/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/rest/pom.xml b/extensions/salesforce-connector/rest/pom.xml
index 84c9ff7..e05461b 100644
--- a/extensions/salesforce-connector/rest/pom.xml
+++ b/extensions/salesforce-connector/rest/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-salesforce-connector</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-salesforce-connector-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -83,7 +83,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/extensions/salesforce-connector/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/services/pom.xml b/extensions/salesforce-connector/services/pom.xml
index 65889d3..172bd17 100644
--- a/extensions/salesforce-connector/services/pom.xml
+++ b/extensions/salesforce-connector/services/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-salesforce-connector</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
@@ -34,13 +34,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/kar/pom.xml
----------------------------------------------------------------------
diff --git a/kar/pom.xml b/kar/pom.xml
index f5a9dc3..49ad5f8 100644
--- a/kar/pom.xml
+++ b/kar/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-kar</artifactId>
@@ -34,77 +34,77 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-wab</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-base</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-request</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-mail</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-optimization-test</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-rest</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-actions</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-rest</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-services</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-rest</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/lifecycle-watcher/pom.xml
----------------------------------------------------------------------
diff --git a/lifecycle-watcher/pom.xml b/lifecycle-watcher/pom.xml
index a2ecc3f..ec18f38 100644
--- a/lifecycle-watcher/pom.xml
+++ b/lifecycle-watcher/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>unomi-root</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/package/pom.xml
----------------------------------------------------------------------
diff --git a/package/pom.xml b/package/pom.xml
index be0d876..a1cae4b 100644
--- a/package/pom.xml
+++ b/package/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi</artifactId>
@@ -85,7 +85,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-kar</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>
@@ -94,7 +94,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-router-karaf-feature</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/persistence-elasticsearch/core/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/pom.xml b/persistence-elasticsearch/core/pom.xml
index 1687799..5254542 100644
--- a/persistence-elasticsearch/core/pom.xml
+++ b/persistence-elasticsearch/core/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-persistence-elasticsearch</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-persistence-elasticsearch-core</artifactId>
@@ -45,13 +45,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/persistence-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/pom.xml b/persistence-elasticsearch/pom.xml
index 00210a0..c0ae7f6 100644
--- a/persistence-elasticsearch/pom.xml
+++ b/persistence-elasticsearch/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-persistence-elasticsearch</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/persistence-spi/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-spi/pom.xml b/persistence-spi/pom.xml
index 2ba15b7..5d52eea 100644
--- a/persistence-spi/pom.xml
+++ b/persistence-spi/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-persistence-spi</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/plugins/baseplugin/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/pom.xml b/plugins/baseplugin/pom.xml
index 15761fa..fb1068c 100644
--- a/plugins/baseplugin/pom.xml
+++ b/plugins/baseplugin/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-base</artifactId>
@@ -56,13 +56,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/plugins/hover-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/hover-event/pom.xml b/plugins/hover-event/pom.xml
index 101bccc..ee6e14d 100644
--- a/plugins/hover-event/pom.xml
+++ b/plugins/hover-event/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-hover-event</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/plugins/mail/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/mail/pom.xml b/plugins/mail/pom.xml
index 680c2a3..2cfe8e8 100644
--- a/plugins/mail/pom.xml
+++ b/plugins/mail/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-mail</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/plugins/optimization-test/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/optimization-test/pom.xml b/plugins/optimization-test/pom.xml
index 29e8ea1..ef80ffe 100644
--- a/plugins/optimization-test/pom.xml
+++ b/plugins/optimization-test/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-optimization-test</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/plugins/past-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/past-event/pom.xml b/plugins/past-event/pom.xml
index fa1e6b1..3c6414f 100644
--- a/plugins/past-event/pom.xml
+++ b/plugins/past-event/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-past-event</artifactId>
@@ -34,13 +34,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/plugins/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/pom.xml b/plugins/pom.xml
index bee7e9d..5bf5e03 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins</artifactId>
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/plugins/request/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/request/pom.xml b/plugins/request/pom.xml
index 9673a00..0c9174b 100644
--- a/plugins/request/pom.xml
+++ b/plugins/request/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-request</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/plugins/tracked-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/tracked-event/pom.xml b/plugins/tracked-event/pom.xml
index f09ae80..b12279a 100644
--- a/plugins/tracked-event/pom.xml
+++ b/plugins/tracked-event/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-plugins</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-tracked-event</artifactId>
@@ -34,13 +34,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5a9db93..e1e9b38 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
         event tracking server.
     </description>
     <url>http://unomi.incubator.apache.org</url>
-    <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+    <version>1.3.0-incubating-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <licenses>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/rest/pom.xml
----------------------------------------------------------------------
diff --git a/rest/pom.xml b/rest/pom.xml
index 4353da1..6096b9a 100644
--- a/rest/pom.xml
+++ b/rest/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-rest</artifactId>
@@ -42,7 +42,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -84,7 +84,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <!--<dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/samples/login-integration/pom.xml
----------------------------------------------------------------------
diff --git a/samples/login-integration/pom.xml b/samples/login-integration/pom.xml
index 20c6e2c..bc3427f 100644
--- a/samples/login-integration/pom.xml
+++ b/samples/login-integration/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>samples</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>login-integration-sample</artifactId>
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
index 750a0f5..9ae9d9f 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>unomi-root</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/samples/tweet-button-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/pom.xml b/samples/tweet-button-plugin/pom.xml
index 855811a..167f24d 100644
--- a/samples/tweet-button-plugin/pom.xml
+++ b/samples/tweet-button-plugin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>samples</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>tweet-button-plugin</artifactId>
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/services/pom.xml
----------------------------------------------------------------------
diff --git a/services/pom.xml b/services/pom.xml
index 4d5cc26..d62771c 100644
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-services</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -53,7 +53,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/tools/pom.xml
----------------------------------------------------------------------
diff --git a/tools/pom.xml b/tools/pom.xml
index cdad996..207e63a 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -15,14 +15,13 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-tools</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/tools/shell-commands/pom.xml
----------------------------------------------------------------------
diff --git a/tools/shell-commands/pom.xml b/tools/shell-commands/pom.xml
index 93b2e01..a63218a 100644
--- a/tools/shell-commands/pom.xml
+++ b/tools/shell-commands/pom.xml
@@ -15,14 +15,13 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <artifactId>unomi-tools</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>shell-commands</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a01edc8/wab/pom.xml
----------------------------------------------------------------------
diff --git a/wab/pom.xml b/wab/pom.xml
index a843cdc..acdf449 100644
--- a/wab/pom.xml
+++ b/wab/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-wab</artifactId>
@@ -43,13 +43,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
+            <version>1.3.0-incubating-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 


[06/15] incubator-unomi git commit: UNOMI-117 add ES document version to Item.java so we know the version of a document

Posted by dg...@apache.org.
UNOMI-117 add ES document version to Item.java so we know the version of a document


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/b30d3286
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/b30d3286
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/b30d3286

Branch: refs/heads/master
Commit: b30d3286fe6fb5df5df38e4b9db93e96c1e59f14
Parents: a5beefc
Author: dgaillard <dg...@jahia.com>
Authored: Fri Sep 15 17:58:17 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Thu Sep 28 10:50:13 2017 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/unomi/api/Item.java    |  9 +++++
 .../elasticsearch/ESCustomObjectMapper.java     | 42 ++++++++++++++++++++
 .../persistence/elasticsearch/ESItemMixIn.java  | 29 ++++++++++++++
 .../ElasticSearchPersistenceServiceImpl.java    | 22 +++++-----
 .../apache/unomi/rest/LocalizationHelper.java   |  2 +
 .../org/apache/unomi/rest/RESTActionType.java   |  9 +++++
 .../apache/unomi/rest/RESTConditionType.java    |  9 +++++
 7 files changed, 112 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b30d3286/api/src/main/java/org/apache/unomi/api/Item.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/Item.java b/api/src/main/java/org/apache/unomi/api/Item.java
index 2af5c00..2d9099d 100644
--- a/api/src/main/java/org/apache/unomi/api/Item.java
+++ b/api/src/main/java/org/apache/unomi/api/Item.java
@@ -40,6 +40,7 @@ public abstract class Item implements Serializable {
     protected String itemId;
     protected String itemType;
     protected String scope;
+    protected Long version;
 
     public Item() {
         try {
@@ -110,4 +111,12 @@ public abstract class Item implements Serializable {
     public int hashCode() {
         return itemId != null ? itemId.hashCode() : 0;
     }
+
+    public Long getVersion() {
+        return version;
+    }
+
+    public void setVersion(Long version) {
+        this.version = version;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b30d3286/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
new file mode 100644
index 0000000..119d1b2
--- /dev/null
+++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESCustomObjectMapper.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.persistence.elasticsearch;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.unomi.api.Item;
+import org.apache.unomi.persistence.spi.CustomObjectMapper;
+
+/**
+ * @author dgaillard
+ */
+public class ESCustomObjectMapper extends CustomObjectMapper {
+
+    private static final long serialVersionUID = -5017620674440085575L;
+
+    public ESCustomObjectMapper() {
+        super();
+        this.addMixIn(Item.class, ESItemMixIn.class);
+    }
+
+    public static ObjectMapper getObjectMapper() {
+        return ESCustomObjectMapper.Holder.INSTANCE;
+    }
+
+    private static class Holder {
+        static final ESCustomObjectMapper INSTANCE = new ESCustomObjectMapper();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b30d3286/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
new file mode 100644
index 0000000..40ea3c3
--- /dev/null
+++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ESItemMixIn.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.persistence.elasticsearch;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+/**
+ * @author dgaillard
+ */
+public abstract class ESItemMixIn {
+
+    public ESItemMixIn() { }
+
+    @JsonIgnore abstract Long getVersion();
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b30d3286/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
index bb84d81..f6d570e 100644
--- a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
+++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
@@ -26,7 +26,6 @@ import org.apache.unomi.api.query.DateRange;
 import org.apache.unomi.api.query.IpRange;
 import org.apache.unomi.api.query.NumericRange;
 import org.apache.unomi.persistence.elasticsearch.conditions.*;
-import org.apache.unomi.persistence.spi.CustomObjectMapper;
 import org.apache.unomi.persistence.spi.PersistenceService;
 import org.apache.unomi.persistence.spi.aggregate.*;
 import org.elasticsearch.action.admin.cluster.node.info.NodeInfo;
@@ -654,8 +653,9 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
                                 .actionGet();
                         if (response.isExists()) {
                             String sourceAsString = response.getSourceAsString();
-                            final T value = CustomObjectMapper.getObjectMapper().readValue(sourceAsString, clazz);
+                            final T value = ESCustomObjectMapper.getObjectMapper().readValue(sourceAsString, clazz);
                             value.setItemId(response.getId());
+                            value.setVersion(response.getVersion());
                             return value;
                         } else {
                             return null;
@@ -663,10 +663,8 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
                     }
                 } catch (IndexNotFoundException e) {
                     throw new Exception("No index found for itemType=" + clazz.getName() + " itemId=" + itemId, e);
-                } catch (IllegalAccessException e) {
-                    throw new Exception("Error loading itemType=" + clazz.getName() + " itemId=" + itemId, e);
-                } catch (Exception t) {
-                    throw new Exception("Error loading itemType=" + clazz.getName() + " itemId=" + itemId, t);
+                } catch (Exception ex) {
+                    throw new Exception("Error loading itemType=" + clazz.getName() + " itemId=" + itemId, ex);
                 }
             }
         }.catchingExecuteInClassLoader(true);
@@ -683,7 +681,7 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
         Boolean result =  new InClassLoaderExecute<Boolean>() {
             protected Boolean execute(Object... args) throws Exception {
                 try {
-                    String source = CustomObjectMapper.getObjectMapper().writeValueAsString(item);
+                    String source = ESCustomObjectMapper.getObjectMapper().writeValueAsString(item);
                     String itemType = item.getItemType();
                     String index = indexNames.containsKey(itemType) ? indexNames.get(itemType) :
                             (itemsMonthlyIndexed.contains(itemType) ? getMonthlyIndex(((TimestampedItem) item).getTimeStamp()) : indexName);
@@ -1341,6 +1339,7 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
                         }
                     }
                     SearchResponse response = requestBuilder
+                            .setVersion(true)
                             .execute()
                             .actionGet();
                     if (size == -1) {
@@ -1350,8 +1349,9 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
                             for (SearchHit searchHit : response.getHits().getHits()) {
                                 // add hit to results
                                 String sourceAsString = searchHit.getSourceAsString();
-                                final T value = CustomObjectMapper.getObjectMapper().readValue(sourceAsString, clazz);
+                                final T value = ESCustomObjectMapper.getObjectMapper().readValue(sourceAsString, clazz);
                                 value.setItemId(searchHit.getId());
+                                value.setVersion(searchHit.getVersion());
                                 results.add(value);
                             }
 
@@ -1369,8 +1369,9 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
                         totalHits = searchHits.getTotalHits();
                         for (SearchHit searchHit : searchHits) {
                             String sourceAsString = searchHit.getSourceAsString();
-                            final T value = CustomObjectMapper.getObjectMapper().readValue(sourceAsString, clazz);
+                            final T value = ESCustomObjectMapper.getObjectMapper().readValue(sourceAsString, clazz);
                             value.setItemId(searchHit.getId());
+                            value.setVersion(searchHit.getVersion());
                             results.add(value);
                         }
                     }
@@ -1406,8 +1407,9 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
                         for (SearchHit searchHit : response.getHits().getHits()) {
                             // add hit to results
                             String sourceAsString = searchHit.getSourceAsString();
-                            final T value = CustomObjectMapper.getObjectMapper().readValue(sourceAsString, clazz);
+                            final T value = ESCustomObjectMapper.getObjectMapper().readValue(sourceAsString, clazz);
                             value.setItemId(searchHit.getId());
+                            value.setVersion(searchHit.getVersion());
                             results.add(value);
                         }
                     }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b30d3286/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java b/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
index 1899f2a..880e16a 100644
--- a/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
+++ b/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
@@ -86,6 +86,7 @@ public class LocalizationHelper {
     public RESTConditionType generateCondition(ConditionType conditionType, String language) {
         RESTConditionType result = new RESTConditionType();
         result.setId(conditionType.getItemId());
+        result.setVersion(conditionType.getVersion());
 
         result.setName(conditionType.getMetadata().getName());
         result.setDescription(conditionType.getMetadata().getDescription());
@@ -109,6 +110,7 @@ public class LocalizationHelper {
     public RESTActionType generateAction(ActionType actionType, String language) {
         RESTActionType result = new RESTActionType();
         result.setId(actionType.getItemId());
+        result.setVersion(actionType.getVersion());
 
         result.setName(actionType.getMetadata().getName());
         result.setDescription(actionType.getMetadata().getDescription());

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b30d3286/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java b/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
index b135adc..ef8a0f7 100644
--- a/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
+++ b/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
@@ -31,6 +31,7 @@ public class RESTActionType {
     private String description;
     private Set<String> tags;
     private List<RESTParameter> parameters;
+    protected Long version;
 
     public String getId() {
         return id;
@@ -71,4 +72,12 @@ public class RESTActionType {
     public void setParameters(List<RESTParameter> parameters) {
         this.parameters = parameters;
     }
+
+    public Long getVersion() {
+        return version;
+    }
+
+    public void setVersion(Long version) {
+        this.version = version;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/b30d3286/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java b/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
index 6ffce83..30aa497 100644
--- a/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
+++ b/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
@@ -30,6 +30,7 @@ public class RESTConditionType {
     private String description;
     private Set<String> tags = new LinkedHashSet<>();
     private List<RESTParameter> parameters = new ArrayList<RESTParameter>();
+    protected Long version;
 
     public RESTConditionType() {
     }
@@ -73,4 +74,12 @@ public class RESTConditionType {
     public void setParameters(List<RESTParameter> parameters) {
         this.parameters = parameters;
     }
+
+    public Long getVersion() {
+        return version;
+    }
+
+    public void setVersion(Long version) {
+        this.version = version;
+    }
 }


[10/15] incubator-unomi git commit: UNOMI-117 move tags to system tags in json files, fix issue with entry point generating a 500 instead of not found or null

Posted by dg...@apache.org.
UNOMI-117 move tags to system tags in json files, fix issue with entry point generating a 500 instead of not found or null


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/6a4a7e60
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/6a4a7e60
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/6a4a7e60

Branch: refs/heads/master
Commit: 6a4a7e60e70e5a0bf078c5d21e77b12d26765929
Parents: cd73038
Author: dgaillard <dg...@jahia.com>
Authored: Fri Sep 29 17:26:36 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Fri Sep 29 17:26:36 2017 +0200

----------------------------------------------------------------------
 .../main/resources/META-INF/cxs/actions/addToLists.json   |  4 ++--
 .../META-INF/cxs/actions/sfdcCreateOrUpdateLead.json      |  4 ++--
 .../META-INF/cxs/actions/sfdcUpdateProfileFromLead.json   |  4 ++--
 .../META-INF/cxs/actions/UpdateWeatherAction.json         |  6 +++---
 .../cxs/properties/sessions/weather/weatherLike.json      |  2 +-
 .../cxs/properties/sessions/weather/weatherTemp.json      |  2 +-
 .../properties/sessions/weather/weatherWindDirection.json |  2 +-
 .../cxs/properties/sessions/weather/weatherWindSpeed.json |  2 +-
 .../cxs/actions/allEventToProfilePropertiesAction.json    |  2 +-
 .../META-INF/cxs/actions/evaluateProfileAgeAction.json    |  2 +-
 .../cxs/actions/evaluateProfileSegmentsAction.json        |  2 +-
 .../cxs/actions/eventToProfilePropertyAction.json         |  2 +-
 .../cxs/actions/mergeProfilesOnPropertyAction.json        |  2 +-
 .../resources/META-INF/cxs/actions/sendEventAction.json   |  2 +-
 .../cxs/actions/setEventOccurenceCountAction.json         |  2 +-
 .../resources/META-INF/cxs/actions/setPropertyAction.json |  6 +++---
 .../META-INF/cxs/conditions/booleanCondition.json         |  2 +-
 .../META-INF/cxs/conditions/eventPropertyCondition.json   |  2 +-
 .../META-INF/cxs/conditions/eventTypeCondition.json       |  2 +-
 .../META-INF/cxs/conditions/formEventCondition.json       |  2 +-
 .../conditions/geoLocationByPointSessionCondition.json    |  2 +-
 .../cxs/conditions/geoLocationSessionCondition.json       |  2 +-
 .../META-INF/cxs/conditions/goalMatchCondition.json       |  2 +-
 .../META-INF/cxs/conditions/matchAllCondition.json        |  2 +-
 .../META-INF/cxs/conditions/newVisitorCondition.json      |  2 +-
 .../resources/META-INF/cxs/conditions/notCondition.json   |  2 +-
 .../META-INF/cxs/conditions/pastEventCondition.json       |  2 +-
 .../META-INF/cxs/conditions/profilePropertyCondition.json |  2 +-
 .../META-INF/cxs/conditions/profileSegmentCondition.json  |  2 +-
 .../cxs/conditions/profileUpdatedEventCondition.json      |  2 +-
 .../META-INF/cxs/conditions/profileUserListCondition.json |  2 +-
 .../cxs/conditions/returningVisitorCondition.json         |  2 +-
 .../META-INF/cxs/conditions/scoringCondition.json         |  2 +-
 .../cxs/conditions/sessionCreatedEventCondition.json      |  2 +-
 .../META-INF/cxs/conditions/sessionDurationCondition.json |  2 +-
 .../META-INF/cxs/conditions/sessionPropertyCondition.json |  2 +-
 .../cxs/conditions/sourceEventPropertyCondition.json      |  2 +-
 .../META-INF/cxs/conditions/videoViewEventCondition.json  |  2 +-
 .../META-INF/cxs/conditions/hoverEventCondition.json      |  2 +-
 .../resources/META-INF/cxs/actions/sendMailAction.json    |  6 +++---
 .../cxs/actions/requestHeaderToProfilePropertyAction.json |  2 +-
 .../actions/requestParameterToProfilePropertyAction.json  |  2 +-
 .../META-INF/cxs/actions/setRemoteHostInfoAction.json     |  2 +-
 .../org/apache/unomi/rest/DefinitionsServiceEndPoint.java |  4 ++--
 .../META-INF/cxs/actions/trainingNotifAction.json         |  2 +-
 .../META-INF/cxs/actions/incrementTweetNumberAction.json  |  2 +-
 .../META-INF/cxs/properties/profiles/basic/firstName.json |  2 +-
 .../META-INF/cxs/properties/profiles/basic/gender.json    |  2 +-
 .../META-INF/cxs/properties/profiles/basic/lastName.json  |  2 +-
 .../cxs/properties/profiles/basic/nationality.json        |  2 +-
 .../META-INF/cxs/properties/profiles/contact/address.json |  2 +-
 .../META-INF/cxs/properties/profiles/contact/city.json    |  2 +-
 .../cxs/properties/profiles/contact/countryName.json      |  2 +-
 .../META-INF/cxs/properties/profiles/contact/email.json   |  2 +-
 .../cxs/properties/profiles/contact/phoneNumber.json      |  2 +-
 .../META-INF/cxs/properties/profiles/contact/zipCode.json |  2 +-
 .../cxs/properties/profiles/lead/leadAssignedTo.json      |  2 +-
 .../META-INF/cxs/properties/profiles/personal/age.json    |  2 +-
 .../cxs/properties/profiles/personal/birthDate.json       |  2 +-
 .../META-INF/cxs/properties/profiles/personal/kids.json   |  2 +-
 .../cxs/properties/profiles/personal/maritalStatus.json   |  2 +-
 .../cxs/properties/profiles/social/facebookId.json        |  2 +-
 .../META-INF/cxs/properties/profiles/social/googleid.json |  2 +-
 .../cxs/properties/profiles/social/linkedInId.json        |  2 +-
 .../cxs/properties/profiles/social/twitterId.json         |  2 +-
 .../cxs/properties/profiles/system/firstVisit.json        |  2 +-
 .../cxs/properties/profiles/system/lastVisit.json         |  2 +-
 .../cxs/properties/profiles/system/nbOfVisits.json        |  2 +-
 .../cxs/properties/profiles/system/previousVisit.json     |  2 +-
 .../META-INF/cxs/properties/profiles/work/company.json    |  2 +-
 .../META-INF/cxs/properties/profiles/work/income.json     |  2 +-
 .../META-INF/cxs/properties/profiles/work/jobTitle.json   |  2 +-
 .../cxs/properties/sessions/geographic/latitude.json      |  2 +-
 .../cxs/properties/sessions/geographic/longitude.json     |  2 +-
 .../sessions/geographic/sessionAdminSubDiv1.json          |  2 +-
 .../sessions/geographic/sessionAdminSubDiv2.json          |  2 +-
 .../cxs/properties/sessions/geographic/sessionCity.json   |  2 +-
 .../sessions/geographic/sessionCountryCode.json           |  2 +-
 .../sessions/geographic/sessionCountryName.json           |  2 +-
 .../cxs/properties/sessions/technical/deviceCategory.json |  2 +-
 .../sessions/technical/operatingSystemFamily.json         |  2 +-
 .../sessions/technical/operatingSystemName.json           |  2 +-
 .../properties/sessions/technical/pageReferringURL.json   |  2 +-
 .../cxs/properties/sessions/technical/remoteAddr.json     |  2 +-
 .../cxs/properties/sessions/technical/remoteHost.json     |  2 +-
 .../cxs/properties/sessions/technical/userAgentName.json  |  2 +-
 .../properties/sessions/technical/userAgentVersion.json   |  2 +-
 src/site/markdown/versions/1.1/concepts.md                |  2 +-
 src/site/markdown/versions/1.1/getting-started.md         |  2 +-
 src/site/markdown/versions/master/concepts.md             |  2 +-
 src/site/markdown/versions/master/custom-extensions.md    | 10 +++++-----
 src/site/markdown/versions/master/twitter-sample.md       |  2 +-
 92 files changed, 106 insertions(+), 106 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json b/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json
index ec4a531..b717d2e 100644
--- a/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json
+++ b/extensions/lists-extension/actions/src/main/resources/META-INF/cxs/actions/addToLists.json
@@ -3,10 +3,10 @@
     "id": "addToListsAction",
     "name": "addToListsAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "demographic",
-      "hidden.availableToEndUser"
+      "availableToEndUser"
     ],
     "readOnly": true
   },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json b/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json
index f5b9bf5..eede8ba 100644
--- a/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json
+++ b/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcCreateOrUpdateLead.json
@@ -3,10 +3,10 @@
     "id": "sfdcCreateOrUpdateLeadAction",
     "name": "sfdcCreateOrUpdateLeadAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "demographic",
-      "hidden.availableToEndUser"
+      "availableToEndUser"
     ],
     "readOnly": true
   },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json
----------------------------------------------------------------------
diff --git a/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json b/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json
index f53501f..4ba1856 100644
--- a/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json
+++ b/extensions/salesforce-connector/actions/src/main/resources/META-INF/cxs/actions/sfdcUpdateProfileFromLead.json
@@ -3,10 +3,10 @@
     "id": "sfdcUpdateProfileFromLeadAction",
     "name": "sfdcUpdateProfileFromLeadAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "demographic",
-      "hidden.availableToEndUser"
+      "availableToEndUser"
     ],
     "readOnly": true
   },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/extensions/weather-update/core/src/main/resources/META-INF/cxs/actions/UpdateWeatherAction.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/actions/UpdateWeatherAction.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/actions/UpdateWeatherAction.json
index 339291b..5ab40df 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/actions/UpdateWeatherAction.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/actions/UpdateWeatherAction.json
@@ -3,10 +3,10 @@
     "id": "weatherUpdateAction",
     "name": "Update session with local weather information",
     "description": "This action will retrieve the weather associated with the resolved location of the user (from his IP address)",
-    "tags": [
+    "systemTags": [
       "event",
-      "hidden.availableToEndUser",
-      "hidden.hasNoTemplate"
+      "availableToEndUser",
+      "hasNoTemplate"
     ],
     "readOnly": true
   },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json
index 5f9a5bf..ad23875 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherLike.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "weatherLike",
     "name": "Weather Description",
-    "tags": [
+    "systemTags": [
       "properties",
       "sessionProperties"
     ]

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json
index 11865d8..bae8ceb 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherTemp.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "weatherTemperature",
     "name": "Weather Temperature",
-    "tags": [
+    "systemTags": [
       "properties",
       "sessionProperties"
     ]

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json
index 8e99d87..f0629dc 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindDirection.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "weatherWindDirection",
     "name": "Weather Wind Direction",
-    "tags": [
+    "systemTags": [
       "properties",
       "sessionProperties"
     ]

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json
----------------------------------------------------------------------
diff --git a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json
index 422090d..4b668f5 100755
--- a/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json
+++ b/extensions/weather-update/core/src/main/resources/META-INF/cxs/properties/sessions/weather/weatherWindSpeed.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "weatherWindSpeed",
     "name": "Weather Wind Speed",
-    "tags": [
+    "systemTags": [
       "properties",
       "sessionProperties"
     ]

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json
index 869a287..35d4ade 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/allEventToProfilePropertiesAction.json
@@ -3,7 +3,7 @@
     "id": "allEventToProfilePropertiesAction",
     "name": "allEventToProfilePropertiesAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json
index 0ed9ebd..b26cde5 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileAgeAction.json
@@ -3,7 +3,7 @@
     "id": "evaluateProfileAgeAction",
     "name": "evaluateProfileAgeAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json
index 188f547..8cf3947 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/evaluateProfileSegmentsAction.json
@@ -3,7 +3,7 @@
     "id": "evaluateProfileSegmentsAction",
     "name": "evaluateProfileSegmentsAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json
index a3a045d..5db3059 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/eventToProfilePropertyAction.json
@@ -3,7 +3,7 @@
     "id": "eventToProfilePropertyAction",
     "name": "eventToProfilePropertyAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json
index 77d9969..6082f9f 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/mergeProfilesOnPropertyAction.json
@@ -3,7 +3,7 @@
     "id": "mergeProfilesOnPropertyAction",
     "name": "mergeProfilesOnPropertyAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "demographic"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json
index d7a8d09..e10f1e4 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/sendEventAction.json
@@ -3,7 +3,7 @@
     "id": "sendEventAction",
     "name": "sendEventAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json
index 4bd77bb..3e10c92 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setEventOccurenceCountAction.json
@@ -3,7 +3,7 @@
     "id": "setEventOccurenceCountAction",
     "name": "setEventOccurenceCountAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "demographic"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json
index 25cf616..dad270d 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json
@@ -3,11 +3,11 @@
     "id": "setPropertyAction",
     "name": "setPropertyAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "demographic",
-      "hidden.availableToEndUser",
-      "hidden.allowMultipleInstances"
+      "availableToEndUser",
+      "allowMultipleInstances"
     ],
     "readOnly": true
   },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json
index a12a0dd..45464ab 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/booleanCondition.json
@@ -3,7 +3,7 @@
     "id": "booleanCondition",
     "name": "booleanCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "logical",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json
index 45482cc..024c3a3 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventPropertyCondition.json
@@ -3,7 +3,7 @@
     "id": "eventPropertyCondition",
     "name": "eventPropertyCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "demographic",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json
index 0a104e4..161ff42 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/eventTypeCondition.json
@@ -3,7 +3,7 @@
     "id": "eventTypeCondition",
     "name": "eventTypeCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json
index b1e4fff..8abaf09 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/formEventCondition.json
@@ -3,7 +3,7 @@
     "id": "formEventCondition",
     "name": "formEventCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
index cdc340d..809d690 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationByPointSessionCondition.json
@@ -3,7 +3,7 @@
     "id": "geoLocationByPointSessionCondition",
     "name": "geoLocationByPointSessionCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "geographic",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json
index c3206ae..693bb0e 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/geoLocationSessionCondition.json
@@ -3,7 +3,7 @@
     "id": "geoLocationSessionCondition",
     "name": "geoLocationSessionCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "geographic",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json
index 8d9743b..4e4bf6f 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/goalMatchCondition.json
@@ -3,7 +3,7 @@
     "id": "goalMatchCondition",
     "name": "goalMatchCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "condition",
       "profileCondition",
       "profileTags",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json
index b866e48..19fa065 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/matchAllCondition.json
@@ -3,7 +3,7 @@
     "id": "matchAllCondition",
     "name": "matchAllCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "logical",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json
index c90ce4f..aa8f667 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/newVisitorCondition.json
@@ -3,7 +3,7 @@
     "id": "newVisitorCondition",
     "name": "newVisitorCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json
index 3ab26b3..e030e62 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/notCondition.json
@@ -3,7 +3,7 @@
     "id": "notCondition",
     "name": "notCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "logical",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json
index 52c9d5e..71a87f3 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/pastEventCondition.json
@@ -3,7 +3,7 @@
     "id": "pastEventCondition",
     "name": "pastEventCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json
index 06ae965..3506ca7 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profilePropertyCondition.json
@@ -3,7 +3,7 @@
     "id": "profilePropertyCondition",
     "name": "profilePropertyCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "demographic",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json
index b1a40e1..3bd1e57 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileSegmentCondition.json
@@ -3,7 +3,7 @@
     "id": "profileSegmentCondition",
     "name": "profileSegmentCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "aggregated",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json
index 7910a13..184ee5f 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUpdatedEventCondition.json
@@ -3,7 +3,7 @@
     "id": "profileUpdatedEventCondition",
     "name": "profileUpdatedEventCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json
index 4891a5a..8744e12 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/profileUserListCondition.json
@@ -3,7 +3,7 @@
     "id": "profileUserListCondition",
     "name": "profileUserListCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "aggregated",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json
index 165ee4a..b475d1a 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/returningVisitorCondition.json
@@ -3,7 +3,7 @@
     "id": "returningVisitorCondition",
     "name": "returningVisitorCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json
index 89c176f..a323d14 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/scoringCondition.json
@@ -3,7 +3,7 @@
     "id": "scoringCondition",
     "name": "scoringCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "aggregated",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json
index fb43b88..2d49049 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionCreatedEventCondition.json
@@ -3,7 +3,7 @@
     "id": "sessionCreatedEventCondition",
     "name": "sessionCreatedEventCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json
index 47b214b..0208ca5 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionDurationCondition.json
@@ -3,7 +3,7 @@
     "id": "sessionDurationCondition",
     "name": "sessionDurationCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json
index c613839..b963b39 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sessionPropertyCondition.json
@@ -3,7 +3,7 @@
     "id": "sessionPropertyCondition",
     "name": "sessionPropertyCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
index 1aaf934..fb61dd2 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/sourceEventPropertyCondition.json
@@ -3,7 +3,7 @@
     "id": "sourceEventPropertyCondition",
     "name": "sourceEventPropertyCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "condition",
       "sourceEventCondition"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json
index 8efc923..dad63bd 100644
--- a/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json
+++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/conditions/videoViewEventCondition.json
@@ -3,7 +3,7 @@
     "id": "videoViewEventCondition",
     "name": "videoViewEventCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json
----------------------------------------------------------------------
diff --git a/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json b/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json
index a205b9c..d67e690 100644
--- a/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json
+++ b/plugins/hover-event/src/main/resources/META-INF/cxs/conditions/hoverEventCondition.json
@@ -3,7 +3,7 @@
     "id": "hoverEventCondition",
     "name": "hoverEventCondition",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
       "condition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json
----------------------------------------------------------------------
diff --git a/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json b/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json
index fd3c8e9..d7314b9 100644
--- a/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json
+++ b/plugins/mail/src/main/resources/META-INF/cxs/actions/sendMailAction.json
@@ -3,11 +3,11 @@
     "id": "sendMailAction",
     "name": "sendMailAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event",
-      "hidden.availableToEndUser",
-      "hidden.allowMultipleInstances"
+      "availableToEndUser",
+      "allowMultipleInstances"
     ],
     "readOnly": true
   },

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json b/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json
index 3bd5d81..54d7b6f 100644
--- a/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json
+++ b/plugins/request/src/main/resources/META-INF/cxs/actions/requestHeaderToProfilePropertyAction.json
@@ -3,7 +3,7 @@
     "id": "requestHeaderToProfilePropertyAction",
     "name": "requestHeaderToProfilePropertyAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json
----------------------------------------------------------------------
diff --git a/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json b/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json
index 0288056..d151280 100644
--- a/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json
+++ b/plugins/request/src/main/resources/META-INF/cxs/actions/requestParameterToProfilePropertyAction.json
@@ -3,7 +3,7 @@
     "id": "requestParameterToProfilePropertyAction",
     "name": "requestParameterToProfilePropertyAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json
----------------------------------------------------------------------
diff --git a/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json b/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json
index 09935f5..925f6ea 100644
--- a/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json
+++ b/plugins/request/src/main/resources/META-INF/cxs/actions/setRemoteHostInfoAction.json
@@ -3,7 +3,7 @@
     "id": "setRemoteHostInfoAction",
     "name": "setRemoteHostInfoAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
index 577bde3..b2afa07 100644
--- a/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
@@ -118,7 +118,7 @@ public class DefinitionsServiceEndPoint {
     @Path("/conditions/{conditionId}")
     public RESTConditionType getConditionType(@PathParam("conditionId") String id, @HeaderParam("Accept-Language") String language) {
         ConditionType conditionType = definitionsService.getConditionType(id);
-        return localizationHelper.generateCondition(conditionType, language);
+        return conditionType != null ? localizationHelper.generateCondition(conditionType, language) : null;
     }
 
     /**
@@ -203,7 +203,7 @@ public class DefinitionsServiceEndPoint {
     @Path("/actions/{actionId}")
     public RESTActionType getActionType(@PathParam("actionId") String id, @HeaderParam("Accept-Language") String language) {
         ActionType actionType = definitionsService.getActionType(id);
-        return localizationHelper.generateAction(actionType, language);
+        return actionType != null ? localizationHelper.generateAction(actionType, language) : null;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json
----------------------------------------------------------------------
diff --git a/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json b/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json
index a14a343..2f5b8f3 100644
--- a/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json
+++ b/samples/trainingplugin/src/main/resources/META-INF/cxs/actions/trainingNotifAction.json
@@ -3,7 +3,7 @@
     "id": "trainingNotifAction",
     "name": "Training Action",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json b/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
index 81c468a..2420ed7 100644
--- a/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
+++ b/samples/tweet-button-plugin/src/main/resources/META-INF/cxs/actions/incrementTweetNumberAction.json
@@ -3,7 +3,7 @@
     "id": "incrementTweetNumberAction",
     "name": "incrementTweetNumberAction",
     "description": "",
-    "tags": [
+    "systemTags": [
       "profileTags",
       "event"
     ],

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
index 1104066..865f7f6 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/firstName.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "firstName",
         "name": "First name",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "basicProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
index 5a39b39..ec84eb6 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/gender.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "gender",
         "name": "Gender",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "basicProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
index b7aaa1c..e745550 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/lastName.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "lastName",
         "name": "Last name",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "basicProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
index 06fa815..6cc1070 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/basic/nationality.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "nationality",
         "name": "Nationality",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "basicProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
index 4bab6c8..5b5799e 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/address.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "address",
         "name": "Address",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "contactProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
index 166baba..ec9966b 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/city.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "city",
         "name": "City",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "contactProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
index 1e34b94..ad50753 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/countryName.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "countryName",
         "name": "Country",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "contactProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
index 028eee3..662358c 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/email.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "email",
         "name": "Email",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "contactProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
index 3c40ff1..8b7a2bf 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/phoneNumber.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "phoneNumber",
         "name": "Phone number",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "contactProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
index ff1f676..3469042 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/contact/zipCode.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "zipCode",
         "name": "ZIP Code",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "contactProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json b/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
index 7d1f66d..46db4d9 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/lead/leadAssignedTo.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "leadAssignedTo",
         "name": "Assigned to",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "leadProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
index cd0f03d..d0ef96e 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "age",
     "name": "Age",
-    "tags": [
+    "systemTags": [
       "properties",
       "profileProperties",
       "personalProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
index ef6dee5..c23a05a 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/birthDate.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "birthDate",
     "name": "Birth Date",
-    "tags": [
+    "systemTags": [
       "properties",
       "profileProperties",
       "personalProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
index f422883..04d3f8a 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/kids.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "kids",
         "name": "Kids",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "personalProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
index 774f8f5..6a3d4df 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/maritalStatus.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "maritalStatus",
         "name": "Marital status",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "personalProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
index 5f912ee..157c4dd 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/facebookId.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "facebookId",
         "name": "Facebook ID",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "socialProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
index 6b1806a..c0f0c12 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/googleid.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "googleId",
         "name": "Google ID",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "socialProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
index d6b6ad6..c8ec497 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/linkedInId.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "linkedInId",
         "name": "LinkedIn ID",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "socialProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json b/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
index a3789c6..f4a75b3 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/social/twitterId.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "twitterId",
         "name": "Twitter ID",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "socialProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
index 058bcbe..3c04897 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/firstVisit.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "firstVisit",
         "name": "First visit",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "systemProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
index d784f5c..96da5d8 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/lastVisit.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "lastVisit",
         "name": "Last visit",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "systemProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
index 5759e36..25180f1 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
@@ -2,7 +2,7 @@
     "metadata": {
       "id": "nbOfVisits",
       "name": "Number of visits",
-      "tags": [
+      "systemTags": [
         "properties",
         "profileProperties",
         "systemProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
index 4aa04a1..eb1287e 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/previousVisit.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "previousVisit",
     "name": "Previous visit",
-    "tags": [
+    "systemTags": [
       "properties",
       "profileProperties",
       "systemProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
index 18a4ee2..201955f 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/company.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "company",
         "name": "Company",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "workProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
index d9a88a0..109c1f9 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/income.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "income",
         "name": "Income",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "workProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json b/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
index fc0ca15..b0173f5 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/work/jobTitle.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "jobTitle",
         "name": "Job Title",
-        "tags": [
+        "systemTags": [
             "properties",
             "profileProperties",
             "workProfileProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
index 0f72c88..b92fb70 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/latitude.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "latitude",
         "name": "Latitude",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "geographicSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
index 7cbcd7a..4cddffc 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/longitude.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "longitude",
         "name": "Longitude",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "geographicSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
index c8939ce..eb85afb 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv1.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "sessionAdminSubDiv1",
     "name": "State/Region/Province",
-    "tags": [
+    "systemTags": [
       "properties",
       "sessionProperties",
       "geographicSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
index bad2a10..20e999e 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionAdminSubDiv2.json
@@ -2,7 +2,7 @@
   "metadata": {
     "id": "sessionAdminSubDiv2",
     "name": "SubRegion/County",
-    "tags": [
+    "systemTags": [
       "properties",
       "sessionProperties",
       "geographicSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
index 57632ca..7d1c33e 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCity.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "sessionCity",
         "name": "City",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "geographicSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
index 38e7680..e837ed1 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryCode.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "sessionCountryCode",
         "name": "Country code",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "geographicSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
index ff61cc0..3f2ac75 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/geographic/sessionCountryName.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "sessionCountryName",
         "name": "Country",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "geographicSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
index 706915f..faed07f 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/deviceCategory.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "deviceCategory",
         "name": "Device category",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "technicalSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
index bce7688..2e4f830 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemFamily.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "operatingSystemFamily",
         "name": "Operating system family",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "technicalSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
index 5d77863..9ccf424 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/operatingSystemName.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "operatingSystemName",
         "name": "Operating system name",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "technicalSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
index 378a97c..b351ff8 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/pageReferringURL.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "pageReferringURL",
         "name": "Previous page URL",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "technicalSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
index 8231c2f..c851caf 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteAddr.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "remoteAddr",
         "name": "Remote IP address",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "technicalSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
index b33265e..f9cb4e0 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/remoteHost.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "remoteHost",
         "name": "Remote host address",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "technicalSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
index 1a2855d..2d4b79d 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentName.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "userAgentName",
         "name": "Browser user agent name",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "technicalSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
----------------------------------------------------------------------
diff --git a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
index 0675427..c131d71 100644
--- a/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
+++ b/services/src/main/resources/META-INF/cxs/properties/sessions/technical/userAgentVersion.json
@@ -2,7 +2,7 @@
     "metadata": {
         "id": "userAgentVersion",
         "name": "Browser user agent version",
-        "tags": [
+        "systemTags": [
             "properties",
             "sessionProperties",
             "technicalSessionProperties"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/src/site/markdown/versions/1.1/concepts.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/1.1/concepts.md b/src/site/markdown/versions/1.1/concepts.md
index 4f4e7be..79cb748 100644
--- a/src/site/markdown/versions/1.1/concepts.md
+++ b/src/site/markdown/versions/1.1/concepts.md
@@ -51,7 +51,7 @@ Some types can be dynamically defined at runtime by calling to the REST API whil
     "metadata": {
         "id": "tweetNb",
         "name": "tweetNb",
-        "tags": ["social"]
+        "systemTags": ["social"]
     },
     "target": "profiles",
     "type": "integer"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/src/site/markdown/versions/1.1/getting-started.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/1.1/getting-started.md b/src/site/markdown/versions/1.1/getting-started.md
index 0f0e220..35aedc2 100644
--- a/src/site/markdown/versions/1.1/getting-started.md
+++ b/src/site/markdown/versions/1.1/getting-started.md
@@ -322,7 +322,7 @@ Let's now look at our custom [`incrementTweetNumberAction`](https://github.com/a
 {
   "id": "incrementTweetNumberAction",
   "actionExecutor": "incrementTweetNumber",
-  "tags": [
+  "systemTags": [
     "event"
   ],
   "parameters": []

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/src/site/markdown/versions/master/concepts.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/master/concepts.md b/src/site/markdown/versions/master/concepts.md
index 8b33c89..13fe485 100644
--- a/src/site/markdown/versions/master/concepts.md
+++ b/src/site/markdown/versions/master/concepts.md
@@ -51,7 +51,7 @@ Some types can be dynamically defined at runtime by calling to the REST API whil
     "metadata": {
         "id": "tweetNb",
         "name": "tweetNb",
-        "tags": ["social"]
+        "systemTags": ["social"]
     },
     "target": "profiles",
     "type": "integer"

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/src/site/markdown/versions/master/custom-extensions.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/master/custom-extensions.md b/src/site/markdown/versions/master/custom-extensions.md
index e08cfca..43b3635 100644
--- a/src/site/markdown/versions/master/custom-extensions.md
+++ b/src/site/markdown/versions/master/custom-extensions.md
@@ -161,7 +161,7 @@ Here is an example of a property definition JSON file
         "metadata": {
             "id": "city",
             "name": "City",
-            "tags": ["properties", "profileProperties", "contactProfileProperties"]
+            "systemTags": ["properties", "profileProperties", "contactProfileProperties"]
         },
         "type": "string",
         "defaultValue": "",
@@ -184,7 +184,7 @@ type eventTypeCondition.
         "id": "profileUpdatedEventCondition",
         "name": "profileUpdatedEventCondition",
         "description": "",
-        "tags": [
+        "systemTags": [
           "event",
           "eventCondition"
         ],
@@ -262,9 +262,9 @@ Here is an example of a JSON action definition:
         "id": "addToListsAction",
         "name": "addToListsAction",
         "description": "",
-        "tags": [
+        "systemTags": [
           "demographic",
-          "hidden.availableToEndUser"
+          "availableToEndUser"
         ],
         "readOnly": true
       },
@@ -322,7 +322,7 @@ Here is an example of JSON custom condition definition:
         "id": "matchAllCondition",
         "name": "matchAllCondition",
         "description": "",
-        "tags": [
+        "systemTags": [
           "logical",
           "profileCondition",
           "eventCondition",

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/6a4a7e60/src/site/markdown/versions/master/twitter-sample.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/master/twitter-sample.md b/src/site/markdown/versions/master/twitter-sample.md
index f4829df..cf80da2 100644
--- a/src/site/markdown/versions/master/twitter-sample.md
+++ b/src/site/markdown/versions/master/twitter-sample.md
@@ -299,7 +299,7 @@ Let's now look at our custom [`incrementTweetNumberAction`](https://github.com/a
 {
   "id": "incrementTweetNumberAction",
   "actionExecutor": "incrementTweetNumber",
-  "tags": [
+  "systemTags": [
     "event"
   ],
   "parameters": []



[09/15] incubator-unomi git commit: UNOMI-117 add query parameters to look in tags or system tags

Posted by dg...@apache.org.
UNOMI-117 add query parameters to look in tags or system tags


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/cd730387
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/cd730387
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/cd730387

Branch: refs/heads/master
Commit: cd730387c772fa3bafe7f7f51c8e358616ce0b8e
Parents: 8e6132d
Author: dgaillard <dg...@jahia.com>
Authored: Fri Sep 29 16:12:45 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Fri Sep 29 16:12:45 2017 +0200

----------------------------------------------------------------------
 .../apache/unomi/api/services/ProfileService.java | 11 +++++++++++
 .../apache/unomi/rest/ProfileServiceEndPoint.java | 18 ++++++++++++------
 .../services/services/ProfileServiceImpl.java     |  7 ++++++-
 3 files changed, 29 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/cd730387/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
index c8917e3..30518a8 100644
--- a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
@@ -330,5 +330,16 @@ public interface ProfileService {
      */
     Set<PropertyType> getExistingProperties(String tag, String itemType);
 
+    /**
+     * Retrieves the existing property types for the specified type as defined by the Item subclass public field {@code ITEM_TYPE} and with the specified tag.
+     *
+     * TODO: move to a different class
+     *
+     * @param tag      the tag we're interested in
+     * @param itemType the String representation of the item type we want to retrieve the count of, as defined by its class' {@code ITEM_TYPE} field
+     * @return all property types defined for the specified item type and with the specified tag
+     */
+    Set<PropertyType> getExistingProperties(String tag, String itemType, boolean systemTag);
+
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/cd730387/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
index 770f8b6..dff5bab 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
@@ -439,19 +439,25 @@ public class ProfileServiceEndPoint {
     }
 
     /**
-     * Retrieves the existing property types for the specified type as defined by the Item subclass public field {@code ITEM_TYPE} and with the specified tag.
+     * Retrieves the existing property types for the specified type as defined by the Item subclass public field {@code ITEM_TYPE} and with the specified tag or system tag.
      *
      * TODO: move to a different class
      *
-     * @param tag      the tag we're interested in
-     * @param itemType the String representation of the item type we want to retrieve the count of, as defined by its class' {@code ITEM_TYPE} field
-     * @param language the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
+     * @param tag           the tag we're interested in
+     * @param isSystemTag   if we should look in system tags instead of tags
+     * @param itemType      the String representation of the item type we want to retrieve the count of, as defined by its class' {@code ITEM_TYPE} field
+     * @param language      the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
      * @return all property types defined for the specified item type and with the specified tag
      */
     @GET
     @Path("/existingProperties")
-    public Collection<PropertyType> getExistingProperties(@QueryParam("tag") String tag, @QueryParam("itemType") String itemType, @HeaderParam("Accept-Language") String language) {
-        Set<PropertyType> properties = profileService.getExistingProperties(tag, itemType);
+    public Collection<PropertyType> getExistingProperties(@QueryParam("tag") String tag, @QueryParam("isSystemTag") boolean isSystemTag, @QueryParam("itemType") String itemType, @HeaderParam("Accept-Language") String language) {
+        Set<PropertyType> properties;
+        if (isSystemTag) {
+            properties = profileService.getExistingProperties(tag, itemType, isSystemTag);
+        } else {
+            properties = profileService.getExistingProperties(tag, itemType);
+        }
         return properties;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/cd730387/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
index 17e4ea5..746dceb 100644
--- a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
@@ -295,9 +295,14 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
 
     @Override
     public Set<PropertyType> getExistingProperties(String tag, String itemType) {
+        return getExistingProperties(tag, itemType, false);
+    }
+
+    @Override
+    public Set<PropertyType> getExistingProperties(String tag, String itemType, boolean systemTag) {
         Set<PropertyType> filteredProperties = new LinkedHashSet<PropertyType>();
         // TODO: here we limit the result to the definition we have, but what if some properties haven't definition but exist in ES mapping ?
-        Set<PropertyType> profileProperties = getPropertyTypeByTag(tag);
+        Set<PropertyType> profileProperties = systemTag ? getPropertyTypeBySystemTag(tag) : getPropertyTypeByTag(tag);
         Map<String, Map<String, Object>> itemMapping = persistenceService.getPropertiesMapping(itemType);
 
         if (itemMapping == null || itemMapping.isEmpty() || itemMapping.get("properties") == null || itemMapping.get("properties").get("properties") == null) {


[15/15] incubator-unomi git commit: [jgitflow-maven-plugin]merging 'feature-UNOMI-117' into 'master'

Posted by dg...@apache.org.
[jgitflow-maven-plugin]merging 'feature-UNOMI-117' into 'master'

Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/abffc918
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/abffc918
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/abffc918

Branch: refs/heads/master
Commit: abffc918eafaab053620ba7713c3227216dbc9d1
Parents: 8baf626 6a01edc
Author: dgaillard <dg...@jahia.com>
Authored: Fri Oct 6 15:33:06 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Fri Oct 6 15:33:06 2017 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/unomi/api/Item.java    |   9 +
 .../java/org/apache/unomi/api/Metadata.java     |  29 ++-
 .../java/org/apache/unomi/api/PropertyType.java |  49 ----
 api/src/main/java/org/apache/unomi/api/Tag.java | 193 ----------------
 .../java/org/apache/unomi/api/ValueType.java    |  38 +--
 .../unomi/api/services/DefinitionsService.java  |  96 ++------
 .../unomi/api/services/ProfileService.java      |  32 ++-
 .../META-INF/cxs/actions/addToLists.json        |   5 +-
 .../src/main/feature/feature.xml                |  42 ++++
 .../cxs/actions/sfdcCreateOrUpdateLead.json     |   5 +-
 .../cxs/actions/sfdcUpdateProfileFromLead.json  |   5 +-
 .../cxs/actions/UpdateWeatherAction.json        |   6 +-
 .../sessions/weather/weatherLike.json           |   9 +-
 .../sessions/weather/weatherTemp.json           |   9 +-
 .../sessions/weather/weatherWindDirection.json  |   9 +-
 .../sessions/weather/weatherWindSpeed.json      |   9 +-
 itests/pom.xml                                  |   2 +-
 kar/src/main/feature/feature.xml                |  35 +--
 performance-tests/pom.xml                       |   2 +-
 .../src/test/scala/unomi/AdminScenario.scala    |   8 +-
 .../elasticsearch/ESCustomObjectMapper.java     |  43 ++++
 .../persistence/elasticsearch/ESItemMixIn.java  |  30 +++
 .../ElasticSearchPersistenceServiceImpl.java    |  22 +-
 .../allEventToProfilePropertiesAction.json      |   3 +-
 .../cxs/actions/evaluateProfileAgeAction.json   |   3 +-
 .../actions/evaluateProfileSegmentsAction.json  |   3 +-
 .../actions/eventToProfilePropertyAction.json   |   3 +-
 .../actions/mergeProfilesOnPropertyAction.json  |   3 +-
 .../META-INF/cxs/actions/sendEventAction.json   |   3 +-
 .../actions/setEventOccurenceCountAction.json   |   3 +-
 .../META-INF/cxs/actions/setPropertyAction.json |   7 +-
 .../cxs/conditions/booleanCondition.json        |   4 +-
 .../cxs/conditions/eventPropertyCondition.json  |   4 +-
 .../cxs/conditions/eventTypeCondition.json      |   4 +-
 .../cxs/conditions/formEventCondition.json      |   4 +-
 .../geoLocationByPointSessionCondition.json     |   4 +-
 .../conditions/geoLocationSessionCondition.json |   4 +-
 .../cxs/conditions/goalMatchCondition.json      |   4 +-
 .../cxs/conditions/matchAllCondition.json       |   4 +-
 .../cxs/conditions/newVisitorCondition.json     |   4 +-
 .../META-INF/cxs/conditions/notCondition.json   |   4 +-
 .../cxs/conditions/pastEventCondition.json      |   4 +-
 .../conditions/profilePropertyCondition.json    |   4 +-
 .../cxs/conditions/profileSegmentCondition.json |   4 +-
 .../profileUpdatedEventCondition.json           |   4 +-
 .../conditions/profileUserListCondition.json    |   4 +-
 .../conditions/returningVisitorCondition.json   |   4 +-
 .../cxs/conditions/scoringCondition.json        |   4 +-
 .../sessionCreatedEventCondition.json           |   4 +-
 .../conditions/sessionDurationCondition.json    |   4 +-
 .../conditions/sessionPropertyCondition.json    |   4 +-
 .../sourceEventPropertyCondition.json           |   3 +-
 .../cxs/conditions/videoViewEventCondition.json |   4 +-
 .../cxs/conditions/hoverEventCondition.json     |   4 +-
 .../META-INF/cxs/actions/sendMailAction.json    |   7 +-
 .../requestHeaderToProfilePropertyAction.json   |   3 +-
 ...requestParameterToProfilePropertyAction.json |   3 +-
 .../cxs/actions/setRemoteHostInfoAction.json    |   3 +-
 pom.xml                                         |   1 +
 .../unomi/rest/DefinitionsServiceEndPoint.java  | 147 +++++-------
 .../apache/unomi/rest/LocalizationHelper.java   |  69 +-----
 .../unomi/rest/ProfileServiceEndPoint.java      |  85 +++++--
 .../org/apache/unomi/rest/RESTActionType.java   |  26 ++-
 .../apache/unomi/rest/RESTConditionType.java    |  29 ++-
 .../java/org/apache/unomi/rest/RESTTag.java     |  87 -------
 .../org/apache/unomi/rest/RESTValueType.java    |   8 +-
 samples/trainingplugin/pom.xml                  |   4 +-
 .../training/TrainedNotificationAction.java     |   2 +-
 .../cxs/actions/trainingNotifAction.json        |   3 +-
 .../actions/IncrementTweetNumberAction.java     |   4 +-
 .../cxs/actions/incrementTweetNumberAction.json |   3 +-
 .../services/DefinitionsServiceImpl.java        | 170 +++-----------
 .../services/services/GoalsServiceImpl.java     |  44 ----
 .../services/services/ProfileServiceImpl.java   |  44 ++--
 .../services/services/RulesServiceImpl.java     |   4 +-
 .../properties/profiles/basic/firstName.json    |  11 +-
 .../cxs/properties/profiles/basic/gender.json   |  11 +-
 .../cxs/properties/profiles/basic/lastName.json |  11 +-
 .../properties/profiles/basic/nationality.json  |  11 +-
 .../properties/profiles/contact/address.json    |  19 +-
 .../cxs/properties/profiles/contact/city.json   |  11 +-
 .../profiles/contact/countryName.json           |  11 +-
 .../cxs/properties/profiles/contact/email.json  |  11 +-
 .../profiles/contact/phoneNumber.json           |  11 +-
 .../properties/profiles/contact/zipCode.json    |  11 +-
 .../profiles/lead/leadAssignedTo.json           |  11 +-
 .../cxs/properties/profiles/personal/age.json   |   8 +-
 .../properties/profiles/personal/birthDate.json |   8 +-
 .../cxs/properties/profiles/personal/kids.json  |  11 +-
 .../profiles/personal/maritalStatus.json        |  11 +-
 .../properties/profiles/social/facebookId.json  |  11 +-
 .../properties/profiles/social/googleid.json    |  11 +-
 .../properties/profiles/social/linkedInId.json  |  11 +-
 .../properties/profiles/social/twitterId.json   |  11 +-
 .../properties/profiles/system/firstVisit.json  |  11 +-
 .../properties/profiles/system/lastVisit.json   |  11 +-
 .../properties/profiles/system/nbOfVisits.json  |  11 +-
 .../profiles/system/previousVisit.json          |  11 +-
 .../cxs/properties/profiles/work/company.json   |  11 +-
 .../cxs/properties/profiles/work/income.json    |  11 +-
 .../cxs/properties/profiles/work/jobTitle.json  |  11 +-
 .../sessions/geographic/latitude.json           |  11 +-
 .../sessions/geographic/longitude.json          |  11 +-
 .../geographic/sessionAdminSubDiv1.json         |  11 +-
 .../geographic/sessionAdminSubDiv2.json         |  11 +-
 .../sessions/geographic/sessionCity.json        |  11 +-
 .../sessions/geographic/sessionCountryCode.json |  11 +-
 .../sessions/geographic/sessionCountryName.json |  11 +-
 .../sessions/technical/deviceCategory.json      |  11 +-
 .../technical/operatingSystemFamily.json        |  11 +-
 .../sessions/technical/operatingSystemName.json |  11 +-
 .../sessions/technical/pageReferringURL.json    |  11 +-
 .../sessions/technical/remoteAddr.json          |  11 +-
 .../sessions/technical/remoteHost.json          |  11 +-
 .../sessions/technical/userAgentName.json       |  11 +-
 .../sessions/technical/userAgentVersion.json    |  11 +-
 .../resources/META-INF/cxs/tags/aggregated.json |   4 -
 .../META-INF/cxs/tags/autocompleted.json        |   4 -
 .../META-INF/cxs/tags/campaign/campaign.json    |   4 -
 .../cxs/tags/campaign/landingCampaign.json      |   4 -
 .../cxs/tags/campaign/parameterCampaign.json    |   4 -
 .../cxs/tags/campaign/referrerCampaign.json     |   4 -
 .../META-INF/cxs/tags/conditions/condition.json |   4 -
 .../cxs/tags/conditions/eventCondition.json     |   4 -
 .../cxs/tags/conditions/profileCondition.json   |   4 -
 .../cxs/tags/conditions/sessionCondition.json   |   4 -
 .../tags/conditions/sourceEventCondition.json   |   4 -
 .../cxs/tags/conditions/trackedCondition.json   |   4 -
 .../conditions/usableInPastEventCondition.json  |   4 -
 .../META-INF/cxs/tags/demographic.json          |   4 -
 .../main/resources/META-INF/cxs/tags/event.json |   4 -
 .../resources/META-INF/cxs/tags/geographic.json |   4 -
 .../META-INF/cxs/tags/goals/downloadGoal.json   |   4 -
 .../META-INF/cxs/tags/goals/formGoal.json       |   4 -
 .../META-INF/cxs/tags/goals/funnelGoal.json     |   4 -
 .../resources/META-INF/cxs/tags/goals/goal.json |   4 -
 .../cxs/tags/goals/landingPageGoal.json         |   4 -
 .../META-INF/cxs/tags/goals/pageVisitGoal.json  |   4 -
 .../META-INF/cxs/tags/goals/videoGoal.json      |   4 -
 .../resources/META-INF/cxs/tags/logical.json    |   4 -
 .../META-INF/cxs/tags/profileTags.json          |   4 -
 .../profiles/basicProfileProperties.json        |   6 -
 .../profiles/contactProfileProperties.json      |   5 -
 .../profiles/leadProfileProperties.json         |   6 -
 .../profiles/personalProfileProperties.json     |   5 -
 .../properties/profiles/profileProperties.json  |   4 -
 .../profiles/socialProfileProperties.json       |   6 -
 .../profiles/systemProfileProperties.json       |   6 -
 .../profiles/workProfileProperties.json         |   5 -
 .../cxs/tags/properties/properties.json         |   4 -
 .../sessions/geographicSessionProperties.json   |   5 -
 .../properties/sessions/sessionProperties.json  |   4 -
 .../sessions/technicalSessionProperties.json    |   5 -
 .../main/resources/META-INF/cxs/tags/root.json  |   4 -
 .../cxs/tags/rules/formMappingRule.json         |   4 -
 src/site/markdown/versions/1.1/concepts.md      |   8 +-
 .../markdown/versions/1.1/getting-started.md    |   2 +-
 src/site/markdown/versions/master/concepts.md   |   8 +-
 .../versions/master/custom-extensions.md        |  21 +-
 .../markdown/versions/master/login-sample.md    |   2 +-
 .../markdown/versions/master/twitter-sample.md  |   2 +-
 tools/pom.xml                                   |  36 +++
 tools/shell-commands/pom.xml                    | 106 +++++++++
 .../org/apache/unomi/shell/actions/Start.java   |  37 +++
 .../org/apache/unomi/shell/actions/Stop.java    |  37 +++
 .../org/apache/unomi/shell/actions/Version.java |  29 +++
 .../apache/unomi/shell/migration/Migration.java |  50 ++++
 .../unomi/shell/migration/actions/Migrate.java  |  80 +++++++
 .../shell/migration/impl/MigrationTo130.java    | 230 +++++++++++++++++++
 .../shell/migration/utils/ConsoleUtils.java     |  82 +++++++
 .../unomi/shell/migration/utils/HttpUtils.java  | 163 +++++++++++++
 .../shell/migration/utils/MigrationUtils.java   |  47 ++++
 .../shell/services/UnomiManagementService.java  |  38 +++
 .../internal/UnomiManagementServiceImpl.java    |  88 +++++++
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  83 +++++++
 175 files changed, 2097 insertions(+), 1226 deletions(-)
----------------------------------------------------------------------



[08/15] incubator-unomi git commit: UNOMI-117 implement system tags to allow use of tags that will not be shown to the end user (e.g. to manage UI or elements), update migration to reflect systemTags changes, change compilation order to fix an issue with

Posted by dg...@apache.org.
UNOMI-117 implement system tags to allow use of tags that will not be shown to the end user (e.g. to manage UI or elements), update migration to reflect systemTags changes, change compilation order to fix an issue with shell-commands bundle, add test to not override an object in ES if it exist yet


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/8e6132d2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/8e6132d2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/8e6132d2

Branch: refs/heads/master
Commit: 8e6132d219e110f6c9ded953154f6591f1d9052a
Parents: b30d328
Author: dgaillard <dg...@jahia.com>
Authored: Fri Sep 29 14:00:57 2017 +0200
Committer: dgaillard <dg...@jahia.com>
Committed: Fri Sep 29 14:00:57 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/unomi/api/Metadata.java     |  21 +-
 .../unomi/api/services/DefinitionsService.java  |  32 ++-
 .../unomi/api/services/ProfileService.java      |  14 +-
 itests/pom.xml                                  |   2 +-
 kar/src/main/feature/feature.xml                |   2 +-
 performance-tests/pom.xml                       |   2 +-
 pom.xml                                         |   2 +-
 .../unomi/rest/DefinitionsServiceEndPoint.java  |  48 +++-
 .../apache/unomi/rest/LocalizationHelper.java   |   2 +
 .../unomi/rest/ProfileServiceEndPoint.java      |  23 +-
 .../org/apache/unomi/rest/RESTActionType.java   |   9 +
 .../apache/unomi/rest/RESTConditionType.java    |   9 +
 samples/trainingplugin/pom.xml                  |   4 +-
 .../services/DefinitionsServiceImpl.java        |  30 ++-
 .../services/services/GoalsServiceImpl.java     |  26 ---
 .../services/services/ProfileServiceImpl.java   |  16 +-
 .../services/services/RulesServiceImpl.java     |   4 +-
 .../versions/master/custom-extensions.md        |   6 +-
 .../markdown/versions/master/login-sample.md    |   2 +-
 tools/pom.xml                                   |   2 +-
 tools/shell-commands/pom.xml                    |   3 +-
 .../unomi/shell/migration/actions/Migrate.java  |   3 +-
 .../shell/migration/impl/MigrationTo130.java    | 230 +++++++++++++++++++
 .../shell/migration/impl/MigrationTo200.java    | 194 ----------------
 .../resources/OSGI-INF/blueprint/blueprint.xml  |   2 +-
 25 files changed, 427 insertions(+), 261 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/api/src/main/java/org/apache/unomi/api/Metadata.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/Metadata.java b/api/src/main/java/org/apache/unomi/api/Metadata.java
index 22216c9..4314a68 100644
--- a/api/src/main/java/org/apache/unomi/api/Metadata.java
+++ b/api/src/main/java/org/apache/unomi/api/Metadata.java
@@ -36,6 +36,7 @@ public class Metadata implements Comparable<Metadata> {
     private String description;
     private String scope;
     private Set<String> tags = new LinkedHashSet<>();
+    private Set<String> systemTags = new LinkedHashSet<>();
     private boolean enabled = true;
     private boolean missingPlugins = false;
     private boolean hidden = false;
@@ -156,13 +157,31 @@ public class Metadata implements Comparable<Metadata> {
     /**
      * Sets the tags.
      *
-     * @param tags the tag i ds
+     * @param tags the tag ids
      */
     public void setTags(Set<String> tags) {
         this.tags = tags;
     }
 
     /**
+     * Retrieves a set of {@link String} system tag names associated with this Metadata
+     *
+     * @return a set of {@link String} system tag names associated with this Metadata
+     */
+    public Set<String> getSystemTags() {
+        return systemTags;
+    }
+
+    /**
+     * Sets the system tags.
+     *
+     * @param systemTags the system tag ids
+     */
+    public void setSystemTags(Set<String> systemTags) {
+        this.systemTags = systemTags;
+    }
+
+    /**
      * Whether the associated entity is considered active by the context server, in particular to check if rules need to be created / triggered
      *
      * @return {@code true} if the associated entity is enabled, {@code false} otherwise

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java b/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java
index 655705a..f3d0afd 100644
--- a/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/DefinitionsService.java
@@ -41,14 +41,22 @@ public interface DefinitionsService {
     Collection<ConditionType> getAllConditionTypes();
 
     /**
-     * Retrieves the set of condition types with the specified tag also retrieving condition types from sub-tags if so specified.
+     * Retrieves the set of condition types with the specified tag.
      *
-     * @param tag                the tag marking the condition types we want to retrieve
+     * @param tag   the tag marking the condition types we want to retrieve
      * @return the set of condition types with the specified tag (and its sub-tags, if specified)
      */
     Set<ConditionType> getConditionTypesByTag(String tag);
 
     /**
+     * Retrieves the set of condition types with the specified system tag.
+     *
+     * @param tag   the system tag marking the condition types we want to retrieve
+     * @return the set of condition types with the specified tag (and its sub-tags, if specified)
+     */
+    Set<ConditionType> getConditionTypesBySystemTag(String tag);
+
+    /**
      * Retrieves the condition type associated with the specified identifier.
      *
      * @param id the identifier of the condition type to retrieve
@@ -78,14 +86,22 @@ public interface DefinitionsService {
     Collection<ActionType> getAllActionTypes();
 
     /**
-     * Retrieves the set of action types with the specified tag also retrieving action types from sub-tags if so specified.
+     * Retrieves the set of action types with the specified tag.
      *
-     * @param tag                the tag marking the action types we want to retrieve
-     * @return the set of action types with the specified tag (and its sub-tags, if specified)
+     * @param tag   the tag marking the action types we want to retrieve
+     * @return the set of action types with the specified tag
      */
     Set<ActionType> getActionTypeByTag(String tag);
 
     /**
+     * Retrieves the set of action types with the specified system tag.
+     *
+     * @param tag   the system tag marking the action types we want to retrieve
+     * @return the set of action types with the specified tag
+     */
+    Set<ActionType> getActionTypeBySystemTag(String tag);
+
+    /**
      * Retrieves the action type associated with the specified identifier.
      *
      * @param id the identifier of the action type to retrieve
@@ -115,10 +131,10 @@ public interface DefinitionsService {
     Collection<ValueType> getAllValueTypes();
 
     /**
-     * Retrieves the set of value types with the specified tag also retrieving value types from sub-tags if so specified.
+     * Retrieves the set of value types with the specified tag.
      *
-     * @param tag                the tag marking the value types we want to retrieve
-     * @return the set of value types with the specified tag (and its sub-tags, if specified)
+     * @param tag   the tag marking the value types we want to retrieve
+     * @return the set of value types with the specified tag
      */
     Set<ValueType> getValueTypeByTag(String tag);
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
index c6daab8..c8917e3 100644
--- a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
@@ -256,16 +256,26 @@ public interface ProfileService {
     Map<String, Collection<PropertyType>> getAllPropertyTypes();
 
     /**
-     * Retrieves all property types with the specified tag also retrieving property types with sub-tags of the specified tag if so specified.
+     * Retrieves all property types with the specified tag
      *
      * TODO: move to a different class
      *
-     * @param tag                the tag name marking property types we want to retrieve
+     * @param tag   the tag name marking property types we want to retrieve
      * @return a Set of the property types with the specified tag
      */
     Set<PropertyType> getPropertyTypeByTag(String tag);
 
     /**
+     * Retrieves all property types with the specified system tag
+     *
+     * TODO: move to a different class
+     *
+     * @param tag   the system tag name marking property types we want to retrieve
+     * @return a Set of the property types with the specified system tag
+     */
+    Set<PropertyType> getPropertyTypeBySystemTag(String tag);
+
+    /**
      * TODO
      * @param fromPropertyTypeId fromPropertyTypeId
      * @return property type mapping

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/itests/pom.xml
----------------------------------------------------------------------
diff --git a/itests/pom.xml b/itests/pom.xml
index 7b5c5e6..2e0222e 100644
--- a/itests/pom.xml
+++ b/itests/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <artifactId>unomi-itests</artifactId>
     <name>Apache Unomi :: Integration Tests</name>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/kar/src/main/feature/feature.xml
----------------------------------------------------------------------
diff --git a/kar/src/main/feature/feature.xml b/kar/src/main/feature/feature.xml
index bb672b4..0ef512c 100644
--- a/kar/src/main/feature/feature.xml
+++ b/kar/src/main/feature/feature.xml
@@ -16,7 +16,7 @@
   ~ limitations under the License.
   -->
 
-<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="unomi-kar">
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.1" name="unomi-kar">
     <feature description="unomi-kar" version="${project.version}" name="unomi-kar"
              start-level="70">
         <feature>war</feature>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/performance-tests/pom.xml
----------------------------------------------------------------------
diff --git a/performance-tests/pom.xml b/performance-tests/pom.xml
index 4429f3a..fb2d90e 100644
--- a/performance-tests/pom.xml
+++ b/performance-tests/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <artifactId>unomi-performance-tests</artifactId>
     <name>Apache Unomi :: Performance Tests</name>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index fefee15..5a9db93 100644
--- a/pom.xml
+++ b/pom.xml
@@ -844,10 +844,10 @@
         <module>wab</module>
         <module>plugins</module>
         <module>extensions</module>
+        <module>tools</module>
         <module>kar</module>
         <module>samples</module>
         <module>package</module>
-        <module>tools</module>
     </modules>
 
     <dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
index 2fd415a..577bde3 100644
--- a/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/DefinitionsServiceEndPoint.java
@@ -72,11 +72,11 @@ public class DefinitionsServiceEndPoint {
     }
 
     /**
-     * Retrieves the set of condition types with the specified tags also retrieving condition types from sub-tags if so specified localized using the specified language.
+     * Retrieves the set of condition types with the specified tags.
      *
      * @param language  the language to use to localize.
      * @param tags      a comma-separated list of tag identifiers
-     * @return the set of condition types with the specified tag (and its sub-tags, if specified)
+     * @return the set of condition types with the specified tag
      */
     @GET
     @Path("/conditions/tags/{tags}")
@@ -90,6 +90,24 @@ public class DefinitionsServiceEndPoint {
     }
 
     /**
+     * Retrieves the set of condition types with the specified system tags.
+     *
+     * @param language  the language to use to localize.
+     * @param tags      a comma-separated list of tag identifiers
+     * @return the set of condition types with the specified tag
+     */
+    @GET
+    @Path("/conditions/systemTags/{tags}")
+    public Collection<RESTConditionType> getConditionTypesBySystemTag(@PathParam("tags") String tags, @HeaderParam("Accept-Language") String language) {
+        String[] tagsArray = tags.split(",");
+        Set<ConditionType> results = new LinkedHashSet<>();
+        for (String tag : tagsArray) {
+            results.addAll(definitionsService.getConditionTypesBySystemTag(tag));
+        }
+        return localizationHelper.generateConditions(results, language);
+    }
+
+    /**
      * Retrieves the condition type associated with the specified identifier localized using the specified language.
      *
      * @param language the language to use to localize.
@@ -139,11 +157,11 @@ public class DefinitionsServiceEndPoint {
     }
 
     /**
-     * Retrieves the set of action types with the specified tags also retrieving action types from sub-tags if so specified localized using the specified language.
+     * Retrieves the set of action types with the specified tags.
      *
      * @param language  the language to use to localize.
      * @param tags      the tag marking the action types we want to retrieve
-     * @return the set of action types with the specified tag (and its sub-tags, if specified)
+     * @return the set of action types with the specified tag
      */
     @GET
     @Path("/actions/tags/{tags}")
@@ -157,6 +175,24 @@ public class DefinitionsServiceEndPoint {
     }
 
     /**
+     * Retrieves the set of action types with the specified system tags.
+     *
+     * @param language  the language to use to localize.
+     * @param tags      the tag marking the action types we want to retrieve
+     * @return the set of action types with the specified tag
+     */
+    @GET
+    @Path("/actions/systemTags/{tags}")
+    public Collection<RESTActionType> getActionTypeBySystemTag(@PathParam("tags") String tags, @HeaderParam("Accept-Language") String language) {
+        String[] tagsArray = tags.split(",");
+        Set<ActionType> results = new LinkedHashSet<>();
+        for (String tag : tagsArray) {
+            results.addAll(definitionsService.getActionTypeBySystemTag(tag));
+        }
+        return localizationHelper.generateActions(results, language);
+    }
+
+    /**
      * Retrieves the action type associated with the specified identifier localized using the specified language.
      *
      * @param language the language to use to localize.
@@ -205,11 +241,11 @@ public class DefinitionsServiceEndPoint {
     }
 
     /**
-     * Retrieves the set of value types with the specified tags also retrieving value types from sub-tags if so specified localized using the specified language.
+     * Retrieves the set of value types with the specified tags.
      *
      * @param language  the language to use to localize.
      * @param tags      the tag marking the value types we want to retrieve
-     * @return the set of value types with the specified tag (and its sub-tags, if specified)
+     * @return the set of value types with the specified tag
      */
     @GET
     @Path("/values/tags/{tags}")

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java b/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
index 880e16a..38a1203 100644
--- a/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
+++ b/rest/src/main/java/org/apache/unomi/rest/LocalizationHelper.java
@@ -92,6 +92,7 @@ public class LocalizationHelper {
         result.setDescription(conditionType.getMetadata().getDescription());
 
         result.setTags(conditionType.getMetadata().getTags());
+        result.setSystemTags(conditionType.getMetadata().getSystemTags());
 
         for (Parameter parameter : conditionType.getParameters()) {
             result.getParameters().add(generateParameter(parameter, language));
@@ -116,6 +117,7 @@ public class LocalizationHelper {
         result.setDescription(actionType.getMetadata().getDescription());
 
         result.setTags(actionType.getMetadata().getTags());
+        result.setSystemTags(actionType.getMetadata().getSystemTags());
 
         List<RESTParameter> parameters = new ArrayList<RESTParameter>();
         for (Parameter parameter : actionType.getParameters()) {

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
index 156eb91..770f8b6 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
@@ -501,7 +501,7 @@ public class ProfileServiceEndPoint {
     }
 
     /**
-     * Retrieves all property types with the specified tags also retrieving property types with sub-tags of the specified tags if so specified.
+     * Retrieves all property types with the specified tags.
      *
      * TODO: move to a different class
      * TODO: passing a list of tags via a comma-separated list is not very RESTful
@@ -522,6 +522,27 @@ public class ProfileServiceEndPoint {
     }
 
     /**
+     * Retrieves all property types with the specified tags.
+     *
+     * TODO: move to a different class
+     * TODO: passing a list of tags via a comma-separated list is not very RESTful
+     *
+     * @param tags      a comma-separated list of tag identifiers
+     * @param language  the value of the {@code Accept-Language} header to specify in which locale the properties description should be returned TODO unused
+     * @return a Set of the property types with the specified tag
+     */
+    @GET
+    @Path("/properties/systemTags/{tags}")
+    public Collection<PropertyType> getPropertyTypeBySystemTag(@PathParam("tags") String tags, @HeaderParam("Accept-Language") String language) {
+        String[] tagsArray = tags.split(",");
+        Set<PropertyType> results = new LinkedHashSet<>();
+        for (String tag : tagsArray) {
+            results.addAll(profileService.getPropertyTypeBySystemTag(tag));
+        }
+        return results;
+    }
+
+    /**
      * Persists the specified property type in the context server.
      *
      * TODO: move to a different class

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java b/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
index ef8a0f7..f29f229 100644
--- a/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
+++ b/rest/src/main/java/org/apache/unomi/rest/RESTActionType.java
@@ -30,6 +30,7 @@ public class RESTActionType {
     private String name;
     private String description;
     private Set<String> tags;
+    private Set<String> systemTags;
     private List<RESTParameter> parameters;
     protected Long version;
 
@@ -65,6 +66,14 @@ public class RESTActionType {
         this.tags = tags;
     }
 
+    public Set<String> getSystemTags() {
+        return systemTags;
+    }
+
+    public void setSystemTags(Set<String> systemTags) {
+        this.systemTags = systemTags;
+    }
+
     public List<RESTParameter> getParameters() {
         return parameters;
     }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java b/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
index 30aa497..24d1332 100644
--- a/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
+++ b/rest/src/main/java/org/apache/unomi/rest/RESTConditionType.java
@@ -29,6 +29,7 @@ public class RESTConditionType {
     private String name;
     private String description;
     private Set<String> tags = new LinkedHashSet<>();
+    private Set<String> systemTags = new LinkedHashSet<>();
     private List<RESTParameter> parameters = new ArrayList<RESTParameter>();
     protected Long version;
 
@@ -67,6 +68,14 @@ public class RESTConditionType {
         this.tags = tags;
     }
 
+    public Set<String> getSystemTags() {
+        return systemTags;
+    }
+
+    public void setSystemTags(Set<String> systemTags) {
+        this.systemTags = systemTags;
+    }
+
     public List<RESTParameter> getParameters() {
         return parameters;
     }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/samples/trainingplugin/pom.xml
----------------------------------------------------------------------
diff --git a/samples/trainingplugin/pom.xml b/samples/trainingplugin/pom.xml
index 34711a7..82d3984 100644
--- a/samples/trainingplugin/pom.xml
+++ b/samples/trainingplugin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>samples</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
     <artifactId>training-plugin</artifactId>
     <name>Apache Unomi :: Samples :: Training plugin</name>
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
index 98270c7..7c4252e 100644
--- a/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/DefinitionsServiceImpl.java
@@ -130,7 +130,10 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
 
             try {
                 ConditionType conditionType = CustomObjectMapper.getObjectMapper().readValue(predefinedConditionURL, ConditionType.class);
-                setConditionType(conditionType);
+                // Register only if condition type does not exist yet
+                if (getConditionType(conditionType.getMetadata().getId()) == null) {
+                    setConditionType(conditionType);
+                }
             } catch (IOException e) {
                 logger.error("Error while loading condition definition " + predefinedConditionURL, e);
             }
@@ -149,7 +152,10 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
 
             try {
                 ActionType actionType = CustomObjectMapper.getObjectMapper().readValue(predefinedActionURL, ActionType.class);
-                setActionType(actionType);
+                // Register only if action type does not exist yet
+                if (getActionType(actionType.getMetadata().getId()) == null) {
+                    setActionType(actionType);
+                }
             } catch (Exception e) {
                 logger.error("Error while loading action definition " + predefinedActionURL, e);
             }
@@ -208,8 +214,16 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
     }
 
     public Set<ConditionType> getConditionTypesByTag(String tag) {
+        return getConditionTypesBy("metadata.tags", tag);
+    }
+
+    public Set<ConditionType> getConditionTypesBySystemTag(String tag) {
+        return getConditionTypesBy("metadata.systemTags", tag);
+    }
+
+    private Set<ConditionType> getConditionTypesBy(String fieldName, String fieldValue) {
         Set<ConditionType> conditionTypes = new LinkedHashSet<ConditionType>();
-        List<ConditionType> directConditionTypes = persistenceService.query("metadata.tags", tag,null, ConditionType.class);
+        List<ConditionType> directConditionTypes = persistenceService.query(fieldName, fieldValue,null, ConditionType.class);
         for (ConditionType type : directConditionTypes) {
             if (type.getParentCondition() != null) {
                 ParserHelper.resolveConditionType(this, type.getParentCondition());
@@ -250,8 +264,16 @@ public class DefinitionsServiceImpl implements DefinitionsService, SynchronousBu
     }
 
     public Set<ActionType> getActionTypeByTag(String tag) {
+        return getActionTypesBy("metadata.tags", tag);
+    }
+
+    public Set<ActionType> getActionTypeBySystemTag(String tag) {
+        return getActionTypesBy("metadata.systemTags", tag);
+    }
+
+    private Set<ActionType> getActionTypesBy(String fieldName, String fieldValue) {
         Set<ActionType> actionTypes = new LinkedHashSet<ActionType>();
-        List<ActionType> directActionTypes = persistenceService.query("metadata.tags", tag,null, ActionType.class);
+        List<ActionType> directActionTypes = persistenceService.query(fieldName, fieldValue,null, ActionType.class);
         actionTypes.addAll(directActionTypes);
 
         return actionTypes;

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java
index a12a768..ee8c6dc 100644
--- a/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/GoalsServiceImpl.java
@@ -57,8 +57,6 @@ public class GoalsServiceImpl implements GoalsService, SynchronousBundleListener
 
     private RulesService rulesService;
 
-    private Map<String, Set<Goal>> goalByTag = new HashMap<>();
-
     public void setBundleContext(BundleContext bundleContext) {
         this.bundleContext = bundleContext;
     }
@@ -121,20 +119,6 @@ public class GoalsServiceImpl implements GoalsService, SynchronousBundleListener
                     goal.getMetadata().setScope("systemscope");
                 }
                 if (getGoal(goal.getMetadata().getId()) == null) {
-                    for (String tag : goal.getMetadata().getTags()) {
-                        if (goalByTag.containsKey(tag)) {
-                            Set<Goal> goals = goalByTag.get(tag);
-                            if (goals == null) {
-                                goals = new LinkedHashSet<>();
-                            }
-                            goals.add(goal);
-                            goalByTag.put(tag, goals);
-                        } else {
-                            // we found a tag that is not defined, we will define it automatically
-                            logger.debug("Unknown tag " + tag + " used in goal definition " + predefinedGoalURL);
-                        }
-                    }
-
                     setGoal(goal);
                 }
             } catch (IOException e) {
@@ -539,16 +523,6 @@ public class GoalsServiceImpl implements GoalsService, SynchronousBundleListener
         return report;
     }
 
-    public Set<Goal> getGoalByTag(String tag) {
-        Set<Goal> goals = new LinkedHashSet<>();
-        Set<Goal> directGoals = goalByTag.get(tag);
-        if (directGoals != null) {
-            goals.addAll(directGoals);
-        }
-
-        return goals;
-    }
-
     // Campaign Event management methods
     @Override
     public PartialList<CampaignEvent> getEvents(Query query) {

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
index b95363c..17e4ea5 100644
--- a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
@@ -640,8 +640,16 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
     }
 
     public Set<PropertyType> getPropertyTypeByTag(String tag) {
+        return getPropertyTypesBy("metadata.tags", tag);
+    }
+
+    public Set<PropertyType> getPropertyTypeBySystemTag(String tag) {
+        return getPropertyTypesBy("metadata.systemTags", tag);
+    }
+
+    private Set<PropertyType> getPropertyTypesBy( String fieldName, String fieldValue) {
         Set<PropertyType> propertyTypes = new LinkedHashSet<PropertyType>();
-        Collection<PropertyType> directPropertyTypes = persistenceService.query("metadata.tags", tag, "rank", PropertyType.class);
+        Collection<PropertyType> directPropertyTypes = persistenceService.query(fieldName, fieldValue, "rank", PropertyType.class);
 
         if (directPropertyTypes != null) {
             propertyTypes.addAll(directPropertyTypes);
@@ -718,7 +726,11 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
 
             try {
                 PersonaWithSessions persona = CustomObjectMapper.getObjectMapper().readValue(predefinedPersonaURL, PersonaWithSessions.class);
-                persistenceService.save(persona.getPersona());
+
+                String itemId = persona.getPersona().getItemId();
+                if (persistenceService.load(itemId, Persona.class) != null) {
+                    persistenceService.save(persona.getPersona());
+                }
 
                 List<PersonaSession> sessions = persona.getSessions();
                 for (PersonaSession session : sessions) {

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/services/src/main/java/org/apache/unomi/services/services/RulesServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/RulesServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/RulesServiceImpl.java
index 6c0ea0f..8c848a4 100644
--- a/services/src/main/java/org/apache/unomi/services/services/RulesServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/RulesServiceImpl.java
@@ -152,7 +152,9 @@ public class RulesServiceImpl implements RulesService, EventListenerService, Syn
 
             try {
                 Rule rule = CustomObjectMapper.getObjectMapper().readValue(predefinedSegmentURL, Rule.class);
-                setRule(rule);
+                if (getRule(rule.getMetadata().getId()) == null) {
+                    setRule(rule);
+                }
             } catch (IOException e) {
                 logger.error("Error while loading segment definition " + predefinedSegmentURL, e);
             }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/src/site/markdown/versions/master/custom-extensions.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/master/custom-extensions.md b/src/site/markdown/versions/master/custom-extensions.md
index 866f4f9..e08cfca 100644
--- a/src/site/markdown/versions/master/custom-extensions.md
+++ b/src/site/markdown/versions/master/custom-extensions.md
@@ -29,7 +29,7 @@ An extension is simply a Maven project, with a Maven pom that looks like this:
         <parent>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-extensions</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>${project.version}</version>
         </parent>
     
         <modelVersion>4.0.0</modelVersion>
@@ -37,7 +37,7 @@ An extension is simply a Maven project, with a Maven pom that looks like this:
         <artifactId>unomi-extension-example</artifactId>
         <name>Apache Unomi :: Extensions :: Example</name>
         <description>Service implementation for the Apache Unomi Context Server extension that integrates with the Geonames database</description>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>${project.version}</version>
         <packaging>bundle</packaging>
     
         <dependencies>
@@ -45,7 +45,7 @@ An extension is simply a Maven project, with a Maven pom that looks like this:
             <dependency>
                 <groupId>org.apache.unomi</groupId>
                 <artifactId>unomi-api</artifactId>
-                <version>1.2.0-incubating-SNAPSHOT</version>
+                <version>${project.version}</version>
                 <scope>provided</scope>
             </dependency>    
         </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/src/site/markdown/versions/master/login-sample.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/versions/master/login-sample.md b/src/site/markdown/versions/master/login-sample.md
index ac5df25..7c55e78 100644
--- a/src/site/markdown/versions/master/login-sample.md
+++ b/src/site/markdown/versions/master/login-sample.md
@@ -38,7 +38,7 @@ Installing the sample
 
 2. Install the login sample using the following command:
 
-        bundle:install mvn:org.apache.unomi/login-integration-sample/1.2.0-incubating-SNAPSHOT
+        bundle:install mvn:org.apache.unomi/login-integration-sample/${project.version}
         
     when the bundle is successfully install you will get an bundle ID back we will call it BUNDLE_ID. 
     

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/tools/pom.xml
----------------------------------------------------------------------
diff --git a/tools/pom.xml b/tools/pom.xml
index 9a42616..cdad996 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>1.2.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-tools</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/tools/shell-commands/pom.xml
----------------------------------------------------------------------
diff --git a/tools/shell-commands/pom.xml b/tools/shell-commands/pom.xml
index 51f1f06..93b2e01 100644
--- a/tools/shell-commands/pom.xml
+++ b/tools/shell-commands/pom.xml
@@ -22,13 +22,12 @@
     <parent>
         <artifactId>unomi-tools</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.2.0-incubating-unomi_117-SNAPSHOT</version>
+        <version>1.3.0-incubating-unomi_117-SNAPSHOT</version>
     </parent>
 
     <artifactId>shell-commands</artifactId>
     <name>Apache Unomi :: Tools :: Shell commands</name>
     <description>Provides the shell commands to interact with Apache Unomi Context Server</description>
-    <version>1.2.0-incubating-unomi_117-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
index 45d6471..f2e5ef2 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/actions/Migrate.java
@@ -58,8 +58,7 @@ public class Migrate extends OsgiCommandSupport {
             if (fromVersion.compareTo(migration.getToVersion()) < 0) {
                 System.out.println("Starting migration to version " + migration.getToVersion());
                 migration.execute(session, httpClient);
-
-                System.out.println("Migration to version 2.0.0 done successfully");
+                System.out.println("Migration to version " + migration.getToVersion() + " done successfully");
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
new file mode 100644
index 0000000..a2cf255
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo130.java
@@ -0,0 +1,230 @@
+/*
+ * 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.
+ */
+package org.apache.unomi.shell.migration.impl;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.felix.service.command.CommandSession;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.unomi.shell.migration.Migration;
+import org.apache.unomi.shell.migration.utils.ConsoleUtils;
+import org.apache.unomi.shell.migration.utils.MigrationUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.osgi.framework.Version;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @author dgaillard
+ */
+public class MigrationTo130 implements Migration {
+
+    private CloseableHttpClient httpClient;
+    private CommandSession session;
+    private LinkedHashMap<String, List<String>> tagsStructurePriorTo200;
+
+    @Override
+    public Version getFromVersion() {
+        return null;
+    }
+
+    @Override
+    public Version getToVersion() {
+        return new Version("1.3.0");
+    }
+
+    @Override
+    public void execute(CommandSession session, CloseableHttpClient httpClient) throws IOException {
+        try {
+            this.httpClient = httpClient;
+            this.session = session;
+            migrateTags();
+        } catch (IOException e) {
+            if (httpClient != null) {
+                httpClient.close();
+            }
+            throw e;
+        }
+    }
+
+    private void migrateTags() throws IOException {
+        initTagsStructurePriorTo200();
+        String hostAddress = ConsoleUtils.askUserWithDefaultAnswer(session, "Host address (default = http://localhost:9200): ", "http://localhost:9200");
+        String tagsOperation = ConsoleUtils.askUserWithAuthorizedAnswer(session, "How to manage tags?\nno change: will keep tags in tags property\ncopy: will duplicate tags in systemTags property\nmove: will move tags in systemTags property\n(default/copy/move): ", Arrays.asList("no change", "copy", "move"));
+
+        String removeNamespaceOnSystemTags = "no";
+        if (tagsOperation.equals("copy") || tagsOperation.equals("move")) {
+            removeNamespaceOnSystemTags = ConsoleUtils.askUserWithAuthorizedAnswer(session,"As we will copy/move the tags, do you wish to remove existing namespace on tags before copy/move in systemTags? (e.g: hidden.) (yes/no): ", Arrays.asList("yes", "no"));
+        }
+
+        List<String> typeToMigrate = Arrays.asList("actionType", "conditionType", "campaign", "goal", "rule", "scoring", "segment", "userList");
+        for (String type : typeToMigrate) {
+            migrateTypeTags(hostAddress, type, tagsOperation, removeNamespaceOnSystemTags.equals("yes"));
+        }
+
+        migratePropertyTypesTags(hostAddress, tagsOperation, removeNamespaceOnSystemTags.equals("yes"));
+    }
+
+    private void migrateTypeTags(String hostAddress, String type, String tagsOperation, boolean removeNamespaceOnSystemTags) throws IOException {
+        JSONObject responseJSON = MigrationUtils.queryWithScroll(httpClient, hostAddress + "/context/" + type + "/_search");
+
+        migrateTagsInResult(responseJSON, hostAddress, type,10, true, tagsOperation, removeNamespaceOnSystemTags);
+    }
+
+    private void migratePropertyTypesTags(String hostAddress, String tagsOperation, boolean removeNamespaceOnSystemTags) throws IOException {
+        JSONObject responseJSON = MigrationUtils.queryWithScroll(httpClient,hostAddress + "/context/propertyType/_search");
+
+        migrateTagsInResult(responseJSON, hostAddress, "propertyType", 10, false, tagsOperation, removeNamespaceOnSystemTags);
+    }
+
+    private void migrateTagsInResult(JSONObject responseJSON, String hostAddress, String type, int currentOffset,
+                                     boolean tagsInMetadata, String tagsOperation, boolean removeNamespaceOnSystemTags) throws IOException {
+        if (responseJSON.has("hits")) {
+            JSONObject hitsObject = responseJSON.getJSONObject("hits");
+            if (hitsObject.has("hits")) {
+                JSONArray hits = hitsObject.getJSONArray("hits");
+
+                StringBuilder updatedHits = new StringBuilder();
+                Iterator<Object> hitsIterator = hits.iterator();
+                while (hitsIterator.hasNext()) {
+                    JSONObject hit = (JSONObject) hitsIterator.next();
+                    if (hit.has("_source")) {
+                        JSONObject hitSource = hit.getJSONObject("_source");
+                        if (tagsInMetadata && hitSource.has("metadata")) {
+                            JSONObject hitMetadata = hitSource.getJSONObject("metadata");
+                            updateTagsForHit(updatedHits, hit.getString("_id"), hitMetadata, tagsInMetadata, tagsOperation, removeNamespaceOnSystemTags);
+                        } else if (!tagsInMetadata) {
+                            updateTagsForHit(updatedHits, hit.getString("_id"), hitSource, tagsInMetadata, tagsOperation, removeNamespaceOnSystemTags);
+                        }
+                    }
+                }
+                String jsonData = updatedHits.toString();
+                if (StringUtils.isNotBlank(jsonData)) {
+                    MigrationUtils.bulkUpdate(httpClient, hostAddress + "/context/" + type + "/_bulk", jsonData);
+                }
+
+                if (hitsObject.getInt("total") > currentOffset) {
+                    migrateTagsInResult(MigrationUtils.continueQueryWithScroll(httpClient, hostAddress, responseJSON.getString("_scroll_id")), hostAddress, type,currentOffset + 10, tagsInMetadata, tagsOperation, removeNamespaceOnSystemTags);
+                }
+            }
+        }
+    }
+
+    private void updateTagsForHit(StringBuilder updatedHits, String hitId, JSONObject jsonObject,
+                                  boolean tagsInMetadata, String tagsOperation, boolean removeNamespaceOnSystemTags) {
+        if (jsonObject.has("tags")) {
+            JSONArray hitTags = jsonObject.getJSONArray("tags");
+            Iterator<Object> tagsIterator = hitTags.iterator();
+            Set<String> tagsBeforeMigration = new HashSet<>();
+            Set<String> tagsAfterMigration = new HashSet<>();
+            if (tagsIterator.hasNext()) {
+                while (tagsIterator.hasNext()) {
+                    tagsBeforeMigration.add((String) tagsIterator.next());
+                }
+
+                for (String tag : tagsBeforeMigration) {
+                    if (tagsStructurePriorTo200.containsKey(tag)) {
+                        tagsAfterMigration.addAll(tagsStructurePriorTo200.get(tag));
+                    }
+                    tagsAfterMigration.add(tag);
+                }
+
+                updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
+                if (tagsOperation.equals("no change")) {
+                    updatedHits.append("{\"doc\":{\"metadata\":{\"tags\":").append(new JSONArray(tagsAfterMigration)).append("}}}\n");
+                }
+                if (tagsOperation.equals("copy")) {
+                    Set<String> tags = removeNamespaceOnTags(removeNamespaceOnSystemTags, tagsAfterMigration);
+                    updatedHits.append("{\"doc\":{\"metadata\":{\"tags\":").append(new JSONArray(tagsAfterMigration))
+                            .append(",\"systemTags\":").append(new JSONArray(tags)).append("}}}\n");
+                }
+                if (tagsOperation.equals("move")) {
+                    Set<String> tags = removeNamespaceOnTags(removeNamespaceOnSystemTags, tagsAfterMigration);
+                    updatedHits.append("{\"doc\":{\"metadata\":{\"systemTags\":").append(new JSONArray(tags)).append("}}}\n");
+                    if (tagsInMetadata) {
+                        updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
+                        updatedHits.append("{\"script\":\"ctx._source.metadata.remove(\\\"tags\\\")\"}\n");
+                    }
+                }
+                if (!tagsInMetadata) {
+                    updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
+                    updatedHits.append("{\"script\":\"ctx._source.remove(\\\"tags\\\")\"}\n");
+                }
+            }
+        }
+    }
+
+    private Set<String> removeNamespaceOnTags(boolean removeNamespaceOnSystemTags, Set<String> tagsAfterMigration) {
+        if (!removeNamespaceOnSystemTags) {
+            return tagsAfterMigration;
+        }
+
+        Set<String> tags = new HashSet<>();
+        for (String tag : tagsAfterMigration) {
+            if (StringUtils.startsWith(tag, "hidden.")) {
+                tags.add(StringUtils.substringAfter(tag, "hidden."));
+            } else {
+                tags.add(tag);
+            }
+        }
+        return tags;
+    }
+
+    private void initTagsStructurePriorTo200() {
+        tagsStructurePriorTo200 = new LinkedHashMap<>();
+        tagsStructurePriorTo200.put("landing", Collections.singletonList("campaign"));
+        tagsStructurePriorTo200.put("parameter", Collections.singletonList("campaign"));
+        tagsStructurePriorTo200.put("referrer", Collections.singletonList("campaign"));
+
+        tagsStructurePriorTo200.put("eventCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("profileCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("sessionCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("sourceEventCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("trackedCondition", Collections.singletonList("condition"));
+        tagsStructurePriorTo200.put("usableInPastEventCondition", Collections.singletonList("condition"));
+
+        tagsStructurePriorTo200.put("formMappingRule", Collections.<String>emptyList());
+
+        tagsStructurePriorTo200.put("downloadGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("formGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("funnelGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("landingPageGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("pageVisitGoal", Collections.singletonList("goal"));
+        tagsStructurePriorTo200.put("videoGoal", Collections.singletonList("goal"));
+
+        tagsStructurePriorTo200.put("aggregated", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("autocompleted", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("demographic", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("event", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("geographic", Collections.singletonList("profileTags"));
+        tagsStructurePriorTo200.put("logical", Collections.singletonList("profileTags"));
+
+        tagsStructurePriorTo200.put("profileProperties", Collections.singletonList("properties"));
+        tagsStructurePriorTo200.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
+        tagsStructurePriorTo200.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
+
+        tagsStructurePriorTo200.put("sessionProperties", Collections.singletonList("properties"));
+        tagsStructurePriorTo200.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
+        tagsStructurePriorTo200.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo200.java
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo200.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo200.java
deleted file mode 100644
index 99e2fb2..0000000
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/impl/MigrationTo200.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * 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.
- */
-package org.apache.unomi.shell.migration.impl;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.felix.service.command.CommandSession;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.unomi.shell.migration.Migration;
-import org.apache.unomi.shell.migration.utils.ConsoleUtils;
-import org.apache.unomi.shell.migration.utils.MigrationUtils;
-import org.json.JSONArray;
-import org.json.JSONObject;
-import org.osgi.framework.Version;
-
-import java.io.IOException;
-import java.util.*;
-
-/**
- * @author dgaillard
- */
-public class MigrationTo200 implements Migration {
-
-    private CloseableHttpClient httpClient;
-    private CommandSession session;
-    private LinkedHashMap<String, List<String>> tagsStructurePriorTo200;
-
-    @Override
-    public Version getFromVersion() {
-        return null;
-    }
-
-    @Override
-    public Version getToVersion() {
-        return new Version("2.0.0");
-    }
-
-    @Override
-    public void execute(CommandSession session, CloseableHttpClient httpClient) throws IOException {
-        try {
-            this.httpClient = httpClient;
-            this.session = session;
-            migrateTags();
-        } catch (IOException e) {
-            if (httpClient != null) {
-                httpClient.close();
-            }
-            throw e;
-        }
-    }
-
-    private void migrateTags() throws IOException {
-        initTagsStructurePriorTo200();
-        String hostAddress = ConsoleUtils.askUserWithDefaultAnswer(session, "Host address (default = http://localhost:9200): ", "http://localhost:9200");
-
-        List<String> typeToMigrate = Arrays.asList("actionType", "conditionType", "campaign", "goal", "rule", "scoring", "segment", "userList");
-        for (String type : typeToMigrate) {
-            migrateTypeTags(hostAddress, type);
-        }
-
-        migratePropertyTypesTags(hostAddress);
-    }
-
-    private void migrateTypeTags(String hostAddress, String type) throws IOException {
-        JSONObject responseJSON = MigrationUtils.queryWithScroll(httpClient, hostAddress + "/context/" + type + "/_search");
-
-        migrateTagsInResult(responseJSON, hostAddress, type,10, true);
-    }
-
-    private void migratePropertyTypesTags(String hostAddress) throws IOException {
-        JSONObject responseJSON = MigrationUtils.queryWithScroll(httpClient,hostAddress + "/context/propertyType/_search");
-
-        migrateTagsInResult(responseJSON, hostAddress, "propertyType", 10, false);
-    }
-
-    private void migrateTagsInResult(JSONObject responseJSON, String hostAddress, String type, int currentOffset, boolean tagsInMetadata) throws IOException {
-        if (responseJSON.has("hits")) {
-            JSONObject hitsObject = responseJSON.getJSONObject("hits");
-            if (hitsObject.has("hits")) {
-                JSONArray hits = hitsObject.getJSONArray("hits");
-
-                StringBuilder updatedHits = new StringBuilder();
-                Iterator<Object> hitsIterator = hits.iterator();
-                while (hitsIterator.hasNext()) {
-                    JSONObject hit = (JSONObject) hitsIterator.next();
-                    if (hit.has("_source")) {
-                        JSONObject hitSource = hit.getJSONObject("_source");
-                        if (tagsInMetadata && hitSource.has("metadata")) {
-                            JSONObject hitMetadata = hitSource.getJSONObject("metadata");
-                            updateTagsForHit(updatedHits, hit.getString("_id"), hitMetadata, tagsInMetadata);
-                        } else if (!tagsInMetadata) {
-                            updateTagsForHit(updatedHits, hit.getString("_id"), hitSource, tagsInMetadata);
-                        }
-                    }
-                }
-                String jsonData = updatedHits.toString();
-                if (StringUtils.isNotBlank(jsonData)) {
-                    MigrationUtils.bulkUpdate(httpClient, hostAddress + "/context/" + type + "/_bulk", jsonData);
-                }
-
-                if (hitsObject.getInt("total") > currentOffset) {
-                    migrateTagsInResult(MigrationUtils.continueQueryWithScroll(httpClient, hostAddress, responseJSON.getString("_scroll_id")), hostAddress, type,currentOffset + 10, tagsInMetadata);
-                }
-            }
-        }
-    }
-
-    private void updateTagsForHit(StringBuilder updatedHits, String hitId, JSONObject jsonObject, boolean tagsInMetadata) {
-        if (jsonObject.has("tags")) {
-            JSONArray hitTags = jsonObject.getJSONArray("tags");
-            Iterator<Object> tagsIterator = hitTags.iterator();
-            List<String> tagsBeforeMigration = new ArrayList<>();
-            List<String> tagsAfterMigration = new ArrayList<>();
-            if (tagsIterator.hasNext()) {
-                while (tagsIterator.hasNext()) {
-                    tagsBeforeMigration.add((String) tagsIterator.next());
-                }
-
-                for (String tag : tagsBeforeMigration) {
-                    if (tagsStructurePriorTo200.containsKey(tag) && !tagsAfterMigration.containsAll(tagsStructurePriorTo200.get(tag))) {
-                        tagsAfterMigration.addAll(tagsStructurePriorTo200.get(tag));
-                    }
-
-                    if (!tagsAfterMigration.contains(tag)) {
-                        tagsAfterMigration.add(tag);
-                    }
-                }
-
-                updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
-                updatedHits.append("{\"doc\":{\"metadata\":{\"tags\":").append(new JSONArray(tagsAfterMigration)).append("}}}\n");
-                if (!tagsInMetadata) {
-                    updatedHits.append("{\"update\":{\"_id\":\"").append(hitId).append("\"}}\n");
-                    updatedHits.append("{\"script\":\"ctx._source.remove(\\\"tags\\\")\"}\n");
-                }
-            }
-        }
-    }
-
-    private void initTagsStructurePriorTo200() {
-        tagsStructurePriorTo200 = new LinkedHashMap<>();
-        tagsStructurePriorTo200.put("landing", Collections.singletonList("campaign"));
-        tagsStructurePriorTo200.put("parameter", Collections.singletonList("campaign"));
-        tagsStructurePriorTo200.put("referrer", Collections.singletonList("campaign"));
-
-        tagsStructurePriorTo200.put("eventCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("profileCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("sessionCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("sourceEventCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("trackedCondition", Collections.singletonList("condition"));
-        tagsStructurePriorTo200.put("usableInPastEventCondition", Collections.singletonList("condition"));
-
-        tagsStructurePriorTo200.put("formMappingRule", Collections.<String>emptyList());
-
-        tagsStructurePriorTo200.put("downloadGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("formGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("funnelGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("landingPageGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("pageVisitGoal", Collections.singletonList("goal"));
-        tagsStructurePriorTo200.put("videoGoal", Collections.singletonList("goal"));
-
-        tagsStructurePriorTo200.put("aggregated", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("autocompleted", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("demographic", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("event", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("geographic", Collections.singletonList("profileTags"));
-        tagsStructurePriorTo200.put("logical", Collections.singletonList("profileTags"));
-
-        tagsStructurePriorTo200.put("profileProperties", Collections.singletonList("properties"));
-        tagsStructurePriorTo200.put("systemProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("basicProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("leadProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("contactProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("socialProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("personalProfileProperties", Arrays.asList("properties", "profileProperties"));
-        tagsStructurePriorTo200.put("workProfileProperties", Arrays.asList("properties", "profileProperties"));
-
-        tagsStructurePriorTo200.put("sessionProperties", Collections.singletonList("properties"));
-        tagsStructurePriorTo200.put("geographicSessionProperties", Arrays.asList("properties", "sessionProperties"));
-        tagsStructurePriorTo200.put("technicalSessionProperties", Arrays.asList("properties", "sessionProperties"));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/8e6132d2/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 562159f..7b31650 100644
--- a/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/tools/shell-commands/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -21,7 +21,7 @@
            xmlns:shell="http://karaf.apache.org/xmlns/shell/v1.1.0"
            xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
 
-    <bean id="migrateTo200" class="org.apache.unomi.shell.migration.impl.MigrationTo200"/>
+    <bean id="migrateTo200" class="org.apache.unomi.shell.migration.impl.MigrationTo130"/>
 
     <shell:command-bundle>
         <shell:command>