Skip to content

UNOMI-876: Upgrade to Karaf 4.4.8 and JDK 17#722

Merged
sergehuber merged 30 commits into
apache:masterfrom
jayblanc:UNOMI-876
Sep 1, 2025
Merged

UNOMI-876: Upgrade to Karaf 4.4.8 and JDK 17#722
sergehuber merged 30 commits into
apache:masterfrom
jayblanc:UNOMI-876

Conversation

@jayblanc
Copy link
Copy Markdown
Contributor

@jayblanc jayblanc commented Aug 20, 2025

UNOMI-876: Upgrade to Karaf 4.4.8 and JDK 17

Summary

This PR modernizes Apache Unomi by upgrading the core runtime environment to Apache Karaf 4.4.8 and Java 17. It introduces significant dependency updates, module restructuring, and codebase cleanups to improve maintainability, future compatibility, and CI stability.

Note: This PR touches a large number of files and modules, with major refactorings visible in the commit history. Please review the full commit list and files changed for granular details.

Migration and Impact

  • Breaking changes: Some modules, features, and plugins have been restructured or removed (OGNL, SOAP annotations, blueprint usage in WAB/GraphQL, Swagger plugin).
  • Manual steps: After merging, update local development environments to JDK 17 and Karaf 4.4.8. Review and update custom extensions to ensure compatibility.
  • Known issues: CI will currently fail due to the use of a Karaf Cellar snapshot. Resolution is pending on upstream PR merge.

Highlights

Project Structure and Build

  • Switch to BOM strategy for dependency management:
    • All dependency versions are now defined in the parent Maven module.
    • Dependencies managed via a dedicated Unomi BOM module, which includes the Karaf BOM.
    • Features files now reference parent variables rather than fixed versions.
  • 'tools' module renamed to 'commands' for clarity.
  • Build order adjusted to allow feature validation during build.

Dependency Upgrades

  • Karaf: Upgraded to 4.4.8
  • Karaf Cellar: 4.4.0-SNAPSHOT (OSGI 8 compliant; PR in progress)
  • Java: Upgraded to 17
  • OSGI: Upgraded to 8.0.0 (from Karaf BOM)
  • Jackson: Upgraded to 2.18.2
  • Groovy: Upgraded to 4.0.28
  • Jacoco: Upgraded for JDK 17 compatibility
  • Blueprint XSD: Upgraded to 1.3.0
  • Swagger plugin: Removed from incompatible modules

Module-Specific Changes

  • OGNL: Fully removed from plugins-base; stale tests and documentation updated.
  • SOAP Annotations: Removed from REST endpoints.
  • WAB Module:
    • Blueprint usage removed (cannot mix OSGI component and Servlet).
    • OSGI component used for config propagation.
    • Servlet declarations now via annotations.
  • GraphQL Module:
    • Blueprint removed; Activator now registers Servlet via HttpService.
    • ActionExecutors now declared via Declarative Services.
    • Authentication and Java time serialization fixes.
  • CI/CD: Java version set to 17.
  • SecurityIT Tests: Removed due to OGNL deprecation.

Additional Notes

  • 187 files changed, 3,583 additions, 2,731 deletions.
  • The wide scope of changes may affect custom extensions and downstream consumers.
  • See commits for module-by-module detail.

Note: Statistics are up-to-date and reflect the latest state of the changes.

Licensing


For reviewers:
Please pay special attention to the migration impacts, breaking changes, and compatibility updates. If you have custom integrations, verify their build and runtime compatibility with these upgrades. For any questions or for details on specific modules, refer to the commit messages and changed files.

diff --git c/api/pom.xml i/api/pom.xml
index 3ed267975..cfe1c8636 100644
--- c/api/pom.xml
+++ i/api/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>

     <artifactId>unomi-api</artifactId>
@@ -34,12 +34,12 @@
         <dependency>
             <groupId>jakarta.xml.bind</groupId>
             <artifactId>jakarta.xml.bind-api</artifactId>
-            <version>2.3.2</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>javax.validation</groupId>
@@ -48,6 +48,11 @@
         <dependency>
             <groupId>commons-beanutils</groupId>
             <artifactId>commons-beanutils</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
diff --git c/common/pom.xml i/common/pom.xml
index e202af18d..f470d48d2 100644
--- c/common/pom.xml
+++ i/common/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>

     <artifactId>unomi-common</artifactId>
@@ -34,7 +34,6 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-csv</artifactId>
-            <version>1.5</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>
@@ -44,28 +43,22 @@
         <dependency>
             <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.console</artifactId>
-            <version>${version.karaf}</version>
             <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.table</artifactId>
-            <version>${version.karaf}</version>
             <scope>provided</scope>
         </dependency>

         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>2.7.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
-
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-simple</artifactId>
-            <version>1.7.36</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git c/common/src/main/java/org/apache/unomi/common/DataTable.java i/common/src/main/java/org/apache/unomi/common/DataTable.java
index 06839fccd..21862d299 100644
--- c/common/src/main/java/org/apache/unomi/common/DataTable.java
+++ i/common/src/main/java/org/apache/unomi/common/DataTable.java
@@ -20,7 +20,6 @@ import org.apache.commons.csv.CSVFormat;
 import org.apache.commons.csv.CSVPrinter;

 import java.io.IOException;
-import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
diff --git c/docker/pom.xml i/docker/pom.xml
index 57502de25..2d63324da 100644
--- c/docker/pom.xml
+++ i/docker/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>

     <artifactId>unomi-docker</artifactId>
@@ -43,7 +43,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
-                <version>3.1.2</version>
                 <executions>
                     <execution>
                         <id>copy</id>
@@ -105,7 +104,7 @@
             <plugin>
                 <groupId>io.fabric8</groupId>
                 <artifactId>docker-maven-plugin</artifactId>
-                <version>0.40.2</version>
+                <version>0.46.0</version>
                 <configuration>
                     <images>
                         <image>
diff --git c/docker/src/main/docker/Dockerfile i/docker/src/main/docker/Dockerfile
index 6734689fc..30d8db250 100644
--- c/docker/src/main/docker/Dockerfile
+++ i/docker/src/main/docker/Dockerfile
@@ -15,7 +15,7 @@
 # limitations under the License.
 ################################################################################

-FROM library/eclipse-temurin:11
+FROM library/eclipse-temurin:17

 # Unomi environment variables
 ENV UNOMI_HOME /opt/apache-unomi
diff --git c/extensions/geonames/pom.xml i/extensions/geonames/pom.xml
index f83aaccbb..e337f3b33 100644
--- c/extensions/geonames/pom.xml
+++ i/extensions/geonames/pom.xml
@@ -18,20 +18,18 @@

 <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>3.0.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>cxs-geonames</artifactId>
+    <name>Apache Unomi :: Extensions :: Geonames Database</name>
+    <description>Apache Unomi Context Server extension that integrates with the Geonames database</description>
+    <packaging>pom</packaging>

     <modules>
         <module>services</module>
         <module>rest</module>
     </modules>
-
-    <parent>
-        <groupId>org.apache.unomi</groupId>
-        <artifactId>unomi-extensions</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>cxs-geonames</artifactId>
-    <name>Apache Unomi :: Extensions :: Geonames Database</name>
-    <description>Apache Unomi Context Server extension that integrates with the Geonames database</description>
-    <packaging>pom</packaging>
 </project>
diff --git c/extensions/geonames/rest/pom.xml i/extensions/geonames/rest/pom.xml
index 34b3f1ce3..4093f1a3e 100644
--- c/extensions/geonames/rest/pom.xml
+++ i/extensions/geonames/rest/pom.xml
@@ -17,13 +17,12 @@
   -->

 <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>cxs-geonames</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>cxs-geonames-rest</artifactId>
     <name>Apache Unomi :: Extensions :: Geonames Database :: REST API</name>
     <description>REST API for the Apache Unomi Context Server extension that integrates with the Geonames database</description>
@@ -33,14 +32,22 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>cxs-geonames-services</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-persistence-spi</artifactId>
             <scope>provided</scope>
         </dependency>

         <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>cxs-geonames-services</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
             <scope>provided</scope>
         </dependency>

@@ -49,7 +56,16 @@
             <artifactId>javax.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+        </dependency>

