diff --git a/build.gradle b/build.gradle
index 34f0707183e6c6741a090eca85db187bd1d2d0cc..378199803bfcfe2365b0739beb78fa29a4a96a79 100644
--- a/build.gradle
+++ b/build.gradle
@@ -247,9 +247,7 @@ jacocoTestCoverageVerification {
             ]
             excludes = [
                     '**.model*',
-                    '**.exceptions**',
-                    '**.exception**',
-                    'net.geant.nmaas.portal.api.bulk'
+                    '**.exceptions**'
             ]
             limit {
                 counter = 'INSTRUCTION'
@@ -260,8 +258,7 @@ jacocoTestCoverageVerification {
         rule {
             element = 'PACKAGE'
             includes = [
-                    'net.geant.nmaas.orchestration.**',
-                    'net.geant.nmaas.portal.api.bulk'
+                    'net.geant.nmaas.orchestration.**'
             ]
             excludes = [
                     '**.model*',
diff --git a/src/integrationTest/java/net/geant/nmaas/portal/api/configuration/ConfigurationControllerTest.java b/src/integrationTest/java/net/geant/nmaas/portal/api/configuration/ConfigurationControllerTest.java
index d9dc7e03f7f7996863c85f78aacdb0e984ac3a25..d3ac198289fbdb5b1124718312dfaad70a3dcc39 100644
--- a/src/integrationTest/java/net/geant/nmaas/portal/api/configuration/ConfigurationControllerTest.java
+++ b/src/integrationTest/java/net/geant/nmaas/portal/api/configuration/ConfigurationControllerTest.java
@@ -2,6 +2,7 @@ package net.geant.nmaas.portal.api.configuration;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import net.geant.nmaas.portal.api.BaseControllerTestSetup;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.api.i18n.api.InternationalizationView;
 import net.geant.nmaas.portal.persistent.entity.User;
 import net.geant.nmaas.portal.persistent.entity.UsersHelper;
diff --git a/src/integrationTest/java/net/geant/nmaas/portal/api/user/UsersControllerIntTest.java b/src/integrationTest/java/net/geant/nmaas/portal/api/user/UsersControllerIntTest.java
index c4921e7bf0a844a2e0f32febb65c898b1033fc33..92c482a89f9902dbed4712118172894120d32300 100644
--- a/src/integrationTest/java/net/geant/nmaas/portal/api/user/UsersControllerIntTest.java
+++ b/src/integrationTest/java/net/geant/nmaas/portal/api/user/UsersControllerIntTest.java
@@ -10,8 +10,8 @@ import net.geant.nmaas.portal.api.domain.PasswordReset;
 import net.geant.nmaas.portal.api.domain.UserRequest;
 import net.geant.nmaas.portal.api.domain.UserRoleView;
 import net.geant.nmaas.portal.api.domain.UserView;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.api.security.JWTTokenService;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.User;
diff --git a/src/integrationTest/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceIntTest.java b/src/integrationTest/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceIntTest.java
index 99f48216d8a201f94a4ec36277bb1d4ac90d7dd6..c218c1adea52a5780b3c4b33d1089d6da8c28e89 100644
--- a/src/integrationTest/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceIntTest.java
+++ b/src/integrationTest/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceIntTest.java
@@ -2,10 +2,10 @@ package net.geant.nmaas.portal.service.impl;
 
 import jakarta.transaction.Transactional;
 import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.janitor.JanitorService;
-import net.geant.nmaas.portal.api.bulk.BulkDeploymentViewS;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentViewS;
 import net.geant.nmaas.portal.api.bulk.BulkType;
 import net.geant.nmaas.portal.api.bulk.CsvDomain;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
 import net.geant.nmaas.portal.persistent.entity.BulkDeployment;
 import net.geant.nmaas.portal.persistent.entity.BulkDeploymentState;
diff --git a/src/integrationTest/java/net/geant/nmaas/portal/service/impl/LocalFileStorageServiceTest.java b/src/integrationTest/java/net/geant/nmaas/portal/service/impl/LocalFileStorageServiceTest.java
index 3b01ff02670b783969f93724c56398aa27429fa1..110262496529de0191f98467ded48606ef4bda46 100644
--- a/src/integrationTest/java/net/geant/nmaas/portal/service/impl/LocalFileStorageServiceTest.java
+++ b/src/integrationTest/java/net/geant/nmaas/portal/service/impl/LocalFileStorageServiceTest.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.service.impl;
 
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.StorageException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.StorageException;
 import net.geant.nmaas.portal.persistent.entity.FileInfo;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/src/main/java/net/geant/nmaas/kubernetes/KubernetesConnectorHelper.java b/src/main/java/net/geant/nmaas/kubernetes/KubernetesConnectorHelper.java
index fb1391f8a1be91e1d2a13ee7bb755596cb89d523..ab2d4000520db7f7ab25f3a8bd1a472ea5fa1f4b 100644
--- a/src/main/java/net/geant/nmaas/kubernetes/KubernetesConnectorHelper.java
+++ b/src/main/java/net/geant/nmaas/kubernetes/KubernetesConnectorHelper.java
@@ -5,7 +5,7 @@ import io.fabric8.kubernetes.client.KubernetesClient;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.orchestration.AppDeploymentRepositoryManager;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.AppInstance;
 import net.geant.nmaas.portal.service.ApplicationInstanceService;
 import org.springframework.stereotype.Component;
diff --git a/src/main/java/net/geant/nmaas/nmservice/configuration/gitlab/GitLabEventsListener.java b/src/main/java/net/geant/nmaas/nmservice/configuration/gitlab/GitLabEventsListener.java
index 34e4ce562525fbe35f3e7a931fed75cd80c1c12b..bbc39b7783117c54c3070ef0ec7a1cb5af8cb9af 100644
--- a/src/main/java/net/geant/nmaas/nmservice/configuration/gitlab/GitLabEventsListener.java
+++ b/src/main/java/net/geant/nmaas/nmservice/configuration/gitlab/GitLabEventsListener.java
@@ -9,7 +9,7 @@ import net.geant.nmaas.nmservice.configuration.gitlab.events.RemoveUserFromRepos
 import net.geant.nmaas.nmservice.configuration.gitlab.events.UserSshKeysUpdatedGitlabEvent;
 import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.KubernetesRepositoryManager;
 import net.geant.nmaas.orchestration.Identifier;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Component;
 
diff --git a/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/KubernetesManager.java b/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/KubernetesManager.java
index ab50670ce702020ee8318f6a3f813de6ec4c2eea..d3fe9e1e81b0bc3140053a1c0bf6771d36569524 100644
--- a/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/KubernetesManager.java
+++ b/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/KubernetesManager.java
@@ -40,7 +40,7 @@ import net.geant.nmaas.orchestration.entities.AppDeploymentSpec;
 import net.geant.nmaas.orchestration.entities.AppStorageVolume;
 import net.geant.nmaas.orchestration.exceptions.InvalidConfigurationException;
 import net.geant.nmaas.orchestration.exceptions.InvalidDeploymentIdException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.utils.logging.LogLevel;
 import net.geant.nmaas.utils.logging.Loggable;
 import org.apache.commons.lang3.StringUtils;
diff --git a/src/main/java/net/geant/nmaas/notifications/NotificationController.java b/src/main/java/net/geant/nmaas/notifications/NotificationController.java
index d3e7619a84e71894702b3e76285ab523e8d18377..964b5f1647e54bbdbc0513a95bda937b55055f7e 100644
--- a/src/main/java/net/geant/nmaas/notifications/NotificationController.java
+++ b/src/main/java/net/geant/nmaas/notifications/NotificationController.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.notifications;
 
 import net.geant.nmaas.notifications.templates.MailType;
-import net.geant.nmaas.portal.api.exception.AuthenticationException;
+import net.geant.nmaas.portal.api.exceptions.AuthenticationException;
 import net.geant.nmaas.utils.captcha.ValidateCaptcha;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
diff --git a/src/main/java/net/geant/nmaas/notifications/NotificationManager.java b/src/main/java/net/geant/nmaas/notifications/NotificationManager.java
index 575d94cab5e409f9491cde4dc5e6b49381e6bacb..8686a47eb584cdbcbacbf409ad4bdfd49b8a5403 100644
--- a/src/main/java/net/geant/nmaas/notifications/NotificationManager.java
+++ b/src/main/java/net/geant/nmaas/notifications/NotificationManager.java
@@ -16,11 +16,11 @@ import net.geant.nmaas.notifications.templates.api.LanguageMailContentView;
 import net.geant.nmaas.notifications.templates.api.MailTemplateView;
 import net.geant.nmaas.notifications.types.persistence.entity.FormType;
 import net.geant.nmaas.notifications.types.service.FormTypeService;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.api.domain.UserView;
 import net.geant.nmaas.portal.api.domain.GroupAppListElement;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.Role;
 import net.geant.nmaas.portal.persistent.entity.User;
 import net.geant.nmaas.portal.service.ConfigurationManager;
diff --git a/src/main/java/net/geant/nmaas/notifications/types/service/FormTypeService.java b/src/main/java/net/geant/nmaas/notifications/types/service/FormTypeService.java
index 21426f5f5f09d240b3fe1b6ac0bc6d37589663fe..6b7d6fce5416bd8624b2705f6cf7b6d79c00ab61 100644
--- a/src/main/java/net/geant/nmaas/notifications/types/service/FormTypeService.java
+++ b/src/main/java/net/geant/nmaas/notifications/types/service/FormTypeService.java
@@ -5,7 +5,6 @@ import net.geant.nmaas.notifications.types.model.FormTypeRequest;
 import net.geant.nmaas.notifications.types.model.FormTypeView;
 import net.geant.nmaas.notifications.types.persistence.entity.FormType;
 import net.geant.nmaas.notifications.types.persistence.repository.FormTypeRepository;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
 import net.geant.nmaas.portal.exceptions.DataConflictException;
 import org.springframework.stereotype.Service;
 
diff --git a/src/main/java/net/geant/nmaas/orchestration/DefaultAppLifecycleManager.java b/src/main/java/net/geant/nmaas/orchestration/DefaultAppLifecycleManager.java
index 922afaeb1fb79a51e11648bcf95aefbdfa92a075..002a19f318cf343a71ec92866e55dd60e8420291 100644
--- a/src/main/java/net/geant/nmaas/orchestration/DefaultAppLifecycleManager.java
+++ b/src/main/java/net/geant/nmaas/orchestration/DefaultAppLifecycleManager.java
@@ -21,7 +21,7 @@ import net.geant.nmaas.orchestration.events.app.AppUpgradeActionEvent;
 import net.geant.nmaas.orchestration.events.app.AppVerifyRequestActionEvent;
 import net.geant.nmaas.orchestration.events.app.AppVerifyServiceActionEvent;
 import net.geant.nmaas.orchestration.exceptions.InvalidDeploymentIdException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.service.ConfigurationManager;
 import net.geant.nmaas.utils.logging.LogLevel;
 import net.geant.nmaas.utils.logging.Loggable;
diff --git a/src/main/java/net/geant/nmaas/orchestration/jobs/DomainCreationJob.java b/src/main/java/net/geant/nmaas/orchestration/jobs/DomainCreationJob.java
index a83c3537689faee10cfd2b22ed82cd1fe353b7bd..3d5d751dc1c2fdf6e29f30d5c7f278305e43e37a 100644
--- a/src/main/java/net/geant/nmaas/orchestration/jobs/DomainCreationJob.java
+++ b/src/main/java/net/geant/nmaas/orchestration/jobs/DomainCreationJob.java
@@ -4,7 +4,7 @@ import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.orchestration.exceptions.WebServiceCommunicationException;
 import net.geant.nmaas.portal.api.domain.DomainView;
 import net.geant.nmaas.portal.api.domain.WebhookEventDto;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.WebhookEventType;
 import net.geant.nmaas.portal.service.DomainService;
diff --git a/src/main/java/net/geant/nmaas/orchestration/jobs/DomainGroupJob.java b/src/main/java/net/geant/nmaas/orchestration/jobs/DomainGroupJob.java
index 7fe42451ebba65a1061e0981e789e9c0d823826a..0c4d59056de9625701219e18528b6407b18ae5ba 100644
--- a/src/main/java/net/geant/nmaas/orchestration/jobs/DomainGroupJob.java
+++ b/src/main/java/net/geant/nmaas/orchestration/jobs/DomainGroupJob.java
@@ -5,7 +5,7 @@ import net.geant.nmaas.orchestration.exceptions.WebServiceCommunicationException
 import net.geant.nmaas.portal.api.domain.DomainGroupView;
 import net.geant.nmaas.portal.api.domain.DomainGroupWebhookDto;
 import net.geant.nmaas.portal.api.domain.WebhookEventDto;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.WebhookEventType;
 import net.geant.nmaas.portal.service.WebhookEventService;
 import org.modelmapper.ModelMapper;
diff --git a/src/main/java/net/geant/nmaas/portal/PortalConfig.java b/src/main/java/net/geant/nmaas/portal/PortalConfig.java
index 7ef5f2a31d94faafd298504562a4e0b487642d2a..ead54e07bbc8701edd2676988e175bf0aa466ccf 100644
--- a/src/main/java/net/geant/nmaas/portal/PortalConfig.java
+++ b/src/main/java/net/geant/nmaas/portal/PortalConfig.java
@@ -2,8 +2,8 @@ package net.geant.nmaas.portal;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.OnlyOneConfigurationSupportedException;
 import net.geant.nmaas.portal.persistent.entity.Content;
 import net.geant.nmaas.portal.persistent.entity.Domain;
diff --git a/src/main/java/net/geant/nmaas/portal/api/auth/BasicAuthController.java b/src/main/java/net/geant/nmaas/portal/api/auth/BasicAuthController.java
index 4ad5fb8d28e7fe3fdb487374e803524e1cd0a95e..6cf9f0112655cd791eeb4497ed03f6e925661a0c 100644
--- a/src/main/java/net/geant/nmaas/portal/api/auth/BasicAuthController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/auth/BasicAuthController.java
@@ -6,8 +6,8 @@ import jakarta.servlet.http.HttpServletRequest;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.portal.api.domain.Pong;
-import net.geant.nmaas.portal.api.exception.AuthenticationException;
-import net.geant.nmaas.portal.api.exception.SignupException;
+import net.geant.nmaas.portal.api.exceptions.AuthenticationException;
+import net.geant.nmaas.portal.api.exceptions.SignupException;
 import net.geant.nmaas.portal.api.security.JWTTokenService;
 import net.geant.nmaas.portal.exceptions.UndergoingMaintenanceException;
 import net.geant.nmaas.portal.persistent.entity.Role;
diff --git a/src/main/java/net/geant/nmaas/portal/api/auth/OIDCAuthController.java b/src/main/java/net/geant/nmaas/portal/api/auth/OIDCAuthController.java
index 28424e79ce9d9a405bba5e4ffb2c85385ed00996..d06efefc8e71a09f3e8cc212ee97f8160f630179 100644
--- a/src/main/java/net/geant/nmaas/portal/api/auth/OIDCAuthController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/auth/OIDCAuthController.java
@@ -4,10 +4,10 @@ import com.google.common.collect.ImmutableSet;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
-import net.geant.nmaas.portal.api.exception.AuthenticationException;
-import net.geant.nmaas.portal.api.exception.ExternalUserCanNotBeLinked;
-import net.geant.nmaas.portal.api.exception.ExternalUserMatchException;
-import net.geant.nmaas.portal.api.exception.SignupException;
+import net.geant.nmaas.portal.api.exceptions.AuthenticationException;
+import net.geant.nmaas.portal.api.exceptions.ExternalUserCanNotBeLinked;
+import net.geant.nmaas.portal.api.exceptions.ExternalUserMatchException;
+import net.geant.nmaas.portal.api.exceptions.SignupException;
 import net.geant.nmaas.portal.api.security.JWTTokenService;
 import net.geant.nmaas.portal.exceptions.UndergoingMaintenanceException;
 import net.geant.nmaas.portal.persistent.entity.Role;
diff --git a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkController.java b/src/main/java/net/geant/nmaas/portal/api/bulk/BulkController.java
index 5be222d8793b4c4e4729ee6bd36b488eb9cf4e4f..462384d16939f203d8459a25964efefdd68c3a15 100644
--- a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/bulk/BulkController.java
@@ -3,8 +3,13 @@ package net.geant.nmaas.portal.api.bulk;
 import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import net.geant.nmaas.portal.api.bulk.model.BulkAppDetails;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentView;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentViewS;
+import net.geant.nmaas.portal.api.bulk.model.BulkQueueDetails;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.BulkDeployment;
 import net.geant.nmaas.portal.persistent.entity.BulkDeploymentEntry;
 import net.geant.nmaas.portal.persistent.entity.BulkDeploymentState;
diff --git a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkAppDetails.java b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkAppDetails.java
similarity index 92%
rename from src/main/java/net/geant/nmaas/portal/api/bulk/BulkAppDetails.java
rename to src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkAppDetails.java
index 7873d255a029b736564169d8ee0fd7fd03a0e974..043962b16e16c08cd02a1f44b7dd41d13fe49741 100644
--- a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkAppDetails.java
+++ b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkAppDetails.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.bulk;
+package net.geant.nmaas.portal.api.bulk.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
diff --git a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentEntryView.java b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentEntryView.java
similarity index 94%
rename from src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentEntryView.java
rename to src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentEntryView.java
index 872e641c7580100976e3042be08764f9ae92d2d0..134e21d81bd3245c653e590bdfd66781cb19efe4 100644
--- a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentEntryView.java
+++ b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentEntryView.java
@@ -1,10 +1,11 @@
-package net.geant.nmaas.portal.api.bulk;
+package net.geant.nmaas.portal.api.bulk.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
+import net.geant.nmaas.portal.api.bulk.BulkType;
 import net.geant.nmaas.portal.persistent.entity.BulkDeploymentState;
 
 import java.util.Map;
diff --git a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentView.java b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentView.java
similarity index 86%
rename from src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentView.java
rename to src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentView.java
index 330b56895a48221d55a5c3c15d924038753f6b3b..a114625276dd05c064c8f746a85e6e0c684a146f 100644
--- a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentView.java
+++ b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentView.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.bulk;
+package net.geant.nmaas.portal.api.bulk.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
diff --git a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentViewS.java b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentViewS.java
similarity index 90%
rename from src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentViewS.java
rename to src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentViewS.java
index 78f4f6b944ff82c04a64f9cc66954cb7165c31b6..11e02e25c192f587fb63da591ec9e2aee6dcfd62 100644
--- a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkDeploymentViewS.java
+++ b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkDeploymentViewS.java
@@ -1,9 +1,10 @@
-package net.geant.nmaas.portal.api.bulk;
+package net.geant.nmaas.portal.api.bulk.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
+import net.geant.nmaas.portal.api.bulk.BulkType;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
 import net.geant.nmaas.portal.persistent.entity.BulkDeploymentState;
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkQueueDetails.java b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkQueueDetails.java
similarity index 89%
rename from src/main/java/net/geant/nmaas/portal/api/bulk/BulkQueueDetails.java
rename to src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkQueueDetails.java
index 818dfdc3f5824f4cee8446783ed9f55862da374f..16b3cab1a5174ff3259fd2add702f8debfacaa6e 100644
--- a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkQueueDetails.java
+++ b/src/main/java/net/geant/nmaas/portal/api/bulk/model/BulkQueueDetails.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.bulk;
+package net.geant.nmaas.portal.api.bulk.model;
 
 
 import lombok.AllArgsConstructor;
diff --git a/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationController.java b/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationController.java
index 9b8856c98405e56017fcb18151d605e19d18dcad..8595ef2fc33539125c4c8dafd02689d4b943bda7 100644
--- a/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationController.java
@@ -2,6 +2,7 @@ package net.geant.nmaas.portal.api.configuration;
 
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.exceptions.ConfigurationNotFoundException;
 import net.geant.nmaas.portal.exceptions.OnlyOneConfigurationSupportedException;
 import net.geant.nmaas.portal.service.ConfigurationManager;
diff --git a/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationView.java b/src/main/java/net/geant/nmaas/portal/api/configuration/model/ConfigurationView.java
similarity index 95%
rename from src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationView.java
rename to src/main/java/net/geant/nmaas/portal/api/configuration/model/ConfigurationView.java
index 893e6cd951067972adc76bb661d3dbbf62d3bc80..f2f4b13f606699a754406b1c76f1cffe30ccc5d7 100644
--- a/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationView.java
+++ b/src/main/java/net/geant/nmaas/portal/api/configuration/model/ConfigurationView.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.configuration;
+package net.geant.nmaas.portal.api.configuration.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -57,5 +57,4 @@ public class ConfigurationView {
 
     private String healthCheckJobCron;
 
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/AuthenticationException.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/AuthenticationException.java
similarity index 92%
rename from src/main/java/net/geant/nmaas/portal/api/exception/AuthenticationException.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/AuthenticationException.java
index 7677611239f09541409c060b0d1c5093a207e5ca..36bdf79759f532e20c495ffe0008446ffcc85b2f 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/AuthenticationException.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/AuthenticationException.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 public class AuthenticationException extends MarketException {
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/ExternalUserCanNotBeLinked.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/ExternalUserCanNotBeLinked.java
similarity index 76%
rename from src/main/java/net/geant/nmaas/portal/api/exception/ExternalUserCanNotBeLinked.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/ExternalUserCanNotBeLinked.java
index 134b925a49acd3f65b0d90b00478c1d0442514fa..21b3c2b80f04e348aa872b1607009e94813c85ea 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/ExternalUserCanNotBeLinked.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/ExternalUserCanNotBeLinked.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 public class ExternalUserCanNotBeLinked extends RuntimeException {
     public ExternalUserCanNotBeLinked(String message) {
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/ExternalUserMatchException.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/ExternalUserMatchException.java
similarity index 77%
rename from src/main/java/net/geant/nmaas/portal/api/exception/ExternalUserMatchException.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/ExternalUserMatchException.java
index e17674047e9ea612ba68391c3cc3fa64d3b3dd7c..b498b95d77dc4c0d14cfb7037b684953e9d552b4 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/ExternalUserMatchException.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/ExternalUserMatchException.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 public class ExternalUserMatchException extends RuntimeException {
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/MarketException.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/MarketException.java
similarity index 91%
rename from src/main/java/net/geant/nmaas/portal/api/exception/MarketException.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/MarketException.java
index 1dba432b59ce1ba6cbf7edcf0ea3aaf64eea3c97..9360530776d483550e086898a044c2dc45525c2b 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/MarketException.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/MarketException.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 public class MarketException extends RuntimeException {
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/MissingElementException.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/MissingElementException.java
similarity index 92%
rename from src/main/java/net/geant/nmaas/portal/api/exception/MissingElementException.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/MissingElementException.java
index 391a0513750d39688ea98a96f27f209cbf80e598..d79ea86fd69f86173bd5ad8b4c2b268ca7c12f4f 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/MissingElementException.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/MissingElementException.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 public class MissingElementException extends MarketException {
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/ProcessingException.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/ProcessingException.java
similarity index 91%
rename from src/main/java/net/geant/nmaas/portal/api/exception/ProcessingException.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/ProcessingException.java
index d63d2952174ca29fa201c18a0b33920b0e4ae5a8..4a95de29f9eae97045162a7d93b991320daea94d 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/ProcessingException.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/ProcessingException.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 public class ProcessingException extends MarketException {
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/SignupException.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/SignupException.java
similarity index 91%
rename from src/main/java/net/geant/nmaas/portal/api/exception/SignupException.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/SignupException.java
index 3cb3ae8b6f5c7ba352738ef2c6cab2842653f2c6..f479d904660b924297795e7f5efeac008d00bc6a 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/SignupException.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/SignupException.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 public class SignupException extends MarketException {
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/StorageException.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/StorageException.java
similarity index 91%
rename from src/main/java/net/geant/nmaas/portal/api/exception/StorageException.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/StorageException.java
index ab19c1f76a3d34c61469772fa55b5ffd186d5643..0476bfda3ca4ef85224deee26ba0a62ce6ccb3f2 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/StorageException.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/StorageException.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 public class StorageException extends MarketException {
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/ValidationError.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/ValidationError.java
similarity index 92%
rename from src/main/java/net/geant/nmaas/portal/api/exception/ValidationError.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/ValidationError.java
index 2a7d02b2101b6cd8c7896cd752eab06b677a50ce..ab23528c1f3a706888cc625d844cb847c19ce015 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/ValidationError.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/ValidationError.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/exception/ValidationErrorBuilder.java b/src/main/java/net/geant/nmaas/portal/api/exceptions/ValidationErrorBuilder.java
similarity index 91%
rename from src/main/java/net/geant/nmaas/portal/api/exception/ValidationErrorBuilder.java
rename to src/main/java/net/geant/nmaas/portal/api/exceptions/ValidationErrorBuilder.java
index 7b04d3dc4efa60bf503b90ed81701d78bfd54763..ad553cc40d3600ef6f509baec694496761040574 100644
--- a/src/main/java/net/geant/nmaas/portal/api/exception/ValidationErrorBuilder.java
+++ b/src/main/java/net/geant/nmaas/portal/api/exceptions/ValidationErrorBuilder.java
@@ -1,4 +1,4 @@
-package net.geant.nmaas.portal.api.exception;
+package net.geant.nmaas.portal.api.exceptions;
 
 import org.springframework.validation.Errors;
 import org.springframework.validation.ObjectError;
diff --git a/src/main/java/net/geant/nmaas/portal/api/info/ContentController.java b/src/main/java/net/geant/nmaas/portal/api/info/ContentController.java
index aa4101ae8435d3fd8cee245d9950c34691dadf78..92ea95bfb782dbeb241e3d610f4285362301c41c 100644
--- a/src/main/java/net/geant/nmaas/portal/api/info/ContentController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/info/ContentController.java
@@ -2,7 +2,7 @@ package net.geant.nmaas.portal.api.info;
 
 import lombok.AllArgsConstructor;
 import net.geant.nmaas.portal.api.domain.ContentView;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.Content;
 import net.geant.nmaas.portal.persistent.repositories.ContentRepository;
 import org.modelmapper.ModelMapper;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/ApiExceptionHandler.java b/src/main/java/net/geant/nmaas/portal/api/market/ApiExceptionHandler.java
index c9600e4aa1f053eaa6e10a1b18e34d7202da081b..3f4d3f7df641854c2ea110a194d911b9f3c04caa 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/ApiExceptionHandler.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/ApiExceptionHandler.java
@@ -5,12 +5,12 @@ import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.nmservice.configuration.exceptions.InvalidWebhookException;
 import net.geant.nmaas.portal.api.domain.ApiError;
-import net.geant.nmaas.portal.api.exception.AuthenticationException;
-import net.geant.nmaas.portal.api.exception.MarketException;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
-import net.geant.nmaas.portal.api.exception.SignupException;
-import net.geant.nmaas.portal.api.exception.StorageException;
+import net.geant.nmaas.portal.api.exceptions.AuthenticationException;
+import net.geant.nmaas.portal.api.exceptions.MarketException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.SignupException;
+import net.geant.nmaas.portal.api.exceptions.StorageException;
 import net.geant.nmaas.portal.api.security.exceptions.AuthenticationMethodNotSupportedException;
 import net.geant.nmaas.portal.api.security.exceptions.BasicAuthenticationException;
 import net.geant.nmaas.portal.api.security.exceptions.MissingTokenException;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/AppBaseController.java b/src/main/java/net/geant/nmaas/portal/api/market/AppBaseController.java
index 6cebf6377def0c77e20fe0d050d729a5842cd600..5a3a690c0de93a89deda7f16ded84b9e3948ddd9 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/AppBaseController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/AppBaseController.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.api.market;
 
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.Application;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.ApplicationVersion;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/AppCommentsController.java b/src/main/java/net/geant/nmaas/portal/api/market/AppCommentsController.java
index 522266fd026475c66e82baf45582e0c7feed2ee3..6dc27adeab260b35500e0b984b5f90b727565d34 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/AppCommentsController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/AppCommentsController.java
@@ -3,8 +3,8 @@ package net.geant.nmaas.portal.api.market;
 import net.geant.nmaas.portal.api.domain.CommentRequest;
 import net.geant.nmaas.portal.api.domain.CommentView;
 import net.geant.nmaas.portal.api.domain.Id;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.Comment;
 import net.geant.nmaas.portal.persistent.entity.User;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/AppConfigurationController.java b/src/main/java/net/geant/nmaas/portal/api/market/AppConfigurationController.java
index 6d57e463bc461a1d4b94e9e727041187f29ccf92..0864786a6cd058739788b97a3876d1e8cea1915b 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/AppConfigurationController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/AppConfigurationController.java
@@ -7,8 +7,8 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.orchestration.AppLifecycleManager;
 import net.geant.nmaas.orchestration.api.model.AppConfigurationView;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.AppInstance;
 import net.geant.nmaas.portal.service.ApplicationInstanceService;
 import org.springframework.security.access.prepost.PreAuthorize;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/AppInstanceController.java b/src/main/java/net/geant/nmaas/portal/api/market/AppInstanceController.java
index 0a2f7e395efbcbc596163f69b7c6ffceeacc5919..939bbedeff525ffbff54e956aeb68696c9fd8fc3 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/AppInstanceController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/AppInstanceController.java
@@ -25,8 +25,8 @@ import net.geant.nmaas.portal.api.domain.ApplicationBaseView;
 import net.geant.nmaas.portal.api.domain.ConfigWizardTemplateView;
 import net.geant.nmaas.portal.api.domain.Id;
 import net.geant.nmaas.portal.api.domain.UserBase;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.ApplicationSubscriptionNotActiveException;
 import net.geant.nmaas.portal.persistent.entity.AppInstance;
 import net.geant.nmaas.portal.persistent.entity.Application;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/AppScreenshotsController.java b/src/main/java/net/geant/nmaas/portal/api/market/AppScreenshotsController.java
index 91350476be89d25eff531c3b3c5fdc97556a11cd..9ce335b81b2990f902c10cb0df08c8377d39093a 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/AppScreenshotsController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/AppScreenshotsController.java
@@ -3,7 +3,7 @@ package net.geant.nmaas.portal.api.market;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.portal.api.domain.FileInfoView;
 import net.geant.nmaas.portal.api.domain.UserFile;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.FileInfo;
 import net.geant.nmaas.portal.service.ApplicationBaseService;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/ApplicationController.java b/src/main/java/net/geant/nmaas/portal/api/market/ApplicationController.java
index 36fd2187b5d173a4031e1108d6b33c2146ecb57c..5c769ca247a2411e3ffe6947243252285cb900eb 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/ApplicationController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/ApplicationController.java
@@ -18,9 +18,9 @@ import net.geant.nmaas.portal.api.domain.ApplicationStateChangeRequest;
 import net.geant.nmaas.portal.api.domain.ApplicationView;
 import net.geant.nmaas.portal.api.domain.Id;
 import net.geant.nmaas.portal.api.domain.UserView;
-import net.geant.nmaas.portal.api.exception.MarketException;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MarketException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.ObjectAlreadyExistsException;
 import net.geant.nmaas.portal.persistent.entity.Application;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/BaseController.java b/src/main/java/net/geant/nmaas/portal/api/market/BaseController.java
index 7d7e1107768ae008bb8d2dd0733a26275d78d4ba..c15fa53e9599f3216129c5adc652b26e4cb355a9 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/BaseController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/BaseController.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.api.market;
 
 import lombok.RequiredArgsConstructor;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.User;
 import net.geant.nmaas.portal.service.UserService;
 import org.modelmapper.ModelMapper;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/DomainController.java b/src/main/java/net/geant/nmaas/portal/api/market/DomainController.java
index 4e26d642830329e8fc8d5d3e3f84020c21ce04d7..6f30f0453639c31b1193962c287d04758e9134d1 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/DomainController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/DomainController.java
@@ -15,8 +15,8 @@ import net.geant.nmaas.portal.api.domain.DomainRequest;
 import net.geant.nmaas.portal.api.domain.DomainView;
 import net.geant.nmaas.portal.api.domain.Id;
 import net.geant.nmaas.portal.api.domain.KeyValueView;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.DataConflictException;
 import net.geant.nmaas.portal.exceptions.ObjectNotFoundException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationStatePerDomain;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/GroupController.java b/src/main/java/net/geant/nmaas/portal/api/market/GroupController.java
index fbee9be5dd4a3a7af684ff1669a8d86019d683fd..44bc969602efcef361308c6371d25fa9257bcfe4 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/GroupController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/GroupController.java
@@ -5,7 +5,7 @@ import net.geant.nmaas.orchestration.exceptions.InvalidDomainException;
 import net.geant.nmaas.portal.api.domain.DomainGroupView;
 import net.geant.nmaas.portal.api.domain.Id;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.DataConflictException;
 import net.geant.nmaas.portal.persistent.entity.Role;
 import net.geant.nmaas.portal.persistent.entity.User;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/RatingController.java b/src/main/java/net/geant/nmaas/portal/api/market/RatingController.java
index 306f8aef49faf380768b11240272b1aa09bb7985..6e04c1b64c7894f0300a3cfb6f888fd543ec3a9a 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/RatingController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/RatingController.java
@@ -3,7 +3,7 @@ package net.geant.nmaas.portal.api.market;
 import jakarta.validation.constraints.NotNull;
 import net.geant.nmaas.portal.api.domain.ApiResponse;
 import net.geant.nmaas.portal.api.domain.AppRateView;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.AppRate;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.User;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/RegistrationController.java b/src/main/java/net/geant/nmaas/portal/api/market/RegistrationController.java
index feeb3dde9abcfb3dd97ce7c399bbd51bed025800..e7b4f533083495b916685cffa550e84a2c1cd9f0 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/RegistrationController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/RegistrationController.java
@@ -8,8 +8,8 @@ import net.geant.nmaas.notifications.NotificationEvent;
 import net.geant.nmaas.notifications.templates.MailType;
 import net.geant.nmaas.portal.api.auth.Registration;
 import net.geant.nmaas.portal.api.domain.DomainBase;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.SignupException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.SignupException;
 import net.geant.nmaas.portal.exceptions.ObjectAlreadyExistsException;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.Role;
diff --git a/src/main/java/net/geant/nmaas/portal/api/market/WebhookEventController.java b/src/main/java/net/geant/nmaas/portal/api/market/WebhookEventController.java
index e99ba0b1a76da02500dc68c1a836ebb6c6f338c3..d816cf2479a841d7d1001dbd553e5f0a426aa666 100644
--- a/src/main/java/net/geant/nmaas/portal/api/market/WebhookEventController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/market/WebhookEventController.java
@@ -5,7 +5,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.portal.api.domain.Id;
 import net.geant.nmaas.portal.api.domain.WebhookEventDto;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.WebhookEvent;
 import net.geant.nmaas.portal.service.WebhookEventService;
 import org.springframework.http.ResponseEntity;
diff --git a/src/main/java/net/geant/nmaas/portal/api/user/ProfileController.java b/src/main/java/net/geant/nmaas/portal/api/user/ProfileController.java
index 64d8c5781c39e83b3e2a9788f713bb8e555e3352..842af0c334eedb751da1ccdca071a4104e0c4848 100644
--- a/src/main/java/net/geant/nmaas/portal/api/user/ProfileController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/user/ProfileController.java
@@ -4,7 +4,7 @@ import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import net.geant.nmaas.portal.api.domain.UserRoleView;
 import net.geant.nmaas.portal.api.domain.UserView;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.User;
 import net.geant.nmaas.portal.service.UserService;
 import org.modelmapper.ModelMapper;
diff --git a/src/main/java/net/geant/nmaas/portal/api/user/SSHKeysControllerAdvice.java b/src/main/java/net/geant/nmaas/portal/api/user/SSHKeysControllerAdvice.java
index 022a3f6e8b225b394cb97d9f14b32a325c18ff8d..54973e59c62544a05b80caa8707728bc936039bb 100644
--- a/src/main/java/net/geant/nmaas/portal/api/user/SSHKeysControllerAdvice.java
+++ b/src/main/java/net/geant/nmaas/portal/api/user/SSHKeysControllerAdvice.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.api.user;
 
-import net.geant.nmaas.portal.api.exception.ValidationError;
-import net.geant.nmaas.portal.api.exception.ValidationErrorBuilder;
+import net.geant.nmaas.portal.api.exceptions.ValidationError;
+import net.geant.nmaas.portal.api.exceptions.ValidationErrorBuilder;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatusCode;
 import org.springframework.http.ResponseEntity;
diff --git a/src/main/java/net/geant/nmaas/portal/api/user/UsersController.java b/src/main/java/net/geant/nmaas/portal/api/user/UsersController.java
index 350beec6ce096d2f71e9db2030bbbcd17a2876cf..f2a6103f6e605ee2732e5afebaa42348d8e0a919 100644
--- a/src/main/java/net/geant/nmaas/portal/api/user/UsersController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/user/UsersController.java
@@ -14,8 +14,8 @@ import net.geant.nmaas.portal.api.domain.UserRequest;
 import net.geant.nmaas.portal.api.domain.UserRoleView;
 import net.geant.nmaas.portal.api.domain.UserView;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.api.security.JWTTokenService;
 import net.geant.nmaas.portal.exceptions.ObjectNotFoundException;
 import net.geant.nmaas.portal.persistent.entity.Domain;
diff --git a/src/main/java/net/geant/nmaas/portal/exceptions/UndergoingMaintenanceException.java b/src/main/java/net/geant/nmaas/portal/exceptions/UndergoingMaintenanceException.java
index b8ae9d26dc9d5a6ca9999da7d707f511f66a7772..9735e9ebcd9528aaffecbd28752f42eb5be023d8 100644
--- a/src/main/java/net/geant/nmaas/portal/exceptions/UndergoingMaintenanceException.java
+++ b/src/main/java/net/geant/nmaas/portal/exceptions/UndergoingMaintenanceException.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.exceptions;
 
-import net.geant.nmaas.portal.api.exception.MarketException;
+import net.geant.nmaas.portal.api.exceptions.MarketException;
 
 public class UndergoingMaintenanceException extends MarketException {
     public UndergoingMaintenanceException() {
diff --git a/src/main/java/net/geant/nmaas/portal/service/BulkApplicationService.java b/src/main/java/net/geant/nmaas/portal/service/BulkApplicationService.java
index c5e01a24bfec1bcaa281a7700fc5cb1aa4264f13..588ee47f006cfc3609713b63e1b3bde59d64a3b3 100644
--- a/src/main/java/net/geant/nmaas/portal/service/BulkApplicationService.java
+++ b/src/main/java/net/geant/nmaas/portal/service/BulkApplicationService.java
@@ -3,10 +3,10 @@ package net.geant.nmaas.portal.service;
 import net.geant.nmaas.nmservice.deployment.bulks.BulkDeploymentQueueEntry;
 import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentReviewEvent;
 import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentStatusUpdateEvent;
-import net.geant.nmaas.portal.api.bulk.BulkAppDetails;
-import net.geant.nmaas.portal.api.bulk.BulkDeploymentView;
-import net.geant.nmaas.portal.api.bulk.BulkDeploymentViewS;
-import net.geant.nmaas.portal.api.bulk.BulkQueueDetails;
+import net.geant.nmaas.portal.api.bulk.model.BulkAppDetails;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentView;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentViewS;
+import net.geant.nmaas.portal.api.bulk.model.BulkQueueDetails;
 import net.geant.nmaas.portal.api.bulk.CsvApplication;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
 import net.geant.nmaas.portal.persistent.entity.BulkDeployment;
diff --git a/src/main/java/net/geant/nmaas/portal/service/BulkDomainService.java b/src/main/java/net/geant/nmaas/portal/service/BulkDomainService.java
index 93193b2aec45f57d764e6285c4acf3e082d8b9f5..e8907ae74c055cc888b03c776c8cace6745989a2 100644
--- a/src/main/java/net/geant/nmaas/portal/service/BulkDomainService.java
+++ b/src/main/java/net/geant/nmaas/portal/service/BulkDomainService.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.service;
 
 import net.geant.nmaas.portal.api.bulk.CsvDomain;
-import net.geant.nmaas.portal.api.bulk.BulkDeploymentViewS;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentViewS;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
 
 import java.util.List;
diff --git a/src/main/java/net/geant/nmaas/portal/service/ConfigurationManager.java b/src/main/java/net/geant/nmaas/portal/service/ConfigurationManager.java
index dc6c779c14773d91f9d9440e4183e28c68d91d2c..8355f3786669131b5e1b7a89a7368a0d625fd8ca 100644
--- a/src/main/java/net/geant/nmaas/portal/service/ConfigurationManager.java
+++ b/src/main/java/net/geant/nmaas/portal/service/ConfigurationManager.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.service;
 
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 
 public interface ConfigurationManager {
 
diff --git a/src/main/java/net/geant/nmaas/portal/service/WebhookEventService.java b/src/main/java/net/geant/nmaas/portal/service/WebhookEventService.java
index e137273624c2d7d0468acfc3c57685c832b1c586..1de9d5b90555956d697207ab4d66098d339e6837 100644
--- a/src/main/java/net/geant/nmaas/portal/service/WebhookEventService.java
+++ b/src/main/java/net/geant/nmaas/portal/service/WebhookEventService.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.service;
 
 import net.geant.nmaas.portal.api.domain.WebhookEventDto;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.api.security.EncryptionService;
 import net.geant.nmaas.portal.persistent.entity.WebhookEvent;
 import net.geant.nmaas.portal.persistent.entity.WebhookEventType;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationBaseServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationBaseServiceImpl.java
index 5e77ddf1b9091ef1bf47c1e68634d9a8731267d5..966845551e30da0be562bcd652cd8e13bfb0f7a0 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationBaseServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationBaseServiceImpl.java
@@ -5,8 +5,8 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.portal.api.domain.ApplicationBaseS;
 import net.geant.nmaas.portal.api.domain.ApplicationBaseViewS;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.events.ApplicationActivatedEvent;
 import net.geant.nmaas.portal.persistent.entity.AppDescription;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationServiceImpl.java
index 63e7f6a666f5a21786a109824337d4f2bcfb27cb..db287957b3fa7e8164cb6b6c31b5e7e77dd008bd 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationServiceImpl.java
@@ -3,11 +3,10 @@ package net.geant.nmaas.portal.service.impl;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import lombok.RequiredArgsConstructor;
-import lombok.extern.log4j.Log4j2;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.nmservice.configuration.entities.ConfigFileTemplate;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.events.ApplicationListUpdatedEvent;
 import net.geant.nmaas.portal.events.ApplicationListUpdatedEvent.ApplicationAction;
 import net.geant.nmaas.portal.persistent.entity.Application;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceImpl.java
index f7bd7b01231603ccc5750c1c855ad5379f98d57e..df81d1d38d459b83f775c712199f8b2ecdd1a1f0 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceImpl.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.service.impl;
 
 import lombok.RequiredArgsConstructor;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.ObjectNotFoundException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.ApplicationSubscription;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/BulkApplicationServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/BulkApplicationServiceImpl.java
index fd28df8e20ce7f89e4866e94897c87a5a50d392c..32f03e8d3d6cc1249f5b6b586c95b991e8d10126 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/BulkApplicationServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/BulkApplicationServiceImpl.java
@@ -18,15 +18,15 @@ import net.geant.nmaas.orchestration.entities.AppDeployment;
 import net.geant.nmaas.orchestration.entities.AppDeploymentState;
 import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentReviewEvent;
 import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentStatusUpdateEvent;
-import net.geant.nmaas.portal.api.bulk.BulkAppDetails;
-import net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView;
-import net.geant.nmaas.portal.api.bulk.BulkDeploymentView;
-import net.geant.nmaas.portal.api.bulk.BulkDeploymentViewS;
-import net.geant.nmaas.portal.api.bulk.BulkQueueDetails;
+import net.geant.nmaas.portal.api.bulk.model.BulkAppDetails;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentView;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentViewS;
+import net.geant.nmaas.portal.api.bulk.model.BulkQueueDetails;
 import net.geant.nmaas.portal.api.bulk.BulkType;
 import net.geant.nmaas.portal.api.bulk.CsvApplication;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.exceptions.ObjectNotFoundException;
 import net.geant.nmaas.portal.persistent.entity.AppInstance;
 import net.geant.nmaas.portal.persistent.entity.Application;
@@ -65,13 +65,13 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_APP_ID;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_APP_INSTANCE_ID;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_APP_INSTANCE_NAME;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_APP_NAME;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_CODENAME;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_NAME;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_ERROR_MESSAGE;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_APP_ID;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_APP_INSTANCE_ID;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_APP_INSTANCE_NAME;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_APP_NAME;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_CODENAME;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_NAME;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_ERROR_MESSAGE;
 
 @Service
 @RequiredArgsConstructor
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/BulkCsvProcessorImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/BulkCsvProcessorImpl.java
index d0717b5d7748ed73176a531b84274fb579adaa83..b097dbd1c113107f8f5b072b7c8c1a718f7b0e8c 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/BulkCsvProcessorImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/BulkCsvProcessorImpl.java
@@ -7,7 +7,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.portal.api.bulk.CsvApplication;
 import net.geant.nmaas.portal.api.bulk.CsvDomain;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.service.BulkCsvProcessor;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceImpl.java
index a2b66cdbabbc4e9c52ef203fa341feb205f3033e..98a472bf0d2239643eff38ca5d5f12cf3ad95bfa 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceImpl.java
@@ -6,7 +6,7 @@ import net.geant.nmaas.dcn.deployment.DcnDeploymentType;
 import net.geant.nmaas.dcn.deployment.entities.DcnDeploymentState;
 import net.geant.nmaas.dcn.deployment.entities.DcnInfo;
 import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager;
-import net.geant.nmaas.portal.api.bulk.BulkDeploymentViewS;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentViewS;
 import net.geant.nmaas.portal.api.bulk.CsvDomain;
 import net.geant.nmaas.portal.api.domain.DomainDcnDetailsView;
 import net.geant.nmaas.portal.api.domain.DomainGroupView;
@@ -14,7 +14,7 @@ import net.geant.nmaas.portal.api.domain.DomainRequest;
 import net.geant.nmaas.portal.api.domain.DomainTechDetailsView;
 import net.geant.nmaas.portal.api.domain.KeyValueView;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.BulkDeployment;
 import net.geant.nmaas.portal.persistent.entity.BulkDeploymentEntry;
 import net.geant.nmaas.portal.persistent.entity.Domain;
@@ -41,12 +41,12 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_CODENAME;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_ID;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_NAME;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_USER_EMAIL;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_USER_ID;
-import static net.geant.nmaas.portal.api.bulk.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_USER_NAME;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_CODENAME;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_ID;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_DOMAIN_NAME;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_USER_EMAIL;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_USER_ID;
+import static net.geant.nmaas.portal.api.bulk.model.BulkDeploymentEntryView.BULK_ENTRY_DETAIL_KEY_USER_NAME;
 import static net.geant.nmaas.portal.api.bulk.BulkType.DOMAIN;
 import static net.geant.nmaas.portal.api.bulk.BulkType.USER;
 import static net.geant.nmaas.portal.persistent.entity.BulkDeploymentState.COMPLETED;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerImpl.java
index 2c7c5427605a31c98b52b510ae0989c577862936..c5a2b7d997960b45168496c8f25dae7eb66fe02f 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerImpl.java
@@ -2,7 +2,7 @@ package net.geant.nmaas.portal.service.impl;
 
 import lombok.RequiredArgsConstructor;
 import net.geant.nmaas.nmservice.deployment.bulks.BulkDeploymentJob;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.exceptions.ConfigurationNotFoundException;
 import net.geant.nmaas.portal.exceptions.OnlyOneConfigurationSupportedException;
 import net.geant.nmaas.portal.persistent.entity.Configuration;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/ContentServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/ContentServiceImpl.java
index 3f6aca341954a57cc0fdbf29fb1811eca0a6d35b..bb428308f16c808a5ca2603232edace47af0267b 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/ContentServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/ContentServiceImpl.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.service.impl;
 
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.ObjectAlreadyExistsException;
 import net.geant.nmaas.portal.persistent.entity.Content;
 import net.geant.nmaas.portal.persistent.repositories.ContentRepository;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java
index 2823c728ce858495ce6f708d8968d072848e1503..b5e3e2737c143b7aa6a5e5e9f635bc54179cdaf6 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java
@@ -2,12 +2,11 @@ package net.geant.nmaas.portal.service.impl;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import net.geant.nmaas.orchestration.jobs.DomainCreationJob;
 import net.geant.nmaas.orchestration.jobs.DomainGroupJob;
 import net.geant.nmaas.portal.api.domain.ApplicationStatePerDomainView;
 import net.geant.nmaas.portal.api.domain.DomainGroupView;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.ApplicationStatePerDomain;
 import net.geant.nmaas.portal.persistent.entity.Domain;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java
index 5af2eeecbe42cc13ec5cc9c2f262f5fa23aa1f98..86ebe4f186debd5f4b4feecd0179a128e93859aa 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java
@@ -14,8 +14,8 @@ import net.geant.nmaas.portal.api.domain.DomainRequest;
 import net.geant.nmaas.portal.api.domain.KeyValueView;
 import net.geant.nmaas.portal.api.domain.UserView;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.events.DomainCreatedEvent;
 import net.geant.nmaas.portal.exceptions.ObjectNotFoundException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/K8sShellServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/K8sShellServiceImpl.java
index db2fe3a606a21cb33e3be5bb42f2979de14111a1..fc436484ac09762059a56d446c4a8b993fdd8543 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/K8sShellServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/K8sShellServiceImpl.java
@@ -5,7 +5,7 @@ import net.geant.nmaas.kubernetes.shell.PodSessionsStorage;
 import net.geant.nmaas.kubernetes.KubernetesConnectorHelper;
 import net.geant.nmaas.portal.api.domain.K8sPodInfo;
 import net.geant.nmaas.portal.api.domain.K8sShellCommandRequest;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.service.K8sShellService;
 import org.springframework.stereotype.Service;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/LocalFileStorageService.java b/src/main/java/net/geant/nmaas/portal/service/impl/LocalFileStorageService.java
index 5bf5164678369f6559510dfbcabb07da82ece4bd..1b4a448c874c0cc1199e060fb8d0f782ce3cae67 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/LocalFileStorageService.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/LocalFileStorageService.java
@@ -1,8 +1,8 @@
 package net.geant.nmaas.portal.service.impl;
 
 import lombok.extern.slf4j.Slf4j;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.StorageException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.StorageException;
 import net.geant.nmaas.portal.persistent.entity.FileInfo;
 import net.geant.nmaas.portal.persistent.repositories.FileInfoRepository;
 import net.geant.nmaas.portal.service.FileStorageService;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
index 4e3ad3a2d9fbfbef011d00afb86eff08870e1496..3f98f4e873e0452e6de22e9dc86a144eb431cd9b 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
@@ -2,9 +2,9 @@ package net.geant.nmaas.portal.service.impl;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import net.geant.nmaas.portal.api.exception.ExternalUserMatchException;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.SignupException;
+import net.geant.nmaas.portal.api.exceptions.ExternalUserMatchException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.SignupException;
 import net.geant.nmaas.portal.exceptions.ObjectAlreadyExistsException;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.Role;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/UserServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/UserServiceImpl.java
index 96d1e26e2f8021f420288e9175cdef1c499e1aea..1c399f22645b4c6c5bab06c52b4133c342b91145 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/UserServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/UserServiceImpl.java
@@ -11,9 +11,9 @@ import net.geant.nmaas.notifications.templates.MailType;
 import net.geant.nmaas.portal.api.auth.Registration;
 import net.geant.nmaas.portal.api.bulk.CsvDomain;
 import net.geant.nmaas.portal.api.domain.UserView;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
-import net.geant.nmaas.portal.api.exception.SignupException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.SignupException;
 import net.geant.nmaas.portal.api.security.JWTTokenService;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.Role;
@@ -32,14 +32,10 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.oauth2.core.oidc.user.OidcUser;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.security.SecureRandom;
-import java.util.Base64;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
diff --git a/src/test/java/net/geant/nmaas/nmservice/bulk/BulkDeploymentJobServiceTest.java b/src/test/java/net/geant/nmaas/nmservice/bulk/BulkDeploymentJobServiceTest.java
index d3534c007d62b1181c788de314623066c9b5aad5..320d0c717818391a9c5c9682881bb6ad1d284704 100644
--- a/src/test/java/net/geant/nmaas/nmservice/bulk/BulkDeploymentJobServiceTest.java
+++ b/src/test/java/net/geant/nmaas/nmservice/bulk/BulkDeploymentJobServiceTest.java
@@ -9,7 +9,7 @@ import net.geant.nmaas.orchestration.AppLifecycleManager;
 import net.geant.nmaas.orchestration.AppLifecycleState;
 import net.geant.nmaas.orchestration.Identifier;
 import net.geant.nmaas.orchestration.entities.AppDeploymentState;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.persistent.repositories.BulkDeploymentRepository;
 import net.geant.nmaas.portal.service.BulkApplicationService;
 import net.geant.nmaas.portal.service.ConfigurationManager;
diff --git a/src/test/java/net/geant/nmaas/notifications/NotificationManagerTest.java b/src/test/java/net/geant/nmaas/notifications/NotificationManagerTest.java
index fbcc4be5095906aa4a4b1a2ea81c88cf83234155..3d56deaea7c9ef53af4d3bef50d0ece400655a76 100644
--- a/src/test/java/net/geant/nmaas/notifications/NotificationManagerTest.java
+++ b/src/test/java/net/geant/nmaas/notifications/NotificationManagerTest.java
@@ -7,9 +7,9 @@ import net.geant.nmaas.notifications.templates.api.LanguageMailContentView;
 import net.geant.nmaas.notifications.templates.api.MailTemplateView;
 import net.geant.nmaas.notifications.types.persistence.entity.FormType;
 import net.geant.nmaas.notifications.types.service.FormTypeService;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.api.domain.UserView;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.Role;
 import net.geant.nmaas.portal.persistent.entity.User;
diff --git a/src/test/java/net/geant/nmaas/notifications/types/service/FormTypeServiceTest.java b/src/test/java/net/geant/nmaas/notifications/types/service/FormTypeServiceTest.java
index 550c228e702f2e0124e3efc5f6276a9a5c33237a..a26ad8a7cffa5ad4b9a0cad3e3b0082e80e335b4 100644
--- a/src/test/java/net/geant/nmaas/notifications/types/service/FormTypeServiceTest.java
+++ b/src/test/java/net/geant/nmaas/notifications/types/service/FormTypeServiceTest.java
@@ -3,7 +3,6 @@ package net.geant.nmaas.notifications.types.service;
 import net.geant.nmaas.notifications.types.model.FormTypeRequest;
 import net.geant.nmaas.notifications.types.persistence.entity.FormType;
 import net.geant.nmaas.notifications.types.persistence.repository.FormTypeRepository;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
 import net.geant.nmaas.portal.exceptions.DataConflictException;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/src/test/java/net/geant/nmaas/portal/api/auth/BasicAuthControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/auth/BasicAuthControllerTest.java
index bc1865721203c6455ec2781927f82781c2bc4c47..0ed54f97e8d22f1a5be6bf4c56a1e9570157e024 100644
--- a/src/test/java/net/geant/nmaas/portal/api/auth/BasicAuthControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/auth/BasicAuthControllerTest.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.api.auth;
 
-import net.geant.nmaas.portal.api.exception.AuthenticationException;
+import net.geant.nmaas.portal.api.exceptions.AuthenticationException;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.Role;
 import net.geant.nmaas.portal.persistent.entity.User;
diff --git a/src/test/java/net/geant/nmaas/portal/api/auth/OIDCAuthControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/auth/OIDCAuthControllerTest.java
index 091f1e1382c97e674a1d826c41ecc3242a5d9d26..271094369aae1404d65edd5b73f827095c4196cb 100644
--- a/src/test/java/net/geant/nmaas/portal/api/auth/OIDCAuthControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/auth/OIDCAuthControllerTest.java
@@ -2,7 +2,7 @@ package net.geant.nmaas.portal.api.auth;
 
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.ws.rs.core.HttpHeaders;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.api.security.JWTTokenService;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.Role;
diff --git a/src/test/java/net/geant/nmaas/portal/api/bulk/BulkControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/bulk/BulkControllerTest.java
index e34930b02f397b04252875ed8dfc5ed78f76b114..376fc1b6858471da45da12a65b6659347e9b9e77 100644
--- a/src/test/java/net/geant/nmaas/portal/api/bulk/BulkControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/bulk/BulkControllerTest.java
@@ -1,6 +1,7 @@
 package net.geant.nmaas.portal.api.bulk;
 
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.bulk.model.BulkDeploymentViewS;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.BulkDeployment;
 import net.geant.nmaas.portal.persistent.entity.User;
 import net.geant.nmaas.portal.persistent.repositories.BulkDeploymentRepository;
diff --git a/src/test/java/net/geant/nmaas/portal/api/info/ContentControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/info/ContentControllerTest.java
index ba5bc93d64aed5d8b77a4a1024ef097dc1a14c38..d9ed38be7b7ef7d8fbea0ab54090840fd117446e 100644
--- a/src/test/java/net/geant/nmaas/portal/api/info/ContentControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/info/ContentControllerTest.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.api.info;
 
 import net.geant.nmaas.portal.api.domain.ContentView;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.Content;
 import net.geant.nmaas.portal.persistent.repositories.ContentRepository;
 import org.junit.jupiter.api.Test;
diff --git a/src/test/java/net/geant/nmaas/portal/api/market/AppBaseControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/market/AppBaseControllerTest.java
index a5051424e55b79186dfd296fc1191f634441a8f7..2e83d830daecbedad90864df009b5d6630ed16a7 100644
--- a/src/test/java/net/geant/nmaas/portal/api/market/AppBaseControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/market/AppBaseControllerTest.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.api.market;
 
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.Application;
 import net.geant.nmaas.portal.persistent.entity.User;
 import net.geant.nmaas.portal.service.ApplicationBaseService;
diff --git a/src/test/java/net/geant/nmaas/portal/api/market/AppCommentsControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/market/AppCommentsControllerTest.java
index 3fb9e121108dbb5328f1d6ec871b3260dfc5ca8a..a7aa16d2307fb1ce6769bdd513f08687aa369293 100644
--- a/src/test/java/net/geant/nmaas/portal/api/market/AppCommentsControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/market/AppCommentsControllerTest.java
@@ -2,8 +2,8 @@ package net.geant.nmaas.portal.api.market;
 
 import net.geant.nmaas.portal.api.domain.CommentRequest;
 import net.geant.nmaas.portal.api.domain.CommentView;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.Comment;
 import net.geant.nmaas.portal.persistent.entity.User;
diff --git a/src/test/java/net/geant/nmaas/portal/api/market/AppInstanceControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/market/AppInstanceControllerTest.java
index 6cd0015acc4573aa191cb1c4aeb38e6971c9d33a..d49c0f32989bff4da8e590212dbe9f51250da45f 100644
--- a/src/test/java/net/geant/nmaas/portal/api/market/AppInstanceControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/market/AppInstanceControllerTest.java
@@ -16,9 +16,8 @@ import net.geant.nmaas.portal.api.domain.AppInstanceView;
 import net.geant.nmaas.portal.api.domain.AppInstanceViewExtended;
 import net.geant.nmaas.portal.api.domain.ApplicationDTO;
 import net.geant.nmaas.portal.api.domain.DomainBase;
-import net.geant.nmaas.portal.api.domain.Id;
 import net.geant.nmaas.portal.api.domain.UserBase;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.AppInstance;
 import net.geant.nmaas.portal.persistent.entity.Application;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
diff --git a/src/test/java/net/geant/nmaas/portal/api/market/AppScreenshotsControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/market/AppScreenshotsControllerTest.java
index 97a8e8c4c603765e38472bb4d5f1397456b85240..e98bd899481f6e72701f5577e19522a29906039f 100644
--- a/src/test/java/net/geant/nmaas/portal/api/market/AppScreenshotsControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/market/AppScreenshotsControllerTest.java
@@ -2,7 +2,7 @@ package net.geant.nmaas.portal.api.market;
 
 import net.geant.nmaas.portal.api.domain.FileInfoView;
 import net.geant.nmaas.portal.api.domain.UserFile;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.FileInfo;
 import net.geant.nmaas.portal.service.ApplicationBaseService;
diff --git a/src/test/java/net/geant/nmaas/portal/api/market/RegistrationControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/market/RegistrationControllerTest.java
index 36ccd7582a8edaed4ca224a9be0dfb7a7b3e00ca..cf4ca68fbaf3cd2d199656364a513955cf0ca1ae 100644
--- a/src/test/java/net/geant/nmaas/portal/api/market/RegistrationControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/market/RegistrationControllerTest.java
@@ -2,8 +2,8 @@ package net.geant.nmaas.portal.api.market;
 
 import net.geant.nmaas.portal.api.auth.Registration;
 import net.geant.nmaas.portal.api.domain.DomainBase;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.SignupException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.SignupException;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.User;
 import net.geant.nmaas.portal.service.DomainService;
diff --git a/src/test/java/net/geant/nmaas/portal/api/market/UsersControllerTest.java b/src/test/java/net/geant/nmaas/portal/api/market/UsersControllerTest.java
index 9d2422f6fb347f4eb9833f5e6a13fb0e5b6573e3..4b70031a859db6b376533e8fc2289470f652365d 100644
--- a/src/test/java/net/geant/nmaas/portal/api/market/UsersControllerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/api/market/UsersControllerTest.java
@@ -6,8 +6,8 @@ import net.geant.nmaas.portal.api.domain.UserRequest;
 import net.geant.nmaas.portal.api.domain.UserRoleView;
 import net.geant.nmaas.portal.api.domain.UserView;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.api.security.JWTTokenService;
 import net.geant.nmaas.portal.api.user.UsersController;
 import net.geant.nmaas.portal.exceptions.ObjectNotFoundException;
diff --git a/src/test/java/net/geant/nmaas/portal/persistent/entity/ConfigurationTest.java b/src/test/java/net/geant/nmaas/portal/persistent/entity/ConfigurationTest.java
index 8df5075e776a6f36868a1bcc1e90eb7b39222255..20c1a9c5c5b19e74e202f5e23d3241745d5ba877 100644
--- a/src/test/java/net/geant/nmaas/portal/persistent/entity/ConfigurationTest.java
+++ b/src/test/java/net/geant/nmaas/portal/persistent/entity/ConfigurationTest.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.persistent.entity;
 
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import org.assertj.core.util.Lists;
 import org.junit.jupiter.api.Test;
 import org.modelmapper.ModelMapper;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/ApplicationBaseServiceTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/ApplicationBaseServiceTest.java
index e62ab15033e142a87c38d3f8e1096ebe482a4ac0..e98ec9f4692ff0ec750b09b2c1bbacfbf1e70032 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/ApplicationBaseServiceTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/ApplicationBaseServiceTest.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.service.impl;
 
 import com.google.common.collect.Sets;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
 import net.geant.nmaas.portal.events.ApplicationActivatedEvent;
 import net.geant.nmaas.portal.persistent.entity.AppDescription;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceTest.java
index 7c4334a548f8fa4bd6590cba73752bc04a77ca3f..a16c680de53d16ef3174c1de70d346599d665d86 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/ApplicationSubscriptionServiceTest.java
@@ -1,8 +1,8 @@
 package net.geant.nmaas.portal.service.impl;
 
 import com.google.common.collect.ImmutableSet;
-import net.geant.nmaas.portal.api.exception.MissingElementException;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.MissingElementException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.ObjectNotFoundException;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.ApplicationState;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/BulkApplicationServiceImplTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/BulkApplicationServiceImplTest.java
index abbd3c311f4db04779cafa20347af1a39d94f149..cf03b5045b55c06772cd7be5143a522ccad875cb 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/BulkApplicationServiceImplTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/BulkApplicationServiceImplTest.java
@@ -14,8 +14,7 @@ import net.geant.nmaas.orchestration.AppLifecycleState;
 import net.geant.nmaas.orchestration.Identifier;
 import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentReviewEvent;
 import net.geant.nmaas.orchestration.events.app.AppAutoDeploymentStatusUpdateEvent;
-import net.geant.nmaas.portal.api.bulk.BulkQueueDetails;
-import net.geant.nmaas.portal.api.bulk.BulkType;
+import net.geant.nmaas.portal.api.bulk.model.BulkQueueDetails;
 import net.geant.nmaas.portal.api.bulk.CsvApplication;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
 import net.geant.nmaas.portal.persistent.entity.AppInstance;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceImplTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceImplTest.java
index fc458ce116dad04352c83a9634841a070001ba02..827f0f40a1dc23835fc709bcf47b4416797e3d5d 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceImplTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/BulkDomainServiceImplTest.java
@@ -5,7 +5,7 @@ import net.geant.nmaas.dcn.deployment.entities.DomainDcnDetails;
 import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager;
 import net.geant.nmaas.portal.api.bulk.BulkType;
 import net.geant.nmaas.portal.api.bulk.CsvDomain;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
 import net.geant.nmaas.portal.persistent.entity.BulkDeployment;
 import net.geant.nmaas.portal.persistent.entity.BulkDeploymentEntry;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerTest.java
index c0e41cd98b7cd093b04ef4389bdbf152a94110db..a160941b79b885ed18180ec921d0719dfe288535 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerTest.java
@@ -1,7 +1,7 @@
 package net.geant.nmaas.portal.service.impl;
 
 import net.geant.nmaas.nmservice.deployment.bulks.BulkDeploymentJob;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.api.i18n.api.InternationalizationView;
 import net.geant.nmaas.portal.exceptions.ConfigurationNotFoundException;
 import net.geant.nmaas.portal.exceptions.OnlyOneConfigurationSupportedException;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/ContentServiceImplTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/ContentServiceImplTest.java
index 72ff1bdaa33f8572043d8b0971333b84a9e310bd..ef34ce3f662037da153660b66fd657d5d5c39e8d 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/ContentServiceImplTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/ContentServiceImplTest.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.service.impl;
 
-import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.exceptions.ObjectAlreadyExistsException;
 import net.geant.nmaas.portal.persistent.entity.Content;
 import net.geant.nmaas.portal.persistent.repositories.ContentRepository;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java
index 5fb8cb4c800f2519d943b89133014c20531a2147..6474a6f25bf394164ef732ce66d217ed2612ad59 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/DomainServiceTest.java
@@ -15,8 +15,7 @@ import net.geant.nmaas.portal.api.domain.DomainRequest;
 import net.geant.nmaas.portal.api.domain.DomainTechDetailsView;
 import net.geant.nmaas.portal.api.domain.UserView;
 import net.geant.nmaas.portal.api.domain.UserViewMinimal;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
-import net.geant.nmaas.portal.api.security.EncryptionService;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
 import net.geant.nmaas.portal.events.DomainCreatedEvent;
 import net.geant.nmaas.portal.persistent.entity.ApplicationBase;
 import net.geant.nmaas.portal.persistent.entity.ApplicationStatePerDomain;
@@ -36,7 +35,6 @@ import net.geant.nmaas.portal.service.ApplicationStatePerDomainService;
 import net.geant.nmaas.portal.service.DomainGroupService;
 import net.geant.nmaas.portal.service.DomainService;
 import net.geant.nmaas.portal.service.UserService;
-import net.geant.nmaas.portal.service.WebhookEventService;
 import net.geant.nmaas.portal.service.impl.domains.DefaultCodenameValidator;
 import net.geant.nmaas.scheduling.ScheduleManager;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/InternationalizationServiceTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/InternationalizationServiceTest.java
index 2eeed20b72c80a81a8d2fb390502ffe7d48a1037..1600b477f213e6be82731958bc869a0313a1f25d 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/InternationalizationServiceTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/InternationalizationServiceTest.java
@@ -1,6 +1,6 @@
 package net.geant.nmaas.portal.service.impl;
 
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
 import net.geant.nmaas.portal.api.i18n.api.InternationalizationBriefView;
 import net.geant.nmaas.portal.api.i18n.api.InternationalizationView;
 import net.geant.nmaas.portal.persistent.repositories.InternationalizationSimpleRepository;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImplTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImplTest.java
index 44860c31d125ed4f211c28dc578e5e9e0727c0ee..60341bc08364c7c97a9ea50ff8d815436a1e70c1 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImplTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImplTest.java
@@ -1,7 +1,5 @@
 package net.geant.nmaas.portal.service.impl;
 
-import net.geant.nmaas.portal.api.exception.ExternalUserCanNotBeLinked;
-import net.geant.nmaas.portal.api.exception.ExternalUserMatchException;
 import net.geant.nmaas.portal.persistent.entity.User;
 import net.geant.nmaas.portal.persistent.repositories.UserRepository;
 import net.geant.nmaas.portal.service.ConfigurationManager;
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/UserServiceImplTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/UserServiceImplTest.java
index 8219596559d4876dec1fa3d4a773c5fa838b93e1..19c57a42ed6a32c55dca8339e06928279dc89f76 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/UserServiceImplTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/UserServiceImplTest.java
@@ -2,9 +2,9 @@ package net.geant.nmaas.portal.service.impl;
 
 import net.geant.nmaas.portal.api.auth.Registration;
 import net.geant.nmaas.portal.api.bulk.CsvDomain;
-import net.geant.nmaas.portal.api.configuration.ConfigurationView;
-import net.geant.nmaas.portal.api.exception.ProcessingException;
-import net.geant.nmaas.portal.api.exception.SignupException;
+import net.geant.nmaas.portal.api.configuration.model.ConfigurationView;
+import net.geant.nmaas.portal.api.exceptions.ProcessingException;
+import net.geant.nmaas.portal.api.exceptions.SignupException;
 import net.geant.nmaas.portal.api.security.JWTTokenService;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.Role;