diff --git a/ExerciceChecker/src/app.ts b/ExerciceChecker/src/app.ts
index 0a68467ce0f19cb4f370c13101aeea25950b6857..d96029a2b3baa9ef04936ea6fc4ac1332d3002ea 100644
--- a/ExerciceChecker/src/app.ts
+++ b/ExerciceChecker/src/app.ts
@@ -4,6 +4,7 @@ const path = require('node:path');
 require('dotenv').config({ path: path.join(__dirname, '../.env') });
 require('./shared/helpers/TypeScriptExtensions'); // ATTENTION : This line MUST be the second of this file
 
+import RecursiveFilesStats  from './shared/helpers/recursiveFilesStats/RecursiveFilesStats';
 import Toolbox              from './shared/helpers/Toolbox';
 import ExerciceHelper       from './shared/helpers/ExerciceHelper';
 import ExerciceCheckerError from './types/ExerciceCheckerError';
@@ -14,6 +15,7 @@ import chalk                from 'chalk';
 import HttpManager          from './managers/HttpManager';
 import DojoBackendManager   from './managers/DojoBackendManager';
 import Config               from './config/Config';
+import ArchiveHelper        from './shared/helpers/ArchiveHelper';
 
 
 (async () => {
@@ -55,7 +57,7 @@ import Config               from './config/Config';
     const changeDirectoryCommand = `cd "${ Config.folders.project }"`;
     const dockerComposeCommand = `docker compose --project-name ${ Config.dockerCompose.projectName } --progress plain --file docker-compose.yml --file docker-compose-override.yml`;
 
-    const containerExitStatus = await new Promise<[ number, string ]>((resolve, reject) => {
+    const containerExitStatus = await new Promise<[ number, string ]>((resolve) => {
         let logs = '####################################################### Docker Compose & Main Container Logs #######################################################\n';
 
         const dockerCompose = spawn(`${ dockerComposeCommand } run --build ${ exerciceEnonce.enonceFile.result.container }`, {
@@ -125,6 +127,25 @@ import Config               from './config/Config';
     }
 
     // Step 7: Upload and show the results
+    try {
+        console.log(chalk.green(`- Uploading results to the dojo server`));
+        const commit: any = {};
+        Toolbox.getKeysWithPrefix(process.env, 'CI_COMMIT_').forEach(key => {
+            commit[Toolbox.snakeToCamel(key.replace('CI_COMMIT_', ''))] = process.env[key];
+        });
+
+        const files = await RecursiveFilesStats.explore(Config.folders.resultsVolume, {
+            replacePathByRelativeOne: true,
+            liteStats               : true
+        });
+
+        await DojoBackendManager.sendResults(containerExitStatus[0], commit, validationResults.results!, files, await ArchiveHelper.getBase64(Config.folders.resultsVolume));
+    } catch ( error ) {
+        console.error(chalk.red(`X Error while uploading the results`));
+        console.error(JSON.stringify(error));
+        process.exit(ExerciceCheckerError.UPLOAD);
+    }
+
 
     // Step 8: Exit with container exit code
     console.log(chalk.green(`- Good bye (container's exit code : ${ containerExitStatus[0] })`));