+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-frontend-jaxws</artifactId>
@@ -68,20 +84,11 @@
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-rs-security-cors</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.jaxrs</groupId>
             <artifactId>jackson-jaxrs-json-provider</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-persistence-spi</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/geonames/services/pom.xml i/extensions/geonames/services/pom.xml
index 0fe65c5b9..b532dcd8a 100644
--- c/extensions/geonames/services/pom.xml
+++ i/extensions/geonames/services/pom.xml
@@ -17,14 +17,12 @@
   -->

 <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>cxs-geonames</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-
     <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>
@@ -34,15 +32,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
+
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-rs-security-cors</artifactId>
@@ -51,10 +48,12 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>commons-beanutils</groupId>
             <artifactId>commons-beanutils</artifactId>
+            <scope>provided</scope>
         </dependency>
     </dependencies>

diff --git c/extensions/groovy-actions/karaf-kar/pom.xml i/extensions/groovy-actions/karaf-kar/pom.xml
index ff874dc6d..a1de6ad96 100644
--- c/extensions/groovy-actions/karaf-kar/pom.xml
+++ i/extensions/groovy-actions/karaf-kar/pom.xml
@@ -17,18 +17,15 @@
   -->

 <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-groovy-actions-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>unomi-groovy-actions</artifactId>
     <name>Apache Unomi :: Extensions :: Groovy Actions :: Apache Karaf Feature and KAR archive</name>
-    <description>Apache Karaf Feature and KAR archive for the Apache Unomi Context Server extension that provides the possibility to use
-        Groovy for actions
-    </description>
+    <description>Apache Karaf Feature and KAR archive for the Apache Unomi Context Server extension that provides the possibility to use Groovy for actions</description>
     <packaging>kar</packaging>

     <build>
diff --git c/extensions/groovy-actions/pom.xml i/extensions/groovy-actions/pom.xml
index 53892b110..9a76295aa 100644
--- c/extensions/groovy-actions/pom.xml
+++ i/extensions/groovy-actions/pom.xml
@@ -21,9 +21,8 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-
     <artifactId>unomi-groovy-actions-root</artifactId>
     <name>Apache Unomi :: Extensions :: Groovy Actions</name>
     <description>Apache Unomi Context Server extension that provides support for Groovy Actions</description>
diff --git c/extensions/groovy-actions/rest/pom.xml i/extensions/groovy-actions/rest/pom.xml
index de1052262..db2f221a8 100644
--- c/extensions/groovy-actions/rest/pom.xml
+++ i/extensions/groovy-actions/rest/pom.xml
@@ -17,13 +17,12 @@
   -->

 <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-groovy-actions-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>unomi-groovy-actions-rest</artifactId>
     <name>Apache Unomi :: Extensions :: Groovy Actions :: REST API</name>
     <description>REST API for the Apache Unomi Context Server extension that integrates with groovy actions
@@ -34,14 +33,22 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-persistence-spi</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-groovy-actions-services</artifactId>
             <scope>provided</scope>
         </dependency>

         <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-groovy-actions-services</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
             <scope>provided</scope>
         </dependency>

@@ -51,6 +58,11 @@
             <scope>provided</scope>
         </dependency>

+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-frontend-jaxws</artifactId>
@@ -76,21 +88,6 @@
             <artifactId>jackson-jaxrs-json-provider</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-persistence-spi</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git c/extensions/groovy-actions/services/pom.xml i/extensions/groovy-actions/services/pom.xml
index 3d4de386e..76c30b85b 100644
--- c/extensions/groovy-actions/services/pom.xml
+++ i/extensions/groovy-actions/services/pom.xml
@@ -17,57 +17,65 @@
   -->

 <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-groovy-actions-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>unomi-groovy-actions-services</artifactId>
     <name>Apache Unomi :: Extensions :: Groovy Actions :: Service</name>
-    <description>Service implementation for the Apache Unomi Context Server extension that provides the possibility to implement actions in
-        Groovy
-    </description>
+    <description>Service implementation for the Apache Unomi Context Server extension that provides the possibility to implement actions in Groovy</description>
     <packaging>bundle</packaging>

     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-metrics</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </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>
         </dependency>
+
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.metatype.annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
@@ -90,10 +98,6 @@
             <version>${groovy.version}</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
     </dependencies>

     <build>
diff --git c/extensions/healthcheck/pom.xml i/extensions/healthcheck/pom.xml
index 8b5f9253b..a41479ad8 100644
--- c/extensions/healthcheck/pom.xml
+++ i/extensions/healthcheck/pom.xml
@@ -21,9 +21,8 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-
     <artifactId>healthcheck</artifactId>
     <name>Apache Unomi :: Extensions :: HealthCheck</name>
     <description>Apache Unomi HealthCheck extension that provide liveliness information about unomi</description>
@@ -33,27 +32,24 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-lifecycle-watcher</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </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>shell-commands</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
+
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
@@ -61,17 +57,29 @@
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
+            <artifactId>org.osgi.service.useradmin</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.http</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient-osgi</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpcore-osgi</artifactId>
+            <type>bundle</type>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -82,7 +90,6 @@
         <dependency>
             <groupId>org.apache.karaf.jaas</groupId>
             <artifactId>org.apache.karaf.jaas.boot</artifactId>
-            <version>${karaf.version}</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/healthcheck/src/main/java/org/apache/unomi/healthcheck/provider/ElasticSearchHealthCheckProvider.java i/extensions/healthcheck/src/main/java/org/apache/unomi/healthcheck/provider/ElasticSearchHealthCheckProvider.java
index 361e68df7..96a17db1a 100644
--- c/extensions/healthcheck/src/main/java/org/apache/unomi/healthcheck/provider/ElasticSearchHealthCheckProvider.java
+++ i/extensions/healthcheck/src/main/java/org/apache/unomi/healthcheck/provider/ElasticSearchHealthCheckProvider.java
@@ -26,11 +26,10 @@ import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.impl.client.BasicCredentialsProvider;
 import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 import org.apache.unomi.healthcheck.HealthCheckConfig;
-import org.apache.unomi.healthcheck.HealthCheckResponse;
 import org.apache.unomi.healthcheck.HealthCheckProvider;
+import org.apache.unomi.healthcheck.HealthCheckResponse;
 import org.apache.unomi.healthcheck.util.CachedValue;
 import org.apache.unomi.shell.migration.utils.HttpUtils;
 import org.osgi.service.component.annotations.Activate;
diff --git c/extensions/json-schema/pom.xml i/extensions/json-schema/pom.xml
index a38969f6a..8223b7753 100644
--- c/extensions/json-schema/pom.xml
+++ i/extensions/json-schema/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>

     <artifactId>unomi-json-schema-root</artifactId>
diff --git c/extensions/json-schema/rest/pom.xml i/extensions/json-schema/rest/pom.xml
index a9d9094d6..0753ad861 100644
--- c/extensions/json-schema/rest/pom.xml
+++ i/extensions/json-schema/rest/pom.xml
@@ -17,12 +17,12 @@
   -->

 <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-json-schema-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>

     <artifactId>unomi-json-schema-rest</artifactId>
     <name>Apache Unomi :: Extensions :: JSON Schema :: REST API</name>
@@ -33,21 +33,22 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-json-schema-services</artifactId>
-            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-rest</artifactId>
             <scope>provided</scope>
         </dependency>

         <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-rest</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
             <scope>provided</scope>
         </dependency>

@@ -56,20 +57,26 @@
             <artifactId>javax.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.jws</groupId>
+            <artifactId>jakarta.jws-api</artifactId>
+            <scope>provided</scope>
+        </dependency>

         <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-frontend-jaxws</artifactId>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
             <scope>provided</scope>
         </dependency>
+
         <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-transports-http</artifactId>
+            <groupId>javax.ws.rs</groupId>
+            <artifactId>javax.ws.rs-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -77,20 +84,7 @@
             <artifactId>cxf-rt-rs-security-cors</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.jaxrs</groupId>
-            <artifactId>jackson-jaxrs-json-provider</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
+
     </dependencies>
     <build>
         <plugins>
diff --git c/extensions/json-schema/services/pom.xml i/extensions/json-schema/services/pom.xml
index 4538c8846..b69f8609f 100644
--- c/extensions/json-schema/services/pom.xml
+++ i/extensions/json-schema/services/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-json-schema-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>

     <modelVersion>4.0.0</modelVersion>
