diff --git a/ExpressAPI/.env.vault b/ExpressAPI/.env.vault
index 7f2cb5b5266bb932591e459efda12ab7b21937ca..572ab9aee9287e08cf3ff581a9b915a5e78f41d7 100644
--- a/ExpressAPI/.env.vault
+++ b/ExpressAPI/.env.vault
@@ -4,11 +4,11 @@
 #/--------------------------------------------------/
 
 # development
-DOTENV_VAULT_DEVELOPMENT="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"
+DOTENV_VAULT_DEVELOPMENT="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"
 
 # production
-DOTENV_VAULT_PRODUCTION="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"
+DOTENV_VAULT_PRODUCTION="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"
 
 # test
-DOTENV_VAULT_TEST="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"
+DOTENV_VAULT_TEST="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"
 
diff --git a/ExpressAPI/assets/OpenAPI/OpenAPI.yaml b/ExpressAPI/assets/OpenAPI/OpenAPI.yaml
index 820d5421baf510509f030809207ed4bd805da5b8..ce850f1b013a4a1db1a046826bab542ce65690d6 100644
--- a/ExpressAPI/assets/OpenAPI/OpenAPI.yaml
+++ b/ExpressAPI/assets/OpenAPI/OpenAPI.yaml
@@ -299,6 +299,11 @@ paths:
                                     type: string
                                     format: url
                                     description: URL of the template to use as base of the assignment
+                                useSonar:
+                                    type: boolean
+                                    default: false
+                                    description: Whether or not to use the Sonar integration to validate the assignment and exercise solutions
+
                             required:
                                 - name
                                 - members
@@ -703,6 +708,10 @@ components:
                     type: boolean
                     examples:
                         - true
+                useSonar:
+                    type: boolean
+                    examples:
+                        - true
                 staff:
                     type: array
                     items:
@@ -719,6 +728,7 @@ components:
                 - gitlabLastInfo
                 - gitlabLastInfoDate
                 - published
+                - useSonar
                 - staff
                 - exercises
         Exercise:
diff --git a/ExpressAPI/src/helpers/GlobalHelper.ts b/ExpressAPI/src/helpers/GlobalHelper.ts
index 8a425a0d6e27b94ba6078da3b0e9bfa4f1e0ea88..f9e59ee7e25bfcaf125c1e5bc990921535012d58 100644
--- a/ExpressAPI/src/helpers/GlobalHelper.ts
+++ b/ExpressAPI/src/helpers/GlobalHelper.ts
@@ -1,10 +1,11 @@
 import express          from 'express';
 import GitlabRepository from '../shared/types/Gitlab/GitlabRepository';
 import logger           from '../shared/logging/WinstonLogger';
-import GitlabManager    from '../managers/GitlabManager';
-import { AxiosError }   from 'axios';
-import { StatusCodes }  from 'http-status-codes';
+import GitlabManager         from '../managers/GitlabManager';
+import axios, { AxiosError } from 'axios';
+import { StatusCodes }       from 'http-status-codes';
 import DojoStatusCode   from '../shared/types/Dojo/DojoStatusCode';
+import SharedConfig     from '../shared/config/SharedConfig';
 
 
 class GlobalHelper {
@@ -27,6 +28,15 @@ class GlobalHelper {
 
         return req.session.sendResponse(res, StatusCodes.INTERNAL_SERVER_ERROR, {}, `Unknown error: ${ message }`, internalError);
     }
+
+    async isSonarSupported(): Promise<boolean> {
+        try {
+            const sonar = await axios.get(SharedConfig.sonar.url);
+            return SharedConfig.sonar.enabled && sonar.status == 200;
+        } catch ( error ) {
+            return false;
+        }
+    }
 }
 
 
diff --git a/ExpressAPI/src/routes/AssignmentRoutes.ts b/ExpressAPI/src/routes/AssignmentRoutes.ts
index a11d53c836f665652ed09ed12efb94976897e6a1..28bdb2b1dab2dea278d1a1a154dfe7d385e1fa93 100644
--- a/ExpressAPI/src/routes/AssignmentRoutes.ts
+++ b/ExpressAPI/src/routes/AssignmentRoutes.ts
@@ -43,6 +43,9 @@ class AssignmentRoutes implements RoutesManager {
             trim           : true,
             custom         : DojoValidators.templateUrlValidator,
             customSanitizer: DojoValidators.templateUrlSanitizer
+        },
+        useSonar: {
+            notEmpty: true
         }
     };
 
@@ -75,6 +78,7 @@ class AssignmentRoutes implements RoutesManager {
             delete assignment.gitlabCreationInfo;
             delete assignment.gitlabLastInfo;
             delete assignment.gitlabLastInfoDate;
+            delete assignment.useSonar;
             delete assignment.staff;
             delete assignment.exercises;
         }
@@ -84,11 +88,14 @@ class AssignmentRoutes implements RoutesManager {
 
     private async createAssignment(req: express.Request, res: express.Response) {
         const params: {
-            name: string, members: Array<GitlabUser>, template: string
+            name: string, members: Array<GitlabUser>, template: string, useSonar: boolean
         } = req.body;
         params.members = [ await req.session.profile.gitlabProfile.value, ...params.members ];
         params.members = params.members.removeObjectDuplicates(gitlabUser => gitlabUser.id);
 
+        if (params.useSonar && !(await GlobalHelper.isSonarSupported())) {
+            return req.session.sendResponse(res, StatusCodes.UNPROCESSABLE_ENTITY, {}, `Sonar integration is not supported`, DojoStatusCode.ASSIGNMENT_CREATION_SONAR_ERROR);
+        }
 
         let repository: GitlabRepository;
         try {
@@ -147,6 +154,7 @@ class AssignmentRoutes implements RoutesManager {
                                                                               gitlabCreationInfo: repository as unknown as Prisma.JsonObject,
                                                                               gitlabLastInfo    : repository as unknown as Prisma.JsonObject,
                                                                               gitlabLastInfoDate: new Date(),
+                                                                              useSonar          : params.useSonar,
                                                                               staff             : {
                                                                                   connectOrCreate: [ ...params.members.map(gitlabUser => {
                                                                                       return {
diff --git a/ExpressAPI/src/shared b/ExpressAPI/src/shared
index d509efa1b35e100446ace49d8e665ca72e5a7afe..a043687087b1e19b538e10c0047b822dd833b852 160000
--- a/ExpressAPI/src/shared
+++ b/ExpressAPI/src/shared
@@ -1 +1 @@
-Subproject commit d509efa1b35e100446ace49d8e665ca72e5a7afe
+Subproject commit a043687087b1e19b538e10c0047b822dd833b852