diff --git a/apps/maarch_entreprise/js/angular/app/administration/user-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/user-administration.component.ts
index f2e3be74f972c0b5c30ebdcda3f7f18dfc6e9ecc..495987a114a895a6a298b8b3174b09c6474d7c3b 100644
--- a/apps/maarch_entreprise/js/angular/app/administration/user-administration.component.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/user-administration.component.ts
@@ -480,18 +480,35 @@ export class UserAdministrationComponent extends AutoCompletePlugin implements O
 
     onSubmit() {
         if (this.creationMode) {
-            this.http.post(this.coreUrl + "rest/users", this.user)
+            var r = true;
+
+            this.http.get(this.coreUrl + "rest/users/" + this.user.userId + "/status")
                 .subscribe((data: any) => {
-                    this.notify.success(this.lang.userAdded);
-                    this.router.navigate(["/administration/users/" + data.user.id]);
-                }, (err) => {
-                    this.notify.error(err.error.errors);
+                    var deletedUser = false;
+                    if (data.status && data.status == 'DEL') {
+                        r = confirm(this.lang.reactivateUserDeleted);
+                        deletedUser = true;
+                    }
+                    if (r) {
+                        this.http.post(this.coreUrl + "rest/users", this.user)
+                            .subscribe((data: any) => {
+                                if (deletedUser) {
+                                    this.notify.success(this.lang.userUpdated);
+                                } else {
+                                    this.notify.success(this.lang.userAdded);
+                                }
+                                this.router.navigate(["/administration/users/" + data.user.id]);
+                            }, (err: any) => {
+                                this.notify.error(err.error.errors);
+                            });
+                    }
+                }, () => {
                 });
         } else {
             this.http.put(this.coreUrl + "rest/users/" + this.serialId, this.user)
                 .subscribe((data: any) => {
                     this.notify.success(this.lang.userUpdated);
-                }, (err) => {
+                }, (err: any) => {
                     this.notify.error(err.error.errors);
                 });
         }
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-en.ts b/apps/maarch_entreprise/js/angular/lang/lang-en.ts
index 484e5c1c4e0d1205ef429c0aaaaaf883943ebef8..fa64692e314d446d146a14298d6c004c3c087b8f 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-en.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-en.ts
@@ -264,6 +264,7 @@ export const LANG_EN = {
     "record"                            : "element(s)",
     "records"                           : "result(s)",
     "reaffectUserRedirect"              : "Reaffect to user (diffusion list + diffusion model entity)",
+    "reactivateUserDeleted"             : "The id filled is linked to a deleted user. Voulez-vous le réactiver ?",
     "recordsPerPage"                    : "result per page",
     "redirectBasket"                    : "Redirect basket",
     "redirectConfidentialInfo"          : "This user has confidentials documents linked to this service.<br/>You could link to an other user in this service.",
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
index 921480f0f5edf53aebb74f1ea63650e784646d89..08180d7331844745d717625f7b9cd91d4c6d6a72 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
@@ -329,6 +329,7 @@ export const LANG_FR = {
     "processType"                       : "Type de traitement",
     "pswReseted"                        : "Mot de passe réinitialisé",
     "reaffectUserRedirect"              : "Réaffecter à l'utilisateur (liste de diffusion + modèle de l'entité)",
+    "reactivateUserDeleted"             : "L'identifiant renseigné est attribué à un utilisateur supprimé. Voulez-vous le réactiver ?",
     "reassign"                          : "Réassigner",
     "record"                            : "élément(s)",
     "records"                           : "résultats",
diff --git a/apps/maarch_entreprise/lang/en.php b/apps/maarch_entreprise/lang/en.php
index 6176f1ef2efbc22996c94eae7caa697d612d1882..9120df643ba6e9ddd9b94ef9699d1af5e6ec9a04 100755
--- a/apps/maarch_entreprise/lang/en.php
+++ b/apps/maarch_entreprise/lang/en.php
@@ -1452,30 +1452,12 @@ if (!defined('_AUTORIZED_USER')) {
 if (!defined('_SUSPENDED_USER')) {
     define('_SUSPENDED_USER', 'Suspended user');
 }
-if (!defined('_DELETED_USER')) {
-    define('_DELETED_USER', 'Deleted user');
-}
-if (!defined('_USER_DELETION')) {
-    define('_USER_DELETION', 'User deletion');
-}
 if (!defined('_USER_AUTORIZATION')) {
     define('_USER_AUTORIZATION', 'User authorization');
 }
 if (!defined('_USER_SUSPENSION')) {
     define('_USER_SUSPENSION', 'User suspension');
 }
-if (!defined('_USER_UPDATED')) {
-    define('_USER_UPDATED', 'Modified user');
-}
-if (!defined('_USER_UPDATE')) {
-    define('_USER_UPDATE', 'User modification');
-}
-if (!defined('_USER_ADDED')) {
-    define('_USER_ADDED', 'New added user');
-}
-if (!defined('_NO_PRIMARY_GROUP')) {
-    define('_NO_PRIMARY_GROUP', 'No primary group is selected !');
-}
 if (!defined('_THE_USER')) {
     define('_THE_USER', 'The user ');
 }
diff --git a/apps/maarch_entreprise/lang/fr.php b/apps/maarch_entreprise/lang/fr.php
index 675e0533a66ec8734fa8fdd5596be1b1afeed2f7..8c5f00c52901e1e0e1eee9b0bbbef9810645069c 100755
--- a/apps/maarch_entreprise/lang/fr.php
+++ b/apps/maarch_entreprise/lang/fr.php
@@ -1460,30 +1460,12 @@ if (!defined('_EMPTY_PSW')) {
 if (!defined('_AUTORIZED_USER')) {
     define('_AUTORIZED_USER', 'Utilisateur autorisé');
 }
-if (!defined('_SUSPENDED_USER')) {
-    define('_SUSPENDED_USER', 'Utilisateur suspendu');
-}
-if (!defined('_DELETED_USER')) {
-    define('_DELETED_USER', 'Utilisateur supprimé');
-}
-if (!defined('_USER_DELETION')) {
-    define('_USER_DELETION', "Suppression de l'utilisateur");
-}
 if (!defined('_USER_AUTORIZATION')) {
     define('_USER_AUTORIZATION', "Autorisation de l'utilisateur");
 }
 if (!defined('_USER_SUSPENSION')) {
     define('_USER_SUSPENSION', "Suspension de l'utilisateur");
 }
-if (!defined('_USER_UPDATED')) {
-    define('_USER_UPDATED', 'Utilisateur modifié');
-}
-if (!defined('_USER_UPDATE')) {
-    define('_USER_UPDATE', "Modification d'un utilisateur");
-}
-if (!defined('_USER_ADDED')) {
-    define('_USER_ADDED', 'Nouvel utilisateur ajouté');
-}
 if (!defined('_NO_PRIMARY_GROUP')) {
     define('_NO_PRIMARY_GROUP', 'Aucun groupe primaire sélectionné !');
 }
diff --git a/rest/index.php b/rest/index.php
index a9a906f3dc594f4ba13e1a0b4034d5826a9705c9..89f3fe8ea71aee6bfbd5b37395c6147a70c4c935 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -264,6 +264,7 @@ $app->post('/users', \User\controllers\UserController::class . ':create');
 $app->get('/users/{id}/details', \User\controllers\UserController::class . ':getDetailledById');
 $app->put('/users/{id}', \User\controllers\UserController::class . ':update');
 $app->put('/users/{id}/password', \User\controllers\UserController::class . ':resetPassword');
+$app->get('/users/{userId}/status', \User\controllers\UserController::class . ':getStatusByUserId');
 $app->put('/users/{id}/status', \User\controllers\UserController::class . ':updateStatus');
 $app->delete('/users/{id}', \User\controllers\UserController::class . ':delete');
 $app->post('/users/{id}/groups', \User\controllers\UserController::class . ':addGroup');
diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index 16fe2888837482a4852e99b9f48a83954cf48070..dd910f77c51ba7ccd0b10907100db90b88f17e3b 100644
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -128,9 +128,15 @@ class UserController
             return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
         }
 
-        $existingUser = UserModel::getByUserId(['userId' => $data['userId'], 'select' => ['1']]);
-        if (!empty($existingUser)) {
-            return $response->withStatus(400)->withJson(['errors' => _ID . ' ' . _ALREADY_EXISTS]);
+        $existingUser = UserModel::getByUserId(['userId' => $data['userId'], 'select' => ['id', 'status']]);
+        if (!empty($existingUser) && $existingUser['status'] == 'DEL') {
+            UserModel::updateStatus(['id' => $existingUser['id'], 'status' => 'OK']);
+            $data['enabled'] = 'Y';
+            UserModel::update(['id' => $existingUser['id'], 'user' => $data]);
+
+            return $response->withJson(['user' => $existingUser]);
+        } elseif (!empty($existingUser)) {
+            return $response->withStatus(400)->withJson(['errors' => _USER_ID_ALREADY_EXISTS]);
         }
 
         $logingModes = ['standard', 'restMode'];
@@ -153,6 +159,14 @@ class UserController
             }
         }
 
+        HistoryController::add([
+            'tableName'    => 'users',
+            'recordId'     => $GLOBALS['userId'],
+            'eventType'    => 'ADD',
+            'eventId'      => 'userCreation',
+            'info'         => _USER_CREATED . " {$data['userId']}"
+        ]);
+
         return $response->withJson(['user' => $newUser]);
     }
 
@@ -186,6 +200,14 @@ class UserController
             }
         }
 
