diff --git a/ExpressAPI/src/managers/GitlabManager.ts b/ExpressAPI/src/managers/GitlabManager.ts
index ceadae5bfe1ce54625095bf9f1c25871d564c2f0..c03c34b2d31cb260f4f2a0c7cf3fe0602cc9312c 100644
--- a/ExpressAPI/src/managers/GitlabManager.ts
+++ b/ExpressAPI/src/managers/GitlabManager.ts
@@ -16,6 +16,7 @@ import GitlabProfile            from '../shared/types/Gitlab/GitlabProfile';
 import GitlabRelease            from '../shared/types/Gitlab/GitlabRelease';
 import { CommitSchema, Gitlab } from '@gitbeaker/rest';
 import logger                   from '../shared/logging/WinstonLogger';
+import DojoStatusCode           from '../shared/types/Dojo/DojoStatusCode';
 
 
 class GitlabManager {
@@ -169,16 +170,18 @@ class GitlabManager {
         return response.data;
     }
 
-    async checkTemplateAccess(projectIdOrNamespace: string, req: express.Request): Promise<StatusCodes> {
+    async checkTemplateAccess(projectIdOrNamespace: string, req: express.Request, res: express.Response) {
         // Get the Gitlab project and check if it have public or internal visibility
         try {
             const project: GitlabRepository = await this.getRepository(projectIdOrNamespace);
 
             if ( [ GitlabVisibility.PUBLIC.valueOf(), GitlabVisibility.INTERNAL.valueOf() ].includes(project.visibility) ) {
-                return StatusCodes.OK;
+                req.session.sendResponse(res, StatusCodes.OK);
+                return;
             }
         } catch ( e ) {
-            return StatusCodes.NOT_FOUND;
+            req.session.sendResponse(res, StatusCodes.NOT_FOUND, undefined, 'Template not found', DojoStatusCode.GITLAB_TEMPLATE_NOT_FOUND);
+            return;
         }
 
         // Check if the user and dojo are members (with at least reporter access) of the project
@@ -197,7 +200,11 @@ class GitlabManager {
             }
         });
 
-        return isUsersAtLeastReporter.user && isUsersAtLeastReporter.dojo ? StatusCodes.OK : StatusCodes.UNAUTHORIZED;
+        if ( isUsersAtLeastReporter.user && isUsersAtLeastReporter.dojo ) {
+            req.session.sendResponse(res, StatusCodes.OK);
+        } else {
+            req.session.sendResponse(res, StatusCodes.UNAUTHORIZED, undefined, 'Template access unauthorized', DojoStatusCode.GITLAB_TEMPLATE_ACCESS_UNAUTHORIZED);
+        }
     }
 
     async protectBranch(repoId: number, branchName: string, allowForcePush: boolean, allowedToMerge: GitlabAccessLevel, allowedToPush: GitlabAccessLevel, allowedToUnprotect: GitlabAccessLevel): Promise<GitlabMember> {
diff --git a/ExpressAPI/src/routes/GitlabRoutes.ts b/ExpressAPI/src/routes/GitlabRoutes.ts
index 2f4affb7a12eb72ab9c5bd927994f5aac7c60c16..2d8ced089e6321ee86e7493e6cc97ad04cb93e63 100644
--- a/ExpressAPI/src/routes/GitlabRoutes.ts
+++ b/ExpressAPI/src/routes/GitlabRoutes.ts
@@ -14,7 +14,7 @@ class GitlabRoutes implements RoutesManager {
     private async checkTemplateAccess(req: express.Request, res: express.Response) {
         const gitlabProjectIdOrNamespace: string = req.params.gitlabProjectIdOrNamespace;
 
-        return res.status(await GitlabManager.checkTemplateAccess(gitlabProjectIdOrNamespace, req)).send();
+        await GitlabManager.checkTemplateAccess(gitlabProjectIdOrNamespace, req, res);
     }
 }
 
diff --git a/ExpressAPI/src/shared b/ExpressAPI/src/shared
index 1346565c5759be045a1347f82eea230d393e38cb..6e8f45841ca086956d34370cb3639262e69aa3c3 160000
--- a/ExpressAPI/src/shared
+++ b/ExpressAPI/src/shared
@@ -1 +1 @@
-Subproject commit 1346565c5759be045a1347f82eea230d393e38cb
+Subproject commit 6e8f45841ca086956d34370cb3639262e69aa3c3