diff --git a/migration/20.10/2010.sql b/migration/20.10/2010.sql
index f43bf61c400e2eb8e138f6a898b74f4291cd2425..033dd0ba59d3c68f8745ae40a17ec48bd8e7e633 100755
--- a/migration/20.10/2010.sql
+++ b/migration/20.10/2010.sql
@@ -135,6 +135,14 @@ DO $$ BEGIN
         ALTER TABLE listinstance RENAME COLUMN added_by_user_tmp TO added_by_user;
     END IF;
 END$$;
+DO $$ BEGIN
+    IF (SELECT count(column_name) from information_schema.columns where table_name = 'history' and column_name = 'user_id' and data_type != 'integer') THEN
+        ALTER TABLE history ADD COLUMN user_id_tmp INTEGER;
+        UPDATE history set user_id_tmp = (select id FROM users where users.user_id = history.user_id);
+        ALTER TABLE history DROP COLUMN IF EXISTS user_id;
+        ALTER TABLE history RENAME COLUMN user_id_tmp TO user_id;
+    END IF;
+END$$;
 
 
 /* RE CREATE VIEWS */
diff --git a/sql/structure.sql b/sql/structure.sql
index e4798a6f9e886f38f5de43c8b9c621661636177e..27e5cd607b2c1e2c1bcb2bd96ff7f0fc30a27ea0 100755
--- a/sql/structure.sql
+++ b/sql/structure.sql
@@ -95,7 +95,7 @@ CREATE TABLE history
   table_name character varying(32) DEFAULT NULL::character varying,
   record_id character varying(255) DEFAULT NULL::character varying,
   event_type character varying(32) NOT NULL,
-  user_id character varying(128) NOT NULL,
+  user_id INTEGER,
   event_date timestamp without time zone NOT NULL,
   info text,
   id_module character varying(50) NOT NULL DEFAULT 'admin'::character varying,
diff --git a/src/app/email/controllers/EmailController.php b/src/app/email/controllers/EmailController.php
index 24541dedbbd6911ad21bbbc61868c1831b6689aa..de9ef15152d7d60ba3d6043bb081716905811b76 100644
--- a/src/app/email/controllers/EmailController.php
+++ b/src/app/email/controllers/EmailController.php
@@ -658,7 +658,7 @@ class EmailController
             $history = HistoryModel::get([
                 'select'    => ['info'],
                 'where'     => ['user_id = ?', 'event_id = ?', 'event_type = ?'],
-                'data'      => [$user['user_id'], 'sendEmail', 'ERROR'],
+                'data'      => [$args['userId'], 'sendEmail', 'ERROR'],
                 'orderBy'   => ['event_date DESC'],
                 'limit'     => 1
             ]);
diff --git a/src/app/history/controllers/HistoryController.php b/src/app/history/controllers/HistoryController.php
index 1869571ac22b22c7a5c4ec076602591e7fb9fb07..ca0fd7fb5489e1c04181bfaf89c6808446707e8c 100755
--- a/src/app/history/controllers/HistoryController.php
+++ b/src/app/history/controllers/HistoryController.php
@@ -66,11 +66,11 @@ class HistoryController
                 }
             }
             $users = [];
-            if (!empty($userIds)) {
-                $users = UserModel::get(['select' => ['user_id'], 'where' => ['id in (?)'], 'data' => [$userIds]]);
-                $users = array_column($users, 'user_id');
+            if (!empty($userLogins)) {
+                $users = UserModel::get(['select' => ['id'], 'where' => ['user_id in (?)'], 'data' => [$userLogins]]);
+                $users = array_column($users, 'id');
             }
-            $users   = array_merge($users, $userLogins);
+            $users   = array_merge($users, $userIds);
             $where[] = 'user_id in (?)';
             $data[]  = $users;
         }
@@ -125,7 +125,7 @@ class HistoryController
 
         $total = $history[0]['count'] ?? 0;
         foreach ($history as $key => $value) {
-            $history[$key]['userLabel'] = UserModel::getLabelledUserById(['login' => $value['user_id']]);
+            $history[$key]['userLabel'] = UserModel::getLabelledUserById(['id' => $value['user_id']]);
             unset($history[$key]['count']);
         }
 
@@ -150,11 +150,9 @@ class HistoryController
         LogsController::add($aArgs);
 
         if (empty($aArgs['userId'])) {
-            $aArgs['userId'] = $GLOBALS['login'];
+            $aArgs['userId'] = $GLOBALS['id'];
         }
 