+        HistoryController::add([
+            'tableName'    => 'users',
+            'recordId'     => $GLOBALS['userId'],
+            'eventType'    => 'ADD',
+            'eventId'      => 'userCreation',
+            'info'         => _USER_UPDATED . " {$data['user_id']}"
+        ]);
+
         return $response->withJson(['success' => 'success']);
     }
 
@@ -198,6 +220,14 @@ class UserController
 
         UserModel::delete(['id' => $aArgs['id']]);
 
+        HistoryController::add([
+            'tableName'    => 'users',
+            'recordId'     => $GLOBALS['userId'],
+            'eventType'    => 'ADD',
+            'eventId'      => 'userCreation',
+            'info'         => _USER_DELETED . " {$aArgs['id']}"
+        ]);
+
         return $response->withJson(['success' => 'success']);
     }
 
@@ -384,6 +414,17 @@ class UserController
         ]);
     }
 
+    public function getStatusByUserId(Request $request, Response $response, array $aArgs)
+    {
+        if (!ServiceModel::hasService(['id' => 'admin_users', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
+            return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
+        }
+
+        $user = UserModel::getByUserId(['userId' => $aArgs['userId'], 'select' => ['status']]);
+
+        return $response->withJson(['status' => $user['status']]);
+    }
+
     public function updateStatus(Request $request, Response $response, array $aArgs)
     {
         $error = $this->hasUsersRights(['id' => $aArgs['id'], 'himself' => true]);
diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php
index 235411e66db4e5d73979c309d41bc52a62a0a666..83d8ea51deba1f89ac9423e410fc1ad36841db5f 100644
--- a/src/core/lang/lang-en.php
+++ b/src/core/lang/lang-en.php
@@ -65,6 +65,10 @@ define('_STATUS_NOT_FOUND', 'Status not found');
 define('_TO_CC', 'On copy');
 define('_TO_SIGN', 'For signature');
 define('_UPDATE_STATUS', 'Status update');
+define('_USER_ID_ALREADY_EXISTS', 'The user id already exists');
+define('_USER_CREATED', 'User added');
+define('_USER_UPDATED', 'User updated');
+define('_USER_DELETED', 'User deleted');
 define('_USER_GROUP_CREATION', 'Group added for user');
 define('_USER_GROUP_MODIFICATION', 'Group updated for user');
 define('_USER_GROUP_SUPPRESSION', 'Group deleted for user');
diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php
index d03ca028233c24692f9c3a268d789b2121472608..d8e3ad5979ff8547bc28cfbdab2adfca42189ed2 100644
--- a/src/core/lang/lang-fr.php
+++ b/src/core/lang/lang-fr.php
@@ -65,6 +65,10 @@ define('_STATUS_NOT_FOUND', 'Statut introuvable');
 define('_TO_CC', 'En copie');
 define('_TO_SIGN', 'Pour signature');
 define('_UPDATE_STATUS', 'Modification du statut');
+define('_USER_ID_ALREADY_EXISTS', 'L\'identifiant utilisateur existe déjà');
+define('_USER_CREATED', 'Utilisateur ajouté');
+define('_USER_UPDATED', 'Utilisateur modifié');
+define('_USER_DELETED', 'Utilisateur supprimé');
 define('_USER_GROUP_CREATION', 'Groupe ajouté pour utilisateur');
 define('_USER_GROUP_MODIFICATION', 'Groupe modifié pour utilisateur');
 define('_USER_GROUP_SUPPRESSION', 'Groupe supprimé pour utilisateur');