diff --git a/ExpressAPI/prisma/migrations/20240321212753_add_correction_to_assignment/migration.sql b/ExpressAPI/prisma/migrations/20240321212753_add_correction_to_assignment/migration.sql
new file mode 100644
index 0000000000000000000000000000000000000000..0ded83188955e133b20f23b0030964055ce3cdb0
--- /dev/null
+++ b/ExpressAPI/prisma/migrations/20240321212753_add_correction_to_assignment/migration.sql
@@ -0,0 +1,8 @@
+/*
+  Warnings:
+
+  - You are about to alter the column `state` on the `SubmissionTag` table. The data in that column could be lost. The data in that column will be cast from `VarChar(191)` to `Enum(EnumId(3))`.
+
+*/
+-- AlterTable
+ALTER TABLE `SubmissionTag` MODIFY `state` ENUM('PENDINGAPPROVAL', 'DECLINED', 'APPROVED') NOT NULL;
diff --git a/ExpressAPI/prisma/migrations/20240321213742_add_correction_to_assignment/migration.sql b/ExpressAPI/prisma/migrations/20240321213742_add_correction_to_assignment/migration.sql
new file mode 100644
index 0000000000000000000000000000000000000000..af5102c8ba20cc6051c01d3ca06b2e7f8d7e14d9
--- /dev/null
+++ b/ExpressAPI/prisma/migrations/20240321213742_add_correction_to_assignment/migration.sql
@@ -0,0 +1 @@
+-- This is an empty migration.
\ No newline at end of file
diff --git a/ExpressAPI/prisma/migrations/20240321214043_add_correction_to_assignment/migration.sql b/ExpressAPI/prisma/migrations/20240321214043_add_correction_to_assignment/migration.sql
new file mode 100644
index 0000000000000000000000000000000000000000..ece1aead8605a0456ed1ad59f96076e7c4231fd4
--- /dev/null
+++ b/ExpressAPI/prisma/migrations/20240321214043_add_correction_to_assignment/migration.sql
@@ -0,0 +1,8 @@
+/*
+  Warnings:
+
+  - You are about to alter the column `state` on the `SubmissionTag` table. The data in that column could be lost. The data in that column will be cast from `Enum(EnumId(3))` to `VarChar(191)`.
+
+*/
+-- AlterTable
+ALTER TABLE `SubmissionTag` MODIFY `state` VARCHAR(191) NOT NULL;
diff --git a/ExpressAPI/prisma/schema.prisma b/ExpressAPI/prisma/schema.prisma
index 16f531a7667104d90073d6f270be2acbd96bbe81..9aac09a10024dc8edc3f36cdca7d7dceccb0bf87 100644
--- a/ExpressAPI/prisma/schema.prisma
+++ b/ExpressAPI/prisma/schema.prisma
@@ -20,12 +20,6 @@ enum TagType {
 	USERDEFINED
 }
 
-enum SubmissionStatus{
-    PENDINGAPPROVAL
-	DECLINED
-	APPROVED
-}
-
 model User {
     id             Int       @id /// The user's id is the same as their gitlab id
     name           String?
diff --git a/ExpressAPI/src/managers/TagManager.ts b/ExpressAPI/src/managers/TagManager.ts
index 19ac12c6d6b2d1fddf2adedcda67b51801dab4ef..936b3bcb04d3aea3c205215d6d283337ae62f0b9 100644
--- a/ExpressAPI/src/managers/TagManager.ts
+++ b/ExpressAPI/src/managers/TagManager.ts
@@ -12,5 +12,5 @@ class TagManager {
     }
 }
 
-
 export default new TagManager();
+
diff --git a/ExpressAPI/src/managers/TagSubmitManager.ts b/ExpressAPI/src/managers/TagSubmitManager.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d942eebbc71080c225fa9c98d7da22b47d42febd
--- /dev/null
+++ b/ExpressAPI/src/managers/TagSubmitManager.ts
@@ -0,0 +1,16 @@
+import { Prisma, SubmissionTag }           from '@prisma/client';
+import db                        from '../helpers/DatabaseHelper';
+
+class TagSubmitManager {
+	async get(name: string | undefined = undefined): Promise<SubmissionTag | undefined> {
+        return await db.submissionTag.findUnique({
+                                                where  : {
+                                                    name: name
+                                                }
+                                            }) as unknown as SubmissionTag ?? undefined;
+    }
+}
+
+
+export default new TagSubmitManager();
+
diff --git a/ExpressAPI/src/middlewares/ParamsCallbackManager.ts b/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
index 753c1548c6f003dda4f5cf5c484b6483fe8795ce..2ff49332b5e3686dd76f14d6b1af8b328da8526f 100644
--- a/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
+++ b/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
@@ -3,7 +3,8 @@ import express           from 'express';
 import { StatusCodes }   from 'http-status-codes';
 import ExerciseManager   from '../managers/ExerciseManager';
 import AssignmentManager from '../managers/AssignmentManager';
-import TagManager       from '../managers/TagManager';
+import TagManager        from '../managers/TagManager';
+import TagSubmitManager  from '../managers/TagSubmitManager';
 
 
 type GetFunction = (id: string | number, ...args: Array<unknown>) => Promise<unknown>
