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

[1/5] incubator-unomi git commit: [jgitflow-maven-plugin]updating poms for unomi_102 version

Repository: incubator-unomi
Updated Branches:
  refs/heads/master 8860ddffa -> 27a7288e8


[jgitflow-maven-plugin]updating poms for unomi_102 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/fe8fbef4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/fe8fbef4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/fe8fbef4

Branch: refs/heads/master
Commit: fe8fbef4aec4211379db9899b5b2191cc594fad7
Parents: d19be22
Author: Abdelkader Midani <am...@apache.org>
Authored: Mon Jun 19 13:20:42 2017 +0200
Committer: Abdelkader Midani <am...@apache.org>
Committed: Mon Jun 26 09:29: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                      |  6 ++--
 extensions/router/router-api/pom.xml           |  6 ++--
 extensions/router/router-core/pom.xml          |  6 ++--
 extensions/router/router-karaf-feature/pom.xml |  6 ++--
 extensions/router/router-rest/pom.xml          |  6 ++--
 extensions/router/router-service/pom.xml       |  6 ++--
 kar/pom.xml                                    | 32 ++++++++++-----------
 lifecycle-watcher/pom.xml                      |  6 ++--
 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 ++--
 39 files changed, 106 insertions(+), 120 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/api/pom.xml
----------------------------------------------------------------------
diff --git a/api/pom.xml b/api/pom.xml
index 6662b6f..1c8ad15 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-api</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/geonames/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/pom.xml b/extensions/geonames/pom.xml
index f601a7c..6c24ef8 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>cxs-geonames</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/geonames/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/rest/pom.xml b/extensions/geonames/rest/pom.xml
index cec5546..b7938f9 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-services</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -76,7 +76,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/geonames/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/geonames/services/pom.xml b/extensions/geonames/services/pom.xml
index e1e7310..c04a0cd 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+    <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/lists-extension/actions/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/actions/pom.xml b/extensions/lists-extension/actions/pom.xml
index 91c0e8e..1ededc6 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+    <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/lists-extension/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/pom.xml b/extensions/lists-extension/pom.xml
index 6542575..2d0bae7 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+    <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     <packaging>pom</packaging>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/lists-extension/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/rest/pom.xml b/extensions/lists-extension/rest/pom.xml
index e4e9414..4f6f1ff 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -34,14 +34,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -77,7 +77,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/lists-extension/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/lists-extension/services/pom.xml b/extensions/lists-extension/services/pom.xml
index d7ebedb..88837c5 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+    <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/pom.xml b/extensions/pom.xml
index dea4bc2..48a8bc5 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-extensions</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/privacy-extension/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/pom.xml b/extensions/privacy-extension/pom.xml
index 46e4315..297bae2 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+    <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     <packaging>pom</packaging>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/privacy-extension/rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/rest/pom.xml b/extensions/privacy-extension/rest/pom.xml
index 0388a60..a71ab06 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -33,14 +33,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-services</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -76,7 +76,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/privacy-extension/services/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/privacy-extension/services/pom.xml b/extensions/privacy-extension/services/pom.xml
index 4afcde8..d7e6d45 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+    <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/router/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/pom.xml b/extensions/router/pom.xml
index 225f3d1..933e18d 100644
--- a/extensions/router/pom.xml
+++ b/extensions/router/pom.xml
@@ -14,15 +14,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-extensions</artifactId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-router</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/router/router-api/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/pom.xml b/extensions/router/router-api/pom.xml
index 9085a30..9ded1f1 100644
--- a/extensions/router/router-api/pom.xml
+++ b/extensions/router/router-api/pom.xml
@@ -15,13 +15,11 @@
   ~ 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">
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/router/router-core/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/pom.xml b/extensions/router/router-core/pom.xml
index e20dfc5..95cc6b2 100644
--- a/extensions/router/router-core/pom.xml
+++ b/extensions/router/router-core/pom.xml
@@ -15,13 +15,11 @@
   ~ 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">
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/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 06c16da..213f607 100644
--- a/extensions/router/router-karaf-feature/pom.xml
+++ b/extensions/router/router-karaf-feature/pom.xml
@@ -15,13 +15,11 @@
   ~ 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">
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/router/router-rest/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/pom.xml b/extensions/router/router-rest/pom.xml
index e151363..3ba4be5 100644
--- a/extensions/router/router-rest/pom.xml
+++ b/extensions/router/router-rest/pom.xml
@@ -15,13 +15,11 @@
   ~ 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">
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/extensions/router/router-service/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-service/pom.xml b/extensions/router/router-service/pom.xml
index 750cd1e..4339ed0 100644
--- a/extensions/router/router-service/pom.xml
+++ b/extensions/router/router-service/pom.xml
@@ -15,13 +15,11 @@
   ~ 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">
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/kar/pom.xml
----------------------------------------------------------------------
diff --git a/kar/pom.xml b/kar/pom.xml
index 20d4257..8eeede5 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-kar</artifactId>
@@ -34,77 +34,77 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-wab</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-services</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-base</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-request</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-mail</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-plugins-optimization-test</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-rest</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-actions</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-services</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-geonames-rest</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-services</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-privacy-extension-rest</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/lifecycle-watcher/pom.xml
----------------------------------------------------------------------
diff --git a/lifecycle-watcher/pom.xml b/lifecycle-watcher/pom.xml
index 419f7bf..0a01846 100644
--- a/lifecycle-watcher/pom.xml
+++ b/lifecycle-watcher/pom.xml
@@ -16,13 +16,11 @@
   ~ 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">
     <parent>
         <artifactId>unomi-root</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>1.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/package/pom.xml
----------------------------------------------------------------------
diff --git a/package/pom.xml b/package/pom.xml
index da235b2..3dc04d6 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi</artifactId>
@@ -85,7 +85,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-kar</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/persistence-elasticsearch/core/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/core/pom.xml b/persistence-elasticsearch/core/pom.xml
index eb169ef..f9430d8 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/persistence-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-elasticsearch/pom.xml b/persistence-elasticsearch/pom.xml
index 70a85ea..c1e674a 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-persistence-elasticsearch</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/persistence-spi/pom.xml
----------------------------------------------------------------------
diff --git a/persistence-spi/pom.xml b/persistence-spi/pom.xml
index 976f46c..6fb4f9f 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-persistence-spi</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/plugins/baseplugin/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/baseplugin/pom.xml b/plugins/baseplugin/pom.xml
index 6efb0e5..d2f7658 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/plugins/hover-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/hover-event/pom.xml b/plugins/hover-event/pom.xml
index d83c662..d6374af 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/plugins/mail/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/mail/pom.xml b/plugins/mail/pom.xml
index e7dfdf6..4229105 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/plugins/optimization-test/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/optimization-test/pom.xml b/plugins/optimization-test/pom.xml
index 445e457..d579e0b 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-optimization-test</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/plugins/past-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/past-event/pom.xml b/plugins/past-event/pom.xml
index eb37f52..7e07b7d 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/plugins/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/pom.xml b/plugins/pom.xml
index 5de8cfb..1bbbeab 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins</artifactId>
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/plugins/request/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/request/pom.xml b/plugins/request/pom.xml
index cd17202..342282a 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-plugins-request</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/plugins/tracked-event/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/tracked-event/pom.xml b/plugins/tracked-event/pom.xml
index 68d3fdd..11f29a9 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-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.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 376cf21..31ff58c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
         event tracking server.
     </description>
     <url>http://unomi.incubator.apache.org</url>
-    <version>1.2.0-incubating-SNAPSHOT</version>
+    <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <licenses>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/rest/pom.xml
----------------------------------------------------------------------
diff --git a/rest/pom.xml b/rest/pom.xml
index f089dc0..37528a1 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-rest</artifactId>
@@ -42,7 +42,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -84,7 +84,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <!--<dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/samples/login-integration/pom.xml
----------------------------------------------------------------------
diff --git a/samples/login-integration/pom.xml b/samples/login-integration/pom.xml
index 675807f..0392896 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>login-integration-sample</artifactId>
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
index 67e0d6f..8f1b84b 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/samples/tweet-button-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/samples/tweet-button-plugin/pom.xml b/samples/tweet-button-plugin/pom.xml
index c1725d5..1ca1e15 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>tweet-button-plugin</artifactId>
@@ -33,7 +33,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/services/pom.xml
----------------------------------------------------------------------
diff --git a/services/pom.xml b/services/pom.xml
index 2d5f345..23fdbb6 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-services</artifactId>
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
@@ -53,7 +53,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/fe8fbef4/wab/pom.xml
----------------------------------------------------------------------
diff --git a/wab/pom.xml b/wab/pom.xml
index cb29c05..468f726 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.2.0-incubating-SNAPSHOT</version>
+        <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
     </parent>
 
     <artifactId>unomi-wab</artifactId>
@@ -43,13 +43,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>1.2.0-incubating-SNAPSHOT</version>
+            <version>1.2.0-incubating-unomi_102-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 


[5/5] incubator-unomi git commit: Merge branch 'feature-UNOMI-102'

Posted by am...@apache.org.
Merge branch 'feature-UNOMI-102'


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

Branch: refs/heads/master
Commit: 27a7288e89bce78fb9add5bd9b8b36c76ef6c133
Parents: 8860ddf cb83301
Author: Abdelkader Midani <am...@apache.org>
Authored: Wed Jun 28 02:31:57 2017 +0200
Committer: Abdelkader Midani <am...@apache.org>
Committed: Wed Jun 28 02:31:57 2017 +0200

----------------------------------------------------------------------
 api/pom.xml                                     |   2 +-
 .../api/services/ConfigSharingService.java      |  32 +++
 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                       |   6 +-
 extensions/router/router-api/pom.xml            |   6 +-
 .../unomi/router/api/ExportConfiguration.java   |  45 ++++
 .../unomi/router/api/ImportConfiguration.java   | 182 +-------------
 .../router/api/ImportExportConfiguration.java   | 203 ++++++++++++++++
 .../unomi/router/api/RouterConstants.java       |  44 ++++
 .../services/ImportConfigurationService.java    |  60 -----
 .../ImportExportConfigurationService.java       |  61 +++++
 extensions/router/router-core/pom.xml           |  13 +-
 .../unomi/router/core/RouterConstants.java      |  41 ----
 .../core/config/ConfigSharingServiceImpl.java   |  77 ++++++
 .../core/context/ProfileImportCamelContext.java | 187 --------------
 .../router/core/context/RouterCamelContext.java | 243 +++++++++++++++++++
 .../core/processor/ConfigUpdateProcessor.java   |  12 +-
 .../ImportConfigByFileNameProcessor.java        |   8 +-
 .../core/processor/LineSplitFailureHandler.java |   2 +-
 .../core/processor/LineSplitProcessor.java      |   2 +-
 .../processor/RouteCompletionProcessor.java     |   8 +-
 .../core/route/ConfigUpdateRouteBuilder.java    |  73 ++++++
 .../route/ProfileExportCollectRouteBuilder.java |  81 +++++++
 .../ProfileImportAbstractRouteBuilder.java      |   2 +-
 .../ProfileImportConfigUpdateRouteBuilder.java  |  62 -----
 .../ProfileImportFromSourceRouteBuilder.java    | 104 ++++----
 .../route/ProfileImportOneShotRouteBuilder.java |   2 +-
 .../route/ProfileImportToUnomiRouteBuilder.java |   2 +-
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  39 ++-
 .../main/resources/org.apache.unomi.router.cfg  |   8 +-
 extensions/router/router-karaf-feature/pom.xml  |   8 +-
 extensions/router/router-rest/pom.xml           |   6 +-
 .../AbstractConfigurationServiceEndpoint.java   |  92 +++++++
 .../ExportConfigurationServiceEndPoint.java     |  86 +++++++
 .../ImportConfigurationServiceEndPoint.java     |  92 ++-----
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  46 ++--
 extensions/router/router-service/pom.xml        |   6 +-
 .../AbstractConfigurationServiceImpl.java       |  73 ++++++
 .../ExportConfigurationServiceImpl.java         |  61 +++++
 .../ImportConfigurationServiceImpl.java         |  56 +----
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  17 +-
 kar/pom.xml                                     |  32 +--
 lifecycle-watcher/pom.xml                       |   6 +-
 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 +-
 .../services/ConfigSharingServiceImpl.java      |  80 ++++++
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  11 +
 wab/pom.xml                                     |   6 +-
 74 files changed, 1560 insertions(+), 869 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/27a7288e/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --cc extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 69fa336,fd36e50..8cd4948
--- a/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@@ -22,20 -22,14 +22,8 @@@
             xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
             xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
                                http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
 -                              http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
 -                              http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd">
  
 -    <cxf:bus id="cxsServiceBus">
 -        <cxf:features>
 -            <cxf:logging/>
 -        </cxf:features>
 -    </cxf:bus>
 +                              http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd">
