diff --git a/ExpressAPI/src/managers/UserManager.ts b/ExpressAPI/src/managers/UserManager.ts
index 768878985df0370e70b57646a35a16c534ae1af8..e2919e3bd4618e7beb474739bfcb32694df0d021 100644
--- a/ExpressAPI/src/managers/UserManager.ts
+++ b/ExpressAPI/src/managers/UserManager.ts
@@ -35,13 +35,13 @@ class UserManager {
         return Promise.all(ids.map(userId => this.getById(userId)));
     }
 
-    async getByGitlabId(gitlabId: number): Promise<User | undefined> {
+    async getByGitlabId(gitlabId: number): Promise<User | number> {
         const raw = await db<User>(User.tableName).where('userGitlabId', gitlabId).first();
 
-        return raw ? this.createObjectFromRawSql(raw) : undefined;
+        return raw ? this.createObjectFromRawSql(raw) : gitlabId;
     }
 
-    async getByGitlabIds(gitlabIds: Array<number>): Promise<Array<User>> {
+    async getByGitlabIds(gitlabIds: Array<number>): Promise<Array<User | number>> {
         return Promise.all(gitlabIds.map(gitlabId => this.getByGitlabId(gitlabId)));
     }
 }
diff --git a/ExpressAPI/src/models/User.ts b/ExpressAPI/src/models/User.ts
index 88af3c2cd233823722af492ccde6092382cc4c8d..52e2cfb9200b4b0db224764c48f910ee748e4639 100644
--- a/ExpressAPI/src/models/User.ts
+++ b/ExpressAPI/src/models/User.ts
@@ -12,10 +12,10 @@ class User extends Model {
     userID: number = null;
     userFirstName: string = '';
     userLastName: string = '';
-    userMail: string = null;
-    userGitlabId: number = null;
-    userRole: string = null;
-    userDeleted: boolean = null;
+    userMail: string = '';
+    userGitlabId: number = -1;
+    userRole: string = 'student';
+    userDeleted: boolean = false;
 
     userPassword: string = null;
 
@@ -51,6 +51,7 @@ class User extends Model {
         this.userFirstName = jsonObject.firstName;
         this.userLastName = jsonObject.lastName;
         this.userMail = jsonObject.mail;
+        this.userGitlabId = jsonObject.gitlabId;
         this.userRole = jsonObject.role;
         this.userDeleted = jsonObject.deleted;
     }
@@ -75,12 +76,14 @@ class User extends Model {
             userLastName : Toolbox.capitalizeName(this.userLastName),
             userRole     : this.userRole,
             userMail     : this.userMail,
+            userGitlabId : this.userGitlabId,
             userPassword : this.userPassword
         };
     }
 
-    create(): Promise<void> {
-        return db(User.tableName).insert(this.toDb());
+    async create(): Promise<void> {
+        const id = await db(User.tableName).insert(this.toDb());
+        this.userID = id[0];
     }
 
     update(): Promise<void> {
diff --git a/ExpressAPI/src/routes/EnonceRoutes.ts b/ExpressAPI/src/routes/EnonceRoutes.ts
index bbc33a10a0fb2fb49086ba8044ee06788aed8151..0e5a9d0ed84ea226cadc40ce7974533a49f2e0ee 100644
--- a/ExpressAPI/src/routes/EnonceRoutes.ts
+++ b/ExpressAPI/src/routes/EnonceRoutes.ts
@@ -18,6 +18,7 @@ import User                      from '../models/User';
 import Enonce                    from '../models/Enonce';
 import EnonceStaff               from '../models/EnonceStaff';
 import { AxiosError }            from 'axios';
+import logger                    from '../shared/logging/WinstonLogger';
 
 
 class EnonceRoutes implements RoutesManager {
@@ -103,19 +104,36 @@ class EnonceRoutes implements RoutesManager {
                                                         });
             await enonce.create();
 
-            let dojoUsers: Array<User> = [ req.session.profile, ...(await UserManager.getByGitlabIds(gitlabMembers.map(member => member.id))).filter(user => user) ]; // TODO: Remplacer le filter par une map qui créer l'utilisateur inconnu.
+            let dojoUsers: Array<User> = [ req.session.profile, ...(await Promise.all((await UserManager.getByGitlabIds(gitlabMembers.map(member => member.id))).map(async (user: User | number) => {
+                if ( typeof user === 'number' ) {
+                    const gitlabUser = gitlabMembers.find(member => member.id === user);
+
+                    user = User.createFromSql({
+                                                  userFirstName: gitlabUser.name,
+                                                  userGitlabId : gitlabUser.id
+                                              });
+
+                    await user.create();
+                }
+
+                return user as User;
+            }))) ];
             dojoUsers = dojoUsers.reduce((unique, user) => (unique.findIndex(uniqueUser => uniqueUser.userID === user.userID) !== -1 ? unique : [ ...unique, user ]), Array<User>());
             await Promise.all(dojoUsers.map(async (dojoUser: User) => {
-                return EnonceStaff.createFromSql({
-                                                     enonceID: enonce.enonceID,
-                                                     userID  : dojoUser.userID
-                                                 });
+                const enonceStaff = EnonceStaff.createFromSql({
+                                                                  enonceID: enonce.enonceID,
+                                                                  userID  : dojoUser.userID
+                                                              });
+
+                await enonceStaff.create();
             }));
 
             return req.session.sendResponse(res, StatusCodes.OK, enonce.toJsonObject());
         } catch ( error ) {
             if ( error instanceof AxiosError ) {
                 return res.status(error.response.status).send();
+            } else {
+                logger.error(error);
             }
 
             return res.status(StatusCodes.INTERNAL_SERVER_ERROR).send();