-        $user = UserModel::getBylogin(['select' => ['id'], 'login' => $aArgs['userId']]);
-
         HistoryModel::create([
             'tableName' => $aArgs['tableName'],
             'recordId'  => $aArgs['recordId'],
@@ -169,19 +167,18 @@ class HistoryController
             "eventId"   => $aArgs['eventId'],
             "tableName" => $aArgs['tableName'],
             "recordId"  => $aArgs['recordId'],
-            "userId"    => $user['id'],
+            "userId"    => $aArgs['userId'],
             "info"      => $aArgs['info'],
         ]);
     }
 
     public function getByUserId(Request $request, Response $response, array $aArgs)
     {
-        $user = UserModel::getById(['id' => $aArgs['userSerialId'], 'select' => ['user_id']]);
-        if ($user['user_id'] != $GLOBALS['login'] && !PrivilegeController::hasPrivilege(['privilegeId' => 'view_history', 'userId' => $GLOBALS['id']])) {
+        if ($aArgs['userSerialId'] != $GLOBALS['id'] && !PrivilegeController::hasPrivilege(['privilegeId' => 'view_history', 'userId' => $GLOBALS['id']])) {
             return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
         }
 
-        $aHistories = HistoryModel::getByUserId(['userId' => $user['user_id'], 'select' => ['info','record_id', 'event_date']]);
+        $aHistories = HistoryModel::getByUserId(['userId' => $aArgs['userSerialId'], 'select' => ['info','record_id', 'event_date']]);
 
         return $response->withJson(['histories' => $aHistories]);
     }
@@ -245,9 +242,11 @@ class HistoryController
 
         $users = [];
         foreach ($usersInHistory as $value) {
-            $user = UserModel::getByLogin(['login' => $value['user_id'], 'select' => ['id', 'firstname', 'lastname']]);
+            if (!empty($value['user_id'])) {
+                $user = UserModel::getById(['id' => $value['user_id'], 'select' => ['user_id', 'firstname', 'lastname']]);
+            }
 
-            $users[] = ['id' => $user['id'] ?? null, 'login' => $value['user_id'], 'label' => !empty($user['id']) ? "{$user['firstname']} {$user['lastname']}" : null];
+            $users[] = ['id' => $value['user_id'] ?? null, 'login' => $user['user_id'] ?? null, 'label' => !empty($user['user_id']) ? "{$user['firstname']} {$user['lastname']}" : null];
         }
 
         return $response->withJson(['actions' => $actions, 'systemActions' => $systemActions, 'users' => $users]);
diff --git a/src/app/history/models/HistoryModelAbstract.php b/src/app/history/models/HistoryModelAbstract.php
index 1013ee8f7e68537420396dd7a0162ce7e717d19b..65b7af2757ef7a88be87280a690b228659b8985b 100755
--- a/src/app/history/models/HistoryModelAbstract.php
+++ b/src/app/history/models/HistoryModelAbstract.php
@@ -41,7 +41,8 @@ abstract class HistoryModelAbstract
     public static function create(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['tableName', 'recordId', 'eventType', 'userId', 'info', 'moduleId', 'eventId']);
-        ValidatorModel::stringType($aArgs, ['tableName', 'eventType', 'userId', 'info', 'moduleId', 'eventId']);
+        ValidatorModel::stringType($aArgs, ['tableName', 'eventType', 'info', 'moduleId', 'eventId']);
+        ValidatorModel::intVal($aArgs, ['userId']);
 
         DatabaseModel::insert([
             'table'         => 'history',
@@ -61,16 +62,16 @@ abstract class HistoryModelAbstract
         return true;
     }
 
-    public static function getByUserId(array $aArgs)
+    public static function getByUserId(array $args)
     {
-        ValidatorModel::notEmpty($aArgs, ['userId']);
-        ValidatorModel::stringType($aArgs, ['userId']);
+        ValidatorModel::notEmpty($args, ['userId']);
+        ValidatorModel::stringType($args, ['userId']);
 
         $aHistories = DatabaseModel::select([
-            'select'   => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
+            'select'   => empty($args['select']) ? ['*'] : $args['select'],
             'table'    => ['history'],
             'where'    => ['user_id = ?'],
-            'data'     => [$aArgs['userId']],
+            'data'     => [$args['userId']],
             'order_by' => ['event_date DESC'],
             'limit'    => 500
         ]);
diff --git a/src/app/home/controllers/HomeController.php b/src/app/home/controllers/HomeController.php
index cf5b73066a72ad6b4cbf1aaff2cebaa71e9290fd..3231ab28f1c4fc91e1826105dc3d3e5f74e18ef9 100755
--- a/src/app/home/controllers/HomeController.php
+++ b/src/app/home/controllers/HomeController.php
@@ -146,7 +146,7 @@ class HomeController
                 'res_letterbox.filename'
             ],
             'limit'     => 5,
-            'userId'    => $GLOBALS['login']
+            'userId'    => $GLOBALS['id']
         ]);
 
         if (!empty($lastResources)) {
diff --git a/src/app/resource/models/ResModelAbstract.php b/src/app/resource/models/ResModelAbstract.php
index 1af3f4bcab7b2e1b99df299d07232b3846207108..dea461d62e535bada6f343acd726eb486a3797c7 100755
--- a/src/app/resource/models/ResModelAbstract.php
+++ b/src/app/resource/models/ResModelAbstract.php
@@ -123,9 +123,8 @@ abstract class ResModelAbstract
 
     public static function getLastResources(array $aArgs)
     {
-        ValidatorModel::notEmpty($aArgs, ['limit', 'userId', 'select']);
-        ValidatorModel::intType($aArgs, ['limit']);
-        ValidatorModel::stringType($aArgs, ['userId']);
+        ValidatorModel::notEmpty($aArgs, ['limit', 'select']);
+        ValidatorModel::intType($aArgs, ['limit', 'userId',]);
         ValidatorModel::arrayType($aArgs, ['select']);
 
         $resources = DatabaseModel::select([
diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index fa4ca9bc33fc9bfd4550f4d605bc28d27d3d4dc3..2b8227881f522aeda564f908797b721ea534c53c 100755
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -132,7 +132,7 @@ class UserController
         $user['baskets']            = BasketModel::getBasketsByLogin(['login' => $user['user_id']]);
         $user['assignedBaskets']    = RedirectBasketModel::getAssignedBasketsByUserId(['userId' => $user['id']]);
         $user['redirectedBaskets']  = RedirectBasketModel::getRedirectedBasketsByUserId(['userId' => $user['id']]);
-        $user['history']            = HistoryModel::getByUserId(['userId' => $user['user_id'], 'select' => ['record_id', 'event_date', 'info', 'remote_ip']]);
+        $user['history']            = HistoryModel::getByUserId(['userId' => $aArgs['id'], 'select' => ['record_id', 'event_date', 'info', 'remote_ip']]);
         $user['canModifyPassword']              = false;
         $user['canSendActivationNotification']  = false;
         $user['canCreateMaarchParapheurUser']   = false;