-     <cm:property-placeholder persistent-id="org.apache.unomi.router" update-strategy="reload">
-         <cm:default-properties>
-             <cm:property name="import.oneshot.uploadDir" value="/tmp/oneshot_import_configs/"/>
-         </cm:default-properties>
-     </cm:property-placeholder>
- 
-     <cm:property-placeholder persistent-id="org.apache.unomi.cluster"
-                              update-strategy="reload" placeholder-prefix="${cluster.">
-         <cm:default-properties>
-             <cm:property name="cluster.contextserver.port" value="8181"/>
-         </cm:default-properties>
-     </cm:property-placeholder>
  
      <bean id="cors-filter" class="org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter"/>
      <bean id="jacksonMapper" class="com.fasterxml.jackson.databind.ObjectMapper"/>


[2/5] incubator-unomi git commit: UNOMI-102 : Refactor import code to avoid code duplication with export features

Posted by am...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportToUnomiRouteBuilder.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportToUnomiRouteBuilder.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportToUnomiRouteBuilder.java
index 94c1cef..d75977b 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportToUnomiRouteBuilder.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportToUnomiRouteBuilder.java
@@ -20,7 +20,7 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.jackson.JacksonDataFormat;
 import org.apache.camel.component.kafka.KafkaEndpoint;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.unomi.router.core.RouterConstants;
+import org.apache.unomi.router.api.RouterConstants;
 import org.apache.unomi.router.core.processor.RouteCompletionProcessor;
 import org.apache.unomi.router.core.processor.UnomiStorageProcessor;
 import org.apache.unomi.router.core.strategy.ArrayListAggregationStrategy;

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 86bcf47..aa39b15 100644
--- a/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/router/router-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -25,7 +25,9 @@
 
     <cm:property-placeholder persistent-id="org.apache.unomi.router" update-strategy="reload">
         <cm:default-properties>
-            <cm:property name="import.config.type" value="nobroker"/>
+            <cm:property name="config.type" value="nobroker"/>
+            <cm:property name="config.allowedEndpoints" value="file,ftp"/>
+            <cm:property name="config.internalPort" value="8233"/>
             <cm:property name="kafka.host" value="localhost"/>
             <cm:property name="kafka.port" value="9092"/>
             <cm:property name="kafka.import.topic" value="camel-deposit"/>
@@ -37,6 +39,17 @@
         </cm:default-properties>
     </cm:property-placeholder>
 
+    <bean id="configSharingServiceRB" class="org.apache.unomi.router.core.config.ConfigSharingServiceImpl" destroy-method="preDestroy">
+        <property name="oneshotImportUploadDir" value="${import.oneshot.uploadDir}"/>
+        <property name="bundleContext" ref="blueprintBundleContext"/>
+    </bean>
+
+    <service id="configSharingServiceRBE" ref="configSharingServiceRB" auto-export="interfaces">
+        <service-properties>
+            <entry key="bundleDiscriminator" value="ROUTER"/>
+        </service-properties>
+    </service>
+
     <bean id="unomiStorageProcessor" class="org.apache.unomi.router.core.processor.UnomiStorageProcessor">
         <property name="profileImportService" ref="profileImportService"/>
     </bean>
@@ -59,6 +72,11 @@
         <property name="library" value="Jackson"/>
     </bean>
 
+    <bean id="jacksonDataFormatExportConfig" class="org.apache.camel.model.dataformat.JsonDataFormat">
+        <property name="unmarshalType" value="org.apache.unomi.router.api.ExportConfiguration"/>
+        <property name="library" value="Jackson"/>
+    </bean>
+
     <bean id="jacksonDataFormatImportLineError" class="org.apache.camel.model.dataformat.JsonDataFormat">
         <property name="unmarshalType" value="org.apache.unomi.router.api.ImportLineError"/>
         <property name="library" value="Jackson"/>
@@ -67,7 +85,7 @@
     <bean class="org.apache.camel.component.servlet.osgi.OsgiServletRegisterer"
           init-method="register"
           destroy-method="unregister">
-        <property name="alias" value="/importConfigAdmin"/>
+        <property name="alias" value="/configUpdate"/>
         <property name="httpService" ref="httpService"/>
         <property name="servlet" ref="camelServlet"/>
     </bean>
@@ -75,9 +93,10 @@
     <bean id="camelServlet" class="org.apache.camel.component.servlet.CamelHttpTransportServlet"/>
 
 
-    <bean id="camelContext" class="org.apache.unomi.router.core.context.ProfileImportCamelContext"
+    <bean id="camelContext" class="org.apache.unomi.router.core.context.RouterCamelContext"
           init-method="initCamelContext" destroy-method="preDestroy">
-        <property name="configType" value="${import.config.type}"/>
+        <property name="configType" value="${config.type}"/>
+        <property name="allowedEndpoints" value="${config.allowedEndpoints}"/>
         <property name="kafkaProps">
             <map>
                 <entry key="kafkaHost" value="${kafka.host}"/>
@@ -93,20 +112,24 @@
         <property name="routeCompletionProcessor" ref="routeCompletionProcessor"/>
         <property name="importConfigByFileNameProcessor" ref="importConfigByFileNameProcessor"/>
         <property name="importConfigurationService" ref="importConfigurationService"/>
+        <property name="exportConfigurationService" ref="exportConfigurationService"/>
+        <property name="persistenceService" ref="persistenceService"/>
         <property name="jacksonDataFormat" ref="jacksonDataFormat"/>
         <property name="bundleContext" ref="blueprintBundleContext"/>
     </bean>
 
     <camel:camelContext id="httpEndpoint" xmlns="http://camel.apache.org/schema/blueprint">
-        <camel:routeBuilder ref="profileImportConfigUpdateRouteBuilder" />
+        <camel:routeBuilder ref="configUpdateRouteBuilder" />
     </camel:camelContext>
 
-    <bean id="profileImportConfigUpdateRouteBuilder" class="org.apache.unomi.router.core.route.ProfileImportConfigUpdateRouteBuilder">
-        <property name="profileImportCamelContext" ref="camelContext"/>
+    <bean id="configUpdateRouteBuilder" class="org.apache.unomi.router.core.route.ConfigUpdateRouteBuilder">
+        <property name="routerCamelContext" ref="camelContext"/>
     </bean>
 
     <reference id="httpService" interface="org.osgi.service.http.HttpService"/>
     <reference id="profileImportService" interface="org.apache.unomi.router.api.services.ProfileImportService"/>
-    <reference id="importConfigurationService" interface="org.apache.unomi.router.api.services.ImportConfigurationService"/>
+    <reference id="persistenceService" interface="org.apache.unomi.persistence.spi.PersistenceService"/>
+    <reference id="importConfigurationService" interface="org.apache.unomi.router.api.services.ImportExportConfigurationService" filter="(configDiscriminator=IMPORT)"/>
+    <reference id="exportConfigurationService" interface="org.apache.unomi.router.api.services.ImportExportConfigurationService" filter="(configDiscriminator=EXPORT)"/>
 
 </blueprint>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/resources/org.apache.unomi.router.cfg
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/resources/org.apache.unomi.router.cfg b/extensions/router/router-core/src/main/resources/org.apache.unomi.router.cfg
index e301b58..2aa385f 100644
--- a/extensions/router/router-core/src/main/resources/org.apache.unomi.router.cfg
+++ b/extensions/router/router-core/src/main/resources/org.apache.unomi.router.cfg
@@ -32,4 +32,10 @@ import.config.type=nobroker
 import.oneshot.uploadDir=${karaf.data}/tmp/unomi_oneshot_import_configs/
 
 #Import executions history size
-import.executionsHistory.size=5
\ No newline at end of file
+import.executionsHistory.size=5
+
+#Allowed source endpoints
+config.allowedEndpoints=file,ftp
+
+#Internal Camel REST services port (Not public - DO NOT OPEN TO PUBLIC)
+config.internalPort=8233
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/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 213f607..0bb1b11 100644
--- a/extensions/router/router-karaf-feature/pom.xml
+++ b/extensions/router/router-karaf-feature/pom.xml
@@ -147,7 +147,7 @@
                 <groupId>org.apache.karaf.tooling</groupId>
                 <artifactId>karaf-maven-plugin</artifactId>
                 <configuration>
-                    <startLevel>90</startLevel>
+                    <startLevel>77</startLevel>
                 </configuration>
             </plugin>
         </plugins>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
