Creates xml AAS component

* To Do: Adapt to allow multiple AAS

Change-Id: I20beeb2e663ff183ac2d2b129c771ee00e22e952
Signed-off-by: Ashfaqul Haque <ashfaqul.haque@iese.fraunhofer.de>
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/Dockerfile b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/Dockerfile
new file mode 100644
index 0000000..b0a2f86
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/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.xmlAAS/docker-compose.yml b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/docker-compose.yml
new file mode 100644
index 0000000..aca4d1b
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/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.xmlAAS/pom.xml b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/pom.xml
new file mode 100644
index 0000000..41dff60
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/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.xmlAAS</artifactId>
+	<name>BaSyx XML 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.XMLExecutable</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.xmlAAS/src/main/java/org/eclipse/basyx/components/executable/XMLExecutable.java b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/executable/XMLExecutable.java
new file mode 100644
index 0000000..9c75559
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/executable/XMLExecutable.java
@@ -0,0 +1,57 @@
+package org.eclipse.basyx.components.executable;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.servlets.XMLAASFactory;
+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;
+import org.xml.sax.SAXException;
+
+/**
+ * A XML registry servlet based on an InMemory Registry. The servlet therefore
+ * provides an implementation for the IAASRegistryService interface without a
+ * permanent storage capability. it imports AAS from given XML location provided
+ * in the context.properties and maps the AAS to servlet as well
+ * 
+ * Do not use this registry in a productive environment - the entries are not
+ * persistent!
+ * 
+ * @author haque
+ */
+public class XMLExecutable {
+
+	// Creates a Logger based on the current class
+	private static Logger logger = LoggerFactory.getLogger(XMLExecutable.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;
+
+	// Default constructor
+	private XMLExecutable() {
+	}
+
+	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
+		logger.info("Starting BaSyx XML registry");
+
+		// Load configuration
+		BaSyxContextConfiguration config = new BaSyxContextConfiguration();
+		config.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+
+		// Create a context suing the configuration
+		BaSyxContext context = XMLAASFactory.createContext(config);
+
+		// 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.xmlAAS/src/main/java/org/eclipse/basyx/components/servlets/XMLAASFactory.java b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/servlets/XMLAASFactory.java
new file mode 100644
index 0000000..4fb0281
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/servlets/XMLAASFactory.java
@@ -0,0 +1,229 @@
+package org.eclipse.basyx.components.servlets;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+
+import javax.servlet.http.HttpServlet;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.basyx.aas.factory.xml.XMLToMetamodelConverter;
+import org.eclipse.basyx.aas.metamodel.api.IAssetAdministrationShell;
+import org.eclipse.basyx.aas.metamodel.api.parts.asset.IAsset;
+import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
+import org.eclipse.basyx.aas.metamodel.map.descriptor.SubmodelDescriptor;
+import org.eclipse.basyx.aas.metamodel.map.parts.Asset;
+import org.eclipse.basyx.aas.restapi.AASModelProvider;
+import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.submodel.metamodel.api.IElement;
+import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
+import org.eclipse.basyx.submodel.metamodel.api.parts.IConceptDescription;
+import org.eclipse.basyx.submodel.metamodel.map.SubModel;
+import org.eclipse.basyx.submodel.restapi.SubModelProvider;
+import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
+import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.SAXException;
+
+/**
+ * It imports AAS from given XML location provided in the context.properties and
+ * maps the AAS to servlet. It also adds the submodels, assets and concept
+ * descriptors to the AAS.
+ * 
+ * 
+ * @author haque
+ */
+public class XMLAASFactory {
+	// Create a logger instance for current class
+	private static Logger logger = LoggerFactory.getLogger(XMLAASFactory.class);
+
+	/**
+	 * Generates a Basyx Context
+	 * 
+	 * @param config Configuration of the Basyx Context
+	 * @return context
+	 * @throws IOException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	public static BaSyxContext createContext(BaSyxContextConfiguration config)
+			throws ParserConfigurationException, SAXException, IOException {
+
+		// Create a Basyx Context from the config
+		BaSyxContext context = new BaSyxContext(config.getContextPath(), config.getDocBasePath(), config.getHostname(),
+				config.getPort());
+
+		// Converts the XML from location to Metamodel
+		XMLToMetamodelConverter converter = convertXMLToMetamodel(config.getProperty("xmlPath"));
+
+		String contextURL = getContextURL(config);
+		addAAS(converter, context, contextURL);
+		return context; 
+	}
+
+	/**
+	 * Converts XML to Metamodel from XML location
+	 * 
+	 * @param xmlPath the location of the XML
+	 * @return Converted Metamodel
+	 * @throws IOException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	private static XMLToMetamodelConverter convertXMLToMetamodel(String xmlPath)
+			throws ParserConfigurationException, SAXException, IOException {
+		String xmlString = new String(Files.readAllBytes(Paths.get(xmlPath)));
+		return new XMLToMetamodelConverter(xmlString);
+	}
+
+	/**
+	 * Adds Asset Administration Shells from the XML to context
+	 * 
+	 * @param converter  Converted Metamodel
+	 * @param context    Basyx Context
+	 * @param contextURL URL of the context
+	 * @throws IOException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	private static void addAAS(XMLToMetamodelConverter converter, BaSyxContext context, String contextURL)
+			throws ParserConfigurationException, SAXException, IOException {
+		// Parse the XML and get all AAS
+		List<IAssetAdministrationShell> AAShells = converter.parseAAS();
+
+		if (AAShells.size() <= 0) {
+			logger.debug("No AAS Found in the XML");
+			return;
+		}
+
+		// Take the first AAS from the XML
+		AssetAdministrationShell aas = (AssetAdministrationShell) AAShells.get(0);
+		AASModelProvider aasProvider = new AASModelProvider(aas);
+		VABMultiSubmodelProvider aasModelProvider = new VABMultiSubmodelProvider();
+		aasModelProvider.setAssetAdministrationShell(aasProvider);
+
+		// Add Submodels. Assets and Concept Descriptions to the AAS
+		addSubmodels(converter, aas, aasModelProvider, contextURL);
+		addAssets(converter, aas);
+		addConceptDescriptions(converter, aas);
+
+		// Create a servlet using the AAS
+		HttpServlet aasServlet = new VABHTTPInterface<IModelProvider>(aasModelProvider);
+
+		String subDomain = getSubDomain(aas);
+		context.addServletMapping(subDomain, aasServlet);
+
+		logger.info("AAS Server started at " + subDomain);
+	}
+
+	/**
+	 * Adds Submodels from the XML to the given AAS
+	 * 
+	 * @param converter   converted Metamodel
+	 * @param aas         AAS with which the Submodels will be connected
+	 * @param aasProvider
+	 * @param contextURL  URL of the context
+	 */
+	private static void addSubmodels(XMLToMetamodelConverter converter, AssetAdministrationShell aas,
+			VABMultiSubmodelProvider aasProvider, String contextURL) {
+		// Parse the XML to get the submodels
+		List<ISubModel> subModels = converter.parseSubmodels();
+
+		if (subModels.size() <= 0) {
+			logger.debug("No Submodel found in the XML");
+		}
+
+		// Loops through all the submodels and add to AAS
+		for (ISubModel subModel : subModels) {
+			SubModelProvider subModelProvider = new SubModelProvider((SubModel) subModel);
+			String idString = subModel.getIdShort();
+
+			// Add the sub model to the AAS Provider
+			aasProvider.addSubmodel(idString, subModelProvider);
+
+			// Retrieve a submodel URL and connect it to the AAS
+			String submodelUrlString = getSubModelUrl(contextURL, aas.getIdShort(), idString);
+			aas.addSubModel(new SubmodelDescriptor(subModel, submodelUrlString));
+		}
+	}
+
+	/**
+	 * Adds Assets from the XML to the given AAS
+	 * 
+	 * @param converter converted Metamodel
+	 * @param aas       AAS with which the assets will be connected
+	 * @throws IOException
+	 * @throws SAXException
+	 * @throws ParserConfigurationException
+	 */
+	private static void addAssets(XMLToMetamodelConverter converter, AssetAdministrationShell aas)
+			throws ParserConfigurationException, SAXException, IOException {
+		// Parse the XML to get the assets
+		List<IAsset> assets = converter.parseAssets();
+
+		if (assets.size() <= 0) {
+			logger.debug("No Assets found in the XML");
+		}
+
+		// Loops through all the assets and add to AAS
+		for (IAsset asset : assets) {
+			aas.setAsset((Asset) asset);
+		}
+	}
+
+	/**
+	 * Adds Concept Descriptions from the XML to the given AAS
+	 * 
+	 * @param converter converted Metamodel
+	 * @param aas       AAS with which the concepts descriptions will be added
+	 */
+	private static void addConceptDescriptions(XMLToMetamodelConverter converter, AssetAdministrationShell aas) {
+		// Parse the XML to get the concept descriptions
+		List<IConceptDescription> descriptions = converter.parseConceptDescriptions();
+
+		if (descriptions.size() <= 0) {
+			logger.debug("No Concept Descriptions found in the XML");
+		}
+
+		// Loops through all the concept descriptions and add to AAS
+		for (IConceptDescription description : descriptions) {
+			aas.addConceptDescription(description);
+		}
+	}
+
+	/**
+	 * Generate a sub domain to access the Element
+	 * 
+	 * @param element the Element to be accessed by the generated subdomain
+	 * @return the subdomain
+	 */
+	private static String getSubDomain(IElement element) {
+		return "/" + element.getIdShort() + "/*";
+	}
+
+	/**
+	 * Generate submodel api url
+	 * 
+	 * @param aasId      Id of the AAS it is connected
+	 * @param subModelId id of the submodel
+	 * 
+	 * @return subModel URL
+	 */
+	private static String getSubModelUrl(String contextURL, String aasId, String subModelId) {
+		return contextURL + "/" + aasId + "/aas/submodels/" + subModelId + "/submodel";
+	}
+
+	/**
+	 * generates context URL
+	 * 
+	 * @param config
+	 * @return Context URL
+	 */
+	private static String getContextURL(BaSyxContextConfiguration config) {
+		return "http://" + config.getHostname() + ":" + config.getPort() + config.getContextPath();
+	}
+}
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/context.properties b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/context.properties
new file mode 100644
index 0000000..a109291
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/context.properties
@@ -0,0 +1,4 @@
+contextPath=/xmlAAS
+contextHostname=localhost
+contextPort=4000
+xmlPath=src/main/resources/xml/in.xml
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/logback.xml b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/logback.xml
new file mode 100644
index 0000000..86341d6
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/logback.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ 
+<configuration>
+ 
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    
+    <!-- Example for a filter, which removes all entries not containing "[TEST]" in the message. -->
+    
+    <!--<filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
+      <evaluator>
+        <expression>return message.contains("[TEST]");</expression>
+      </evaluator>
+      <OnMismatch>DENY</OnMismatch>
+      <OnMatch>NEUTRAL</OnMatch>
+    </filter>-->
+  
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
+    </encoder>
+  </appender>
+  
+  <root level="INFO">          
+    <appender-ref ref="STDOUT" />
+  </root>  
+   
+</configuration>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/xml/in.xml b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/xml/in.xml
new file mode 100644
index 0000000..1f12966
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/xml/in.xml
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aas:aasenv xmlns:aas="http://www.admin-shell.io/aas/2/0"
+	xmlns:IEC61360="http://www.admin-shell.io/IEC61360/2/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.admin-shell.io/aas/2/0 AAS.xsd
+	http://www.admin-shell.io/IEC61360/2/0 IEC61360.xsd">
+	<aas:assetAdministrationShells>
+		<!-- This AAS is populated with all possible fields -->
+		<aas:assetAdministrationShell>
+			<aas:idShort>aas1</aas:idShort>
+			<aas:category>test_category</aas:category>
+			<aas:description>
+				<aas:langString lang="EN">aas_Description</aas:langString>
+				<aas:langString lang="DE">Beschreibung Verwaltungsschale</aas:langString>
+			</aas:description>
+			<aas:parent>
+				<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="AssetAdministrationShell">aas_parent_id</aas:key>
+				</aas:keys>
+			</aas:parent>
+			<aas:identification idType="IRI">www.admin-shell.io/aas-sample/1/0</aas:identification>
+			<aas:administration>
+				<aas:version>1</aas:version>
+				<aas:revision>0</aas:revision>
+			</aas:administration>
+			<aas:embeddedDataSpecification>
+				<aas:dataSpecificationContent>
+					<aas:dataSpecificationIEC61360>
+						<IEC61360:preferredName>
+							<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+							<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+						</IEC61360:preferredName>
+						<IEC61360:shortName>
+							<IEC61360:langString lang="DE">N</IEC61360:langString>
+						</IEC61360:shortName>
+						<IEC61360:unit>1/min</IEC61360:unit>
+						<IEC61360:unitId>
+							<IEC61360:keys>
+								<IEC61360:key idType="IRDI" local="false" type="GlobalReference">
+									0173-1#05-AAA650#002
+								</IEC61360:key>
+							</IEC61360:keys>
+						</IEC61360:unitId>
+						<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+					</aas:dataSpecificationIEC61360>
+				</aas:dataSpecificationContent>
+				<aas:dataSpecification>
+					<aas:keys>
+						<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+					</aas:keys>
+				</aas:dataSpecification>
+			</aas:embeddedDataSpecification>
+			<aas:derivedFrom>
+				<aas:keys>
+					<aas:key type="ReferenceElement" local="false" idType="IRI">http://pk.festo.com/3s7plfdrs35</aas:key>
+				</aas:keys>
+			</aas:derivedFrom>
+			<aas:assetRef>
+				<aas:keys>
+					<aas:key type="Asset" local="false" idType="IRI">http://pk.festo.com/3s7plfdrs35</aas:key>
+				</aas:keys>
+			</aas:assetRef>
+			<aas:submodelRefs>
+				<aas:submodelRef>
+					<aas:keys>
+						<aas:key type="Submodel" local="true" idType="IRI">"http://www.zvei.de/demo/submodel/12345679"</aas:key>
+					</aas:keys>
+				</aas:submodelRef>
+				<aas:submodelRef>
+					<aas:keys>
+						<aas:key type="Submodel" local="true" idType="IRI">"http://www.zvei.de/demo/submodel/12345679_2"</aas:key>
+					</aas:keys>
+				</aas:submodelRef>
+			</aas:submodelRefs>
+			<aas:views>
+				<!-- This View is populated with all possible fields -->
+				<aas:view>
+					<aas:idShort>SampleView</aas:idShort>
+					<aas:category>test_categogy</aas:category>
+					<aas:description>
+						<aas:langString lang="EN">View_Description</aas:langString>
+					</aas:description>
+					<aas:parent>
+						<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+						<aas:keys>
+							<aas:key idType="IRI" local="false" type="Submodel">view_parent_id</aas:key>
+						</aas:keys>
+					</aas:parent>
+					<aas:semanticId>
+						<aas:keys>
+							<aas:key idType="IRI" local="false" type="Submodel">view_semantic_id</aas:key>
+						</aas:keys>
+					</aas:semanticId>
+					<aas:embeddedDataSpecification>
+						<aas:dataSpecificationContent>
+							<aas:dataSpecificationIEC61360>
+								<IEC61360:preferredName>
+									<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+									<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+								</IEC61360:preferredName>
+								<IEC61360:shortName>
+									<IEC61360:langString lang="DE">N</IEC61360:langString>
+								</IEC61360:shortName>
+								<IEC61360:unit>1/min</IEC61360:unit>
+								<IEC61360:unitId>
+									<IEC61360:keys>
+										<IEC61360:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</IEC61360:key>
+									</IEC61360:keys>
+								</IEC61360:unitId>
+								<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+							</aas:dataSpecificationIEC61360>
+						</aas:dataSpecificationContent>
+						<aas:dataSpecification>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+							</aas:keys>
+						</aas:dataSpecification>
+					</aas:embeddedDataSpecification>
+					<aas:containedElements>
+						<aas:containedElementRef>
+							<aas:keys>
+								<aas:key type="Submodel" local="true" idType="IRI">"http://www.zvei.de/demo/submodel/12345679"</aas:key>
+								<aas:key type="Property" local="true" idType="IdShort">rotationSpeed</aas:key>
+							</aas:keys>
+						</aas:containedElementRef>
+					</aas:containedElements>
+				</aas:view>
+				<!-- This is a View with only the minimal required information in it. To test for Nullpointers and such. -->
+				<aas:view>
+					<aas:idShort>EmptyView</aas:idShort>
+					<aas:containedElements></aas:containedElements>
+				</aas:view>
+			</aas:views>
+			<aas:conceptDictionaries>
+				<aas:conceptDictionary>
+					<aas:idShort>SampleDic</aas:idShort>
+					<aas:conceptDescriptionRefs>
+						<aas:conceptDescriptionRef>
+							<aas:keys>
+								<aas:key type="ConceptDescription" local="true" idType="IRDI">0173-1#02-BAA120#007</aas:key>
+							</aas:keys>
+						</aas:conceptDescriptionRef>
+						<aas:conceptDescriptionRef>
+							<aas:keys>
+								<aas:key type="ConceptDescription" local="true" idType="IRDI">0173-1#02-BAA120#007</aas:key>
+							</aas:keys>
+						</aas:conceptDescriptionRef>
+					</aas:conceptDescriptionRefs>
+				</aas:conceptDictionary>
+			</aas:conceptDictionaries>
+		</aas:assetAdministrationShell>
+		
+	</aas:assetAdministrationShells>
+	<aas:assets>
+		<!-- This Asset is populated with all possible fields -->
+		<aas:asset>
+			<aas:idShort>asset1</aas:idShort>
+			<aas:category>asset1_categogy</aas:category>
+			<aas:description>
+				<aas:langString lang="EN">asset1_Description</aas:langString>
+			</aas:description>
+			<aas:parent>
+				<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="Asset">asset_parent_id</aas:key>
+				</aas:keys>
+			</aas:parent>
+			<aas:identification idType="IRI">http://pk.festo.com/3s7plfdrs35</aas:identification>
+			<aas:administration>
+				<aas:version>1</aas:version>
+				<aas:revision>0</aas:revision>
+			</aas:administration>
+			<aas:embeddedDataSpecification>
+				<aas:dataSpecificationContent>
+					<aas:dataSpecificationIEC61360>
+						<IEC61360:preferredName>
+							<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+							<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+						</IEC61360:preferredName>
+						<IEC61360:shortName>
+							<IEC61360:langString lang="DE">N</IEC61360:langString>
+						</IEC61360:shortName>
+						<IEC61360:unit>1/min</IEC61360:unit>
+						<IEC61360:unitId>
+							<IEC61360:keys>
+								<IEC61360:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</IEC61360:key>
+							</IEC61360:keys>
+						</IEC61360:unitId>
+						<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+					</aas:dataSpecificationIEC61360>
+				</aas:dataSpecificationContent>
+				<aas:dataSpecification>
+					<aas:keys>
+						<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+					</aas:keys>
+				</aas:dataSpecification>
+			</aas:embeddedDataSpecification>
+			<aas:assetIdentificationModelRef>
+				<aas:keys>
+					<aas:key type="ConceptDescription" local="true" idType="IRI">www.festo.com/dic/08111234</aas:key>
+				</aas:keys>
+			</aas:assetIdentificationModelRef>
+			<aas:kind>Instance</aas:kind>
+		</aas:asset>
+	</aas:assets>
+	<aas:submodels>
+		<!-- This Submodel is populated with all possible fields -->
+		<aas:submodel>
+			<aas:idShort>submodel1</aas:idShort>
+			<aas:category>submodel1_categogy</aas:category>
+			<aas:description>
+				<aas:langString lang="EN">submode1_decription</aas:langString>
+			</aas:description>
+			<aas:parent>
+				<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="Submodel">submodel_parent_id</aas:key>
+				</aas:keys>
+			</aas:parent>
+			<aas:identification idType="IRI">http://www.zvei.de/demo/submodel/12345679</aas:identification>
+			<aas:administration>
+				<aas:version>1</aas:version>
+				<aas:revision>0</aas:revision>
+			</aas:administration>
+			<aas:kind>Instance</aas:kind>
+			<aas:semanticId>
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+				</aas:keys>
+			</aas:semanticId>
+			<aas:qualifier>
+				<aas:qualifiers>
+					<aas:formula>
+						<aas:dependsOnRefs>
+							<aas:reference>
+								<aas:keys>
+									<aas:key local="false" type="GlobalReference" idType="IRDI">qualifier_reference</aas:key>
+								</aas:keys>
+							</aas:reference>
+						</aas:dependsOnRefs>
+					</aas:formula>
+				</aas:qualifiers>
+				<aas:qualifiers>
+					<aas:qualifier>
+						<aas:valueId>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+							</aas:keys>
+						</aas:valueId>
+						<aas:value>qualifierValue</aas:value>
+						<aas:type>qualifierType</aas:type>
+						<aas:valueType>valueType</aas:valueType>
+						<aas:semanticId>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="GlobalReference">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+							</aas:keys>
+						</aas:semanticId>
+					</aas:qualifier>
+				</aas:qualifiers>
+			</aas:qualifier>
+			<aas:embeddedDataSpecification>
+				<aas:dataSpecificationContent>
+					<aas:dataSpecificationIEC61360>
+						<IEC61360:preferredName>
+							<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+							<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+						</IEC61360:preferredName>
+						<IEC61360:shortName>
+							<IEC61360:langString lang="DE">N</IEC61360:langString>
+						</IEC61360:shortName>
+						<IEC61360:unit>1/min</IEC61360:unit>
+						<IEC61360:unitId>
+							<IEC61360:keys>
+								<IEC61360:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</IEC61360:key>
+							</IEC61360:keys>
+						</IEC61360:unitId>
+						<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+					</aas:dataSpecificationIEC61360>
+				</aas:dataSpecificationContent>
+				<aas:dataSpecification>
+					<aas:keys>
+						<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+					</aas:keys>
+				</aas:dataSpecification>
+			</aas:embeddedDataSpecification>
+			<aas:submodelElements>
+				<aas:submodelElement>
+					<aas:property>
+						<aas:idShort>rotationSpeed</aas:idShort>
+						<aas:category>VARIABLE</aas:category>
+						<aas:semanticId>
+							<aas:keys>
+								<aas:key idType="IRI" type="ConceptDescription" local="true">www.festo.com/dic/08111234</aas:key>
+							</aas:keys>
+						</aas:semanticId>
+						<aas:qualifier>
+							<aas:qualifiers>
+								<aas:qualifier>
+									<aas:valueId>
+										<aas:keys>
+											<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+										</aas:keys>
+									</aas:valueId>
+									<aas:value>qualifierValue</aas:value>
+									<aas:type>qualifierType</aas:type>
+									<aas:valueType>valueType</aas:valueType>
+									<aas:semanticId>
+										<aas:keys>
+											<aas:key idType="IRI" local="false" type="GlobalReference">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+										</aas:keys>
+									</aas:semanticId>
+								</aas:qualifier>
+							</aas:qualifiers>
+						</aas:qualifier>
+						<aas:value>2000</aas:value>
+						<aas:valueType>double</aas:valueType>
+					</aas:property>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:property>
+						<aas:idShort>emptyDouble</aas:idShort>
+						<aas:valueType>double</aas:valueType>
+					</aas:property>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:basicEvent>
+						<aas:idShort>basic_event_id</aas:idShort>
+						<aas:observed>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+							</aas:keys>
+						</aas:observed>
+					</aas:basicEvent>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:entity>
+						<aas:idShort>entity_id</aas:idShort>
+						<aas:assetRef>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+							</aas:keys>
+						</aas:assetRef>
+						<aas:statements>
+							<aas:submodelElement>
+								<aas:file>
+									<aas:idShort>file_ID</aas:idShort>
+									<aas:mimeType>file_mimetype</aas:mimeType>
+									<aas:value>file_value</aas:value>
+								</aas:file>
+							</aas:submodelElement>
+							<aas:submodelElement>
+								<aas:range>
+									<aas:idShort>range_id</aas:idShort>
+									<aas:valueType>int</aas:valueType>
+									<aas:min>10</aas:min>
+								</aas:range>
+							</aas:submodelElement>
+						</aas:statements>
+						<aas:entityType>CoManagedEntity</aas:entityType>
+					</aas:entity>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:multiLanguageProperty>
+						<aas:idShort>multi_language_property_id</aas:idShort>
+						<aas:valueId>
+							<aas:keys>
+								<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</aas:key>
+							</aas:keys>
+						</aas:valueId>
+						<aas:value>
+							<aas:langString lang="DE">Eine Beschreibung auf deutsch</aas:langString>
+							<aas:langString lang="EN">A description in english</aas:langString>
+						</aas:value>
+					</aas:multiLanguageProperty>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:range>
+						<aas:idShort>range_id</aas:idShort>
+						<aas:valueType>int</aas:valueType>
+						<aas:min>1</aas:min>
+						<aas:max>10</aas:max>
+					</aas:range>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:file>
+						<aas:idShort>file_id</aas:idShort>
+						<aas:mimeType>file_mimetype</aas:mimeType>
+						<aas:value>file_value</aas:value>
+					</aas:file>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:blob>
+						<aas:idShort>blob_id</aas:idShort>
+						<aas:value>YmxvYit2YWx1ZQ==</aas:value>
+						<aas:mimeType>blob_mimetype</aas:mimeType>
+					</aas:blob>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:referenceElement>
+						<aas:idShort>reference_ELE_ID</aas:idShort>
+						<aas:value>
+							<aas:keys>
+								<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</aas:key>
+							</aas:keys>
+						</aas:value>
+					</aas:referenceElement>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:submodelElementCollection>
+						<aas:idShort>submodelElementCollection_ID</aas:idShort>
+						<aas:allowDuplicates>true</aas:allowDuplicates>
+						<aas:ordered>false</aas:ordered>
+						<aas:value>
+							<aas:submodelElement>
+								<aas:file>
+									<aas:idShort>file_ID</aas:idShort>
+									<aas:mimeType>file_mimetype</aas:mimeType>
+									<aas:value>file_value</aas:value>
+								</aas:file>
+							</aas:submodelElement>
+							<aas:submodelElement>
+								<aas:blob>
+									<aas:idShort>blob_id</aas:idShort>
+									<aas:value>YmxvYit2YWx1ZQ==</aas:value>
+									<aas:mimeType>blob_mimetype</aas:mimeType>
+								</aas:blob>
+							</aas:submodelElement>
+						</aas:value>
+					</aas:submodelElementCollection>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:relationshipElement>
+						<aas:idShort>relationshipElement_ID</aas:idShort>
+						<aas:first>
+							<aas:keys>
+								<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#001</aas:key>
+							</aas:keys>
+						</aas:first>
+						<aas:second>
+							<aas:keys>
+								<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</aas:key>
+							</aas:keys>
+						</aas:second>
+					</aas:relationshipElement>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:operation>
+						<aas:idShort>operation_ID</aas:idShort>
+						<aas:inputVariable>
+							<!-- The schema only allows one opVar in inputVariable, one in outputVariable and one in inoutputVariable. The Metamodel allows 0..* in each -->
+							<!-- To be able to have multiple Vars they are surrounded by <aas:operationVariable>. This is also violating the Schema. -->
+							<aas:operationVariable>
+								<aas:value>
+									<aas:file>
+										<aas:idShort>file_ID</aas:idShort>
+										<aas:mimeType>file_mimetype</aas:mimeType>
+										<aas:value>file_value</aas:value>
+									</aas:file>
+								</aas:value>
+							</aas:operationVariable>
+							<aas:operationVariable>
+								<aas:value>
+									<aas:blob>
+										<aas:idShort>blob_ID</aas:idShort>
+										<aas:value>YmxvYit2YWx1ZQ==</aas:value>
+										<aas:mimeType>blob_mimetype</aas:mimeType>
+									</aas:blob>
+								</aas:value>
+							</aas:operationVariable>
+						</aas:inputVariable>
+						<aas:outputVariable>
+							<aas:operationVariable>
+								<aas:value>
+									<aas:referenceElement>
+										<aas:idShort>reference_ELE_ID</aas:idShort>
+										<aas:value>
+											<aas:keys>
+												<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</aas:key>
+											</aas:keys>
+										</aas:value>
+									</aas:referenceElement>
+								</aas:value>
+							</aas:operationVariable>
+						</aas:outputVariable>
+						<aas:inoutputVariable>
+							<aas:operationVariable>
+								<aas:value>
+									<aas:referenceElement>
+										<aas:idShort>reference_ELE_ID2</aas:idShort>
+										<aas:value>
+											<aas:keys>
+												<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#003</aas:key>
+											</aas:keys>
+										</aas:value>
+									</aas:referenceElement>
+								</aas:value>
+							</aas:operationVariable>
+						</aas:inoutputVariable>
+					</aas:operation>
+				</aas:submodelElement>
+			</aas:submodelElements>
+		</aas:submodel>
+	
+	</aas:submodels>
+	<aas:conceptDescriptions>
+		<!-- This ConceptDescription is populated with all possible fields -->
+		<aas:conceptDescription>
+			<aas:idShort>conceptDescription1</aas:idShort>
+			<aas:category>cs_categogy</aas:category>
+			<aas:description>
+				<aas:langString lang="EN">conceptDescription_Description</aas:langString>
+			</aas:description>
+			<aas:parent>
+				<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="ConceptDescription">cs_parent_id</aas:key>
+				</aas:keys>
+			</aas:parent>
+			<aas:identification idType="IRI">www.festo.com/dic/08111234</aas:identification>
+			<aas:administration>
+				<aas:version>1</aas:version>
+				<aas:revision>0</aas:revision>
+			</aas:administration>
+			<aas:embeddedDataSpecification>
+				<aas:dataSpecificationContent>
+					<aas:dataSpecificationIEC61360>
+						<IEC61360:preferredName>
+							<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+							<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+						</IEC61360:preferredName>
+						<IEC61360:shortName>
+							<IEC61360:langString lang="DE">N</IEC61360:langString>
+						</IEC61360:shortName>
+						<IEC61360:unit>1/min</IEC61360:unit>
+						<IEC61360:unitId>
+							<IEC61360:keys>
+								<IEC61360:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</IEC61360:key>
+							</IEC61360:keys>
+						</IEC61360:unitId>
+						<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+					</aas:dataSpecificationIEC61360>
+				</aas:dataSpecificationContent>
+				<aas:dataSpecification>
+					<aas:keys>
+						<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+					</aas:keys>
+				</aas:dataSpecification>
+			</aas:embeddedDataSpecification>
+			<aas:isCaseOf>
+				<aas:keys>
+					<aas:key idType="IRI" type="ConceptDescription" local="true">www.festo.com/dic/08111234</aas:key>
+					<aas:key idType="IRI" type="ConceptDescription" local="true">www.festo.com/dic/08111234_2</aas:key>
+				</aas:keys>
+			</aas:isCaseOf>
+		</aas:conceptDescription>
+		<!-- This is a ConceptDescription with only the minimal required information in it. To test for Nullpointers and such. -->
+		<aas:conceptDescription>
+			<aas:idShort>conceptDescription2</aas:idShort>
+			<aas:identification idType="IRI">www.festo.com/dic/08111234</aas:identification>
+		</aas:conceptDescription>
+	</aas:conceptDescriptions>
+</aas:aasenv>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/docker/ITInXMLAAS.java b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/docker/ITInXMLAAS.java
new file mode 100644
index 0000000..a695129
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/docker/ITInXMLAAS.java
@@ -0,0 +1,119 @@
+package org.eclipse.basyx.regression.docker;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Map;
+
+import org.eclipse.basyx.aas.manager.ConnectedAssetAdministrationShellManager;
+import org.eclipse.basyx.aas.metamodel.api.parts.asset.IAsset;
+import org.eclipse.basyx.aas.metamodel.connected.ConnectedAssetAdministrationShell;
+import org.eclipse.basyx.aas.metamodel.map.descriptor.AASDescriptor;
+import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
+import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
+import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.configuration.BaSyxDockerConfiguration;
+import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
+import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
+import org.eclipse.basyx.vab.protocol.api.IConnectorProvider;
+import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ITInXMLAAS {
+	private static Logger logger = LoggerFactory.getLogger(ITInXMLAAS.class);
+
+	private static String registryUrl;
+	private IAASRegistryService registry;
+
+	private String aasShortId = "aas1";
+	private IIdentifier aasId = new ModelUrn("urn:de.FHG:devices.es.iese:aas:1.0:1:registryAAS#001");
+	private String aasEndpoint = "http://localhost:4000/registry/aas1/aas";
+	private String submodelShortId = "submodel1";
+	private String assetId = "asset1";
+
+	@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:4000/registry";
+		registryUrl = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath();
+		logger.info("Registry URL for integration test: " + registryUrl);
+	}
+
+	/**
+	 * Before each test, a dummy registry is created and an AAS is added in the
+	 * registry
+	 */
+	@Before
+	public void setUp() {
+		try {
+			// Create a dummy registry to test integration of XML AAS
+			registry = new InMemoryRegistry();
+			AASDescriptor descriptor = new AASDescriptor(aasShortId, aasId, aasEndpoint);
+			registry.register(descriptor);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Remove registry entries after each test
+	 */
+	@After
+	public void tearDown() {
+	}
+
+
+	@Test
+	public void testGetSingleAAS() throws Exception {
+		ConnectedAssetAdministrationShell connectedAssetAdministrationShell = getConnectedAssetAdministrationShell();
+		assertEquals(aasShortId, connectedAssetAdministrationShell.getIdShort());
+	}
+
+	@Test
+	public void testGetSingleSubmodel() throws Exception {
+		ConnectedAssetAdministrationShell connectedAssetAdministrationShell = getConnectedAssetAdministrationShell();
+		Map<String, ISubModel> submodels = connectedAssetAdministrationShell.getSubModels();
+		ISubModel subModel = submodels.get(submodelShortId);
+		assertEquals(submodelShortId, subModel.getIdShort());
+	}
+
+	@Test
+	public void testGetSingleAsset() throws Exception {
+		ConnectedAssetAdministrationShell connectedAssetAdministrationShell = getConnectedAssetAdministrationShell();
+		IAsset asset = connectedAssetAdministrationShell.getAsset();
+		assertEquals(asset.getIdShort(), assetId);
+	}
+
+	/**
+	 * Get connected Asset Administration Shell from the registry
+	 * 
+	 * @return connected AAS
+	 * @throws Exception
+	 */
+	private ConnectedAssetAdministrationShell getConnectedAssetAdministrationShell() throws Exception {
+		// Create a ConnectedAssetAdministrationShell using a
+		// ConnectedAssetAdministrationShellManager
+		IConnectorProvider connectorProvider = new HTTPConnectorProvider();
+		ConnectedAssetAdministrationShellManager manager = new ConnectedAssetAdministrationShellManager(registry,
+				connectorProvider);
+
+		// return the connected AAS
+		return manager.retrieveAAS(aasId);
+	}
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/.env b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/.env
new file mode 100644
index 0000000..226a4c9
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/.env
@@ -0,0 +1,5 @@
+BASYX_HOST_PORT=8083
+BASYX_CONTAINER_PORT=4000
+BASYX_IMAGE_NAME=basys/aas-xml
+BASYX_CONTAINER_NAME=aas-xml
+BASYX_IMAGE_TAG=0.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/context.properties b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/context.properties
new file mode 100644
index 0000000..3abc9d0
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/context.properties
@@ -0,0 +1,4 @@
+contextPath=/xmlAAS
+contextHostname=localhost
+contextPort=4000
+xmlPath=src/test/resources/xml/in.xml
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/xml/in.xml b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/xml/in.xml
new file mode 100644
index 0000000..dee291f
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/xml/in.xml
@@ -0,0 +1,566 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aas:aasenv xmlns:aas="http://www.admin-shell.io/aas/2/0"
+	xmlns:IEC61360="http://www.admin-shell.io/IEC61360/2/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.admin-shell.io/aas/2/0 AAS.xsd
+	http://www.admin-shell.io/IEC61360/2/0 IEC61360.xsd">
+	<aas:assetAdministrationShells>
+		<!-- This AAS is populated with all possible fields -->
+		<aas:assetAdministrationShell>
+			<aas:idShort>aas1</aas:idShort>
+			<aas:category>test_category</aas:category>
+			<aas:description>
+				<aas:langString lang="EN">aas_Description</aas:langString>
+				<aas:langString lang="DE">Beschreibung Verwaltungsschale</aas:langString>
+			</aas:description>
+			<aas:parent>
+				<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="AssetAdministrationShell">aas_parent_id</aas:key>
+				</aas:keys>
+			</aas:parent>
+			<aas:identification idType="IRI">www.admin-shell.io/aas-sample/1/0</aas:identification>
+			<aas:administration>
+				<aas:version>1</aas:version>
+				<aas:revision>0</aas:revision>
+			</aas:administration>
+			<aas:embeddedDataSpecification>
+				<aas:dataSpecificationContent>
+					<aas:dataSpecificationIEC61360>
+						<IEC61360:preferredName>
+							<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+							<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+						</IEC61360:preferredName>
+						<IEC61360:shortName>
+							<IEC61360:langString lang="DE">N</IEC61360:langString>
+						</IEC61360:shortName>
+						<IEC61360:unit>1/min</IEC61360:unit>
+						<IEC61360:unitId>
+							<IEC61360:keys>
+								<IEC61360:key idType="IRDI" local="false" type="GlobalReference">
+									0173-1#05-AAA650#002
+								</IEC61360:key>
+							</IEC61360:keys>
+						</IEC61360:unitId>
+						<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+					</aas:dataSpecificationIEC61360>
+				</aas:dataSpecificationContent>
+				<aas:dataSpecification>
+					<aas:keys>
+						<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+					</aas:keys>
+				</aas:dataSpecification>
+			</aas:embeddedDataSpecification>
+			<aas:derivedFrom>
+				<aas:keys>
+					<aas:key type="ReferenceElement" local="false" idType="IRI">http://pk.festo.com/3s7plfdrs35</aas:key>
+				</aas:keys>
+			</aas:derivedFrom>
+			<aas:assetRef>
+				<aas:keys>
+					<aas:key type="Asset" local="false" idType="IRI">http://pk.festo.com/3s7plfdrs35</aas:key>
+				</aas:keys>
+			</aas:assetRef>
+			<aas:submodelRefs>
+				<aas:submodelRef>
+					<aas:keys>
+						<aas:key type="Submodel" local="true" idType="IRI">"http://www.zvei.de/demo/submodel/12345679"</aas:key>
+					</aas:keys>
+				</aas:submodelRef>
+				<aas:submodelRef>
+					<aas:keys>
+						<aas:key type="Submodel" local="true" idType="IRI">"http://www.zvei.de/demo/submodel/12345679_2"</aas:key>
+					</aas:keys>
+				</aas:submodelRef>
+			</aas:submodelRefs>
+			<aas:views>
+				<!-- This View is populated with all possible fields -->
+				<aas:view>
+					<aas:idShort>SampleView</aas:idShort>
+					<aas:category>test_categogy</aas:category>
+					<aas:description>
+						<aas:langString lang="EN">View_Description</aas:langString>
+					</aas:description>
+					<aas:parent>
+						<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+						<aas:keys>
+							<aas:key idType="IRI" local="false" type="Submodel">view_parent_id</aas:key>
+						</aas:keys>
+					</aas:parent>
+					<aas:semanticId>
+						<aas:keys>
+							<aas:key idType="IRI" local="false" type="Submodel">view_semantic_id</aas:key>
+						</aas:keys>
+					</aas:semanticId>
+					<aas:embeddedDataSpecification>
+						<aas:dataSpecificationContent>
+							<aas:dataSpecificationIEC61360>
+								<IEC61360:preferredName>
+									<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+									<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+								</IEC61360:preferredName>
+								<IEC61360:shortName>
+									<IEC61360:langString lang="DE">N</IEC61360:langString>
+								</IEC61360:shortName>
+								<IEC61360:unit>1/min</IEC61360:unit>
+								<IEC61360:unitId>
+									<IEC61360:keys>
+										<IEC61360:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</IEC61360:key>
+									</IEC61360:keys>
+								</IEC61360:unitId>
+								<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+							</aas:dataSpecificationIEC61360>
+						</aas:dataSpecificationContent>
+						<aas:dataSpecification>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+							</aas:keys>
+						</aas:dataSpecification>
+					</aas:embeddedDataSpecification>
+					<aas:containedElements>
+						<aas:containedElementRef>
+							<aas:keys>
+								<aas:key type="Submodel" local="true" idType="IRI">"http://www.zvei.de/demo/submodel/12345679"</aas:key>
+								<aas:key type="Property" local="true" idType="IdShort">rotationSpeed</aas:key>
+							</aas:keys>
+						</aas:containedElementRef>
+					</aas:containedElements>
+				</aas:view>
+				<!-- This is a View with only the minimal required information in it. To test for Nullpointers and such. -->
+				<aas:view>
+					<aas:idShort>EmptyView</aas:idShort>
+					<aas:containedElements></aas:containedElements>
+				</aas:view>
+			</aas:views>
+			<aas:conceptDictionaries>
+				<aas:conceptDictionary>
+					<aas:idShort>SampleDic</aas:idShort>
+					<aas:conceptDescriptionRefs>
+						<aas:conceptDescriptionRef>
+							<aas:keys>
+								<aas:key type="ConceptDescription" local="true" idType="IRDI">0173-1#02-BAA120#007</aas:key>
+							</aas:keys>
+						</aas:conceptDescriptionRef>
+						<aas:conceptDescriptionRef>
+							<aas:keys>
+								<aas:key type="ConceptDescription" local="true" idType="IRDI">0173-1#02-BAA120#007</aas:key>
+							</aas:keys>
+						</aas:conceptDescriptionRef>
+					</aas:conceptDescriptionRefs>
+				</aas:conceptDictionary>
+			</aas:conceptDictionaries>
+		</aas:assetAdministrationShell>
+		
+	</aas:assetAdministrationShells>
+	<aas:assets>
+		<!-- This Asset is populated with all possible fields -->
+		<aas:asset>
+			<aas:idShort>asset1</aas:idShort>
+			<aas:category>asset1_categogy</aas:category>
+			<aas:description>
+				<aas:langString lang="EN">asset1_Description</aas:langString>
+			</aas:description>
+			<aas:parent>
+				<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="Asset">asset_parent_id</aas:key>
+				</aas:keys>
+			</aas:parent>
+			<aas:identification idType="IRI">http://pk.festo.com/3s7plfdrs35</aas:identification>
+			<aas:administration>
+				<aas:version>1</aas:version>
+				<aas:revision>0</aas:revision>
+			</aas:administration>
+			<aas:embeddedDataSpecification>
+				<aas:dataSpecificationContent>
+					<aas:dataSpecificationIEC61360>
+						<IEC61360:preferredName>
+							<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+							<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+						</IEC61360:preferredName>
+						<IEC61360:shortName>
+							<IEC61360:langString lang="DE">N</IEC61360:langString>
+						</IEC61360:shortName>
+						<IEC61360:unit>1/min</IEC61360:unit>
+						<IEC61360:unitId>
+							<IEC61360:keys>
+								<IEC61360:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</IEC61360:key>
+							</IEC61360:keys>
+						</IEC61360:unitId>
+						<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+					</aas:dataSpecificationIEC61360>
+				</aas:dataSpecificationContent>
+				<aas:dataSpecification>
+					<aas:keys>
+						<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+					</aas:keys>
+				</aas:dataSpecification>
+			</aas:embeddedDataSpecification>
+			<aas:assetIdentificationModelRef>
+				<aas:keys>
+					<aas:key type="ConceptDescription" local="true" idType="IRI">www.festo.com/dic/08111234</aas:key>
+				</aas:keys>
+			</aas:assetIdentificationModelRef>
+			<aas:kind>Instance</aas:kind>
+		</aas:asset>
+		<aas:asset>
+			<aas:idShort>emptyAsset</aas:idShort>
+			<aas:identification idType="IRI">http://pk.festo.com/q30j38dlajx</aas:identification>
+		</aas:asset>
+	</aas:assets>
+	<aas:submodels>
+		<!-- This Submodel is populated with all possible fields -->
+		<aas:submodel>
+			<aas:idShort>submodel1</aas:idShort>
+			<aas:category>submodel1_categogy</aas:category>
+			<aas:description>
+				<aas:langString lang="EN">submode1_decription</aas:langString>
+			</aas:description>
+			<aas:parent>
+				<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="Submodel">submodel_parent_id</aas:key>
+				</aas:keys>
+			</aas:parent>
+			<aas:identification idType="IRI">http://www.zvei.de/demo/submodel/12345679</aas:identification>
+			<aas:administration>
+				<aas:version>1</aas:version>
+				<aas:revision>0</aas:revision>
+			</aas:administration>
+			<aas:kind>Instance</aas:kind>
+			<aas:semanticId>
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+				</aas:keys>
+			</aas:semanticId>
+			<aas:qualifier>
+				<aas:qualifiers>
+					<aas:formula>
+						<aas:dependsOnRefs>
+							<aas:reference>
+								<aas:keys>
+									<aas:key local="false" type="GlobalReference" idType="IRDI">qualifier_reference</aas:key>
+								</aas:keys>
+							</aas:reference>
+						</aas:dependsOnRefs>
+					</aas:formula>
+				</aas:qualifiers>
+				<aas:qualifiers>
+					<aas:qualifier>
+						<aas:valueId>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+							</aas:keys>
+						</aas:valueId>
+						<aas:value>qualifierValue</aas:value>
+						<aas:type>qualifierType</aas:type>
+						<aas:valueType>valueType</aas:valueType>
+						<aas:semanticId>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="GlobalReference">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+							</aas:keys>
+						</aas:semanticId>
+					</aas:qualifier>
+				</aas:qualifiers>
+			</aas:qualifier>
+			<aas:embeddedDataSpecification>
+				<aas:dataSpecificationContent>
+					<aas:dataSpecificationIEC61360>
+						<IEC61360:preferredName>
+							<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+							<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+						</IEC61360:preferredName>
+						<IEC61360:shortName>
+							<IEC61360:langString lang="DE">N</IEC61360:langString>
+						</IEC61360:shortName>
+						<IEC61360:unit>1/min</IEC61360:unit>
+						<IEC61360:unitId>
+							<IEC61360:keys>
+								<IEC61360:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</IEC61360:key>
+							</IEC61360:keys>
+						</IEC61360:unitId>
+						<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+					</aas:dataSpecificationIEC61360>
+				</aas:dataSpecificationContent>
+				<aas:dataSpecification>
+					<aas:keys>
+						<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+					</aas:keys>
+				</aas:dataSpecification>
+			</aas:embeddedDataSpecification>
+			<aas:submodelElements>
+				<aas:submodelElement>
+					<aas:property>
+						<aas:idShort>rotationSpeed</aas:idShort>
+						<aas:category>VARIABLE</aas:category>
+						<aas:semanticId>
+							<aas:keys>
+								<aas:key idType="IRI" type="ConceptDescription" local="true">www.festo.com/dic/08111234</aas:key>
+							</aas:keys>
+						</aas:semanticId>
+						<aas:qualifier>
+							<aas:qualifiers>
+								<aas:qualifier>
+									<aas:valueId>
+										<aas:keys>
+											<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+										</aas:keys>
+									</aas:valueId>
+									<aas:value>qualifierValue</aas:value>
+									<aas:type>qualifierType</aas:type>
+									<aas:valueType>valueType</aas:valueType>
+									<aas:semanticId>
+										<aas:keys>
+											<aas:key idType="IRI" local="false" type="GlobalReference">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+										</aas:keys>
+									</aas:semanticId>
+								</aas:qualifier>
+							</aas:qualifiers>
+						</aas:qualifier>
+						<aas:value>2000</aas:value>
+						<aas:valueType>double</aas:valueType>
+					</aas:property>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:property>
+						<aas:idShort>emptyDouble</aas:idShort>
+						<aas:valueType>double</aas:valueType>
+					</aas:property>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:basicEvent>
+						<aas:idShort>basic_event_id</aas:idShort>
+						<aas:observed>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+							</aas:keys>
+						</aas:observed>
+					</aas:basicEvent>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:entity>
+						<aas:idShort>entity_id</aas:idShort>
+						<aas:assetRef>
+							<aas:keys>
+								<aas:key idType="IRI" local="false" type="Submodel">http://www.zvei.de/demo/submodelDefinitions/87654346</aas:key>
+							</aas:keys>
+						</aas:assetRef>
+						<aas:statements>
+							<aas:submodelElement>
+								<aas:file>
+									<aas:idShort>file_ID</aas:idShort>
+									<aas:mimeType>file_mimetype</aas:mimeType>
+									<aas:value>file_value</aas:value>
+								</aas:file>
+							</aas:submodelElement>
+							<aas:submodelElement>
+								<aas:range>
+									<aas:idShort>range_id</aas:idShort>
+									<aas:valueType>int</aas:valueType>
+									<aas:min>10</aas:min>
+								</aas:range>
+							</aas:submodelElement>
+						</aas:statements>
+						<aas:entityType>CoManagedEntity</aas:entityType>
+					</aas:entity>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:multiLanguageProperty>
+						<aas:idShort>multi_language_property_id</aas:idShort>
+						<aas:valueId>
+							<aas:keys>
+								<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</aas:key>
+							</aas:keys>
+						</aas:valueId>
+						<aas:value>
+							<aas:langString lang="DE">Eine Beschreibung auf deutsch</aas:langString>
+							<aas:langString lang="EN">A description in english</aas:langString>
+						</aas:value>
+					</aas:multiLanguageProperty>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:range>
+						<aas:idShort>range_id</aas:idShort>
+						<aas:valueType>int</aas:valueType>
+						<aas:min>1</aas:min>
+						<aas:max>10</aas:max>
+					</aas:range>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:file>
+						<aas:idShort>file_id</aas:idShort>
+						<aas:mimeType>file_mimetype</aas:mimeType>
+						<aas:value>file_value</aas:value>
+					</aas:file>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:blob>
+						<aas:idShort>blob_id</aas:idShort>
+						<aas:value>YmxvYit2YWx1ZQ==</aas:value>
+						<aas:mimeType>blob_mimetype</aas:mimeType>
+					</aas:blob>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:referenceElement>
+						<aas:idShort>reference_ELE_ID</aas:idShort>
+						<aas:value>
+							<aas:keys>
+								<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</aas:key>
+							</aas:keys>
+						</aas:value>
+					</aas:referenceElement>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:submodelElementCollection>
+						<aas:idShort>submodelElementCollection_ID</aas:idShort>
+						<aas:allowDuplicates>true</aas:allowDuplicates>
+						<aas:ordered>false</aas:ordered>
+						<aas:value>
+							<aas:submodelElement>
+								<aas:file>
+									<aas:idShort>file_ID</aas:idShort>
+									<aas:mimeType>file_mimetype</aas:mimeType>
+									<aas:value>file_value</aas:value>
+								</aas:file>
+							</aas:submodelElement>
+							<aas:submodelElement>
+								<aas:blob>
+									<aas:idShort>blob_id</aas:idShort>
+									<aas:value>YmxvYit2YWx1ZQ==</aas:value>
+									<aas:mimeType>blob_mimetype</aas:mimeType>
+								</aas:blob>
+							</aas:submodelElement>
+						</aas:value>
+					</aas:submodelElementCollection>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:relationshipElement>
+						<aas:idShort>relationshipElement_ID</aas:idShort>
+						<aas:first>
+							<aas:keys>
+								<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#001</aas:key>
+							</aas:keys>
+						</aas:first>
+						<aas:second>
+							<aas:keys>
+								<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</aas:key>
+							</aas:keys>
+						</aas:second>
+					</aas:relationshipElement>
+				</aas:submodelElement>
+				<aas:submodelElement>
+					<aas:operation>
+						<aas:idShort>operation_ID</aas:idShort>
+						<aas:inputVariable>
+							<!-- The schema only allows one opVar in inputVariable, one in outputVariable and one in inoutputVariable. The Metamodel allows 0..* in each -->
+							<!-- To be able to have multiple Vars they are surrounded by <aas:operationVariable>. This is also violating the Schema. -->
+							<aas:operationVariable>
+								<aas:value>
+									<aas:file>
+										<aas:idShort>file_ID</aas:idShort>
+										<aas:mimeType>file_mimetype</aas:mimeType>
+										<aas:value>file_value</aas:value>
+									</aas:file>
+								</aas:value>
+							</aas:operationVariable>
+							<aas:operationVariable>
+								<aas:value>
+									<aas:blob>
+										<aas:idShort>blob_ID</aas:idShort>
+										<aas:value>YmxvYit2YWx1ZQ==</aas:value>
+										<aas:mimeType>blob_mimetype</aas:mimeType>
+									</aas:blob>
+								</aas:value>
+							</aas:operationVariable>
+						</aas:inputVariable>
+						<aas:outputVariable>
+							<aas:operationVariable>
+								<aas:value>
+									<aas:referenceElement>
+										<aas:idShort>reference_ELE_ID</aas:idShort>
+										<aas:value>
+											<aas:keys>
+												<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</aas:key>
+											</aas:keys>
+										</aas:value>
+									</aas:referenceElement>
+								</aas:value>
+							</aas:operationVariable>
+						</aas:outputVariable>
+						<aas:inoutputVariable>
+							<aas:operationVariable>
+								<aas:value>
+									<aas:referenceElement>
+										<aas:idShort>reference_ELE_ID2</aas:idShort>
+										<aas:value>
+											<aas:keys>
+												<aas:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#003</aas:key>
+											</aas:keys>
+										</aas:value>
+									</aas:referenceElement>
+								</aas:value>
+							</aas:operationVariable>
+						</aas:inoutputVariable>
+					</aas:operation>
+				</aas:submodelElement>
+			</aas:submodelElements>
+		</aas:submodel>
+
+	</aas:submodels>
+	<aas:conceptDescriptions>
+		<!-- This ConceptDescription is populated with all possible fields -->
+		<aas:conceptDescription>
+			<aas:idShort>conceptDescription1</aas:idShort>
+			<aas:category>cs_categogy</aas:category>
+			<aas:description>
+				<aas:langString lang="EN">conceptDescription_Description</aas:langString>
+			</aas:description>
+			<aas:parent>
+				<!-- Parent is currently a String in the Schema. But it should be a Reference. -->
+				<aas:keys>
+					<aas:key idType="IRI" local="false" type="ConceptDescription">cs_parent_id</aas:key>
+				</aas:keys>
+			</aas:parent>
+			<aas:identification idType="IRI">www.festo.com/dic/08111234</aas:identification>
+			<aas:administration>
+				<aas:version>1</aas:version>
+				<aas:revision>0</aas:revision>
+			</aas:administration>
+			<aas:embeddedDataSpecification>
+				<aas:dataSpecificationContent>
+					<aas:dataSpecificationIEC61360>
+						<IEC61360:preferredName>
+							<IEC61360:langString lang="DE">Drehzahl</IEC61360:langString>
+							<IEC61360:langString lang="EN">Rotation Speed</IEC61360:langString>
+						</IEC61360:preferredName>
+						<IEC61360:shortName>
+							<IEC61360:langString lang="DE">N</IEC61360:langString>
+						</IEC61360:shortName>
+						<IEC61360:unit>1/min</IEC61360:unit>
+						<IEC61360:unitId>
+							<IEC61360:keys>
+								<IEC61360:key local="false" type="GlobalReference" idType="IRDI">0173-1#05-AAA650#002</IEC61360:key>
+							</IEC61360:keys>
+						</IEC61360:unitId>
+						<IEC61360:valueFormat>NR1..5</IEC61360:valueFormat>
+					</aas:dataSpecificationIEC61360>
+				</aas:dataSpecificationContent>
+				<aas:dataSpecification>
+					<aas:keys>
+						<aas:key idType="IRI" local="false" type="GlobalReference">www.admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360</aas:key>
+					</aas:keys>
+				</aas:dataSpecification>
+			</aas:embeddedDataSpecification>
+			<aas:isCaseOf>
+				<aas:keys>
+					<aas:key idType="IRI" type="ConceptDescription" local="true">www.festo.com/dic/08111234</aas:key>
+					<aas:key idType="IRI" type="ConceptDescription" local="true">www.festo.com/dic/08111234_2</aas:key>
+				</aas:keys>
+			</aas:isCaseOf>
+		</aas:conceptDescription>
+		<!-- This is a ConceptDescription with only the minimal required information in it. To test for Nullpointers and such. -->
+		<aas:conceptDescription>
+			<aas:idShort>conceptDescription2</aas:idShort>
+			<aas:identification idType="IRI">www.festo.com/dic/08111234</aas:identification>
+		</aas:conceptDescription>
+	</aas:conceptDescriptions>
+</aas:aasenv>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/pom.xml b/components/basys.components/basyx.components.docker/pom.xml
index 9151452..26f35fd 100644
--- a/components/basys.components/basyx.components.docker/pom.xml
+++ b/components/basys.components/basyx.components.docker/pom.xml
@@ -18,6 +18,7 @@
 	<modules>
 		<module>basyx.components.simple</module>
 		<module>basyx.components.sqlregistry</module>
+		<module>basyx.components.xmlAAS</module>
 	</modules>
 	
 	<build>