Merge "Adds minor improvements"
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/metamodel/map/AssetAdministrationShell.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/metamodel/map/AssetAdministrationShell.java
index 918e2e6..65e87fc 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/metamodel/map/AssetAdministrationShell.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/metamodel/map/AssetAdministrationShell.java
@@ -26,6 +26,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.reference.IReference;
 import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
 import org.eclipse.basyx.submodel.metamodel.map.modeltype.ModelType;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.AdministrativeInformation;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasDataSpecification;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.Identifiable;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings;
@@ -136,8 +137,8 @@
 		return Identifiable.createAsFacade(this).getIdentification();
 	}
 
-	public void setAdministration(String version, String revision) {
-		Identifiable.createAsFacade(this).setAdministration(version, revision);
+	public void setAdministration(AdministrativeInformation information) {
+		Identifiable.createAsFacade(this).setAdministration(information);
 	}
 
 	public void setIdentification(IIdentifier id) {
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/metamodel/map/parts/Asset.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/metamodel/map/parts/Asset.java
index 58a696f..c2aa529 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/metamodel/map/parts/Asset.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/metamodel/map/parts/Asset.java
@@ -10,6 +10,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.qualifier.IAdministrativeInformation;
 import org.eclipse.basyx.submodel.metamodel.api.reference.IReference;
 import org.eclipse.basyx.submodel.metamodel.map.modeltype.ModelType;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.AdministrativeInformation;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasDataSpecification;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.Identifiable;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings;
@@ -109,8 +110,8 @@
 		return Identifiable.createAsFacade(this).getIdentification();
 	}
 
-	public void setAdministration(String version, String revision) {
-		Identifiable.createAsFacade(this).setAdministration(version, revision);
+	public void setAdministration(AdministrativeInformation information) {
+		Identifiable.createAsFacade(this).setAdministration(information);
 	}
 
 	public void setIdentification(IdentifierType idType, String id) {
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/SubModel.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/SubModel.java
index b4cc238..b442953 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/SubModel.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/SubModel.java
@@ -18,6 +18,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.property.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.map.modeltype.ModelType;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.AdministrativeInformation;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasDataSpecification;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasSemantics;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.Identifiable;
@@ -146,8 +147,8 @@
 		return Identifiable.createAsFacade(this).getIdentification();
 	}
 
-	public void setAdministration(String version, String revision) {
-		Identifiable.createAsFacade(this).setAdministration(version, revision);
+	public void setAdministration(AdministrativeInformation information) {
+		Identifiable.createAsFacade(this).setAdministration(information);
 	}
 
 	public void setIdentification(IdentifierType idType, String id) {
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/identifier/Identifier.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/identifier/Identifier.java
index cbb20b4..d5582d9 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/identifier/Identifier.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/identifier/Identifier.java
@@ -73,4 +73,41 @@
 	public void setId(String newValue) {
 		put(Identifier.ID, newValue);
 	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		String id = getId();
+		IdentifierType idType = getIdType();
+		int result = 1;
+		result = prime * result + ((id == null) ? 0 : id.hashCode());
+		result = prime * result + ((idType == null) ? 0 : idType.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		String id = getId();
+		IdentifierType idType = getIdType();
+
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		Identifier other = (Identifier) obj;
+		if (id == null) {
+			if (other.getId() != null)
+				return false;
+		} else if (!id.equals(other.getId()))
+			return false;
+		if (idType == null) {
+			if (other.getIdType() != null)
+				return false;
+		} else if (!idType.equals(other.getIdType()))
+			return false;
+		return true;
+	}
+
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/parts/ConceptDescription.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/parts/ConceptDescription.java
index 464f0d0..11eb2c2 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/parts/ConceptDescription.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/parts/ConceptDescription.java
@@ -13,6 +13,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.reference.IReference;
 import org.eclipse.basyx.submodel.metamodel.map.dataspecification.DataSpecification;
 import org.eclipse.basyx.submodel.metamodel.map.modeltype.ModelType;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.AdministrativeInformation;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasDataSpecification;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.Identifiable;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings;
@@ -84,8 +85,8 @@
 		return Identifiable.createAsFacade(this).getIdentification();
 	}
 
-	public void setAdministration(String version, String revision) {
-		Identifiable.createAsFacade(this).setAdministration(version, revision);
+	public void setAdministration(AdministrativeInformation information) {
+		Identifiable.createAsFacade(this).setAdministration(information);
 	}
 
 	public void setIdentification(IdentifierType idType, String id) {
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/qualifier/Identifiable.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/qualifier/Identifiable.java
index f122939..7581049 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/qualifier/Identifiable.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/qualifier/Identifiable.java
@@ -74,8 +74,8 @@
 		return Identifier.createAsFacade((Map<String, Object>) get(Identifiable.IDENTIFICATION));
 	}
 
-	public void setAdministration(String version, String revision) {
-		put(Identifiable.ADMINISTRATION, new AdministrativeInformation(version, revision));
+	public void setAdministration(AdministrativeInformation info) {
+		put(Identifiable.ADMINISTRATION, info);
 	}
 
 	public void setIdentification(IdentifierType idType, String id) {
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/AssetAdministrationShellSuite.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/AssetAdministrationShellSuite.java
index 592fb98..09bbd60 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/AssetAdministrationShellSuite.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/AssetAdministrationShellSuite.java
@@ -11,11 +11,13 @@
 import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
+import org.eclipse.basyx.submodel.metamodel.api.qualifier.IAdministrativeInformation;
 import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
 import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyType;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.property.ISingleProperty;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.AdministrativeInformation;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Key;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
@@ -32,9 +34,9 @@
  *
  */
 public abstract class AssetAdministrationShellSuite {
-
-
-	protected static final Reference EXPECTEDASSETREF = new Reference(new Key(KeyElements.ASSET, false, "AssetRef", KeyType.CUSTOM));
+	protected static final Reference EXPECTED_ASSETREF = new Reference(new Key(KeyElements.ASSET, false, "AssetRef", KeyType.CUSTOM));
+	protected static final Reference EXPECTED_DERIVEDFROMREF = new Reference(new Key(KeyElements.ASSETADMINISTRATIONSHELL, false, "AASRef", KeyType.CUSTOM));
+	protected static final AdministrativeInformation EXPECTED_ADMINISTRATIVEINFORMATION = new AdministrativeInformation("1", "2");
 
 	// String constants used in this test case
 	protected static final IIdentifier SMID = new Identifier(IdentifierType.CUSTOM, "smId");
@@ -60,6 +62,12 @@
 	 * @return
 	 */
 	protected static AssetAdministrationShell retrieveBaselineShell() {
+		/*
+		 * ! Caution: If the AAS is constructed in any way that is not using the
+		 * setters, additional tests for setters are needed. Currently, this is tested
+		 * implicitly
+		 */
+
 		// Create descriptor for the SubModel
 		SubmodelDescriptor smDescriptor = new SubmodelDescriptor(retrieveBaselineSM(), SMENDPOINT);
 
@@ -67,7 +75,9 @@
 		AssetAdministrationShell aas = new AssetAdministrationShell();
 		aas.addSubModel(smDescriptor);
 		aas.setIdShort(AASIDSHORT);
-		aas.setAssetReference(EXPECTEDASSETREF);
+		aas.setAssetReference(EXPECTED_ASSETREF);
+		aas.setDerivedFrom(EXPECTED_DERIVEDFROMREF);
+		aas.setAdministration(EXPECTED_ADMINISTRATIVEINFORMATION);
 
 		return aas;
 	}
@@ -79,6 +89,12 @@
 	 * @return
 	 */
 	protected static SubModel retrieveBaselineSM() {
+		/*
+		 * ! Caution: If the Submodel is constructed in any way that is not using the
+		 * setters, additional tests for setters are needed. Currently, this is tested
+		 * implicitly
+		 */
+
 		// Create a SubModel containing no operations and one property
 		Property p = new Property(PROPVAL);
 		p.setIdShort(PROPID);
@@ -90,9 +106,12 @@
 		return sm;
 	}
 
+	/**
+	 * Tests retrieving the reference to the Asset described by the AAS
+	 */
 	@Test
 	public void testAssetRef() {
-		assertEquals(EXPECTEDASSETREF, retrieveShell().getAssetReference());
+		assertEquals(EXPECTED_ASSETREF, retrieveShell().getAssetReference());
 	}
 
 	/**
@@ -135,4 +154,21 @@
 		SubmodelDescriptor desc = descriptors.iterator().next();
 		assertEquals(SMENDPOINT, desc.getFirstEndpoint());
 	 }
+	
+	/**
+	 * Tests retrieving the reference to the AAS the current AAS is derived from
+	 */
+	@Test
+	public void testGetDerivedFrom() {
+		IAssetAdministrationShell shell = retrieveShell();
+		assertEquals(EXPECTED_DERIVEDFROMREF, shell.getDerivedFrom());
+	}
+
+	@Test
+	public void testGetAdministrativeInformation() {
+		IAssetAdministrationShell shell = retrieveShell();
+		IAdministrativeInformation info = shell.getAdministration();
+		assertEquals(EXPECTED_ADMINISTRATIVEINFORMATION.getRevision(), info.getRevision());
+		assertEquals(EXPECTED_ADMINISTRATIVEINFORMATION.getVersion(), info.getVersion());
+	}
 }
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/map/TestAssetAdministrationShell.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/map/TestAssetAdministrationShell.java
index 937fe88..26439c8 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/map/TestAssetAdministrationShell.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/map/TestAssetAdministrationShell.java
@@ -9,11 +9,7 @@
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
 import org.eclipse.basyx.aas.metamodel.map.descriptor.SubmodelDescriptor;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
-import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
-import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyType;
 import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
-import org.eclipse.basyx.submodel.metamodel.map.reference.Key;
-import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.testsuite.regression.aas.metamodel.AssetAdministrationShellSuite;
 import org.junit.Before;
 import org.junit.Test;
@@ -22,7 +18,7 @@
  * Tests the map implementation of {@link IAssetAdministrationShell} based on
  * the AAS test suite. <br />
  * Additionally to the test suite, the setters of the map implementation are
- * testes
+ * tested
  * 
  * @author schnicke
  *
@@ -45,16 +41,8 @@
 	}
 
 	@Test
-	public void testSetAndGetReference() {
-		AssetAdministrationShell aas = retrieveShell();
-		Reference ref = new Reference(new Key(KeyElements.ASSET, false, "123", KeyType.CUSTOM));
-		aas.setAssetReference(ref);
-		assertEquals(ref, aas.getAssetReference());
-	}
-
-	@Test
-	public void testSetAndGetSubmodelDescriptors() {
-		AssetAdministrationShell aas = retrieveShell();
+	public void testSetSubmodelDescriptors() {
+		AssetAdministrationShell aas = new AssetAdministrationShell();
 
 		// Set new Submodel descriptors
 		Identifier id = new Identifier(IdentifierType.CUSTOM, "identifier");
@@ -85,7 +73,6 @@
 		// Select new descriptor
 		desc = descriptors.stream().filter(d -> d.getIdShort().equals(idShort2)).findFirst().get();
 		assertEquals(idShort2, desc.getIdShort());
-
 	}
 
 	@Override
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedCollectionProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedCollectionProperty.java
similarity index 97%
rename from sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedCollectionProperty.java
rename to sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedCollectionProperty.java
index d945028..f4c25c9 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedCollectionProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedCollectionProperty.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.testsuite.regression.submodel.model.connected;
+package org.eclipse.basyx.testsuite.regression.submodel.metamodel.connected;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedContainerProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedContainerProperty.java
similarity index 97%
rename from sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedContainerProperty.java
rename to sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedContainerProperty.java
index 316d0b6..560d27e 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedContainerProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedContainerProperty.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.testsuite.regression.submodel.model.connected;
+package org.eclipse.basyx.testsuite.regression.submodel.metamodel.connected;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedMapProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedMapProperty.java
similarity index 97%
rename from sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedMapProperty.java
rename to sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedMapProperty.java
index 9fd8502..90c36a7 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedMapProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedMapProperty.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.testsuite.regression.submodel.model.connected;
+package org.eclipse.basyx.testsuite.regression.submodel.metamodel.connected;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedOperation.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedOperation.java
similarity index 96%
rename from sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedOperation.java
rename to sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedOperation.java
index 075e7c9..643eda3 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedOperation.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedOperation.java
@@ -1,7 +1,7 @@
 /**
  *
  */
-package org.eclipse.basyx.testsuite.regression.submodel.model.connected;
+package org.eclipse.basyx.testsuite.regression.submodel.metamodel.connected;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedSingleProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSingleProperty.java
similarity index 96%
rename from sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedSingleProperty.java
rename to sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSingleProperty.java
index 39a3a71..d5bd644 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedSingleProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSingleProperty.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.testsuite.regression.submodel.model.connected;
+package org.eclipse.basyx.testsuite.regression.submodel.metamodel.connected;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedSubModel.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubModel.java
similarity index 98%
rename from sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedSubModel.java
rename to sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubModel.java
index 73cf326..b843710 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/model/connected/TestConnectedSubModel.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubModel.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.testsuite.regression.submodel.model.connected;
+package org.eclipse.basyx.testsuite.regression.submodel.metamodel.connected;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/identifier/TestIdentifier.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/identifier/TestIdentifier.java
new file mode 100644
index 0000000..c7c8584
--- /dev/null
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/identifier/TestIdentifier.java
@@ -0,0 +1,43 @@
+package org.eclipse.basyx.testsuite.regression.submodel.metamodel.map.identifier;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
+import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
+import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
+import org.junit.Test;
+
+/**
+ * Tests constructor, setter and getter of {@link Identifier} for their
+ * correctness
+ * 
+ * @author schnicke
+ *
+ */
+public class TestIdentifier {
+
+	@Test
+	public void testConstructor() {
+		IdentifierType type = IdentifierType.CUSTOM;
+		String id = "testId";
+		IIdentifier identifier = new Identifier(type, id);
+		assertEquals(identifier.getIdType(), type);
+		assertEquals(identifier.getId(), id);
+	}
+
+	@Test
+	public void testSetType() {
+		IdentifierType type = IdentifierType.IRI;
+		Identifier identifier = new Identifier();
+		identifier.setIdType(type);
+		assertEquals(type, identifier.getIdType());
+	}
+
+	@Test
+	public void testSetId() {
+		String id = "testId";
+		Identifier identifier = new Identifier();
+		identifier.setId(id);
+		assertEquals(id, identifier.getId());
+	}
+}