diff --git a/api/src/main/java/fitconnect/api/Sender.java b/api/src/main/java/fitconnect/api/Sender.java
index 649abe5cd5156fe0fa7d570c4810e8634b37a2bc..efaaadc86023e2e67afdb0dda45984eff4530d70 100644
--- a/api/src/main/java/fitconnect/api/Sender.java
+++ b/api/src/main/java/fitconnect/api/Sender.java
@@ -1,11 +1,11 @@
 package fitconnect.api;
 
 import com.nimbusds.jose.jwk.RSAKey;
-import fitconnect.api.auth.OAuthToken;
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.domain.metadata.attachment.Attachment;
-import fitconnect.api.domain.metadata.data.Data;
-import fitconnect.api.validation.ValidationResult;
+import fitconnect.api.domain.auth.OAuthToken;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.domain.model.metadata.attachment.Attachment;
+import fitconnect.api.domain.model.metadata.data.Data;
+import fitconnect.api.domain.validation.ValidationResult;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/api/src/main/java/fitconnect/api/Subscriber.java b/api/src/main/java/fitconnect/api/Subscriber.java
index 8048452192444815d30ed1f9405f3f27cab51bf5..5f47f302360d9a2d991960853a2e0730abe9862a 100644
--- a/api/src/main/java/fitconnect/api/Subscriber.java
+++ b/api/src/main/java/fitconnect/api/Subscriber.java
@@ -1,11 +1,11 @@
 package fitconnect.api;
 
 import com.nimbusds.jose.jwk.RSAKey;
-import fitconnect.api.auth.OAuthToken;
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.domain.metadata.attachment.Attachment;
-import fitconnect.api.domain.metadata.data.Data;
-import fitconnect.api.validation.ValidationResult;
+import fitconnect.api.domain.auth.OAuthToken;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.domain.model.metadata.attachment.Attachment;
+import fitconnect.api.domain.model.metadata.data.Data;
+import fitconnect.api.domain.validation.ValidationResult;
 
 import java.util.Optional;
 
