You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by bo...@apache.org on 2024/04/25 08:10:30 UTC

(streampipes) 05/06: refactor: restructure module `streampipes-data-explorer` and `streampipes-data-explorer-commons`

This is an automated email from the ASF dual-hosted git repository.

bossenti pushed a commit to branch introduce-dedicated-influx-module
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit 878dbb64bcc516865e00a6627c56f53b557cce7b
Author: bossenti <bo...@posteo.de>
AuthorDate: Thu Apr 25 09:47:41 2024 +0200

    refactor: restructure module `streampipes-data-explorer` and `streampipes-data-explorer-commons`
---
 pom.xml                                            |  5 +-
 streampipes-data-explorer-api/pom.xml              | 39 ++++++++++
 .../api/IDataExplorerSchemaManagement.java         |  0
 .../dataexplorer/api}/IDataLakeQueryBuilder.java   |  8 +-
 .../dataexplorer/api/IQueryStatement.java          |  2 -
 .../pom.xml                                        | 87 +++++++++++-----------
 .../influx/DataExplorerInfluxQueryExecutor.java    | 10 ++-
 .../influx/DataLakeInfluxQueryBuilder.java         |  8 +-
 .../influx/InfluxDbReservedKeywords.java           |  2 +-
 .../dataexplorer}/influx/InfluxStore.java          |  8 +-
 .../dataexplorer}/influx/PropertyHandler.java      |  3 +-
 .../dataexplorer/influx}/RawFieldSerializer.java   |  2 +-
 .../dataexplorer/influx}/auth/AuthInterceptor.java |  2 +-
 .../dataexplorer/influx/auth}/InfluxAuthMode.java  |  2 +-
 .../influx/client}/InfluxClientProvider.java       |  3 +-
 .../influx/client}/InfluxClientUtils.java          |  4 +-
 .../influx/client}/InfluxConnectionSettings.java   |  3 +-
 .../influx/migrate}/AutoAggregationHandler.java    | 36 ++++-----
 .../migrate}/DataExplorerQueryManagement.java      |  5 +-
 .../influx/migrate}/DataExplorerUtils.java         |  6 +-
 .../influx/migrate}/DataLakeMeasurementCount.java  |  6 +-
 .../influx/migrate}/DeleteDataQuery.java           |  4 +-
 .../migrate}/IDataExplorerQueryManagement.java     |  2 +-
 .../dataexplorer/influx/migrate}/ImageStore.java   |  2 +-
 .../influx/migrate}/ImageStoreUtils.java           |  2 +-
 .../influx/migrate}/QueryResultProvider.java       | 11 ++-
 .../migrate}/StreamedQueryResultProvider.java      | 12 ++-
 .../influx/migrate}/TimeSeriesStore.java           |  7 +-
 .../dataexplorer/influx/migrate/package-info.java  |  7 ++
 .../influx/sanitize}/InfluxNameSanitizer.java      |  4 +-
 .../influx/sanitize}/MeasureNameSanitizer.java     |  2 +-
 .../influx}/DataLakeQueryBuilderTest.java          |  4 +-
 .../dataexplorer}/influx/InfluxStoreTest.java      | 22 +++---
 .../influx}/SelectQueryParamsTest.java             |  7 +-
 .../influx}/TestRawFieldSerializer.java            |  2 +-
 .../influx/client}/InfluxClientProviderTest.java   | 31 ++++----
 .../influx/sanitize}/MeasureNameSanitizerTest.java |  2 +-
 .../utils/ProvidedQueryParameterBuilder.java       |  2 +-
 streampipes-data-explorer-management/pom.xml       | 38 ++++++++++
 streampipes-data-explorer/pom.xml                  | 18 ++---
 .../param/ProvidedRestQueryParamConverter.java     | 65 ++++++++--------
 .../dataexplorer/param/SelectQueryParams.java      |  2 +-
 .../dataexplorer/param/model/FillClauseParams.java |  2 +-
 .../param/model/GroupByTagsClauseParams.java       |  2 +-
 .../param/model/GroupByTimeClauseParams.java       |  2 +-
 .../param/model/LimitClauseParams.java             |  2 +-
 .../param/model/OffsetClauseParams.java            |  2 +-
 .../param/model/OrderByClauseParams.java           |  4 +-
 .../param/model/SelectClauseParams.java            |  3 +-
 .../dataexplorer/param/model/SelectColumn.java     |  3 +-
 .../param/model/WhereClauseParams.java             |  4 +-
 .../query/DataExplorerQueryExecutor.java           |  8 +-
 .../DataExplorerSchemaManagementTest.java          |  1 +
 .../param/WhereStatementParamsTest.java            |  2 +-
 .../model/datalake}/AggregationFunction.java       |  2 +-
 .../model/datalake}/DataLakeQueryOrdering.java     |  2 +-
 .../model/datalake}/FilterCondition.java           |  2 +-
 streampipes-platform-services/pom.xml              |  2 +-
 .../streampipes/ps/DataLakeMeasureResourceV4.java  |  2 +-
 .../apache/streampipes/ps/DataLakeResourceV4.java  |  2 +-
 streampipes-rest/pom.xml                           |  2 +-
 .../apache/streampipes/rest/ResetManagement.java   |  2 +-
 .../impl/datalake/PersistedDataStreamResource.java |  2 +-
 streampipes-storage-ts-influx/pom.xml              | 20 -----
 64 files changed, 306 insertions(+), 254 deletions(-)

diff --git a/pom.xml b/pom.xml
index 491e7409d1..c450e1d2de 100644
--- a/pom.xml
+++ b/pom.xml
@@ -823,7 +823,9 @@
         <module>streampipes-extensions-api</module>
         <module>streampipes-extensions-management</module>
         <module>streampipes-data-explorer</module>
-        <module>streampipes-data-explorer-commons</module>
+        <module>streampipes-data-explorer-api</module>
+        <module>streampipes-data-explorer-influx</module>
+        <module>streampipes-data-explorer-management</module>
         <module>streampipes-data-export</module>
         <module>streampipes-dataformat</module>
         <module>streampipes-dataformat-cbor</module>
@@ -864,7 +866,6 @@
         <module>streampipes-storage-api</module>
         <module>streampipes-storage-couchdb</module>
         <module>streampipes-storage-management</module>
-        <module>streampipes-storage-ts-influx</module>
         <module>streampipes-test-utils</module>
         <module>streampipes-user-management</module>
         <module>streampipes-vocabulary</module>
diff --git a/streampipes-data-explorer-api/pom.xml b/streampipes-data-explorer-api/pom.xml
new file mode 100644
index 0000000000..63ea03609f
--- /dev/null
+++ b/streampipes-data-explorer-api/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.streampipes</groupId>
+        <artifactId>streampipes-parent</artifactId>
+        <version>0.95.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>streampipes-data-explorer-api</artifactId>
+    <description>
+        This module establishes the API for data explorer elements, consolidating important high-level interfaces.
+        It serves as a centralized collection of key interfaces.
+    </description>
+
+    <dependencies>
+        <!-- StreamPipes dependencies -->
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-model</artifactId>
+            <version>0.95.0-SNAPSHOT</version>
+        </dependency>
+
+        <!-- External Dependencies -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/api/IDataExplorerSchemaManagement.java b/streampipes-data-explorer-api/src/main/java/org/apache/streampipes/dataexplorer/api/IDataExplorerSchemaManagement.java
similarity index 100%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/api/IDataExplorerSchemaManagement.java
rename to streampipes-data-explorer-api/src/main/java/org/apache/streampipes/dataexplorer/api/IDataExplorerSchemaManagement.java
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/IDataLakeQueryBuilder.java b/streampipes-data-explorer-api/src/main/java/org/apache/streampipes/dataexplorer/api/IDataLakeQueryBuilder.java
similarity index 92%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/IDataLakeQueryBuilder.java
rename to streampipes-data-explorer-api/src/main/java/org/apache/streampipes/dataexplorer/api/IDataLakeQueryBuilder.java
index 3298a8ed4d..372635a69c 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/IDataLakeQueryBuilder.java
+++ b/streampipes-data-explorer-api/src/main/java/org/apache/streampipes/dataexplorer/api/IDataLakeQueryBuilder.java
@@ -16,9 +16,13 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.querybuilder;
+package org.apache.streampipes.dataexplorer.api;
 
