diff --git a/ExpressAPI/src/managers/AssignmentManager.ts b/ExpressAPI/src/managers/AssignmentManager.ts
index 0f2bc54dcf9c68fb267628d2dc32a1e201bb6284..ad51e6b80209bfd4b9b623720d7968672e2a9ad0 100644
--- a/ExpressAPI/src/managers/AssignmentManager.ts
+++ b/ExpressAPI/src/managers/AssignmentManager.ts
@@ -17,21 +17,35 @@ class AssignmentManager {
 
     async getByName(name: string, include: Prisma.AssignmentInclude | undefined = undefined): Promise<Assignment | undefined> {
         return await db.assignment.findUnique({
-                                                  where     : {
+                                                  where  : {
                                                       name: name
-                                                  }, include: include
+                                                  },
+                                                  include: include
                                               }) as unknown as Assignment ?? undefined;
     }
 
-    getByGitlabLink(gitlabLink: string, include: Prisma.AssignmentInclude | undefined = undefined): Promise<Assignment | undefined> {
-        const name = gitlabLink.replace('.git', '').split('/').pop()!;
+    async getByGitlabLink(gitlabLink: string, include: Prisma.AssignmentInclude | undefined = undefined): Promise<Assignment | undefined> {
+        const nameInUrl = gitlabLink.replace('.git', '').split('/').pop()!;
 
-        return this.getByName(name, include);
+        const result = await db.assignment.findMany({
+                                                        where  : {
+                                                            gitlabLink: {
+                                                                endsWith: `/${ nameInUrl }`
+                                                            }
+                                                        },
+                                                        include: include
+                                                    }) as Array<Assignment>;
+
+        return result.length > 0 ? result[0] : undefined;
     }
 
     get(nameOrUrl: string, include: Prisma.AssignmentInclude | undefined = undefined): Promise<Assignment | undefined> {
-        // We can use the same function for both name and url because the name is the last part of the url and the name extraction from the url doesn't corrupt the name
-        return this.getByGitlabLink(nameOrUrl, include);
+        if ( nameOrUrl.includes('://') ) {
+            return this.getByGitlabLink(nameOrUrl, include);
+        } else {
+            return this.getByName(nameOrUrl, include);
+        }
+
     }
 }
 
diff --git a/ExpressAPI/src/managers/ExerciseManager.ts b/ExpressAPI/src/managers/ExerciseManager.ts
index 720827d904b1332b90b632aa2ca965b23586b45f..802035222e6a7d52931d2e6ab33e0e9f6360d3a5 100644
--- a/ExpressAPI/src/managers/ExerciseManager.ts
+++ b/ExpressAPI/src/managers/ExerciseManager.ts
@@ -15,13 +15,13 @@ class ExerciseManager {
                                             }) as unknown as Exercise ?? undefined;
     }
 
-    async getFromAssignment(assignmentName: string, include: Prisma.ExerciseInclude | undefined = undefined): Promise<Array<Exercise> | undefined> {
-        return await db.exercise.findMany({
-                                              where  : {
-                                                  assignmentName: assignmentName
-                                              },
-                                              include: include
-                                          }) as Array<Exercise> ?? undefined;
+    getFromAssignment(assignmentName: string, include: Prisma.ExerciseInclude | undefined = undefined): Promise<Array<Exercise>> {
+        return db.exercise.findMany({
+                                        where  : {
+                                            assignmentName: assignmentName
+                                        },
+                                        include: include
+                                    }) as Promise<Array<Exercise>>;
     }
 }
 
diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts
index 3d8c3e1769f82a9dc72501ee4268d654abfc9aee..d5cb5b68c164dec82a2bf3c4c4750c0477f73225 100644
--- a/ExpressAPI/src/routes/ExerciseRoutes.ts
+++ b/ExpressAPI/src/routes/ExerciseRoutes.ts
@@ -88,9 +88,9 @@ class ExerciseRoutes implements RoutesManager {
     }
 
     private async checkExerciseLimit(assignment: Assignment, members: Array<GitlabUser>): Promise<Array<GitlabUser>> {
-        const exercises: Array<Exercise> | undefined = await ExerciseManager.getFromAssignment(assignment.name, { members: true });
+        const exercises: Array<Exercise> = await ExerciseManager.getFromAssignment(assignment.name, { members: true });
         const reachedLimitUsers: Array<GitlabUser> = [];
-        if ( exercises ) {
+        if ( exercises.length > 0 ) {
             for ( const member of members ) {
                 const exerciseCount: number = exercises.filter(exercise => exercise.members.findIndex(exerciseMember => exerciseMember.id === member.id) !== -1).length;
                 if ( exerciseCount >= Config.exercise.maxPerAssignment ) {