new file mode 100644
index 0000000..195cd68
--- /dev/null
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/AbstractConfigurationServiceEndpoint.java
@@ -0,0 +1,92 @@
+/*
+ * 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.router.rest;
+
+import org.apache.unomi.api.services.ConfigSharingService;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+
+import javax.jws.WebMethod;
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import java.util.List;
+
+/**
+ * Created by amidani on 26/06/2017.
+ */
+public abstract class AbstractConfigurationServiceEndpoint<T> {
+
+    protected ImportExportConfigurationService<T> configurationService;
+    protected ConfigSharingService routerConfigSharingService;
+    protected ConfigSharingService clusterConfigSharingService;
+
+    @WebMethod(exclude = true)
+    public void setRouterConfigSharingService(ConfigSharingService routerConfigSharingService) {
+        this.routerConfigSharingService = routerConfigSharingService;
+    }
+
+    @WebMethod(exclude = true)
+    public void setClusterConfigSharingService(ConfigSharingService clusterConfigSharingService) {
+        this.clusterConfigSharingService = clusterConfigSharingService;
+    }
+
+    /**
+     * Retrieves all the configurations.
+     *
+     * @return all the configurations.
+     */
+    @GET
+    @Path("/")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Consumes(MediaType.APPLICATION_JSON)
+    public List<T> getConfigurations() {
+        return this.configurationService.getAll();
+    }
+
+    @POST
+    @Path("/")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Consumes(MediaType.APPLICATION_JSON)
+    public abstract T saveConfiguration(T configuration);
+
+    /**
+     * Retrieves a configuration by id.
+     *
+     * @return the configuration that matches the given id.
+     */
+    @GET
+    @Path("/{configId}")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Consumes(MediaType.APPLICATION_JSON)
+    public T getConfiguration(@PathParam("configId") String configId) {
+        return this.configurationService.load(configId);
+    }
+
+    /**
+     * Delete a configuration by id.
+     *
+     * @return the deleted configuration.
+     */
+    @DELETE
+    @Path("/{configId}")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Consumes(MediaType.APPLICATION_JSON)
+    public void deleteImportConfiguration(@PathParam("configId") String configId) {
+        this.configurationService.delete(configId);
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
new file mode 100644
index 0000000..d5130ba
--- /dev/null
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java
@@ -0,0 +1,86 @@
+/*
+ * 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.router.rest;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.unomi.router.api.ExportConfiguration;
+import org.apache.unomi.router.api.RouterConstants;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.ws.rs.core.MediaType;
+import java.io.IOException;
+
+/**
+ * A JAX-RS endpoint to manage {@link ExportConfiguration}s.
+ */
+@WebService
+@CrossOriginResourceSharing(
+        allowAllOrigins = true,
+        allowCredentials = true
+)
+public class ExportConfigurationServiceEndPoint extends AbstractConfigurationServiceEndpoint<ExportConfiguration> {
+
+    private static final Logger logger = LoggerFactory.getLogger(ExportConfigurationServiceEndPoint.class.getName());
+
+    public ExportConfigurationServiceEndPoint() {
+        logger.info("Initializing export configuration service endpoint...");
+    }
+
+    @WebMethod(exclude = true)
+    public void setExportConfigurationService(ImportExportConfigurationService<ExportConfiguration> exportConfigurationService) {
+        configurationService = exportConfigurationService;
+    }
+
+    /**
+     * Save the given export configuration.
+     *
+     * @return the export configuration saved.
+     */
+    public ExportConfiguration saveConfiguration(ExportConfiguration exportConfiguration) {
+        ExportConfiguration exportConfigSaved = configurationService.save(exportConfiguration);
+        if (RouterConstants.IMPORT_EXPORT_CONFIG_TYPE_RECURRENT.equals(exportConfigSaved.getConfigType())) {
+            CloseableHttpClient httpClient = HttpClients.createDefault();
+            try {
+                HttpPut httpPut = new HttpPut("http://localhost:" + clusterConfigSharingService.getInternalServerPort() + "/configUpdate/exportConfigAdmin");
+                StringEntity input = new StringEntity(new ObjectMapper().writeValueAsString(exportConfigSaved));
+                input.setContentType(MediaType.APPLICATION_JSON);
+                httpPut.setEntity(input);
+
+                HttpResponse response = httpClient.execute(httpPut);
+
+                if (response.getStatusLine().getStatusCode() != 200) {
+                    throw new RuntimeException("Failed : HTTP error code : "
+                            + response.getStatusLine().getStatusCode());
+                }
+            } catch (IOException e) {
+                logger.warn("Unable to update Camel route [{}]", exportConfiguration.getItemId());
+            }
+        }
+
+        return exportConfigSaved;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
index 42670b2..e05167f 100644
--- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
+++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ImportConfigurationServiceEndPoint.java
@@ -17,8 +17,8 @@
 package org.apache.unomi.router.rest;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
+import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.apache.cxf.rs.security.cors.CrossOriginResourceSharing;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpPut;
@@ -26,113 +26,56 @@ import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.unomi.router.api.ImportConfiguration;
-import org.apache.unomi.router.api.services.ImportConfigurationService;
+import org.apache.unomi.router.api.RouterConstants;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.jws.WebMethod;
 import javax.jws.WebService;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.List;
 
 /**
- * A JAX-RS endpoint to manage {@link org.apache.unomi.router.api.ImportConfiguration}s.
+ * A JAX-RS endpoint to manage {@link ImportConfiguration}s.
  */
 @WebService
 @CrossOriginResourceSharing(
         allowAllOrigins = true,
         allowCredentials = true
 )
-public class ImportConfigurationServiceEndPoint {
+public class ImportConfigurationServiceEndPoint extends AbstractConfigurationServiceEndpoint<ImportConfiguration> {
 
     private static final Logger logger = LoggerFactory.getLogger(ImportConfigurationServiceEndPoint.class.getName());
-    private final String CONFIG_TYPE_RECURRENT = "recurrent";
 
-    private ImportConfigurationService importConfigurationService;
-    private String uploadDir;
-    private String serverPort;
-
-    public ImportConfigurationServiceEndPoint () {
+    public ImportConfigurationServiceEndPoint() {
         logger.info("Initializing import configuration service endpoint...");
     }
 
     @WebMethod(exclude = true)
-    public void setImportConfigurationService(ImportConfigurationService importConfigurationService) {
-        this.importConfigurationService = importConfigurationService;
-    }
-
-    @WebMethod(exclude = true)
-    public void setUploadDir(String uploadDir) {
-        this.uploadDir = uploadDir;
-    }
-
-    @WebMethod(exclude = true)
-    public void setServerPort(String serverPort) {
-        this.serverPort = serverPort;
-    }
-
-    /**
-     * Retrieves all the import configurations.
-     *
-     * @return all the import configurations.
-     */
-    @GET
-    @Path("/")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public List<ImportConfiguration> getImportConfigurations() {
-        return importConfigurationService.getImportConfigurations();
-    }
-
-    /**
-     * Retrieves an import configuration by id.
-     *
-     * @return the import configuration that matches the given id.
-     */
-    @GET
-    @Path("/{configId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public ImportConfiguration getImportConfiguration(@PathParam("configId") String configId) {
-        return importConfigurationService.load(configId);
-    }
-
-    /**
-     * Delete an import configuration by id.
-     *
-     * @return the deleted import configuration.
-     */
-    @DELETE
-    @Path("/{configId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public void deleteImportConfiguration(@PathParam("configId") String configId) {
-        importConfigurationService.delete(configId);
+    public void setImportConfigurationService(ImportExportConfigurationService<ImportConfiguration> importConfigurationService) {
+        configurationService = importConfigurationService;
     }
 
-
-
     /**
      * Save the given import configuration.
      *
      * @return the import configuration saved.
      */
-    @POST
-    @Path("/")
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public ImportConfiguration saveImportConfiguration(ImportConfiguration importConfiguration) {
-        ImportConfiguration importConfigSaved = importConfigurationService.save(importConfiguration);
-        if(CONFIG_TYPE_RECURRENT.equals(importConfigSaved.getConfigType())) {
+    public ImportConfiguration saveConfiguration(ImportConfiguration importConfiguration) {
+        ImportConfiguration importConfigSaved = configurationService.save(importConfiguration);
+        if (RouterConstants.IMPORT_EXPORT_CONFIG_TYPE_RECURRENT.equals(importConfigSaved.getConfigType())) {
             CloseableHttpClient httpClient = HttpClients.createDefault();
             try {
-                HttpPut httpPut = new HttpPut("http://localhost:"+serverPort+"/importConfigAdmin/");
+                HttpPut httpPut = new HttpPut("http://localhost:" + clusterConfigSharingService.getInternalServerPort() + "/configUpdate/importConfigAdmin");
                 StringEntity input = new StringEntity(new ObjectMapper().writeValueAsString(importConfigSaved));
                 input.setContentType(MediaType.APPLICATION_JSON);
                 httpPut.setEntity(input);
@@ -153,6 +96,7 @@ public class ImportConfigurationServiceEndPoint {
     /**
      * Save/Update the given import configuration.
      * Prepare the file to be processed with Camel routes
+     *
      * @return OK / NOK Http Code.
      */
     @POST
@@ -161,7 +105,7 @@ public class ImportConfigurationServiceEndPoint {
     @Produces(MediaType.APPLICATION_JSON)
     public Response processOneshotImportConfigurationCSV(@Multipart(value = "importConfigId") String importConfigId, @Multipart(value = "file") Attachment file) {
         try {
-            java.nio.file.Path path = Paths.get(uploadDir+importConfigId+".csv");
+            java.nio.file.Path path = Paths.get(routerConfigSharingService.getOneshotImportUploadDir() + importConfigId + ".csv");
             Files.deleteIfExists(path);
             InputStream in = file.getObject(InputStream.class);
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 8728a7f..fd36e50 100644
--- a/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/router/router-rest/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -24,18 +24,6 @@
                               http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
                               http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
                               http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd">
-    <cm:property-placeholder persistent-id="org.apache.unomi.router" update-strategy="reload">
-        <cm:default-properties>
-            <cm:property name="import.oneshot.uploadDir" value="/tmp/oneshot_import_configs/"/>
-        </cm:default-properties>
-    </cm:property-placeholder>
-
-    <cm:property-placeholder persistent-id="org.apache.unomi.cluster"
-                             update-strategy="reload" placeholder-prefix="${cluster.">
-        <cm:default-properties>
-            <cm:property name="cluster.contextserver.port" value="8181"/>
-        </cm:default-properties>
-    </cm:property-placeholder>
 
     <cxf:bus id="cxsServiceBus">
         <cxf:features>
@@ -69,12 +57,40 @@
         </jaxrs:serviceBeans>
     </jaxrs:server>
 
-    <reference id="importConfigurationService" interface="org.apache.unomi.router.api.services.ImportConfigurationService"/>
+    <jaxrs:server address="/exportConfiguration" id="restExportConfigurationService">
+        <jaxrs:providers>
+            <ref component-id="json-provider"/>
+            <ref component-id="cors-filter"/>
+            <ref component-id="jaas-filter"/>
+        </jaxrs:providers>
+
+        <jaxrs:serviceBeans>
+            <ref component-id="exportConfigurationServiceEndPoint"/>
+        </jaxrs:serviceBeans>
+    </jaxrs:server>
+
+    <reference id="importConfigurationService" interface="org.apache.unomi.router.api.services.ImportExportConfigurationService"
+            filter="(configDiscriminator=IMPORT)"/>
+
+    <reference id="exportConfigurationService" interface="org.apache.unomi.router.api.services.ImportExportConfigurationService"
+               filter="(configDiscriminator=EXPORT)"/>
+
+    <reference id="configSharingServiceRouter" interface="org.apache.unomi.api.services.ConfigSharingService"
+               filter="(bundleDiscriminator=ROUTER)"/>
+
+    <reference id="configSharingServiceCluster" interface="org.apache.unomi.api.services.ConfigSharingService"
+               filter="(bundleDiscriminator=SERVICES)"/>
 
     <bean id="importConfigurationServiceEndPoint" class="org.apache.unomi.router.rest.ImportConfigurationServiceEndPoint">
         <property name="importConfigurationService" ref="importConfigurationService"/>
-        <property name="uploadDir" value="${import.oneshot.uploadDir}"/>
-        <property name="serverPort" value="${cluster.contextserver.port}"/>
+        <property name="routerConfigSharingService" ref="configSharingServiceRouter"/>
+        <property name="clusterConfigSharingService" ref="configSharingServiceCluster"/>
+    </bean>
+
+    <bean id="exportConfigurationServiceEndPoint" class="org.apache.unomi.router.rest.ExportConfigurationServiceEndPoint">
+        <property name="exportConfigurationService" ref="exportConfigurationService"/>
+        <property name="routerConfigSharingService" ref="configSharingServiceRouter"/>
+        <property name="clusterConfigSharingService" ref="configSharingServiceCluster"/>
     </bean>
 
 </blueprint>

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/AbstractConfigurationServiceImpl.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/AbstractConfigurationServiceImpl.java b/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/AbstractConfigurationServiceImpl.java
new file mode 100644
index 0000000..3b87e85
--- /dev/null
+++ b/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/AbstractConfigurationServiceImpl.java
@@ -0,0 +1,73 @@
+/*
+ * 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.router.services;
+
+import org.apache.unomi.persistence.spi.PersistenceService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.SynchronousBundleListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by amidani on 26/06/2017.
+ */
+public class AbstractConfigurationServiceImpl implements SynchronousBundleListener {
+
+    private static final Logger logger = LoggerFactory.getLogger(AbstractConfigurationServiceImpl.class.getName());
+
+    protected BundleContext bundleContext;
+    protected PersistenceService persistenceService;
+
+    public void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
+
+    public void setPersistenceService(PersistenceService persistenceService) {
+        this.persistenceService = persistenceService;
+    }
+
+    public void postConstruct() {
+        logger.debug("postConstruct {" + bundleContext.getBundle() + "}");
+
+        processBundleStartup(bundleContext);
+        for (Bundle bundle : bundleContext.getBundles()) {
+            if (bundle.getBundleContext() != null) {
+                processBundleStartup(bundle.getBundleContext());
+            }
+        }
+        bundleContext.addBundleListener(this);
+        logger.info("Configuration service initialized.");
+    }
+
+    public void preDestroy() {
+        bundleContext.removeBundleListener(this);
+        logger.info("Configuration service shutdown.");
+    }
+
+    @Override
+    public void bundleChanged(BundleEvent bundleEvent) {
+
+    }
+
+    private void processBundleStartup(BundleContext bundleContext) {
+        if (bundleContext == null) {
+            return;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ExportConfigurationServiceImpl.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ExportConfigurationServiceImpl.java b/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ExportConfigurationServiceImpl.java
new file mode 100644
index 0000000..762a65f
--- /dev/null
+++ b/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ExportConfigurationServiceImpl.java
@@ -0,0 +1,61 @@
+/*
+ * 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.router.services;
+
+import org.apache.unomi.router.api.ExportConfiguration;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * Created by amidani on 28/04/2017.
+ */
+public class ExportConfigurationServiceImpl extends AbstractConfigurationServiceImpl implements ImportExportConfigurationService<ExportConfiguration> {
+
+    private static final Logger logger = LoggerFactory.getLogger(ExportConfigurationServiceImpl.class.getName());
+
+    public ExportConfigurationServiceImpl() {
+        logger.info("Initializing export configuration service...");
+    }
+
+    @Override
+    public List<ExportConfiguration> getAll() {
+        return persistenceService.getAllItems(ExportConfiguration.class);
+    }
+
+    @Override
+    public ExportConfiguration load(String configId) {
+        return persistenceService.load(configId, ExportConfiguration.class);
+    }
+
+    @Override
+    public ExportConfiguration save(ExportConfiguration exportConfiguration) {
+        if (exportConfiguration.getItemId() == null) {
+            exportConfiguration.setItemId(UUID.randomUUID().toString());
+        }
+        persistenceService.save(exportConfiguration);
+        return persistenceService.load(exportConfiguration.getItemId(), ExportConfiguration.class);
+    }
+
+    @Override
+    public void delete(String configId) {
+        persistenceService.remove(configId, ExportConfiguration.class);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ImportConfigurationServiceImpl.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ImportConfigurationServiceImpl.java b/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ImportConfigurationServiceImpl.java
index 5283cce..5275919 100644
--- a/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ImportConfigurationServiceImpl.java
+++ b/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ImportConfigurationServiceImpl.java
@@ -14,16 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.unomi.router.services;
 
 import org.apache.unomi.router.api.ImportConfiguration;
-import org.apache.unomi.router.api.services.ImportConfigurationService;
-import org.apache.unomi.persistence.spi.PersistenceService;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.SynchronousBundleListener;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -33,55 +27,16 @@ import java.util.UUID;
 /**
  * Created by amidani on 28/04/2017.
  */
-public class ImportConfigurationServiceImpl implements ImportConfigurationService,SynchronousBundleListener {
+public class ImportConfigurationServiceImpl extends AbstractConfigurationServiceImpl implements ImportExportConfigurationService<ImportConfiguration> {
 
     private static final Logger logger = LoggerFactory.getLogger(ImportConfigurationServiceImpl.class.getName());
 
-    private BundleContext bundleContext;
-    private PersistenceService persistenceService;
-
     public ImportConfigurationServiceImpl() {
         logger.info("Initializing import configuration service...");
     }
 
-    public void setBundleContext(BundleContext bundleContext) {
-        this.bundleContext = bundleContext;
-    }
-
-    public void setPersistenceService(PersistenceService persistenceService) {
-        this.persistenceService = persistenceService;
-    }
-
-    public void postConstruct() {
-        logger.debug("postConstruct {" + bundleContext.getBundle() + "}");
-
-        processBundleStartup(bundleContext);
-        for (Bundle bundle : bundleContext.getBundles()) {
-            if (bundle.getBundleContext() != null) {
-                processBundleStartup(bundle.getBundleContext());
-            }
-        }
-        bundleContext.addBundleListener(this);
-        logger.info("Import configuration service initialized.");
-    }
-
-    public void preDestroy() {
-        bundleContext.removeBundleListener(this);
-        logger.info("Import configuration service shutdown.");
-    }
-
-    private void processBundleStartup(BundleContext bundleContext) {
-        if (bundleContext == null) {
-            return;
-        }
-    }
-
-    private void processBundleStop(BundleContext bundleContext) {
-    }
-
-
     @Override
-    public List<ImportConfiguration> getImportConfigurations() {
+    public List<ImportConfiguration> getAll() {
         return persistenceService.getAllItems(ImportConfiguration.class);
     }
 
@@ -103,9 +58,4 @@ public class ImportConfigurationServiceImpl implements ImportConfigurationServic
     public void delete(String configId) {
         persistenceService.remove(configId, ImportConfiguration.class);
     }
-
-    @Override
-    public void bundleChanged(BundleEvent bundleEvent) {
-
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index 61200f2..ac66f41 100644
--- a/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/extensions/router/router-service/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -27,7 +27,22 @@
         <property name="persistenceService" ref="persistenceService"/>
         <property name="bundleContext" ref="blueprintBundleContext"/>
     </bean>
-    <service id="importConfigurationService" ref="importConfigurationServiceImpl" auto-export="interfaces"/>
+    <service id="importConfigurationService" ref="importConfigurationServiceImpl" auto-export="interfaces">
+        <service-properties>
+            <entry key="configDiscriminator" value="IMPORT"/>
+        </service-properties>
+    </service>
+
+    <bean id="exportConfigurationServiceImpl" class="org.apache.unomi.router.services.ExportConfigurationServiceImpl"
+          init-method="postConstruct" destroy-method="preDestroy">
+        <property name="persistenceService" ref="persistenceService"/>
+        <property name="bundleContext" ref="blueprintBundleContext"/>
+    </bean>
+    <service id="exportConfigurationService" ref="exportConfigurationServiceImpl" auto-export="interfaces">
+        <service-properties>
+            <entry key="configDiscriminator" value="EXPORT"/>
+        </service-properties>
+    </service>
 
     <bean id="profileImportServiceImpl" class="org.apache.unomi.router.services.ProfileImportServiceImpl"
           init-method="postConstruct" destroy-method="preDestroy">



[4/5] incubator-unomi git commit: UNOMI-106 : Expose a service to share cfg properties with other bundles

Posted by am...@apache.org.
UNOMI-106 : Expose a service to share cfg properties with other bundles


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

Branch: refs/heads/master
Commit: cb83301ffdaa6fb0fef9969fbaf4582c0d1df2b4
Parents: c62f91d4
Author: Abdelkader Midani <am...@apache.org>
Authored: Wed Jun 28 02:31:06 2017 +0200
Committer: Abdelkader Midani <am...@apache.org>
Committed: Wed Jun 28 02:31:06 2017 +0200

----------------------------------------------------------------------
 .../services/ConfigSharingServiceImpl.java      | 80 ++++++++++++++++++++
 .../resources/OSGI-INF/blueprint/blueprint.xml  | 11 +++
 2 files changed, 91 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/cb83301f/services/src/main/java/org/apache/unomi/services/services/ConfigSharingServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/ConfigSharingServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/ConfigSharingServiceImpl.java
new file mode 100644
index 0000000..2b7da8a
--- /dev/null
+++ b/services/src/main/java/org/apache/unomi/services/services/ConfigSharingServiceImpl.java
@@ -0,0 +1,80 @@
+/*
+ * 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.services.services;
+
+import org.apache.unomi.api.services.ConfigSharingService;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.SynchronousBundleListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by amidani on 27/06/2017.
+ */
+public class ConfigSharingServiceImpl implements ConfigSharingService, SynchronousBundleListener {
+
+    private static final Logger logger = LoggerFactory.getLogger(ConfigSharingServiceImpl.class);
+
+    private String internalServerPort;
+
+    private BundleContext bundleContext;
+
+    public void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
+
+    @Override
+    public String getInternalServerPort() {
+        return this.internalServerPort;
+    }
+
+    @Override
+    public void setInternalServerPort(String internalServerPort) {
+        this.internalServerPort = internalServerPort;
+    }
+
+    /**
+     * Methods below not used in services bundle implementation of the ConfigSharingService
+     **/
+
+    @Override
+    public String getOneshotImportUploadDir() {
+        return null;
+    }
+
+    @Override
+    public void setOneshotImportUploadDir(String oneshotImportUploadDir) {
+    }
+
+    public void preDestroy() throws Exception {
+        bundleContext.removeBundleListener(this);
+        logger.info("Config sharing service for Service is shutdown.");
+    }
+
+    private void processBundleStartup(BundleContext bundleContext) {
+        if (bundleContext == null) {
+            return;
+        }
+    }
+
+    @Override
+    public void bundleChanged(BundleEvent bundleEvent) {
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/cb83301f/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
----------------------------------------------------------------------
diff --git a/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index fa2d3dd..b6c4f6c 100644
--- a/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/services/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -235,4 +235,15 @@
         </bean>
     </service>
 
+    <bean id="configSharingServiceCB" class="org.apache.unomi.services.services.ConfigSharingServiceImpl" destroy-method="preDestroy">
+        <property name="internalServerPort" value="${cluster.contextserver.port}"/>
+        <property name="bundleContext" ref="blueprintBundleContext"/>
+    </bean>
+
+    <service id="configSharingServiceCBE" ref="configSharingServiceCB" auto-export="interfaces">
+        <service-properties>
+            <entry key="bundleDiscriminator" value="SERVICES"/>
+        </service-properties>
+    </service>
+
 </blueprint>


[3/5] incubator-unomi git commit: UNOMI-102 : Refactor import code to avoid code duplication with export features

Posted by am...@apache.org.
UNOMI-102 : Refactor import code to avoid code duplication with export features


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

Branch: refs/heads/master
Commit: c62f91d4bec9ef723f9af4e50c7506cb88ec02d9
Parents: fe8fbef
Author: Abdelkader Midani <am...@apache.org>
Authored: Wed Jun 28 02:28:17 2017 +0200
Committer: Abdelkader Midani <am...@apache.org>
Committed: Wed Jun 28 02:28:17 2017 +0200

----------------------------------------------------------------------
 .../api/services/ConfigSharingService.java      |  32 +++
 .../unomi/router/api/ExportConfiguration.java   |  45 ++++
 .../unomi/router/api/ImportConfiguration.java   | 182 +-------------
 .../router/api/ImportExportConfiguration.java   | 203 ++++++++++++++++
 .../unomi/router/api/RouterConstants.java       |  44 ++++
 .../services/ImportConfigurationService.java    |  60 -----
 .../ImportExportConfigurationService.java       |  61 +++++
 extensions/router/router-core/pom.xml           |   7 +
 .../unomi/router/core/RouterConstants.java      |  41 ----
 .../core/config/ConfigSharingServiceImpl.java   |  77 ++++++
 .../core/context/ProfileImportCamelContext.java | 187 --------------
 .../router/core/context/RouterCamelContext.java | 243 +++++++++++++++++++
 .../core/processor/ConfigUpdateProcessor.java   |  12 +-
 .../ImportConfigByFileNameProcessor.java        |   8 +-
 .../core/processor/LineSplitFailureHandler.java |   2 +-
 .../core/processor/LineSplitProcessor.java      |   2 +-
 .../processor/RouteCompletionProcessor.java     |   8 +-
 .../core/route/ConfigUpdateRouteBuilder.java    |  73 ++++++
 .../route/ProfileExportCollectRouteBuilder.java |  81 +++++++
 .../ProfileImportAbstractRouteBuilder.java      |   2 +-
 .../ProfileImportConfigUpdateRouteBuilder.java  |  62 -----
 .../ProfileImportFromSourceRouteBuilder.java    | 104 ++++----
 .../route/ProfileImportOneShotRouteBuilder.java |   2 +-
 .../route/ProfileImportToUnomiRouteBuilder.java |   2 +-
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  39 ++-
 .../main/resources/org.apache.unomi.router.cfg  |   8 +-
 extensions/router/router-karaf-feature/pom.xml  |   2 +-
 .../AbstractConfigurationServiceEndpoint.java   |  92 +++++++
 .../ExportConfigurationServiceEndPoint.java     |  86 +++++++
 .../ImportConfigurationServiceEndPoint.java     |  92 ++-----
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  46 ++--
 .../AbstractConfigurationServiceImpl.java       |  73 ++++++
 .../ExportConfigurationServiceImpl.java         |  61 +++++
 .../ImportConfigurationServiceImpl.java         |  56 +----
 .../resources/OSGI-INF/blueprint/blueprint.xml  |  17 +-
 35 files changed, 1363 insertions(+), 749 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/api/src/main/java/org/apache/unomi/api/services/ConfigSharingService.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/services/ConfigSharingService.java b/api/src/main/java/org/apache/unomi/api/services/ConfigSharingService.java
new file mode 100644
index 0000000..1bfb050
--- /dev/null
+++ b/api/src/main/java/org/apache/unomi/api/services/ConfigSharingService.java
@@ -0,0 +1,32 @@
+/*
+ * 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.services;
+
+/**
+ * A service to share cfg properties with other bundles.
+ */
+public interface ConfigSharingService {
+
+    String getOneshotImportUploadDir();
+
+    void setOneshotImportUploadDir(String oneshotImportUploadDir);
+
+    String getInternalServerPort();
+
+    void setInternalServerPort(String internalServerPort);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ExportConfiguration.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ExportConfiguration.java b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ExportConfiguration.java
new file mode 100644
index 0000000..5380691
--- /dev/null
+++ b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ExportConfiguration.java
@@ -0,0 +1,45 @@
+/*
+ * 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.router.api;
+
+import org.apache.unomi.api.Item;
+import org.apache.unomi.api.conditions.Condition;
+
+/**
+ * Created by amidani on 19/06/2017.
+ */
+public class ExportConfiguration extends ImportExportConfiguration {
+
+    /**
+     * The ExportConfiguration ITEM_TYPE
+     *
+     * @see Item for a discussion of ITEM_TYPE
+     */
+    public static final String ITEM_TYPE = "exportConfig";
+
+    private String[] segments;
+
+    public String[] getSegments() {
+        return segments;
+    }
+
+    public void setSegments(String[] segments) {
+        this.segments = segments;
+    }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
index ee0184a..b961cfb 100644
--- a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
+++ b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
@@ -25,7 +25,7 @@ import java.util.*;
 /**
  * Created by amidani on 28/04/2017.
  */
-public class ImportConfiguration extends Item {
+public class ImportConfiguration extends ImportExportConfiguration {
 
     /**
      * The ImportConfiguration ITEM_TYPE
@@ -33,102 +33,10 @@ public class ImportConfiguration extends Item {
      * @see Item for a discussion of ITEM_TYPE
      */
     public static final String ITEM_TYPE = "importConfig";
-    private String name;
-    private String description;
-    private String configType;
-    private Map<String, Object> properties = new HashMap<>();
     private String mergingProperty;
     private boolean overwriteExistingProfiles = false;
     private List<String> propertiesToOverwrite;
 
-    private String columnSeparator = ",";
-    private String lineSeparator = "\n";
-    private boolean active = false;
-    private String status;
-
-    private List<Map<String, Object>> executions = new ArrayList();
-
-    /**
-     * Sets the property identified by the specified name to the specified value. If a property with that name already exists, replaces its value, otherwise adds the new
-     * property with the specified name and value.
-     *
-     * @param name  the name of the property to set
-     * @param value the value of the property
-     */
-    public void setProperty(String name, Object value) {
-        properties.put(name, value);
-    }
-
-    /**
-     * Retrieves the name of the import configuration
-     * @return the name of the import configuration
-     */
-    public String getName() { return this.name; }
-
-    /**
-     * Sets the name of the import configuration
-     * @param name the name of the import configuration
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Retrieves the description of the import configuration
-     * @return the description of the import configuration
-     */
-    public String getDescription() { return this.description; }
-
-    /**
-     * Sets the description of the import configuration
-     * @param description the description of the import configuration
-     */
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-
-    /**
-     * Retrieves the config type of the import configuration
-     * @return the config type of the import configuration
-     */
-    public String getConfigType() { return this.configType; }
-
-    /**
-     * Sets the config type of the import configuration
-     * @param configType the config type of the import configuration
-     */
-    public void setConfigType(String configType) {
-        this.configType = configType;
-    }
-
-    /**
-     * Retrieves the property identified by the specified name.
-     *
-     * @param name the name of the property to retrieve
-     * @return the value of the specified property or {@code null} if no such property exists
-     */
-    public Object getProperty(String name) {
-        return properties.get(name);
-    }
-
-    /**
-     * Retrieves a Map of all property name - value pairs for this import configuration.
-     *
-     * @return a Map of all property name - value pairs for this import configuration
-     */
-    public Map<String, Object> getProperties() {
-        return properties;
-    }
-
-    /**
-     * Sets the property name - value pairs for this import configuration.
-     *
-     * @param properties a Map containing the property name - value pairs for this import configuration
-     */
-    public void setProperties(Map<String, Object> properties) {
-        this.properties = properties;
-    }
 
     public String getMergingProperty() {
         return mergingProperty;
@@ -142,43 +50,6 @@ public class ImportConfiguration extends Item {
         this.mergingProperty = mergingProperty;
     }
 
-
-    /**
-     * Retrieves the import configuration active flag.
-     *
-     * @return true if the import configuration is active false if not
-     */
-    public boolean isActive() {
-        return this.active;
-    }
-
-    /**
-     * Sets the active flag true/false.
-     *
-     * @param active a boolean to set to active or inactive the import configuration
-     */
-    public void setActive(boolean active) {
-        this.active = active;
-    }
-
-    /**
-     * Retrieves the import configuration status for last execution.
-     *
-     * @return status of the last execution
-     */
-    public String getStatus() {
-        return this.status;
-    }
-
-    /**
-     * Sets status of the last execution.
-     *
-     * @param status of the last execution
-     */
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
     /**
      * Retrieves the import configuration overwriteExistingProfiles flag.
      *
@@ -205,55 +76,4 @@ public class ImportConfiguration extends Item {
         this.propertiesToOverwrite = propertiesToOverwrite;
     }
 
-    /**
-     * Retrieves the column separator.
-     */
-    public String getColumnSeparator() {
-        return this.columnSeparator;
-    }
-
-    /**
-     * Sets the column separator.
-     * @param columnSeparator property used to specify a line separator. Defaults to ','
-     */
-    public void setColumnSeparator(String columnSeparator) {
-        if(this.columnSeparator !=null) {
-            this.columnSeparator = columnSeparator;
-        }
-    }
-
-    /**
-     * Retrieves the line separator.
-     */
-    public String getLineSeparator() {
-        return this.lineSeparator;
-    }
-
-    /**
-     * Sets the line separator.
-     * @param lineSeparator property used to specify a line separator. Defaults to '\n'
-     */
-    public void setLineSeparator(String lineSeparator) {
-        if(lineSeparator != null) {
-            this.lineSeparator = lineSeparator;
-        }
-    }
-
-    /**
-     * Retrieves the executions
-     */
-    public List<Map<String, Object>> getExecutions() {
-        return this.executions;
-    }
-
-
-    /**
-     * Sets the executions
-     * @param executions
-     */
-    public void setExecutions(List<Map<String, Object>> executions) {
-        this.executions = executions;
-    }
-
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportExportConfiguration.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportExportConfiguration.java b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportExportConfiguration.java
new file mode 100644
index 0000000..82e2f0d
--- /dev/null
+++ b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportExportConfiguration.java
@@ -0,0 +1,203 @@
+/*
+ * 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.router.api;
+
+        import org.apache.unomi.api.Item;
+
+        import java.util.ArrayList;
+        import java.util.HashMap;
+        import java.util.List;
+        import java.util.Map;
+
+/**
+ * Created by amidani on 21/06/2017.
+ */
+public class ImportExportConfiguration extends Item {
+
+    private String name;
+    private String description;
+    private String configType;
+    private Map<String, Object> properties = new HashMap<>();
+    private String columnSeparator = ",";
+    private String lineSeparator = "\n";
+    private boolean active;
+    private String status;
+
+    private List<Map<String, Object>> executions = new ArrayList();
+
+    /**
+     * Sets the property identified by the specified name to the specified value. If a property with that name already exists, replaces its value, otherwise adds the new
+     * property with the specified name and value.
+     *
+     * @param name  the name of the property to set
+     * @param value the value of the property
+     */
+    public void setProperty(String name, Object value) {
+        properties.put(name, value);
+    }
+
+    /**
+     * Retrieves the name of the import configuration
+     * @return the name of the import configuration
+     */
+    public String getName() { return this.name; }
+
+    /**
+     * Sets the name of the import configuration
+     * @param name the name of the import configuration
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Retrieves the description of the import configuration
+     * @return the description of the import configuration
+     */
+    public String getDescription() { return this.description; }
+
+    /**
+     * Sets the description of the import configuration
+     * @param description the description of the import configuration
+     */
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+
+    /**
+     * Retrieves the config type of the import configuration
+     * @return the config type of the import configuration
+     */
+    public String getConfigType() { return this.configType; }
+
+    /**
+     * Sets the config type of the import configuration
+     * @param configType the config type of the import configuration
+     */
+    public void setConfigType(String configType) {
+        this.configType = configType;
+    }
+
+    /**
+     * Retrieves the property identified by the specified name.
+     *
+     * @param name the name of the property to retrieve
+     * @return the value of the specified property or {@code null} if no such property exists
+     */
+    public Object getProperty(String name) {
+        return properties.get(name);
+    }
+
+    /**
+     * Retrieves a Map of all property name - value pairs for this import configuration.
+     *
+     * @return a Map of all property name - value pairs for this import configuration
+     */
+    public Map<String, Object> getProperties() {
+        return properties;
+    }
+
+    /**
+     * Retrieves the import configuration active flag.
+     *
+     * @return true if the import configuration is active false if not
+     */
+    public boolean isActive() {
+        return this.active;
+    }
+
+    /**
+     * Sets the active flag true/false.
+     *
+     * @param active a boolean to set to active or inactive the import configuration
+     */
+    public void setActive(boolean active) {
+        this.active = active;
+    }
+
+    /**
+     * Retrieves the import configuration status for last execution.
+     *
+     * @return status of the last execution
+     */
+    public String getStatus() {
+        return this.status;
+    }
+
+    /**
+     * Sets status of the last execution.
+     *
+     * @param status of the last execution
+     */
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    /**
+     * Retrieves the column separator.
+     */
+    public String getColumnSeparator() {
+        return this.columnSeparator;
+    }
+
+    /**
+     * Sets the column separator.
+     * @param columnSeparator property used to specify a line separator. Defaults to ','
+     */
+    public void setColumnSeparator(String columnSeparator) {
+        if(this.columnSeparator !=null) {
+            this.columnSeparator = columnSeparator;
+        }
+    }
+
+    /**
+     * Retrieves the line separator.
+     */
+    public String getLineSeparator() {
+        return this.lineSeparator;
+    }
+
+    /**
+     * Sets the line separator.
+     * @param lineSeparator property used to specify a line separator. Defaults to '\n'
+     */
+    public void setLineSeparator(String lineSeparator) {
+        if(lineSeparator != null) {
+            this.lineSeparator = lineSeparator;
+        }
+    }
+
+    /**
+     * Retrieves the executions
+     */
+    public List<Map<String, Object>> getExecutions() {
+        return this.executions;
+    }
+
+
+    /**
+     * Sets the executions
+     * @param executions
+     */
+    public void setExecutions(List<Map<String, Object>> executions) {
+        this.executions = executions;
+    }
+
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java
new file mode 100644
index 0000000..45de3d6
--- /dev/null
+++ b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java
@@ -0,0 +1,44 @@
+/*
+ * 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.router.api;
+
+/**
+ * Created by amidani on 13/06/2017.
+ */
+public interface RouterConstants {
+
+    String CONFIG_TYPE_NOBROKER = "nobroker";
+    String CONFIG_TYPE_KAFKA = "kafka";
+
+    String CONFIG_STATUS_RUNNING = "RUNNING";
+    String CONFIG_STATUS_COMPLETE_ERRORS = "ERRORS";
+    String CONFIG_STATUS_COMPLETE_SUCCESS = "SUCCESS";
+    String CONFIG_STATUS_COMPLETE_WITH_ERRORS = "WITH_ERRORS";
+
+    String IMPORT_EXPORT_CONFIG_TYPE_RECURRENT = "recurrent";
+    String IMPORT_EXPORT_CONFIG_TYPE_ONESHOT = "oneshot";
+
+    String DIRECT_DEPOSIT_BUFFER = "direct:depositBuffer";
+
+    String DIRECTION_FROM = "from";
+    String DIRECTION_TO = "to";
+
+    String HEADER_CONFIG_TYPE = "configType";
+
+    String HEADER_FAILED_MESSAGE = "failedMessage";
+    String HEADER_IMPORT_CONFIG_ONESHOT = "importConfigOneShot";
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportConfigurationService.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportConfigurationService.java b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportConfigurationService.java
deleted file mode 100644
index 92991fe..0000000
--- a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportConfigurationService.java
+++ /dev/null
@@ -1,60 +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.router.api.services;
-
-import org.apache.unomi.router.api.ImportConfiguration;
-
-import java.util.List;
-
-/**
- * A service to access and operate on {@link ImportConfiguration}s.
- */
-public interface ImportConfigurationService {
-
-    /**
-     * Retrieves all the import configurations.
-     *
-     * @return the list of import configurations
-     */
-    public List<ImportConfiguration> getImportConfigurations();
-
-    /**
-     * Retrieves the import configuration identified by the specified identifier.
-     *
-     * @param configId the identifier of the profile to retrieve
-     * @return the import configuration identified by the specified identifier or
-     *  {@code null} if no such import configuration exists
-     */
-    public ImportConfiguration load(String configId);
-
-    /**
-     * Saves the specified import configuration in the context server.
-     *
-     * @param importConfiguration the import configuration to be saved
-     * @return the newly saved import configuration
-     */
-    public ImportConfiguration save(ImportConfiguration importConfiguration);
-
-    /**
-     * Deletes the import configuration identified by the specified identifier.
-     *
-     * @param configId the identifier of the import configuration to delete
-     */
-    public void delete(String configId);
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportExportConfigurationService.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportExportConfigurationService.java b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportExportConfigurationService.java
new file mode 100644
index 0000000..7868b9c
--- /dev/null
+++ b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ImportExportConfigurationService.java
@@ -0,0 +1,61 @@
+/*
+ * 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.router.api.services;
+
+import org.apache.unomi.router.api.ExportConfiguration;
+import org.apache.unomi.router.api.ImportConfiguration;
+
+import java.util.List;
+
+/**
+ * A service to access and operate on {@link ImportConfiguration}s / {@link ExportConfiguration}s.
+ */
+public interface ImportExportConfigurationService<T> {
+
+    /**
+     * Retrieves all the import/export configurations.
+     *
+     * @return the list of import/export configurations
+     */
+    public List<T> getAll();
+
+    /**
+     * Retrieves the import/export configuration identified by the specified identifier.
+     *
+     * @param configId the identifier of the profile to retrieve
+     * @return the import/export configuration identified by the specified identifier or
+     * {@code null} if no such import/export configuration exists
+     */
+    public T load(String configId);
+
+    /**
+     * Saves the specified import/export configuration in the context server.
+     *
+     * @param configuration the import/export configuration to be saved
+     * @return the newly saved import/export configuration
+     */
+    public T save(T configuration);
+
+    /**
+     * Deletes the import/export configuration identified by the specified identifier.
+     *
+     * @param configId the identifier of the import/export configuration to delete
+     */
+    public void delete(String configId);
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/pom.xml b/extensions/router/router-core/pom.xml
index 95cc6b2..7e4a60a 100644
--- a/extensions/router/router-core/pom.xml
+++ b/extensions/router/router-core/pom.xml
@@ -47,6 +47,12 @@
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-persistence-spi</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-services</artifactId>
             <version>${project.version}</version>
             <scope>provided</scope>
@@ -138,6 +144,7 @@
                             org.apache.unomi.api,
                             org.apache.unomi.router.api,
                             org.apache.unomi.api.services,
+                            org.apache.unomi.persistence.spi,
                             org.apache.unomi.router.api.services,
                             org.apache.kafka.clients.producer;resolution:=optional,
                             org.apache.kafka.clients.consumer;resolution:=optional,

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/RouterConstants.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/RouterConstants.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/RouterConstants.java
deleted file mode 100644
index 04e3709..0000000
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/RouterConstants.java
+++ /dev/null
@@ -1,41 +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.router.core;
-
-/**
- * Created by amidani on 13/06/2017.
- */
-public interface RouterConstants {
-
-    String CONFIG_TYPE_NOBROKER = "nobroker";
-    String CONFIG_TYPE_KAFKA = "kafka";
-
-    String CONFIG_STATUS_RUNNING = "RUNNING";
-    String CONFIG_STATUS_COMPLETE_ERRORS = "ERRORS";
-    String CONFIG_STATUS_COMPLETE_SUCCESS = "SUCCESS";
-    String CONFIG_STATUS_COMPLETE_WITH_ERRORS = "WITH_ERRORS";
-
-    String DIRECT_DEPOSIT_BUFFER = "direct:depositBuffer";
-
-    String DIRECTION_FROM = "from";
-    String DIRECTION_TO = "to";
-
-    String HEADER_CONFIG_TYPE = "configType";
-
-    String HEADER_FAILED_MESSAGE = "failedMessage";
-    String HEADER_IMPORT_CONFIG_ONESHOT = "importConfigOneShot";
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/config/ConfigSharingServiceImpl.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/config/ConfigSharingServiceImpl.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/config/ConfigSharingServiceImpl.java
new file mode 100644
index 0000000..6aa357e
--- /dev/null
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/config/ConfigSharingServiceImpl.java
@@ -0,0 +1,77 @@
+/*
+ * 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.router.core.config;
+
+import org.apache.unomi.api.services.ConfigSharingService;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.SynchronousBundleListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by amidani on 27/06/2017.
+ */
+public class ConfigSharingServiceImpl implements ConfigSharingService, SynchronousBundleListener {
+
+    private static final Logger logger = LoggerFactory.getLogger(ConfigSharingServiceImpl.class);
+
+    private String oneshotImportUploadDir;
+    private BundleContext bundleContext;
+
+    public void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
+
+    @Override
+    public String getOneshotImportUploadDir() {
+        return oneshotImportUploadDir;
+    }
+
+    @Override
+    public void setOneshotImportUploadDir(String oneshotImportUploadDir) {
+        this.oneshotImportUploadDir = oneshotImportUploadDir;
+    }
+
+    /** Methods below not used in router bundle implementation of the ConfigSharingService **/
+
+    @Override
+    public String getInternalServerPort() {
+        return null;
+    }
+
+    @Override
+    public void setInternalServerPort(String internalServerPort) { }
+
+
+    public void preDestroy() throws Exception {
+        bundleContext.removeBundleListener(this);
+        logger.info("Config sharing service for Router is shutdown.");
+    }
+
+    private void processBundleStartup(BundleContext bundleContext) {
+        if (bundleContext == null) {
+            return;
+        }
+    }
+
+    @Override
+    public void bundleChanged(BundleEvent bundleEvent) {
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/ProfileImportCamelContext.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/ProfileImportCamelContext.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/ProfileImportCamelContext.java
deleted file mode 100644
index 7942f02..0000000
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/ProfileImportCamelContext.java
+++ /dev/null
@@ -1,187 +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.router.core.context;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Route;
-import org.apache.camel.component.jackson.JacksonDataFormat;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.unomi.router.api.ImportConfiguration;
-import org.apache.unomi.router.api.services.ImportConfigurationService;
-import org.apache.unomi.router.core.processor.ImportConfigByFileNameProcessor;
-import org.apache.unomi.router.core.processor.RouteCompletionProcessor;
-import org.apache.unomi.router.core.processor.UnomiStorageProcessor;
-import org.apache.unomi.router.core.route.ProfileImportFromSourceRouteBuilder;
-import org.apache.unomi.router.core.route.ProfileImportOneShotRouteBuilder;
-import org.apache.unomi.router.core.route.ProfileImportToUnomiRouteBuilder;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.SynchronousBundleListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Created by amidani on 04/05/2017.
- */
-public class ProfileImportCamelContext implements SynchronousBundleListener {
-
-    private final String IMPORT_CONFIG_TYPE_RECURRENT = "recurrent";
-    private Logger logger = LoggerFactory.getLogger(ProfileImportCamelContext.class.getName());
-    private CamelContext camelContext;
-    private UnomiStorageProcessor unomiStorageProcessor;
-    private RouteCompletionProcessor routeCompletionProcessor;
-    private ImportConfigByFileNameProcessor importConfigByFileNameProcessor;
-    private ImportConfigurationService importConfigurationService;
-    private JacksonDataFormat jacksonDataFormat;
-    private String uploadDir;
-    private Map<String, String> kafkaProps;
-    private String configType;
-    private BundleContext bundleContext;
-
-    public void setBundleContext(BundleContext bundleContext) {
-        this.bundleContext = bundleContext;
-    }
-
-    public void initCamelContext() throws Exception {
-        logger.info("Initialize Camel Context...");
-        camelContext = new DefaultCamelContext();
-
-        ProfileImportFromSourceRouteBuilder builderReader = new ProfileImportFromSourceRouteBuilder(kafkaProps, configType);
-        builderReader.setImportConfigurationService(importConfigurationService);
-        builderReader.setJacksonDataFormat(jacksonDataFormat);
-        builderReader.setContext(camelContext);
-        camelContext.addRoutes(builderReader);
-
-        //One shot import route
-        ProfileImportOneShotRouteBuilder builderOneShot = new ProfileImportOneShotRouteBuilder(kafkaProps, configType);
-        builderOneShot.setImportConfigByFileNameProcessor(importConfigByFileNameProcessor);
-        builderOneShot.setJacksonDataFormat(jacksonDataFormat);
-        builderOneShot.setUploadDir(uploadDir);
-        builderOneShot.setContext(camelContext);
-        camelContext.addRoutes(builderOneShot);
-
-
-        ProfileImportToUnomiRouteBuilder builderProcessor = new ProfileImportToUnomiRouteBuilder(kafkaProps, configType);
-        builderProcessor.setUnomiStorageProcessor(unomiStorageProcessor);
-        builderProcessor.setRouteCompletionProcessor(routeCompletionProcessor);
-        builderProcessor.setJacksonDataFormat(jacksonDataFormat);
-        builderProcessor.setContext(camelContext);
-        camelContext.addRoutes(builderProcessor);
-
-        camelContext.start();
-
-        logger.debug("postConstruct {" + bundleContext.getBundle() + "}");
-
-        processBundleStartup(bundleContext);
-        for (Bundle bundle : bundleContext.getBundles()) {
-            if (bundle.getBundleContext() != null) {
-                processBundleStartup(bundle.getBundleContext());
-            }
-        }
-        bundleContext.addBundleListener(this);
-        logger.info("Camel Context {} initialized successfully.");
-
-    }
-
-    private boolean stopRoute(String routeId) throws Exception {
-        return camelContext.stopRoute(routeId, 10L, TimeUnit.SECONDS, true);
-    }
-
-    public void updateProfileImportReaderRoute(ImportConfiguration importConfiguration) throws Exception {
-        //Active routes
-        Route route = camelContext.getRoute(importConfiguration.getItemId());
-        if (route != null && stopRoute(importConfiguration.getItemId())) {
-            camelContext.removeRoute(importConfiguration.getItemId());
-        }
-
-        //Inactive routes
-        RouteDefinition routeDefinition = camelContext.getRouteDefinition(importConfiguration.getItemId());
-        if (routeDefinition != null) {
-            camelContext.removeRouteDefinition(routeDefinition);
-        }
-        //Handle transforming an import config oneshot <--> recurrent
-        if (IMPORT_CONFIG_TYPE_RECURRENT.equals(importConfiguration.getConfigType())) {
-            ProfileImportFromSourceRouteBuilder builder = new ProfileImportFromSourceRouteBuilder(kafkaProps, configType);
-            builder.setImportConfigurationList(Arrays.asList(importConfiguration));
-            builder.setImportConfigurationService(importConfigurationService);
-            builder.setJacksonDataFormat(jacksonDataFormat);
-            builder.setContext(camelContext);
-            camelContext.addRoutes(builder);
-        }
-    }
-
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    public void setUnomiStorageProcessor(UnomiStorageProcessor unomiStorageProcessor) {
-        this.unomiStorageProcessor = unomiStorageProcessor;
-    }
-
-    public void setRouteCompletionProcessor(RouteCompletionProcessor routeCompletionProcessor) {
-        this.routeCompletionProcessor = routeCompletionProcessor;
-    }
-
-    public void setImportConfigByFileNameProcessor(ImportConfigByFileNameProcessor importConfigByFileNameProcessor) {
-        this.importConfigByFileNameProcessor = importConfigByFileNameProcessor;
-    }
-
-    public void setImportConfigurationService(ImportConfigurationService importConfigurationService) {
-        this.importConfigurationService = importConfigurationService;
-    }
-
-    public void setJacksonDataFormat(JacksonDataFormat jacksonDataFormat) {
-        this.jacksonDataFormat = jacksonDataFormat;
-    }
-
-    public void setUploadDir(String uploadDir) {
-        this.uploadDir = uploadDir;
-    }
-
-    public void setKafkaProps(Map<String, String> kafkaProps) {
-        this.kafkaProps = kafkaProps;
-    }
-
-    public void setConfigType(String configType) {
-        this.configType = configType;
-    }
-
-    public void preDestroy() throws Exception {
-        bundleContext.removeBundleListener(this);
-        //This is to shutdown Camel context
-        //(will stop all routes/components/endpoints etc and clear internal state/cache)
-        this.camelContext.stop();
-        logger.info("Camel context for profile import is shutdown.");
-    }
-
-    private void processBundleStartup(BundleContext bundleContext) {
-        if (bundleContext == null) {
-            return;
-        }
-    }
-
-    @Override
-    public void bundleChanged(BundleEvent bundleEvent) {
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/RouterCamelContext.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/RouterCamelContext.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/RouterCamelContext.java
new file mode 100644
index 0000000..5a26a15
--- /dev/null
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/context/RouterCamelContext.java
@@ -0,0 +1,243 @@
+/*
+ * 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.router.core.context;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Route;
+import org.apache.camel.component.jackson.JacksonDataFormat;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.model.RouteDefinition;
+import org.apache.unomi.persistence.spi.PersistenceService;
+import org.apache.unomi.router.api.ExportConfiguration;
+import org.apache.unomi.router.api.ImportConfiguration;
+import org.apache.unomi.router.api.RouterConstants;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+import org.apache.unomi.router.core.processor.ImportConfigByFileNameProcessor;
+import org.apache.unomi.router.core.processor.RouteCompletionProcessor;
+import org.apache.unomi.router.core.processor.UnomiStorageProcessor;
+import org.apache.unomi.router.core.route.ProfileExportCollectRouteBuilder;
+import org.apache.unomi.router.core.route.ProfileImportFromSourceRouteBuilder;
+import org.apache.unomi.router.core.route.ProfileImportOneShotRouteBuilder;
+import org.apache.unomi.router.core.route.ProfileImportToUnomiRouteBuilder;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.SynchronousBundleListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Created by amidani on 04/05/2017.
+ */
+public class RouterCamelContext implements SynchronousBundleListener {
+
+    private Logger logger = LoggerFactory.getLogger(RouterCamelContext.class.getName());
+    private CamelContext camelContext;
+    private UnomiStorageProcessor unomiStorageProcessor;
+    private RouteCompletionProcessor routeCompletionProcessor;
+    private ImportConfigByFileNameProcessor importConfigByFileNameProcessor;
+    private ImportExportConfigurationService<ImportConfiguration> importConfigurationService;
+    private ImportExportConfigurationService<ExportConfiguration> exportConfigurationService;
+    private PersistenceService persistenceService;
+    private JacksonDataFormat jacksonDataFormat;
+    private String uploadDir;
+    private Map<String, String> kafkaProps;
+    private String configType;
+    private String allowedEndpoints;
+    private BundleContext bundleContext;
+
+    public void setBundleContext(BundleContext bundleContext) {
+        this.bundleContext = bundleContext;
+    }
+
+    public void initCamelContext() throws Exception {
+        logger.info("Initialize Camel Context...");
+        camelContext = new DefaultCamelContext();
+
+        //--IMPORT ROUTES
+
+        //Source
+        ProfileImportFromSourceRouteBuilder builderReader = new ProfileImportFromSourceRouteBuilder(kafkaProps, configType);
+        builderReader.setImportConfigurationService(importConfigurationService);
+        builderReader.setJacksonDataFormat(jacksonDataFormat);
+        builderReader.setAllowedEndpoints(allowedEndpoints);
+        builderReader.setContext(camelContext);
+        camelContext.addRoutes(builderReader);
+
+        //One shot import route
+        ProfileImportOneShotRouteBuilder builderOneShot = new ProfileImportOneShotRouteBuilder(kafkaProps, configType);
+        builderOneShot.setImportConfigByFileNameProcessor(importConfigByFileNameProcessor);
+        builderOneShot.setJacksonDataFormat(jacksonDataFormat);
+        builderOneShot.setUploadDir(uploadDir);
+        builderOneShot.setContext(camelContext);
+        camelContext.addRoutes(builderOneShot);
+
+        //Unomi sink route
+        ProfileImportToUnomiRouteBuilder builderProcessor = new ProfileImportToUnomiRouteBuilder(kafkaProps, configType);
+        builderProcessor.setUnomiStorageProcessor(unomiStorageProcessor);
+        builderProcessor.setRouteCompletionProcessor(routeCompletionProcessor);
+        builderProcessor.setJacksonDataFormat(jacksonDataFormat);
+        builderProcessor.setContext(camelContext);
+        camelContext.addRoutes(builderProcessor);
+
+        //--EXPORT ROUTES
+        ProfileExportCollectRouteBuilder profileExportCollectRouteBuilder = new ProfileExportCollectRouteBuilder();
+        profileExportCollectRouteBuilder.setExportConfigurationService(exportConfigurationService);
+        profileExportCollectRouteBuilder.setPersistenceService(persistenceService);
+        profileExportCollectRouteBuilder.setAllowedEndpoints(allowedEndpoints);
+        profileExportCollectRouteBuilder.setContext(camelContext);
+        camelContext.addRoutes(profileExportCollectRouteBuilder);
+
+
+        camelContext.start();
+
+        logger.debug("postConstruct {" + bundleContext.getBundle() + "}");
+
+        processBundleStartup(bundleContext);
+        for (Bundle bundle : bundleContext.getBundles()) {
+            if (bundle.getBundleContext() != null) {
+                processBundleStartup(bundle.getBundleContext());
+            }
+        }
+        bundleContext.addBundleListener(this);
+        logger.info("Camel Context {} initialized successfully.");
+
+    }
+
+    private boolean stopRoute(String routeId) throws Exception {
+        return camelContext.stopRoute(routeId, 10L, TimeUnit.SECONDS, true);
+    }
+
+    private void killExistingRoute(String routeId) throws Exception {
+        //Active routes
+        Route route = camelContext.getRoute(routeId);
+        if (route != null && stopRoute(routeId)) {
+            camelContext.removeRoute(routeId);
+        }
+        //Inactive routes
+        RouteDefinition routeDefinition = camelContext.getRouteDefinition(routeId);
+        if (routeDefinition != null) {
+            camelContext.removeRouteDefinition(routeDefinition);
+        }
+    }
+
+    public void updateProfileReaderRoute(Object configuration) throws Exception {
+        if (configuration instanceof ImportConfiguration) {
+            updateProfileImportReaderRoute((ImportConfiguration) configuration);
+        } else {
+            updateProfileExportReaderRoute((ExportConfiguration) configuration);
+        }
+    }
+
+    private void updateProfileImportReaderRoute(ImportConfiguration importConfiguration) throws Exception {
+
+        //Handle transforming an import config oneshot <--> recurrent
+        if (RouterConstants.IMPORT_EXPORT_CONFIG_TYPE_RECURRENT.equals(importConfiguration.getConfigType())) {
+            ProfileImportFromSourceRouteBuilder builder = new ProfileImportFromSourceRouteBuilder(kafkaProps, configType);
+            builder.setImportConfigurationList(Arrays.asList(importConfiguration));
+            builder.setImportConfigurationService(importConfigurationService);
+            builder.setAllowedEndpoints(allowedEndpoints);
+            builder.setJacksonDataFormat(jacksonDataFormat);
+            builder.setContext(camelContext);
+            camelContext.addRoutes(builder);
+        }
+    }
+
+    private void updateProfileExportReaderRoute(ExportConfiguration exportConfiguration) throws Exception {
+        killExistingRoute(exportConfiguration.getItemId());
+        //Handle transforming an import config oneshot <--> recurrent
+        if (RouterConstants.IMPORT_EXPORT_CONFIG_TYPE_RECURRENT.equals(exportConfiguration.getConfigType())) {
+            ProfileExportCollectRouteBuilder profileExportCollectRouteBuilder = new ProfileExportCollectRouteBuilder();
+            profileExportCollectRouteBuilder.setExportConfigurationService(exportConfigurationService);
+            profileExportCollectRouteBuilder.setPersistenceService(persistenceService);
+            profileExportCollectRouteBuilder.setAllowedEndpoints(allowedEndpoints);
+            profileExportCollectRouteBuilder.setContext(camelContext);
+            camelContext.addRoutes(profileExportCollectRouteBuilder);
+        }
+    }
+
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    public void setUnomiStorageProcessor(UnomiStorageProcessor unomiStorageProcessor) {
+        this.unomiStorageProcessor = unomiStorageProcessor;
+    }
+
+    public void setRouteCompletionProcessor(RouteCompletionProcessor routeCompletionProcessor) {
+        this.routeCompletionProcessor = routeCompletionProcessor;
+    }
+
+    public void setImportConfigByFileNameProcessor(ImportConfigByFileNameProcessor importConfigByFileNameProcessor) {
+        this.importConfigByFileNameProcessor = importConfigByFileNameProcessor;
+    }
+
+    public void setImportConfigurationService(ImportExportConfigurationService<ImportConfiguration> importConfigurationService) {
+        this.importConfigurationService = importConfigurationService;
+    }
+
+    public void setExportConfigurationService(ImportExportConfigurationService<ExportConfiguration> exportConfigurationService) {
+        this.exportConfigurationService = exportConfigurationService;
+    }
+
+    public void setPersistenceService(PersistenceService persistenceService) {
+        this.persistenceService = persistenceService;
+    }
+
+    public void setJacksonDataFormat(JacksonDataFormat jacksonDataFormat) {
+        this.jacksonDataFormat = jacksonDataFormat;
+    }
+
+    public void setUploadDir(String uploadDir) {
+        this.uploadDir = uploadDir;
+    }
+
+    public void setKafkaProps(Map<String, String> kafkaProps) {
+        this.kafkaProps = kafkaProps;
+    }
+
+    public void setConfigType(String configType) {
+        this.configType = configType;
+    }
+
+    public void setAllowedEndpoints(String allowedEndpoints) {
+        this.allowedEndpoints = allowedEndpoints;
+    }
+
+    public void preDestroy() throws Exception {
+        bundleContext.removeBundleListener(this);
+        //This is to shutdown Camel context
+        //(will stop all routes/components/endpoints etc and clear internal state/cache)
+        this.camelContext.stop();
+        logger.info("Camel context for profile import is shutdown.");
+    }
+
+    private void processBundleStartup(BundleContext bundleContext) {
+        if (bundleContext == null) {
+            return;
+        }
+    }
+
+    @Override
+    public void bundleChanged(BundleEvent bundleEvent) {
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ConfigUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ConfigUpdateProcessor.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ConfigUpdateProcessor.java
index d8e4b9e..8e6ab36 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ConfigUpdateProcessor.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ConfigUpdateProcessor.java
@@ -20,25 +20,25 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.unomi.router.api.ImportConfiguration;
-import org.apache.unomi.router.core.context.ProfileImportCamelContext;
+import org.apache.unomi.router.core.context.RouterCamelContext;
 
 /**
  * Created by amidani on 10/05/2017.
  */
 public class ConfigUpdateProcessor implements Processor {
 
-    private ProfileImportCamelContext profileImportCamelContext;
+    private RouterCamelContext routerCamelContext;
 
     @Override
     public void process(Exchange exchange) throws Exception {
         if (exchange.getIn() != null) {
             Message message = exchange.getIn();
-            ImportConfiguration importConfiguration = message.getBody(ImportConfiguration.class);
-            profileImportCamelContext.updateProfileImportReaderRoute(importConfiguration);
+            Object configuration = message.getBody();
+            routerCamelContext.updateProfileReaderRoute(configuration);
         }
     }
 
-    public void setProfileImportCamelContext(ProfileImportCamelContext profileImportCamelContext) {
-        this.profileImportCamelContext = profileImportCamelContext;
+    public void setRouterCamelContext(RouterCamelContext routerCamelContext) {
+        this.routerCamelContext = routerCamelContext;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportConfigByFileNameProcessor.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportConfigByFileNameProcessor.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportConfigByFileNameProcessor.java
index a910a1d..b4f7bd1 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportConfigByFileNameProcessor.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportConfigByFileNameProcessor.java
@@ -20,15 +20,15 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.component.file.GenericFile;
 import org.apache.unomi.router.api.ImportConfiguration;
-import org.apache.unomi.router.api.services.ImportConfigurationService;
-import org.apache.unomi.router.core.RouterConstants;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+import org.apache.unomi.router.api.RouterConstants;
 
 /**
  * Created by amidani on 22/05/2017.
  */
 public class ImportConfigByFileNameProcessor implements Processor {
 
-    private ImportConfigurationService importConfigurationService;
+    private ImportExportConfigurationService<ImportConfiguration> importConfigurationService;
 
     @Override
     public void process(Exchange exchange) throws Exception {
@@ -39,7 +39,7 @@ public class ImportConfigByFileNameProcessor implements Processor {
         exchange.getIn().setHeader(RouterConstants.HEADER_IMPORT_CONFIG_ONESHOT, importConfiguration);
     }
 
-    public void setImportConfigurationService(ImportConfigurationService importConfigurationService) {
+    public void setImportConfigurationService(ImportExportConfigurationService<ImportConfiguration> importConfigurationService) {
         this.importConfigurationService = importConfigurationService;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java
index bfb92fb..96afaac 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java
@@ -19,7 +19,7 @@ package org.apache.unomi.router.core.processor;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.unomi.router.api.ImportLineError;
-import org.apache.unomi.router.core.RouterConstants;
+import org.apache.unomi.router.api.RouterConstants;
 import org.apache.unomi.router.core.exception.BadProfileDataFormatException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java
index afff204..e047b63 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java
@@ -22,7 +22,7 @@ import org.apache.camel.component.kafka.KafkaConstants;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.unomi.router.api.ImportConfiguration;
 import org.apache.unomi.router.api.ProfileToImport;
-import org.apache.unomi.router.core.RouterConstants;
+import org.apache.unomi.router.api.RouterConstants;
 import org.apache.unomi.router.core.exception.BadProfileDataFormatException;
 
 import java.util.HashMap;

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/RouteCompletionProcessor.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/RouteCompletionProcessor.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/RouteCompletionProcessor.java
index 36ec319..b522426 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/RouteCompletionProcessor.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/RouteCompletionProcessor.java
@@ -21,8 +21,8 @@ import org.apache.camel.Processor;
 import org.apache.unomi.router.api.ImportConfiguration;
 import org.apache.unomi.router.api.ImportLineError;
 import org.apache.unomi.router.api.ProfileToImport;
-import org.apache.unomi.router.api.services.ImportConfigurationService;
-import org.apache.unomi.router.core.RouterConstants;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+import org.apache.unomi.router.api.RouterConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -34,7 +34,7 @@ import java.util.*;
 public class RouteCompletionProcessor implements Processor {
 
     private static final Logger logger = LoggerFactory.getLogger(RouteCompletionProcessor.class.getName());
-    private ImportConfigurationService importConfigurationService;
+    private ImportExportConfigurationService<ImportConfiguration> importConfigurationService;
     private int executionsHistorySize;
 
     @Override
@@ -95,7 +95,7 @@ public class RouteCompletionProcessor implements Processor {
         logger.info("Processing route {} completed.", exchange.getFromRouteId());
     }
 
-    public void setImportConfigurationService(ImportConfigurationService importConfigurationService) {
+    public void setImportConfigurationService(ImportExportConfigurationService<ImportConfiguration> importConfigurationService) {
         this.importConfigurationService = importConfigurationService;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ConfigUpdateRouteBuilder.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ConfigUpdateRouteBuilder.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ConfigUpdateRouteBuilder.java
new file mode 100644
index 0000000..dd70033
--- /dev/null
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ConfigUpdateRouteBuilder.java
@@ -0,0 +1,73 @@
+/*
+ * 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.router.core.route;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.rest.RestBindingMode;
+import org.apache.unomi.api.services.ConfigSharingService;
+import org.apache.unomi.router.api.ExportConfiguration;
+import org.apache.unomi.router.api.ImportConfiguration;
+import org.apache.unomi.router.core.context.RouterCamelContext;
+import org.apache.unomi.router.core.processor.ConfigUpdateProcessor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by amidani on 10/05/2017.
+ */
+public class ConfigUpdateRouteBuilder extends RouteBuilder {
+
+    private static final Logger logger = LoggerFactory.getLogger(ConfigUpdateRouteBuilder.class.getName());
+    private RouterCamelContext routerCamelContext;
+
+    @Override
+    public void configure() throws Exception {
+        logger.info("Preparing REST Configuration for servlet with context path [/configUpdate]");
+        restConfiguration().component("servlet")
+                .contextPath("/configUpdate")
+                .enableCORS(false)
+                .bindingMode(RestBindingMode.json)
+                .dataFormatProperty("prettyPrint", "true");
+
+        rest().put("/importConfigAdmin").consumes("application/json").type(ImportConfiguration.class)
+                .to("direct:importConfigRestDeposit");
+
+        ConfigUpdateProcessor profileConfigUpdateProcessor = new ConfigUpdateProcessor();
+        profileConfigUpdateProcessor.setRouterCamelContext(routerCamelContext);
+        from("direct:importConfigRestDeposit")
+                .process(profileConfigUpdateProcessor)
+                .transform().constant("Success.")
+                .onException(Exception.class)
+                .transform().constant("Failure!");
+
+        rest().put("/exportConfigAdmin").consumes("application/json").type(ExportConfiguration.class)
+                .to("direct:exportConfigRestDeposit");
+
+        from("direct:exportConfigRestDeposit")
+                .process(profileConfigUpdateProcessor)
+                .transform().constant("Success.")
+                .onException(Exception.class)
+                .transform().constant("Failure!");
+
+
+    }
+
+    public void setRouterCamelContext(RouterCamelContext routerCamelContext) {
+        this.routerCamelContext = routerCamelContext;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportCollectRouteBuilder.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportCollectRouteBuilder.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportCollectRouteBuilder.java
new file mode 100644
index 0000000..5c3015e
--- /dev/null
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportCollectRouteBuilder.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.router.core.route;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.unomi.api.Profile;
+import org.apache.unomi.persistence.spi.PersistenceService;
+import org.apache.unomi.router.api.ExportConfiguration;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * Created by amidani on 27/06/2017.
+ */
+public class ProfileExportCollectRouteBuilder extends RouteBuilder {
+
+    private static final Logger logger = LoggerFactory.getLogger(ProfileExportCollectRouteBuilder.class);
+
+    private List<ExportConfiguration> exportConfigurationList;
+    private ImportExportConfigurationService<ExportConfiguration> exportConfigurationService;
+    private PersistenceService persistenceService;
+
+    private String allowedEndpoints;
+
+    @Override
+    public void configure() throws Exception {
+        logger.info("Configure Recurrent Route 'Export :: Collect Data'");
+
+        if (exportConfigurationList == null) {
+            exportConfigurationList = exportConfigurationService.getAll();
+        }
+
+        //Loop on multiple export configuration
+        for (final ExportConfiguration exportConfiguration : exportConfigurationList) {
+            String endpoint = (String) exportConfiguration.getProperties().get("destination");
+
+            if (StringUtils.isNotBlank(endpoint) && allowedEndpoints.contains(endpoint.substring(0, endpoint.indexOf(':')))) {
+                List<Profile> profilesCollected = persistenceService.query("segments", (String) exportConfiguration.getProperties().get("segments"),
+                         null, Profile.class);
+                logger.info("Collected +++{}+++ profiles.", profilesCollected.size());
+            } else {
+                logger.error("Endpoint scheme {} is not allowed, route {} will be skipped.", endpoint.substring(0, endpoint.indexOf(':')), exportConfiguration.getItemId());
+            }
+        }
+    }
+
+    public void setExportConfigurationList(List<ExportConfiguration> exportConfigurationList) {
+        this.exportConfigurationList = exportConfigurationList;
+    }
+
+    public void setExportConfigurationService(ImportExportConfigurationService<ExportConfiguration> exportConfigurationService) {
+        this.exportConfigurationService = exportConfigurationService;
+    }
+
+    public void setPersistenceService(PersistenceService persistenceService) {
+        this.persistenceService = persistenceService;
+    }
+
+    public void setAllowedEndpoints(String allowedEndpoints) {
+        this.allowedEndpoints = allowedEndpoints;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportAbstractRouteBuilder.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportAbstractRouteBuilder.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportAbstractRouteBuilder.java
index f4f7a43..bacc38e 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportAbstractRouteBuilder.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportAbstractRouteBuilder.java
@@ -22,7 +22,7 @@ import org.apache.camel.component.kafka.KafkaComponent;
 import org.apache.camel.component.kafka.KafkaConfiguration;
 import org.apache.camel.component.kafka.KafkaEndpoint;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.unomi.router.core.RouterConstants;
+import org.apache.unomi.router.api.RouterConstants;
 
 import java.util.Map;
 

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportConfigUpdateRouteBuilder.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportConfigUpdateRouteBuilder.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportConfigUpdateRouteBuilder.java
deleted file mode 100644
index 40575d5..0000000
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportConfigUpdateRouteBuilder.java
+++ /dev/null
@@ -1,62 +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.router.core.route;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.rest.RestBindingMode;
-import org.apache.unomi.router.api.ImportConfiguration;
-import org.apache.unomi.router.core.context.ProfileImportCamelContext;
-import org.apache.unomi.router.core.processor.ConfigUpdateProcessor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Created by amidani on 10/05/2017.
- */
-public class ProfileImportConfigUpdateRouteBuilder extends RouteBuilder {
-
-    private static final Logger logger = LoggerFactory.getLogger(ProfileImportConfigUpdateRouteBuilder.class.getName());
-
-    private ProfileImportCamelContext profileImportCamelContext;
-
-    @Override
-    public void configure() throws Exception {
-        logger.info("Preparing REST Configuration for servlet with context path [/importConfigAdmin]");
-        restConfiguration().component("servlet")
-                .contextPath("/importConfigAdmin")
-                .enableCORS(false)
-                .bindingMode(RestBindingMode.json)
-                .dataFormatProperty("prettyPrint", "true");
-
-        rest().put("/").consumes("application/json").type(ImportConfiguration.class)
-                .to("direct:importConfigRestDeposit");
-        ConfigUpdateProcessor profileImportConfigUpdateProcessor = new ConfigUpdateProcessor();
-        profileImportConfigUpdateProcessor.setProfileImportCamelContext(profileImportCamelContext);
-        from("direct:importConfigRestDeposit")
-                .process(profileImportConfigUpdateProcessor)
-                .transform().constant("Success.")
-                .onException(Exception.class)
-                .transform().constant("Failure!");
-
-
-    }
-
-    public void setProfileImportCamelContext(ProfileImportCamelContext profileImportCamelContext) {
-        this.profileImportCamelContext = profileImportCamelContext;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
index 0af561f..7f54884 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
@@ -23,8 +23,8 @@ import org.apache.camel.component.kafka.KafkaEndpoint;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.unomi.router.api.ImportConfiguration;
-import org.apache.unomi.router.api.services.ImportConfigurationService;
-import org.apache.unomi.router.core.RouterConstants;
+import org.apache.unomi.router.api.services.ImportExportConfigurationService;
+import org.apache.unomi.router.api.RouterConstants;
 import org.apache.unomi.router.core.exception.BadProfileDataFormatException;
 import org.apache.unomi.router.core.processor.LineSplitFailureHandler;
 import org.apache.unomi.router.core.processor.LineSplitProcessor;
@@ -44,7 +44,9 @@ public class ProfileImportFromSourceRouteBuilder extends ProfileImportAbstractRo
     private static final Logger logger = LoggerFactory.getLogger(ProfileImportFromSourceRouteBuilder.class.getName());
 
     private List<ImportConfiguration> importConfigurationList;
-    private ImportConfigurationService importConfigurationService;
+    private ImportExportConfigurationService<ImportConfiguration> importConfigurationService;
+
+    private String allowedEndpoints;
 
     public ProfileImportFromSourceRouteBuilder(Map<String, String> kafkaProps, String configType) {
         super(kafkaProps, configType);
@@ -56,13 +58,24 @@ public class ProfileImportFromSourceRouteBuilder extends ProfileImportAbstractRo
         logger.info("Configure Recurrent Route 'From Source'");
 
         if (importConfigurationList == null) {
-            importConfigurationList = importConfigurationService.getImportConfigurations();
+            importConfigurationList = importConfigurationService.getAll();
+        }
+
+        ProcessorDefinition prDefErr = onException(BadProfileDataFormatException.class)
+                .log(LoggingLevel.ERROR, "Error processing record ${exchangeProperty.CamelSplitIndex}++ !")
+                .handled(true)
+                .process(new LineSplitFailureHandler());
+
+        if (RouterConstants.CONFIG_TYPE_KAFKA.equals(configType)) {
+            prDefErr.to((KafkaEndpoint) getEndpointURI(RouterConstants.DIRECTION_FROM));
+        } else {
+            prDefErr.to((String) getEndpointURI(RouterConstants.DIRECTION_FROM));
         }
 
         //Loop on multiple import configuration
         for (final ImportConfiguration importConfiguration : importConfigurationList) {
-            if (importConfiguration.getProperties().size() > 0 &&
-                    StringUtils.isNotEmpty((String) importConfiguration.getProperties().get("source"))) {
+            if (RouterConstants.IMPORT_EXPORT_CONFIG_TYPE_RECURRENT.equals(importConfiguration.getConfigType()) &&
+                    importConfiguration.getProperties().size() > 0) {
                 //Prepare Split Processor
                 LineSplitProcessor lineSplitProcessor = new LineSplitProcessor();
                 lineSplitProcessor.setFieldsMapping((Map<String, Integer>) importConfiguration.getProperties().get("mapping"));
@@ -71,46 +84,41 @@ public class ProfileImportFromSourceRouteBuilder extends ProfileImportAbstractRo
                 lineSplitProcessor.setMergingProperty(importConfiguration.getMergingProperty());
                 lineSplitProcessor.setColumnSeparator(importConfiguration.getColumnSeparator());
 
-                ProcessorDefinition prDefErr = onException(BadProfileDataFormatException.class)
-                        .log(LoggingLevel.ERROR, "Error processing record ${exchangeProperty.CamelSplitIndex}++ !")
-                        .handled(true)
-                        .process(new LineSplitFailureHandler());
-
-                if (RouterConstants.CONFIG_TYPE_KAFKA.equals(configType)) {
-                    prDefErr.to((KafkaEndpoint) getEndpointURI(RouterConstants.DIRECTION_FROM));
+                String endpoint = (String) importConfiguration.getProperties().get("source");
+
+                if (StringUtils.isNotBlank(endpoint) && allowedEndpoints.contains(endpoint.substring(0, endpoint.indexOf(':')))) {
+                    ProcessorDefinition prDef = from(endpoint)
+                            .routeId(importConfiguration.getItemId())// This allow identification of the route for manual start/stop
+                            .autoStartup(importConfiguration.isActive())// Auto-start if the import configuration is set active
+                            .onCompletion()
+                            // this route is only invoked when the original route is complete as a kind
+                            // of completion callback
+                            .log(LoggingLevel.DEBUG, "ROUTE [" + importConfiguration.getItemId() + "] is now complete [" + new Date().toString() + "]")
+                            // must use end to denote the end of the onCompletion route
+                            .end()
+                            .process(new Processor() {
+                                @Override
+                                public void process(Exchange exchange) throws Exception {
+                                    importConfiguration.setStatus(RouterConstants.CONFIG_STATUS_RUNNING);
+                                    importConfigurationService.save(importConfiguration);
+                                }
+                            })
+                            .split(bodyAs(String.class).tokenize(importConfiguration.getLineSeparator()))
+                            .log(LoggingLevel.DEBUG, "Splitted into ${exchangeProperty.CamelSplitSize} records")
+                            .setHeader(RouterConstants.HEADER_CONFIG_TYPE, constant(configType))
+                            .process(lineSplitProcessor)
+                            .log(LoggingLevel.DEBUG, "Split IDX ${exchangeProperty.CamelSplitIndex} record")
+                            .to("log:org.apache.unomi.router?level=DEBUG")
+                            .marshal(jacksonDataFormat)
+                            .convertBodyTo(String.class);
+
+                    if (RouterConstants.CONFIG_TYPE_KAFKA.equals(configType)) {
+                        prDef.to((KafkaEndpoint) getEndpointURI(RouterConstants.DIRECTION_FROM));
+                    } else {
+                        prDef.to((String) getEndpointURI(RouterConstants.DIRECTION_FROM));
+                    }
                 } else {
-                    prDefErr.to((String) getEndpointURI(RouterConstants.DIRECTION_FROM));
-                }
-
-                ProcessorDefinition prDef = from((String) importConfiguration.getProperties().get("source"))
-                        .routeId(importConfiguration.getItemId())// This allow identification of the route for manual start/stop
-                        .autoStartup(importConfiguration.isActive())// Auto-start if the import configuration is set active
-                        .onCompletion()
-                        // this route is only invoked when the original route is complete as a kind
-                        // of completion callback
-                        .log(LoggingLevel.DEBUG, "ROUTE [" + importConfiguration.getItemId() + "] is now complete [" + new Date().toString() + "]")
-                        // must use end to denote the end of the onCompletion route
-                        .end()
-                        .process(new Processor() {
-                            @Override
-                            public void process(Exchange exchange) throws Exception {
-                                importConfiguration.setStatus(RouterConstants.CONFIG_STATUS_RUNNING);
-                                importConfigurationService.save(importConfiguration);
-                            }
-                        })
-                        .split(bodyAs(String.class).tokenize(importConfiguration.getLineSeparator()))
-                        .log(LoggingLevel.DEBUG, "Splitted into ${exchangeProperty.CamelSplitSize} records")
-                        .setHeader(RouterConstants.HEADER_CONFIG_TYPE, constant(configType))
-                        .process(lineSplitProcessor)
-                        .log(LoggingLevel.DEBUG, "Split IDX ${exchangeProperty.CamelSplitIndex} record")
-                        .to("log:org.apache.unomi.router?level=DEBUG")
-                        .marshal(jacksonDataFormat)
-                        .convertBodyTo(String.class);
-
-                if (RouterConstants.CONFIG_TYPE_KAFKA.equals(configType)) {
-                    prDef.to((KafkaEndpoint) getEndpointURI(RouterConstants.DIRECTION_FROM));
-                } else {
-                    prDef.to((String) getEndpointURI(RouterConstants.DIRECTION_FROM));
+                    logger.error("Endpoint scheme {} is not allowed, route {} will be skipped.", endpoint.substring(0, endpoint.indexOf(':')), importConfiguration.getItemId());
                 }
             }
         }
@@ -120,8 +128,12 @@ public class ProfileImportFromSourceRouteBuilder extends ProfileImportAbstractRo
         this.importConfigurationList = importConfigurationList;
     }
 
-    public void setImportConfigurationService(ImportConfigurationService importConfigurationService) {
+    public void setImportConfigurationService(ImportExportConfigurationService<ImportConfiguration> importConfigurationService) {
         this.importConfigurationService = importConfigurationService;
     }
 
+    public void setAllowedEndpoints(String allowedEndpoints) {
+        this.allowedEndpoints = allowedEndpoints;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c62f91d4/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportOneShotRouteBuilder.java
----------------------------------------------------------------------
diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportOneShotRouteBuilder.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportOneShotRouteBuilder.java
index c86e5e0..a94b5ed 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportOneShotRouteBuilder.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportOneShotRouteBuilder.java
@@ -20,7 +20,7 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.jackson.JacksonDataFormat;
 import org.apache.camel.component.kafka.KafkaEndpoint;
 import org.apache.camel.model.ProcessorDefinition;
-import org.apache.unomi.router.core.RouterConstants;
+import org.apache.unomi.router.api.RouterConstants;
 import org.apache.unomi.router.core.exception.BadProfileDataFormatException;
 import org.apache.unomi.router.core.processor.ImportConfigByFileNameProcessor;
 import org.apache.unomi.router.core.processor.LineSplitFailureHandler;