Adds separate component projects with docker image

Change-Id: Id46ee88f486569934bb488700354d1032ea0422c
Signed-off-by: Daniel Espen <daniel.espen@iese.fraunhofer.de>
diff --git a/components/basys.components/basyx.components.docker/basyx.components.simple/Dockerfile b/components/basys.components/basyx.components.docker/basyx.components.simple/Dockerfile
new file mode 100644
index 0000000..b0a2f86
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.simple/Dockerfile
@@ -0,0 +1,14 @@
+# Add java runtime environment for execution
+FROM java:8-jdk-alpine 
+
+# Copy built jar to image using the jar name specified in the pom.xml (JAR_FILE)
+ARG JAR_FILE
+COPY target/${JAR_FILE} /usr/share/basyxExecutable.jar
+COPY target/lib /usr/share/lib
+ 
+# Expose the appropriate port. In case of Tomcat, this is 8080.
+ARG PORT
+EXPOSE ${PORT}
+ 
+# Start the jar
+CMD java -jar "/usr/share/basyxExecutable.jar"
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.simple/docker-compose.yml b/components/basys.components/basyx.components.docker/basyx.components.simple/docker-compose.yml
new file mode 100644
index 0000000..aca4d1b
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.simple/docker-compose.yml
@@ -0,0 +1,31 @@
+version: '3'
+services:
+
+  registry:
+    image: ${BASYX_IMAGE_NAME}:${BASYX_IMAGE_TAG}
+    container_name: ${BASYX_CONTAINER_NAME}
+    ports:
+      - ${BASYX_HOST_PORT}:${BASYX_CONTAINER_PORT}
+#    depends_on:
+#      - postgres
+#    volumes:
+#      -  .\WebContent\WEB-INF\config\directory\sqldirectory\directory.properties:/basys/directory.properties
+#    links:
+#      - postgres
+
+#  postgres:
+#    image: postgres:9.4
+#    container_name: postgres
+#    environment:
+#      - POSTGRES_USER:'postgres'
+#      - POSTGRES_PASSWORD:'admin'
+#      - POSTGRES_DB=basyx-directory
+#    volumes:
+#      - ./WebContent/WEB-INF/config/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
+#    ports:
+#      - 5433:5432
+#    expose:
+#      - 5432
+            
+
+      
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.simple/pom.xml b/components/basys.components/basyx.components.docker/basyx.components.simple/pom.xml
new file mode 100644
index 0000000..78b6354
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.simple/pom.xml
@@ -0,0 +1,95 @@
+<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>
+	
+	<!--
+		Simple Docker Component
+	 
+		Serves as a template for simple docker components that do not depend on other docker containers.
+		Do NOT use the included in-memory registry in a productive environment - the entries are not stored permanently
+	 -->
+
+	<parent>
+		<groupId>org.eclipse.basyx</groupId>
+		<artifactId>basyx.components.docker</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+    </parent>
+	
+	<artifactId>basyx.components.simple</artifactId>
+	<name>BaSyx Simple Docker Component</name>
+	
+	<properties>
+		<!--  
+			basyx.components.executable is the executable class with the definition of the public void main(String[]).
+			It is needed when building the jar in the maven-jar-plugin (see basyx.components.docker/pom.xml) 
+		-->
+		<basyx.components.executable>org.eclipse.basyx.components.executable.InMemoryRegistryExecutable</basyx.components.executable>
+	</properties>
+	
+	<packaging>jar</packaging>
+	
+	<!-- Define additional plugins that are not included by default -->
+	<!-- Plugin configuration is done in parent project(s) -->
+	<build>
+		<plugins>
+			<!-- Attach sources to jar file -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-source-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+	
+	<profiles>
+		<profile>
+			<!-- 
+				"Docker" profile - do not build & install docker images by default
+				Run "mvn install -Pdocker" in order to include docker  
+			-->
+			<id>docker</id>
+			<build>
+				<plugins>
+					<!-- Read maven properties from file -->
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>properties-maven-plugin</artifactId>
+					</plugin>
+				
+					<!-- Copy the dependencies necessary to run the jar -->
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-dependency-plugin</artifactId>
+					</plugin>
+				
+					<!-- Build the docker image -->
+					<plugin>
+						<groupId>com.spotify</groupId>
+						<artifactId>dockerfile-maven-plugin</artifactId>
+					</plugin>
+				
+					<!-- Create integration test environment -->
+					<plugin>
+						<groupId>com.dkanejs.maven.plugins</groupId>
+						<artifactId>docker-compose-maven-plugin</artifactId>
+					</plugin>
+					
+					<!-- Run integration tests -->
+					<plugin>    
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-failsafe-plugin</artifactId>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+	
+	<dependencies>
+		<!-- Adds additional classes of the BaSys SDK for tests (for TestRegistryProvider) -->
+		<dependency>
+			<groupId>org.eclipse.basyx</groupId>
+			<artifactId>basyx.sdk</artifactId>
+			<classifier>tests</classifier>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/java/org/eclipse/basyx/components/executable/InMemoryRegistryExecutable.java b/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/java/org/eclipse/basyx/components/executable/InMemoryRegistryExecutable.java
new file mode 100644
index 0000000..cefb994
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/java/org/eclipse/basyx/components/executable/InMemoryRegistryExecutable.java
@@ -0,0 +1,49 @@
+package org.eclipse.basyx.components.executable;
+
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.servlets.InMemoryRegistryServlet;
+import org.eclipse.basyx.vab.protocol.http.server.AASHTTPServer;
+import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A registry servlet based on an InMemory Registry. The servlet therefore provides an implementation
+ * for the IAASRegistryService interface without a permanent storage capability.
+ * 
+ * Do not use this registry in a productive environment - the entries are not persistent!
+ * 
+ * @author espen
+ */
+public class InMemoryRegistryExecutable {
+	private static Logger logger = LoggerFactory.getLogger(InMemoryRegistryExecutable.class);
+
+
+
+	// The path the created servlet is mapped to
+	public static final String SERVLET_MAPPING = "/";
+	
+	// The server with the servlet that will be created
+	private static AASHTTPServer server;
+
+	private InMemoryRegistryExecutable() {
+	}
+
+	public static void main(String[] args) {
+		logger.info("Starting BaSyx InMemory registry");
+
+		// Load configuration
+		BaSyxContextConfiguration config = new BaSyxContextConfiguration();
+		config.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+		// Init HTTP context and add an InMemoryRegistryServlet according to the configuration
+		BaSyxContext context = new BaSyxContext(config.getContextPath(), config.getDocBasePath(), config.getHostname(),
+				config.getPort());
+		context.addServletMapping(SERVLET_MAPPING + "*", new InMemoryRegistryServlet());
+
+		// Create and start server
+		server = new AASHTTPServer(context);
+		logger.info("Starting server...");
+		server.start();
+	}
+
+}
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/java/org/eclipse/basyx/components/servlets/InMemoryRegistryServlet.java b/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/java/org/eclipse/basyx/components/servlets/InMemoryRegistryServlet.java
new file mode 100644
index 0000000..933577b
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/java/org/eclipse/basyx/components/servlets/InMemoryRegistryServlet.java
@@ -0,0 +1,25 @@
+package org.eclipse.basyx.components.servlets;
+
+import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
+import org.eclipse.basyx.aas.registration.restapi.DirectoryModelProvider;
+import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
+
+/**
+ * A registry servlet based on an InMemory Registry. The servlet therefore provides an implementation
+ * for the IAASRegistryService interface without a permanent storage capability.
+ * 
+ * Do not use this registry in a productive environment - the entries are not persistent!
+ * 
+ * @author espen
+ */
+public class InMemoryRegistryServlet extends VABHTTPInterface<DirectoryModelProvider> {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Constructor with ModelProvider based on an InMemoryRegistry
+	 */
+	public InMemoryRegistryServlet() {
+		super(new DirectoryModelProvider(new InMemoryRegistry()));
+
+	}
+}
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/resources/context.properties b/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/resources/context.properties
new file mode 100644
index 0000000..7e933a3
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/resources/context.properties
@@ -0,0 +1,3 @@
+contextPath=/registry
+contextHostname=localhost
+contextPort=4000
\ No newline at end of file
diff --git a/components/basys.components/src/main/resources/logback.xml b/components/basys.components/basyx.components.docker/basyx.components.simple/src/main/resources/logback.xml
similarity index 100%
copy from components/basys.components/src/main/resources/logback.xml
copy to components/basys.components/basyx.components.docker/basyx.components.simple/src/main/resources/logback.xml
diff --git a/components/basys.components/basyx.components.docker/basyx.components.simple/src/test/java/org/eclipse/basyx/regression/docker/ITInMemoryRegistry.java b/components/basys.components/basyx.components.docker/basyx.components.simple/src/test/java/org/eclipse/basyx/regression/docker/ITInMemoryRegistry.java
new file mode 100644
index 0000000..6248d79
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.simple/src/test/java/org/eclipse/basyx/regression/docker/ITInMemoryRegistry.java
@@ -0,0 +1,51 @@
+package org.eclipse.basyx.regression.docker;
+
+import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
+import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
+import org.eclipse.basyx.aas.registration.restapi.DirectoryModelProvider;
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.configuration.BaSyxDockerConfiguration;
+import org.eclipse.basyx.testsuite.regression.aas.registration.proxy.TestRegistryProvider;
+import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
+import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ITInMemoryRegistry extends TestRegistryProvider {
+	private static Logger logger = LoggerFactory.getLogger(ITInMemoryRegistry.class);
+
+	private static String registryUrl;
+
+	@BeforeClass
+	public static void setUpClass() {
+		logger.info("Running integration test...");
+
+		logger.info("Loading servlet configuration");
+		// Load the servlet configuration inside of the docker configuration from properties file
+		BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
+		contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+
+		// Load the docker environment configuration from properties file
+		logger.info("Loading docker configuration");
+		BaSyxDockerConfiguration dockerConfig = new BaSyxDockerConfiguration();
+		dockerConfig.loadFromResource(BaSyxDockerConfiguration.DEFAULT_CONFIG_PATH);
+
+		registryUrl = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath();
+		logger.info("Registry URL for integration test: " + registryUrl);
+	}
+
+	/**
+	 * Returns a model provider proxy for directly accessing the registry created by the http servlet
+	 */
+	@Override
+	protected IModelProvider getProxyProvider() {
+		// Create a registry proxy directly pointing to the servlet
+		IAASRegistryService registryProxy = new AASRegistryProxy(registryUrl);
+		// Wrap the proxy in an IModelProvider
+		DirectoryModelProvider provider = new DirectoryModelProvider(registryProxy);
+		// Append the necessary registry API access to each request
+		IModelProvider apiProxy = new VABElementProxy("/api/v1/registry", provider);
+		return apiProxy;
+	}
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.simple/src/test/resources/.env b/components/basys.components/basyx.components.docker/basyx.components.simple/src/test/resources/.env
new file mode 100644
index 0000000..21cc7e8
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.simple/src/test/resources/.env
@@ -0,0 +1,5 @@
+BASYX_HOST_PORT=8082
+BASYX_CONTAINER_PORT=4000
+BASYX_IMAGE_NAME=basys/registry-inmemory
+BASYX_CONTAINER_NAME=registry
+BASYX_IMAGE_TAG=0.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/Dockerfile b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/Dockerfile
new file mode 100644
index 0000000..b0a2f86
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/Dockerfile
@@ -0,0 +1,14 @@
+# Add java runtime environment for execution
+FROM java:8-jdk-alpine 
+
+# Copy built jar to image using the jar name specified in the pom.xml (JAR_FILE)
+ARG JAR_FILE
+COPY target/${JAR_FILE} /usr/share/basyxExecutable.jar
+COPY target/lib /usr/share/lib
+ 
+# Expose the appropriate port. In case of Tomcat, this is 8080.
+ARG PORT
+EXPOSE ${PORT}
+ 
+# Start the jar
+CMD java -jar "/usr/share/basyxExecutable.jar"
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/docker-compose.yml b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/docker-compose.yml
new file mode 100644
index 0000000..f6add3e
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/docker-compose.yml
@@ -0,0 +1,38 @@
+version: '2.1'
+services:
+  registry:
+    image: ${BASYX_IMAGE_NAME}:${BASYX_IMAGE_TAG}
+    container_name: ${BASYX_CONTAINER_NAME}
+    ports:
+      - ${BASYX_HOST_PORT}:${BASYX_CONTAINER_PORT}
+    depends_on:
+      postgres:
+        condition: service_healthy
+# Possibility to embed user-configuration into the docker container 
+#    volumes:
+#      -  ./myConfig/myConfigs.properties:/usr/share/dockerRegistry.properties
+    links:
+      - postgres
+
+  postgres:
+    image: postgres:12.1
+    container_name: postgres
+    environment:
+      - POSTGRES_USER:'postgres'
+      - POSTGRES_PASSWORD:'admin'
+      - POSTGRES_DB=basyx-directory
+    healthcheck:
+      test: ["CMD-SHELL", "pg_isready -U postgres"]
+      interval: 3s
+      timeout: 3s
+      retries: 5
+# Possibility to configure postgres-config into docker container
+#    volumes:
+#      - ./WebContent/WEB-INF/config/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
+#    ports:
+#      - 5433:5432
+#    expose:
+#      - 5432
+            
+
+      
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/pom.xml b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/pom.xml
new file mode 100644
index 0000000..3664f36
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/pom.xml
@@ -0,0 +1,80 @@
+<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.eclipse.basyx</groupId>
+		<artifactId>basyx.components.docker</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+    </parent>
+	
+	<artifactId>basyx.components.sqlregistry</artifactId>
+	<name>BaSyx SQL Registry</name>
+	
+	<properties>
+		<basyx.components.executable>org.eclipse.basyx.components.executable.SQLRegistryExecutable</basyx.components.executable>
+	</properties>
+	
+	<packaging>jar</packaging>
+	
+	<build>
+		<!-- Define additional plugins that are not included by default -->
+		<!-- Plugin configuration is done in parent project(s) -->
+		<plugins>
+			<!-- Attach sources to jar file -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-source-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+	
+	<dependencies>
+		<!-- Adds additional classes of the BaSys SDK for tests (for TestRegistryProvider) -->
+		<dependency>
+			<groupId>org.eclipse.basyx</groupId>
+			<artifactId>basyx.sdk</artifactId>
+			<classifier>tests</classifier>
+		</dependency>
+	</dependencies>
+	
+	<profiles>
+		<profile>
+			<id>docker</id>
+			<build>
+				<plugins>
+					<!-- Read maven properties from file -->
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>properties-maven-plugin</artifactId>
+					</plugin>
+				
+					<!-- Copy the dependencies necessary to run the jar -->
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-dependency-plugin</artifactId>
+					</plugin>
+				
+					<!-- Build the docker image -->
+					<plugin>
+						<groupId>com.spotify</groupId>
+						<artifactId>dockerfile-maven-plugin</artifactId>
+					</plugin>
+				
+					<!-- Create integration test environment -->
+					<plugin>
+						<groupId>com.dkanejs.maven.plugins</groupId>
+						<artifactId>docker-compose-maven-plugin</artifactId>
+					</plugin>
+					
+					<!-- Run integration tests -->
+					<plugin>    
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-failsafe-plugin</artifactId>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+</project>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/executable/SQLRegistryExecutable.java b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/executable/SQLRegistryExecutable.java
new file mode 100644
index 0000000..daaacfe
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/executable/SQLRegistryExecutable.java
@@ -0,0 +1,49 @@
+package org.eclipse.basyx.components.executable;
+
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.servlet.SQLRegistryServlet;
+import org.eclipse.basyx.vab.protocol.http.server.AASHTTPServer;
+import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A registry servlet based on an SQL database. The servlet therefore provides an implementation
+ * for the IAASRegistryService interface with a permanent storage solution. The properties for the 
+ * SQL connection will be read from executables.properties in the resource folder.
+ * 
+ * @author espen
+ */
+public class SQLRegistryExecutable {
+	private static Logger logger = LoggerFactory.getLogger(SQLRegistryExecutable.class);
+
+
+
+	// The path the created servlet is mapped to
+	public static final String SERVLET_MAPPING = "/*";
+	
+	// The server with the servlet that will be created
+	private static AASHTTPServer server;
+
+	private SQLRegistryExecutable() {
+	}
+
+	public static void main(String[] args) {
+		logger.info("Starting BaSyx SQL registry");
+
+		// Load configuration
+		BaSyxContextConfiguration config = new BaSyxContextConfiguration();
+		config.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+
+		// Init HTTP context and add an InMemoryRegistryServlet according to the configuration
+		BaSyxContext context = new BaSyxContext(config.getContextPath(), config.getDocBasePath(), config.getHostname(),
+				config.getPort());
+		context.addServletMapping(SERVLET_MAPPING, new SQLRegistryServlet("dockerRegistry.properties"));
+
+		// Create and start server
+		server = new AASHTTPServer(context);
+		logger.info("Starting server...");
+		server.start();
+	}
+
+}
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/servlet/SQLRegistryServlet.java b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/servlet/SQLRegistryServlet.java
new file mode 100644
index 0000000..ff69ac7
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/servlet/SQLRegistryServlet.java
@@ -0,0 +1,27 @@
+package org.eclipse.basyx.components.servlet;
+
+import org.eclipse.basyx.aas.registration.restapi.DirectoryModelProvider;
+import org.eclipse.basyx.components.sqlregistry.SQLRegistry;
+import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
+
+/**
+ * A registry servlet based on an SQL database. The servlet therefore provides an implementation
+ * for the IAASRegistryService interface with a permanent storage solution.
+ * 
+ * @author kuhn, pschorn, espen
+ */
+public class SQLRegistryServlet extends VABHTTPInterface<DirectoryModelProvider> {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Provide HTTP interface with JSONProvider to handle serialization and
+	 * SQLDirectoryProvider as backend
+	 */
+	public SQLRegistryServlet() {
+		super(new DirectoryModelProvider(new SQLRegistry()));
+	}
+
+	public SQLRegistryServlet(String customConfigFilePath) {
+		super(new DirectoryModelProvider(new SQLRegistry(customConfigFilePath)));
+	}
+}
\ No newline at end of file
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/directory/AASDescriptorMap.java b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/sqlregistry/AASDescriptorMap.java
similarity index 97%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/directory/AASDescriptorMap.java
rename to components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/sqlregistry/AASDescriptorMap.java
index 007a85c..e30c144 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/directory/AASDescriptorMap.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/sqlregistry/AASDescriptorMap.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.directory;
+package org.eclipse.basyx.components.sqlregistry;
 
 import java.util.Collection;
 import java.util.Map;
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/sqlregistry/SQLRegistry.java b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/sqlregistry/SQLRegistry.java
new file mode 100644
index 0000000..17f2729
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/java/org/eclipse/basyx/components/sqlregistry/SQLRegistry.java
@@ -0,0 +1,78 @@
+package org.eclipse.basyx.components.sqlregistry;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+
+import org.eclipse.basyx.aas.registration.memory.MapRegistry;
+import org.eclipse.basyx.components.configuration.BaSyxSQLConfiguration;
+import org.eclipse.basyx.tools.sqlproxy.SQLRootElement;
+
+/**
+ * Implements a local registry based on an SQL database
+ * 
+ * @author espen
+ *
+ */
+public class SQLRegistry extends MapRegistry {
+	private static final String DEFAULT_SQL_CONFIG_PATH = "registry.properties";
+
+	/**
+	 * Receives the path of the configuration.properties file in it's constructor.
+	 * 
+	 * @param configFilePath
+	 */
+	public SQLRegistry(String configFilePath) {
+		super(new AASDescriptorMap(createRootMap(configFilePath)));
+	}
+
+	/**
+	 * Constructor using default sql connections
+	 */
+	public SQLRegistry() {
+		this(DEFAULT_SQL_CONFIG_PATH);
+	}
+
+	/**
+	 * Creates a SQLRegistry from a sql configuration
+	 */
+	public SQLRegistry(BaSyxSQLConfiguration configuration) {
+		super(new AASDescriptorMap(createRootMap(configuration)));
+	}
+
+	private static Map<String, Object> createRootMap(String configFilePath) {
+		BaSyxSQLConfiguration config = new BaSyxSQLConfiguration();
+		config.loadFromResource(configFilePath);
+		return createRootMap(config);
+	}
+
+	private static Map<String, Object> createRootMap(BaSyxSQLConfiguration config) {
+		SQLRootElement sqlRootElement = initSQLConnection(config);
+		sqlRootElement.drop();
+		sqlRootElement.create();
+
+		return sqlRootElement.createMap(sqlRootElement.getNextIdentifier());
+	}
+
+	/**
+	 * Initialize sqlDriver
+	 * 
+	 * @throws IOException
+	 * @throws FileNotFoundException
+	 * 
+	 * @throws ServletException
+	 */
+	private static final SQLRootElement initSQLConnection(BaSyxSQLConfiguration config) {
+		// SQL parameter
+		String path = config.getPath();
+		String user = config.getUser();
+		String pass = config.getPass();
+		String qryPfx = config.getPrefix();
+		String qDrvCls = config.getDrv();
+
+		// Create SQL driver instance
+		return new SQLRootElement(user, pass, path, qDrvCls, qryPfx, "root_registry");
+	}
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/resources/context.properties b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/resources/context.properties
new file mode 100644
index 0000000..7e933a3
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/resources/context.properties
@@ -0,0 +1,3 @@
+contextPath=/registry
+contextHostname=localhost
+contextPort=4000
\ No newline at end of file
diff --git a/components/basys.components/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/resources/dockerRegistry.properties
similarity index 95%
rename from components/basys.components/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties
rename to components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/resources/dockerRegistry.properties
index 60e38d9..3464cd4 100644
--- a/components/basys.components/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/resources/dockerRegistry.properties
@@ -37,7 +37,7 @@
 
 dbuser             = postgres
 dbpass             = admin
-dburl              = //localhost/basyx-directory?
+dburl              = //postgres:5432/basyx-directory?
 
 sqlDriver          = org.postgresql.Driver
 sqlPrefix          = jdbc:postgresql:
diff --git a/components/basys.components/src/main/resources/logback.xml b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/resources/logback.xml
similarity index 100%
copy from components/basys.components/src/main/resources/logback.xml
copy to components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/main/resources/logback.xml
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/ITSQLRegistry.java b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/ITSQLRegistry.java
new file mode 100644
index 0000000..7df1193
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/ITSQLRegistry.java
@@ -0,0 +1,52 @@
+package org.eclipse.basyx.regression.registry;
+
+import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
+import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
+import org.eclipse.basyx.aas.registration.restapi.DirectoryModelProvider;
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.configuration.BaSyxDockerConfiguration;
+import org.eclipse.basyx.testsuite.regression.aas.registration.proxy.TestRegistryProvider;
+import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
+import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ITSQLRegistry extends TestRegistryProvider {
+	private static Logger logger = LoggerFactory.getLogger(ITSQLRegistry.class);
+
+	private static String registryUrl;
+
+	@BeforeClass
+	public static void setUpClass() {
+		logger.info("Running integration test...");
+
+		logger.info("Loading servlet configuration");
+		// Load the servlet configuration inside of the docker configuration from properties file
+		BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
+		contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+
+		// Load the docker environment configuration from properties file
+		logger.info("Loading docker configuration");
+		BaSyxDockerConfiguration dockerConfig = new BaSyxDockerConfiguration();
+		dockerConfig.loadFromResource(BaSyxDockerConfiguration.DEFAULT_CONFIG_PATH);
+
+		registryUrl = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath()
+				+ "/api/v1/registry";
+		logger.info("Registry URL for integration test: " + registryUrl);
+	}
+
+	/**
+	 * Returns a model provider proxy for directly accessing the registry created by the http servlet
+	 */
+	@Override
+	protected IModelProvider getProxyProvider() {
+		// Create a registry proxy directly pointing to the servlet
+		IAASRegistryService registryProxy = new AASRegistryProxy(registryUrl);
+		// Wrap the proxy in an IModelProvider
+		DirectoryModelProvider provider = new DirectoryModelProvider(registryProxy);
+		// Append the necessary registry API access to each request
+		IModelProvider apiProxy = new VABElementProxy("/api/v1/registry", provider);
+		return apiProxy;
+	}
+}
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/sql/TestDirectorySQLProviderRaw.java b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/ITSQLRegistryRaw.java
similarity index 82%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/sql/TestDirectorySQLProviderRaw.java
rename to components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/ITSQLRegistryRaw.java
index 979c563..531f818 100644
--- a/components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/sql/TestDirectorySQLProviderRaw.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/ITSQLRegistryRaw.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.regression.directory.sql;
+package org.eclipse.basyx.regression.registry;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
@@ -11,9 +11,9 @@
 
 import org.eclipse.basyx.aas.metamodel.map.descriptor.AASDescriptor;
 import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
-import org.eclipse.basyx.regression.support.server.context.ComponentsRegressionContext;
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.configuration.BaSyxDockerConfiguration;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
-import org.eclipse.basyx.testsuite.regression.vab.protocol.http.AASHTTPServerResource;
 import org.eclipse.basyx.tools.webserviceclient.WebServiceRawClient;
 import org.eclipse.basyx.vab.coder.json.metaprotocol.MetaprotocolHandler;
 import org.eclipse.basyx.vab.coder.json.serialization.DefaultTypeFactory;
@@ -21,27 +21,18 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.ClassRule;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Test raw http queries to SQL directory provider.
  * 
- * @author kuhn, ps, espen
+ * @author espen
  *
  */
-public class TestDirectorySQLProviderRaw {
-
-	/**
-	 * Makes sure Tomcat Server is started
-	 */
-	@ClassRule
-	public static AASHTTPServerResource res = new AASHTTPServerResource(new ComponentsRegressionContext());
-
-	/**
-	 * Directory web service URL
-	 */
-	public static final String wsURL = "http://localhost:8080/basys.components/Testsuite/Directory/SQL";
+public class ITSQLRegistryRaw {
+	private static Logger logger = LoggerFactory.getLogger(ITSQLRegistry.class);
 
 	/**
 	 * Serialization
@@ -53,7 +44,7 @@
 	 * Invoke BaSyx service calls via web services
 	 */
 	private static final WebServiceRawClient client = new WebServiceRawClient();
-	private static final String registryUrl = wsURL + "/api/v1/registry/";
+	private static String registryUrl;
 
 	/**
 	 * AASDescriptor to test
@@ -74,9 +65,26 @@
 
 	@BeforeClass
 	public static void setUpClass() throws UnsupportedEncodingException {
+		logger.info("Running integration test...");
+
+		logger.info("Loading servlet configuration");
+		// Load the servlet configuration inside of the docker configuration from properties file
+		BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
+		contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+
+		// Load the docker environment configuration from properties file
+		logger.info("Loading docker configuration");
+		BaSyxDockerConfiguration dockerConfig = new BaSyxDockerConfiguration();
+		dockerConfig.loadFromResource(BaSyxDockerConfiguration.DEFAULT_CONFIG_PATH);
+
+		registryUrl = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath()
+				+ "/api/v1/registry/";
+		logger.info("Registry URL for integration test: " + registryUrl);
 		aasUrl1 = registryUrl + URLEncoder.encode(id1.toString(), "UTF-8");
 		aasUrl2 = registryUrl + URLEncoder.encode(id2.toString(), "UTF-8");
 		aasUrlUnknown = registryUrl + URLEncoder.encode(idUnknown.toString(), "UTF-8");
+
+		logger.info("Registry URL for integration test: " + registryUrl);
 	}
 
 	@Before
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/sql/TestSQLRegistryProvider.java b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/TestSQLRegistryProvider.java
similarity index 76%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/sql/TestSQLRegistryProvider.java
rename to components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/TestSQLRegistryProvider.java
index 168c376..7a5f412 100644
--- a/components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/sql/TestSQLRegistryProvider.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/java/org/eclipse/basyx/regression/registry/TestSQLRegistryProvider.java
@@ -1,8 +1,8 @@
-package org.eclipse.basyx.regression.directory.sql;
+package org.eclipse.basyx.regression.registry;
 
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.registration.restapi.DirectoryModelProvider;
-import org.eclipse.basyx.components.directory.SQLRegistry;
+import org.eclipse.basyx.components.sqlregistry.SQLRegistry;
 import org.eclipse.basyx.testsuite.regression.aas.registration.proxy.TestRegistryProvider;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
@@ -14,15 +14,13 @@
  *
  */
 public class TestSQLRegistryProvider extends TestRegistryProvider {
-	private static String configFilePath = "./WebContent/WEB-INF/config/directory/sqldirectory/directory.properties";
-
 	/**
 	 * Sets up the SQL directory servlet for the sql tests
 	 */
 	@Override
 	protected IModelProvider getProxyProvider() {
 		// Sets up the sql registry based on the given config file
-		IAASRegistryService sqlRegistry = new SQLRegistry(configFilePath);
+		IAASRegistryService sqlRegistry = new SQLRegistry("localRegistry.properties");
 		// Wraps the registry in an IModelProvider
 		DirectoryModelProvider provider = new DirectoryModelProvider(sqlRegistry);
 		// Uses a proxy to directly address the registry via its api prefix
diff --git a/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/resources/.env b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/resources/.env
new file mode 100644
index 0000000..c6adcc2
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/resources/.env
@@ -0,0 +1,5 @@
+BASYX_HOST_PORT=8082
+BASYX_CONTAINER_PORT=4000
+BASYX_IMAGE_NAME=basys/registry-sql
+BASYX_CONTAINER_NAME=registry
+BASYX_IMAGE_TAG=0.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/components/basys.components/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/resources/localRegistry.properties
similarity index 95%
copy from components/basys.components/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties
copy to components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/resources/localRegistry.properties
index 60e38d9..ffec021 100644
--- a/components/basys.components/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties
+++ b/components/basys.components/basyx.components.docker/basyx.components.sqlregistry/src/test/resources/localRegistry.properties
@@ -37,7 +37,7 @@
 
 dbuser             = postgres
 dbpass             = admin
-dburl              = //localhost/basyx-directory?
+dburl              = //localhost:5432/basyx-directory? 
 
 sqlDriver          = org.postgresql.Driver
 sqlPrefix          = jdbc:postgresql:
diff --git a/components/basys.components/basyx.components.docker/pom.xml b/components/basys.components/basyx.components.docker/pom.xml
new file mode 100644
index 0000000..9151452
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/pom.xml
@@ -0,0 +1,178 @@
+<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.eclipse.basyx</groupId>
+		<artifactId>basyx.components</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+    </parent>
+	
+	<artifactId>basyx.components.docker</artifactId>
+	<name>BaSyx Docker Base</name>
+	
+	<packaging>pom</packaging>
+
+	<!-- Includes all components in this project as separated modules -->
+	<modules>
+		<module>basyx.components.simple</module>
+		<module>basyx.components.sqlregistry</module>
+	</modules>
+	
+	<build>
+		<pluginManagement>
+			<plugins>
+				<!-- Read maven properties from file -->
+				<plugin>
+					<groupId>org.codehaus.mojo</groupId>
+					<artifactId>properties-maven-plugin</artifactId>
+					<version>1.0.0</version>
+					<executions>
+						<execution>
+							<phase>initialize</phase>
+							<goals>
+								<goal>read-project-properties</goal>
+							</goals>
+							<configuration>
+								<files>
+									<file>${project.basedir}/src/test/resources/.env</file>
+								</files>
+							</configuration>
+						</execution>
+					</executions>
+				</plugin>
+
+				<!-- Generate separate jar for tests and exclude logback.xml from generated jars -->
+				<!-- + create the executable jar -->
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-jar-plugin</artifactId>
+					<version>3.1.1</version>
+					<configuration>
+						<archive>
+							<manifest>
+								<addClasspath>true</addClasspath>
+								<classpathPrefix>lib/</classpathPrefix>
+								<mainClass>${basyx.components.executable}</mainClass>
+							</manifest>
+						</archive>
+						<excludes>
+							<exclude>**/logback.xml</exclude>
+						</excludes>
+						<executions>
+							<execution>
+								<goals>
+									<goal>test-jar</goal>
+								</goals>
+							</execution>
+						</executions>
+					</configuration>
+				</plugin>
+				
+				<!-- Copy the dependencies necessary to run the jar -->
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-dependency-plugin</artifactId>
+					<executions>
+						<execution>
+							<id>copy-dependencies</id>
+							<phase>prepare-package</phase>
+							<goals>
+								<goal>copy-dependencies</goal>
+							</goals>
+							<configuration>
+								<includeScope>compile</includeScope>
+								<outputDirectory>${project.build.directory}/lib/</outputDirectory>
+							</configuration>
+						</execution>
+					</executions>
+				</plugin>
+			
+				<!-- Build the docker image -->
+				<plugin>
+					<groupId>com.spotify</groupId>
+					<artifactId>dockerfile-maven-plugin</artifactId>
+					<version>1.4.10</version>
+					<executions>
+						<execution>
+							<id>default</id>
+							<goals>
+								<goal>build</goal>
+							</goals>
+						</execution>
+					</executions>
+					<configuration>
+						<repository>${BASYX_IMAGE_NAME}</repository>
+						<tag>${project.version}</tag>
+						<buildArgs>
+							<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
+							<PORT>${BASYX_CONTAINER_PORT}</PORT>
+						</buildArgs>
+					</configuration>
+				</plugin>
+			
+				<!-- Create integration test environment -->
+				<plugin>
+					<groupId>com.dkanejs.maven.plugins</groupId>
+					<artifactId>docker-compose-maven-plugin</artifactId>
+					<version>2.5.1</version>
+					<configuration>
+						<composeFile>${project.basedir}/docker-compose.yml</composeFile>
+						<detachedMode>true</detachedMode>
+						<envFile>${project.basedir}/src/test/resources/.env</envFile>
+						<envVars>
+							<BASYX_IMAGE_TAG>${project.version}</BASYX_IMAGE_TAG>
+							<BASYX_IMAGE_NAME>${BASYX_IMAGE_NAME}</BASYX_IMAGE_NAME>
+							<BASYX_CONTAINER_NAME>${BASYX_CONTAINER_NAME}</BASYX_CONTAINER_NAME>
+							<BASYX_CONTAINER_PORT>${BASYX_CONTAINER_PORT}</BASYX_CONTAINER_PORT>
+							<BASYX_HOST_PORT>${BASYX_HOST_PORT}</BASYX_HOST_PORT>
+						</envVars>
+					</configuration>
+					<executions>
+						<execution>
+							<id>docker-compose-up</id>
+							<phase>pre-integration-test</phase>
+							<goals>
+								<goal>up</goal>
+							</goals>
+						</execution>
+						<execution>
+							<id>docker-compose-down</id>
+							<phase>post-integration-test</phase>
+							<goals>
+								<goal>down</goal>
+							</goals>
+						</execution>
+					</executions>
+				</plugin>
+				
+				
+				<!-- Run integration tests -->
+				<plugin>    
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-failsafe-plugin</artifactId>
+					<version>2.20.1</version>
+					<executions>
+						<execution>
+							<goals>
+								<goal>integration-test</goal>
+								<goal>verify</goal>
+							</goals>
+						</execution>
+					</executions>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+	
+	<!--  Defines common dependencies for all docker components -->
+	<dependencies>
+		<!-- Depends on the components library -->
+		<dependency>
+			<groupId>org.eclipse.basyx</groupId>
+			<artifactId>basyx.components.lib</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
diff --git a/components/basys.components/WebContent/META-INF/MANIFEST.MF b/components/basys.components/basyx.components.lib/WebContent/META-INF/MANIFEST.MF
similarity index 100%
rename from components/basys.components/WebContent/META-INF/MANIFEST.MF
rename to components/basys.components/basyx.components.lib/WebContent/META-INF/MANIFEST.MF
diff --git a/components/basys.components/WebContent/WEB-INF/config/cfgprovider/samplecfg.properties b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/cfgprovider/samplecfg.properties
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/cfgprovider/samplecfg.properties
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/cfgprovider/samplecfg.properties
diff --git a/components/basys.components/WebContent/WEB-INF/config/directory/cfgdirectory/directory.properties b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/directory/cfgdirectory/directory.properties
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/directory/cfgdirectory/directory.properties
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/directory/cfgdirectory/directory.properties
diff --git a/components/basys.components/WebContent/WEB-INF/config/excelprovider/excelcfg.properties b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/excelprovider/excelcfg.properties
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/excelprovider/excelcfg.properties
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/excelprovider/excelcfg.properties
diff --git a/components/basys.components/WebContent/WEB-INF/config/excelprovider/sampledata.xlsx b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/excelprovider/sampledata.xlsx
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/excelprovider/sampledata.xlsx
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/excelprovider/sampledata.xlsx
Binary files differ
diff --git a/components/basys.components/WebContent/WEB-INF/config/processengine/SimpleTransportProcess.bpmn20.xml b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/processengine/SimpleTransportProcess.bpmn20.xml
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/processengine/SimpleTransportProcess.bpmn20.xml
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/processengine/SimpleTransportProcess.bpmn20.xml
diff --git a/components/basys.components/WebContent/WEB-INF/config/rawcfgprovider/samplecfg.properties b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/rawcfgprovider/samplecfg.properties
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/rawcfgprovider/samplecfg.properties
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/rawcfgprovider/samplecfg.properties
diff --git a/components/basys.components/WebContent/WEB-INF/config/sqlprovider/sampledb.properties b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/sqlprovider/sampledb.properties
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/sqlprovider/sampledb.properties
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/sqlprovider/sampledb.properties
diff --git a/components/basys.components/WebContent/WEB-INF/config/xmlqueryprovider/database.xml b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/xmlqueryprovider/database.xml
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/xmlqueryprovider/database.xml
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/xmlqueryprovider/database.xml
diff --git a/components/basys.components/WebContent/WEB-INF/config/xmlqueryprovider/heavySensorNames.xq b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/xmlqueryprovider/heavySensorNames.xq
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/xmlqueryprovider/heavySensorNames.xq
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/xmlqueryprovider/heavySensorNames.xq
diff --git a/components/basys.components/WebContent/WEB-INF/config/xmlqueryprovider/xmlqueryprovider.properties b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/xmlqueryprovider/xmlqueryprovider.properties
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/config/xmlqueryprovider/xmlqueryprovider.properties
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/xmlqueryprovider/xmlqueryprovider.properties
diff --git a/components/basys.components/WebContent/WEB-INF/web.xml b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/web.xml
similarity index 100%
rename from components/basys.components/WebContent/WEB-INF/web.xml
rename to components/basys.components/basyx.components.lib/WebContent/WEB-INF/web.xml
diff --git a/components/basys.components/basyx.components.lib/pom.xml b/components/basys.components/basyx.components.lib/pom.xml
new file mode 100644
index 0000000..9d033af
--- /dev/null
+++ b/components/basys.components/basyx.components.lib/pom.xml
@@ -0,0 +1,216 @@
+	<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.eclipse.basyx</groupId>
+		<artifactId>basyx.components</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+    </parent>
+	
+	<artifactId>basyx.components.lib</artifactId>
+	<name>BaSyx Components Library</name>
+	
+	<packaging>jar</packaging>
+	
+ 	<repositories>
+		<repository>
+			<id>mule</id>
+			<name>Mule Repository</name>
+			<url>https://repository.mulesoft.org/nexus/content/groups/public/</url>
+			<layout>default</layout>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+	</repositories>
+	
+	<!-- Define additional plugins that are not included by default -->
+	<build>
+		<plugins>
+			<!-- Attach sources to jar file -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-source-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+	
+	<dependencies>
+		<!-- PostgreSQL SQL Database -->
+		<dependency>
+			<groupId>org.postgresql</groupId>
+			<artifactId>postgresql</artifactId>
+			<version>42.2.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.enterprise</groupId>
+			<artifactId>cdi-api</artifactId>
+			<version>2.0</version>
+			<scope>provided</scope>
+		</dependency>
+		
+		<dependency>
+			<groupId>javax.el</groupId>
+			<artifactId>el-api</artifactId>
+			<version>2.2</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>javax.inject</groupId>
+			<artifactId>javax.inject</artifactId>
+			<version>1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.json</groupId>
+			<artifactId>javax.json-api</artifactId>
+			<version>1.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.xml.bind</groupId>
+			<artifactId>jaxb-api</artifactId>
+			<version>2.3.0</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>javax.annotation</groupId>
+			<artifactId>javax.annotation-api</artifactId>
+			<version>1.3.2</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>javax.persistence</groupId>
+			<artifactId>persistence-api</artifactId>
+			<version>1.0.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.validation</groupId>
+			<artifactId>validation-api</artifactId>
+			<version>2.0.1.Final</version>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+			<version>3.1.0</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javassist</groupId>
+			<artifactId>javassist</artifactId>
+			<version>3.12.1.GA</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.jboss.spec.javax.interceptor</groupId>
+			<artifactId>jboss-interceptors-api_1.1_spec</artifactId>
+			<version>1.0.1.Final</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.core</artifactId>
+			<version>4.2.0</version>
+			<scope>provided</scope>
+		</dependency>
+	
+		<dependency>
+			<groupId>org.glassfish.hk2</groupId>
+			<artifactId>hk2-api</artifactId>
+			<version>2.5.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.glassfish.hk2</groupId>
+			<artifactId>osgi-resource-locator</artifactId>
+			<version>1.0.1</version>
+		</dependency>
+	
+		<dependency>
+			<groupId>org.glassfish.hk2.external</groupId>
+			<artifactId>aopalliance-repackaged</artifactId>
+			<version>2.5.0-b42</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse</groupId>
+			<artifactId>yasson</artifactId>
+			<version>1.0.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.activiti</groupId>
+			<artifactId>activiti-engine</artifactId>
+			<version>6.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.activiti</groupId>
+			<artifactId>activiti-bpmn-model</artifactId>
+			<version>6.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.activiti</groupId>
+			<artifactId>activiti-bpmn-layout</artifactId>
+			<version>6.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>commons-io</groupId>
+			<artifactId>commons-io</artifactId>
+			<version>2.4</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.h2database</groupId>
+			<artifactId>h2</artifactId>
+			<version>1.4.197</version>
+		</dependency>
+
+		<!-- Add from local repository because jar cannot be found on maven central -->
+		<dependency>
+		    <groupId>javax.xml.xquery</groupId>
+		    <artifactId>xqj-api</artifactId>
+		    <version>1.0</version>
+		</dependency>
+
+
+		<!-- Add from external repository because jar cannot be found on maven central -->
+		<dependency>
+			<groupId>net.sf.saxon</groupId>
+			<artifactId>saxon-xqj</artifactId>
+			<version>8.9.0.4</version>
+		</dependency>
+
+		<dependency>
+			<groupId>net.sf.saxon</groupId>
+			<artifactId>Saxon-HE</artifactId>
+			<version>9.5.1-5</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+			<version>2.8.5</version>
+		</dependency>
+
+		<!-- Add BaSys SDK -->
+		<dependency>
+			<groupId>org.eclipse.basyx</groupId>
+			<artifactId>basyx.sdk</artifactId>
+		</dependency>
+		
+		<!-- Adds additional classes of the BaSys SDK for tests -->
+		<dependency>
+			<groupId>org.eclipse.basyx</groupId>
+			<artifactId>basyx.sdk</artifactId>
+			<classifier>tests</classifier>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/cfgprovider/CFGSubModelProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/cfgprovider/CFGSubModelProvider.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/cfgprovider/CFGSubModelProvider.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/cfgprovider/CFGSubModelProvider.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/cfgprovider/RawCFGSubModelProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/cfgprovider/RawCFGSubModelProvider.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/cfgprovider/RawCFGSubModelProvider.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/cfgprovider/RawCFGSubModelProvider.java
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxConfiguration.java
new file mode 100644
index 0000000..b9b3a81
--- /dev/null
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxConfiguration.java
@@ -0,0 +1,77 @@
+package org.eclipse.basyx.components.configuration;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+import java.util.Properties;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BaSyxConfiguration {
+	private static Logger logger = LoggerFactory.getLogger(BaSyxConfiguration.class);
+
+	// Properties in this configuration
+	private Map<String, String> values;
+
+	/**
+	 * Constructor that takes the configuration's default values.
+	 * All the keys in the map are the name of the properties that are stored and loaded in this configuration.
+	 */
+	public BaSyxConfiguration(Map<String, String> defaultValues) {
+		this.values = defaultValues;
+	}
+
+	/**
+	 * Load the configuration from a path relative to the current resource folder
+	 * 
+	 * @param relativeResourcePath Path to the resource in the resource folder. In a maven project, the resources
+	 *                             are located at /src/main/resources by default.
+	 */
+	public void loadFromResource(String relativeResourcePath) {
+		ClassLoader classLoader = BaSyxContextConfiguration.class.getClassLoader();
+		try (InputStream input = classLoader.getResourceAsStream(relativeResourcePath)) {
+			// Try to load property file for servlet configuration
+			logger.info("Loading properties from file '" + relativeResourcePath + "'");
+
+			Properties properties = new Properties();
+			properties.load(input);
+			loadFromProperties(properties);
+		} catch (IOException e) {
+			logger.error("No properties found, using default values", e);
+		}
+	}
+
+	/**
+	 * Load the configuration directly from properties.
+	 */
+	public void loadFromProperties(Properties properties) {
+		for (Object property : properties.keySet()) {
+			String propertyName = (String) property;
+			String loaded = properties.getProperty(propertyName);
+			if (values.containsKey(propertyName)) {
+				logger.info(propertyName + ": '" + loaded + "'");
+			} else {
+				logger.debug(propertyName + ": '" + loaded + "'");
+			}
+			values.put(propertyName, loaded);
+		}
+	}
+
+	/**
+	 * Sets a property, if it is contained in this configuration
+	 * 
+	 * @param name  The name of the property
+	 * @param value The new value of the property
+	 */
+	public void setProperty(String name, String value) {
+		values.put(name, value);
+	}
+
+	/**
+	 * Queries a property
+	 */
+	public String getProperty(String name) {
+		return values.get(name);
+	}
+}
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxContextConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxContextConfiguration.java
new file mode 100644
index 0000000..4cc698b
--- /dev/null
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxContextConfiguration.java
@@ -0,0 +1,62 @@
+package org.eclipse.basyx.components.configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Represents a BaSyx http servlet configuration for a BaSyxContext,
+ * that can be loaded from a properties file.
+ * 
+ * @author espen
+ *
+ */
+public class BaSyxContextConfiguration extends BaSyxConfiguration {
+	// Default BaSyx Context configuration
+	public static final String DEFAULT_CONTEXTPATH = "/basys.sdk";
+	public static final String DEFAULT_DOCBASE = System.getProperty("java.io.tmpdir");
+	public static final String DEFAULT_HOSTNAME = "localhost";
+	public static final int DEFAULT_PORT = 4000;
+
+	private static final String CONTEXTPATH = "contextPath";
+	private static final String DOCBASE = "contextDocPath";
+	private static final String HOSTNAME = "contextHostname";
+	private static final String PORT = "contextPort";
+
+	// The default path for the context properties file
+	public static final String DEFAULT_CONFIG_PATH = "context.properties";
+
+	public static Map<String, String> getDefaultProperties() {
+		Map<String, String> defaultProps = new HashMap<>();
+		defaultProps.put(CONTEXTPATH, DEFAULT_CONTEXTPATH);
+		System.out.println("DEFAULT " + DOCBASE + " - " + DEFAULT_DOCBASE);
+		defaultProps.put(DOCBASE, DEFAULT_DOCBASE);
+		defaultProps.put(HOSTNAME, DEFAULT_HOSTNAME);
+		defaultProps.put(PORT, Integer.toString(DEFAULT_PORT));
+		return defaultProps;
+	}
+
+	public BaSyxContextConfiguration() {
+		super(getDefaultProperties());
+	}
+
+	public BaSyxContextConfiguration(Map<String, String> values) {
+		super(values);
+	}
+
+	public String getContextPath() {
+		return getProperty(CONTEXTPATH);
+	}
+
+	public String getDocBasePath() {
+		System.out.println("DEFAULT " + DOCBASE + " -- " + getProperty(DOCBASE));
+		return getProperty(DOCBASE);
+	}
+
+	public String getHostname() {
+		return getProperty(HOSTNAME);
+	}
+
+	public int getPort() {
+		return Integer.parseInt(getProperty(PORT));
+	}
+}
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxDockerConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxDockerConfiguration.java
new file mode 100644
index 0000000..72c4cca
--- /dev/null
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxDockerConfiguration.java
@@ -0,0 +1,60 @@
+package org.eclipse.basyx.components.configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Represents a BaSyx docker configuration for a docker environment.
+ * 
+ * @author espen
+ *
+ */
+public class BaSyxDockerConfiguration extends BaSyxConfiguration {
+	// Default BaSyx Context configuration
+	private static final int DEFAULT_HOSTPORT = 8082;
+	private static final int DEFAULT_CONTAINERPORT = 4000;
+	private static final String DEFAULT_IMAGENAME = "basys/component";
+	private static final String DEFAULT_CONTAINERNAME = "component";
+
+	private static final String HOSTPORT = "BASYX_HOST_PORT";
+	private static final String CONTAINERPORT = "BASYX_CONTAINER_PORT";
+	private static final String IMAGENAME = "BASYX_IMAGE_NAME";
+	private static final String CONTAINERNAME = "BASYX_CONTAINER_NAME";
+
+	// The default path for the context properties file
+	public static final String DEFAULT_CONFIG_PATH = ".env";
+
+	public static Map<String, String> getDefaultProperties() {
+		Map<String, String> defaultProps = new HashMap<>();
+		defaultProps.put(HOSTPORT, Integer.toString(DEFAULT_HOSTPORT));
+		defaultProps.put(CONTAINERPORT, Integer.toString(DEFAULT_CONTAINERPORT));
+		defaultProps.put(IMAGENAME, DEFAULT_IMAGENAME);
+		defaultProps.put(CONTAINERNAME, DEFAULT_CONTAINERNAME);
+
+		return defaultProps;
+	}
+
+	public BaSyxDockerConfiguration() {
+		super(getDefaultProperties());
+	}
+
+	public BaSyxDockerConfiguration(Map<String, String> values) {
+		super(values);
+	}
+
+	public int getHostPort() {
+		return Integer.parseInt(getProperty(HOSTPORT));
+	}
+
+	public int getContainerPort() {
+		return Integer.parseInt(getProperty(CONTAINERPORT));
+	}
+
+	public String getImageName() {
+		return getProperty(IMAGENAME);
+	}
+
+	public String getContainerName() {
+		return getProperty(CONTAINERNAME);
+	}
+}
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxSQLConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxSQLConfiguration.java
new file mode 100644
index 0000000..1b31a36
--- /dev/null
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxSQLConfiguration.java
@@ -0,0 +1,67 @@
+package org.eclipse.basyx.components.configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Represents a BaSyx sql configuration for a sql connection.
+ * 
+ * @author espen
+ *
+ */
+public class BaSyxSQLConfiguration extends BaSyxConfiguration {
+	// Default BaSyx SQL configuration
+	private static final String DEFAULT_USER = "postgres";
+	private static final String DEFAULT_PASS = "admin";
+	private static final String DEFAULT_PATH = "//localhost/basyx-directory?";
+	private static final String DEFAULT_DRV = "org.postgresql.Driver";
+	private static final String DEFAULT_PREFIX = "jdbc:postgresql:";
+
+	private static final String USER = "dbuser";
+	private static final String PASS = "dbpass";
+	private static final String PATH = "dburl";
+	private static final String DRV = "sqlDriver";
+	private static final String PREFIX = "sqlPrefix";
+
+	// The default path for the context properties file
+	public static final String DEFAULT_CONFIG_PATH = "sql.properties";
+
+	public static Map<String, String> getDefaultProperties() {
+		Map<String, String> defaultProps = new HashMap<>();
+		defaultProps.put(USER, DEFAULT_USER);
+		defaultProps.put(PASS, DEFAULT_PASS);
+		defaultProps.put(PATH, DEFAULT_PATH);
+		defaultProps.put(DRV, DEFAULT_DRV);
+		defaultProps.put(PREFIX, DEFAULT_PREFIX);
+
+		return defaultProps;
+	}
+
+	public BaSyxSQLConfiguration(Map<String, String> values) {
+		super(values);
+	}
+
+	public BaSyxSQLConfiguration() {
+		super(getDefaultProperties());
+	}
+
+	public String getUser() {
+		return getProperty(USER);
+	}
+
+	public String getPass() {
+		return getProperty(PASS);
+	}
+
+	public String getPath() {
+		return getProperty(PATH);
+	}
+
+	public String getDrv() {
+		return getProperty(DRV);
+	}
+
+	public String getPrefix() {
+		return getProperty(PREFIX);
+	}
+}
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/CFGBaSyxConnection.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/CFGBaSyxConnection.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/CFGBaSyxConnection.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/CFGBaSyxConnection.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/CFGBaSyxProtocolType.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/CFGBaSyxProtocolType.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/CFGBaSyxProtocolType.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/CFGBaSyxProtocolType.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/ConfigurableComponent.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/ConfigurableComponent.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/ConfigurableComponent.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/ConfigurableComponent.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/ConfigurableProperty.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/ConfigurableProperty.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/ConfigurableProperty.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/ConfigurableProperty.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxConfigurationBuilder.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxConfigurationBuilder.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxConfigurationBuilder.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxConfigurationBuilder.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxDeviceManagerConfigurationBuilder.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxDeviceManagerConfigurationBuilder.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxDeviceManagerConfigurationBuilder.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxDeviceManagerConfigurationBuilder.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxServiceConfigurationBuilder.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxServiceConfigurationBuilder.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxServiceConfigurationBuilder.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/builder/BaSyxServiceConfigurationBuilder.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/exception/InsufficientConfigurationDataException.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/exception/InsufficientConfigurationDataException.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/configuration/exception/InsufficientConfigurationDataException.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/exception/InsufficientConfigurationDataException.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/device/BaseDevice.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/BaseDevice.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/device/BaseDevice.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/BaseDevice.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/device/BaseSmartDevice.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/BaseSmartDevice.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/device/BaseSmartDevice.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/BaseSmartDevice.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/device/BaseTCPControllableDeviceAdapter.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/BaseTCPControllableDeviceAdapter.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/device/BaseTCPControllableDeviceAdapter.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/BaseTCPControllableDeviceAdapter.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/device/BaseTCPDeviceAdapter.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/BaseTCPDeviceAdapter.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/device/BaseTCPDeviceAdapter.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/BaseTCPDeviceAdapter.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/device/IBaSysNativeDeviceStatus.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/IBaSysNativeDeviceStatus.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/device/IBaSysNativeDeviceStatus.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/device/IBaSysNativeDeviceStatus.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/devicemanager/DeviceManagerComponent.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/devicemanager/DeviceManagerComponent.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/devicemanager/DeviceManagerComponent.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/devicemanager/DeviceManagerComponent.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/devicemanager/TCPControllableDeviceManagerComponent.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/devicemanager/TCPControllableDeviceManagerComponent.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/devicemanager/TCPControllableDeviceManagerComponent.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/devicemanager/TCPControllableDeviceManagerComponent.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/devicemanager/TCPDeviceManagerComponent.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/devicemanager/TCPDeviceManagerComponent.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/devicemanager/TCPDeviceManagerComponent.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/devicemanager/TCPDeviceManagerComponent.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/devicemanager/config/DeviceManagerConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/devicemanager/config/DeviceManagerConfiguration.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/devicemanager/config/DeviceManagerConfiguration.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/devicemanager/config/DeviceManagerConfiguration.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/directory/AASDirectoryEntry.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/directory/AASDirectoryEntry.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/directory/AASDirectoryEntry.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/directory/AASDirectoryEntry.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/directory/exception/AASDirectoryFormatException.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/directory/exception/AASDirectoryFormatException.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/directory/exception/AASDirectoryFormatException.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/directory/exception/AASDirectoryFormatException.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/directory/exception/AASDirectoryProviderException.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/directory/exception/AASDirectoryProviderException.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/directory/exception/AASDirectoryProviderException.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/directory/exception/AASDirectoryProviderException.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/netcomm/NetworkReceiver.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/netcomm/NetworkReceiver.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/netcomm/NetworkReceiver.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/netcomm/NetworkReceiver.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/netcomm/TCPClient.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/netcomm/TCPClient.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/netcomm/TCPClient.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/netcomm/TCPClient.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/netcomm/TCPCommunicator.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/netcomm/TCPCommunicator.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/netcomm/TCPCommunicator.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/netcomm/TCPCommunicator.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/netcomm/TCPServer.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/netcomm/TCPServer.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/netcomm/TCPServer.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/netcomm/TCPServer.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/processengine/connector/DeviceServiceDelegate.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/processengine/connector/DeviceServiceDelegate.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/processengine/connector/DeviceServiceDelegate.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/processengine/connector/DeviceServiceDelegate.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/processengine/connector/DeviceServiceExecutor.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/processengine/connector/DeviceServiceExecutor.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/processengine/connector/DeviceServiceExecutor.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/processengine/connector/DeviceServiceExecutor.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/processengine/connector/IDeviceServiceExecutor.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/processengine/connector/IDeviceServiceExecutor.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/processengine/connector/IDeviceServiceExecutor.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/processengine/connector/IDeviceServiceExecutor.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/service/BaseBaSyxService.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/service/BaseBaSyxService.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/service/BaseBaSyxService.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/service/BaseBaSyxService.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/StaticCFGDirectoryServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/registry/StaticCFGDirectoryServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/StaticCFGDirectoryServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/registry/StaticCFGDirectoryServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/SQLSubModelProviderServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/SQLSubModelProviderServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/SQLSubModelProviderServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/SQLSubModelProviderServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/SubmodelServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/SubmodelServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/SubmodelServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/SubmodelServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/XMLXQueryServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/XMLXQueryServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/XMLXQueryServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/XMLXQueryServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/AbstractCFGSubModelProviderServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/AbstractCFGSubModelProviderServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/AbstractCFGSubModelProviderServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/AbstractCFGSubModelProviderServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/CFGSubModelProviderServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/CFGSubModelProviderServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/CFGSubModelProviderServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/CFGSubModelProviderServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/RawCFGSubModelProviderServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/RawCFGSubModelProviderServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/RawCFGSubModelProviderServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/RawCFGSubModelProviderServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/vab/VABLambdaServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/vab/VABLambdaServlet.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/vab/VABLambdaServlet.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/vab/VABLambdaServlet.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLPreconfiguredSubModelProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLPreconfiguredSubModelProvider.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLPreconfiguredSubModelProvider.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLPreconfiguredSubModelProvider.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLProviderTestOLD.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLProviderTestOLD.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLProviderTestOLD.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLProviderTestOLD.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLSubModelProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLSubModelProvider.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLSubModelProvider.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLSubModelProvider.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/driver/ISQLDriver.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/driver/ISQLDriver.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/driver/ISQLDriver.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/driver/ISQLDriver.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/driver/SQLDriver.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/driver/SQLDriver.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/driver/SQLDriver.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/driver/SQLDriver.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLOperation.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLOperation.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLOperation.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLOperation.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLQuery.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLQuery.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLQuery.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLQuery.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLRunner.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLRunner.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLRunner.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLRunner.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLUpdate.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLUpdate.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLUpdate.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/query/DynamicSQLUpdate.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/OperationDefinition.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/OperationDefinition.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/OperationDefinition.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/OperationDefinition.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/Parameter.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/Parameter.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/Parameter.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/Parameter.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/ResultFilter.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/ResultFilter.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/ResultFilter.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/tools/propertyfile/opdef/ResultFilter.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/xmlxqueryprovider/OperationNotImplementedException.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/xmlxqueryprovider/OperationNotImplementedException.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/xmlxqueryprovider/OperationNotImplementedException.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/xmlxqueryprovider/OperationNotImplementedException.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/xmlxqueryprovider/XMLXQuerySubModelProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/xmlxqueryprovider/XMLXQuerySubModelProvider.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/xmlxqueryprovider/XMLXQuerySubModelProvider.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/xmlxqueryprovider/XMLXQuerySubModelProvider.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ControlComponent.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ControlComponent.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ControlComponent.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ControlComponent.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ControlComponentChangeListener.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ControlComponentChangeListener.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ControlComponentChangeListener.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ControlComponentChangeListener.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionMode.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionMode.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionMode.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionMode.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionOrder.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionOrder.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionOrder.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionOrder.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionState.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionState.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionState.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/ExecutionState.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/OccupationState.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/OccupationState.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/OccupationState.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/OccupationState.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/SimpleControlComponent.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/SimpleControlComponent.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/SimpleControlComponent.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/SimpleControlComponent.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/SimpleProxyControlComponent.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/SimpleProxyControlComponent.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/controlcomponent/SimpleProxyControlComponent.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/controlcomponent/SimpleProxyControlComponent.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/BaSysProcessModel.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/BaSysProcessModel.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/BaSysProcessModel.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/BaSysProcessModel.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/SequentialProcess.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/SequentialProcess.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/SequentialProcess.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/SequentialProcess.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/SequentialProcessNode.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/SequentialProcessNode.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/SequentialProcessNode.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/SequentialProcessNode.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/Device.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/Device.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/Device.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/Device.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/DeviceIF.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/DeviceIF.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/DeviceIF.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/DeviceIF.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/QueueDevice.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/QueueDevice.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/QueueDevice.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/QueueDevice.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/SequentialDevice.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/SequentialDevice.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/SequentialDevice.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/SequentialDevice.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/SortOutDevice.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/SortOutDevice.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/SortOutDevice.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/device/SortOutDevice.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/queue/BoundedQueue.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/queue/BoundedQueue.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/queue/BoundedQueue.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/queue/BoundedQueue.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/queue/QueueSizeExceededException.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/queue/QueueSizeExceededException.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/queue/QueueSizeExceededException.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/queue/QueueSizeExceededException.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductAAS.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductAAS.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductAAS.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductAAS.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductQualitySubmodel.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductQualitySubmodel.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductQualitySubmodel.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductQualitySubmodel.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/ActiveModel.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/ActiveModel.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/ActiveModel.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/ActiveModel.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/HTTPGetter.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/HTTPGetter.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/HTTPGetter.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/HTTPGetter.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/HTTPSupplier.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/HTTPSupplier.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/HTTPSupplier.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/HTTPSupplier.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/VABModelTask.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/VABModelTask.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/VABModelTask.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/VABModelTask.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/VABModelTaskGroup.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/VABModelTaskGroup.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/aas/active/VABModelTaskGroup.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/aas/active/VABModelTaskGroup.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLCollection.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLCollection.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLCollection.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLCollection.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLConnector.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLConnector.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLConnector.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLConnector.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLMap.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLMap.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLMap.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLMap.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLProxy.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLProxy.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLProxy.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLProxy.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLRootElement.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLRootElement.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLRootElement.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLRootElement.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLTableRow.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLTableRow.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLTableRow.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/SQLTableRow.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/exception/UnknownElementTypeException.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/exception/UnknownElementTypeException.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/sqlproxy/exception/UnknownElementTypeException.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/sqlproxy/exception/UnknownElementTypeException.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceJSONClient.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceJSONClient.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceJSONClient.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceJSONClient.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceRawClient.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceRawClient.java
similarity index 100%
rename from components/basys.components/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceRawClient.java
rename to components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/tools/webserviceclient/WebServiceRawClient.java
diff --git a/components/basys.components/src/main/resources/logback.xml b/components/basys.components/basyx.components.lib/src/main/resources/logback.xml
similarity index 100%
rename from components/basys.components/src/main/resources/logback.xml
rename to components/basys.components/basyx.components.lib/src/main/resources/logback.xml
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProvider.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProvider.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProvider.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProvider.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderPropertyMetaData.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderPropertyMetaData.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderPropertyMetaData.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderPropertyMetaData.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderSubmodelMetaData.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderSubmodelMetaData.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderSubmodelMetaData.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderSubmodelMetaData.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/file/TestAASDirectoryEntry.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/directory/file/TestAASDirectoryEntry.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/file/TestAASDirectoryEntry.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/directory/file/TestAASDirectoryEntry.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/file/TestStaticDirectoryFileProvider.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/directory/file/TestStaticDirectoryFileProvider.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/file/TestStaticDirectoryFileProvider.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/directory/file/TestStaticDirectoryFileProvider.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/file/TestStaticDirectoryFileProviderExceptions.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/directory/file/TestStaticDirectoryFileProviderExceptions.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/directory/file/TestStaticDirectoryFileProviderExceptions.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/directory/file/TestStaticDirectoryFileProviderExceptions.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/models/controlcomponent/TestSimpleControlComponent.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/models/controlcomponent/TestSimpleControlComponent.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/models/controlcomponent/TestSimpleControlComponent.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/models/controlcomponent/TestSimpleControlComponent.java
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/TestSequentialProcessModel.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/models/manufacturing/process/TestSequentialProcessModel.java
similarity index 94%
rename from components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/TestSequentialProcessModel.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/models/manufacturing/process/TestSequentialProcessModel.java
index 9cce57a..0f2b11d 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/model/TestSequentialProcessModel.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/models/manufacturing/process/TestSequentialProcessModel.java
@@ -1,9 +1,11 @@
-package org.eclipse.basyx.models.manufacturing.process.model;
+package org.eclipse.basyx.regression.models.manufacturing.process;
 
 import java.util.Collection;
 import java.util.NoSuchElementException;
 
 import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
+import org.eclipse.basyx.models.manufacturing.process.model.BaSysProcessModel;
+import org.eclipse.basyx.models.manufacturing.process.model.SequentialProcess;
 import org.junit.Test;
 
 
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/processengineconnector/DynamicActivitiProcessTest.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/DynamicActivitiProcessTest.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/processengineconnector/DynamicActivitiProcessTest.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/DynamicActivitiProcessTest.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestAASServicecall.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestAASServicecall.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestAASServicecall.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestAASServicecall.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestJavaDelegate.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestJavaDelegate.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestJavaDelegate.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestJavaDelegate.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestTransportProcess_ConfigureEngineProgrammatically.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestTransportProcess_ConfigureEngineProgrammatically.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestTransportProcess_ConfigureEngineProgrammatically.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestTransportProcess_ConfigureEngineProgrammatically.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAAS.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAAS.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAAS.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAAS.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAASNewModel.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAASNewModel.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAASNewModel.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAASNewModel.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderComplexType.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderComplexType.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderComplexType.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderComplexType.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderSimpleValues.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderSimpleValues.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderSimpleValues.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderSimpleValues.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlprovider/SQLInvocationsTest.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlprovider/SQLInvocationsTest.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlprovider/SQLInvocationsTest.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlprovider/SQLInvocationsTest.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlprovider/SQLQueriesTest.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlprovider/SQLQueriesTest.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlprovider/SQLQueriesTest.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlprovider/SQLQueriesTest.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLConfig.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLConfig.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLConfig.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLConfig.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionSetOperations.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionSetOperations.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionSetOperations.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionSetOperations.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionSimple.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionSimple.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionSimple.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionSimple.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionTypes.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionTypes.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionTypes.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestCollectionTypes.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapArrayTypes.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapArrayTypes.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapArrayTypes.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapArrayTypes.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSetOperations.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSetOperations.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSetOperations.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSetOperations.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSimple.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSimple.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSimple.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSimple.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSimpleTypes.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSimpleTypes.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSimpleTypes.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestMapSimpleTypes.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestRootElement.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestRootElement.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestRootElement.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestRootElement.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestRootElementSQLElements.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestRootElementSQLElements.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestRootElementSQLElements.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/sqlproxy/SQLProxyTestRootElementSQLElements.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/directory/ComponentsTestsuiteDirectory.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/directory/ComponentsTestsuiteDirectory.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/directory/ComponentsTestsuiteDirectory.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/directory/ComponentsTestsuiteDirectory.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/aas/DeviceAdministrationShellFactory.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/aas/DeviceAdministrationShellFactory.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/aas/DeviceAdministrationShellFactory.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/aas/DeviceAdministrationShellFactory.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/BPMNEngineStub.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/BPMNEngineStub.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/BPMNEngineStub.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/BPMNEngineStub.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/BPMNModelFactory.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/BPMNModelFactory.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/BPMNModelFactory.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/BPMNModelFactory.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/Coilcar.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/Coilcar.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/Coilcar.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/Coilcar.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/CoilcarStub.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/CoilcarStub.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/CoilcarStub.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/CoilcarStub.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/DeviceServiceExecutorStub.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/DeviceServiceExecutorStub.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/DeviceServiceExecutorStub.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/DeviceServiceExecutorStub.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/ICoilcar.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/ICoilcar.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/ICoilcar.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/stubs/ICoilcar.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java
similarity index 89%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java
index 4583683..1920097 100644
--- a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java
@@ -1,6 +1,5 @@
 package org.eclipse.basyx.regression.support.server.context;
 
-import org.eclipse.basyx.components.servlet.registry.SQLRegistryServlet;
 import org.eclipse.basyx.components.servlet.registry.StaticCFGDirectoryServlet;
 import org.eclipse.basyx.components.servlet.submodel.SQLSubModelProviderServlet;
 import org.eclipse.basyx.components.servlet.submodel.XMLXQueryServlet;
@@ -40,7 +39,6 @@
 		addServletMapping("/Testsuite/components/BaSys/1.0/provider/rawcfgsm/*",  new RawCFGSubModelProviderServlet().withParameter("config", "/WebContent/WEB-INF/config/rawcfgprovider/samplecfg.properties"));
 		addServletMapping("/Testsuite/components/BaSys/1.0/provider/xmlxquery/*", new XMLXQueryServlet().withParameter("config", "/WebContent/WEB-INF/config/xmlqueryprovider/xmlqueryprovider.properties"));
 		addServletMapping("/Testsuite/Directory/CFGFile/*",                       new StaticCFGDirectoryServlet().withParameter("config", "/WebContent/WEB-INF/config/directory/cfgdirectory/directory.properties"));
-		addServletMapping("/Testsuite/Directory/SQL/*",                           new SQLRegistryServlet().withParameter("config", "/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties"));
 		addServletMapping("/Testsuite/Processengine/coilcar/*",                   new CoilcarAASServlet());
 	}
 }
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/xqueryprovider/XQueryProviderQueries.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/xqueryprovider/XQueryProviderQueries.java
similarity index 100%
rename from components/basys.components/src/test/java/org/eclipse/basyx/regression/xqueryprovider/XQueryProviderQueries.java
rename to components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/xqueryprovider/XQueryProviderQueries.java
diff --git a/components/basys.components/pom.xml b/components/basys.components/pom.xml
index cdd071b..79515eb 100644
--- a/components/basys.components/pom.xml
+++ b/components/basys.components/pom.xml
@@ -1,305 +1,135 @@
-<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>
-  <groupId>org.eclipse.basyx</groupId>
-  <artifactId>basyx.components</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
-  <packaging>jar</packaging>
-  <name>BaSyx Components</name>
-  
-  
-  	<properties>
-  		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-	</properties>
-
- 	<repositories>
-		<repository>
-			<id>mule</id>
-			<name>Mule Repository</name>
-			<url>https://repository.mulesoft.org/nexus/content/groups/public/</url>
-			<layout>default</layout>
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-		</repository>
-	</repositories>
-
-   <build>
-    <sourceDirectory>src/main/java</sourceDirectory>
-    <testSourceDirectory>src/test/java</testSourceDirectory>
-    
-    <plugins>
-      <plugin>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.7.0</version>
-        <configuration>
-          <source>1.8</source>
-          <target>1.8</target>
-        </configuration>
-      </plugin>
-      
-      <!-- Attach sources to jar file -->
-      <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-source-plugin</artifactId>
-            <version>3.1.0</version>
-            <executions>
-                   <execution>
-                          <id>attach-sources</id>
-                          <goals>
-                                 <goal>jar</goal>
-                          </goals>
-                   </execution>
-            </executions>
-      </plugin> 
-      
-		<!-- Generate separate jar for tests and exclude logback.xml from generated jars -->
-		<plugin>
-			<groupId>org.apache.maven.plugins</groupId>
-			<artifactId>maven-jar-plugin</artifactId>
-			<version>3.1.1</version>
-			<configuration>
-				<excludes>
-					<exclude>**/logback.xml</exclude>
-				</excludes>
-			</configuration>
-			<executions>
-				<execution>
-					<goals>
-						<goal>test-jar</goal>
-					</goals>
-				</execution>
-			</executions>
-		</plugin>
-      
-	 <plugin>
-        <artifactId>maven-war-plugin</artifactId>
-        <version>3.0.0</version>
-    <!--     <configuration>
-          <warSourceDirectory>WebContent</warSourceDirectory>
-        </configuration> -->
-      </plugin> 
-      
-      <plugin>
-         <groupId>org.apache.maven.plugins</groupId>
-         <artifactId>maven-surefire-plugin</artifactId>
-         <!-- <version>2.12.1</version> -->
-         <version>2.4.2</version>
-          <configuration>
-    		<excludes>
-      			<exclude>**/*HTTP*</exclude>
-      			<exclude>**/*TCP*</exclude>
-    		</excludes>
-  		 </configuration>
-       </plugin>
-       
-       <plugin>
-		  <groupId>org.apache.maven.plugins</groupId>
-		  <artifactId>maven-failsafe-plugin</artifactId>
-		  <version>2.12.4</version>
-		  <configuration>
-		    <includes>
-		      <include>**/*HTTP*</include>
-		      <include>**/*TCP*</include>
-		    </includes>
-		  </configuration>
-		  <executions>
-		    <execution>
-		      <goals>
-		        <goal>integration-test</goal>
-		        <goal>verify</goal>
-		      </goals>
-		    </execution>
-		  </executions>
-		</plugin>
-    </plugins>    
-  </build>
-  
-  <dependencies>
-	 <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
-		<dependency>
-			<groupId>org.postgresql</groupId>
-			<artifactId>postgresql</artifactId>
-			<version>42.2.2</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/org.glassfish.hk2.external/aopalliance-repackaged -->
-		<dependency>
-			<groupId>org.glassfish.hk2.external</groupId>
-			<artifactId>aopalliance-repackaged</artifactId>
-			<version>2.5.0-b42</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.enterprise/cdi-api -->
-		<dependency>
-			<groupId>javax.enterprise</groupId>
-			<artifactId>cdi-api</artifactId>
-			<version>2.0</version>
-			<scope>provided</scope>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.el/el-api -->
-		<dependency>
-			<groupId>javax.el</groupId>
-			<artifactId>el-api</artifactId>
-			<version>2.2</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/org.glassfish.hk2/hk2-api -->
-		<dependency>
-			<groupId>org.glassfish.hk2</groupId>
-			<artifactId>hk2-api</artifactId>
-			<version>2.5.0</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javassist/javassist -->
-		<dependency>
-			<groupId>javassist</groupId>
-			<artifactId>javassist</artifactId>
-			<version>3.12.1.GA</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
-		<!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
-		<dependency>
-			<groupId>javax.inject</groupId>
-			<artifactId>javax.inject</artifactId>
-			<version>1</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.json/javax.json-api -->
-		<dependency>
-			<groupId>javax.json</groupId>
-			<artifactId>javax.json-api</artifactId>
-			<version>1.0</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
-		<dependency>
-			<groupId>javax.xml.bind</groupId>
-			<artifactId>jaxb-api</artifactId>
-			<version>2.3.0</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/org.jboss.spec.javax.interceptor/jboss-interceptors-api_1.1_spec -->
-		<dependency>
-			<groupId>org.jboss.spec.javax.interceptor</groupId>
-			<artifactId>jboss-interceptors-api_1.1_spec</artifactId>
-			<version>1.0.1.Final</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
-		<dependency>
-			<groupId>javax.annotation</groupId>
-			<artifactId>javax.annotation-api</artifactId>
-			<version>1.3.2</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/org.osgi/org.osgi.core -->
-		<dependency>
-			<groupId>org.osgi</groupId>
-			<artifactId>org.osgi.core</artifactId>
-			<version>4.2.0</version>
-			<scope>provided</scope>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/org.glassfish.hk2/osgi-resource-locator -->
-		<dependency>
-			<groupId>org.glassfish.hk2</groupId>
-			<artifactId>osgi-resource-locator</artifactId>
-			<version>1.0.1</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
-		<dependency>
-			<groupId>javax.persistence</groupId>
-			<artifactId>persistence-api</artifactId>
-			<version>1.0.2</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
-		<dependency>
-			<groupId>javax.validation</groupId>
-			<artifactId>validation-api</artifactId>
-			<version>2.0.1.Final</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
-		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>javax.servlet-api</artifactId>
-			<version>3.1.0</version>
-			<scope>provided</scope>
-		</dependency>
-
-		<!-- https://mvnrepository.com/artifact/org.eclipse/yasson -->
-		<dependency>
-			<groupId>org.eclipse</groupId>
-			<artifactId>yasson</artifactId>
-			<version>1.0.2</version>
-		</dependency>
-<!-- https://mvnrepository.com/artifact/org.activiti/activiti-engine -->
-		<dependency>
-		    <groupId>org.activiti</groupId>
-		    <artifactId>activiti-engine</artifactId>
-		    <version>6.0.0</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/org.activiti/activiti-bpmn-model -->
-		<dependency>
-		    <groupId>org.activiti</groupId>
-		    <artifactId>activiti-bpmn-model</artifactId>
-		    <version>6.0.0</version>
-		</dependency>
-		
-		<!-- https://mvnrepository.com/artifact/org.activiti/activiti-bpmn-layout -->
-		<dependency>
-		    <groupId>org.activiti</groupId>
-		    <artifactId>activiti-bpmn-layout</artifactId>
-		    <version>6.0.0</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
-		<dependency>
-		    <groupId>commons-io</groupId>
-		    <artifactId>commons-io</artifactId>
-		    <version>2.4</version>
-		</dependency>
-		<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
-		<dependency>
-		    <groupId>com.h2database</groupId>
-		    <artifactId>h2</artifactId>
-		    <version>1.4.197</version>
-		</dependency>
-
-		<!-- https://mvnrepository.com/artifact/javax.xml.xquery/xqj-api (Add from 
-			local repository because jar cannot be found on maven central -->
-		<dependency>
-			<groupId>javax.xml.xquery</groupId>
-			<artifactId>xqj-api</artifactId>
-			<version>1.0</version>
-		</dependency>
-
-		<!-- https://mvnrepository.com/artifact/net.sf.saxon/saxon-xqj -->
-		<!-- <dependency> <groupId>net.sf.saxon</groupId> <artifactId>saxon-xqj</artifactId> 
-			<version>9.x</version> </dependency> -->
-
-
-		<!-- https://mvnrepository.com/artifact/net.sf.saxon/saxon-xqj -->
-		<dependency>
-			<groupId>net.sf.saxon</groupId>
-			<artifactId>saxon-xqj</artifactId>
-			<version>8.9.0.4</version>
-		</dependency>
-
-
-		<!-- https://mvnrepository.com/artifact/net.sf.saxon/Saxon-HE -->
-		<dependency>
-			<groupId>net.sf.saxon</groupId>
-			<artifactId>Saxon-HE</artifactId>
-			<version>9.5.1-5</version>
-		</dependency>
-		<dependency>
-			<groupId>com.google.code.gson</groupId>
-			<artifactId>gson</artifactId>
-			<version>2.8.5</version>
-		</dependency>
+<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>
 	
-		<!-- Add BaSys SDK -->
+	<groupId>org.eclipse.basyx</groupId>
+	<artifactId>basyx.components</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>BaSyx Components</name>
+
+	<packaging>pom</packaging>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+	</properties>
+	
+	<!-- Includes all components in this project as separated modules -->
+	<modules>
+		<module>basyx.components.lib</module>
+		<module>basyx.components.docker</module>
+	</modules>
+	
+	<build>
+		<!-- Specifies plugin settings that are common for all submodules -->
+		<pluginManagement>
+			<plugins>
+				<!-- Compile Java sources using Java 8 -->
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-compiler-plugin</artifactId>
+					<version>3.8.1</version>
+					<configuration>
+						<source>1.8</source>
+						<target>1.8</target>
+					</configuration>
+				</plugin>
+	
+				<!-- Attach sources to jar file -->
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-source-plugin</artifactId>
+					<version>3.2.1</version>
+					<executions>
+						<execution>
+							<id>attach-sources</id>
+							<goals>
+								<goal>jar-no-fork</goal>
+							</goals>
+						</execution>
+					</executions>
+				</plugin>
+				
+				<!-- Generate separate jar for tests and exclude logback.xml from generated jars -->
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-jar-plugin</artifactId>
+					<version>3.1.1</version>
+					<configuration>
+						<excludes>
+							<exclude>**/logback.xml</exclude>
+						</excludes>
+					</configuration>
+					<executions>
+						<execution>
+							<goals>
+								<goal>test-jar</goal>
+							</goals>
+						</execution>
+					</executions>
+				</plugin>
+		
+				<!-- Run unit tests (Test*.java, *Test.java, *Tests.java and *TestCase.java excluding HTTP and TCP tests) -->
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-surefire-plugin</artifactId>
+					<version>3.0.0-M3</version>
+					<configuration>
+						<excludes>
+							<exclude>**/*HTTP*</exclude>
+							<exclude>**/*TCP*</exclude>
+						</excludes>
+					</configuration>
+				</plugin>
+	
+				<!-- Run integration tests (IT*.java, *IT.java and *ITCase.java) -->
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-failsafe-plugin</artifactId>
+					<version>3.0.0-M3</version>
+					<executions>
+						<execution>
+							<goals>
+								<goal>integration-test</goal>
+								<goal>verify</goal>
+							</goals>
+						</execution>
+					</executions>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+	
+	<!-- Every submodule depends on these dependencies -->
+	<dependencies>
+		<!-- JUnit 4 for running JUnit tests -->
 		<dependency>
-			<groupId>org.eclipse.basyx</groupId>
-			<artifactId>basyx.sdk</artifactId>
-			<version>0.0.1-SNAPSHOT</version>
-		</dependency>
-		<!-- Adds additional classes of the BaSys SDK for tests -->
-		<dependency>
-			<groupId>org.eclipse.basyx</groupId>
-			<artifactId>basyx.sdk</artifactId>
-			<version>0.0.1-SNAPSHOT</version>
-			<classifier>tests</classifier>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.12</version>
 			<scope>test</scope>
 		</dependency>
 	</dependencies>
+	
+	<!-- Specifies dependency settings for all submodules using these dependencies -->
+	<dependencyManagement>
+		<dependencies>
+			<!-- BaSyx SDK -->
+			<dependency>
+				<groupId>org.eclipse.basyx</groupId>
+				<artifactId>basyx.sdk</artifactId>
+				<version>0.0.1-SNAPSHOT</version>
+			</dependency>
+		
+			<!-- BaSyx SDK tests -->
+			<dependency>
+				<groupId>org.eclipse.basyx</groupId>
+				<artifactId>basyx.sdk</artifactId>
+				<version>0.0.1-SNAPSHOT</version>
+				<classifier>tests</classifier>
+				<scope>test</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
 </project>
\ No newline at end of file
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/directory/SQLRegistry.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/directory/SQLRegistry.java
deleted file mode 100644
index 609f213..0000000
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/directory/SQLRegistry.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.basyx.components.directory;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.servlet.ServletException;
-
-import org.eclipse.basyx.aas.registration.memory.MapRegistry;
-import org.eclipse.basyx.tools.sqlproxy.SQLRootElement;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Implements a local registry based on an SQL database
- * 
- * @author espen
- *
- */
-public class SQLRegistry extends MapRegistry {
-	private static Logger logger = LoggerFactory.getLogger(SQLRegistry.class);
-
-	/**
-	 * Receives the path of the configuration.properties file in it's constructor.
-	 * 
-	 * @param configFilePath
-	 */
-	public SQLRegistry(String configFilePath) {
-		super(new AASDescriptorMap(initRootMap(configFilePath)));
-
-	}
-
-	private static Map<String, Object> initRootMap(String configFilePath) {
-		SQLRootElement sqlRootElement = initSQLConnection(configFilePath);
-		sqlRootElement.drop();
-		sqlRootElement.create();
-
-		return sqlRootElement.createMap(sqlRootElement.getNextIdentifier());
-	}
-
-	/**
-	 * Initialize sqlDriver
-	 * 
-	 * @throws IOException
-	 * @throws FileNotFoundException
-	 * 
-	 * @throws ServletException
-	 */
-	private static final SQLRootElement initSQLConnection(String configFilePath) {
-		try (InputStream input = new FileInputStream(configFilePath)) {
-			// Instantiate property structure
-			Properties properties = new Properties();
-			properties.load(input);
-
-			// SQL parameter
-			String path = properties.getProperty("dburl");
-			String user = properties.getProperty("dbuser");
-			String pass = properties.getProperty("dbpass");
-			String qryPfx = properties.getProperty("sqlPrefix");
-			String qDrvCls = properties.getProperty("sqlDriver");
-
-			// Create SQL driver instance
-			return new SQLRootElement(user, pass, path, qDrvCls, qryPfx, "root_registry");
-		} catch (IOException e) {
-			logger.error("Could not init SQL connection from config file", e);
-		}
-
-		return null;
-	}
-}
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/SQLRegistryServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/SQLRegistryServlet.java
deleted file mode 100644
index 56f5322..0000000
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/SQLRegistryServlet.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.eclipse.basyx.components.servlet.registry;
-
-
-import org.eclipse.basyx.aas.registration.restapi.DirectoryModelProvider;
-import org.eclipse.basyx.components.directory.SQLRegistry;
-import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
-
-
-/**
- * SQL database based directory provider
- * 
- * This directory provider provides a static directory. It therefore only
- * supports get() operations. Modification of the directory via
- * PUT/POST/PATCH/DELETE operations is not supported.
- * 
- * @author kuhn, pschorn
- *
- */
-public class SQLRegistryServlet extends VABHTTPInterface<DirectoryModelProvider> {
-
-	
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * Path to the directory.properties file, that contains config data for the SQL
-	 * connection
-	 */
-	private static String configFilePath = "./WebContent/WEB-INF/config/directory/sqldirectory/directory.properties";
-
-	/**
-	 * Provide HTTP interface with JSONProvider to handle serialization and
-	 * SQLDirectoryProvider as backend
-	 */
-	public SQLRegistryServlet() {
-		super(new DirectoryModelProvider(new SQLRegistry(configFilePath)));
-
-	}
-
-	public SQLRegistryServlet(String customConfigFilePath) {
-		super(new DirectoryModelProvider(new SQLRegistry(customConfigFilePath)));
-	}
-
-	
-}
-
diff --git a/examples/basys.examples/pom.xml b/examples/basys.examples/pom.xml
index 3692a9e..21e09b0 100644
--- a/examples/basys.examples/pom.xml
+++ b/examples/basys.examples/pom.xml
@@ -62,8 +62,7 @@
       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
-         <!-- <version>2.12.1</version> -->
-         <version>2.4.2</version>
+         <version>3.0.0-M3</version>
           <configuration>
     		<excludes>
       			<exclude>**/*contexts*</exclude>
@@ -86,7 +85,7 @@
        <plugin>
 		  <groupId>org.apache.maven.plugins</groupId>
 		  <artifactId>maven-failsafe-plugin</artifactId>
-		  <version>2.12.4</version>
+		  <version>3.0.0-M3</version>
 		  <configuration>
 		    <includes>
 		      <include>**/*HTTP*</include>
@@ -271,8 +270,24 @@
 		<!-- Add BaSys components from local repository. Maven build of SDK must generate a jar and place it into the repository to update -->
 		<dependency>
 			<groupId>org.eclipse.basyx</groupId>
-			<artifactId>basyx.components</artifactId>
+			<artifactId>basyx.components.lib</artifactId>
 			<version>0.0.1-SNAPSHOT</version>
 		</dependency>
+		
+		<!-- Add explicit SQLRegistry dependency -->
+		<dependency>
+			<groupId>org.eclipse.basyx</groupId>
+			<artifactId>basyx.components.sqlregistry</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		
+		<!-- Adds additional classes of the BaSys SDK for tests -->
+		<dependency>
+			<groupId>org.eclipse.basyx</groupId>
+			<artifactId>basyx.sdk</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+			<classifier>tests</classifier>
+			<scope>test</scope>
+		</dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory.java
index a1c8162..614da66 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory.java
@@ -1,6 +1,6 @@
 package org.eclipse.basyx.examples.contexts;
 
-import org.eclipse.basyx.components.servlet.registry.SQLRegistryServlet;
+import org.eclipse.basyx.components.servlet.SQLRegistryServlet;
 import org.eclipse.basyx.components.servlet.submodel.cfg.RawCFGSubModelProviderServlet;
 import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
 
diff --git a/examples/basys.examples/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties b/examples/basys.examples/src/test/resources/registry.properties
similarity index 100%
rename from examples/basys.examples/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties
rename to examples/basys.examples/src/test/resources/registry.properties