diff --git a/composer.json b/composer.json
index 5ab93742a539714941ae642e5b3a36f4e5ad2de4..0ba5e310b4024cd23d4313222f3e807b87036ca7 100755
--- a/composer.json
+++ b/composer.json
@@ -5,6 +5,7 @@
             "Basket\\"        : "src/app/basket/",
             "Contact\\"       : "src/app/contact/",
             "History\\"       : "src/app/history/",
+            "Parameter\\"     : "src/app/parameter/",
             "Priority\\"      : "src/app/priority/",
             "Resource\\"      : "src/app/resource/",
             "Status\\"        : "src/app/status/",
diff --git a/core/Controllers/ParametersController.php b/core/Controllers/ParametersController.php
deleted file mode 100755
index 41b92d8e6fe1c671e946e2a37c2e1eb37de4b1fd..0000000000000000000000000000000000000000
--- a/core/Controllers/ParametersController.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/**
-* Copyright Maarch since 2008 under licence GPLv3.
-* See LICENCE.txt file at the root folder for more details.
-* This file is part of Maarch software.
-
-* @brief   ParametersController
-* @author  dev <dev@maarch.org>
-* @ingroup core
-*/
-
-namespace Core\Controllers;
-
-use Core\Models\ParameterModel;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
-use Respect\Validation\Validator;
-
-class ParametersController
-{
-    public function getParametersForAdministration(RequestInterface $request, ResponseInterface $response)
-    {
-        $obj = [
-                'parametersList'    =>  ParameterModel::getList(),
-                'lang'              =>  ParameterModel::getParametersLang()
-        ];
-        return $response->withJson($obj);
-    }
-
-    public function getParameterForAdministration(RequestInterface $request, ResponseInterface $response, $aArgs)
-    {
-        $obj['parameter'] = ParameterModel::getById(['id' => $aArgs['id']]);
-        
-        if (empty($obj)) {
-            return $response->withStatus(400)->withJson(['errors' => 'User not found']);
-        }
-
-        if ($obj['parameter']['param_value_date']) {
-            $obj['type'] = 'date';
-        } else if ($obj['parameter']['param_value_int']) {
-            $obj['type'] = 'int';
-        } else {
-            $obj['type'] = 'string';
-        }
-
-        $obj['lang'] = ParameterModel::getParametersLang();
-
-        return $response->withJson($obj);
-    }
-
-    public function getNewParameterForAdministration(RequestInterface $request, ResponseInterface $response)
-    {
-        $obj['lang'] = ParameterModel::getParametersLang();
-        return $response->withJson($obj);
-    }
-
-    public function getById(RequestInterface $request, ResponseInterface $response, $aArgs)
-    {
-        $obj = ParameterModel::getById(['id' => $aArgs['id']]);
-        return $response->withJson($obj);
-    }
-    public function create(RequestInterface $request, ResponseInterface $response)
-    {
-        $errors = $this->control($request, 'create');
-
-        if (!empty($errors)) {
-            return $response
-                ->withStatus(500)
-                ->withJson(['errors' => $errors]);
-        }
-        
-        $datas = $request->getParams();
-
-        $return = ParameterModel::create($datas);
-
-        if ($return) {
-            $obj = ParameterModel::getById(['id' => $datas['id']]);
-        } else {
-            return $response
-                ->withStatus(500)
-                ->withJson(['errors' => _NOT_CREATE]);
-        }
-
-        return $response->withJson(
-            [
-            'success'   =>  _PARAMETER. ' <b>' . $obj['id'] .'</b> ' ._ADDED
-            ]
-        );
-    }
-
-    public function update(RequestInterface $request, ResponseInterface $response, $aArgs)
-    {
-        $errors = $this->control($request, 'update');
-
-        if (!empty($errors)) {
-            return $response
-                ->withStatus(500)
-                ->withJson(['errors' => $errors]);
-        }
-
-        $aArgs = $request->getParams();
-        $return = ParameterModel::update($aArgs);
-
-        if ($return) {
-            $obj = ParameterModel::getById(['id' => $aArgs['id']]);
-        } else {
-            return $response
-                ->withStatus(500)
-                ->withJson(['errors' => _NOT_UPDATE]);
-        }
-
-        return $response->withJson(
-            [
-            'success'   =>  _PARAMETER. ' <b>' . $aArgs['id'] .'</b> ' ._UPDATED,
-            ]
-        );
-    }
-
-    public function delete(RequestInterface $request, ResponseInterface $response, $aArgs)
-    {
-        $obj = ParameterModel::delete(['id' => $aArgs['id']]);
-        return $response->withJson(
-            [
-            'success'   =>  _PARAMETER. ' <b>' . $aArgs['id'] .'</b> ' ._DELETED,
-            'parameters'    =>  ParameterModel::getList()
-            ]
-        );
-    }
-
-    protected function control($request, $mode)
-    {
-        $errors = [];
-
-        if ($mode == 'update') {
-            $obj = ParameterModel::getById(
-                [
-                'id' => $request->getParam('id'),
-                'param_value_int' => $request->getParam('param_value_int')
-                ]
-            );
-            if (empty($obj)) {
-                array_push($errors, _ID . ' '. _NOT_EXISTS);
-            }
-        }
-        if (!Validator::notEmpty()->validate($request->getParam('id'))) {
-            array_push($errors, _ID_IS_EMPTY_CONTROLLER);
-        } elseif ($mode == 'create') {
-            if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('id'))) {
-                array_push($errors, _INVALID_ID);
-            }
-            if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('description'))&&$request->getParam('description')!=null) {
-                array_push($errors, _INVALID_DESCRIPTION);
-            }
-            if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('param_value_string'))&&$request->getParam('param_value_string')!=null) {
-                array_push($errors, _INVALID_STRING);
-            }
-            if (!Validator::regex('/^[0-9]*$/')->validate($request->getParam('param_value_int')) && $request->getParam('param_value_int')!=null) {
-                array_push($errors, _INVALID_INTEGER);
-            }
-            $obj = ParameterModel::getById(['id' => $request->getParam('id')]);
-            if (!empty($obj)) {
-                array_push($errors, _ID . ' ' . $obj[0]['id'] . ' ' . _ALREADY_EXISTS);
-            }
-        }
-        if ($request->getParam('param_value_date')!=null) {
-            if (date('d-m-Y', strtotime($request->getParam('param_value_date'))) != $request->getParam('param_value_date')) {
-                array_push($errors, _INVALID_PARAM_DATE);
-            }
-        }
-        if (!Validator::notEmpty()->validate($request->getParam('param_value_int'))
-            && !Validator::notEmpty()->validate($request->getParam('param_value_string'))
-            && !Validator::notEmpty()->validate($request->getParam('param_value_date'))
-        ) {
-            array_push($errors, _PARAM_VALUE_IS_EMPTY);
-        }
-
-        return $errors;
-    }
-}
diff --git a/core/Controllers/UserController.php b/core/Controllers/UserController.php
index 2cbd48f112a68c6ce95969f79ca152995b5fe187..e8d1db61f9e03126ec41dc011e0b0c7750f17057 100755
--- a/core/Controllers/UserController.php
+++ b/core/Controllers/UserController.php
@@ -309,7 +309,7 @@ class UserController
             'recordId'     => $user['user_id'],
             'eventType'    => 'RET',
             'eventId'      => 'userabs',
