diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/OnboardingFunctions.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/OnboardingFunctions.java
similarity index 71%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/OnboardingFunctions.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/OnboardingFunctions.java
index ddc483a9d..16ab0e74f 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/OnboardingFunctions.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/OnboardingFunctions.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare;
+package it.pagopa.selfcare.onboarding;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -18,9 +18,10 @@
 import com.microsoft.durabletask.azurefunctions.DurableClientContext;
 import com.microsoft.durabletask.azurefunctions.DurableClientInput;
 import com.microsoft.durabletask.azurefunctions.DurableOrchestrationTrigger;
-import it.pagopa.selfcare.entity.Onboarding;
-import it.pagopa.selfcare.exception.ResourceNotFoundException;
-import it.pagopa.selfcare.service.OnboardingService;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.exception.FunctionOrchestratedException;
+import it.pagopa.selfcare.onboarding.exception.ResourceNotFoundException;
+import it.pagopa.selfcare.onboarding.service.OnboardingService;
 import jakarta.inject.Inject;
 
 import java.time.Duration;
@@ -30,13 +31,17 @@
  * Azure Functions with HTTP Trigger integrated with Quarkus
  */
 public class OnboardingFunctions {
+    public static final String CREATED_NEW_ONBOARDING_ORCHESTRATION_WITH_INSTANCE_ID_MSG = "Created new Onboarding orchestration with instance ID = ";
+    public static final String SAVE_TOKEN_ACTIVITY_NAME = "SaveToken";
+    public static final String BUILD_CONTRACT_ACTIVITY_NAME = "BuildContract";
+    public static final String FORMAT_LOGGER_ONBOARDING_STRING = "%s: %s";
     @Inject
     OnboardingService service;
 
     @Inject
     ObjectMapper objectMapper;
 
-    final static TaskOptions optionsRetry;
+    private static final  TaskOptions optionsRetry;
 
     static {
         // Make 3 attempts with 5 seconds between retries
@@ -60,7 +65,7 @@ public HttpResponseMessage startOrchestration(
 
         DurableTaskClient client = durableContext.getClient();
         String instanceId = client.scheduleNewOrchestrationInstance("Onboardings", onboardingId);
-        context.getLogger().info("Created new Onboarding orchestration with instance ID = " + instanceId);
+        context.getLogger().info(String.format("%s %s", CREATED_NEW_ONBOARDING_ORCHESTRATION_WITH_INSTANCE_ID_MSG, instanceId));
 
         return durableContext.createCheckStatusResponse(request, instanceId);
     }
@@ -70,7 +75,7 @@ public HttpResponseMessage startOrchestration(
      * or wait for external events in a way that's completely fault-tolerant.
      */
     @FunctionName("Onboardings")
-    public String OnboardingsOrchestrator(
+    public String onboardingsOrchestrator(
             @DurableOrchestrationTrigger(name = "taskOrchestrationContext") TaskOrchestrationContext ctx) {
         String onboardingId = ctx.getInput(String.class);
         String onboardingString = getOnboardingString(onboardingId);
@@ -82,34 +87,34 @@ private String getOnboardingString(String onboardingId) {
         Onboarding onboarding = service.getOnboarding(onboardingId)
                 .orElseThrow(() -> new ResourceNotFoundException(String.format("Onboarding with id %s not found!", onboardingId)));
 
-        String onboardingString = null;
+        String onboardingString;
         try {
             onboardingString = objectMapper.writeValueAsString(onboarding);
         } catch (JsonProcessingException e) {
-            throw new RuntimeException(e);
+            throw new FunctionOrchestratedException(e);
         }
         return onboardingString;
     }
 
     private String onboardingsOrchestratorDefault(TaskOrchestrationContext ctx, String onboardingString){
         String result = "";
-        result += ctx.callActivity("BuildContract", onboardingString, optionsRetry, String.class).await() + ", ";
-        result += ctx.callActivity("SaveToken", onboardingString, optionsRetry, String.class).await() + ", ";
+        result += ctx.callActivity(BUILD_CONTRACT_ACTIVITY_NAME, onboardingString, optionsRetry, String.class).await() + ", ";
+        result += ctx.callActivity(SAVE_TOKEN_ACTIVITY_NAME, onboardingString, optionsRetry, String.class).await() + ", ";
         result += ctx.callActivity("SendMailRegistration", onboardingString, optionsRetry, String.class).await() + ", ";
         return result;
     }
 
     private String onboardingsOrchestratorPAorSAorGSPIPA(TaskOrchestrationContext ctx, String onboardingString){
         String result = "";
-        result += ctx.callActivity("BuildContract", onboardingString, optionsRetry, String.class).await() + ", ";
-        result += ctx.callActivity("SaveToken", onboardingString, optionsRetry, String.class).await() + ", ";
+        result += ctx.callActivity(BUILD_CONTRACT_ACTIVITY_NAME, onboardingString, optionsRetry, String.class).await() + ", ";
+        result += ctx.callActivity(SAVE_TOKEN_ACTIVITY_NAME, onboardingString, optionsRetry, String.class).await() + ", ";
         result += ctx.callActivity("SendMailRegistrationWithContract", onboardingString, optionsRetry,  String.class).await() + ", ";
         return result;
     }
 
     private String onboardingsOrchestratorPG(TaskOrchestrationContext ctx, String onboardingString){
         String result = "";
-        result += ctx.callActivity("SaveToken", onboardingString, optionsRetry,  String.class).await() + ", ";
+        result += ctx.callActivity(SAVE_TOKEN_ACTIVITY_NAME, onboardingString, optionsRetry,  String.class).await() + ", ";
         result += ctx.callActivity("SendMailConfirmation", onboardingString, optionsRetry,  String.class).await() + ", ";
         return result;
     }
@@ -117,13 +122,13 @@ private String onboardingsOrchestratorPG(TaskOrchestrationContext ctx, String on
     /**
      * This is the activity function that gets invoked by the orchestrator function.
      */
-    @FunctionName("BuildContract")
+    @FunctionName(BUILD_CONTRACT_ACTIVITY_NAME)
     public String buildContract(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) {
-        context.getLogger().info("BuildContract: " + onboardingString);
+        context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, BUILD_CONTRACT_ACTIVITY_NAME, onboardingString));
         try {
             service.createContract(objectMapper.readValue(onboardingString, Onboarding.class));
         } catch (JsonProcessingException e) {
-            throw new RuntimeException(e);
+            throw new FunctionOrchestratedException(e);
         }
         return onboardingString;
     }
@@ -131,13 +136,13 @@ public String buildContract(@DurableActivityTrigger(name = "onboardingString") S
     /**
      * This is the activity function that gets invoked by the orchestrator function.
      */
-    @FunctionName("SaveToken")
-    public String SaveToken(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) {
-        context.getLogger().info("SaveToken: " + onboardingString);
+    @FunctionName(SAVE_TOKEN_ACTIVITY_NAME)
+    public String saveToken(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) {
+        context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, SAVE_TOKEN_ACTIVITY_NAME, onboardingString));
         try {
             service.saveToken(objectMapper.readValue(onboardingString, Onboarding.class));
         } catch (JsonProcessingException e) {
-            throw new RuntimeException(e);
+            throw new FunctionOrchestratedException(e);
         }
         return onboardingString;
     }
@@ -147,7 +152,7 @@ public String SaveToken(@DurableActivityTrigger(name = "onboardingString") Strin
      */
     @FunctionName("SendMailRegistrationWithContract")
     public String sendMailWithContract(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) {
-        context.getLogger().info("SendMailRegistrationWithContract: " + onboardingString);
+        context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING,"SendMailRegistrationWithContract", onboardingString));
         return onboardingString;
     }
 
@@ -156,7 +161,7 @@ public String sendMailWithContract(@DurableActivityTrigger(name = "onboardingStr
      */
     @FunctionName("SendMailRegistration")
     public String sendMailRegistration(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) {
-        context.getLogger().info("SendMailRegistration: " + onboardingString);
+        context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, "SendMailRegistration", onboardingString));
         return onboardingString;
     }
 
@@ -165,7 +170,7 @@ public String sendMailRegistration(@DurableActivityTrigger(name = "onboardingStr
      */
     @FunctionName("SendMailConfirmation")
     public String sendMailConfirmation(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) {
-        context.getLogger().info("SendMailConfirmation: " + onboardingString);
+        context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING,"SendMailConfirmation", onboardingString));
         return onboardingString;
     }
 }
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/config/AzureStorageConfig.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/AzureStorageConfig.java
similarity index 88%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/config/AzureStorageConfig.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/AzureStorageConfig.java
index 98d2193bf..0af86496f 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/config/AzureStorageConfig.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/AzureStorageConfig.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.config;
+package it.pagopa.selfcare.onboarding.config;
 
 import io.smallrye.config.ConfigMapping;
 
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/config/MailTemplateConfig.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/MailTemplateConfig.java
similarity index 96%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/config/MailTemplateConfig.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/MailTemplateConfig.java
index 1ec548d78..7dc895254 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/config/MailTemplateConfig.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/MailTemplateConfig.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.config;
+package it.pagopa.selfcare.onboarding.config;
 
 import io.smallrye.config.ConfigMapping;
 
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/config/OnboardingFunctionConfig.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/OnboardingFunctionConfig.java
similarity index 90%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/config/OnboardingFunctionConfig.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/OnboardingFunctionConfig.java
index afb716a14..c78a0fefd 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/config/OnboardingFunctionConfig.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/config/OnboardingFunctionConfig.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.config;
+package it.pagopa.selfcare.onboarding.config;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -9,6 +9,7 @@
 import io.vertx.core.json.jackson.DatabindCodec;
 import it.pagopa.selfcare.azurestorage.AzureBlobClientDefault;
 import it.pagopa.selfcare.azurestorage.AzureBlobClient;
+import it.pagopa.selfcare.onboarding.exception.GenericOnboardingException;
 import it.pagopa.selfcare.product.service.ProductService;
 import it.pagopa.selfcare.product.service.ProductServiceDefault;
 import jakarta.enterprise.context.ApplicationScoped;
@@ -43,7 +44,7 @@ public ProductService productService(AzureStorageConfig azureStorageConfig){
         try {
             return new ProductServiceDefault(productJsonString, objectMapper());
         } catch (JsonProcessingException e) {
-            throw new RuntimeException(e);
+            throw new GenericOnboardingException("Found an issue when trying to serialize product json string!!");
         }
     }
 
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Billing.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Billing.java
similarity index 93%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Billing.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Billing.java
index 0ef8e009a..ec4fc4ecc 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Billing.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Billing.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.entity;
+package it.pagopa.selfcare.onboarding.entity;
 
 
 public class Billing {
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/DataProtectionOfficer.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/DataProtectionOfficer.java
similarity index 91%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/entity/DataProtectionOfficer.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/DataProtectionOfficer.java
index f5dad9c2c..6393cc56e 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/DataProtectionOfficer.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/DataProtectionOfficer.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.entity;
+package it.pagopa.selfcare.onboarding.entity;
 
 
 public class DataProtectionOfficer {
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Institution.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Institution.java
similarity index 98%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Institution.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Institution.java
index 217f8885e..6f2c53fa0 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Institution.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Institution.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.entity;
+package it.pagopa.selfcare.onboarding.entity;
 
 import it.pagopa.selfcare.commons.base.utils.InstitutionType;
 import it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType;
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/MailTemplate.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/MailTemplate.java
similarity index 92%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/entity/MailTemplate.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/MailTemplate.java
index ac8a787c8..6444490a7 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/MailTemplate.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/MailTemplate.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.entity;
+package it.pagopa.selfcare.onboarding.entity;
 
 
 import java.nio.charset.StandardCharsets;
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Onboarding.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Onboarding.java
similarity index 93%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Onboarding.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Onboarding.java
index 97e836280..312203cf8 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Onboarding.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Onboarding.java
@@ -1,14 +1,11 @@
-package it.pagopa.selfcare.entity;
+package it.pagopa.selfcare.onboarding.entity;
 
 
 import io.quarkus.mongodb.panache.common.MongoEntity;
 import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
-import org.bson.codecs.pojo.annotations.BsonId;
-import org.bson.codecs.pojo.annotations.BsonIgnore;
 import org.bson.types.ObjectId;
 
 import java.time.LocalDateTime;
-import java.time.OffsetDateTime;
 import java.util.List;
 
 
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/PaymentServiceProvider.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/PaymentServiceProvider.java
similarity index 96%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/entity/PaymentServiceProvider.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/PaymentServiceProvider.java
index 06f47b7bf..89c4b8fe6 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/PaymentServiceProvider.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/PaymentServiceProvider.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.entity;
+package it.pagopa.selfcare.onboarding.entity;
 
 
 public class PaymentServiceProvider {
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Token.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Token.java
similarity index 96%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Token.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Token.java
index 2ea3d96ba..b5f4ba0d5 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/Token.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/Token.java
@@ -1,12 +1,10 @@
-package it.pagopa.selfcare.entity;
+package it.pagopa.selfcare.onboarding.entity;
 
 import io.quarkus.mongodb.panache.common.MongoEntity;
 import it.pagopa.selfcare.onboarding.common.TokenType;
 import org.bson.types.ObjectId;
 
 import java.time.LocalDateTime;
-import java.time.OffsetDateTime;
-import java.util.List;
 
 
 @MongoEntity(collection="tokens")
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/User.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/User.java
similarity index 77%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/entity/User.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/User.java
index b82d065d6..9198669aa 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/entity/User.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/entity/User.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.entity;
+package it.pagopa.selfcare.onboarding.entity;
 
 import it.pagopa.selfcare.commons.base.security.PartyRole;
 
@@ -7,7 +7,7 @@ public class User {
 
     private String id;
     private PartyRole role;
-    private String ProductRole;
+    private String productRole;
 
     public String getId() {
         return id;
@@ -26,10 +26,10 @@ public void setRole(PartyRole role) {
     }
 
     public String getProductRole() {
-        return ProductRole;
+        return productRole;
     }
 
     public void setProductRole(String productRole) {
-        ProductRole = productRole;
+        this.productRole = productRole;
     }
 }
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/FunctionOrchestratedException.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/FunctionOrchestratedException.java
new file mode 100644
index 000000000..df853c7a7
--- /dev/null
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/FunctionOrchestratedException.java
@@ -0,0 +1,8 @@
+package it.pagopa.selfcare.onboarding.exception;
+
+public class FunctionOrchestratedException extends RuntimeException {
+
+    public FunctionOrchestratedException(Exception e) {
+        super(e);
+    }
+}
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/exception/GenericOnboardingException.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/GenericOnboardingException.java
similarity index 63%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/exception/GenericOnboardingException.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/GenericOnboardingException.java
index cd77e424a..866ca18d1 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/exception/GenericOnboardingException.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/GenericOnboardingException.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.exception;
+package it.pagopa.selfcare.onboarding.exception;
 
 public class GenericOnboardingException extends RuntimeException {
 
@@ -9,6 +9,11 @@ public GenericOnboardingException(String message, String code) {
         this.code = code;
     }
 
+    public GenericOnboardingException(String message) {
+        super(message);
+        this.code = "0000";
+    }
+
     public String getCode() {
         return code;
     }
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/exception/ResourceNotFoundException.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/ResourceNotFoundException.java
similarity index 89%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/exception/ResourceNotFoundException.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/ResourceNotFoundException.java
index 9d37e5bf1..e696c94c4 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/exception/ResourceNotFoundException.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/exception/ResourceNotFoundException.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.exception;
+package it.pagopa.selfcare.onboarding.exception;
 
 
 public class ResourceNotFoundException extends RuntimeException {
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/repository/OnboardingRepository.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/repository/OnboardingRepository.java
similarity index 67%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/repository/OnboardingRepository.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/repository/OnboardingRepository.java
index c362ba277..7223b63c6 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/repository/OnboardingRepository.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/repository/OnboardingRepository.java
@@ -1,7 +1,7 @@
-package it.pagopa.selfcare.repository;
+package it.pagopa.selfcare.onboarding.repository;
 
 import io.quarkus.mongodb.panache.PanacheMongoRepository;
-import it.pagopa.selfcare.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
 import jakarta.enterprise.context.ApplicationScoped;
 
 @ApplicationScoped
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/repository/TokenRepository.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/repository/TokenRepository.java
similarity index 67%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/repository/TokenRepository.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/repository/TokenRepository.java
index 2df77444e..b49dd78e4 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/repository/TokenRepository.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/repository/TokenRepository.java
@@ -1,7 +1,7 @@
-package it.pagopa.selfcare.repository;
+package it.pagopa.selfcare.onboarding.repository;
 
 import io.quarkus.mongodb.panache.PanacheMongoRepository;
-import it.pagopa.selfcare.entity.Token;
+import it.pagopa.selfcare.onboarding.entity.Token;
 import jakarta.enterprise.context.ApplicationScoped;
 
 @ApplicationScoped
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/ContractService.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/ContractService.java
similarity index 81%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/service/ContractService.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/ContractService.java
index b49263fc3..e04e70b70 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/ContractService.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/ContractService.java
@@ -1,6 +1,6 @@
-package it.pagopa.selfcare.service;
+package it.pagopa.selfcare.onboarding.service;
 
-import it.pagopa.selfcare.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
 import org.openapi.quarkus.user_registry_json.model.UserResource;
 
 import java.io.File;
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/ContractServiceDefault.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/ContractServiceDefault.java
similarity index 80%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/service/ContractServiceDefault.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/ContractServiceDefault.java
index 3649607e9..c48a82b49 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/ContractServiceDefault.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/ContractServiceDefault.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.service;
+package it.pagopa.selfcare.onboarding.service;
 
 import com.openhtmltopdf.extend.FSStream;
 import com.openhtmltopdf.extend.FSStreamFactory;
@@ -6,11 +6,11 @@
 import com.openhtmltopdf.svgsupport.BatikSVGDrawer;
 import it.pagopa.selfcare.azurestorage.AzureBlobClient;
 import it.pagopa.selfcare.commons.base.utils.InstitutionType;
-import it.pagopa.selfcare.config.AzureStorageConfig;
-import it.pagopa.selfcare.entity.Institution;
-import it.pagopa.selfcare.entity.Onboarding;
-import it.pagopa.selfcare.exception.GenericOnboardingException;
-import it.pagopa.selfcare.utils.ClassPathStream;
+import it.pagopa.selfcare.onboarding.config.AzureStorageConfig;
+import it.pagopa.selfcare.onboarding.entity.Institution;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.exception.GenericOnboardingException;
+import it.pagopa.selfcare.onboarding.utils.ClassPathStream;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import org.apache.commons.text.StringSubstitutor;
@@ -34,14 +34,15 @@
 import java.util.UUID;
 
 import static it.pagopa.selfcare.onboarding.common.ProductId.*;
-import static it.pagopa.selfcare.utils.GenericError.GENERIC_ERROR;
-import static it.pagopa.selfcare.utils.PdfMapper.*;
+import static it.pagopa.selfcare.onboarding.utils.GenericError.GENERIC_ERROR;
+import static it.pagopa.selfcare.onboarding.utils.PdfMapper.*;
 
 @ApplicationScoped
 public class ContractServiceDefault implements ContractService {
 
 
-    private static final Logger log = LoggerFactory.getLogger(OnboardingService.class);
+    private static final Logger log = LoggerFactory.getLogger(ContractServiceDefault.class);
+    public static final String PDF_FORMAT_FILENAME = "%s.pdf";
 
     @Inject
     AzureStorageConfig azureStorageConfig;
@@ -79,14 +80,13 @@ public File createContractPDF(String contractTemplatePath, Onboarding onboarding
             getPDFAsFile(files, contractTemplateText, data);
 
             //return signContract(institution, request, files.toFile());
-            final String filename = String.format("%s.pdf", onboarding.getOnboardingId());
+            final String filename = String.format(PDF_FORMAT_FILENAME, onboarding.getOnboardingId());
             final String path = String.format("%s%s", azureStorageConfig.contractPath(), onboarding.getOnboardingId());
             azureBlobClient.uploadFile(path, filename, Files.readAllBytes(files));
 
             return files.toFile();
         } catch (IOException e) {
-            log.warn("can not create contract PDF", e);
-            throw new GenericOnboardingException(e.getMessage(), "0000");
+            throw new GenericOnboardingException(String.format("Can not create contract PDF, message: %s", e.getMessage()));
         }
     }
 
@@ -95,14 +95,13 @@ public File loadContractPDF(String contractTemplatePath, String onboardingId) {
         try {
             File pdf = azureBlobClient.getFileAsPdf(contractTemplatePath);
 
-            final String filename = String.format("%s.pdf", onboardingId);
+            final String filename = String.format(PDF_FORMAT_FILENAME, onboardingId);
             final String path = String.format("%s/%s", azureStorageConfig.contractPath(), onboardingId);
             azureBlobClient.uploadFile(path, filename, Files.readAllBytes(pdf.toPath()));
 
             return pdf;
         } catch (IOException e) {
-            log.warn("can not load contract PDF", e);
-            throw new GenericOnboardingException(e.getMessage(), "0000");
+            throw new GenericOnboardingException(String.format("Can not load contract PDF, message: %s", e.getMessage()));
         }
     }
 
@@ -111,9 +110,7 @@ private void getPDFAsFile(Path files, String contractTemplate, Map<String, Objec
         String html = StringSubstitutor.replace(contractTemplate, data);
         PdfRendererBuilder builder = new PdfRendererBuilder();
         builder.useFastMode();
-        builder.useProtocolsStreamImplementation(new FSStreamFactory() {
-            @Override
-            public FSStream getUrl(String url) {
+        builder.useProtocolsStreamImplementation(url -> {
                 URI fullUri;
                 try {
                     fullUri = new URI(url);
@@ -122,7 +119,6 @@ public FSStream getUrl(String url) {
                     log.error("URISintaxException in ClassPathStreamFactory: ",e);
                     throw new GenericOnboardingException(GENERIC_ERROR.getMessage(), GENERIC_ERROR.getCode());
                 }
-            }
         }, "classpath");
         var doc = Jsoup.parse(html, "UTF-8");
         var dom = W3CDom.convert(doc);
@@ -133,7 +129,7 @@ public FSStream getUrl(String url) {
             builder.toStream(fileOutputStream);
             builder.run();
         } catch (IOException e){
-            throw new RuntimeException(e);
+            throw new GenericOnboardingException(e.getMessage());
         }
 
         log.debug("PDF stream properly retrieved");
@@ -141,7 +137,7 @@ public FSStream getUrl(String url) {
 
     @Override
     public File retrieveContractNotSigned(String onboardingId) {
-        final String filename = String.format("%s.pdf", onboardingId);
+        final String filename = String.format(PDF_FORMAT_FILENAME, onboardingId);
         final String path = String.format("%s%s/%s", azureStorageConfig.contractPath(), onboardingId, filename);
         return azureBlobClient.getFileAsPdf(path);
     }
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/NotificationService.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationService.java
similarity index 81%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/service/NotificationService.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationService.java
index 5bde5ecc8..2d1b7cfb2 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/NotificationService.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationService.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.service;
+package it.pagopa.selfcare.onboarding.service;
 
 
 public interface NotificationService {
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/NotificationServiceDefault.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefault.java
similarity index 74%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/service/NotificationServiceDefault.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefault.java
index 82dbd10eb..8ac52a0e0 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/NotificationServiceDefault.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefault.java
@@ -1,11 +1,11 @@
-package it.pagopa.selfcare.service;
+package it.pagopa.selfcare.onboarding.service;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import io.quarkus.mailer.Mail;
 import io.quarkus.mailer.Mailer;
 import it.pagopa.selfcare.azurestorage.AzureBlobClient;
-import it.pagopa.selfcare.config.MailTemplateConfig;
-import it.pagopa.selfcare.entity.MailTemplate;
+import it.pagopa.selfcare.onboarding.config.MailTemplateConfig;
+import it.pagopa.selfcare.onboarding.entity.MailTemplate;
+import it.pagopa.selfcare.onboarding.exception.GenericOnboardingException;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import org.apache.commons.text.StringSubstitutor;
@@ -15,12 +15,15 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
-import static it.pagopa.selfcare.utils.GenericError.ERROR_DURING_COMPRESS_FILE;
-import static it.pagopa.selfcare.utils.GenericError.ERROR_DURING_SEND_MAIL;
+import static it.pagopa.selfcare.onboarding.utils.GenericError.ERROR_DURING_COMPRESS_FILE;
+import static it.pagopa.selfcare.onboarding.utils.GenericError.ERROR_DURING_SEND_MAIL;
 
 
 @ApplicationScoped
@@ -28,9 +31,6 @@ public class NotificationServiceDefault implements NotificationService {
 
     private static final Logger log = LoggerFactory.getLogger(NotificationServiceDefault.class);
 
-    private static final String MAIL_PARAMETER_LOG = "mailParameters: {}";
-    private static final String DESTINATION_MAIL_LOG = "destinationMails: {}";
-
     @Inject
     MailTemplateConfig mailTemplateConfig;
 
@@ -60,11 +60,7 @@ public void sendMailWithContract(String onboardingId, String filenameContract, S
         byte[] contractData = azureBlobClient.getFile(filepathContract);
         byte[] contractZipData = zipBytes(fileName, contractData);
 
-        //List<String> destinationMail = Objects.nonNull(coreConfig.getDestinationMails()) && !coreConfig.getDestinationMails().isEmpty()
-        //        ? coreConfig.getDestinationMails() : List.of(destination);
-        List<String> destinationMail = List.of("manuel.rafeli@pagopa.it");
-
-        sendMailWithFile(destinationMail, mailTemplateConfig.path(), mailParameters, contractZipData, fileNameZip, productName);
+        sendMailWithFile(List.of("*.*@pagopa.it"), mailTemplateConfig.path(), mailParameters, contractZipData, fileNameZip, productName);
         log.debug("onboarding-contract-email Email successful sent");
     }
 
@@ -76,19 +72,18 @@ public void sendMailWithFile(List<String> destinationMail, String templateName,
             String html = StringSubstitutor.replace(mailTemplate.getBody(), mailParameters);
             log.trace("sendMessage start");
             
-            Mail mail = Mail
+            /*Mail mail = Mail
                     .withHtml(destinationMail.get(0),
                             prefixSubject + ": " + mailTemplate.getSubject(),
                             html)
                     .addAttachment(fileName, fileData, "application/zip")
                     .setFrom(sendMail);
 
-            //mailer.send(mail);
+            mailer.send(mail); */
 
             log.info("END - sendMail to {}, with prefixSubject {}", destinationMail, prefixSubject);
         } catch (Exception e) {
-            log.error(ERROR_DURING_SEND_MAIL + ":" + e.getMessage());
-            throw new RuntimeException(ERROR_DURING_SEND_MAIL.getMessage());
+            throw new GenericOnboardingException(ERROR_DURING_SEND_MAIL.getMessage());
         }
         log.trace("sendMessage end");
     }
@@ -104,8 +99,7 @@ public byte[] zipBytes(String filename, byte[] data)  {
             zos.finish();
             return baos.toByteArray();
         } catch (IOException e) {
-            log.error(String.format(ERROR_DURING_COMPRESS_FILE.getMessage(), filename), e);
-            throw new RuntimeException(String.format(ERROR_DURING_COMPRESS_FILE.getMessage(), filename));
+            throw new GenericOnboardingException(String.format(ERROR_DURING_COMPRESS_FILE.getMessage(), filename));
         }
     }
 
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/OnboardingService.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingService.java
similarity index 90%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/service/OnboardingService.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingService.java
index 073b43cae..cb052ce5b 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/service/OnboardingService.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingService.java
@@ -1,19 +1,19 @@
-package it.pagopa.selfcare.service;
+package it.pagopa.selfcare.onboarding.service;
 
 import eu.europa.esig.dss.enumerations.DigestAlgorithm;
 import eu.europa.esig.dss.model.DSSDocument;
 import eu.europa.esig.dss.model.FileDocument;
 import it.pagopa.selfcare.commons.base.security.PartyRole;
-import it.pagopa.selfcare.entity.Onboarding;
-import it.pagopa.selfcare.entity.Token;
-import it.pagopa.selfcare.entity.User;
-import it.pagopa.selfcare.exception.GenericOnboardingException;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.entity.Token;
+import it.pagopa.selfcare.onboarding.entity.User;
+import it.pagopa.selfcare.onboarding.exception.GenericOnboardingException;
 import it.pagopa.selfcare.onboarding.common.TokenType;
 import it.pagopa.selfcare.product.entity.Product;
 import it.pagopa.selfcare.product.service.ProductService;
-import it.pagopa.selfcare.repository.OnboardingRepository;
-import it.pagopa.selfcare.repository.TokenRepository;
-import it.pagopa.selfcare.utils.GenericError;
+import it.pagopa.selfcare.onboarding.repository.OnboardingRepository;
+import it.pagopa.selfcare.onboarding.repository.TokenRepository;
+import it.pagopa.selfcare.onboarding.utils.GenericError;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import org.bson.types.ObjectId;
@@ -25,8 +25,6 @@
 
 import java.io.File;
 import java.time.LocalDateTime;
-import java.time.OffsetDateTime;
-import java.time.temporal.ChronoUnit;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/utils/ClassPathStream.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/ClassPathStream.java
similarity index 93%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/utils/ClassPathStream.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/ClassPathStream.java
index 43ddd6b69..207a0a7a7 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/utils/ClassPathStream.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/ClassPathStream.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.utils;
+package it.pagopa.selfcare.onboarding.utils;
 
 import com.openhtmltopdf.extend.FSStream;
 
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/utils/GenericError.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/GenericError.java
similarity index 86%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/utils/GenericError.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/GenericError.java
index 710a5b310..497a9a717 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/utils/GenericError.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/GenericError.java
@@ -1,14 +1,14 @@
-package it.pagopa.selfcare.utils;
+package it.pagopa.selfcare.onboarding.utils;
 
 public enum GenericError {
 
 
     MANAGER_NOT_FOUND_GENERIC_ERROR("0033", "No onboarded managers"),
     GET_USER_INSTITUTION_RELATIONSHIP_ERROR("0023", "Error while retrieving user relationships"),
-    GET_INSTITUTION_BY_ID_ERROR("0040", "Error while retrieving institution having id %s"),
-    GET_INSTITUTION_BY_EXTERNAL_ID_ERROR("0041", "Error while retrieving institution having externalId %s"),
-    INSTITUTION_MANAGER_ERROR("0042", "Error while retrieving institution having externalId %s"),
-    INSTITUTION_BILLING_ERROR("0044", "Error while retrieving institution having externalId %s"),
+    GET_INSTITUTION_BY_ID_ERROR("0040", Constants.ERROR_WHILE_RETRIEVING_INSTITUTION_HAVING_EXTERNAL_ID),
+    GET_INSTITUTION_BY_EXTERNAL_ID_ERROR("0041", Constants.ERROR_WHILE_RETRIEVING_INSTITUTION_HAVING_EXTERNAL_ID),
+    INSTITUTION_MANAGER_ERROR("0042", Constants.ERROR_WHILE_RETRIEVING_INSTITUTION_HAVING_EXTERNAL_ID),
+    INSTITUTION_BILLING_ERROR("0044", Constants.ERROR_WHILE_RETRIEVING_INSTITUTION_HAVING_EXTERNAL_ID),
     CREATE_INSTITUTION_ERROR("0037", "Error while creating requested institution"),
     ONBOARDING_OPERATION_ERROR("0017", "Error while performing onboarding operation"),
     CREATE_DELEGATION_ERROR("0027", "Error while creating requested delegation"),
@@ -74,4 +74,8 @@ public String getCode() {
     public String getMessage() {
         return detail;
     }
+
+    private static class Constants {
+        public static final String ERROR_WHILE_RETRIEVING_INSTITUTION_HAVING_EXTERNAL_ID = "Error while retrieving institution having externalId %s";
+    }
 }
diff --git a/onboarding-functions/src/main/java/it/pagopa/selfcare/utils/PdfMapper.java b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/PdfMapper.java
similarity index 94%
rename from onboarding-functions/src/main/java/it/pagopa/selfcare/utils/PdfMapper.java
rename to onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/PdfMapper.java
index d56499a02..3d2f55b20 100644
--- a/onboarding-functions/src/main/java/it/pagopa/selfcare/utils/PdfMapper.java
+++ b/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/PdfMapper.java
@@ -1,22 +1,17 @@
-package it.pagopa.selfcare.utils;
+package it.pagopa.selfcare.onboarding.utils;
 
 import it.pagopa.selfcare.commons.base.utils.InstitutionType;
-
-import it.pagopa.selfcare.entity.Billing;
-import it.pagopa.selfcare.entity.Institution;
-import it.pagopa.selfcare.entity.Onboarding;
-import it.pagopa.selfcare.exception.GenericOnboardingException;
-import it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType;
 import it.pagopa.selfcare.onboarding.common.Origin;
 import it.pagopa.selfcare.onboarding.common.PricingPlan;
+import it.pagopa.selfcare.onboarding.entity.Billing;
+import it.pagopa.selfcare.onboarding.entity.Institution;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
 import org.openapi.quarkus.user_registry_json.model.UserResource;
 import org.springframework.util.StringUtils;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 import static it.pagopa.selfcare.onboarding.common.ProductId.PROD_IO;
-import static it.pagopa.selfcare.utils.GenericError.MANAGER_EMAIL_NOT_FOUND;
 
 
 public class PdfMapper {
@@ -47,11 +42,11 @@ public static Map<String, Object> setUpCommonData(UserResource validManager, Lis
         if (geographicTaxonomies != null && !geographicTaxonomies.isEmpty()) {
             map.put("institutionGeoTaxonomies", geographicTaxonomies);
         }
-        if(institution.getSubunitType() != null && (institution.getSubunitType().equals(InstitutionPaSubunitType.AOO.name()) || institution.getSubunitType().equals(InstitutionPaSubunitType.UO.name()))){
+        //if(institution.getSubunitType() != null && (institution.getSubunitType().equals(InstitutionPaSubunitType.AOO.name()) || institution.getSubunitType().equals(InstitutionPaSubunitType.UO.name()))){
             //map.put("parentInfo", " ente centrale " + institution.getParentDescription());
-        } else {
+        //} else {
             map.put("parentInfo", "");
-        }
+        //}
         return map;
     }
 
diff --git a/onboarding-functions/src/main/resources/application.properties b/onboarding-functions/src/main/resources/application.properties
index db86eaccf..640d412d6 100644
--- a/onboarding-functions/src/main/resources/application.properties
+++ b/onboarding-functions/src/main/resources/application.properties
@@ -70,6 +70,3 @@ onboarding-functions.mail-template.placeholders.onboarding.reject-path = ${MAIL_
 onboarding-functions.mail-template.placeholders.onboarding.reject-product-name=productName
 onboarding-functions.mail-template.placeholders.onboarding.reject-onboarding-url-placeholder=onboardingUrl
 onboarding-functions.mail-template.placeholders.onboarding.reject-onboarding-url-value=${MAIL_ONBOARDING_URL:}
-
-## Jacoco
-quarkus.jacoco.includes=it/pagopa/selfcare/service/**,it/pagopa/selfcare/repository/**
\ No newline at end of file
diff --git a/onboarding-functions/src/test/java/it/pagopa/selfcare/HttpResponseMessageMock.java b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/HttpResponseMessageMock.java
similarity index 98%
rename from onboarding-functions/src/test/java/it/pagopa/selfcare/HttpResponseMessageMock.java
rename to onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/HttpResponseMessageMock.java
index 9f90be88e..d8ba89bab 100644
--- a/onboarding-functions/src/test/java/it/pagopa/selfcare/HttpResponseMessageMock.java
+++ b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/HttpResponseMessageMock.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare;
+package it.pagopa.selfcare.onboarding;
 
 import com.microsoft.azure.functions.HttpResponseMessage;
 import com.microsoft.azure.functions.HttpStatus;
diff --git a/onboarding-functions/src/test/java/it/pagopa/selfcare/OnboardingFunctionsTest.java b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/OnboardingFunctionsTest.java
similarity index 96%
rename from onboarding-functions/src/test/java/it/pagopa/selfcare/OnboardingFunctionsTest.java
rename to onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/OnboardingFunctionsTest.java
index 071068fbf..37145dfe6 100644
--- a/onboarding-functions/src/test/java/it/pagopa/selfcare/OnboardingFunctionsTest.java
+++ b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/OnboardingFunctionsTest.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare;
+package it.pagopa.selfcare.onboarding;
 
 import com.microsoft.azure.functions.ExecutionContext;
 import com.microsoft.azure.functions.HttpRequestMessage;
@@ -7,6 +7,7 @@
 import com.microsoft.durabletask.DurableTaskClient;
 import com.microsoft.durabletask.azurefunctions.DurableClientContext;
 import io.quarkus.test.junit.QuarkusTest;
+import it.pagopa.selfcare.onboarding.OnboardingFunctions;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
diff --git a/onboarding-functions/src/test/java/it/pagopa/selfcare/service/ContractServiceDefaultTest.java b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/ContractServiceDefaultTest.java
similarity index 95%
rename from onboarding-functions/src/test/java/it/pagopa/selfcare/service/ContractServiceDefaultTest.java
rename to onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/ContractServiceDefaultTest.java
index 6a6fff16d..6ddf7983e 100644
--- a/onboarding-functions/src/test/java/it/pagopa/selfcare/service/ContractServiceDefaultTest.java
+++ b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/ContractServiceDefaultTest.java
@@ -1,11 +1,11 @@
-package it.pagopa.selfcare.service;
+package it.pagopa.selfcare.onboarding.service;
 
 import io.quarkus.test.InjectMock;
 import io.quarkus.test.junit.QuarkusTest;
 import it.pagopa.selfcare.azurestorage.AzureBlobClient;
 import it.pagopa.selfcare.commons.base.utils.InstitutionType;
-import it.pagopa.selfcare.entity.Institution;
-import it.pagopa.selfcare.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.entity.Institution;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
 import jakarta.inject.Inject;
 import org.bson.types.ObjectId;
 import org.junit.jupiter.api.Test;
@@ -28,7 +28,7 @@
 import static org.mockito.Mockito.times;
 
 @QuarkusTest
-public class ContractServiceDefaultTest {
+class ContractServiceDefaultTest {
 
     @InjectMock
     AzureBlobClient azureBlobClient;
diff --git a/onboarding-functions/src/test/java/it/pagopa/selfcare/service/NotificationServiceDefaultTest.java b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefaultTest.java
similarity index 86%
rename from onboarding-functions/src/test/java/it/pagopa/selfcare/service/NotificationServiceDefaultTest.java
rename to onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefaultTest.java
index 742d2af85..efc582ba1 100644
--- a/onboarding-functions/src/test/java/it/pagopa/selfcare/service/NotificationServiceDefaultTest.java
+++ b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefaultTest.java
@@ -1,11 +1,9 @@
-package it.pagopa.selfcare.service;
+package it.pagopa.selfcare.onboarding.service;
 
 import io.quarkus.mailer.Mailer;
 import io.quarkus.test.InjectMock;
 import io.quarkus.test.junit.QuarkusTest;
 import it.pagopa.selfcare.azurestorage.AzureBlobClient;
-import it.pagopa.selfcare.config.MailTemplateConfig;
-import it.pagopa.selfcare.exception.GenericOnboardingException;
 import jakarta.inject.Inject;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
@@ -16,7 +14,7 @@
 import static org.mockito.ArgumentMatchers.any;
 
 @QuarkusTest
-public class NotificationServiceDefaultTest {
+class NotificationServiceDefaultTest {
 
     @InjectMock
     AzureBlobClient azureBlobClient;
@@ -34,9 +32,11 @@ void sendMailWithContract() {
         Mockito.when(azureBlobClient.getFile(any())).thenReturn("example".getBytes(StandardCharsets.UTF_8));
 
         Mockito.when(azureBlobClient.getFileAsText(any())).thenReturn(mailTemplate);
-        //Mockito.doNothing().when(mailer).send(any());
 
         notificationService.sendMailWithContract("onboardingId", "filenameContract", "","","","","");
+
+        Mockito.verify(azureBlobClient, Mockito.times(1))
+                .getFile(any());
     }
 
     @Test
diff --git a/onboarding-functions/src/test/java/it/pagopa/selfcare/service/OnboardingServiceTest.java b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceTest.java
similarity index 91%
rename from onboarding-functions/src/test/java/it/pagopa/selfcare/service/OnboardingServiceTest.java
rename to onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceTest.java
index 2a757ac73..6503726b0 100644
--- a/onboarding-functions/src/test/java/it/pagopa/selfcare/service/OnboardingServiceTest.java
+++ b/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceTest.java
@@ -1,4 +1,4 @@
-package it.pagopa.selfcare.service;
+package it.pagopa.selfcare.onboarding.service;
 
 import eu.europa.esig.dss.enumerations.DigestAlgorithm;
 import eu.europa.esig.dss.model.DSSDocument;
@@ -6,14 +6,14 @@
 import io.quarkus.test.InjectMock;
 import io.quarkus.test.junit.QuarkusTest;
 import it.pagopa.selfcare.commons.base.security.PartyRole;
-import it.pagopa.selfcare.entity.Onboarding;
-import it.pagopa.selfcare.entity.Token;
-import it.pagopa.selfcare.entity.User;
-import it.pagopa.selfcare.exception.GenericOnboardingException;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.entity.Token;
+import it.pagopa.selfcare.onboarding.entity.User;
+import it.pagopa.selfcare.onboarding.exception.GenericOnboardingException;
 import it.pagopa.selfcare.product.entity.Product;
 import it.pagopa.selfcare.product.service.ProductService;
-import it.pagopa.selfcare.repository.OnboardingRepository;
-import it.pagopa.selfcare.repository.TokenRepository;
+import it.pagopa.selfcare.onboarding.repository.OnboardingRepository;
+import it.pagopa.selfcare.onboarding.repository.TokenRepository;
 import jakarta.inject.Inject;
 import org.bson.types.ObjectId;
 import org.eclipse.microprofile.rest.client.inject.RestClient;
@@ -29,12 +29,12 @@
 import java.util.Optional;
 import java.util.UUID;
 
-import static it.pagopa.selfcare.service.OnboardingService.USERS_FIELD_LIST;
+import static it.pagopa.selfcare.onboarding.service.OnboardingService.USERS_FIELD_LIST;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.any;
 
 @QuarkusTest
-public class OnboardingServiceTest {
+class OnboardingServiceTest {
 
     @InjectMock
     OnboardingRepository onboardingRepository;