@@ -51,7 +52,7 @@ class ParamsCallbackManager {
 
         } ], 'tags');
 
-        this.listenParam('tagProposalName', backend, (TagManager.get as GetFunction).bind(TagManager), [ {
+        this.listenParam('tagProposalName', backend, (TagSubmitManager.get as GetFunction).bind(TagSubmitManager), [ {
  
         } ], 'tags');
     }
diff --git a/ExpressAPI/src/routes/TagsRoutes.ts b/ExpressAPI/src/routes/TagsRoutes.ts
index 5d0e97de0e935715a7b35d3baba77aa45dcf5b71..bcf1a77cc3ee868a4161fe646f80fafa0b24e18b 100644
--- a/ExpressAPI/src/routes/TagsRoutes.ts
+++ b/ExpressAPI/src/routes/TagsRoutes.ts
@@ -1,14 +1,13 @@
-import { Express }                    from 'express-serve-static-core';
 import express                        from 'express';
+import { TagType }                    from '@prisma/client';
 import * as ExpressValidator          from 'express-validator';
 import { StatusCodes }                from 'http-status-codes';
 import RoutesManager                  from '../express/RoutesManager';
-import ParamsValidatorMiddleware      from '../middlewares/ParamsValidatorMiddleware';
-import SecurityMiddleware             from '../middlewares/SecurityMiddleware';
-import SecurityCheckType              from '../types/SecurityCheckType';
+import { Express }                    from 'express-serve-static-core';
 import db                             from '../helpers/DatabaseHelper';
-import { Tags }                       from '../types/DatabaseTypes';
-import { TagType }                    from '@prisma/client';
+import SecurityCheckType              from '../types/SecurityCheckType';
+import SecurityMiddleware             from '../middlewares/SecurityMiddleware';
+import ParamsValidatorMiddleware      from '../middlewares/ParamsValidatorMiddleware';
 
 
 enum SubmitStatus{
@@ -36,12 +35,19 @@ class TagRoutes implements RoutesManager {
         },
     };
 
+    private readonly tagsValidatorName: ExpressValidator.Schema = {
+        tagProposalName: {
+            trim: true,
+            notEmpty: true
+        },
+    };
+
     registerOnBackend(backend: Express) { 
         backend.post('/tags', SecurityMiddleware.check(true, SecurityCheckType.TEACHING_STAFF), ParamsValidatorMiddleware.validate(this.tagsValidatorNameType), this.addTag.bind(this));
         backend.delete('/tags/:tageName', SecurityMiddleware.check(true, SecurityCheckType.ADMIN), this.deleteTag.bind(this));
-        backend.get('/tags/proposals/state', SecurityMiddleware.check(true, SecurityCheckType.ADMIN), this.getSubmittedTag.bind(this)); //Check ?
+        backend.get('/tags/proposals/:state', SecurityMiddleware.check(true, SecurityCheckType.ADMIN), this.getSubmittedTag.bind(this));
         backend.post('/tags/proposals', SecurityMiddleware.check(true, SecurityCheckType.TEACHING_STAFF), ParamsValidatorMiddleware.validate(this.tagsValidatorNameType), this.SubmitTag.bind(this));
-        backend.patch('/tags/proposals/:tagProposalName', SecurityMiddleware.check(true, SecurityCheckType.ADMIN), ParamsValidatorMiddleware.validate(this.tagsValidatorStatus), this.validateTag.bind(this));
+        backend.patch('/tags/proposals/:tagProposalName', SecurityMiddleware.check(true, SecurityCheckType.ADMIN), ParamsValidatorMiddleware.validate(this.tagsValidatorName), this.validateTag.bind(this));
     }
 
     private async addTag(req: express.Request, res: express.Response) {
@@ -74,17 +80,14 @@ class TagRoutes implements RoutesManager {
         return req.session.sendResponse(res, StatusCodes.OK, "Tag supprimé avec succès");
     }
     private async getSubmittedTag(req: express.Request, res: express.Response) {
-        const state = req.params.name
+        const state = req.params.state
 
         db.submissionTag.findMany({
             where : { 
                 state: state 
             }
         })
-        return req.session.sendResponse(res, StatusCodes.OK, {
-            name          : req.body.name,
-            tag           : req.body.type
-        });
+        return req.session.sendResponse(res, StatusCodes.OK);
     }
     private async SubmitTag(req: express.Request, res: express.Response) {
         const tagName = req.body.name
@@ -107,10 +110,13 @@ class TagRoutes implements RoutesManager {
         });        
     }
     private async validateTag(req: express.Request, res: express.Response) {
-        if(req.body.state == SubmitStatus.PendingApproval){
+        const state = req.body.state
+
+        if(state == SubmitStatus.PendingApproval){
             return req.session.sendResponse(res, StatusCodes.OK, "Approbation toujours en attente"); 
-        } else if (req.body.state == SubmitStatus.Declined){
-            return req.session.sendResponse(res, StatusCodes.OK, req.body.details); 
+        } else if (state == SubmitStatus.Declined){
+            const detail = req.body.details
+            return req.session.sendResponse(res, StatusCodes.OK, detail); 
         } else{
             const tagName = req.params.tagProposalName
             const tagType = req.body.type