-            'info'          => "{$user['firstname']} {$user['lastname']} " ._BACK_FROM_VACATION
+            'info'         => "{$user['firstname']} {$user['lastname']} " ._BACK_FROM_VACATION
         ]);
 
         return $response->withJson([
diff --git a/core/Models/DatabaseModel.php b/core/Models/DatabaseModel.php
index e901b75ab54580fd018c2b45ae5633afb4357d06..2cc3e9c65b1f11ada5de3c487785ec411f7fdd0e 100755
--- a/core/Models/DatabaseModel.php
+++ b/core/Models/DatabaseModel.php
@@ -45,6 +45,7 @@ class DatabaseModel
      * @param array $args
      *
      * @return int
+     * @throws \Exception
      */
     public static function getNextSequenceValue(array $args)
     {
@@ -149,6 +150,7 @@ class DatabaseModel
      * @param array $args
      *
      * @return bool
+     * @throws \Exception
      */
     public static function insert(array $args)
     {
@@ -184,6 +186,7 @@ class DatabaseModel
      * @param array $args
      *
      * @return bool
+     * @throws \Exception
      */
     public static function update(array $args)
     {
@@ -219,6 +222,7 @@ class DatabaseModel
      * @param array $args
      *
      * @return bool
+     * @throws \Exception
      */
     public static function delete(array $args)
     {
diff --git a/rest/index.php b/rest/index.php
index 96220d3a00b5eca4c82dd7a79982f954f5602106..59267d3dcfd77be03a9589620048442199bba05c 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -147,7 +147,6 @@ $app->get('/groups/{id}/details', \Core\Controllers\GroupController::class . ':g
 $app->put('/groups/{id}/services/{serviceId}', \Core\Controllers\GroupController::class . ':updateService');
 $app->put('/groups/{id}/reassign/{newGroupId}', \Core\Controllers\GroupController::class . ':reassignUsers');
 
-
 //Docservers
 $app->get('/docservers', \Core\Controllers\DocserverController::class . ':get');
 $app->get('/docservers/{id}', \Core\Controllers\DocserverController::class . ':getById');
@@ -206,13 +205,12 @@ $app->put('/currentUser/emailSignature/{id}', \Core\Controllers\UserController::
 $app->delete('/currentUser/emailSignature/{id}', \Core\Controllers\UserController::class . ':deleteCurrentUserEmailSignature');
 $app->put('/currentUser/groups/{groupId}/baskets/{basketId}', \Core\Controllers\UserController::class . ':updateBasketPreference');
 
-//parameters
-$app->get('/administration/parameters', \Core\Controllers\ParametersController::class . ':getParametersForAdministration');
-$app->get('/administration/parameters/new', \Core\Controllers\ParametersController::class . ':getNewParameterForAdministration');
-$app->get('/administration/parameters/{id}', \Core\Controllers\ParametersController::class . ':getParameterForAdministration');
-$app->post('/parameters', \Core\Controllers\ParametersController::class . ':create');
-$app->put('/parameters/{id}', \Core\Controllers\ParametersController::class . ':update');
-$app->delete('/parameters/{id}', \Core\Controllers\ParametersController::class . ':delete');
+//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');
diff --git a/src/app/parameter/controllers/ParameterController.php b/src/app/parameter/controllers/ParameterController.php
new file mode 100644
index 0000000000000000000000000000000000000000..b8c774783a320fe31d5286f9de57ade495cae7ed
--- /dev/null
+++ b/src/app/parameter/controllers/ParameterController.php
@@ -0,0 +1,91 @@
+<?php
+
+/**
+* Copyright Maarch since 2008 under licence GPLv3.
+* See LICENCE.txt file at the root folder for more details.
+* This file is part of Maarch software.
+
+* @brief   ParametersController
+* @author  dev <dev@maarch.org>
+* @ingroup core
+*/
+
+/**
+ * @brief Parameter Controller
+ * @author dev@maarch.org
+ */
+
+namespace Parameter\controllers;
+
+use Core\Models\ServiceModel;
+use Parameter\models\ParameterModel;
+use Respect\Validation\Validator;
+use Slim\Http\Request;
+use Slim\Http\Response;
+
+class ParameterController
+{
+    public function get(Request $request, Response $response)
+    {
+        return $response->withJson(['parameters' => ParameterModel::get()]);
+    }
+
+    public function getById(Request $request, Response $response, array $aArgs)
+    {
+        $parameter = ParameterModel::getById(['id' => $aArgs['id']]);
+
+        if (empty($parameter)) {
+            return $response->withStatus(400)->withJson(['errors' => 'Parameter not found']);
+        }
+
+        return $response->withJson(['parameter'  => $parameter]);
+    }
+
+    public function create(Request $request, Response $response)
+    {
+        if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
+            return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
+        }
+
+        $data = $request->getParams();
+
+        $check = Validator::stringType()->notEmpty()->validate($data['id']) && preg_match("/^[\w-]*$/", $data['id']);
+        if (!$check) {
+            return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
+        }
+
+        ParameterModel::create($data);
+
+        return $response->withJson(['success'   => 'success']);
+    }
+
+    public function update(Request $request, Response $response, array $aArgs)
+    {
+        if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
+            return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
+        }
+
+        $parameter = ParameterModel::getById(['id' => $aArgs['id']]);
+
+        if (empty($parameter)) {
+            return $response->withStatus(400)->withJson(['errors' => 'Parameter not found']);
+        }
+
+        $data = $request->getParams();
+
+        ParameterModel::update($data);
+
+        return $response->withJson(['success' => 'success']);
+    }
+
+    public function delete(Request $request, Response $response, array $aArgs)
+    {
+        if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
+            return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
+        }
+
+        ParameterModel::delete(['id' => $aArgs['id']]);
+
+        return $response->withJson(['parameters' => ParameterModel::get()]);
+    }
+}
diff --git a/core/Models/ParameterModel.php b/src/app/parameter/models/ParameterModel.php
similarity index 77%
rename from core/Models/ParameterModel.php
rename to src/app/parameter/models/ParameterModel.php
index bbc9f6f62f8401468121a7a80ffb25b304dab6aa..e48c2da5e36c72ec1144f5cfca8649f83b7a0f28 100644
--- a/core/Models/ParameterModel.php
+++ b/src/app/parameter/models/ParameterModel.php
@@ -1,4 +1,5 @@
 <?php
+
 /**
 * Copyright Maarch since 2008 under licence GPLv3.
 * See LICENCE.txt file at the root folder for more details.
@@ -9,10 +10,13 @@
 * @ingroup core
 */
 
-namespace Core\Models;
+/**
+ * @brief Parameter Model
+ * @author dev@maarch.org
+ */
 
+namespace Parameter\models;
 
 class ParameterModel extends ParameterModelAbstract
 {
-
 }
\ No newline at end of file
diff --git a/core/Models/ParameterModelAbstract.php b/src/app/parameter/models/ParameterModelAbstract.php
similarity index 66%
rename from core/Models/ParameterModelAbstract.php
rename to src/app/parameter/models/ParameterModelAbstract.php
index 43a9a197457d010895364748d4c86a5cb5e79726..a4a92cc1f5e61b0b63d380a99d83e156f5907130 100644
--- a/core/Models/ParameterModelAbstract.php
+++ b/src/app/parameter/models/ParameterModelAbstract.php
@@ -1,4 +1,5 @@
 <?php
+
 /**
 * Copyright Maarch since 2008 under licence GPLv3.
 * See LICENCE.txt file at the root folder for more details.
@@ -9,37 +10,35 @@
 * @ingroup core
 */
 
-namespace Core\Models;
+/**
+ * @brief Parameter Model Abstract
+ * @author dev@maarch.org
+ */
+
+namespace Parameter\models;
+
+use Core\Models\DatabaseModel;
+use Core\Models\ValidatorModel;
 
 class ParameterModelAbstract
 {
-    public static function getList()
+    public static function get(array $aArgs = [])
     {
-        $aReturn = DatabaseModel::select(
-            ['select'    => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
-            'table'     => ['parameters']]
-        );
-
-        foreach ($aReturn as $key => $parameter) {
+        ValidatorModel::arrayType($aArgs, ['select']);
 
-            if ($parameter['param_value_date'] != null) {
-                $aReturn[$key]['param_value_date'] =  TextFormatModel::formatDate($aReturn[$key]['param_value_date']);
-            }
-        }
+        $aReturn = DatabaseModel::select([
+            'select'    => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
+            'table'     => ['parameters'],
+        ]);
 
         return $aReturn;
     }
-    
-    public static function getParametersLang()
-    {
-        $aLang = LangModel::getParametersLang();
-        return $aLang;
-    }
 
     public static function getById(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['id']);
         ValidatorModel::stringType($aArgs, ['id']);
+        ValidatorModel::arrayType($aArgs, ['select']);
 
         $parameter = DatabaseModel::select([
             'select'    => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
@@ -51,9 +50,6 @@ class ParameterModelAbstract
         if (empty($parameter[0])) {
             return [];
         }
-        if (!empty($parameter[0]['param_value_date'])) {
-            $parameter[0]['param_value_date'] = TextFormatModel::formatDate($parameter[0]['param_value_date']);
-        }
 
         return $parameter[0];
     }
@@ -79,34 +75,32 @@ class ParameterModelAbstract
         return true;
     }
 
-    public static function update(array $aArgs = [])
+    public static function update(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['id']);
         ValidatorModel::stringType($aArgs, ['id']);
 
-        $aReturn = DatabaseModel::update(
-            [
+        DatabaseModel::update([
             'table'     => 'parameters',
             'set'       => $aArgs,
             'where'     => ['id = ?'],
             'data'      => [$aArgs['id']]
-            ]
-        );
+        ]);
 
-        return $aReturn;
+        return true;
     }
 
-    public static function delete(array $aArgs = [])
+    public static function delete(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['id']);
         ValidatorModel::stringType($aArgs, ['id']);
 
-        $aReturn = DatabaseModel::delete([
+        DatabaseModel::delete([
             'table' => 'parameters',
             'where' => ['id = ?'],
             'data'  => [$aArgs['id']]
         ]);
 
-        return $aReturn;
+        return true;
     }
 }