-import org.apache.streampipes.dataexplorer.param.model.AggregationFunction;
+
+
+import org.apache.streampipes.model.datalake.AggregationFunction;
+import org.apache.streampipes.model.datalake.DataLakeQueryOrdering;
+import org.apache.streampipes.model.datalake.FilterCondition;
 
 import java.util.List;
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/api/IQueryStatement.java b/streampipes-data-explorer-api/src/main/java/org/apache/streampipes/dataexplorer/api/IQueryStatement.java
similarity index 92%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/api/IQueryStatement.java
rename to streampipes-data-explorer-api/src/main/java/org/apache/streampipes/dataexplorer/api/IQueryStatement.java
index 1e1a0f39a2..3db11a97a5 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/api/IQueryStatement.java
+++ b/streampipes-data-explorer-api/src/main/java/org/apache/streampipes/dataexplorer/api/IQueryStatement.java
@@ -18,8 +18,6 @@
 
 package org.apache.streampipes.dataexplorer.api;
 
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
-
 public interface IQueryStatement {
 
   void buildStatement(IDataLakeQueryBuilder<?> builder);
diff --git a/streampipes-data-explorer-commons/pom.xml b/streampipes-data-explorer-influx/pom.xml
similarity index 55%
rename from streampipes-data-explorer-commons/pom.xml
rename to streampipes-data-explorer-influx/pom.xml
index 759897f1a3..f39271a530 100644
--- a/streampipes-data-explorer-commons/pom.xml
+++ b/streampipes-data-explorer-influx/pom.xml
@@ -1,32 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~    http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  ~
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<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>streampipes-parent</artifactId>
         <groupId>org.apache.streampipes</groupId>
+        <artifactId>streampipes-parent</artifactId>
         <version>0.95.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>streampipes-data-explorer-commons</artifactId>
+    <artifactId>streampipes-data-explorer-influx</artifactId>
+    <description>This module houses all InfluxDB-specific implementations necessary to fulfill data explorer storage
+        functionalities utilizing an underlying instance of InfluxDB.
+    </description>
+
     <dependencies>
-        <!-- StreamPipes -->
+        <!-- StreamPipes Dependencies -->
         <dependency>
             <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-client-api</artifactId>
@@ -34,21 +23,42 @@
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-model</artifactId>
+            <artifactId>streampipes-commons</artifactId>
             <version>0.95.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-commons</artifactId>
+            <artifactId>streampipes-data-explorer</artifactId>
             <version>0.95.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-data-explorer-api</artifactId>
+            <version>0.95.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-model</artifactId>
+            <version>0.95.0-SNAPSHOT</version>
+        </dependency>
+
+        <!-- External dependency -->
+        <dependency> <!-- SHOULD BE REMOVED SOON -->
+            <groupId>org.lightcouch</groupId>
+            <artifactId>lightcouch</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.influxdb</groupId>
+            <artifactId>influxdb-java</artifactId>
+        </dependency>
+
+        <!-- Test dependencies -->
         <dependency>
             <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-test-utils</artifactId>
             <version>0.95.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
-
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-api</artifactId>
@@ -59,23 +69,12 @@
             <artifactId>mockito-core</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <!-- Others -->
-        <dependency>
-            <groupId>org.lightcouch</groupId>
-            <artifactId>lightcouch</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.influxdb</groupId>
-            <artifactId>influxdb-java</artifactId>
-        </dependency>
     </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-</project>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java
similarity index 95%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java
index e0328b2ff9..861eff40ba 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java
@@ -18,12 +18,12 @@
 
 package org.apache.streampipes.dataexplorer.influx;
 
-import org.apache.streampipes.dataexplorer.commons.influx.InfluxClientProvider;
+import org.apache.streampipes.dataexplorer.influx.client.InfluxClientProvider;
+import org.apache.streampipes.dataexplorer.influx.migrate.DeleteDataQuery;
 import org.apache.streampipes.dataexplorer.param.DeleteQueryParams;
 import org.apache.streampipes.dataexplorer.param.SelectQueryParams;
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.query.DataExplorerQueryExecutor;
-import org.apache.streampipes.dataexplorer.query.DeleteDataQuery;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.datalake.DataSeries;
 import org.apache.streampipes.model.datalake.SpQueryResult;
@@ -108,7 +108,7 @@ public class DataExplorerInfluxQueryExecutor extends DataExplorerQueryExecutor<Q
   }
 
   @Override
