diff --git a/ExpressAPI/src/config/Config.ts b/ExpressAPI/src/config/Config.ts
index 369959d7aee3655af4733916a95f5060df10002a..beab7cc8a1cc89ed8e148766c2e1207d62a1ec8d 100644
--- a/ExpressAPI/src/config/Config.ts
+++ b/ExpressAPI/src/config/Config.ts
@@ -5,7 +5,9 @@ import { Exercise }     from '../types/DatabaseTypes';
 import JSON5            from 'json5';
 
 
-type ConfigGitlabBadge = { link: string, imageUrl: string }
+type ConfigGitlabBadge = {
+    link: string, imageUrl: string
+}
 
 
 class Config {
@@ -13,7 +15,11 @@ class Config {
         port: number
     };
 
-    public readonly requestClientValidation: { version: { [client: string]: string } }; // { version: { CLIENT: CONDITION } }
+    public readonly requestClientValidation: {
+        version: {
+            [client: string]: string
+        }
+    }; // { version: { CLIENT: CONDITION } }
 
     public readonly jwtConfig: {
         secret: string; expiresIn: number;
@@ -28,15 +34,27 @@ class Config {
     };
 
     public readonly gitlab: {
-        urls: Array<string>; account: { id: number; username: string; token: string; }; group: { root: number; templates: number; assignments: number; exercises: number; }, badges: { pipeline: ConfigGitlabBadge }
+        urls: Array<string>; repository: {
+            timeoutAfterCreation: number;
+        }; account: {
+            id: number; username: string; token: string;
+        }; group: {
+            root: number; templates: number; assignments: number; exercises: number;
+        }, badges: {
+            pipeline: ConfigGitlabBadge
+        }
     };
 
     public readonly assignment: {
-        default: { description: string; initReadme: boolean; sharedRunnersEnabled: boolean; visibility: string; wikiEnabled: boolean; template: string }; baseFiles: Array<string>; filename: string
+        default: {
+            description: string; initReadme: boolean; sharedRunnersEnabled: boolean; visibility: string; wikiEnabled: boolean; template: string
+        }; baseFiles: Array<string>; filename: string
     };
 
     public readonly exercise: {
-        maxSameName: number; resultsFolder: string, pipelineResultsFolder: string; default: { description: string; visibility: string; };
+        maxSameName: number; resultsFolder: string, pipelineResultsFolder: string; default: {
+            description: string; visibility: string;
+        };
     };
 
     constructor() {
@@ -47,8 +65,7 @@ class Config {
         this.requestClientValidation = JSON5.parse(process.env.REQUEST_CLIENT_VALIDATION || '{"version": {}}');
 
         this.jwtConfig = {
-            secret   : process.env.JWT_SECRET_KEY || '',
-            expiresIn: Number(process.env.SESSION_TIMEOUT || 0)
+            secret: process.env.JWT_SECRET_KEY || '', expiresIn: Number(process.env.SESSION_TIMEOUT || 0)
         };
 
         this.login = {
@@ -60,46 +77,29 @@ class Config {
         };
 
         this.gitlab = {
-            urls   : JSON5.parse(process.env.GITLAB_URLS || '[]'),
-            account: {
-                id      : Number(process.env.GITLAB_DOJO_ACCOUNT_ID || 0),
-                username: process.env.GITLAB_DOJO_ACCOUNT_USERNAME || '',
-                token   : process.env.GITLAB_DOJO_ACCOUNT_TOKEN || ''
-            },
-            group  : {
-                root       : Number(process.env.GITLAB_GROUP_ROOT_ID || 0),
-                templates  : Number(process.env.GITLAB_GROUP_TEMPLATES_ID || 0),
-                assignments: Number(process.env.GITLAB_GROUP_ASSIGNMENTS_ID || 0),
-                exercises  : Number(process.env.GITLAB_GROUP_EXERCISES_ID || 0)
-            },
-            badges : {
+            urls         : JSON5.parse(process.env.GITLAB_URLS || '[]'), account: {
+                id: Number(process.env.GITLAB_DOJO_ACCOUNT_ID || 0), username: process.env.GITLAB_DOJO_ACCOUNT_USERNAME || '', token: process.env.GITLAB_DOJO_ACCOUNT_TOKEN || ''
+            }, repository: {
+                timeoutAfterCreation: Number(process.env.GITLAB_REPOSITORY_CREATION_TIMEOUT || 5000)
+            }, group     : {
+                root: Number(process.env.GITLAB_GROUP_ROOT_ID || 0), templates: Number(process.env.GITLAB_GROUP_TEMPLATES_ID || 0), assignments: Number(process.env.GITLAB_GROUP_ASSIGNMENTS_ID || 0), exercises: Number(process.env.GITLAB_GROUP_EXERCISES_ID || 0)
+            }, badges    : {
                 pipeline: {
-                    link    : process.env.GITLAB_BADGE_PIPELINE_LINK || '',
-                    imageUrl: process.env.GITLAB_BADGE_PIPELINE_IMAGE_URL || ''
+                    link: process.env.GITLAB_BADGE_PIPELINE_LINK || '', imageUrl: process.env.GITLAB_BADGE_PIPELINE_IMAGE_URL || ''
                 }
             }
         };
 
         this.assignment = {
-            default  : {
-                description         : process.env.ASSIGNMENT_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '',
-                initReadme          : process.env.ASSIGNMENT_DEFAULT_INIT_README?.toBoolean() ?? false,
-                sharedRunnersEnabled: process.env.ASSIGNMENT_DEFAULT_SHARED_RUNNERS_ENABLED?.toBoolean() ?? true,
-                visibility          : process.env.ASSIGNMENT_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE,
-                wikiEnabled         : process.env.ASSIGNMENT_DEFAULT_WIKI_ENABLED?.toBoolean() ?? false,
-                template            : process.env.ASSIGNMENT_DEFAULT_TEMPLATE?.replace('{{USERNAME}}', this.gitlab.account.username).replace('{{TOKEN}}', this.gitlab.account.token) ?? ''
-            },
-            baseFiles: JSON5.parse(process.env.ASSIGNMENT_BASE_FILES || '[]'),
-            filename : process.env.ASSIGNMENT_FILENAME || ''
+            default     : {
+                description: process.env.ASSIGNMENT_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', initReadme: process.env.ASSIGNMENT_DEFAULT_INIT_README?.toBoolean() ?? false, sharedRunnersEnabled: process.env.ASSIGNMENT_DEFAULT_SHARED_RUNNERS_ENABLED?.toBoolean() ?? true, visibility: process.env.ASSIGNMENT_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE, wikiEnabled: process.env.ASSIGNMENT_DEFAULT_WIKI_ENABLED?.toBoolean() ?? false, template: process.env.ASSIGNMENT_DEFAULT_TEMPLATE?.replace('{{USERNAME}}', this.gitlab.account.username).replace('{{TOKEN}}', this.gitlab.account.token) ?? ''
+            }, baseFiles: JSON5.parse(process.env.ASSIGNMENT_BASE_FILES || '[]'), filename: process.env.ASSIGNMENT_FILENAME || ''
         };
 
         this.exercise = {
-            maxSameName          : Number(process.env.EXERCISE_MAX_SAME_NAME || 0),
-            resultsFolder        : process.env.EXERCISE_RESULTS_FOLDER?.convertWithEnvVars() ?? '',
-            pipelineResultsFolder: process.env.EXERCISE_PIPELINE_RESULTS_FOLDER ?? '', //Do not use convertWithEnvVars() because it is used in the exercise creation and muste be interpreted at exercise runtime
-            default              : {
-                description: process.env.EXERCISE_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '',
-                visibility : process.env.EXERCISE_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE
+            maxSameName: Number(process.env.EXERCISE_MAX_SAME_NAME || 0), resultsFolder: process.env.EXERCISE_RESULTS_FOLDER?.convertWithEnvVars() ?? '', pipelineResultsFolder: process.env.EXERCISE_PIPELINE_RESULTS_FOLDER ?? '', //Do not use convertWithEnvVars() because it is used in the exercise creation and muste be interpreted at exercise runtime
+            default    : {
+                description: process.env.EXERCISE_DEFAULT_DESCRIPTION?.convertWithEnvVars() ?? '', visibility: process.env.EXERCISE_DEFAULT_VISIBILITY || GitlabVisibility.PRIVATE
             }
         };
     }