diff --git a/api/src/main/java/fitconnect/api/auth/OAuthToken.java b/api/src/main/java/fitconnect/api/domain/auth/OAuthToken.java
similarity index 93%
rename from api/src/main/java/fitconnect/api/auth/OAuthToken.java
rename to api/src/main/java/fitconnect/api/domain/auth/OAuthToken.java
index 77a9cbbcbfeda6a31eaee47860f928d99c0d504a..215dc9a2fc5918e82279a9cb7dd802883d7bae7c 100644
--- a/api/src/main/java/fitconnect/api/auth/OAuthToken.java
+++ b/api/src/main/java/fitconnect/api/domain/auth/OAuthToken.java
@@ -1,4 +1,4 @@
-package fitconnect.api.auth;
+package fitconnect.api.domain.auth;
 
 /**
  * Stores the authentication-token after the user has been authenticated
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/AdditionalReferenceInfo.java b/api/src/main/java/fitconnect/api/domain/model/metadata/AdditionalReferenceInfo.java
similarity index 94%
rename from api/src/main/java/fitconnect/api/domain/metadata/AdditionalReferenceInfo.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/AdditionalReferenceInfo.java
index c694fefd38f4c7de988b39fa9f1efbb49688f720..5bf28ef4b3504e439ed71e48d728720ea1dbec00 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/AdditionalReferenceInfo.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/AdditionalReferenceInfo.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata;
+package fitconnect.api.domain.model.metadata;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/AuthenticationInformation.java b/api/src/main/java/fitconnect/api/domain/model/metadata/AuthenticationInformation.java
similarity index 69%
rename from api/src/main/java/fitconnect/api/domain/metadata/AuthenticationInformation.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/AuthenticationInformation.java
index 6dc93fd9bd3915497c8873fc04189d87ce2dc65d..ea9a6a60a0b444e695d49b441b87030f95ea3f6a 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/AuthenticationInformation.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/AuthenticationInformation.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata;
+package fitconnect.api.domain.model.metadata;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/ContentStructure.java b/api/src/main/java/fitconnect/api/domain/model/metadata/ContentStructure.java
similarity index 81%
rename from api/src/main/java/fitconnect/api/domain/metadata/ContentStructure.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/ContentStructure.java
index 093f78e4d755a8e84f62376c10da22a81736a7c2..f028670343274381c4c29043b84c9b2f7d1f5642 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/ContentStructure.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/ContentStructure.java
@@ -1,11 +1,11 @@
-package fitconnect.api.domain.metadata;
+package fitconnect.api.domain.model.metadata;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-import fitconnect.api.domain.metadata.attachment.Attachment;
-import fitconnect.api.domain.metadata.data.Data;
+import fitconnect.api.domain.model.metadata.attachment.Attachment;
+import fitconnect.api.domain.model.metadata.data.Data;
 import lombok.Getter;
 import lombok.Setter;
 
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/Metadata.java b/api/src/main/java/fitconnect/api/domain/model/metadata/Metadata.java
similarity index 96%
rename from api/src/main/java/fitconnect/api/domain/metadata/Metadata.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/Metadata.java
index 74705e388dc719392277e3c81314812b90905ba7..694eb9f1e4d5b7f2c7ba2fe61535b937a67bd98d 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/Metadata.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/Metadata.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata;
+package fitconnect.api.domain.model.metadata;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/PaymentInformation.java b/api/src/main/java/fitconnect/api/domain/model/metadata/PaymentInformation.java
similarity index 68%
rename from api/src/main/java/fitconnect/api/domain/metadata/PaymentInformation.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/PaymentInformation.java
index 3c911876dffa21fb12162c6a99612047d6a2a4e3..d8b31aa856b8387baf558c3aa265a75f8b2a2cc2 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/PaymentInformation.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/PaymentInformation.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata;
+package fitconnect.api.domain.model.metadata;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/PublicServiceType.java b/api/src/main/java/fitconnect/api/domain/model/metadata/PublicServiceType.java
similarity index 95%
rename from api/src/main/java/fitconnect/api/domain/metadata/PublicServiceType.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/PublicServiceType.java
index e3a915022e6d6d5e59305089e06b31591549e7a9..e94184affb6b1343e4d0e17beb93ff3ffd1e1cad 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/PublicServiceType.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/PublicServiceType.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata;
+package fitconnect.api.domain.model.metadata;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/ReplyChannel.java b/api/src/main/java/fitconnect/api/domain/model/metadata/ReplyChannel.java
similarity index 66%
rename from api/src/main/java/fitconnect/api/domain/metadata/ReplyChannel.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/ReplyChannel.java
index 49802151d96956c9af65f44dbb39aaf11ded5680..1fca47d7517df78528c220894961e731ece90983 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/ReplyChannel.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/ReplyChannel.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata;
+package fitconnect.api.domain.model.metadata;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/Attachment.java b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/Attachment.java
similarity index 83%
rename from api/src/main/java/fitconnect/api/domain/metadata/attachment/Attachment.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/attachment/Attachment.java
index dc2ffca953517f66ee78daab95d9522c15876b4d..9dea17c63af767582a5d954840e845ff38e2861b 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/Attachment.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/Attachment.java
@@ -1,11 +1,11 @@
-package fitconnect.api.domain.metadata.attachment;
+package fitconnect.api.domain.model.metadata.attachment;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-import fitconnect.api.domain.metadata.attachment.signature.Hash__1;
-import fitconnect.api.domain.metadata.attachment.signature.Signature__1;
+import fitconnect.api.domain.model.metadata.attachment.signature.Hash__1;
+import fitconnect.api.domain.model.metadata.attachment.signature.Signature__1;
 import lombok.Getter;
 import lombok.Setter;
 
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/Purpose.java b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/Purpose.java
similarity index 95%
rename from api/src/main/java/fitconnect/api/domain/metadata/attachment/Purpose.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/attachment/Purpose.java
index 5505532561a231e694701c3b0a64f2cdd857ee35..255d0f09eec4988d734529b794a1450a65680dd6 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/Purpose.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/Purpose.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.attachment;
+package fitconnect.api.domain.model.metadata.attachment;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/EidasAdesProfile.java b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/EidasAdesProfile.java
similarity index 96%
rename from api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/EidasAdesProfile.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/EidasAdesProfile.java
index a72b5e8f9e0d05e071aa1abf93d8eb8d8e6db3b4..d5758d9e636ab03b50149906718788001902404a 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/EidasAdesProfile.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/EidasAdesProfile.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.attachment.signature;
+package fitconnect.api.domain.model.metadata.attachment.signature;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Hash__1.java b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Hash__1.java
similarity index 92%
rename from api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Hash__1.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Hash__1.java
index 407366428672c829101dea288924337cad341e11..15226e12e13ecd595cb085931f0c41ab0c4dc498 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Hash__1.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Hash__1.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.attachment.signature;
+package fitconnect.api.domain.model.metadata.attachment.signature;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/SignatureFormat.java b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/SignatureFormat.java
similarity index 95%
rename from api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/SignatureFormat.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/SignatureFormat.java
index 9bf563df3dbe2fee16513dd07c08c11748acf58b..3253d06f81077e0b4728205c328519bd71647548 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/SignatureFormat.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/SignatureFormat.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.attachment.signature;
+package fitconnect.api.domain.model.metadata.attachment.signature;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Signature__1.java b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Signature__1.java
similarity index 93%
rename from api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Signature__1.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Signature__1.java
index 2708095c758b671db3d0dbf16f75c7499ba028b6..6f91d1238be24ffd77f1556c574674ccd79d9049 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Signature__1.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Signature__1.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.attachment.signature;
+package fitconnect.api.domain.model.metadata.attachment.signature;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Type.java b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Type.java
similarity index 93%
rename from api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Type.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Type.java
index a9fc941bc34bf82a96f3b63da915c2b7b274249d..0c13021eaa35de11a73e0950431881d6bbeaa7fa 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Type.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/attachment/signature/Type.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.attachment.signature;
+package fitconnect.api.domain.model.metadata.attachment.signature;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/Data.java b/api/src/main/java/fitconnect/api/domain/model/metadata/data/Data.java
similarity index 94%
rename from api/src/main/java/fitconnect/api/domain/metadata/data/Data.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/data/Data.java
index 159655d3761868a2b20fa1829ef85675c808ac04..2b102bf233ec3fa14240f264e4060a0262206d1c 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/data/Data.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/data/Data.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.data;
+package fitconnect.api.domain.model.metadata.data;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/EidasAdesProfile.java b/api/src/main/java/fitconnect/api/domain/model/metadata/data/EidasAdesProfile.java
similarity index 97%
rename from api/src/main/java/fitconnect/api/domain/metadata/data/EidasAdesProfile.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/data/EidasAdesProfile.java
index 51723dd5d08edcff0b30c39bfc07f6e6a02c9873..d17d5a1a2db82a914b42bc0f010e10e54f891c17 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/data/EidasAdesProfile.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/data/EidasAdesProfile.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.data;
+package fitconnect.api.domain.model.metadata.data;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/Hash.java b/api/src/main/java/fitconnect/api/domain/model/metadata/data/Hash.java
similarity index 94%
rename from api/src/main/java/fitconnect/api/domain/metadata/data/Hash.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/data/Hash.java
index 815f1a4897828a09afe7115fe99ada398c80c581..b122728a98629d1e2e560dcb7fae4044e9bc32e5 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/data/Hash.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/data/Hash.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.data;
+package fitconnect.api.domain.model.metadata.data;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/MimeType.java b/api/src/main/java/fitconnect/api/domain/model/metadata/data/MimeType.java
similarity index 95%
rename from api/src/main/java/fitconnect/api/domain/metadata/data/MimeType.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/data/MimeType.java
index 026beced778f3455859d721acff80688472f5481..b434fb0c9d25cf2951a48e6ebd0cd0529c4cbf10 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/data/MimeType.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/data/MimeType.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.data;
+package fitconnect.api.domain.model.metadata.data;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/Signature.java b/api/src/main/java/fitconnect/api/domain/model/metadata/data/Signature.java
similarity index 94%
rename from api/src/main/java/fitconnect/api/domain/metadata/data/Signature.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/data/Signature.java
index 72f1ad881c67a12e93c4def39341a7a5a3339a8b..8ce03ed4ff93565528ee27ab9d25d9dd69912f4f 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/data/Signature.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/data/Signature.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.data;
+package fitconnect.api.domain.model.metadata.data;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/SignatureFormat.java b/api/src/main/java/fitconnect/api/domain/model/metadata/data/SignatureFormat.java
similarity index 96%
rename from api/src/main/java/fitconnect/api/domain/metadata/data/SignatureFormat.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/data/SignatureFormat.java
index de5b96c0625fd749afc979d491757f605ae1c642..e7d7517ad11f189dad4aca7c71cf227c3436b29e 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/data/SignatureFormat.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/data/SignatureFormat.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.data;
+package fitconnect.api.domain.model.metadata.data;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/SubmissionSchema.java b/api/src/main/java/fitconnect/api/domain/model/metadata/data/SubmissionSchema.java
similarity index 93%
rename from api/src/main/java/fitconnect/api/domain/metadata/data/SubmissionSchema.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/data/SubmissionSchema.java
index c2f76da4f7557c4de646fb94d02bf263156ffc95..960fcf067f7e81597461321113df0fc0d03fc3bd 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/data/SubmissionSchema.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/data/SubmissionSchema.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.data;
+package fitconnect.api.domain.model.metadata.data;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/Type.java b/api/src/main/java/fitconnect/api/domain/model/metadata/data/Type.java
similarity index 94%
rename from api/src/main/java/fitconnect/api/domain/metadata/data/Type.java
rename to api/src/main/java/fitconnect/api/domain/model/metadata/data/Type.java
index 4f91c120efeea52d22200b33840132286be36a28..e191ba5e7f0117dbef268f8a1a5d6df261a37fd6 100644
--- a/api/src/main/java/fitconnect/api/domain/metadata/data/Type.java
+++ b/api/src/main/java/fitconnect/api/domain/model/metadata/data/Type.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.metadata.data;
+package fitconnect.api.domain.model.metadata.data;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/api/src/main/java/fitconnect/api/domain/submission/Callback.java b/api/src/main/java/fitconnect/api/domain/model/submission/Callback.java
similarity index 85%
rename from api/src/main/java/fitconnect/api/domain/submission/Callback.java
rename to api/src/main/java/fitconnect/api/domain/model/submission/Callback.java
index b456431722a9ce24413a8a3ac3d0d270b0bdc2a9..5ac995c9388619f249c1e2c7f9c594f83049d59f 100644
--- a/api/src/main/java/fitconnect/api/domain/submission/Callback.java
+++ b/api/src/main/java/fitconnect/api/domain/model/submission/Callback.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.submission;
+package fitconnect.api.domain.model.submission;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Getter;
diff --git a/api/src/main/java/fitconnect/api/domain/submission/ServiceType.java b/api/src/main/java/fitconnect/api/domain/model/submission/ServiceType.java
similarity index 87%
rename from api/src/main/java/fitconnect/api/domain/submission/ServiceType.java
rename to api/src/main/java/fitconnect/api/domain/model/submission/ServiceType.java
index c3d3b2e1f502415c44d86826a52bce9870c616af..3a6748b47f6c0bfcb4279683f2a0498bff263e5f 100644
--- a/api/src/main/java/fitconnect/api/domain/submission/ServiceType.java
+++ b/api/src/main/java/fitconnect/api/domain/model/submission/ServiceType.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.submission;
+package fitconnect.api.domain.model.submission;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Getter;
diff --git a/api/src/main/java/fitconnect/api/domain/submission/Submission.java b/api/src/main/java/fitconnect/api/domain/model/submission/Submission.java
similarity index 92%
rename from api/src/main/java/fitconnect/api/domain/submission/Submission.java
rename to api/src/main/java/fitconnect/api/domain/model/submission/Submission.java
index 7aa806e37731476874e6eb81577db7fd2418eb87..d47e2c90b559a391d1742e4533fb2bd35f5fa766 100644
--- a/api/src/main/java/fitconnect/api/domain/submission/Submission.java
+++ b/api/src/main/java/fitconnect/api/domain/model/submission/Submission.java
@@ -1,4 +1,4 @@
-package fitconnect.api.domain.submission;
+package fitconnect.api.domain.model.submission;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Builder;
diff --git a/api/src/main/java/fitconnect/api/validation/ValidationResult.java b/api/src/main/java/fitconnect/api/domain/validation/ValidationResult.java
similarity index 95%
rename from api/src/main/java/fitconnect/api/validation/ValidationResult.java
rename to api/src/main/java/fitconnect/api/domain/validation/ValidationResult.java
index eee5b34a566f378e4e9067d7fddf4b1955bfcfd1..9013a4dd2e5b2b619297eafb5b9912cad6cd09c1 100644
--- a/api/src/main/java/fitconnect/api/validation/ValidationResult.java
+++ b/api/src/main/java/fitconnect/api/domain/validation/ValidationResult.java
@@ -1,4 +1,4 @@
-package fitconnect.api.validation;
+package fitconnect.api.domain.validation;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/api/src/main/java/fitconnect/api/auth/OAuthService.java b/api/src/main/java/fitconnect/api/services/auth/OAuthService.java
similarity index 89%
rename from api/src/main/java/fitconnect/api/auth/OAuthService.java
rename to api/src/main/java/fitconnect/api/services/auth/OAuthService.java
index e33bf4f7798579885d9254cc611b1cfdfa1b7259..e7c39903ed2af419a9a1cde4e7bb27de60d3b452 100644
--- a/api/src/main/java/fitconnect/api/auth/OAuthService.java
+++ b/api/src/main/java/fitconnect/api/services/auth/OAuthService.java
@@ -1,5 +1,6 @@
-package fitconnect.api.auth;
+package fitconnect.api.services.auth;
 
+import fitconnect.api.domain.auth.OAuthToken;
 import fitconnect.api.exceptions.AuthenticationException;
 
 public interface OAuthService {
diff --git a/api/src/main/java/fitconnect/api/crypto/CryptoService.java b/api/src/main/java/fitconnect/api/services/crypto/CryptoService.java
similarity index 98%
rename from api/src/main/java/fitconnect/api/crypto/CryptoService.java
rename to api/src/main/java/fitconnect/api/services/crypto/CryptoService.java
index 74483f2ce3ee7cb408f63dcff6f92e1b8121c231..d019c62e5d567f6985258e726ffc84934f861f45 100644
--- a/api/src/main/java/fitconnect/api/crypto/CryptoService.java
+++ b/api/src/main/java/fitconnect/api/services/crypto/CryptoService.java
@@ -1,4 +1,4 @@
-package fitconnect.api.crypto;
+package fitconnect.api.services.crypto;
 
 import com.nimbusds.jose.jwk.RSAKey;
 import fitconnect.api.exceptions.DecryptionException;
diff --git a/api/src/main/java/fitconnect/api/metadata/MetadataService.java b/api/src/main/java/fitconnect/api/services/metadata/MetadataService.java
similarity index 73%
rename from api/src/main/java/fitconnect/api/metadata/MetadataService.java
rename to api/src/main/java/fitconnect/api/services/metadata/MetadataService.java
index 94a847f081723404cbaf8b00ce5e3914d20f1603..a5140afd2a81a7a5310a67b7d19730ac9c7fff75 100644
--- a/api/src/main/java/fitconnect/api/metadata/MetadataService.java
+++ b/api/src/main/java/fitconnect/api/services/metadata/MetadataService.java
@@ -1,9 +1,9 @@
-package fitconnect.api.metadata;
+package fitconnect.api.services.metadata;
 
 import com.nimbusds.jose.jwk.RSAKey;
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.domain.metadata.attachment.Attachment;
-import fitconnect.api.domain.metadata.data.Data;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.domain.model.metadata.attachment.Attachment;
+import fitconnect.api.domain.model.metadata.data.Data;
 
 import java.util.List;
 
diff --git a/api/src/main/java/fitconnect/api/validation/CertificateValidator.java b/api/src/main/java/fitconnect/api/services/validation/CertificateValidator.java
similarity index 83%
rename from api/src/main/java/fitconnect/api/validation/CertificateValidator.java
rename to api/src/main/java/fitconnect/api/services/validation/CertificateValidator.java
index ea700b999cc4ed0225947db83110a11e28910e56..b5fee1804741189e2485262a1385a57519cd69ae 100644
--- a/api/src/main/java/fitconnect/api/validation/CertificateValidator.java
+++ b/api/src/main/java/fitconnect/api/services/validation/CertificateValidator.java
@@ -1,6 +1,7 @@
-package fitconnect.api.validation;
+package fitconnect.api.services.validation;
 
 import com.nimbusds.jose.jwk.RSAKey;
+import fitconnect.api.domain.validation.ValidationResult;
 
 /**
  * Validator for publicKeys and certificate chains
diff --git a/api/src/main/java/fitconnect/api/validation/MetadataValidator.java b/api/src/main/java/fitconnect/api/services/validation/MetadataValidator.java
similarity index 78%
rename from api/src/main/java/fitconnect/api/validation/MetadataValidator.java
rename to api/src/main/java/fitconnect/api/services/validation/MetadataValidator.java
index ba15f065145b81970ceb8f363f1315e156140d3b..a58725b944675c3e49ebf2a747204fdbc7b3e5d1 100644
--- a/api/src/main/java/fitconnect/api/validation/MetadataValidator.java
+++ b/api/src/main/java/fitconnect/api/services/validation/MetadataValidator.java
@@ -1,8 +1,9 @@
-package fitconnect.api.validation;
+package fitconnect.api.services.validation;
 
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.domain.metadata.attachment.Attachment;
-import fitconnect.api.domain.metadata.data.Data;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.domain.model.metadata.attachment.Attachment;
+import fitconnect.api.domain.model.metadata.data.Data;
+import fitconnect.api.domain.validation.ValidationResult;
 
 /**
  * A validator that ensure the integrity of the transferred metadata of a submission
diff --git a/client/src/main/java/de/fitconnect/client/ClientFactory.java b/client/src/main/java/de/fitconnect/client/ClientFactory.java
index 9be54f57f1dffc659d2a6d64d945d0a1cd4cdfe3..43301119bbe8d1dd0684cb4f56f896e4b0adbd3f 100644
--- a/client/src/main/java/de/fitconnect/client/ClientFactory.java
+++ b/client/src/main/java/de/fitconnect/client/ClientFactory.java
@@ -2,10 +2,10 @@ package de.fitconnect.client;
 
 import fitconnect.api.Sender;
 import fitconnect.api.Subscriber;
-import fitconnect.api.auth.OAuthService;
-import fitconnect.api.crypto.CryptoService;
-import fitconnect.api.validation.CertificateValidator;
-import fitconnect.api.validation.MetadataValidator;
+import fitconnect.api.services.auth.OAuthService;
+import fitconnect.api.services.crypto.CryptoService;
+import fitconnect.api.services.validation.CertificateValidator;
+import fitconnect.api.services.validation.MetadataValidator;
 import fitconnect.impl.SubmissionSender;
 import fitconnect.impl.SubmissionSubscriber;
 import fitconnect.impl.auth.FitCoAuthService;
diff --git a/client/src/main/java/de/fitconnect/client/FitConnectClient.java b/client/src/main/java/de/fitconnect/client/FitConnectClient.java
index d13bcfe9beb704ba776d8f19874a99f2b20430a1..47135fc66a598d0948538d721b281e5921528828 100644
--- a/client/src/main/java/de/fitconnect/client/FitConnectClient.java
+++ b/client/src/main/java/de/fitconnect/client/FitConnectClient.java
@@ -1,11 +1,11 @@
 package de.fitconnect.client;
 
 import fitconnect.api.Sender;
-import fitconnect.api.auth.OAuthToken;
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.domain.metadata.attachment.Attachment;
-import fitconnect.api.domain.metadata.data.Data;
-import fitconnect.api.domain.submission.Submission;
+import fitconnect.api.domain.auth.OAuthToken;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.domain.model.metadata.attachment.Attachment;
+import fitconnect.api.domain.model.metadata.data.Data;
+import fitconnect.api.domain.model.submission.Submission;
 import fitconnect.impl.logger.SdkLogger;
 
 import java.util.List;
diff --git a/client/src/main/java/de/fitconnect/client/TestRunner.java b/client/src/main/java/de/fitconnect/client/TestRunner.java
index 8b01abaf9b604bc198d95295322d4f807553c5a2..8d9f175b0d16f38dcff70288ab33c602af554160 100644
--- a/client/src/main/java/de/fitconnect/client/TestRunner.java
+++ b/client/src/main/java/de/fitconnect/client/TestRunner.java
@@ -1,8 +1,8 @@
 package de.fitconnect.client;
 
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.domain.metadata.data.Data;
-import fitconnect.api.domain.submission.Submission;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.domain.model.metadata.data.Data;
+import fitconnect.api.domain.model.submission.Submission;
 
 import java.util.Collections;
 
diff --git a/impl/src/main/java/fitconnect/impl/SubmissionSender.java b/impl/src/main/java/fitconnect/impl/SubmissionSender.java
index c60c458da95d85d47848977af1fce4078b90b825..62f4449269d8d36a67ee585841b3e9a90ddf35c5 100644
--- a/impl/src/main/java/fitconnect/impl/SubmissionSender.java
+++ b/impl/src/main/java/fitconnect/impl/SubmissionSender.java
@@ -2,17 +2,17 @@ package fitconnect.impl;
 
 import com.nimbusds.jose.jwk.RSAKey;
 import fitconnect.api.Sender;
-import fitconnect.api.auth.OAuthService;
-import fitconnect.api.auth.OAuthToken;
-import fitconnect.api.crypto.CryptoService;
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.domain.metadata.attachment.Attachment;
-import fitconnect.api.domain.metadata.data.Data;
+import fitconnect.api.services.auth.OAuthService;
+import fitconnect.api.domain.auth.OAuthToken;
+import fitconnect.api.services.crypto.CryptoService;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.domain.model.metadata.attachment.Attachment;
+import fitconnect.api.domain.model.metadata.data.Data;
 import fitconnect.api.exceptions.AuthenticationException;
 import fitconnect.api.exceptions.EncryptionException;
 import fitconnect.impl.logger.SdkLogger;
-import fitconnect.api.validation.CertificateValidator;
-import fitconnect.api.validation.ValidationResult;
+import fitconnect.api.services.validation.CertificateValidator;
+import fitconnect.api.domain.validation.ValidationResult;
 import fitconnect.impl.auth.FitCoAuthService;
 
 import java.nio.charset.StandardCharsets;
diff --git a/impl/src/main/java/fitconnect/impl/SubmissionSubscriber.java b/impl/src/main/java/fitconnect/impl/SubmissionSubscriber.java
index e8eea17c71b5c52aa1d62837eb315c8df4836f71..b0f7f0e6f579731b00118719e7960d9636d9d926 100644
--- a/impl/src/main/java/fitconnect/impl/SubmissionSubscriber.java
+++ b/impl/src/main/java/fitconnect/impl/SubmissionSubscriber.java
@@ -2,17 +2,17 @@ package fitconnect.impl;
 
 import com.nimbusds.jose.jwk.RSAKey;
 import fitconnect.api.Subscriber;
-import fitconnect.api.auth.OAuthService;
-import fitconnect.api.auth.OAuthToken;
-import fitconnect.api.crypto.CryptoService;
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.domain.metadata.attachment.Attachment;
-import fitconnect.api.domain.metadata.data.Data;
+import fitconnect.api.services.auth.OAuthService;
+import fitconnect.api.domain.auth.OAuthToken;
+import fitconnect.api.services.crypto.CryptoService;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.domain.model.metadata.attachment.Attachment;
+import fitconnect.api.domain.model.metadata.data.Data;
 import fitconnect.api.exceptions.AuthenticationException;
 import fitconnect.api.exceptions.DecryptionException;
 import fitconnect.impl.logger.SdkLogger;
-import fitconnect.api.validation.MetadataValidator;
-import fitconnect.api.validation.ValidationResult;
+import fitconnect.api.services.validation.MetadataValidator;
+import fitconnect.api.domain.validation.ValidationResult;
 import fitconnect.impl.auth.FitCoAuthService;
 
 import java.util.Optional;
diff --git a/impl/src/main/java/fitconnect/impl/auth/FitCoAuthService.java b/impl/src/main/java/fitconnect/impl/auth/FitCoAuthService.java
index 5b6a8574d2efd7eb0c3c86bcd9e6c54a9f844b09..4b73d3d466c08424e3d6976fe079642e4fbe901d 100644
--- a/impl/src/main/java/fitconnect/impl/auth/FitCoAuthService.java
+++ b/impl/src/main/java/fitconnect/impl/auth/FitCoAuthService.java
@@ -1,8 +1,8 @@
 package fitconnect.impl.auth;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import fitconnect.api.auth.OAuthService;
-import fitconnect.api.auth.OAuthToken;
+import fitconnect.api.services.auth.OAuthService;
+import fitconnect.api.domain.auth.OAuthToken;
 import fitconnect.api.exceptions.AuthenticationException;
 import fitconnect.impl.logger.SdkLogger;
 
diff --git a/impl/src/main/java/fitconnect/impl/crypto/JWECryptoService.java b/impl/src/main/java/fitconnect/impl/crypto/JWECryptoService.java
index f44905774a20293f1e8ddfad526c3c303263af9f..aa216e7035a67deaa4052c55b5f7b6bbdc9566af 100644
--- a/impl/src/main/java/fitconnect/impl/crypto/JWECryptoService.java
+++ b/impl/src/main/java/fitconnect/impl/crypto/JWECryptoService.java
@@ -4,7 +4,7 @@ import com.nimbusds.jose.*;
 import com.nimbusds.jose.crypto.RSADecrypter;
 import com.nimbusds.jose.crypto.RSAEncrypter;
 import com.nimbusds.jose.jwk.RSAKey;
-import fitconnect.api.crypto.CryptoService;
+import fitconnect.api.services.crypto.CryptoService;
 import fitconnect.api.exceptions.DecryptionException;
 import fitconnect.api.exceptions.EncryptionException;
 
diff --git a/impl/src/main/java/fitconnect/impl/validation/KeyValidator.java b/impl/src/main/java/fitconnect/impl/validation/KeyValidator.java
index db0fc67cc29316c32737859c4b4aa818e29edd70..33f8fdc95b1e6352d31096f3e0811d859cc270ee 100644
--- a/impl/src/main/java/fitconnect/impl/validation/KeyValidator.java
+++ b/impl/src/main/java/fitconnect/impl/validation/KeyValidator.java
@@ -1,8 +1,8 @@
 package fitconnect.impl.validation;
 
 import com.nimbusds.jose.jwk.RSAKey;
-import fitconnect.api.validation.CertificateValidator;
-import fitconnect.api.validation.ValidationResult;
+import fitconnect.api.services.validation.CertificateValidator;
+import fitconnect.api.domain.validation.ValidationResult;
 
 public class KeyValidator implements CertificateValidator {
 
diff --git a/impl/src/main/java/fitconnect/impl/validation/MetadataSubmissionValidator.java b/impl/src/main/java/fitconnect/impl/validation/MetadataSubmissionValidator.java
index b616452f9bc7ce12e72b09b0b1f060b797f6abed..495323dc23dd0be742d5cd74b6874d58faceebfc 100644
--- a/impl/src/main/java/fitconnect/impl/validation/MetadataSubmissionValidator.java
+++ b/impl/src/main/java/fitconnect/impl/validation/MetadataSubmissionValidator.java
@@ -2,9 +2,9 @@ package fitconnect.impl.validation;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import fitconnect.api.domain.metadata.Metadata;
-import fitconnect.api.validation.MetadataValidator;
-import fitconnect.api.validation.ValidationResult;
+import fitconnect.api.domain.model.metadata.Metadata;
+import fitconnect.api.services.validation.MetadataValidator;
+import fitconnect.api.domain.validation.ValidationResult;
 import fitconnect.impl.crypto.MetadataVerifier;
 import org.everit.json.schema.Schema;
 import org.everit.json.schema.ValidationException;
diff --git a/impl/src/test/java/fitconnect/impl/auth/OAuthTokenIntegrationTest.java b/impl/src/test/java/fitconnect/impl/auth/OAuthTokenIntegrationTest.java
index 5b6dcd62b160f9ef26b4ac46646c555ac7013d67..b7344225614f795206b76ea93001f715dce28a52 100644
--- a/impl/src/test/java/fitconnect/impl/auth/OAuthTokenIntegrationTest.java
+++ b/impl/src/test/java/fitconnect/impl/auth/OAuthTokenIntegrationTest.java
@@ -1,7 +1,7 @@
 package fitconnect.impl.auth;
 
 import fitconnect.api.Sender;
-import fitconnect.api.auth.OAuthToken;
+import fitconnect.api.domain.auth.OAuthToken;
 import fitconnect.impl.SubmissionSender;
 import org.junit.jupiter.api.Test;
 
diff --git a/impl/src/test/java/fitconnect/impl/crypto/JWECryptoServiceTest.java b/impl/src/test/java/fitconnect/impl/crypto/JWECryptoServiceTest.java
index c4b382f80fb8c6c9ed7790d9bdcdcd51b535ba57..a6e2c4a1100c37ddf981342662fa42deeac5c852 100644
--- a/impl/src/test/java/fitconnect/impl/crypto/JWECryptoServiceTest.java
+++ b/impl/src/test/java/fitconnect/impl/crypto/JWECryptoServiceTest.java
@@ -4,7 +4,7 @@ import com.nimbusds.jose.JOSEException;
 import com.nimbusds.jose.jwk.KeyUse;
 import com.nimbusds.jose.jwk.RSAKey;
 import com.nimbusds.jose.jwk.gen.RSAKeyGenerator;
-import fitconnect.api.crypto.CryptoService;
+import fitconnect.api.services.crypto.CryptoService;
 import org.junit.jupiter.api.Test;
 
 import java.util.UUID;