diff --git a/config/SharedConfig.ts b/config/SharedConfig.ts
index 5bd7b65bddf9e0441d51bf269c37f0cbfb8fa80f..2e1cf15fd8971c1a841882e28c3d62c58652defe 100644
--- a/config/SharedConfig.ts
+++ b/config/SharedConfig.ts
@@ -4,42 +4,11 @@ class SharedConfig {
 
     public readonly logsFolder: string;
 
-    public gitlab: {
-        URL: string, apiURL: string
-    };
-
-    public readonly login: {
-        gitlab: {
-            client: {
-                id: string
-            }, url: {
-                redirect: string, token: string
-            }
-        }
-    };
-
 
     constructor() {
         this.production = process.env.NODE_ENV === 'production';
 
         this.logsFolder = process.env.LOGS_FOLDER ?? '';
-
-        this.gitlab = {
-            URL   : process.env.GITLAB_URL ?? '',
-            apiURL: process.env.GITLAB_API_URL ?? ''
-        };
-
-        this.login = {
-            gitlab: {
-                client: {
-                    id: process.env.LOGIN_GITLAB_CLIENT_ID ?? ''
-                },
-                url   : {
-                    redirect: process.env.LOGIN_GITLAB_URL_REDIRECT ?? '',
-                    token   : process.env.LOGIN_GITLAB_URL_TOKEN ?? ''
-                }
-            }
-        };
     }
 }
 
diff --git a/helpers/Dojo/SharedAssignmentHelper.ts b/helpers/Dojo/SharedAssignmentHelper.ts
index d57caab79ec99384f09629c803cccb2dc2739950..c1930880b3af881fb110b0057e4a0a0a03f8f501 100644
--- a/helpers/Dojo/SharedAssignmentHelper.ts
+++ b/helpers/Dojo/SharedAssignmentHelper.ts
@@ -3,10 +3,16 @@ import DojoStatusCode       from '../../types/Dojo/DojoStatusCode.js';
 import Json5FileValidator   from '../Json5FileValidator.js';
 import * as Gitlab          from '@gitbeaker/rest';
 import GitlabPipelineStatus from '../../types/Gitlab/GitlabPipelineStatus.js';
-import GitlabManager        from '../../../managers/GitlabManager.js';
+import SharedGitlabManager  from '../../managers/SharedGitlabManager';
 
 
 class SharedAssignmentHelper {
+    private gitlabManager!: SharedGitlabManager;
+
+    init(gitlabManager: SharedGitlabManager) {
+        this.gitlabManager = gitlabManager;
+    }
+
     validateDescriptionFile(filePathOrStr: string, isFile: boolean = true, version: number = 1): { content: AssignmentFile | undefined, isValid: boolean, error: string | null } {
         if ( version === 1 ) {
             return Json5FileValidator.validateFile(AssignmentFile, filePathOrStr, isFile);
@@ -20,7 +26,7 @@ class SharedAssignmentHelper {
     }
 
     async isPublishable(repositoryId: number): Promise<{ isPublishable: boolean, lastPipeline: Gitlab.PipelineSchema | null, status?: { code: DojoStatusCode, message: string } }> {
-        const pipelines = await GitlabManager.getRepositoryPipelines(repositoryId, 'main');
+        const pipelines = await this.gitlabManager.getRepositoryPipelines(repositoryId, 'main');
         if ( pipelines.length > 0 ) {
             const lastPipeline = pipelines[0];
             if ( lastPipeline.status !== GitlabPipelineStatus.SUCCESS.valueOf() ) {
diff --git a/managers/SharedGitlabManager.ts b/managers/SharedGitlabManager.ts
index abddde1b5ca0b38cc6bdc7039deca77f880a5d68..0faa08d72c57c67728a96e9bf60c5067dc239ebf 100644
--- a/managers/SharedGitlabManager.ts
+++ b/managers/SharedGitlabManager.ts
@@ -1,5 +1,4 @@
 import axios                                                 from 'axios';
-import SharedConfig                                          from '../config/SharedConfig.js';
 import * as GitlabCore                                       from '@gitbeaker/core';
 import { GitbeakerRequestError }                             from '@gitbeaker/requester-utils';
 import { Gitlab, PipelineSchema, ProjectSchema, UserSchema } from '@gitbeaker/rest';
@@ -12,11 +11,11 @@ class SharedGitlabManager {
 
     setToken(token: string) {
         this.api = new Gitlab(Object.assign({
-                                                host: SharedConfig.gitlab.URL
+                                                host: this.gitlabUrl ?? ''
                                             }, this.refreshTokenFunction ? { oauthToken: token } : { token: token }));
     }
 
-    constructor(token: string, refreshTokenFunction?: () => Promise<string>) {
+    constructor(public gitlabUrl: string, token: string, public clientId?: string, public urlRedirect?: string, public urlToken?: string, refreshTokenFunction?: () => Promise<string>) {
         this.refreshTokenFunction = refreshTokenFunction;
         this.setToken(token);
     }
@@ -36,13 +35,17 @@ class SharedGitlabManager {
     }
 
     async getTokens(codeOrRefresh: string, isRefresh: boolean = false, clientSecret: string = ''): Promise<GitlabToken> {
-        const response = await axios.post<GitlabToken>(SharedConfig.login.gitlab.url.token, {
-            client_id    : SharedConfig.login.gitlab.client.id,
+        if ( !this.urlToken ) {
+            throw new Error('Error when initializing GitlabManager');
+        }
+
+        const response = await axios.post<GitlabToken>(this.urlToken, {
+            client_id    : this.clientId,
             client_secret: clientSecret,
             grant_type   : isRefresh ? 'refresh_token' : 'authorization_code',
             refresh_token: codeOrRefresh,
             code         : codeOrRefresh,
-            redirect_uri : SharedConfig.login.gitlab.url.redirect
+            redirect_uri : this.urlRedirect
         });
 
         return response.data;