diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index 0023fdb9be8ce240d2fa3173ed623cc02db49719..0585f9c5046c936de68a1421f554a3059505c1a6 100755
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -65,7 +65,7 @@ class UserController
 
         if ($GLOBALS['userId'] == 'superadmin') {
             $users = UserModel::get([
-                'select'    => ['id', 'user_id', 'firstname', 'lastname', 'status', 'mail'],
+                'select'    => ['id', 'user_id', 'firstname', 'lastname', 'status', 'mail', 'loginmode'],
                 'where'     => ['user_id != ?', 'status != ?'],
                 'data'      => ['superadmin', 'DEL']
             ]);
@@ -74,20 +74,15 @@ class UserController
             $users = [];
             if (!empty($entities)) {
                 $users = UserEntityModel::getWithUsers([
-                    'select'    => ['DISTINCT users.id', 'users.user_id', 'firstname', 'lastname', 'status', 'mail'],
+                    'select'    => ['DISTINCT users.id', 'users.user_id', 'firstname', 'lastname', 'status', 'mail', 'loginmode'],
                     'where'     => ['users_entities.entity_id in (?)', 'status != ?'],
                     'data'      => [$entities, 'DEL']
                 ]);
             }
-            $usersNoEntities = UserEntityModel::getUsersWithoutEntities(['select' => ['id', 'users.user_id', 'firstname', 'lastname', 'status', 'mail']]);
+            $usersNoEntities = UserEntityModel::getUsersWithoutEntities(['select' => ['id', 'users.user_id', 'firstname', 'lastname', 'status', 'mail', 'loginmode']]);
             $users = array_merge($users, $usersNoEntities);
         }
 
