diff --git a/ExpressAPI/prisma/migrations/20250225160246_exercises_and_assignments_add_creation_date/migration.sql b/ExpressAPI/prisma/migrations/20250225160246_exercises_and_assignments_add_creation_date/migration.sql
new file mode 100644
index 0000000000000000000000000000000000000000..4e6ff03358a41424fccaf2e8cc7afd19addce37f
--- /dev/null
+++ b/ExpressAPI/prisma/migrations/20250225160246_exercises_and_assignments_add_creation_date/migration.sql
@@ -0,0 +1,16 @@
+/*
+  Warnings:
+
+  - Added the required column `gitlabCreationDate` to the `Assignment` table without a default value. This is not possible if the table is not empty.
+  - Added the required column `gitlabCreationDate` to the `Exercise` table without a default value. This is not possible if the table is not empty.
+
+*/
+-- AlterTable
+ALTER TABLE `Assignment` ADD COLUMN `gitlabCreationDate` DATETIME(3) NULL AFTER `gitlabCreationInfo`;
+UPDATE `Assignment` SET `gitlabCreationDate` = `gitlabLastInfoDate`;
+ALTER TABLE `Assignment` MODIFY COLUMN `gitlabCreationDate` DATETIME(3) NOT NULL AFTER `gitlabCreationInfo`;
+
+-- AlterTable
+ALTER TABLE `Exercise` ADD COLUMN `gitlabCreationDate` DATETIME(3) NULL DEFAULT NULL AFTER `gitlabCreationInfo`;
+UPDATE `Exercise` SET `gitlabCreationDate` = `gitlabLastInfoDate`;
+ALTER TABLE `Exercise` MODIFY COLUMN `gitlabCreationDate` DATETIME(3) NOT NULL AFTER `gitlabCreationInfo`;
diff --git a/ExpressAPI/prisma/schema.prisma b/ExpressAPI/prisma/schema.prisma
index b9fc889ad8b8374cc56d80d43e4e775a8f776e77..ed1cd3624c308b3c702d8b7202e8329b087622de 100644
--- a/ExpressAPI/prisma/schema.prisma
+++ b/ExpressAPI/prisma/schema.prisma
@@ -38,6 +38,7 @@ model Assignment {
     gitlabId           Int
     gitlabLink         String
     gitlabCreationInfo Json     @db.Json
+    gitlabCreationDate DateTime
     gitlabLastInfo     Json     @db.Json
     gitlabLastInfoDate DateTime
     published          Boolean  @default(false)
@@ -55,6 +56,7 @@ model Exercise {
     gitlabId           Int
     gitlabLink         String
     gitlabCreationInfo Json     @db.Json
+    gitlabCreationDate DateTime
     gitlabLastInfo     Json     @db.Json
     gitlabLastInfoDate DateTime
     deleted            Boolean  @default(false)
diff --git a/ExpressAPI/prisma/seed.ts b/ExpressAPI/prisma/seed.ts
index 6ac1a5d060fb2009293ea630763ec747a2790beb..9154ef54dc9e7bf7491d330f724d09129e261b00 100644
--- a/ExpressAPI/prisma/seed.ts
+++ b/ExpressAPI/prisma/seed.ts
@@ -1,13 +1,12 @@
 // ATTENTION : This line MUST be the first of this file
 import '../src/init.js';
 
-import * as process from 'process';
-import SharedConfig from '../src/shared/config/SharedConfig.js';
-import { UserRole } from '@prisma/client';
-import logger       from '../src/shared/logging/WinstonLogger.js';
-import db           from '../src/helpers/DatabaseHelper.js';
-import TagManager  from '../src/managers/TagManager';
-import { TagType }  from '@prisma/client';
+import * as process          from 'process';
+import SharedConfig          from '../src/shared/config/SharedConfig.js';
+import { TagType, UserRole } from '@prisma/client';
+import logger                from '../src/shared/logging/WinstonLogger.js';
+import db                    from '../src/helpers/DatabaseHelper.js';
+
 
 async function main() {
     await users();
@@ -218,6 +217,7 @@ async function assignments() {
                                                'issue_branch_template'                           : null,
                                                'autoclose_referenced_issues'                     : true
                                            },
+                                           gitlabCreationDate: new Date('2021-10-14T14:20:15.239Z'),
                                            gitlabLastInfo    : {
                                                'id'                                              : 13862,
                                                'description'                                     : 'Dojo assignment repository.\n\nName of the assignment: c_hello_world',
@@ -473,6 +473,7 @@ async function assignments() {
                                                'issue_branch_template'                           : null,
                                                'autoclose_referenced_issues'                     : true
                                            },
+                                           gitlabCreationDate: new Date('2023-11-07T20:35:54.692Z'),
                                            gitlabLastInfo    : {
                                                'id'                                              : 13893,
                                                'description'                                     : 'Dojo assignment repository.\n\nName of the assignment: Technique de compilation - TP',
@@ -766,6 +767,7 @@ async function exercises() {
                                              'issue_branch_template'                           : null,
                                              'autoclose_referenced_issues'                     : true
                                          },
+                                         gitlabCreationDate: new Date('2023-12-14T14:54:35.692Z'),
                                          gitlabLastInfo    : {
                                              'id'                                              : 14232,
                                              'description'                                     : 'Dojo exercise repository based on the the assignment: Technique de compilation - TP',
@@ -1586,379 +1588,379 @@ async function results() {
 
 async function tag() {
     await db.tag.upsert({
-        where : { name: 'C' },
-        update: {},
-        create: {
-            name          : 'C',
-            type          : TagType.LANGUAGE
-        }
-    });
+                            where : { name: 'C' },
+                            update: {},
+                            create: {
+                                name: 'C',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Java' },
-        update: {},
-        create: {
-            name          : 'Java',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Java' },
+                            update: {},
+                            create: {
+                                name: 'Java',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Scala' },
-        update: {},
-        create: {
-            name            : 'Scala',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Scala' },
+                            update: {},
+                            create: {
+                                name: 'Scala',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Kotlin' },
-        update: {},
-        create: {
-            name            : 'Kotlin',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Kotlin' },
+                            update: {},
+                            create: {
+                                name: 'Kotlin',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Rust' },
-        update: {},
-        create: {
-            name            : 'Rust',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Rust' },
+                            update: {},
+                            create: {
+                                name: 'Rust',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'JavaScript' },
-        update: {},
-        create: {
-            name            : 'JavaScript',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'JavaScript' },
+                            update: {},
+                            create: {
+                                name: 'JavaScript',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'TypeScript' },
-        update: {},
-        create: {
-            name            : 'TypeScript',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'TypeScript' },
+                            update: {},
+                            create: {
+                                name: 'TypeScript',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Python' },
-        update: {},
-        create: {
-            name            : 'Python',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Python' },
+                            update: {},
+                            create: {
+                                name: 'Python',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'HTML' },
-        update: {},
-        create: {
-            name            : 'HTML',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'HTML' },
+                            update: {},
+                            create: {
+                                name: 'HTML',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'CSS' },
-        update: {},
-        create: {
-            name            : 'CSS',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'CSS' },
+                            update: {},
+                            create: {
+                                name: 'CSS',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'C++' },
-        update: {},
-        create: {
-            name            : 'C++',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'C++' },
+                            update: {},
+                            create: {
+                                name: 'C++',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Go' },
-        update: {},
-        create: {
-            name            : 'Go',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Go' },
+                            update: {},
+                            create: {
+                                name: 'Go',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'PHP' },
-        update: {},
-        create: {
-            name            : 'PHP',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'PHP' },
+                            update: {},
+                            create: {
+                                name: 'PHP',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'C#' },
-        update: {},
-        create: {
-            name            : 'C#',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'C#' },
+                            update: {},
+                            create: {
+                                name: 'C#',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Swift' },
-        update: {},
-        create: {
-            name            : 'Swift',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Swift' },
+                            update: {},
+                            create: {
+                                name: 'Swift',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Matlab' },
-        update: {},
-        create: {
-            name            : 'Matlab',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Matlab' },
+                            update: {},
+                            create: {
+                                name: 'Matlab',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'SQL' },
-        update: {},
-        create: {
-            name            : 'SQL',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'SQL' },
+                            update: {},
+                            create: {
+                                name: 'SQL',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Assembly' },
-        update: {},
-        create: {
-            name            : 'Assembly',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Assembly' },
+                            update: {},
+                            create: {
+                                name: 'Assembly',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Ruby' },
-        update: {},
-        create: {
-            name            : 'Ruby',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Ruby' },
+                            update: {},
+                            create: {
+                                name: 'Ruby',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Fortran' },
-        update: {},
-        create: {
-            name            : 'Fortran',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Fortran' },
+                            update: {},
+                            create: {
+                                name: 'Fortran',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Pascal' },
-        update: {},
-        create: {
-            name            : 'Pascal',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Pascal' },
+                            update: {},
+                            create: {
+                                name: 'Pascal',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Visual Basic' },
-        update: {},
-        create: {
-            name            : 'Visual Basic',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Visual Basic' },
+                            update: {},
+                            create: {
+                                name: 'Visual Basic',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'R' },
-        update: {},
-        create: {
-            name            : 'R',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'R' },
+                            update: {},
+                            create: {
+                                name: 'R',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Objective-C' },
-        update: {},
-        create: {
-            name            : 'Objective-C',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Objective-C' },
+                            update: {},
+                            create: {
+                                name: 'Objective-C',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Lua' },
-        update: {},
-        create: {
-            name            : 'Lua',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Lua' },
+                            update: {},
+                            create: {
+                                name: 'Lua',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Ada' },
-        update: {},
-        create: {
-            name            : 'Ada',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Ada' },
+                            update: {},
+                            create: {
+                                name: 'Ada',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Haskell' },
-        update: {},
-        create: {
-            name            : 'Haskell',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Haskell' },
+                            update: {},
+                            create: {
+                                name: 'Haskell',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Shell/PowerShell' },
-        update: {},
-        create: {
-            name            : 'Shell/PowerShell',
-            type          : TagType.LANGUAGE,
-        }
-    });
+                            where : { name: 'Shell/PowerShell' },
+                            update: {},
+                            create: {
+                                name: 'Shell/PowerShell',
+                                type: TagType.LANGUAGE
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Express' },
-        update: {},
-        create: {
-            name            : 'Express',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Express' },
+                            update: {},
+                            create: {
+                                name: 'Express',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Django' },
-        update: {},
-        create: {
-            name            : 'Django',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Django' },
+                            update: {},
+                            create: {
+                                name: 'Django',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Ruby on Rails' },
-        update: {},
-        create: {
-            name            : 'Ruby on Rails',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Ruby on Rails' },
+                            update: {},
+                            create: {
+                                name: 'Ruby on Rails',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Angular' },
-        update: {},
-        create: {
-            name            : 'Angular',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Angular' },
+                            update: {},
+                            create: {
+                                name: 'Angular',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'React' },
-        update: {},
-        create: {
-            name            : 'React',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'React' },
+                            update: {},
+                            create: {
+                                name: 'React',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Flutter' },
-        update: {},
-        create: {
-            name            : 'Flutter',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Flutter' },
+                            update: {},
+                            create: {
+                                name: 'Flutter',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Ionic' },
-        update: {},
-        create: {
-            name            : 'Ionic',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Ionic' },
+                            update: {},
+                            create: {
+                                name: 'Ionic',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Flask' },
-        update: {},
-        create: {
-            name            : 'Flask',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Flask' },
+                            update: {},
+                            create: {
+                                name: 'Flask',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'React Native' },
-        update: {},
-        create: {
-            name            : 'React Native',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'React Native' },
+                            update: {},
+                            create: {
+                                name: 'React Native',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Xamarin' },
-        update: {},
-        create: {
-            name            : 'Xamarin',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Xamarin' },
+                            update: {},
+                            create: {
+                                name: 'Xamarin',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Laravel' },
-        update: {},
-        create: {
-            name            : 'Laravel',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Laravel' },
+                            update: {},
+                            create: {
+                                name: 'Laravel',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Spring' },
-        update: {},
-        create: {
-            name            : 'Spring',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Spring' },
+                            update: {},
+                            create: {
+                                name: 'Spring',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Play' },
-        update: {},
-        create: {
-            name            : 'Play',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Play' },
+                            update: {},
+                            create: {
+                                name: 'Play',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Symfony' },
-        update: {},
-        create: {
-            name            : 'Symfony',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Symfony' },
+                            update: {},
+                            create: {
+                                name: 'Symfony',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'ASP.NET' },
-        update: {},
-        create: {
-            name            : 'ASP.NET',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'ASP.NET' },
+                            update: {},
+                            create: {
+                                name: 'ASP.NET',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Meteor' },
-        update: {},
-        create: {
-            name            : 'Meteor',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Meteor' },
+                            update: {},
+                            create: {
+                                name: 'Meteor',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Vue.js' },
-        update: {},
-        create: {
-            name            : 'Vue.js',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Vue.js' },
+                            update: {},
+                            create: {
+                                name: 'Vue.js',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Svelte' },
-        update: {},
-        create: {
-            name            : 'Svelte',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Svelte' },
+                            update: {},
+                            create: {
+                                name: 'Svelte',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
     await db.tag.upsert({
-        where : { name: 'Express.js' },
-        update: {},
-        create: {
-            name            : 'Express.js',
-            type          : TagType.FRAMEWORK
-        }
-    });
+                            where : { name: 'Express.js' },
+                            update: {},
+                            create: {
+                                name: 'Express.js',
+                                type: TagType.FRAMEWORK
+                            }
+                        });
 }
diff --git a/ExpressAPI/src/managers/ExerciseManager.ts b/ExpressAPI/src/managers/ExerciseManager.ts
index bc64be63d2f0e3ec5970ea1400113d421aed8278..e18207f9be3d4becb8ff4f0ce1bc60f90d627ccb 100644
--- a/ExpressAPI/src/managers/ExerciseManager.ts
+++ b/ExpressAPI/src/managers/ExerciseManager.ts
@@ -15,11 +15,10 @@ class ExerciseManager {
                                             }) as unknown as Exercise ?? undefined;
     }
 
-    getFromAssignment(assignmentName: string, include: Prisma.ExerciseInclude | undefined = undefined): Promise<Array<Exercise>> {
+    // deleteFilter is a boolean that is true to get only deleted exercises, false to get only non-deleted exercises, and undefined to get all exercises
+    getFromAssignment(assignmentName: string, deleteFilter: boolean | undefined = undefined, include: Prisma.ExerciseInclude | undefined = undefined): Promise<Array<Exercise>> {
         return db.exercise.findMany({
-                                        where  : {
-                                            assignmentName: assignmentName
-                                        },
+                                        where  : { assignmentName: assignmentName, ...(deleteFilter !== undefined ? { deleted: deleteFilter } : {}) },
                                         include: include
                                     }) as Promise<Array<Exercise>>;
     }
diff --git a/ExpressAPI/src/managers/GitlabManager.ts b/ExpressAPI/src/managers/GitlabManager.ts
index e153d8958e0d0f309809032051a4a4e1bc32db7f..d550f701193e1a5d4445ec6b4c9516fa30185f76 100644
--- a/ExpressAPI/src/managers/GitlabManager.ts
+++ b/ExpressAPI/src/managers/GitlabManager.ts
@@ -133,6 +133,17 @@ class GitlabManager extends SharedGitlabManager {
         }
     }
 
+    async renameRepository(repoId: number, newName: string): Promise<ProjectSchema> {
+        try {
+            return await this.api.Projects.edit(repoId, {
+                name: newName
+            });
+        } catch ( e ) {
+            logger.error(JSON.stringify(e));
+            return Promise.reject(e);
+        }
+    }
+
     async moveRepository(repoId: number, newRepoId: number): Promise<ProjectSchema> {
         try {
             return await this.api.Projects.transfer(repoId, newRepoId);
diff --git a/ExpressAPI/src/routes/AssignmentRoutes.ts b/ExpressAPI/src/routes/AssignmentRoutes.ts
index 1259cb0fabd2cc013e15eeee69eee955d7d0eaf0..8cb5f4134f152002acf5f1c9c06b2986dbaebbac 100644
--- a/ExpressAPI/src/routes/AssignmentRoutes.ts
+++ b/ExpressAPI/src/routes/AssignmentRoutes.ts
@@ -107,7 +107,8 @@ class AssignmentRoutes implements RoutesManager {
                                                                    some: {
                                                                        id: req.session.profile.id
                                                                    }
-                                                               }
+                                                               },
+                                                               deleted       : false
                                                            },
                                                            include: {
                                                                assignment: false,
@@ -174,6 +175,7 @@ class AssignmentRoutes implements RoutesManager {
                                                                                                        gitlabId          : repository.id,
                                                                                                        gitlabLink        : repository.web_url,
                                                                                                        gitlabCreationInfo: repository as unknown as Prisma.JsonObject,
+                                                                                                       gitlabCreationDate: new Date(),
                                                                                                        gitlabLastInfo    : repository as unknown as Prisma.JsonObject,
                                                                                                        gitlabLastInfoDate: new Date(),
                                                                                                        staff             : {
diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts
index f3939c7c94905d684940337cb5024eec71dd456a..ae3d4b9efc6e775f5a5887c16de6165d33bd5d28 100644
--- a/ExpressAPI/src/routes/ExerciseRoutes.ts
+++ b/ExpressAPI/src/routes/ExerciseRoutes.ts
@@ -24,6 +24,7 @@ import GlobalHelper                from '../helpers/GlobalHelper.js';
 import { IFileDirStat }            from '../shared/helpers/recursiveFilesStats/RecursiveFilesStats.js';
 import ExerciseManager             from '../managers/ExerciseManager.js';
 import * as Gitlab                 from '@gitbeaker/rest';
+import { ProjectSchema }           from '@gitbeaker/rest';
 import GitlabTreeFileType          from '../shared/types/Gitlab/GitlabTreeFileType.js';
 import { GitbeakerRequestError }   from '@gitbeaker/requester-utils';
 
@@ -110,11 +111,19 @@ class ExerciseRoutes implements RoutesManager {
             }
         }
 
-        await GitlabManager.moveRepository(repoId, Config.gitlab.group.deletedExercises);
+        // We rename (with unique str added) the repository before moving it because of potential name conflicts
+        const newName: string = `${ req.boundParams.exercise!.name }_${ uuidv4() }`;
+        await GitlabManager.renameRepository(repoId, newName);
+        const repository: ProjectSchema = await GitlabManager.moveRepository(repoId, Config.gitlab.group.deletedExercises);
 
         await db.exercise.update({
                                      where: { id: req.boundParams.exercise!.id },
-                                     data : { deleted: true }
+                                     data : {
+                                         name              : newName,
+                                         gitlabLastInfo    : repository as unknown as Prisma.JsonObject,
+                                         gitlabLastInfoDate: new Date(),
+                                         deleted           : true
+                                     }
                                  });
 
         return req.session.sendResponse(res, StatusCodes.OK);
@@ -133,7 +142,7 @@ class ExerciseRoutes implements RoutesManager {
 
 
     private async checkExerciseLimit(assignment: Assignment, members: Array<Gitlab.UserSchema>): Promise<Array<Gitlab.UserSchema>> {
-        const exercises: Array<Exercise> | undefined = await ExerciseManager.getFromAssignment(assignment.name, { members: true });
+        const exercises: Array<Exercise> | undefined = await ExerciseManager.getFromAssignment(assignment.name, false, { members: true });
         const reachedLimitUsers: Array<Gitlab.UserSchema> = [];
         if ( exercises.length > 0 ) {
             for ( const member of members ) {
@@ -225,6 +234,7 @@ class ExerciseRoutes implements RoutesManager {
                                                                                                  gitlabId          : repository.id,
                                                                                                  gitlabLink        : repository.web_url,
                                                                                                  gitlabCreationInfo: repository as unknown as Prisma.JsonObject,
+                                                                                                 gitlabCreationDate: new Date(),
                                                                                                  gitlabLastInfo    : repository as unknown as Prisma.JsonObject,
                                                                                                  gitlabLastInfoDate: new Date(),
                                                                                                  members           : {