@@ -40,7 +40,11 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-persistence-spi</artifactId>
             <scope>provided</scope>
         </dependency>

@@ -50,22 +54,16 @@
             <scope>provided</scope>
         </dependency>

-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-persistence-spi</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <scope>provided</scope>
         </dependency>

         <!-- dependencies required for json-schema framework -->
@@ -113,7 +111,6 @@
         <dependency>
             <groupId>org.yaml</groupId>
             <artifactId>snakeyaml</artifactId>
-            <version>2.2</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java i/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
index 7adfabef1..7dc9cb3eb 100644
--- c/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
+++ i/extensions/json-schema/services/src/main/java/org/apache/unomi/schema/api/ValidationError.java
@@ -17,8 +17,6 @@

 package org.apache.unomi.schema.api;

-import com.networknt.schema.ValidationMessage;
-
 import java.io.Serializable;

 /**
diff --git c/extensions/lists-extension/actions/pom.xml i/extensions/lists-extension/actions/pom.xml
index e6a1f753d..4e6e0b887 100644
--- c/extensions/lists-extension/actions/pom.xml
+++ i/extensions/lists-extension/actions/pom.xml
@@ -17,31 +17,26 @@
   -->

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>cxs-lists-extension-actions</artifactId>
     <name>Apache Unomi :: Extensions :: Lists :: Actions</name>
     <description>List extension rule actions for the Apache Unomi Context Server</description>
-
     <packaging>bundle</packaging>

     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/lists-extension/pom.xml i/extensions/lists-extension/pom.xml
index 426d9f4ff..f68461fe1 100644
--- c/extensions/lists-extension/pom.xml
+++ i/extensions/lists-extension/pom.xml
@@ -18,21 +18,20 @@

 <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>
-
-    <modules>
-        <module>services</module>
-        <module>rest</module>
-        <module>actions</module>
-    </modules>
-
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>

     <artifactId>cxs-lists-extension</artifactId>
     <name>Apache Unomi :: Extensions :: Lists</name>
     <description>List extension for the Apache Unomi Context Server</description>
     <packaging>pom</packaging>
+
+    <modules>
+        <module>services</module>
+        <module>rest</module>
+        <module>actions</module>
+    </modules>
 </project>
diff --git c/extensions/lists-extension/rest/pom.xml i/extensions/lists-extension/rest/pom.xml
index 2ef53bcba..db0c58cac 100644
--- c/extensions/lists-extension/rest/pom.xml
+++ i/extensions/lists-extension/rest/pom.xml
@@ -17,31 +17,31 @@
   -->

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>cxs-lists-extension-rest</artifactId>
     <name>Apache Unomi :: Extensions :: Lists :: REST API</name>
     <description>List extension REST API for the Apache Unomi Context Server</description>
-
     <packaging>bundle</packaging>

     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
-
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-persistence-spi</artifactId>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cxs-lists-extension-services</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>

@@ -50,6 +50,16 @@
             <artifactId>javax.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+        </dependency>

         <dependency>
             <groupId>org.apache.cxf</groupId>
@@ -69,20 +79,11 @@
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-rs-security-cors</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.jaxrs</groupId>
             <artifactId>jackson-jaxrs-json-provider</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-persistence-spi</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/lists-extension/services/pom.xml i/extensions/lists-extension/services/pom.xml
index 7cabb2a02..ce01f8c77 100644
--- c/extensions/lists-extension/services/pom.xml
+++ i/extensions/lists-extension/services/pom.xml
@@ -17,13 +17,12 @@
   -->

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>cxs-lists-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>cxs-lists-extension-services</artifactId>
     <name>Apache Unomi :: Extensions :: Lists :: Service</name>
     <description>List extension service implementation for the Apache Unomi Context Server</description>
@@ -33,15 +32,14 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
+
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-rs-security-cors</artifactId>
diff --git c/extensions/log4j-extension/pom.xml i/extensions/log4j-extension/pom.xml
index 007010d3b..f38accb0f 100644
--- c/extensions/log4j-extension/pom.xml
+++ i/extensions/log4j-extension/pom.xml
@@ -17,39 +17,27 @@
   -->

 <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/maven-v4_0_0.xsd">
-
     <modelVersion>4.0.0</modelVersion>
-
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-extensions</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-
     <artifactId>log4j-extension</artifactId>
     <packaging>bundle</packaging>
     <name>Apache Unomi :: Extensions :: Log4j Extension</name>
     <description>Apache Unomi log4j extensions</description>

-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
     <dependencies>
-        <!-- Apache Commons -->
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.15.0</version>
+            <scope>provided</scope>
         </dependency>

         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>
-            <version>2.19.0</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/pom.xml i/extensions/pom.xml
index 707f8b78a..3b29d26cc 100644
--- c/extensions/pom.xml
+++ i/extensions/pom.xml
@@ -18,13 +18,11 @@

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-
     <artifactId>unomi-extensions</artifactId>
     <name>Apache Unomi :: Extensions</name>
     <description>Apache Unomi Context Server extensions</description>
diff --git c/extensions/privacy-extension/pom.xml i/extensions/privacy-extension/pom.xml
index e11174c96..f2700b46d 100644
--- c/extensions/privacy-extension/pom.xml
+++ i/extensions/privacy-extension/pom.xml
@@ -18,21 +18,18 @@

 <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>3.0.0-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>
+    <packaging>pom</packaging>

     <modules>
         <module>services</module>
         <module>rest</module>
     </modules>
-
-    <parent>
-        <groupId>org.apache.unomi</groupId>
-        <artifactId>unomi-extensions</artifactId>
-        <version>2.7.0-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>
-
-    <packaging>pom</packaging>
 </project>
diff --git c/extensions/privacy-extension/rest/pom.xml i/extensions/privacy-extension/rest/pom.xml
index ebfa43556..ed5cc9843 100644
--- c/extensions/privacy-extension/rest/pom.xml
+++ i/extensions/privacy-extension/rest/pom.xml
@@ -17,13 +17,12 @@
   -->

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>cxs-privacy-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>cxs-privacy-extension-rest</artifactId>
     <name>Apache Unomi :: Extensions :: Privacy :: REST API</name>
     <description>Privacy management extension REST API for the Apache Unomi Context Server</description>
@@ -33,14 +32,22 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>cxs-privacy-extension-services</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-persistence-spi</artifactId>
             <scope>provided</scope>
         </dependency>

         <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>cxs-privacy-extension-services</artifactId>
-            <version>${project.version}</version>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
             <scope>provided</scope>
         </dependency>

@@ -49,6 +56,10 @@
             <artifactId>javax.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+        </dependency>

         <dependency>
             <groupId>org.apache.cxf</groupId>
@@ -68,20 +79,12 @@
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-rs-security-cors</artifactId>
+            <scope>provided</scope>
         </dependency>
+
         <dependency>
             <groupId>com.fasterxml.jackson.jaxrs</groupId>
             <artifactId>jackson-jaxrs-json-provider</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-persistence-spi</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/privacy-extension/services/pom.xml i/extensions/privacy-extension/services/pom.xml
index ff8b64442..2e22cf82d 100644
--- c/extensions/privacy-extension/services/pom.xml
+++ i/extensions/privacy-extension/services/pom.xml
@@ -17,46 +17,43 @@
   -->

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>cxs-privacy-extension</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-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>2.7.0-SNAPSHOT</version>
     <packaging>bundle</packaging>

     <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-persistence-spi</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-rs-security-cors</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-lifecycle-watcher</artifactId>
-            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-rs-security-cors</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/router/pom.xml i/extensions/router/pom.xml
index 952614678..8ceb69a33 100644
--- c/extensions/router/pom.xml
+++ i/extensions/router/pom.xml
@@ -16,13 +16,11 @@
   -->
 <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>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-
     <artifactId>unomi-router</artifactId>
     <name>Apache Unomi :: Extensions :: Router</name>
     <description>Apache Camel Router for the Apache Unomi Context server</description>
@@ -31,7 +29,6 @@
     <properties>
         <camel.version>2.23.1</camel.version>
         <kafka.client.version>0.11.0.3</kafka.client.version>
-        <commons-net.version>3.10.0</commons-net.version>
     </properties>

     <build>
diff --git c/extensions/router/router-api/pom.xml i/extensions/router/router-api/pom.xml
index ef5a6d63c..f3fe6f9f4 100644
--- c/extensions/router/router-api/pom.xml
+++ i/extensions/router/router-api/pom.xml
@@ -16,13 +16,12 @@
   ~ limitations under the License.
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>unomi-router-api</artifactId>
     <name>Apache Unomi :: Extensions :: Router :: API</name>
     <description>Router Specification API</description>
@@ -32,7 +31,6 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git c/extensions/router/router-core/pom.xml i/extensions/router/router-core/pom.xml
index 8b7d46aad..379302271 100644
--- c/extensions/router/router-core/pom.xml
+++ i/extensions/router/router-core/pom.xml
@@ -16,19 +16,38 @@
   ~ limitations under the License.
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>unomi-router-core</artifactId>
     <name>Apache Unomi :: Extensions :: Router :: Core</name>
     <description>Router Core (Apache Camel Routes)</description>
     <packaging>bundle</packaging>

     <dependencies>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-persistence-spi</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-services</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-router-api</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi.core</artifactId>
@@ -36,32 +55,10 @@
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </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>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-router-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
+
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-core</artifactId>
@@ -90,6 +87,7 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-ftp</artifactId>
             <version>${camel.version}</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
@@ -97,14 +95,15 @@
             <version>${camel.version}</version>
             <scope>provided</scope>
         </dependency>
+
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>commons-net</groupId>
             <artifactId>commons-net</artifactId>
-            <version>${commons-net.version}</version>
         </dependency>
         <dependency>
             <groupId>commons-beanutils</groupId>
@@ -113,13 +112,12 @@
         <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
-            <version>1.1.1</version>
             <scope>provided</scope>
         </dependency>
+
         <dependency>
             <groupId>com.opencsv</groupId>
             <artifactId>opencsv</artifactId>
-            <version>3.10</version>
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>
diff --git c/extensions/router/router-karaf-feature/pom.xml i/extensions/router/router-karaf-feature/pom.xml
index 1ef821ef1..d7b8e6c40 100644
--- c/extensions/router/router-karaf-feature/pom.xml
+++ i/extensions/router/router-karaf-feature/pom.xml
@@ -16,27 +16,61 @@
   ~ limitations under the License.
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>unomi-router-karaf-feature</artifactId>
     <name>Apache Unomi :: Extensions :: Router :: Apache Karaf Feature</name>
     <description>Apache Karaf feature for the Apache Unomi Context Server extension</description>
     <packaging>kar</packaging>
     <dependencies>
         <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            <artifactId>org.apache.servicemix.bundles.jsch</artifactId>
-            <version>0.1.54_1</version>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-persistence-spi</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-router-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-router-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-router-service</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.unomi</groupId>
+            <artifactId>unomi-router-rest</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-rs-security-cors</artifactId>
         </dependency>
         <dependency>
             <groupId>commons-net</groupId>
             <artifactId>commons-net</artifactId>
-            <version>${commons-net.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient-osgi</artifactId>
+            <type>bundle</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore-osgi</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.jsch</artifactId>
+            <version>0.1.54_1</version>
         </dependency>
         <dependency>
             <groupId>org.apache.kafka</groupId>
@@ -88,49 +122,6 @@
             <artifactId>camel-kafka</artifactId>
             <version>${camel.version}</version>
         </dependency>
-
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-rs-security-cors</artifactId>
-            <version>${cxf.version}</version>
-        </dependency>
-
-        <!-- UNOMI ROUTER Modules Dependencies -->
-        <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-router-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-router-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-router-service</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-router-rest</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient-osgi</artifactId>
-            <type>bundle</type>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpcore-osgi</artifactId>
-        </dependency>
     </dependencies>

     <build>
diff --git c/extensions/router/router-karaf-feature/src/main/feature/feature.xml i/extensions/router/router-karaf-feature/src/main/feature/feature.xml
index 6d707cf67..17e9cab7e 100644
--- c/extensions/router/router-karaf-feature/src/main/feature/feature.xml
+++ i/extensions/router/router-karaf-feature/src/main/feature/feature.xml
@@ -15,7 +15,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0" name="unomi-router-karaf-feature">
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.6.0 https://karaf.apache.org/xmlns/features/v1.6.0" name="unomi-router-karaf-feature">
     <feature name="unomi-router-karaf-feature" version="${project.version}" description="Apache Unomi :: Extensions :: Router :: Apache Karaf Feature">
         <details>Apache Karaf feature for the Apache Unomi Context Server extension</details>
         <feature>wrap</feature>
diff --git c/extensions/router/router-rest/pom.xml i/extensions/router/router-rest/pom.xml
index 341594b03..076618366 100644
--- c/extensions/router/router-rest/pom.xml
+++ i/extensions/router/router-rest/pom.xml
@@ -16,43 +16,59 @@
   ~ limitations under the License.
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>unomi-router</artifactId>
         <groupId>org.apache.unomi</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-
     <artifactId>unomi-router-rest</artifactId>
     <name>Apache Unomi :: Extensions :: Router :: REST API</name>
     <description>Router REST API</description>
     <packaging>bundle</packaging>

     <dependencies>
-        <dependency>
-            <groupId>org.apache.unomi</groupId>
-            <artifactId>unomi-router-api</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </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-router-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>javax.ws.rs-api</artifactId>
-            <version>2.0.1</version>
-            <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-rs-security-cors</artifactId>
@@ -72,24 +88,24 @@
         <dependency>
             <groupId>com.fasterxml.jac…
diff --git c/package/pom.xml i/package/pom.xml
index f5b20c8..b325e8f 100644
--- c/package/pom.xml
+++ i/package/pom.xml
@@ -73,16 +73,13 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-kar</artifactId>
-            <version>${project.version}</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>
         </dependency>
-        <!--
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-router-karaf-feature</artifactId>
-            <version>${project.version}</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>
@@ -90,7 +87,6 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-groovy-actions</artifactId>
-            <version>${project.version}</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>
@@ -98,12 +94,10 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>cdp-graphql-feature</artifactId>
-            <version>${project.version}</version>
             <classifier>features</classifier>
             <type>xml</type>
             <scope>runtime</scope>
         </dependency>
-        -->
     </dependencies>

     <build>
@@ -154,7 +148,6 @@
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-wab</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>unomicfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
@@ -163,7 +156,6 @@
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-persistence-elasticsearch-core</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>elasticsearchcfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
@@ -172,7 +164,6 @@
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-services</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>clustercfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
@@ -181,17 +172,14 @@
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-services</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>servicescfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
                                     <destFileName>org.apache.unomi.services.cfg</destFileName>
                                 </artifactItem>
-                                <!--
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-plugins-request</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>requestcfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
@@ -200,7 +188,6 @@
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-plugins-base</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>pluginsbasecfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
@@ -209,7 +196,6 @@
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-groovy-actions-services</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>groovyactionscfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
@@ -218,7 +204,6 @@
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-plugins-mail</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>mailcfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
@@ -227,13 +212,11 @@
                                 <artifactItem>
                                     <groupId>org.apache.unomi</groupId>
                                     <artifactId>unomi-router-core</artifactId>
-                                    <version>${project.version}</version>
                                     <classifier>routercfg</classifier>
                                     <type>cfg</type>
                                     <outputDirectory>${project.build.directory}/assembly/etc</outputDirectory>
                                     <destFileName>org.apache.unomi.router.cfg</destFileName>
                                 </artifactItem>
-                                -->
                             </artifactItems>
                         </configuration>
                     </execution>
@@ -277,11 +260,9 @@
                     </execution>
                 </executions>
                 <configuration>
-                    <!--
                     <startupBundles>
                         <bundle>mvn:org.apache.unomi/log4j-extension/${project.version}</bundle>
                     </startupBundles>
-                    -->
                     <installedFeatures>
                         <feature>wrapper</feature>
                         <feature>cxf-commands</feature>
@@ -310,11 +291,9 @@
                         <feature>aries-blueprint</feature>
                         <feature>shell-compat</feature>
                         <feature>unomi-kar</feature>
-                        <!--
                         <feature>unomi-router-karaf-feature</feature>
                         <feature>unomi-groovy-actions</feature>
                         <feature>unomi-rest-ui</feature>
-                        -->
                     </bootFeatures>
                     <javase>17</javase>
                 </configuration>
diff --git c/pom.xml i/pom.xml
index 5b2e7ce..fe0bc5d 100644
--- c/pom.xml
+++ i/pom.xml
@@ -101,7 +101,6 @@
         <httpclient-osgi.version>4.5.14</httpclient-osgi.version>
         <httpcore-osgi.version>4.4.16</httpcore-osgi.version>
         <junit.version>4.13.2</junit.version>
-        <ognl.version>3.4.3</ognl.version>
         <kafka-client.version>2.2.1</kafka-client.version>
         <st4.version>4.3.4</st4.version>
         <commons-email.version>1.6.0</commons-email.version>
@@ -937,11 +936,21 @@
                 <artifactId>unomi-groovy-actions-services</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.unomi</groupId>
+                <artifactId>unomi-groovy-actions</artifactId>
+                <version>${project.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.apache.unomi</groupId>
                 <artifactId>cdp-graphql-api-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.unomi</groupId>
+                <artifactId>cdp-graphql-feature</artifactId>
+                <version>${project.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.apache.unomi</groupId>
                 <artifactId>graphql-providers-sample</artifactId>
@@ -967,6 +976,16 @@
                 <artifactId>unomi-plugins-optimization-test</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.unomi</groupId>
+                <artifactId>unomi-kar</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.unomi</groupId>
+                <artifactId>unomi-router-karaf-feature</artifactId>
+                <version>${project.version}</version>
+            </dependency>

             <dependency>
                 <groupId>javax.validation</groupId>
…from 4.0.21 to 4.0.28 and move groovy bundles into unomi feature because used by shell command and included in unomi base feature.

diff --git c/extensions/groovy-actions/karaf-kar/pom.xml i/extensions/groovy-actions/karaf-kar/pom.xml
index f123301..579764b 100644
--- c/extensions/groovy-actions/karaf-kar/pom.xml
+++ i/extensions/groovy-actions/karaf-kar/pom.xml
@@ -74,7 +74,7 @@
                                 <descriptor>file:${project.build.directory}/feature/feature.xml</descriptor>
                             </descriptors>
                             <distribution>org.apache.karaf:apache-karaf:zip:${karaf.version}</distribution>
-                            <javase>17</javase>
+                            <javase>21</javase>
                             <framework>
                                 <feature>framework</feature>
                             </framework>
diff --git c/extensions/groovy-actions/karaf-kar/src/main/feature/feature.xml i/extensions/groovy-actions/karaf-kar/src/main/feature/feature.xml
index f9e3974..8c2893e 100644
--- c/extensions/groovy-actions/karaf-kar/src/main/feature/feature.xml
+++ i/extensions/groovy-actions/karaf-kar/src/main/feature/feature.xml
@@ -17,19 +17,10 @@
   -->
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0" name="unomi-groovy-actions">

-    <repository>mvn:org.apache.karaf.features/specs/${karaf.version}/xml/features</repository>
-
     <feature name="unomi-groovy-actions" description="${project.name}" version="${project.version}">
         <details>${project.description}</details>
         <feature>wrap</feature>
-        <feature>spifly</feature>
         <feature>unomi-kar</feature>
-        <bundle start-level="85">mvn:org.apache.groovy/groovy/${groovy.version}</bundle>
-        <bundle start-level="85">mvn:org.apache.groovy/groovy-xml/${groovy.version}</bundle>
-        <bundle start-level="85">mvn:org.apache.groovy/groovy-json/${groovy.version}</bundle>
-        <bundle start-level="85">wrap:mvn:io.github.http-builder-ng/http-builder-ng-core/1.0.4</bundle>
-        <bundle start-level="85">mvn:org.jsoup/jsoup/1.13.1</bundle>
-        <bundle start-level="85">mvn:com.sun.activation/javax.activation/1.2.0</bundle>
         <bundle start-level="85" start="false">mvn:org.apache.unomi/unomi-groovy-actions-services/${project.version}</bundle>
         <bundle start-level="85" start="false">mvn:org.apache.unomi/unomi-groovy-actions-rest/${project.version}</bundle>
     </feature>
diff --git c/extensions/router/router-karaf-feature/pom.xml i/extensions/router/router-karaf-feature/pom.xml
index 801a1a0..093ef94 100644
--- c/extensions/router/router-karaf-feature/pom.xml
+++ i/extensions/router/router-karaf-feature/pom.xml
@@ -170,7 +170,7 @@
                                 <descriptor>file:${project.build.directory}/feature/feature.xml</descriptor>
                             </descriptors>
                             <distribution>org.apache.karaf:apache-karaf:zip:${karaf.version}</distribution>
-                            <javase>17</javase>
+                            <javase>21</javase>
                             <framework>
                                 <feature>framework</feature>
                             </framework>
diff --git c/extensions/salesforce-connector/karaf-kar/pom.xml i/extensions/salesforce-connector/karaf-kar/pom.xml
index fb1a113..d9392e9 100644
--- c/extensions/salesforce-connector/karaf-kar/pom.xml
+++ i/extensions/salesforce-connector/karaf-kar/pom.xml
@@ -103,7 +103,7 @@
                                 <descriptor>file:${project.build.directory}/feature/feature.xml</descriptor>
                             </descriptors>
                             <distribution>org.apache.karaf:apache-karaf:zip:${karaf.version}</distribution>
-                            <javase>17</javase>
+                            <javase>21</javase>
                             <framework>
                                 <feature>framework</feature>
                             </framework>
diff --git c/extensions/weather-update/karaf-kar/pom.xml i/extensions/weather-update/karaf-kar/pom.xml
index 2bb01b6..826243a 100644
--- c/extensions/weather-update/karaf-kar/pom.xml
+++ i/extensions/weather-update/karaf-kar/pom.xml
@@ -95,7 +95,7 @@
                                 <descriptor>file:${project.build.directory}/feature/feature.xml</descriptor>
                             </descriptors>
                             <distribution>org.apache.karaf:apache-karaf:zip:${karaf.version}</distribution>
-                            <javase>17</javase>
+                            <javase>21</javase>
                             <framework>
                                 <feature>framework</feature>
                             </framework>
diff --git c/itests/pom.xml i/itests/pom.xml
index 9a0cb17..25722ca 100644
--- c/itests/pom.xml
+++ i/itests/pom.xml
@@ -40,7 +40,7 @@
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi</artifactId>
-            <version>${project.version}</version>
+            <version>3.0.0-SNAPSHOT</version>
             <type>tar.gz</type>
             <scope>test</scope>
             <exclusions>
@@ -161,13 +161,13 @@
                             </execution>
                         </executions>
                     </plugin>
-                    <!-- Needed if you use versionAsInProject() -->
                     <plugin>
                         <groupId>org.apache.servicemix.tooling</groupId>
                         <artifactId>depends-maven-plugin</artifactId>
                         <executions>
                             <execution>
                                 <id>generate-depends-file</id>
+                                <phase>generate-resources</phase>
                                 <goals>
                                     <goal>generate-depends-file</goal>
                                 </goals>
diff --git c/kar/pom.xml i/kar/pom.xml
index 82fdbce..dcad6cb 100644
--- c/kar/pom.xml
+++ i/kar/pom.xml
@@ -184,7 +184,7 @@
                                 <descriptor>file:${project.build.directory}/feature/feature.xml</descriptor>
                             </descriptors>
                             <distribution>org.apache.karaf:apache-karaf:zip:${karaf.version}</distribution>
-                            <javase>17</javase>
+                            <javase>21</javase>
                             <framework>
                                 <feature>framework</feature>
                             </framework>
diff --git c/kar/src/main/feature/feature.xml i/kar/src/main/feature/feature.xml
index dc9eb71..057555b 100644
--- c/kar/src/main/feature/feature.xml
+++ i/kar/src/main/feature/feature.xml
@@ -18,6 +18,7 @@

 <features name="unomi-kar" xmlns="http://karaf.apache.org/xmlns/features/v1.6.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.6.0 http://karaf.apache.org/xmlns/features/v1.6.0">

+    <repository>mvn:org.apache.karaf.features/specs/${karaf.version}/xml/features</repository>
     <repository>mvn:org.apache.cxf.karaf/apache-cxf/${cxf.version}/xml/features</repository>

     <feature description="unomi-kar" version="${project.version}" name="unomi-kar" start-level="70">
@@ -35,6 +36,7 @@
         <feature>cxf-rs-description-openapi-v3</feature>
         <feature>eventadmin</feature>
         <feature>feature</feature>
+        <feature>spifly</feature>
         <feature>shell-compat</feature>
         <configfile finalname="/etc/org.apache.unomi.web.cfg">mvn:org.apache.unomi/unomi-wab/${project.version}/cfg/unomicfg</configfile>
         <configfile finalname="/etc/org.apache.unomi.persistence.elasticsearch.cfg">mvn:org.apache.unomi/unomi-persistence-elasticsearch-core/${project.version}/cfg/elasticsearchcfg</configfile>
@@ -70,6 +72,9 @@
         <bundle start-level="55">mvn:joda-time/joda-time/${joda-time.version}</bundle>
         <bundle start-level="55">mvn:jakarta.annotation/jakarta.annotation-api/${jakarta-annotation-api.version}</bundle>
         <bundle start-level="55">mvn:com.google.code.findbugs/jsr305/${jsr305.version}</bundle>
+        <bundle start-level="55">mvn:org.apache.groovy/groovy/${groovy.version}</bundle>
+        <bundle start-level="55">mvn:org.apache.groovy/groovy-xml/${groovy.version}</bundle>
+        <bundle start-level="55">mvn:org.apache.groovy/groovy-json/${groovy.version}</bundle>

         <bundle start-level="70" start="false">mvn:org.apache.unomi/unomi-lifecycle-watcher/${project.version}</bundle>
         <bundle start-level="75" start="false">mvn:org.apache.unomi/unomi-api/${project.version}</bundle>
diff --git c/package/pom.xml i/package/pom.xml
index b325e8f..e687a6b 100644
--- c/package/pom.xml
+++ i/package/pom.xml
@@ -18,14 +18,13 @@

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-
     <parent>
         <groupId>org.apache.unomi</groupId>
         <artifactId>unomi-root</artifactId>
         <version>3.0.0-SNAPSHOT</version>
     </parent>
-
     <artifactId>unomi</artifactId>
+    <version>3.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>Apache Unomi :: Distribution Package</name>
     <description>Packaged distributions of the Apache Unomi Context Server</description>
@@ -68,6 +67,13 @@
             <type>xml</type>
             <scope>runtime</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.features</groupId>
+            <artifactId>specs</artifactId>
+            <classifier>features</classifier>
+            <type>xml</type>
+            <scope>runtime</scope>
+        </dependency>

         <!-- Additional Apache Unomi features -->
         <dependency>
@@ -295,7 +301,7 @@
                         <feature>unomi-groovy-actions</feature>
                         <feature>unomi-rest-ui</feature>
                     </bootFeatures>
-                    <javase>17</javase>
+                    <javase>21</javase>
                 </configuration>
             </plugin>
             <plugin>
diff --git c/pom.xml i/pom.xml
index 60730e5..b634288 100644
--- c/pom.xml
+++ i/pom.xml
@@ -61,11 +61,11 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <encoding>UTF-8</encoding>

-        <java.version>17</java.version>
+        <java.version>21</java.version>
         <maven.compiler.source>${java.version}</maven.compiler.source>
         <maven.compiler.target>${java.version}</maven.compiler.target>

-        <karaf.version>4.4.7</karaf.version>
+        <karaf.version>4.4.8</karaf.version>
         <elasticsearch.version>7.4.2</elasticsearch.version>
         <elasticsearch.test.version>7.11.0</elasticsearch.test.version>
         <javax-validation.version>1.1.0.Final</javax-validation.version>
@@ -97,7 +97,7 @@
         <cxf.version>3.6.5</cxf.version>
         <rs-api.version>2.1</rs-api.version>
         <geronimo-ws.version>1.1.3</geronimo-ws.version>
-        <groovy.version>4.0.21</groovy.version>
+        <groovy.version>4.0.28</groovy.version>
         <httpclient-osgi.version>4.5.14</httpclient-osgi.version>
         <httpcore-osgi.version>4.4.16</httpcore-osgi.version>
         <junit.version>4.13.2</junit.version>
@@ -106,7 +106,9 @@
         <commons-email.version>1.6.0</commons-email.version>
         <commons-fileupload.version>1.3.1</commons-fileupload.version>
         <geoip2.version>0.9.0</geoip2.version>
+        <antlr.version>3.5.3</antlr.version>
         <antlr4.version>4.7.1</antlr4.version>
+        <stringtemplate.version>4.0.2</stringtemplate.version>
         <java-dataloader.version>2.2.0</java-dataloader.version>
         <reactive-stream.version>1.0.2</reactive-stream.version>
         <yauaa.version>7.31.0</yauaa.version>
@@ -124,6 +126,7 @@
         <animal-sniffer-annotations.version>1.14</animal-sniffer-annotations.version>
         <okhttp.version>3.2.0</okhttp.version>
         <okio.version>1.6.0</okio.version>
+        <treelayout.version>1.0.3</treelayout.version>
         <servlet.spec.groupId>javax.servlet</servlet.spec.groupId>
         <servlet.spec.artifactId>javax.servlet-api</servlet.spec.artifactId>
         <servlet.spec.version>3.1.0</servlet.spec.version>
@@ -1327,11 +1330,26 @@
                 <artifactId>rxjava</artifactId>
                 <version>${reactivex.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr-runtime</artifactId>
+                <version>${antlr.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.antlr</groupId>
                 <artifactId>antlr4-runtime</artifactId>
                 <version>${antlr4.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.antlr</groupId>
+                <artifactId>stringtemplate</artifactId>
+                <version>${stringtemplate.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.abego.treelayout</groupId>
+                <artifactId>org.abego.treelayout.core</artifactId>
+                <version>${treelayout.version}</version>
+            </dependency>
             <dependency>
                 <groupId>com.graphql-java</groupId>
                 <artifactId>java-dataloader</artifactId>
diff --git c/samples/graphql-providers-feature/pom.xml i/samples/graphql-providers-feature/pom.xml
index 7974887..6c0b85f 100644
--- c/samples/graphql-providers-feature/pom.xml
+++ i/samples/graphql-providers-feature/pom.xml
@@ -68,10 +68,10 @@
                 <executions>
                     <execution>
                         <id>generate-features</id>
+                        <phase>generate-resources</phase>
                         <goals>
                             <goal>features-generate-descriptor</goal>
                         </goals>
-                        <phase>compile</phase>
                     </execution>
                 </executions>
             </plugin>
diff --git c/setenv.sh i/setenv.sh
index f826319..dd042c0 100755
--- c/setenv.sh
+++ i/setenv.sh
@@ -19,6 +19,6 @@
 ################################################################################
 export UNOMI_VERSION=`mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -Ev '(^\[|Download\w+:)'`
 echo Detected project version=$UNOMI_VERSION
-export KARAF_VERSION=4.4.7
+export KARAF_VERSION=4.4.8
 # Uncomment the following line if you need Apache Unomi to start automatically at the first start
 # export KARAF_OPTS="-Dunomi.autoStart=true"
diff --git c/tools/shell-commands/pom.xml i/tools/shell-commands/pom.xml
index c1fef34..c9032dd 100644
--- c/tools/shell-commands/pom.xml
+++ i/tools/shell-commands/pom.xml
@@ -96,10 +96,12 @@
         <dependency>
             <groupId>org.apache.groovy</groupId>
             <artifactId>groovy</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.groovy</groupId>
             <artifactId>groovy-json</artifactId>
+            <scope>provided</scope>
         </dependency>

         <dependency>
… allow verification of features during build.
…fication. Fix slf4j provided dependency.

diff --git c/extensions/geonames/rest/pom.xml i/extensions/geonames/rest/pom.xml
index 1ab94f6..5b0e058 100644
--- c/extensions/geonames/rest/pom.xml
+++ i/extensions/geonames/rest/pom.xml
@@ -87,6 +87,11 @@
             <artifactId>jackson-jaxrs-json-provider</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

 </project>
diff --git c/extensions/geonames/services/pom.xml i/extensions/geonames/services/pom.xml
index b532dcd..a4c69fe 100644
--- c/extensions/geonames/services/pom.xml
+++ i/extensions/geonames/services/pom.xml
@@ -55,6 +55,11 @@
             <artifactId>commons-beanutils</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

     <build>
diff --git c/extensions/groovy-actions/rest/pom.xml i/extensions/groovy-actions/rest/pom.xml
index 856051a..1f9d77e 100644
--- c/extensions/groovy-actions/rest/pom.xml
+++ i/extensions/groovy-actions/rest/pom.xml
@@ -92,6 +92,11 @@
             <artifactId>jackson-jaxrs-json-provider</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git c/extensions/groovy-actions/services/pom.xml i/extensions/groovy-actions/services/pom.xml
index 76c30b8..48c24ab 100644
--- c/extensions/groovy-actions/services/pom.xml
+++ i/extensions/groovy-actions/services/pom.xml
@@ -74,8 +74,8 @@
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
+            <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
@@ -86,6 +86,11 @@
             <artifactId>jackson-databind</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.groovy</groupId>
             <artifactId>groovy</artifactId>
diff --git c/extensions/healthcheck/pom.xml i/extensions/healthcheck/pom.xml
index a41479a..3de7e60 100644
--- c/extensions/healthcheck/pom.xml
+++ i/extensions/healthcheck/pom.xml
@@ -76,6 +76,11 @@
             <artifactId>commons-lang3</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient-osgi</artifactId>
diff --git c/extensions/json-schema/rest/pom.xml i/extensions/json-schema/rest/pom.xml
index 0753ad8..a787b20 100644
--- c/extensions/json-schema/rest/pom.xml
+++ i/extensions/json-schema/rest/pom.xml
@@ -58,8 +58,8 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>jakarta.jws</groupId>
-            <artifactId>jakarta.jws-api</artifactId>
+            <groupId>javax.ws.rs</groupId>
+            <artifactId>javax.ws.rs-api</artifactId>
             <scope>provided</scope>
         </dependency>

@@ -73,10 +73,9 @@
             <artifactId>commons-lang3</artifactId>
             <scope>provided</scope>
         </dependency>
-
         <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git c/extensions/json-schema/services/pom.xml i/extensions/json-schema/services/pom.xml
index b69f860..48bdb16 100644
--- c/extensions/json-schema/services/pom.xml
+++ i/extensions/json-schema/services/pom.xml
@@ -81,37 +81,36 @@
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
-            <version>${version.schema.jackson}</version>
-            <scope>compile</scope>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
-            <version>${version.schema.jackson}</version>
-            <scope>compile</scope>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-annotations</artifactId>
-            <version>${version.schema.jackson}</version>
-            <scope>compile</scope>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.dataformat</groupId>
             <artifactId>jackson-dataformat-yaml</artifactId>
-            <version>${version.schema.jackson}</version>
-            <scope>compile</scope>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>com.ethlo.time</groupId>
             <artifactId>itu</artifactId>
             <version>${version.schema.itu}</version>
-            <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>org.yaml</groupId>
             <artifactId>snakeyaml</artifactId>
-            <scope>compile</scope>
         </dependency>
     </dependencies>

diff --git c/extensions/lists-extension/rest/pom.xml i/extensions/lists-extension/rest/pom.xml
index 94e0255..befb854 100644
--- c/extensions/lists-extension/rest/pom.xml
+++ i/extensions/lists-extension/rest/pom.xml
@@ -81,6 +81,11 @@
             <artifactId>jackson-jaxrs-json-provider</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

 </project>
diff --git c/extensions/pom.xml i/extensions/pom.xml
index 3b29d26..df1084a 100644
--- c/extensions/pom.xml
+++ i/extensions/pom.xml
@@ -28,18 +28,4 @@
     <description>Apache Unomi Context Server extensions</description>
     <packaging>pom</packaging>

-    <modules>
-        <module>lists-extension</module>
-        <module>privacy-extension</module>
-        <module>geonames</module>
-        <module>router</module>
-        <module>salesforce-connector</module>
-        <module>weather-update</module>
-        <module>web-tracker</module>
-        <module>groovy-actions</module>
-        <module>json-schema</module>
-        <module>log4j-extension</module>
-        <module>healthcheck</module>
-    </modules>
-
 </project>
diff --git c/extensions/privacy-extension/services/pom.xml i/extensions/privacy-extension/services/pom.xml
index 2e22cf8..fc11196 100644
--- c/extensions/privacy-extension/services/pom.xml
+++ i/extensions/privacy-extension/services/pom.xml
@@ -56,6 +56,11 @@
             <artifactId>cxf-rt-rs-security-cors</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

     <build>
diff --git c/extensions/router/router-core/pom.xml i/extensions/router/router-core/pom.xml
index 3793022..884cfe6 100644
--- c/extensions/router/router-core/pom.xml
+++ i/extensions/router/router-core/pom.xml
@@ -131,6 +131,11 @@
             <version>${kafka.client.version}</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

     <build>
diff --git c/extensions/router/router-rest/pom.xml i/extensions/router/router-rest/pom.xml
index 7d17493..b4b2d72 100644
--- c/extensions/router/router-rest/pom.xml
+++ i/extensions/router/router-rest/pom.xml
@@ -62,6 +62,7 @@
         <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>javax.ws.rs-api</artifactId>
+            <scope>provided</scope>
         </dependency>

         <dependency>
@@ -85,6 +86,11 @@
             <artifactId>jackson-databind</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

     <build>
diff --git c/extensions/router/router-service/pom.xml i/extensions/router/router-service/pom.xml
index 1456a75..39215d0 100644
--- c/extensions/router/router-service/pom.xml
+++ i/extensions/router/router-service/pom.xml
@@ -58,10 +58,17 @@
         <dependency>
             <groupId>commons-beanutils</groupId>
             <artifactId>commons-beanutils</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
         </dependency>
     </dependencies>

diff --git c/extensions/salesforce-connector/services/pom.xml i/extensions/salesforce-connector/services/pom.xml
index 8ab1d1e..9ee206f 100644
--- c/extensions/salesforce-connector/services/pom.xml
+++ i/extensions/salesforce-connector/services/pom.xml
@@ -43,6 +43,7 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
+            <scope>provided</scope>
         </dependency>

         <dependency>
@@ -101,6 +102,11 @@
             <artifactId>jackson-databind</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>

         <!-- Unit tests -->
         <dependency>
diff --git c/extensions/weather-update/core/pom.xml i/extensions/weather-update/core/pom.xml
index fa2aff0..a72d149 100755
--- c/extensions/weather-update/core/pom.xml
+++ i/extensions/weather-update/core/pom.xml
@@ -50,6 +50,11 @@
             <artifactId>jackson-databind</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

     <build>
diff --git c/graphql/karaf-feature/src/main/feature/feature.xml i/graphql/karaf-feature/src/main/feature/feature.xml
index 95552d6..fecbc05 100644
--- c/graphql/karaf-feature/src/main/feature/feature.xml
+++ i/graphql/karaf-feature/src/main/feature/feature.xml
@@ -16,8 +16,7 @@
   ~ limitations under the License.
   -->
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0" name="cdp-graphql-features">
-    <feature name="cdp-graphql-feature" description="Apache Unomi :: GraphQL API :: Karaf Feature"
-             version="${project.version}">
+    <feature name="cdp-graphql-feature" description="Apache Unomi :: GraphQL API :: Karaf Feature" version="${project.version}">
         <feature>unomi-kar</feature>
         <bundle start-level="80">wrap:mvn:org.checkerframework/checker-compat-qual/${checker-compat-qual.version}</bundle>
         <bundle start-level="80">wrap:mvn:com.google.errorprone/error_prone_annotations/${error_prone_annotations.version}</bundle>
@@ -47,7 +46,7 @@
         <bundle start-level="80">mvn:org.eclipse.jetty/jetty-security/${jetty.version}</bundle>
         <bundle start-level="80">mvn:org.eclipse.jetty/jetty-server/${jetty.version}</bundle>
         <bundle start-level="80">mvn:org.eclipse.jetty/jetty-http/${jetty.version}</bundle>
-        <bundle start-level="80">mvn:${servlet.spec.groupId}/${servlet.spec.artefactId}/${servlet.spec.version}</bundle>
+        <bundle start-level="80">mvn:${servlet.spec.groupId}/${servlet.spec.artifactId}/${servlet.spec.version}</bundle>
         <bundle start-level="80">mvn:org.apache.unomi/cdp-graphql-api-impl/${project.version}</bundle>
         <bundle start-level="80">mvn:org.apache.unomi/unomi-graphql-ui/${project.version}</bundle>
     </feature>
diff --git c/kar/src/main/feature/feature.xml i/kar/src/main/feature/feature.xml
index 9b1fbfa..01d087f 100644
--- c/kar/src/main/feature/feature.xml
+++ i/kar/src/main/feature/feature.xml
@@ -28,7 +28,7 @@
         <feature prerequisite="true">config</feature>
         <feature prerequisite="true">scr</feature>
         <feature prerequisite="true">http</feature>
-        <feature>pax-logging</feature>
+        <feature prerequisite="true">log</feature>
         <feature>cxf</feature>
         <feature>cxf-jaxrs</feature>
         <feature>cxf-features-metrics</feature>
@@ -47,7 +47,6 @@
         <configfile finalname="/etc/org.apache.unomi.plugins.request.cfg">mvn:org.apache.unomi/unomi-plugins-request/${project.version}/cfg/requestcfg</configfile>
         <configfile finalname="/etc/org.apache.unomi.plugins.base.cfg">mvn:org.apache.unomi/unomi-plugins-base/${project.version}/cfg/pluginsbasecfg</configfile>
         <configfile finalname="/etc/org.apache.unomi.geonames.cfg">mvn:org.apache.unomi/cxs-geonames-services/${project.version}/cfg/geonamescfg</configfile>
-        <configfile finalname="/etc/org.apache.unomi.groovy.actions.cfg">mvn:org.apache.unomi/unomi-groovy-actions-services/${project.version}/cfg/groovyactionscfg</configfile>
         <configfile finalname="/etc/org.apache.unomi.schema.cfg">mvn:org.apache.unomi/unomi-json-schema-services/${project.version}/cfg/schemacfg</configfile>
         <bundle start-level="55">mvn:commons-collections/commons-collections/${commons-collections.version}</bundle>
         <bundle start-level="55">mvn:org.apache.commons/commons-lang3/${commons-lang3.version}</bundle>
diff --git c/persistence-elasticsearch/core/pom.xml i/persistence-elasticsearch/core/pom.xml
index 31b46f3..6e1fccd 100644
--- c/persistence-elasticsearch/core/pom.xml
+++ i/persistence-elasticsearch/core/pom.xml
@@ -67,6 +67,11 @@
             <artifactId>hazelcast-all</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>

         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
diff --git c/persistence-spi/pom.xml i/persistence-spi/pom.xml
index 7f5e302..81c410e 100644
--- c/persistence-spi/pom.xml
+++ i/persistence-spi/pom.xml
@@ -61,6 +61,11 @@
             <artifactId>commons-collections</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>

         <!-- Unit tests -->
         <dependency>
diff --git c/plugins/baseplugin/pom.xml i/plugins/baseplugin/pom.xml
index cbe8c37..971f875 100644
--- c/plugins/baseplugin/pom.xml
+++ i/plugins/baseplugin/pom.xml
@@ -81,6 +81,11 @@
             <artifactId>jackson-databind</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>

         <!-- tests -->
         <dependency>
diff --git c/plugins/mail/pom.xml i/plugins/mail/pom.xml
index cbd324c..3d67809 100644
--- c/plugins/mail/pom.xml
+++ i/plugins/mail/pom.xml
@@ -43,6 +43,12 @@
             <groupId>org.antlr</groupId>
             <artifactId>ST4</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

     <build>
diff --git c/plugins/pom.xml i/plugins/pom.xml
index d88748f..c06b4f2 100644
--- c/plugins/pom.xml
+++ i/plugins/pom.xml
@@ -28,18 +28,7 @@
     <description>Apache Unomi Context Server plugins</description>
     <packaging>pom</packaging>

-    <modules>
-        <module>baseplugin</module>
-        <module>request</module>
-        <module>mail</module>
-        <module>optimization-test</module>
-        <module>hover-event</module>
-        <module>past-event</module>
-        <module>tracked-event</module>
-        <module>kafka-injector</module>
-    </modules>
-
-    <dependencies>
+   <dependencies>
         <dependency>
             <groupId>org.apache.unomi</groupId>
             <artifactId>unomi-api</artifactId>
diff --git c/plugins/request/pom.xml i/plugins/request/pom.xml
index 926dd4b..2663e42 100644
--- c/plugins/request/pom.xml
+++ i/plugins/request/pom.xml
@@ -49,6 +49,12 @@
             <artifactId>yauaa</artifactId>
         </dependency>

+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
diff --git c/pom.xml i/pom.xml
index 90bc444..80ad691 100644
--- c/pom.xml
+++ i/pom.xml
@@ -1444,6 +1444,7 @@
         <module>persistence-elasticsearch</module>
         <module>services</module>
         <!-- plugins -->
+        <module>plugins</module>
         <module>plugins/baseplugin</module>
         <module>plugins/hover-event</module>
         <module>plugins/past-event</module>
@@ -1453,6 +1454,7 @@
         <module>plugins/optimization-test</module>
         <module>plugins/request</module>
         <!-- root level extensions -->
+        <module>extensions</module>
         <module>extensions/healthcheck</module>
         <module>extensions/log4j-extension</module>
         <module>extensions/geonames</module>
@@ -1463,6 +1465,7 @@
         <module>commands</module>
         <module>wab</module>
         <module>rest</module>
+        <module>manual</module>
         <module>kar</module>
         <!-- other extensions -->
         <module>extensions/groovy-actions</module>
@@ -1470,7 +1473,6 @@
         <module>extensions/salesforce-connector</module>
         <module>extensions/weather-update</module>
         <module>graphql</module>
-        <module>manual</module>
         <module>samples</module>
         <module>package</module>
     </modules>
diff --git c/rest/pom.xml i/rest/pom.xml
index 3184272..1059b9d 100644
--- c/rest/pom.xml
+++ i/rest/pom.xml
@@ -154,6 +154,12 @@
             <artifactId>cxf-rt-rs-security-cors</artifactId>
             <scope>provided</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

     <build>
diff --git c/scripting/pom.xml i/scripting/pom.xml
index 64d6848..e0489ff 100644
--- c/scripting/pom.xml
+++ i/scripting/pom.xml
@@ -53,6 +53,12 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
         </dependency>

         <dependency>
diff --git c/wab/pom.xml i/wab/pom.xml
index 2d399f8..8c58283 100644
--- c/wab/pom.xml
+++ i/wab/pom.xml
@@ -102,6 +102,11 @@
             <artifactId>commons-beanutils</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>

     <build>
… init and propagation. Fix some provided deps. Remove unused SOAP endpoints and deps. Remove old sun.nio.ch imports. Remove blueprint from wab due to incompatibility.
…ConfigurationManager instead of environment variable
…LSegmentIT by adding jackson-datatype-jsr310 in the CustomObjectMapper
@jayblanc jayblanc marked this pull request as ready for review August 29, 2025 11:18
Copy link
Copy Markdown
Contributor

@sergehuber sergehuber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for all the work Jérome!

I noticed a few things but the main one is that I think we might want to revert the renaming of the tools directory for the moment, as it will cause some difficulties when merging with the unomi-3-dev branch. We could perform the rename after the merge if that's ok with you ?

Also I didn't understand why we needed to include the BOM everywhere when dependencies (and even default plugins such as maven-bundle-plugin) should be normally inherited from unomi-root project ?

Please see my inline comments as well.

Comment thread graphql/cxs-impl/pom.xml
Copy link
Copy Markdown
Contributor

@sergehuber sergehuber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for the quick changes Jérome. Looks good for me I will merge it.

Copy link
Copy Markdown
Contributor

@sergehuber sergehuber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the changes and the fix. Looks good to me.

@sergehuber sergehuber merged commit da9c57f into apache:master Sep 1, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants