diff --git a/apps/maarch_entreprise/js/functions.js b/apps/maarch_entreprise/js/functions.js
index 6373aa5f6a04e0995a30e3938b0826721168bfef..b23e59c88bed6b5b47c38f87fc4c7619c2998f22 100755
--- a/apps/maarch_entreprise/js/functions.js
+++ b/apps/maarch_entreprise/js/functions.js
@@ -1813,7 +1813,7 @@ function checkCommunication(contactId){
     }
 
     $j.ajax({
-        url      : '../../rest/contact/checkCommunication/'+contactId,
+        url      : '../../rest/contacts/' +contactId+ '/communication',
         type     : 'get',
         data: {
         },
diff --git a/core/Test/GroupControllerTest.php b/core/Test/GroupControllerTest.php
index a429d1afa3743a4e2ae4c949939b57098ba6c56c..d29e3a09681069d490f93da7c019e8f639145308 100644
--- a/core/Test/GroupControllerTest.php
+++ b/core/Test/GroupControllerTest.php
@@ -7,9 +7,9 @@
 *
 */
 
-namespace MaarchTest;
 use PHPUnit\Framework\TestCase;
 
+
 class GroupControllerTest extends TestCase
 {
     private static $id = null;
@@ -17,17 +17,17 @@ class GroupControllerTest extends TestCase
 
     public function testCreate()
     {
-        $groupController = new \Core\Controllers\GroupController();
+        $groupController = new \Group\controllers\GroupController();
 
         //  CREATE
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
         $request        = \Slim\Http\Request::createFromEnvironment($environment);
 
         $aArgs = [
-            'group_id'    => 'TEST-Justice League',
-            'group_desc' => 'Beyond the darkness',
-            'security'  => [
-                'where_clause'  => '1=2',
+            'group_id'      => 'TEST-JusticeLeague',
+            'group_desc'    => 'Beyond the darkness',
+            'security'      => [
+                'where_clause'      => '1=2',
                 'maarch_comment'    => 'commentateur du dimanche'
             ]
         ];
@@ -36,9 +36,9 @@ class GroupControllerTest extends TestCase
         $response     = $groupController->create($fullRequest, new \Slim\Http\Response());
         $responseBody = json_decode((string)$response->getBody());
 
-        self::$id = $responseBody->group->id . '';
+        self::$id = $responseBody->group . '';
 
-        $this->assertInternalType('int', $responseBody->group->id);
+        $this->assertInternalType('int', $responseBody->group);
 
         //  READ
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
@@ -46,7 +46,7 @@ class GroupControllerTest extends TestCase
         $response     = $groupController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
         $responseBody = json_decode((string)$response->getBody());
 
-        $this->assertSame('TEST-Justice League', $responseBody->group->group_id);
+        $this->assertSame('TEST-JusticeLeague', $responseBody->group->group_id);
         $this->assertSame('Beyond the darkness', $responseBody->group->group_desc);
         $this->assertSame('Y', $responseBody->group->enabled);
         $this->assertSame('1=2', $responseBody->group->security->where_clause);
@@ -57,7 +57,7 @@ class GroupControllerTest extends TestCase
 
     public function testUpdate()
     {
-        $groupController = new \Core\Controllers\GroupController();
+        $groupController = new \Group\controllers\GroupController();
 
         //  UPDATE
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
@@ -83,24 +83,27 @@ class GroupControllerTest extends TestCase
         $response     = $groupController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
         $responseBody = json_decode((string)$response->getBody());
 
-        $this->assertSame('TEST-Justice League', $responseBody->group->group_id);
+        $this->assertSame('TEST-JusticeLeague', $responseBody->group->group_id);
         $this->assertSame('Beyond the darkness #2', $responseBody->group->group_desc);
         $this->assertSame('Y', $responseBody->group->enabled);
         $this->assertSame('1=3', $responseBody->group->security->where_clause);
         $this->assertSame('commentateur du dimanche #2', $responseBody->group->security->maarch_comment);
         $this->assertSame(null, $responseBody->group->security->mr_start_date);
         $this->assertSame(null, $responseBody->group->security->mr_stop_date);
-
     }
 
     public function testDelete()
     {
-        $groupController = new \Core\Controllers\GroupController();
+        $groupController = new \Group\controllers\GroupController();
 
         //  DELETE
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
         $request        = \Slim\Http\Request::createFromEnvironment($environment);
         $response       = $groupController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody   = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->groups);
+        $this->assertNotEmpty($responseBody->groups);
 
         //  READ
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
@@ -108,7 +111,7 @@ class GroupControllerTest extends TestCase
         $response       = $groupController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
         $responseBody   = json_decode((string)$response->getBody());
 
-        $this->assertSame(null, $responseBody->id);
+        $this->assertSame('Group not found', $responseBody->errors);
     }
 
 }
diff --git a/core/Test/UserControllerTest.php b/core/Test/UserControllerTest.php
index 67f82b39b47814071a1019597e0c496cb3f2a9f8..3ff9100c46540c71cb0d8d8c5b52cd48a79d8243 100755
--- a/core/Test/UserControllerTest.php
+++ b/core/Test/UserControllerTest.php
@@ -15,6 +15,22 @@ class UserControllerTest extends TestCase
     private static $id = null;
 
 
+    public function testGet()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+
+        $response     = $userController->get($request, new \Slim\Http\Response());
+        $responseBody = json_decode((string)$response->getBody());
+
+
+        $this->assertInternalType('array', $responseBody->users);
+        $this->assertNotEmpty('array', $responseBody->users);
+    }
+
     public function testCreate()
     {
         $userController = new \User\controllers\UserController();
@@ -96,6 +112,261 @@ class UserControllerTest extends TestCase
         $this->assertSame(null, $responseBody->thumbprint);
     }
 
+    public function testAddGroup()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  CREATE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'groupId'   => 'AGENT',
+            'role'      => 'Douche'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->addGroup($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->groups);
+        $this->assertInternalType('array', $responseBody->baskets);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame(self::$id, $responseBody->id);
+        $this->assertInternalType('array', $responseBody->groups);
+        $this->assertSame('AGENT', $responseBody->groups[0]->group_id);
+        $this->assertSame('Douche', $responseBody->groups[0]->role);
+    }
+
+    public function testUpdateGroup()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  UPDATE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'role'      => 'role updated'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->updateGroup($fullRequest, new \Slim\Http\Response(), ['id' => self::$id, 'groupId' => 'AGENT']);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame('success', $responseBody->success);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame(self::$id, $responseBody->id);
+        $this->assertInternalType('array', $responseBody->groups);
+        $this->assertSame('AGENT', $responseBody->groups[0]->group_id);
+        $this->assertSame('role updated', $responseBody->groups[0]->role);
+    }
+
+    public function testDeleteGroup()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  DELETE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->deleteGroup($request, new \Slim\Http\Response(), ['id' => self::$id, 'groupId' => 'AGENT']);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->groups);
+        $this->assertEmpty($responseBody->groups);
+        $this->assertInternalType('array', $responseBody->baskets);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame(self::$id, $responseBody->id);
+        $this->assertInternalType('array', $responseBody->groups);
+        $this->assertEmpty($responseBody->groups);
+    }
+
+    public function testAddEntity()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  CREATE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'entityId'  => 'DGS',
+            'role'      => 'Warrior'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->addEntity($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->entities);
+        $this->assertInternalType('array', $responseBody->allEntities);
+
+        //  CREATE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'entityId'  => 'FIN',
+            'role'      => 'Hunter'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->addEntity($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->entities);
+        $this->assertInternalType('array', $responseBody->allEntities);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame(self::$id, $responseBody->id);
+        $this->assertInternalType('array', $responseBody->entities);
+        $this->assertSame('DGS', $responseBody->entities[0]->entity_id);
+        $this->assertSame('Warrior', $responseBody->entities[0]->user_role);
+        $this->assertSame('Y', $responseBody->entities[0]->primary_entity);
+        $this->assertSame('FIN', $responseBody->entities[1]->entity_id);
+        $this->assertSame('Hunter', $responseBody->entities[1]->user_role);
+        $this->assertSame('N', $responseBody->entities[1]->primary_entity);
+    }
+
+    public function testUpdateEntity()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  UPDATE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'user_role'      => 'Rogue'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->updateEntity($fullRequest, new \Slim\Http\Response(), ['id' => self::$id, 'entityId' => 'DGS']);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame('success', $responseBody->success);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame(self::$id, $responseBody->id);
+        $this->assertInternalType('array', $responseBody->entities);
+        $this->assertSame('DGS', $responseBody->entities[0]->entity_id);
+        $this->assertSame('Rogue', $responseBody->entities[0]->user_role);
+        $this->assertSame('Y', $responseBody->entities[0]->primary_entity);
+    }
+
+    public function testUpdatePrimaryEntity()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  UPDATE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+
+        $response     = $userController->updatePrimaryEntity($request, new \Slim\Http\Response(), ['id' => self::$id, 'entityId' => 'FIN']);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->entities);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame(self::$id, $responseBody->id);
+        $this->assertInternalType('array', $responseBody->entities);
+        $this->assertSame('FIN', $responseBody->entities[0]->entity_id);
+        $this->assertSame('Hunter', $responseBody->entities[0]->user_role);
+        $this->assertSame('Y', $responseBody->entities[0]->primary_entity);
+        $this->assertSame('DGS', $responseBody->entities[1]->entity_id);
+        $this->assertSame('Rogue', $responseBody->entities[1]->user_role);
+        $this->assertSame('N', $responseBody->entities[1]->primary_entity);
+    }
+
+    public function testDeleteEntity()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  DELETE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->deleteEntity($request, new \Slim\Http\Response(), ['id' => self::$id, 'entityId' => 'FIN']);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->entities);
+        $this->assertInternalType('array', $responseBody->allEntities);
+
+        //  DELETE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'DELETE']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->deleteEntity($request, new \Slim\Http\Response(), ['id' => self::$id, 'entityId' => 'DGS']);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertInternalType('array', $responseBody->entities);
+        $this->assertEmpty($responseBody->entities);
+        $this->assertInternalType('array', $responseBody->allEntities);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame(self::$id, $responseBody->id);
+        $this->assertInternalType('array', $responseBody->entities);
+        $this->assertEmpty($responseBody->entities);
+    }
+
+    public function testUpdateStatus()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  UPDATE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'status'    => 'ABS'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->updateStatus($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame('ABS', $responseBody->user->status);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getDetailledById($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame(self::$id, $responseBody->id);
+        $this->assertSame('ABS', $responseBody->status);
+    }
+
     public function testRead()
     {
         $userController = new \User\controllers\UserController();
@@ -109,7 +380,7 @@ class UserControllerTest extends TestCase
             'param_value_int'       => 0
         ];
         $fullRequest    = \httpRequestCustom::addContentInBody($aArgs, $request);
-        $response       = $parameterController->update($fullRequest, new \Slim\Http\Response(), ['id' => 'user_quota']);
+        $parameterController->update($fullRequest, new \Slim\Http\Response(), ['id' => 'user_quota']);
 
         // READ in case of deactivated user_quota
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
@@ -129,7 +400,7 @@ class UserControllerTest extends TestCase
             'param_value_int'       => 20
         ];
         $fullRequest    = \httpRequestCustom::addContentInBody($aArgs, $request);
-        $response       = $parameterController->update($fullRequest, new \Slim\Http\Response(), ['id' => 'user_quota']);
+        $parameterController->update($fullRequest, new \Slim\Http\Response(), ['id' => 'user_quota']);
 
         // READ in case of enabled user_quotat
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
@@ -217,7 +488,7 @@ class UserControllerTest extends TestCase
             'param_value_int'       => 0
         ];
         $fullRequest    = \httpRequestCustom::addContentInBody($aArgs, $request);
-        $response       = $parameterController->update($fullRequest, new \Slim\Http\Response(), ['id' => 'user_quota']);
+        $parameterController->update($fullRequest, new \Slim\Http\Response(), ['id' => 'user_quota']);
     }
 
     public function testDelete()
@@ -257,4 +528,94 @@ class UserControllerTest extends TestCase
         ]);
     }
 
+    public function testPasswordManagement()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  UPDATE PASSWORD
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'currentPassword'   => 'superadmin',
+            'newPassword'       => 'hcraam',
+            'reNewPassword'     => 'hcraam'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->updateCurrentUserPassword($fullRequest, new \Slim\Http\Response());
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame('success', $responseBody->success);
+
+        $checkPassword = \SrcCore\models\SecurityModel::authentication(['userId' => $GLOBALS['userId'], 'password' => 'hcraam']);
+
+        $this->assertSame(true, $checkPassword);
+
+        //  RESET PASSWORD
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $user = \User\models\UserModel::getByUserId(['userId' => $GLOBALS['userId'], 'select' => ['id']]);
+        $response     = $userController->resetPassword($fullRequest, new \Slim\Http\Response(), ['id' => $user['id']]);
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame('success', $responseBody->success);
+
+        $checkPassword = \SrcCore\models\SecurityModel::authentication(['userId' => $GLOBALS['userId'], 'password' => 'maarch']);
+
+        $this->assertSame(true, $checkPassword);
+
+        //  UPDATE PASSWORD
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'currentPassword'   => 'maarch',
+            'newPassword'       => 'superadmin',
+            'reNewPassword'     => 'superadmin'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->updateCurrentUserPassword($fullRequest, new \Slim\Http\Response());
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame('success', $responseBody->success);
+
+        $checkPassword = \SrcCore\models\SecurityModel::authentication(['userId' => $GLOBALS['userId'], 'password' => 'superadmin']);
+
+        $this->assertSame(true, $checkPassword);
+    }
+
+    public function testUpdateProfile()
+    {
+        $userController = new \User\controllers\UserController();
+
+        //  UPDATE
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $aArgs = [
+            'firstname' => 'Wonder',
+            'lastname'  => 'User',
+            'mail'      => 'dev@maarch.org',
+            'initials'  => 'SU'
+        ];
+        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
+
+        $response     = $userController->updateProfile($fullRequest, new \Slim\Http\Response());
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame('success', $responseBody->success);
+
+        //  READ
+        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
+        $request        = \Slim\Http\Request::createFromEnvironment($environment);
+        $response     = $userController->getProfile($request, new \Slim\Http\Response());
+        $responseBody = json_decode((string)$response->getBody());
+
+        $this->assertSame('superadmin', $responseBody->user_id);
+        $this->assertSame('Wonder', $responseBody->firstname);
+        $this->assertSame('dev@maarch.org', $responseBody->mail);
+        $this->assertSame('SU', $responseBody->initials);
+    }
 }