-  protected QueryResult executeQuery(Query query) {
+  public QueryResult executeQuery(Query query) {
     try (final InfluxDB influxDB = InfluxClientProvider.getInfluxDBClient()) {
       return influxDB.query(query, TimeUnit.MILLISECONDS);
     }
@@ -152,6 +152,7 @@ public class DataExplorerInfluxQueryExecutor extends DataExplorerQueryExecutor<Q
     return getEnvironment().getTsStorageBucket().getValueOrDefault();
   }
 
+  @Override
   public Map<String, Object> getTagValues(String measurementId, String fields) {
     try (final InfluxDB influxDB = InfluxClientProvider.getInfluxDBClient()) {
       Map<String, Object> tags = new HashMap<>();
@@ -180,6 +181,7 @@ public class DataExplorerInfluxQueryExecutor extends DataExplorerQueryExecutor<Q
     }
   }
 
+  @Override
   public boolean deleteData(DataLakeMeasure measure) {
     QueryResult queryResult = new DeleteDataQuery(measure).executeQuery();
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeInfluxQueryBuilder.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeInfluxQueryBuilder.java
similarity index 96%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeInfluxQueryBuilder.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeInfluxQueryBuilder.java
index abed48684e..24f552ea24 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeInfluxQueryBuilder.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeInfluxQueryBuilder.java
@@ -20,10 +20,10 @@ package org.apache.streampipes.dataexplorer.influx;
 
 import org.apache.streampipes.commons.environment.Environment;
 import org.apache.streampipes.commons.environment.Environments;
-import org.apache.streampipes.dataexplorer.param.model.AggregationFunction;
-import org.apache.streampipes.dataexplorer.querybuilder.DataLakeQueryOrdering;
-import org.apache.streampipes.dataexplorer.querybuilder.FilterCondition;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
+import org.apache.streampipes.model.datalake.AggregationFunction;
+import org.apache.streampipes.model.datalake.DataLakeQueryOrdering;
+import org.apache.streampipes.model.datalake.FilterCondition;
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 
 import org.influxdb.dto.Query;
 import org.influxdb.querybuilder.Ordering;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxDbReservedKeywords.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/InfluxDbReservedKeywords.java
similarity index 97%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxDbReservedKeywords.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/InfluxDbReservedKeywords.java
index 48d8c9e8d1..df4357eb6e 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxDbReservedKeywords.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/InfluxDbReservedKeywords.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxStore.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/InfluxStore.java
similarity index 96%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxStore.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/InfluxStore.java
index 1c16009ffa..0d10ac147f 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxStore.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/InfluxStore.java
@@ -16,10 +16,12 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx;
 
 import org.apache.streampipes.commons.environment.Environment;
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
+import org.apache.streampipes.dataexplorer.influx.client.InfluxClientProvider;
+import org.apache.streampipes.dataexplorer.influx.sanitize.InfluxNameSanitizer;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.runtime.Event;
 import org.apache.streampipes.model.schema.EventProperty;
@@ -208,8 +210,8 @@ public class InfluxStore {
     measure.getEventSchema()
            .getEventProperties()
            .forEach(ep -> sanitizedRuntimeNames.put(
-               ep.getRuntimeName(),
-               InfluxNameSanitizer.renameReservedKeywords(ep.getRuntimeName())
+             ep.getRuntimeName(),
+             InfluxNameSanitizer.renameReservedKeywords(ep.getRuntimeName())
            ));
   }
 
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/PropertyHandler.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/PropertyHandler.java
similarity index 97%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/PropertyHandler.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/PropertyHandler.java
index 9cc4a79d17..74d03ba3e2 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/PropertyHandler.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/PropertyHandler.java
@@ -16,10 +16,9 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx;
 
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
-import org.apache.streampipes.dataexplorer.commons.influx.serializer.RawFieldSerializer;
 import org.apache.streampipes.model.runtime.Event;
 import org.apache.streampipes.model.runtime.field.PrimitiveField;
 import org.apache.streampipes.model.schema.EventPropertyPrimitive;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/serializer/RawFieldSerializer.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/RawFieldSerializer.java
similarity index 96%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/serializer/RawFieldSerializer.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/RawFieldSerializer.java
index 05380df10c..4e6226babc 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/serializer/RawFieldSerializer.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/RawFieldSerializer.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx.serializer;
+package org.apache.streampipes.dataexplorer.influx;
 
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
 
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/auth/AuthInterceptor.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/auth/AuthInterceptor.java
similarity index 95%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/auth/AuthInterceptor.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/auth/AuthInterceptor.java
index 52c37c4b24..30d16dbba7 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/auth/AuthInterceptor.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/auth/AuthInterceptor.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.auth;
+package org.apache.streampipes.dataexplorer.influx.auth;
 
 import okhttp3.Interceptor;
 import okhttp3.Response;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxAuthMode.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/auth/InfluxAuthMode.java
similarity index 93%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxAuthMode.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/auth/InfluxAuthMode.java
index 781829260c..b2d4dae8a6 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxAuthMode.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/auth/InfluxAuthMode.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx.auth;
 
 public enum InfluxAuthMode {
 
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientProvider.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientProvider.java
similarity index 97%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientProvider.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientProvider.java
index a95ecfac7e..f1b47285b4 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientProvider.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientProvider.java
@@ -16,11 +16,12 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx.client;
 
 import org.apache.streampipes.commons.environment.Environment;
 import org.apache.streampipes.commons.environment.Environments;
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
+import org.apache.streampipes.dataexplorer.influx.auth.InfluxAuthMode;
 
 import org.influxdb.InfluxDB;
 import org.influxdb.InfluxDBFactory;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientUtils.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientUtils.java
similarity index 91%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientUtils.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientUtils.java
index 1f7b04d998..9b0d14d1ce 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientUtils.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientUtils.java
@@ -16,9 +16,9 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx.client;
 
-import org.apache.streampipes.dataexplorer.commons.auth.AuthInterceptor;
+import org.apache.streampipes.dataexplorer.influx.auth.AuthInterceptor;
 
 import okhttp3.OkHttpClient;
 
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxConnectionSettings.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxConnectionSettings.java
similarity index 97%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxConnectionSettings.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxConnectionSettings.java
index ac53b85730..80019e059f 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxConnectionSettings.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/client/InfluxConnectionSettings.java
@@ -16,9 +16,10 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx.client;
 
 import org.apache.streampipes.commons.environment.Environment;
+import org.apache.streampipes.dataexplorer.influx.auth.InfluxAuthMode;
 
 public class InfluxConnectionSettings {
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/AutoAggregationHandler.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/AutoAggregationHandler.java
similarity index 80%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/AutoAggregationHandler.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/AutoAggregationHandler.java
index 071d7a64d2..db5a6fb7c1 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/AutoAggregationHandler.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/AutoAggregationHandler.java
@@ -15,14 +15,13 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.dataexplorer.query;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
-import org.apache.streampipes.dataexplorer.DataExplorerQueryManagement;
 import org.apache.streampipes.dataexplorer.DataExplorerSchemaManagement;
-import org.apache.streampipes.dataexplorer.api.IDataExplorerQueryManagement;
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParams;
+import org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams;
 import org.apache.streampipes.dataexplorer.param.model.SelectColumn;
-import org.apache.streampipes.dataexplorer.querybuilder.DataLakeQueryOrdering;
+import org.apache.streampipes.model.datalake.DataLakeQueryOrdering;
 import org.apache.streampipes.model.datalake.SpQueryResult;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
@@ -36,14 +35,6 @@ import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_AGGREGATION_FUNCTION;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_AUTO_AGGREGATE;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_COLUMNS;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_COUNT_ONLY;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_LIMIT;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_ORDER;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_TIME_INTERVAL;
-
 public class AutoAggregationHandler {
 
   private static final Logger LOG = LoggerFactory.getLogger(AutoAggregationHandler.class);
@@ -86,7 +77,7 @@ public class AutoAggregationHandler {
 
           int aggValue = getAggregationValue(newest, oldest);
           LOG.debug("Setting auto-aggregation value to {} ms", aggValue);
-          queryParams.update(QP_TIME_INTERVAL, aggValue + "ms");
+          queryParams.update(SupportedRestQueryParams.QP_TIME_INTERVAL, aggValue + "ms");
           return disableAutoAgg(queryParams);
         }
       } else {
@@ -99,16 +90,16 @@ public class AutoAggregationHandler {
   }
 
   private ProvidedRestQueryParams disableAutoAgg(ProvidedRestQueryParams params) {
-    params.remove(QP_AUTO_AGGREGATE);
+    params.remove(SupportedRestQueryParams.QP_AUTO_AGGREGATE);
     return params;
   }
 
   public Integer getCount(String fieldName) {
     ProvidedRestQueryParams countParams = disableAutoAgg(new ProvidedRestQueryParams(queryParams));
-    countParams.remove(QP_TIME_INTERVAL);
-    countParams.remove(QP_AGGREGATION_FUNCTION);
-    countParams.update(QP_COUNT_ONLY, true);
-    countParams.update(QP_COLUMNS, fieldName);
+    countParams.remove(SupportedRestQueryParams.QP_TIME_INTERVAL);
+    countParams.remove(SupportedRestQueryParams.QP_AGGREGATION_FUNCTION);
+    countParams.update(SupportedRestQueryParams.QP_COUNT_ONLY, true);
+    countParams.update(SupportedRestQueryParams.QP_COLUMNS, fieldName);
 
     SpQueryResult result = dataLakeQueryManagement.getData(countParams, true);
 
@@ -134,10 +125,11 @@ public class AutoAggregationHandler {
 
   private SpQueryResult getSingleRecord(DataLakeQueryOrdering order) throws ParseException {
     ProvidedRestQueryParams singleEvent = disableAutoAgg(new ProvidedRestQueryParams(queryParams));
-    singleEvent.remove(QP_AGGREGATION_FUNCTION);
-    singleEvent.update(QP_LIMIT, 1);
-    singleEvent.update(QP_ORDER, order.name());
-    singleEvent.update(QP_COLUMNS, transformColumns(singleEvent.getAsString(QP_COLUMNS)));
+    singleEvent.remove(SupportedRestQueryParams.QP_AGGREGATION_FUNCTION);
+    singleEvent.update(SupportedRestQueryParams.QP_LIMIT, 1);
+    singleEvent.update(SupportedRestQueryParams.QP_ORDER, order.name());
+    singleEvent.update(SupportedRestQueryParams.QP_COLUMNS, transformColumns(singleEvent.getAsString(
+      SupportedRestQueryParams.QP_COLUMNS)));
 
     return fireQuery(singleEvent);
   }
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/DataExplorerQueryManagement.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataExplorerQueryManagement.java
similarity index 93%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/DataExplorerQueryManagement.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataExplorerQueryManagement.java
index 426262f1cb..12144d9335 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/DataExplorerQueryManagement.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataExplorerQueryManagement.java
@@ -16,16 +16,13 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
-import org.apache.streampipes.dataexplorer.api.IDataExplorerQueryManagement;
 import org.apache.streampipes.dataexplorer.api.IDataExplorerSchemaManagement;
 import org.apache.streampipes.dataexplorer.influx.DataExplorerInfluxQueryExecutor;
 import org.apache.streampipes.dataexplorer.param.DeleteQueryParams;
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParamConverter;
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParams;
-import org.apache.streampipes.dataexplorer.query.QueryResultProvider;
-import org.apache.streampipes.dataexplorer.query.StreamedQueryResultProvider;
 import org.apache.streampipes.dataexplorer.query.writer.OutputFormat;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.datalake.SpQueryResult;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/DataExplorerUtils.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataExplorerUtils.java
similarity index 93%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/DataExplorerUtils.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataExplorerUtils.java
index 6c28f9c145..97d8b9089d 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/DataExplorerUtils.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataExplorerUtils.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.dataexplorer.commons;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
 import org.apache.streampipes.client.api.IStreamPipesClient;
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
-import org.apache.streampipes.dataexplorer.commons.influx.InfluxNameSanitizer;
-import org.apache.streampipes.dataexplorer.commons.sanitizer.MeasureNameSanitizer;
+import org.apache.streampipes.dataexplorer.influx.sanitize.InfluxNameSanitizer;
+import org.apache.streampipes.dataexplorer.influx.sanitize.MeasureNameSanitizer;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.schema.EventProperty;
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeMeasurementCount.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataLakeMeasurementCount.java
similarity index 92%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeMeasurementCount.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataLakeMeasurementCount.java
index af8619fef5..aa21d051fa 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataLakeMeasurementCount.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DataLakeMeasurementCount.java
@@ -16,9 +16,11 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.influx;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
-import org.apache.streampipes.dataexplorer.param.model.AggregationFunction;
+import org.apache.streampipes.dataexplorer.influx.DataExplorerInfluxQueryExecutor;
+import org.apache.streampipes.dataexplorer.influx.DataLakeInfluxQueryBuilder;
+import org.apache.streampipes.model.datalake.AggregationFunction;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.datalake.SpQueryResult;
 import org.apache.streampipes.model.schema.EventProperty;
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DeleteDataQuery.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DeleteDataQuery.java
similarity index 92%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DeleteDataQuery.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DeleteDataQuery.java
index 6ef1d68564..4885cd1ed9 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DeleteDataQuery.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/DeleteDataQuery.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.dataexplorer.query;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
 import org.apache.streampipes.commons.environment.Environment;
 import org.apache.streampipes.commons.environment.Environments;
-import org.apache.streampipes.dataexplorer.commons.influx.InfluxClientProvider;
+import org.apache.streampipes.dataexplorer.influx.client.InfluxClientProvider;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 
 import org.influxdb.InfluxDB;
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/api/IDataExplorerQueryManagement.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/IDataExplorerQueryManagement.java
similarity index 96%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/api/IDataExplorerQueryManagement.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/IDataExplorerQueryManagement.java
index 59620a21be..78a6c38e7a 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/api/IDataExplorerQueryManagement.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/IDataExplorerQueryManagement.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.api;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParams;
 import org.apache.streampipes.dataexplorer.query.writer.OutputFormat;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/image/ImageStore.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/ImageStore.java
similarity index 98%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/image/ImageStore.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/ImageStore.java
index e9323d111b..6cfd2087be 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/image/ImageStore.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/ImageStore.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.image;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
 import org.apache.streampipes.commons.environment.Environment;
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/image/ImageStoreUtils.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/ImageStoreUtils.java
similarity index 96%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/image/ImageStoreUtils.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/ImageStoreUtils.java
index 42594827e4..6504303a5a 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/image/ImageStoreUtils.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/ImageStoreUtils.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.image;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.schema.EventProperty;
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/QueryResultProvider.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/QueryResultProvider.java
similarity index 83%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/QueryResultProvider.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/QueryResultProvider.java
index ce88fd1b5d..24b8edc678 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/QueryResultProvider.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/QueryResultProvider.java
@@ -16,16 +16,15 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.query;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
 import org.apache.streampipes.dataexplorer.influx.DataExplorerInfluxQueryExecutor;
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParamConverter;
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParams;
 import org.apache.streampipes.dataexplorer.param.SelectQueryParams;
+import org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams;
 import org.apache.streampipes.model.datalake.SpQueryResult;
 
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_AUTO_AGGREGATE;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_MAXIMUM_AMOUNT_OF_EVENTS;
 
 public class QueryResultProvider {
 
@@ -40,13 +39,13 @@ public class QueryResultProvider {
   }
 
   public SpQueryResult getData() {
-    if (queryParams.has(QP_AUTO_AGGREGATE)) {
+    if (queryParams.has(SupportedRestQueryParams.QP_AUTO_AGGREGATE)) {
       queryParams = new AutoAggregationHandler(queryParams).makeAutoAggregationQueryParams();
     }
     SelectQueryParams qp = ProvidedRestQueryParamConverter.getSelectQueryParams(queryParams);
 
-    if (queryParams.getProvidedParams().containsKey(QP_MAXIMUM_AMOUNT_OF_EVENTS)) {
-      int maximumAmountOfEvents = Integer.parseInt(queryParams.getProvidedParams().get(QP_MAXIMUM_AMOUNT_OF_EVENTS));
+    if (queryParams.getProvidedParams().containsKey(SupportedRestQueryParams.QP_MAXIMUM_AMOUNT_OF_EVENTS)) {
+      int maximumAmountOfEvents = Integer.parseInt(queryParams.getProvidedParams().get(SupportedRestQueryParams.QP_MAXIMUM_AMOUNT_OF_EVENTS));
       return new DataExplorerInfluxQueryExecutor(maximumAmountOfEvents).executeQuery(qp, ignoreMissingData);
     }
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/StreamedQueryResultProvider.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/StreamedQueryResultProvider.java
similarity index 92%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/StreamedQueryResultProvider.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/StreamedQueryResultProvider.java
index e1a8f756e6..dbd3b9567c 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/StreamedQueryResultProvider.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/StreamedQueryResultProvider.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.query;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParams;
 import org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams;
@@ -31,8 +31,6 @@ import java.io.OutputStream;
 import java.util.List;
 import java.util.Optional;
 
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_LIMIT;
-
 public class StreamedQueryResultProvider extends QueryResultProvider {
 
   private static final int MAX_RESULTS_PER_QUERY = 200000;
@@ -48,15 +46,15 @@ public class StreamedQueryResultProvider extends QueryResultProvider {
   }
 
   public void getDataAsStream(OutputStream outputStream) throws IOException {
-    var usesLimit = queryParams.has(QP_LIMIT);
+    var usesLimit = queryParams.has(SupportedRestQueryParams.QP_LIMIT);
     var configuredWriter = ConfiguredOutputWriter
         .getConfiguredWriter(format, queryParams, ignoreMissingData);
 
-    if (!queryParams.has(QP_LIMIT)) {
-      queryParams.update(QP_LIMIT, MAX_RESULTS_PER_QUERY);
+    if (!queryParams.has(SupportedRestQueryParams.QP_LIMIT)) {
+      queryParams.update(SupportedRestQueryParams.QP_LIMIT, MAX_RESULTS_PER_QUERY);
     }
 
-    var limit = queryParams.getAsInt(QP_LIMIT);
+    var limit = queryParams.getAsInt(SupportedRestQueryParams.QP_LIMIT);
     var measurement = findByMeasurementName(queryParams.getMeasurementId()).get();
 
     SpQueryResult dataResult;
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/TimeSeriesStore.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/TimeSeriesStore.java
similarity index 90%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/TimeSeriesStore.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/TimeSeriesStore.java
index 4bc6628696..ef8af9a24d 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/TimeSeriesStore.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/TimeSeriesStore.java
@@ -16,14 +16,13 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons;
+package org.apache.streampipes.dataexplorer.influx.migrate;
 
 import org.apache.streampipes.client.api.IStreamPipesClient;
 import org.apache.streampipes.commons.environment.Environment;
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
-import org.apache.streampipes.dataexplorer.commons.image.ImageStore;
-import org.apache.streampipes.dataexplorer.commons.influx.InfluxClientProvider;
-import org.apache.streampipes.dataexplorer.commons.influx.InfluxStore;
+import org.apache.streampipes.dataexplorer.influx.client.InfluxClientProvider;
+import org.apache.streampipes.dataexplorer.influx.InfluxStore;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.runtime.Event;
 
diff --git a/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/package-info.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/package-info.java
new file mode 100644
index 0000000000..1649bb9fad
--- /dev/null
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/migrate/package-info.java
@@ -0,0 +1,7 @@
+/**
+ * This package contains classes that have direct dependencies on InfluxDB-specific implementations.
+ * To enhance code organization and promote agnostic design, these classes are slated for migration to other modules,
+ * such as 'streampipes-data-explorer' or 'streampipes-data-explorer-api'.
+ * Pending migration, they are temporarily housed within this package.
+ */
+package org.apache.streampipes.dataexplorer.influx.migrate;
\ No newline at end of file
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxNameSanitizer.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/sanitize/InfluxNameSanitizer.java
similarity index 88%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxNameSanitizer.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/sanitize/InfluxNameSanitizer.java
index 353782ba8f..1d468e7703 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxNameSanitizer.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/sanitize/InfluxNameSanitizer.java
@@ -16,7 +16,9 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx.sanitize;
+
+import org.apache.streampipes.dataexplorer.influx.InfluxDbReservedKeywords;
 
 public class InfluxNameSanitizer {
 
diff --git a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/sanitizer/MeasureNameSanitizer.java b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/sanitize/MeasureNameSanitizer.java
similarity index 95%
rename from streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/sanitizer/MeasureNameSanitizer.java
rename to streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/sanitize/MeasureNameSanitizer.java
index 1ffbd02fef..e597527868 100644
--- a/streampipes-data-explorer-commons/src/main/java/org/apache/streampipes/dataexplorer/commons/sanitizer/MeasureNameSanitizer.java
+++ b/streampipes-data-explorer-influx/src/main/java/org/apache/streampipes/dataexplorer/influx/sanitize/MeasureNameSanitizer.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.sanitizer;
+package org.apache.streampipes.dataexplorer.influx.sanitize;
 
 import java.util.List;
 
diff --git a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/sdk/DataLakeQueryBuilderTest.java b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/DataLakeQueryBuilderTest.java
similarity index 91%
rename from streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/sdk/DataLakeQueryBuilderTest.java
rename to streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/DataLakeQueryBuilderTest.java
index 3c288e1ac0..48caeaa516 100644
--- a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/sdk/DataLakeQueryBuilderTest.java
+++ b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/DataLakeQueryBuilderTest.java
@@ -16,9 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.sdk;
-
-import org.apache.streampipes.dataexplorer.influx.DataLakeInfluxQueryBuilder;
+package org.apache.streampipes.dataexplorer.influx;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxStoreTest.java b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/InfluxStoreTest.java
similarity index 94%
rename from streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxStoreTest.java
rename to streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/InfluxStoreTest.java
index 888e44e346..aec50f849d 100644
--- a/streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxStoreTest.java
+++ b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/InfluxStoreTest.java
@@ -16,11 +16,11 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx;
 
 
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
-import org.apache.streampipes.dataexplorer.commons.influx.serializer.RawFieldSerializer;
+import org.apache.streampipes.dataexplorer.influx.client.InfluxClientProvider;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.runtime.Event;
 import org.apache.streampipes.model.runtime.EventFactory;
@@ -40,6 +40,8 @@ import org.influxdb.dto.Point;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatchers;
+import org.mockito.Mockito;
 
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -50,10 +52,6 @@ import java.util.concurrent.TimeUnit;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
 public class InfluxStoreTest {
 
@@ -68,7 +66,7 @@ public class InfluxStoreTest {
 
   @BeforeEach
   public void setUp() {
-    influxDBMock = mock(InfluxDB.class);
+    influxDBMock = Mockito.mock(InfluxDB.class);
     serializer = new RawFieldSerializer();
   }
 
@@ -306,7 +304,7 @@ public class InfluxStoreTest {
     influxStore.onEvent(event);
     var pointArgumentCaptor = ArgumentCaptor.forClass(Point.class);
 
-    verify(influxDBMock).write(pointArgumentCaptor.capture());
+    Mockito.verify(influxDBMock).write(pointArgumentCaptor.capture());
 
     return pointArgumentCaptor.getValue();
   }
@@ -356,7 +354,7 @@ public class InfluxStoreTest {
     influxStore.onEvent(event);
     var pointArgumentCaptor = ArgumentCaptor.forClass(Point.class);
 
-    verify(influxDBMock).write(pointArgumentCaptor.capture());
+    Mockito.verify(influxDBMock).write(pointArgumentCaptor.capture());
     return pointArgumentCaptor.getValue();
   }
 
@@ -384,9 +382,9 @@ public class InfluxStoreTest {
         eventSchema
     );
 
-    var influxClientProviderMock = mock(InfluxClientProvider.class);
-    when(influxClientProviderMock.getInitializedInfluxDBClient(any()))
-        .thenReturn(influxDBMock);
+    var influxClientProviderMock = Mockito.mock(InfluxClientProvider.class);
+    Mockito.when(influxClientProviderMock.getInitializedInfluxDBClient(ArgumentMatchers.any()))
+           .thenReturn(influxDBMock);
 
     return new InfluxStore(measure, null, influxClientProviderMock);
   }
diff --git a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/param/SelectQueryParamsTest.java b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/SelectQueryParamsTest.java
similarity index 96%
rename from streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/param/SelectQueryParamsTest.java
rename to streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/SelectQueryParamsTest.java
index 5c254ee87b..828ed2304c 100644
--- a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/param/SelectQueryParamsTest.java
+++ b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/SelectQueryParamsTest.java
@@ -16,10 +16,11 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.param;
+package org.apache.streampipes.dataexplorer.influx;
 
-import org.apache.streampipes.dataexplorer.influx.DataLakeInfluxQueryBuilder;
-import org.apache.streampipes.dataexplorer.utils.ProvidedQueryParameterBuilder;
+import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParamConverter;
+import org.apache.streampipes.dataexplorer.param.SelectQueryParams;
+import org.apache.streampipes.dataexplorer.influx.utils.ProvidedQueryParameterBuilder;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/serializer/TestRawFieldSerializer.java b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/TestRawFieldSerializer.java
similarity index 97%
rename from streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/serializer/TestRawFieldSerializer.java
rename to streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/TestRawFieldSerializer.java
index 9708617418..48f6344443 100644
--- a/streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/serializer/TestRawFieldSerializer.java
+++ b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/TestRawFieldSerializer.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx.serializer;
+package org.apache.streampipes.dataexplorer.influx;
 
 
 import org.junit.jupiter.api.Test;
diff --git a/streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientProviderTest.java b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientProviderTest.java
similarity index 76%
rename from streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientProviderTest.java
rename to streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientProviderTest.java
index 79b0849812..563ab36d6e 100644
--- a/streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/influx/InfluxClientProviderTest.java
+++ b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/client/InfluxClientProviderTest.java
@@ -16,28 +16,25 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.influx;
+package org.apache.streampipes.dataexplorer.influx.client;
 
 import org.apache.streampipes.commons.exceptions.SpRuntimeException;
 
 import org.influxdb.InfluxDB;
 import org.influxdb.dto.Query;
 import org.influxdb.dto.QueryResult;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatchers;
+import org.mockito.Mockito;
 
 import java.util.List;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
 
 public class InfluxClientProviderTest {
 
@@ -48,7 +45,7 @@ public class InfluxClientProviderTest {
 
   @BeforeEach
   public void setUp() {
-    influxDBMock = mock(InfluxDB.class);
+    influxDBMock = Mockito.mock(InfluxDB.class);
     influxClientProvider = new InfluxClientProvider();
   }
 
@@ -59,10 +56,10 @@ public class InfluxClientProviderTest {
     influxClientProvider.createDatabase(influxDBMock, "test");
 
     var pointArgumentCaptor = ArgumentCaptor.forClass(Query.class);
-    verify(influxDBMock).query(pointArgumentCaptor.capture());
+    Mockito.verify(influxDBMock).query(pointArgumentCaptor.capture());
     var actualQuery = pointArgumentCaptor.getValue();
 
-    assertEquals(actualQuery.getDatabase(), expectedQuery.getDatabase());
+    Assertions.assertEquals(actualQuery.getDatabase(), expectedQuery.getDatabase());
   }
 
   @Test
@@ -85,20 +82,20 @@ public class InfluxClientProviderTest {
   private boolean testDataBaseExists(List<Object> databaseNames) {
     var queryResult = getQueryResultWithDatabaseNames(databaseNames);
 
-    when(influxDBMock.query(any())).thenReturn(queryResult);
+    Mockito.when(influxDBMock.query(ArgumentMatchers.any())).thenReturn(queryResult);
 
     return influxClientProvider.databaseExists(influxDBMock, DATABASE_NAME);
   }
 
   private QueryResult getQueryResultWithDatabaseNames(List<Object> databaseNames) {
-    var queryResult = mock(QueryResult.class);
-    var result = mock(QueryResult.Result.class);
-    when(queryResult.getResults()).thenReturn(List.of(result));
-    var series = mock(QueryResult.Series.class);
-    when(result.getSeries()).thenReturn(List.of(series));
+    var queryResult = Mockito.mock(QueryResult.class);
+    var result = Mockito.mock(QueryResult.Result.class);
+    Mockito.when(queryResult.getResults()).thenReturn(List.of(result));
+    var series = Mockito.mock(QueryResult.Series.class);
+    Mockito.when(result.getSeries()).thenReturn(List.of(series));
 
     List<List<Object>> values = List.of(databaseNames);
-    when(series.getValues()).thenReturn(values);
+    Mockito.when(series.getValues()).thenReturn(values);
     return queryResult;
   }
 }
\ No newline at end of file
diff --git a/streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/sanitizer/MeasureNameSanitizerTest.java b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/sanitize/MeasureNameSanitizerTest.java
similarity index 96%
rename from streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/sanitizer/MeasureNameSanitizerTest.java
rename to streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/sanitize/MeasureNameSanitizerTest.java
index abbeb096f7..1f3a52f691 100644
--- a/streampipes-data-explorer-commons/src/test/java/org/apache/streampipes/dataexplorer/commons/sanitizer/MeasureNameSanitizerTest.java
+++ b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/sanitize/MeasureNameSanitizerTest.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.commons.sanitizer;
+package org.apache.streampipes.dataexplorer.influx.sanitize;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
diff --git a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/utils/ProvidedQueryParameterBuilder.java b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/utils/ProvidedQueryParameterBuilder.java
similarity index 98%
rename from streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/utils/ProvidedQueryParameterBuilder.java
rename to streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/utils/ProvidedQueryParameterBuilder.java
index c4cd73cebc..7addb829bf 100644
--- a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/utils/ProvidedQueryParameterBuilder.java
+++ b/streampipes-data-explorer-influx/src/test/java/org/apache/streampipes/dataexplorer/influx/utils/ProvidedQueryParameterBuilder.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.utils;
+package org.apache.streampipes.dataexplorer.influx.utils;
 
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParams;
 import org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams;
diff --git a/streampipes-data-explorer-management/pom.xml b/streampipes-data-explorer-management/pom.xml
new file mode 100644
index 0000000000..0a34c4bfdb
--- /dev/null
+++ b/streampipes-data-explorer-management/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.streampipes</groupId>
+        <artifactId>streampipes-parent</artifactId>
+        <version>0.95.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>streampipes-data-explorer-management</artifactId>
+    <description>
+        This Maven module acts as the central access point for components to interact with the data explorer storage.
+        It provides querying and writing capabilities while abstracting the underlying implementation details.
+        It ensures easy integration for any component needing access to the data explorer or its storage (data lake).
+    </description>
+    <dependencies>
+        <!-- StreamPipes dependencies -->
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-commons</artifactId>
+            <version>0.95.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-data-explorer-api</artifactId>
+            <version>0.95.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/streampipes-data-explorer/pom.xml b/streampipes-data-explorer/pom.xml
index 50443cf42c..27fa679219 100644
--- a/streampipes-data-explorer/pom.xml
+++ b/streampipes-data-explorer/pom.xml
@@ -28,9 +28,10 @@
     <artifactId>streampipes-data-explorer</artifactId>
 
     <dependencies>
+        <!--StreamPipes dependencies -->
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-data-explorer-commons</artifactId>
+            <artifactId>streampipes-data-explorer-api</artifactId>
             <version>0.95.0-SNAPSHOT</version>
         </dependency>
         <dependency>
@@ -43,22 +44,17 @@
             <artifactId>streampipes-storage-management</artifactId>
             <version>0.95.0-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>org.influxdb</groupId>
-            <artifactId>influxdb-java</artifactId>
-        </dependency>
-
 
         <!-- Test dependencies -->
         <dependency>
-            <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-test-utils</artifactId>
-            <version>0.95.0-SNAPSHOT</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
+            <groupId>org.apache.streampipes</groupId>
+            <artifactId>streampipes-test-utils</artifactId>
+            <version>0.95.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java
index 9b6f341dd7..7e09fe075f 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java
@@ -31,19 +31,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_AGGREGATION_FUNCTION;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_COLUMNS;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_COUNT_ONLY;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_END_DATE;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_FILTER;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_GROUP_BY;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_LIMIT;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_OFFSET;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_ORDER;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_PAGE;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_START_DATE;
-import static org.apache.streampipes.dataexplorer.param.SupportedRestQueryParams.QP_TIME_INTERVAL;
-
 
 public class ProvidedRestQueryParamConverter {
 
@@ -55,56 +42,62 @@ public class ProvidedRestQueryParamConverter {
   public static SelectQueryParams getSelectQueryParams(ProvidedRestQueryParams params) {
     SelectQueryParams queryParameters = new SelectQueryParams(params.getMeasurementId());
 
-    if (params.has(QP_COUNT_ONLY) && params.getAsBoolean(QP_COUNT_ONLY)) {
-      queryParameters.withSelectParams(SelectClauseParams.from(params.getAsString(QP_COLUMNS), true));
+    if (params.has(SupportedRestQueryParams.QP_COUNT_ONLY)
+        && params.getAsBoolean(SupportedRestQueryParams.QP_COUNT_ONLY)) {
+      queryParameters.withSelectParams(SelectClauseParams.from(params.getAsString(SupportedRestQueryParams.QP_COLUMNS),
+                                                               true)
+      );
     } else {
-      queryParameters.withSelectParams(SelectClauseParams.from(params.getAsString(QP_COLUMNS),
-          params.getAsString(QP_AGGREGATION_FUNCTION)));
+      queryParameters.withSelectParams(SelectClauseParams.from(params.getAsString(SupportedRestQueryParams.QP_COLUMNS),
+          params.getAsString(SupportedRestQueryParams.QP_AGGREGATION_FUNCTION)));
     }
 
-    String filterConditions = params.getAsString(QP_FILTER);
+    String filterConditions = params.getAsString(SupportedRestQueryParams.QP_FILTER);
 
     if (hasTimeParams(params)) {
       queryParameters.withWhereParams(WhereClauseParams.from(
-          params.getAsLong(QP_START_DATE),
-          params.getAsLong(QP_END_DATE),
+          params.getAsLong(SupportedRestQueryParams.QP_START_DATE),
+          params.getAsLong(SupportedRestQueryParams.QP_END_DATE),
           filterConditions));
     } else if (filterConditions != null) {
       queryParameters.withWhereParams(WhereClauseParams.from(filterConditions));
     }
 
-    if (params.has(QP_TIME_INTERVAL)) {
-      String timeInterval = params.getAsString(QP_TIME_INTERVAL);
-      if (!params.has(QP_GROUP_BY)) {
+    if (params.has(SupportedRestQueryParams.QP_TIME_INTERVAL)) {
+      String timeInterval = params.getAsString(SupportedRestQueryParams.QP_TIME_INTERVAL);
+      if (!params.has(SupportedRestQueryParams.QP_GROUP_BY)) {
         queryParameters.withGroupByTimeParams(GroupByTimeClauseParams.from(timeInterval));
       } else {
-        params.update(QP_GROUP_BY, params.getAsString(QP_GROUP_BY) + ",time(" + timeInterval + ")");
+        params.update(SupportedRestQueryParams.QP_GROUP_BY,
+                      params.getAsString(SupportedRestQueryParams.QP_GROUP_BY) + ",time(" + timeInterval + ")");
       }
 
       queryParameters.withFillParams(FillClauseParams.from());
     }
 
-    if (params.has(QP_GROUP_BY)) {
-      queryParameters.withGroupByTagsParams(GroupByTagsClauseParams.from(params.getAsString(QP_GROUP_BY)));
+    if (params.has(SupportedRestQueryParams.QP_GROUP_BY)) {
+      queryParameters.withGroupByTagsParams(GroupByTagsClauseParams.from(
+          params.getAsString(SupportedRestQueryParams.QP_GROUP_BY))
+      );
     }
 
 
-    if (params.has(QP_ORDER)) {
-      String order = params.getAsString(QP_ORDER);
+    if (params.has(SupportedRestQueryParams.QP_ORDER)) {
+      String order = params.getAsString(SupportedRestQueryParams.QP_ORDER);
       if (order.equals(ORDER_DESCENDING)) {
         queryParameters.withOrderByParams(OrderByClauseParams.from(order));
       }
     }
 
-    if (params.has(QP_LIMIT)) {
-      queryParameters.withLimitParams(LimitClauseParams.from(params.getAsInt(QP_LIMIT)));
+    if (params.has(SupportedRestQueryParams.QP_LIMIT)) {
+      queryParameters.withLimitParams(LimitClauseParams.from(params.getAsInt(SupportedRestQueryParams.QP_LIMIT)));
     }
 
-    if (params.has(QP_OFFSET)) {
-      queryParameters.withOffsetParams(OffsetClauseParams.from(params.getAsInt(QP_OFFSET)));
-    } else if (params.has(QP_LIMIT) && params.has(QP_PAGE)) {
+    if (params.has(SupportedRestQueryParams.QP_OFFSET)) {
+      queryParameters.withOffsetParams(OffsetClauseParams.from(params.getAsInt(SupportedRestQueryParams.QP_OFFSET)));
+    } else if (params.has(SupportedRestQueryParams.QP_LIMIT) && params.has(SupportedRestQueryParams.QP_PAGE)) {
       queryParameters.withOffsetParams(OffsetClauseParams.from(
-          params.getAsInt(QP_PAGE) * params.getAsInt(QP_LIMIT)));
+          params.getAsInt(SupportedRestQueryParams.QP_PAGE) * params.getAsInt(SupportedRestQueryParams.QP_LIMIT)));
     }
 
     return queryParameters;
@@ -121,8 +114,8 @@ public class ProvidedRestQueryParamConverter {
   }
 
   private static boolean hasTimeParams(ProvidedRestQueryParams params) {
-    return params.has(QP_START_DATE)
-        || params.has(QP_END_DATE);
+    return params.has(SupportedRestQueryParams.QP_START_DATE)
+        || params.has(SupportedRestQueryParams.QP_END_DATE);
   }
 
   public static List<String[]> buildConditions(String queryPart) {
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/SelectQueryParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/SelectQueryParams.java
index be5392d8c3..feb66ea6ef 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/SelectQueryParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/SelectQueryParams.java
@@ -17,6 +17,7 @@
  */
 package org.apache.streampipes.dataexplorer.param;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.param.model.FillClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.GroupByTagsClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.GroupByTimeClauseParams;
@@ -25,7 +26,6 @@ import org.apache.streampipes.dataexplorer.param.model.OffsetClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.OrderByClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.SelectClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.WhereClauseParams;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
 
 import java.util.Objects;
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/FillClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/FillClauseParams.java
index 5204ce5a0b..ccece054ba 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/FillClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/FillClauseParams.java
@@ -18,8 +18,8 @@
 
 package org.apache.streampipes.dataexplorer.param.model;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
 
 public class FillClauseParams implements IQueryStatement {
   String fill = "none";
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/GroupByTagsClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/GroupByTagsClauseParams.java
index 833fb3363a..3a4c8fd84d 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/GroupByTagsClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/GroupByTagsClauseParams.java
@@ -18,8 +18,8 @@
 
 package org.apache.streampipes.dataexplorer.param.model;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/GroupByTimeClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/GroupByTimeClauseParams.java
index 0d83953ceb..aa3f3f9422 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/GroupByTimeClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/GroupByTimeClauseParams.java
@@ -18,8 +18,8 @@
 
 package org.apache.streampipes.dataexplorer.param.model;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
 
 public class GroupByTimeClauseParams implements IQueryStatement {
   private final String timeInterval;
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/LimitClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/LimitClauseParams.java
index bdff3d070d..8aae6d5ffd 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/LimitClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/LimitClauseParams.java
@@ -18,8 +18,8 @@
 
 package org.apache.streampipes.dataexplorer.param.model;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
 
 public class LimitClauseParams implements IQueryStatement {
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/OffsetClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/OffsetClauseParams.java
index b8dbc94aea..d1543dd55b 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/OffsetClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/OffsetClauseParams.java
@@ -18,8 +18,8 @@
 
 package org.apache.streampipes.dataexplorer.param.model;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
 
 public class OffsetClauseParams implements IQueryStatement {
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/OrderByClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/OrderByClauseParams.java
index 612a91674a..6c184084a1 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/OrderByClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/OrderByClauseParams.java
@@ -18,9 +18,9 @@
 
 package org.apache.streampipes.dataexplorer.param.model;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
-import org.apache.streampipes.dataexplorer.querybuilder.DataLakeQueryOrdering;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
+import org.apache.streampipes.model.datalake.DataLakeQueryOrdering;
 
 public class OrderByClauseParams implements IQueryStatement {
   private final String ordering;
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/SelectClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/SelectClauseParams.java
index fe7f8d0f65..20aa556846 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/SelectClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/SelectClauseParams.java
@@ -19,8 +19,9 @@
 package org.apache.streampipes.dataexplorer.param.model;
 
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
+import org.apache.streampipes.model.datalake.AggregationFunction;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/SelectColumn.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/SelectColumn.java
index 1fb7661e90..3e4fd1048c 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/SelectColumn.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/SelectColumn.java
@@ -17,9 +17,10 @@
  */
 package org.apache.streampipes.dataexplorer.param.model;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParamConverter;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
+import org.apache.streampipes.model.datalake.AggregationFunction;
 
 public class SelectColumn implements IQueryStatement {
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/WhereClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/WhereClauseParams.java
index ab5a6712b8..6e1f633622 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/WhereClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/WhereClauseParams.java
@@ -17,10 +17,10 @@
  */
 package org.apache.streampipes.dataexplorer.param.model;
 
+import org.apache.streampipes.dataexplorer.api.IDataLakeQueryBuilder;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParamConverter;
-import org.apache.streampipes.dataexplorer.querybuilder.FilterCondition;
-import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
+import org.apache.streampipes.model.datalake.FilterCondition;
 
 import org.apache.commons.lang3.math.NumberUtils;
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DataExplorerQueryExecutor.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DataExplorerQueryExecutor.java
index f5e12bb247..d56856257f 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DataExplorerQueryExecutor.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DataExplorerQueryExecutor.java
@@ -20,6 +20,7 @@ package org.apache.streampipes.dataexplorer.query;
 
 import org.apache.streampipes.dataexplorer.param.DeleteQueryParams;
 import org.apache.streampipes.dataexplorer.param.SelectQueryParams;
+import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.datalake.DataSeries;
 import org.apache.streampipes.model.datalake.SpQueryResult;
 import org.apache.streampipes.model.datalake.SpQueryStatus;
@@ -27,6 +28,8 @@ import org.apache.streampipes.model.datalake.SpQueryStatus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Map;
+
 public abstract class DataExplorerQueryExecutor<X, W> {
 
   private static final Logger LOG = LoggerFactory.getLogger(DataExplorerQueryExecutor.class);
@@ -108,11 +111,14 @@ public abstract class DataExplorerQueryExecutor<X, W> {
   protected abstract SpQueryResult postQuery(W queryResult,
                                              boolean ignoreMissingValues);
 
-  protected abstract W executeQuery(X query);
+  public abstract W executeQuery(X query);
 
   protected abstract String asQueryString(X query);
 
   protected abstract X makeDeleteQuery(DeleteQueryParams params);
 
   protected abstract X makeSelectQuery(SelectQueryParams params);
+
+  public abstract Map<String, Object> getTagValues(String measurementId, String fields);
+  public abstract boolean deleteData(DataLakeMeasure measure);
 }
diff --git a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/DataExplorerSchemaManagementTest.java b/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/DataExplorerSchemaManagementTest.java
index 1c98f3422c..8484e3f326 100644
--- a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/DataExplorerSchemaManagementTest.java
+++ b/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/DataExplorerSchemaManagementTest.java
@@ -41,6 +41,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+
 public class DataExplorerSchemaManagementTest {
   public static final String NEW_PROPERTY = "newProperty";
   public static final String OLD_PROPERTY = "oldProperty";
diff --git a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/param/WhereStatementParamsTest.java b/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/param/WhereStatementParamsTest.java
index 984aee2bed..52b5552d07 100644
--- a/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/param/WhereStatementParamsTest.java
+++ b/streampipes-data-explorer/src/test/java/org/apache/streampipes/dataexplorer/param/WhereStatementParamsTest.java
@@ -19,7 +19,7 @@
 package org.apache.streampipes.dataexplorer.param;
 
 import org.apache.streampipes.dataexplorer.param.model.WhereClauseParams;
-import org.apache.streampipes.dataexplorer.querybuilder.FilterCondition;
+import org.apache.streampipes.model.datalake.FilterCondition;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/AggregationFunction.java b/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/AggregationFunction.java
similarity index 95%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/AggregationFunction.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/datalake/AggregationFunction.java
index 0d899c2b94..7e85b47e48 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/AggregationFunction.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/AggregationFunction.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.dataexplorer.param.model;
+package org.apache.streampipes.model.datalake;
 
 public enum AggregationFunction {
 
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/DataLakeQueryOrdering.java b/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/DataLakeQueryOrdering.java
similarity index 93%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/DataLakeQueryOrdering.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/datalake/DataLakeQueryOrdering.java
index f8825c157f..7c126eaf56 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/DataLakeQueryOrdering.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/DataLakeQueryOrdering.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.streampipes.dataexplorer.querybuilder;
+package org.apache.streampipes.model.datalake;
 
 public enum DataLakeQueryOrdering {
   ASC, DESC
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/FilterCondition.java b/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/FilterCondition.java
similarity index 93%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/FilterCondition.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/datalake/FilterCondition.java
index ed2592d8d3..8519bbee01 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/querybuilder/FilterCondition.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/datalake/FilterCondition.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  *
  */
-package org.apache.streampipes.dataexplorer.querybuilder;
+package org.apache.streampipes.model.datalake;
 
 public record FilterCondition(String field, String operator, Object condition) {
 }
diff --git a/streampipes-platform-services/pom.xml b/streampipes-platform-services/pom.xml
index 3c7b59e9af..b32c3c353b 100644
--- a/streampipes-platform-services/pom.xml
+++ b/streampipes-platform-services/pom.xml
@@ -30,7 +30,7 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-data-explorer</artifactId>
+            <artifactId>streampipes-data-explorer-influx</artifactId>
             <version>0.95.0-SNAPSHOT</version>
         </dependency>
         <dependency>
diff --git a/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeMeasureResourceV4.java b/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeMeasureResourceV4.java
index f315571cff..64c009e7a8 100644
--- a/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeMeasureResourceV4.java
+++ b/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeMeasureResourceV4.java
@@ -20,7 +20,7 @@ package org.apache.streampipes.ps;
 
 import org.apache.streampipes.dataexplorer.DataExplorerSchemaManagement;
 import org.apache.streampipes.dataexplorer.api.IDataExplorerSchemaManagement;
-import org.apache.streampipes.dataexplorer.influx.DataLakeMeasurementCount;
+import org.apache.streampipes.dataexplorer.influx.migrate.DataLakeMeasurementCount;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.storage.management.StorageDispatcher;
diff --git a/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeResourceV4.java b/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeResourceV4.java
index d19e60738d..3647c31862 100644
--- a/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeResourceV4.java
+++ b/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeResourceV4.java
@@ -18,8 +18,8 @@
 
 package org.apache.streampipes.ps;
 
-import org.apache.streampipes.dataexplorer.DataExplorerQueryManagement;
 import org.apache.streampipes.dataexplorer.DataExplorerSchemaManagement;
+import org.apache.streampipes.dataexplorer.influx.migrate.DataExplorerQueryManagement;
 import org.apache.streampipes.dataexplorer.param.ProvidedRestQueryParams;
 import org.apache.streampipes.dataexplorer.query.writer.OutputFormat;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
diff --git a/streampipes-rest/pom.xml b/streampipes-rest/pom.xml
index 81f79d526e..48b45acddc 100644
--- a/streampipes-rest/pom.xml
+++ b/streampipes-rest/pom.xml
@@ -42,7 +42,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.streampipes</groupId>
-            <artifactId>streampipes-data-explorer</artifactId>
+            <artifactId>streampipes-data-explorer-influx</artifactId>
             <version>0.95.0-SNAPSHOT</version>
         </dependency>
         <dependency>
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
index d5e89b9671..3c68acf0b9 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
@@ -22,8 +22,8 @@ import org.apache.streampipes.commons.exceptions.SpRuntimeException;
 import org.apache.streampipes.commons.exceptions.connect.AdapterException;
 import org.apache.streampipes.commons.prometheus.adapter.AdapterMetricsManager;
 import org.apache.streampipes.connect.management.management.AdapterMasterManagement;
-import org.apache.streampipes.dataexplorer.DataExplorerQueryManagement;
 import org.apache.streampipes.dataexplorer.DataExplorerSchemaManagement;
+import org.apache.streampipes.dataexplorer.influx.migrate.DataExplorerQueryManagement;
 import org.apache.streampipes.manager.file.FileManager;
 import org.apache.streampipes.manager.pipeline.PipelineCacheManager;
 import org.apache.streampipes.manager.pipeline.PipelineCanvasMetadataCacheManager;
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/PersistedDataStreamResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/PersistedDataStreamResource.java
index 63f86b34c9..72c0e9cf2c 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/PersistedDataStreamResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/PersistedDataStreamResource.java
@@ -17,7 +17,7 @@
  */
 package org.apache.streampipes.rest.impl.datalake;
 
-import org.apache.streampipes.dataexplorer.commons.sanitizer.MeasureNameSanitizer;
+import org.apache.streampipes.dataexplorer.influx.sanitize.MeasureNameSanitizer;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
 import org.apache.streampipes.model.graph.DataSinkInvocation;
 import org.apache.streampipes.model.pipeline.Pipeline;
diff --git a/streampipes-storage-ts-influx/pom.xml b/streampipes-storage-ts-influx/pom.xml
deleted file mode 100644
index 75fc900766..0000000000
--- a/streampipes-storage-ts-influx/pom.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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.streampipes</groupId>
-        <artifactId>streampipes-parent</artifactId>
-        <version>0.95.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>streampipes-storage-ts-influx</artifactId>
-
-    <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-
-</project>
\ No newline at end of file