-        $usersIds = [];
-        foreach ($users as $value) {
-            $usersIds[] = $value['user_id'];
-        }
-
         $quota = [];
         $userQuota = ParameterModel::getById(['id' => 'user_quota', 'select' => ['param_value_int']]);
         if (!empty($userQuota['param_value_int'])) {
@@ -1310,7 +1305,6 @@ class UserController
             }
 
             if ($data['mode'] == 'reaffect') {
-
                 $listInstances = ListInstanceModel::getWithConfidentiality(['select' => ['listinstance.res_id'], 'entityId' => $aArgs['entityId'], 'userId' => $user['user_id']]);
                 $resIdsToReplace = [];
                 foreach ($listInstances as $listInstance) {
diff --git a/src/frontend/app/administration/user/users-administration.component.html b/src/frontend/app/administration/user/users-administration.component.html
index 74f049284854964c11366c8499507698931168ea..6fbcd7b8d5200ab04274d8f46ba9e066aca4d51d 100755
--- a/src/frontend/app/administration/user/users-administration.component.html
+++ b/src/frontend/app/administration/user/users-administration.component.html
@@ -31,6 +31,10 @@
                     <div class="col-md-6 col-xs-6">
                         <mat-form-field>
                             <input matInput (keyup)="applyFilter($event.target.value)" placeholder="{{lang.filterBy}}">
+                            <mat-button-toggle class="webserviceAccount" matSuffix (click)="$event.stopPropagation();toggleWebserviceAccount()"
+                                [checked]="this.withWebserviceAccount" title="{{lang.displayWebserviceAccount}}" >
+                                <mat-icon fontSet="fas" fontIcon="fa-user-shield fa-2x" style="margin-left: -2px; margin-top: -4px;"></mat-icon>
+                            </mat-button-toggle>
                         </mat-form-field>
                     </div>
                     <div class="col-md-6 col-xs-6">
diff --git a/src/frontend/app/administration/user/users-administration.component.scss b/src/frontend/app/administration/user/users-administration.component.scss
index 03c8894cde0b48cf4f4c66bfde248910c1fa3d12..fe089dd18f6f8e436a112b68cad70cedfa41ce4b 100644
--- a/src/frontend/app/administration/user/users-administration.component.scss
+++ b/src/frontend/app/administration/user/users-administration.component.scss
@@ -11,4 +11,17 @@ button:disabled{
 
 .statusUserLabelPrimary {
     color : $primary;
-}
\ No newline at end of file
+}
+
+.webserviceAccount {
+    color: #666;
+    width: 37px;
+    height: 37px;
+    font-size: x-small;
+    border-radius: 18px !important;
+}
+
+.mat-button-toggle-checked {
+    background-color: #F99830 !important;
+    color: white;
+}
diff --git a/src/frontend/app/administration/user/users-administration.component.ts b/src/frontend/app/administration/user/users-administration.component.ts
index 557946e2e4c00f14e6eea27ac40bf00ad2c1dc07..6da9821f8e19b2850b825374f002c47c2f87756f 100755
--- a/src/frontend/app/administration/user/users-administration.component.ts
+++ b/src/frontend/app/administration/user/users-administration.component.ts
@@ -38,6 +38,9 @@ export class UsersAdministrationComponent implements OnInit {
     listinstances                           : any[]                 = [];
     quota                                   : any                   = {};
     user                                    : any                   = {};
+    withWebserviceAccount                   : boolean               = false;
+    webserviceAccounts                      : any[]                 = [];
+    noWebserviceAccounts                    : any[]                 = [];
 
     dataSource          = new MatTableDataSource(this.data);
     displayedColumns    = ['id', 'user_id', 'lastname', 'firstname', 'status', 'mail', 'actions'];
@@ -72,25 +75,35 @@ export class UsersAdministrationComponent implements OnInit {
         this.http.get('../../rest/users')
             .subscribe((data: any) => {
                 this.data = data['users'];
-                 this.data.forEach(element => {
-                    element.statusLabel = this.lang['user'+element.status]
+                this.data.forEach(element => {
+                    element.statusLabel = this.lang['user'+element.status];
+                    if (element.loginmode == 'restMode') {
+                        this.webserviceAccounts.push(element);
+                    } else {
+                        this.noWebserviceAccounts.push(element);
+                    }
                 });
+                this.data = this.noWebserviceAccounts;
                 this.quota = data['quota'];
                 if (this.quota.actives > this.quota.userQuota) {
                     this.notify.error(this.lang.quotaExceeded);
                 }
 
                 this.loading = false;
-                setTimeout(() => {
-                    this.dataSource = new MatTableDataSource(this.data);
-                    this.dataSource.paginator = this.paginator;
-                    this.dataSource.sort = this.sort;
-                }, 0);
+                this.setDatasource();
             }, () => {
                 location.href = "index.php";
             });
     }
 
+    setDatasource() {
+        setTimeout(() => {
+            this.dataSource = new MatTableDataSource(this.data);
+            this.dataSource.paginator = this.paginator;
+            this.dataSource.sort = this.sort;
+        }, 0);
+    }
+
     activateUser(user: any) {
         let r = confirm(this.lang.confirmAction + ' ' + this.lang.authorize + ' « ' + user.user_id + ' »');
 
@@ -190,9 +203,7 @@ export class UsersAdministrationComponent implements OnInit {
                                                                         this.data.splice(Number(i), 1);
                                                                     }
                                                                 }
-                                                                this.dataSource = new MatTableDataSource(this.data);
-                                                                this.dataSource.paginator = this.paginator;
-                                                                this.dataSource.sort = this.sort;
+                                                                this.setDatasource();
 
                                                                 if (this.quota.userQuota && user.status != 'SPD') {
                                                                     this.quota.actives--;
@@ -244,9 +255,7 @@ export class UsersAdministrationComponent implements OnInit {
                                                             this.data.splice(Number(i), 1);
                                                         }
                                                     }
-                                                    this.dataSource = new MatTableDataSource(this.data);
-                                                    this.dataSource.paginator = this.paginator;
-                                                    this.dataSource.sort = this.sort;
+                                                    this.setDatasource();
 
                                                     if (this.quota.userQuota && user.status == 'OK') {
                                                         this.quota.actives--;
@@ -297,9 +306,7 @@ export class UsersAdministrationComponent implements OnInit {
                                                                 this.data.splice(Number(i), 1);
                                                             }
                                                         }
-                                                        this.dataSource = new MatTableDataSource(this.data);
-                                                        this.dataSource.paginator = this.paginator;
-                                                        this.dataSource.sort = this.sort;
+                                                        this.setDatasource();
 
                                                         if (this.quota.userQuota && user.status == 'OK') {
                                                             this.quota.actives--;
@@ -346,9 +353,7 @@ export class UsersAdministrationComponent implements OnInit {
                                                     this.data.splice(Number(i), 1);
                                                 }
                                             }
-                                            this.dataSource = new MatTableDataSource(this.data);
-                                            this.dataSource.paginator = this.paginator;
-                                            this.dataSource.sort = this.sort;
+                                            this.setDatasource();
 
                                             if (this.quota.userQuota && user.status == 'OK') {
                                                 this.quota.actives--;
@@ -390,6 +395,16 @@ export class UsersAdministrationComponent implements OnInit {
             });
     }
 
+    toggleWebserviceAccount () {
+        this.withWebserviceAccount = !this.withWebserviceAccount;
+        if (this.withWebserviceAccount) {
+            this.data = this.webserviceAccounts;
+        } else {
+            this.data = this.noWebserviceAccounts;
+        }
+        this.setDatasource();
+    }
+
 }
 @Component({
     templateUrl: "users-administration-redirect-modal.component.html",
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index c4721ddfdff4fbecbdc01c46231298b60cd61851..514869bfe42442d8e6dc170fd1255d67edc22e57 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -1435,4 +1435,5 @@ export const LANG_EN = {
     "validateBy": "Validate by",
     "validateAvisParallel": "Your are validating an opinion request",
     "validateAvisParallelSingle": "Your are validating an opinion request of",
+    "displayWebserviceAccount": "Display webservice account",
 };
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 11006596cb7db615df99989b131959e74d07181b..79d0f0d6d3c677ccc4e4781c180a20adfddfc1d5 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1475,4 +1475,5 @@ export const LANG_FR = {
     "validateBy": "Validé par",
     "validateAvisParallel": "Vous allez valider des demandes d'avis",
     "validateAvisParallelSingle": "Vous allez valider la demande d'avis de",
+    "displayWebserviceAccount": "Afficher les comptes de webservice",
 };
diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts
index f2907e0ca606337b8b55ce537d3bef13973a662f..f2ccb637f88aa83d271b75e81cde3965581b2ce1 100755
--- a/src/frontend/lang/lang-nl.ts
+++ b/src/frontend/lang/lang-nl.ts
@@ -1460,4 +1460,5 @@ export const LANG_NL = {
     "validateBy": "Validate by", //_TO_TRANSLATE
     "validateAvisParallel": "Your are validating an opinion request", //_TO_TRANSLATE
     "validateAvisParallelSingle": "Your are validating an opinion request of", //_TO_TRANSLATE
+    "displayWebserviceAccount": "Display webservice account", //_TO_TRANSLATE
 };
diff --git a/test/unitTests/app/user/UserControllerTest.php b/test/unitTests/app/user/UserControllerTest.php
index bf70378369d54b719b65a4d50facc74b7c7a588d..0e85091ef2a163ef8d0cc654d55335b0c298ba8d 100755
--- a/test/unitTests/app/user/UserControllerTest.php
+++ b/test/unitTests/app/user/UserControllerTest.php
@@ -27,9 +27,19 @@ class UserControllerTest extends TestCase
         $response     = $userController->get($request, new \Slim\Http\Response());
         $responseBody = json_decode((string)$response->getBody());
 
-
         $this->assertInternalType('array', $responseBody->users);
         $this->assertNotEmpty($responseBody->users);
+
+        foreach ($responseBody->users as $value) {
+            $this->assertNotNull($value->id);
+            $this->assertInternalType('integer', $value->id);
+            $this->assertNotNull($value->user_id);
+            $this->assertNotNull($value->firstname);
+            $this->assertNotNull($value->lastname);
+            $this->assertNotNull($value->status);
+            $this->assertNotNull($value->mail);
+            $this->assertNotNull($value->loginmode);
+        }
     }
 
     public function testCreate()