diff --git a/modules/sendmail/Controllers/ReceiveMessageExchangeController.php b/modules/sendmail/Controllers/ReceiveMessageExchangeController.php
index 2baddb775294501715dc2765bc6cb8c9c9c46816..a01f08ce3078817d94ace1f6d6566e63ef2d88f9 100644
--- a/modules/sendmail/Controllers/ReceiveMessageExchangeController.php
+++ b/modules/sendmail/Controllers/ReceiveMessageExchangeController.php
@@ -122,7 +122,7 @@ class ReceiveMessageExchangeController
         if (!empty($userBaskets)) {
             foreach ($userBaskets as $value) {
                 if ($value['basket_id'] == $aDefaultConfig['basketRedirection_afterUpload'][0]) {
-                    $userGroups = UserModel::getGroupsById(['userId' => $_SESSION['user']['UserId']]);
+                    $userGroups = UserModel::getGroupsByUserId(['userId' => $_SESSION['user']['UserId']]);
                     foreach ($userGroups as $userGroupValue) {
                         if ($userGroupValue['primary_group'] == 'Y') {
                             $userPrimaryGroup = $userGroupValue['group_id'];
diff --git a/phpunit.xml b/phpunit.xml
index 281e809637d11d65b3a08fbb1b42bafa9a373f37..4ecffe5187b8d6b52160a6927434a5ef5d940f61 100755
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -8,6 +8,7 @@
             <file>core/Test/ContactControllerTest.php</file>
             <file>core/Test/DoctypeControllerTest.php</file>
             <file>core/Test/EntityControllerTest.php</file>
+            <file>core/Test/GroupControllerTest.php</file>
             <file>core/Test/ListTemplateControllerTest.php</file>
             <file>core/Test/NotificationControllerTest.php</file>
             <file>core/Test/NotificationScheduleControllerTest.php</file>
@@ -17,7 +18,6 @@
             <file>core/Test/ResControllerTest.php</file>
             <file>core/Test/StatusControllerTest.php</file>
             <file>core/Test/UserControllerTest.php</file>
-            <!-- <file>core/Test/GroupControllerTest.php</file> -->
             <file>modules/convert/Test/ProcessConvertTest.php</file>
             <file>modules/convert/Test/ProcessFulltextTest.php</file>
             <file>modules/convert/Test/ProcessManageConvertTest.php</file>
diff --git a/rest/index.php b/rest/index.php
index 198d8970d83763f9902568c715cefe8289741ff5..28b575a6ff0bb4034688f4dfc1e240c1a94c0973 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -141,14 +141,45 @@ $app->get('/baskets/{id}/groups/data', \Basket\controllers\BasketController::cla
 $app->get('/sortedBaskets', \Basket\controllers\BasketController::class . ':getSorted');
 $app->put('/sortedBaskets/{id}', \Basket\controllers\BasketController::class . ':updateSort');
 
-//statuses
-$app->get('/statuses', \Status\controllers\StatusController::class . ':get');
-$app->post('/statuses', \Status\controllers\StatusController::class . ':create');
-$app->get('/statuses/{identifier}', \Status\controllers\StatusController::class . ':getByIdentifier');
-$app->get('/status/{id}', \Status\controllers\StatusController::class . ':getById');
-$app->put('/statuses/{identifier}', \Status\controllers\StatusController::class . ':update');
-$app->delete('/statuses/{identifier}', \Status\controllers\StatusController::class . ':delete');
-$app->get('/administration/statuses/new', \Status\controllers\StatusController::class . ':getNewInformations');
+//Contacts
+$app->post('/contacts', \Contact\controllers\ContactController::class . ':create');
+$app->get('/contacts/{contactId}/communication', \Contact\controllers\ContactController::class . ':getCommunicationByContactId');
+
+//Docservers
+$app->get('/docservers', \Docserver\controllers\DocserverController::class . ':get');
+$app->get('/docservers/{id}', \Docserver\controllers\DocserverController::class . ':getById');
+
+//DocserverTypes
+$app->get('/docserverTypes', \Docserver\controllers\DocserverTypeController::class . ':get');
+$app->get('/docserverTypes/{id}', \Docserver\controllers\DocserverTypeController::class . ':getById');
+
+//doctypes
+$app->get('/doctypes', \Doctype\controllers\FirstLevelController::class . ':getTree');
+$app->post('/doctypes/firstLevel', \Doctype\controllers\FirstLevelController::class . ':create');
+$app->get('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':getById');
+$app->put('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':update');
+$app->delete('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':delete');
+$app->post('/doctypes/secondLevel', \Doctype\controllers\SecondLevelController::class . ':create');
+$app->get('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':getById');
+$app->put('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':update');
+$app->delete('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':delete');
+$app->post('/doctypes/types', \Doctype\controllers\DoctypeController::class . ':create');
+$app->get('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':getById');
+$app->put('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':update');
+$app->delete('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':delete');
+$app->put('/doctypes/types/{id}/redirect', \Doctype\controllers\DoctypeController::class . ':deleteRedirect');
+$app->get('/administration/doctypes/new', \Doctype\controllers\FirstLevelController::class . ':initDoctypes');
+
+//Entities
+$app->get('/entities', \Entity\controllers\EntityController::class . ':get');
+$app->post('/entities', \Entity\controllers\EntityController::class . ':create');
+$app->get('/entities/{id}', \Entity\controllers\EntityController::class . ':getById');
+$app->put('/entities/{id}', \Entity\controllers\EntityController::class . ':update');
+$app->delete('/entities/{id}', \Entity\controllers\EntityController::class . ':delete');
+$app->get('/entities/{id}/details', \Entity\controllers\EntityController::class . ':getDetailledById');
+$app->put('/entities/{id}/reassign/{newEntityId}', \Entity\controllers\EntityController::class . ':reassignEntity');
+$app->put('/entities/{id}/status', \Entity\controllers\EntityController::class . ':updateStatus');
+$app->get('/entityTypes', \Entity\controllers\EntityController::class . ':getTypes');
 
 //Groups
 $app->get('/groups', \Group\controllers\GroupController::class . ':get');
@@ -160,13 +191,60 @@ $app->get('/groups/{id}/details', \Group\controllers\GroupController::class . ':
 $app->put('/groups/{id}/services/{serviceId}', \Group\controllers\GroupController::class . ':updateService');
 $app->put('/groups/{id}/reassign/{newGroupId}', \Group\controllers\GroupController::class . ':reassignUsers');
 
-//Docservers
-$app->get('/docservers', \Docserver\controllers\DocserverController::class . ':get');
-$app->get('/docservers/{id}', \Docserver\controllers\DocserverController::class . ':getById');
+//Links
+$app->get('/links/resId/{resId}', \Link\controllers\LinkController::class . ':getByResId');
 
-//DocserverTypes
-$app->get('/docserverTypes', \Docserver\controllers\DocserverTypeController::class . ':get');
-$app->get('/docserverTypes/{id}', \Docserver\controllers\DocserverTypeController::class . ':getById');
+//Listinstance
+$app->get('/listinstance/{id}', \Entity\controllers\ListInstanceController::class . ':getById');
+
+//ListTemplates
+$app->get('/listTemplates', \Entity\controllers\ListTemplateController::class . ':get');
+$app->post('/listTemplates', \Entity\controllers\ListTemplateController::class . ':create');
+$app->get('/listTemplates/{id}', \Entity\controllers\ListTemplateController::class . ':getById');
+$app->put('/listTemplates/{id}', \Entity\controllers\ListTemplateController::class . ':update');
+$app->delete('/listTemplates/{id}', \Entity\controllers\ListTemplateController::class . ':delete');
+$app->get('/listTemplates/entityDest/itemId/{itemId}', \Entity\controllers\ListTemplateController::class . ':getByUserWithEntityDest');
+$app->put('/listTemplates/entityDest/itemId/{itemId}', \Entity\controllers\ListTemplateController::class . ':updateByUserWithEntityDest');
+$app->put('/listTemplates/types/roles', \Entity\controllers\ListTemplateController::class . ':updateTypes');
+
+//Parameters
+$app->get('/parameters', \Parameter\controllers\ParameterController::class . ':get');
+$app->post('/parameters', \Parameter\controllers\ParameterController::class . ':create');
+$app->get('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':getById');
+$app->put('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':update');
+$app->delete('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':delete');
+
+//Priorities
+$app->get('/priorities', \Priority\controllers\PriorityController::class . ':get');
+$app->post('/priorities', \Priority\controllers\PriorityController::class . ':create');
+$app->get('/priorities/{id}', \Priority\controllers\PriorityController::class . ':getById');
+$app->put('/priorities/{id}', \Priority\controllers\PriorityController::class . ':update');
+$app->delete('/priorities/{id}', \Priority\controllers\PriorityController::class . ':delete');
+
+//Reports
+$app->get('/reports/groups', \Report\controllers\ReportController::class . ':getGroups');
+$app->get('/reports/groups/{groupId}', \Report\controllers\ReportController::class . ':getByGroupId');
+$app->put('/reports/groups/{groupId}', \Report\controllers\ReportController::class . ':updateForGroupId');
+
+//Ressources
+$app->post('/res', \Resource\controllers\ResController::class . ':create');
+$app->post('/resExt', \Resource\controllers\ResController::class . ':createExt');
+$app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus');
+$app->post('/res/list', \Resource\controllers\ResController::class . ':getList');
+$app->get('/res/{resId}/lock', \Resource\controllers\ResController::class . ':isLock');
+$app->get('/res/{resId}/notes/count', \Resource\controllers\ResController::class . ':getNotesCountForCurrentUserById');
+
+//statuses
+$app->get('/statuses', \Status\controllers\StatusController::class . ':get');
+$app->post('/statuses', \Status\controllers\StatusController::class . ':create');
+$app->get('/statuses/{identifier}', \Status\controllers\StatusController::class . ':getByIdentifier');
+$app->get('/status/{id}', \Status\controllers\StatusController::class . ':getById');
+$app->put('/statuses/{identifier}', \Status\controllers\StatusController::class . ':update');
+$app->delete('/statuses/{identifier}', \Status\controllers\StatusController::class . ':delete');
+$app->get('/administration/statuses/new', \Status\controllers\StatusController::class . ':getNewInformations');
+
+//Templates
+$app->post('/templates/{id}/duplicate', \Template\controllers\TemplateController::class . ':duplicate');
 
 //Visa
 $app->get('/{basketId}/signatureBook/resList', \Visa\Controllers\VisaController::class . ':getResList');
@@ -177,14 +255,6 @@ $app->get('/signatureBook/{resId}/incomingMailAttachments', \Visa\Controllers\Vi
 $app->put('/{collId}/{resId}/unsign', \Visa\Controllers\VisaController::class . ':unsignFile');
 $app->put('/attachments/{id}/inSignatureBook', \Attachment\controllers\AttachmentController::class . ':setInSignatureBook');
 
-//Res
-$app->post('/res', \Resource\controllers\ResController::class . ':create');
-$app->post('/resExt', \Resource\controllers\ResController::class . ':createExt');
-$app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus');
-$app->post('/res/list', \Resource\controllers\ResController::class . ':getList');
-$app->get('/res/{resId}/lock', \Resource\controllers\ResController::class . ':isLock');
-$app->get('/res/{resId}/notes/count', \Resource\controllers\ResController::class . ':getNotesCountForCurrentUserById');
-
 //Users
 $app->get('/users', \User\controllers\UserController::class . ':get');
 $app->post('/users', \User\controllers\UserController::class . ':create');
@@ -216,41 +286,6 @@ $app->put('/currentUser/emailSignature/{id}', \User\controllers\UserController::
 $app->delete('/currentUser/emailSignature/{id}', \User\controllers\UserController::class . ':deleteCurrentUserEmailSignature');
 $app->put('/currentUser/groups/{groupId}/baskets/{basketId}', \User\controllers\UserController::class . ':updateBasketPreference');
 
-//Entities
-$app->get('/entities', \Entity\controllers\EntityController::class . ':get');
-$app->post('/entities', \Entity\controllers\EntityController::class . ':create');
-$app->get('/entities/{id}', \Entity\controllers\EntityController::class . ':getById');
-$app->put('/entities/{id}', \Entity\controllers\EntityController::class . ':update');
-$app->delete('/entities/{id}', \Entity\controllers\EntityController::class . ':delete');
-$app->get('/entities/{id}/details', \Entity\controllers\EntityController::class . ':getDetailledById');
-$app->put('/entities/{id}/reassign/{newEntityId}', \Entity\controllers\EntityController::class . ':reassignEntity');
-$app->put('/entities/{id}/status', \Entity\controllers\EntityController::class . ':updateStatus');
-$app->get('/entityTypes', \Entity\controllers\EntityController::class . ':getTypes');
-
-//ListTemplates
-$app->get('/listTemplates', \Entity\controllers\ListTemplateController::class . ':get');
-$app->post('/listTemplates', \Entity\controllers\ListTemplateController::class . ':create');
-$app->get('/listTemplates/{id}', \Entity\controllers\ListTemplateController::class . ':getById');
-$app->put('/listTemplates/{id}', \Entity\controllers\ListTemplateController::class . ':update');
-$app->delete('/listTemplates/{id}', \Entity\controllers\ListTemplateController::class . ':delete');
-$app->get('/listTemplates/entityDest/itemId/{itemId}', \Entity\controllers\ListTemplateController::class . ':getByUserWithEntityDest');
-$app->put('/listTemplates/entityDest/itemId/{itemId}', \Entity\controllers\ListTemplateController::class . ':updateByUserWithEntityDest');
-$app->put('/listTemplates/types/roles', \Entity\controllers\ListTemplateController::class . ':updateTypes');
-
-//Parameters
-$app->get('/parameters', \Parameter\controllers\ParameterController::class . ':get');
-$app->post('/parameters', \Parameter\controllers\ParameterController::class . ':create');
-$app->get('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':getById');
-$app->put('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':update');
-$app->delete('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':delete');
-
-//Priorities
-$app->get('/priorities', \Priority\controllers\PriorityController::class . ':get');
-$app->post('/priorities', \Priority\controllers\PriorityController::class . ':create');
-$app->get('/priorities/{id}', \Priority\controllers\PriorityController::class . ':getById');
-$app->put('/priorities/{id}', \Priority\controllers\PriorityController::class . ':update');
-$app->delete('/priorities/{id}', \Priority\controllers\PriorityController::class . ':delete');
-
 //History
 $app->get('/administration/history/eventDate/{date}', \History\controllers\HistoryController::class . ':get'); //TODO No date
 $app->get('/histories/users/{userSerialId}', \History\controllers\HistoryController::class . ':getByUserId');
@@ -269,42 +304,4 @@ $app->get('/administration/notifications/new', \Notification\controllers\Notific
 $app->get('/notifications/{id}', \Notification\controllers\NotificationController::class . ':getBySid');
 $app->post('/scriptNotification', \Notification\controllers\NotificationScheduleController::class . ':createScriptNotification');
 
-//Doctypes
-$app->get('/doctypes', \Doctype\controllers\FirstLevelController::class . ':getTree');
-
-$app->post('/doctypes/firstLevel', \Doctype\controllers\FirstLevelController::class . ':create');
-$app->get('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':getById');
-$app->put('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':update');
-$app->delete('/doctypes/firstLevel/{id}', \Doctype\controllers\FirstLevelController::class . ':delete');
-$app->get('/administration/doctypes/new', \Doctype\controllers\FirstLevelController::class . ':initDoctypes');
-
-$app->post('/doctypes/secondLevel', \Doctype\controllers\SecondLevelController::class . ':create');
-$app->get('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':getById');
-$app->put('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':update');
-$app->delete('/doctypes/secondLevel/{id}', \Doctype\controllers\SecondLevelController::class . ':delete');
-
-$app->post('/doctypes/types', \Doctype\controllers\DoctypeController::class . ':create');
-$app->get('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':getById');
-$app->put('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':update');
-$app->delete('/doctypes/types/{id}', \Doctype\controllers\DoctypeController::class . ':delete');
-$app->put('/doctypes/types/{id}/redirect', \Doctype\controllers\DoctypeController::class . ':deleteRedirect');
-
-//Reports
-$app->get('/reports/groups', \Report\controllers\ReportController::class . ':getGroups');
-$app->get('/reports/groups/{groupId}', \Report\controllers\ReportController::class . ':getByGroupId');
-$app->put('/reports/groups/{groupId}', \Report\controllers\ReportController::class . ':updateForGroupId');
-
-//Listinstance
-$app->get('/listinstance/{id}', \Entity\controllers\ListInstanceController::class . ':getById');
-
-//Contacts
-$app->post('/contacts', \Contact\controllers\ContactController::class . ':create');
-$app->get('/contact/checkCommunication/{contactId}', \Contact\controllers\ContactController::class . ':getCheckCommunication');
-
-//Templates
-$app->post('/templates/{id}/duplicate', \Template\controllers\TemplateController::class . ':duplicate');
-
-//Links
-$app->get('/links/resId/{resId}', \Link\controllers\LinkController::class . ':getByResId');
-
 $app->run();
diff --git a/sql/data_fr.sql b/sql/data_fr.sql
index 2043dae9389cc72d9925c87e031b60a92b16f1de..0aacb7a0492ce1d92f1f67319abe380edabaf2e1 100755
--- a/sql/data_fr.sql
+++ b/sql/data_fr.sql
@@ -1140,6 +1140,7 @@ INSERT INTO parameters (id, param_value_string, param_value_int, param_value_dat
 INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('work_batch_autoimport_id', NULL, 1, NULL);
 INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('postindexing_workbatch', NULL, 1, NULL);
 INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('database_version', '17.06.2', 1706, NULL);
+INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('user_quota', '', 0, NULL);
 ------------
 --DIFFLIST_TYPES
 ------------
diff --git a/sql/develop.sql b/sql/develop.sql
index 6214b6327ff21f30df2d9640ecf464bc2b1f70e4..a323e5e82710bd81a5266bd94a786a3bac1e5c5d 100755
--- a/sql/develop.sql
+++ b/sql/develop.sql
@@ -721,4 +721,7 @@ VALUES ('ARCHIVETRANSFER', 'Archive Transfer', 'Y', 'N', 0, 'N', 'NONE', 'N', 'N
 ALTER TABLE sendmail ALTER COLUMN res_id DROP NOT NULL;
 
 ALTER TABLE notifications DROP COLUMN IF EXISTS rss_url_template;
-UPDATE notifications SET event_id = 'baskets' WHERE notification_id = 'BASKETS';
\ No newline at end of file
+UPDATE notifications SET event_id = 'baskets' WHERE notification_id = 'BASKETS';
+
+DELETE FROM parameters where id = 'user_quota';
+INSERT INTO parameters (id, param_value_string, param_value_int, param_value_date) VALUES ('user_quota', '', 0, NULL);
\ No newline at end of file
diff --git a/src/app/contact/controllers/ContactController.php b/src/app/contact/controllers/ContactController.php
index fe5ac8d8f8fb346ee5b108413dfc80374c39752d..0c913ffa6e10c99ce52621607b2b2e7a375e7355 100644
--- a/src/app/contact/controllers/ContactController.php
+++ b/src/app/contact/controllers/ContactController.php
@@ -72,18 +72,12 @@ class ContactController
         return $response->withJson(['contactId' => $contactId, 'addressId' => $addressId]);
     }
 
-    public function getCheckCommunication(Request $request, Response $response, $aArgs)
+    public function getCommunicationByContactId(Request $request, Response $response, array $aArgs)
     {
-        if (!empty($aArgs['contactId'])) {
-            $obj = ContactModel::getCommunicationByContactId([
-                'contactId' => $aArgs['contactId']
-            ]);
-        } else {
-            return $response
-                ->withStatus(500)
-                ->withJson(['errors' => _ID . ' ' . _IS_EMPTY]);
-        }
+        $contact = ContactModel::getCommunicationByContactId([
+            'contactId' => $aArgs['contactId']
+        ]);
 
-        return $response->withJson([$obj]);
+        return $response->withJson([$contact]);
     }
 }
diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index a435a2c3bae4a277b9af2cd6ac1c1b93c15e943d..e7c44bd3e0a31213a5b64723e987a1852ba30b7e 100644
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -533,18 +533,12 @@ class UserController
 
     public function deleteCurrentUserEmailSignature(Request $request, Response $response, array $aArgs)
     {
-        $r = UserModel::deleteEmailSignature([
+        UserModel::deleteEmailSignature([
             'id'        => $aArgs['id'],
             'userId'    => $GLOBALS['userId']
         ]);
 
-        if (!$r) {
-            return $response->withStatus(500)->withJson(['errors' => 'Email Signature Delete Error']);
-        }
-
-        return $response->withJson([
-            'emailSignatures' => UserModel::getEmailSignaturesById(['userId' => $GLOBALS['userId']])
-        ]);
+        return $response->withJson(['emailSignatures' => UserModel::getEmailSignaturesById(['userId' => $GLOBALS['userId']])]);
     }
 
     public function addGroup(Request $request, Response $response, array $aArgs)
@@ -592,7 +586,6 @@ class UserController
 
         return $response->withJson([
             'groups'    => UserModel::getGroupsByUserId(['userId' => $user['user_id']]),
-            'allGroups' => GroupModel::getAvailableGroupsByUserId(['userId' => $user['user_id']]),
             'baskets'   => BasketModel::getBasketsByUserId(['userId' => $user['user_id']])
         ]);
     }
@@ -657,7 +650,6 @@ class UserController
 
         return $response->withJson([
             'groups'    => UserModel::getGroupsByUserId(['userId' => $user['user_id']]),
-            'allGroups' => GroupModel::getAvailableGroupsByUserId(['userId' => $user['user_id']]),
             'baskets'   => BasketModel::getBasketsByUserId(['userId' => $user['user_id']])
         ]);
     }
diff --git a/src/app/user/models/UserModelAbstract.php b/src/app/user/models/UserModelAbstract.php
index 2d111b14a2893d90a97a6dba88bc65bfb488e595..3e3b2ba01656f8114c9db80835c918afdcb32aa2 100644
--- a/src/app/user/models/UserModelAbstract.php
+++ b/src/app/user/models/UserModelAbstract.php
@@ -160,21 +160,6 @@ class UserModelAbstract
         return $aUser;
     }
 
-    public static function getGroupsById(array $aArgs = [])
-    {
-        ValidatorModel::notEmpty($aArgs, ['userId']);
-        ValidatorModel::stringType($aArgs, ['userId']);
-
-        $aGroups = DatabaseModel::select([
-            'select'    => ['usergroup_content.group_id', 'usergroups.group_desc', 'usergroup_content.primary_group'],
-            'table'     => ['usergroup_content, usergroups'],
-            'where'     => ['usergroup_content.group_id = usergroups.group_id', 'usergroup_content.user_id = ?'],
-            'data'      => [$aArgs['userId']]
-        ]);
-
-        return $aGroups;
-    }
-
     public static function updatePassword(array $aArgs = [])
     {
         ValidatorModel::notEmpty($aArgs, ['id', 'password']);
@@ -443,26 +428,6 @@ class UserModelAbstract
         return $aReturn[0]['process_comment'];
     }
 
-    public static function getPrimaryGroupById(array $aArgs = [])
-    {
-        ValidatorModel::notEmpty($aArgs, ['userId']);
-        ValidatorModel::stringType($aArgs, ['userId']);
-
-
-        $aGroup = DatabaseModel::select([
-            'select'    => ['usergroup_content.group_id', 'usergroups.group_desc'],
-            'table'     => ['usergroup_content, usergroups'],
-            'where'     => ['usergroup_content.group_id = usergroups.group_id', 'usergroup_content.user_id = ?', 'usergroup_content.primary_group = ?'],
-            'data'      => [$aArgs['userId'], 'Y']
-        ]);
-
-        if (empty($aGroup[0])) {
-            return [];
-        }
-
-        return $aGroup[0];
-    }
-
     public static function getPrimaryEntityByUserId(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['userId']);
@@ -497,7 +462,7 @@ class UserModelAbstract
         return $aGroups;
     }
 
-    public static function getEntitiesById(array $aArgs = [])
+    public static function getEntitiesById(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['userId']);
         ValidatorModel::stringType($aArgs, ['userId']);