diff --git a/CHANGELOG.md b/CHANGELOG.md
index cf90823c9243ba019c08dfb1251eb38d24d719b5..1debc2cae6da56d486d981aaa9323ece57279e29 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,21 +12,21 @@ et le projet suit [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
 ### Deprecated
 ### Removed
 ### Fixed
-
 ### Security
 
+## [2.4.9](https://gitlab.adullact.net/Comptoir/Comptoir-srv/tags/v2.4.9) - 2018-08-16
+
+### Fixed
+
+* [#573](https://gitlab.adullact.net/Comptoir/Comptoir-srv/issues/573) Correction du lien erroné dans le courriel de mot de passe perdu
+* [#572](https://gitlab.adullact.net/Comptoir/Comptoir-srv/issues/572) Mise à jour des paramètres STMP par défaut
+
 ## [2.4.8](https://gitlab.adullact.net/Comptoir/Comptoir-srv/tags/v2.4.8) - 2018-08-14
 
-### Added
-### Changed
-### Deprecated
-### Removed
 ### Fixed
 
 * [#542](https://gitlab.adullact.net/Comptoir/Comptoir-srv/issues/542) Correction de l'affichage de tous les logiciels d'un tag
 
-### Security
-
 ## [2.4.8-rc.2](https://gitlab.adullact.net/Comptoir/Comptoir-srv/tags/v2.4.8-rc.2) - 2018-08-14
 
 ### Added
@@ -36,9 +36,6 @@ et le projet suit [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
 * [#563](https://gitlab.adullact.net/Comptoir/Comptoir-srv/issues/563) (Développeurs) Ajout de la dernière version de DebugKit dans l'image Docker "locale"
 * [#564](https://gitlab.adullact.net/Comptoir/Comptoir-srv/issues/564) (Développeurs) Mise à jour de l'image Docker Comptoir base en v1.0.0-rc.2
 
-### Changed
-### Deprecated
-### Removed
 ### Fixed
 
 * [#559](https://gitlab.adullact.net/Comptoir/Comptoir-srv/issues/559) Page d'accueil : Corrigé le lien vers les derniers logiciels ajoutés
@@ -59,9 +56,6 @@ et le projet suit [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
 
 * Les prestataires sont maintenant séparés des utilisateurs et disposent d'une entrée propre dans la barre de navigation.
 
-### Security
-### Fixed
-
 * Correction de bugs d'internationalisation (tout est censé être traduit de l'anglais vers le français)
 
 ## 2.4.7 - 2018-03-30
diff --git a/Documentation/For_ops/HOWTO_Create_a_release.md b/Documentation/For_ops/HOWTO_Create_a_release.md
index cf08e76181c05fa6fd61b243fb6cd0b68dd51a16..c0eff7ff612d95b601a20c606a15cc38129c2a48 100644
--- a/Documentation/For_ops/HOWTO_Create_a_release.md
+++ b/Documentation/For_ops/HOWTO_Create_a_release.md
@@ -7,6 +7,7 @@
     * change the version in `config/bootstrap.php`
     * update `CHANGELOG.md`
     * create the upgrade doc in `Documentation/For_ops/UPGRADE`
+    * Update release note of tag in Gitlab
 * Eventually make other adjustments
 
 ## 2. Merge, tag and push
@@ -16,8 +17,14 @@ Once the MR for "prepare vX.Y.Z" is OK **in develop**:
 ```sh
 git checkout master
 MYTAG="vX.Y.Z"
-git merge develop --no-ff -m "Comptoir-srv $MYTAG"
+git merge develop --no-ff -m "Comptoir $MYTAG"
 git tag -a $MYTAG -m "$MYTAG"
 git push origin master
 git push origin $MYTAG
 ```
+
+## 3. Run functional tests
+
+1. Install release on a pre-prod environment
+2. Run automated functional tests
+3. Run [manual tests](../../tests/Manual_tests/README.md)
diff --git a/Documentation/UPRGADE_from_v1.0.0_to_v1.1.0.md b/Documentation/For_ops/UPGRADE/UPGRADE_from_v1.0.0_to_v1.1.0.md
similarity index 100%
rename from Documentation/UPRGADE_from_v1.0.0_to_v1.1.0.md
rename to Documentation/For_ops/UPGRADE/UPGRADE_from_v1.0.0_to_v1.1.0.md
diff --git a/Documentation/For_ops/UPGRADE/UPGRADE_from_v2.4.8-rc.1_to_v2.4.8.md b/Documentation/For_ops/UPGRADE/UPGRADE_from_v2.4.8-rc.1_to_v2.4.8.md
index 1f88b66e1968654921715dfefc62e73b9b875307..5c8737322140427787d65dd004fa3d2349c32dad 100644
--- a/Documentation/For_ops/UPGRADE/UPGRADE_from_v2.4.8-rc.1_to_v2.4.8.md
+++ b/Documentation/For_ops/UPGRADE/UPGRADE_from_v2.4.8-rc.1_to_v2.4.8.md
@@ -14,7 +14,7 @@ As user `comptoir`, do:
 ```shell
 cd /home/comptoir/Comptoir-srv && \
     git fetch -p && \
-    git checkout "v2.4.8-rc.2"
+    git checkout "v2.4.8"
 ```
 
 ## Update `config/comptoir.php`
diff --git a/Documentation/For_ops/UPGRADE/UPGRADE_from_v2.4.8_to_v2.4.9.md b/Documentation/For_ops/UPGRADE/UPGRADE_from_v2.4.8_to_v2.4.9.md
new file mode 100644
index 0000000000000000000000000000000000000000..2bae6ca660beda8cb5d61779d609baafa4595328
--- /dev/null
+++ b/Documentation/For_ops/UPGRADE/UPGRADE_from_v2.4.8_to_v2.4.9.md
@@ -0,0 +1,29 @@
+# How to upgrade from v2.4.8 to v2.4.9
+
+## Save `config/comptoir.php`
+
+```shell
+cd /home/comptoir/Comptoir-srv && \
+    cp config/comptoir.php config/comptoir.php-$(date +%Y-%m-%d_%kh%M)
+```
+
+## Grab source code
+
+As user `comptoir`, do:
+
+```shell
+cd /home/comptoir/Comptoir-srv && \
+    git fetch -p && \
+    git checkout "v2.4.9"
+```
+
+## Update `config/comptoir.php`
+
+1. `cd /home/comptoir/Comptoir-srv/config && cp comptoir.default.php comptoir.php`
+1. Re-add customized values from the old `comptoir.php` into the new one (like the Piwik stanza or Pick of the month)
+
+## Remove temporary i18n files
+
+```shell
+sudo rm -f /home/comptoir/Comptoir-srv/tmp/cache/persistent/*
+```
diff --git a/config/app.default.php b/config/app.default.php
index 4254b27cf23c92f1d99a6692605d4d0693c715b3..14cf073f15091111f34c52eb95012b220537f6f6 100644
--- a/config/app.default.php
+++ b/config/app.default.php
@@ -168,16 +168,14 @@ return [
      */
     'EmailTransport' => [
         'default' => [
-            'className' => 'Debug',
-            // The following keys are used in SMTP transports
-            'host' => env('EMAIL_HOST','smtp.adullact.org'),
-            'port' => env('EMAIL_PORT',25),
-            'timeout' => 30,
-            'username' => env('EMAIL_USERNAME','app.comptoirdulibre@adullact.org'),
-            // **Please** change me --> password
-            'password' => env('EMAIL_PASSWORD','secret'),
+            'className' => 'Smtp',
+            'host' => 'localhost',
+            'port' => 25,
+            //'timeout' => 30,
+            //'username' => env('EMAIL_USERNAME','app.comptoirdulibre@adullact.org'),
+            //'password' => env('EMAIL_PASSWORD','secret'),
             'client' => null,
-            'tls' => false,
+            //'tls' => false,
         ],
 
     ],
diff --git a/config/bootstrap.php b/config/bootstrap.php
index 60548cdf75d34c2ef7a4424b403bc981f745e764..cb8e2ce9211e27c7785b008c4bbdbeadf87e9449 100644
--- a/config/bootstrap.php
+++ b/config/bootstrap.php
@@ -270,7 +270,7 @@ Configure::write(
 // Version  of comptoir
 Configure::write('VERSION',
     [
-        "footer" => "v2.4.8"
+        "footer" => "v2.4.9"
     ]
 );
 
diff --git a/config/routes.php b/config/routes.php
index c966bb42e74ae1b36c15b2be9f0e044f5553bbf2..ade19ac6c160d6cdc609f6f7347c3588e5c032fb 100644
--- a/config/routes.php
+++ b/config/routes.php
@@ -18,10 +18,11 @@
  * @link          http://cakephp.org CakePHP(tm) Project
  * @license       http://www.opensource.org/licenses/mit-license.php MIT License
  */
+
+use Cake\Core\Configure;
 use Cake\Core\Plugin;
-use Cake\Routing\Router;
 use Cake\Routing\RouteBuilder;
-use Cake\Core\Configure;
+use Cake\Routing\Router;
 
 /**
  * The default class to use for all routes
@@ -43,23 +44,32 @@ use Cake\Core\Configure;
  */
 Router::defaultRouteClass('DashedRoute');
 
-Router::addUrlFilter(function ($params, $request) {
-    if (isset($request->params['language']) && !isset($params['language'])) {
-        $params['language'] = $request->params['language'];
+Router::addUrlFilter(
+    function ($params, $request) {
+        if (isset($request->params['language']) && !isset($params['language'])) {
+            $params['language'] = $request->params['language'];
+        }
+        return $params;
     }
+);
 
-    return $params;
-});
-
-Router::scope('/', function ($routes) {
-
-});
-
+Router::scope('/',
+    function ($routes) {
+    }
+);
 
 $basicRoutes = function (RouteBuilder $routes) {
 
-    $routes->connect('/softwares/add-review/:software_id', ['controller' => 'Reviews', 'action' => 'add', "pass" => ["software_id"], "prefix" => Configure::read("DEFAULT_PREFIX")]);
+    $routes->connect('/softwares/add-review/:software_id',
+        [
+            'controller' => 'Reviews',
+            'action' => 'add',
+            "pass" => ["software_id"],
+            "prefix" => Configure::read("DEFAULT_PREFIX")
+        ]
+    );
 
+    // Pages ==================================================================
     $routes->resources('Pages',
         [
             "prefix" => Configure::read("DEFAULT_PREFIX"),
@@ -91,6 +101,7 @@ $basicRoutes = function (RouteBuilder $routes) {
             ]
         ]);
 
+    // Software ===============================================================
     $routes->resources('Softwares',
         [
             "prefix" => Configure::read("DEFAULT_PREFIX"),
@@ -142,7 +153,7 @@ $basicRoutes = function (RouteBuilder $routes) {
                 ],
                 'edit/:id' => [
                     'action' => 'edit',
-                    'method' => ['GET','PUT']
+                    'method' => ['GET', 'PUT']
                 ],
                 'view/:id' => [
                     'action' => 'view',
@@ -150,7 +161,7 @@ $basicRoutes = function (RouteBuilder $routes) {
                 ],
                 'add' => [
                     'action' => 'add',
-                    'method' => ['GET','POST']
+                    'method' => ['GET', 'POST']
                 ],
                 "index/" => [
                     'action' => 'index',
@@ -159,7 +170,6 @@ $basicRoutes = function (RouteBuilder $routes) {
             ]
         ]);
 
-
     /**
      * Software routing
      */
@@ -170,9 +180,7 @@ $basicRoutes = function (RouteBuilder $routes) {
 
     $routes->connect('/softwares/add-review/:software_id', ['controller' => 'Reviews', 'action' => 'add', "pass" => ["software_id"]]);
 
-    /**
-     * Users routing
-     */
+    // Users ==================================================================
     $routes->resources('Users',
         [
             "prefix" => Configure::read("DEFAULT_PREFIX"),
@@ -210,7 +218,6 @@ $basicRoutes = function (RouteBuilder $routes) {
                     'action' => 'forgotPassword',
                     'method' => ['GET', 'POST']
                 ],
-
                 'change-password' => [
                     'action' => 'changePassword',
                     'method' => ['GET']
@@ -225,7 +232,7 @@ $basicRoutes = function (RouteBuilder $routes) {
                 ],
                 'contact/:id' => [
                     'action' => 'contact',
-                    'method' => ['GET','POST']
+                    'method' => ['GET', 'POST']
                 ],
                 "index/" => [
                     'action' => 'index',
@@ -234,9 +241,7 @@ $basicRoutes = function (RouteBuilder $routes) {
             ]
         ]);
 
-    /*
-     * Tags routing
-     */
+    // Tags ===================================================================
     $routes->resources('Tags',
         [
             "prefix" => Configure::read("DEFAULT_PREFIX"),
@@ -256,12 +261,12 @@ $basicRoutes = function (RouteBuilder $routes) {
      * SoftwaresTags routing
      */
     $routes->resources('SoftwaresTags',
-    [
-        "prefix" => Configure::read("DEFAULT_PREFIX"),
-        "map" => [
+        [
+            "prefix" => Configure::read("DEFAULT_PREFIX"),
+            "map" => [
 
-        ]
-    ]);
+            ]
+        ]);
 
     $routes->connect("/", ["controller" => "Pages", "action" => "index", "prefix" => Configure::read("DEFAULT_PREFIX")]);
 
@@ -286,9 +291,9 @@ Router::prefix('api/v1', function ($routes) {
      * Users routing
      */
     $routes->resources('Users');
-        $routes->connect('/users/servicesproviderUsers', ['controller' => 'Users', 'action' => 'servicesproviderUsers']);
-        $routes->connect('/users/add', ['controller' => 'Users', 'action' => 'add','_method' => 'GET']);
-        $routes->connect('/users/logout', ['controller' => 'Users', 'action' => 'logout']);
+    $routes->connect('/users/servicesproviderUsers', ['controller' => 'Users', 'action' => 'servicesproviderUsers']);
+    $routes->connect('/users/add', ['controller' => 'Users', 'action' => 'add', '_method' => 'GET']);
+    $routes->connect('/users/logout', ['controller' => 'Users', 'action' => 'logout']);
 
 
     $routes->resources('Reviews');
diff --git a/src/Mailer/UserMailer.php b/src/Mailer/UserMailer.php
index fe87297f4e2f8306b36759e5b0c496eeb9aa9419..d35be1d236130ce101c0082137cfb6fbf1a76a3e 100644
--- a/src/Mailer/UserMailer.php
+++ b/src/Mailer/UserMailer.php
@@ -18,14 +18,15 @@ class UserMailer extends Mailer
             ->set(
                 [
                     'userName' => $user->username,
-                    'message' => __d("Email","Please follow this link to reset your password : {0} \n",Configure::read('App.fullBaseUrl') . DS. "users".DS."changePassword".DS.$user->token),
+                    'message' => __d("Email",
+                        "Please follow this link to reset your password : {0} \n",
+                        Configure::read('App.fullBaseUrl') . DS . "users" . DS . "change-password" . DS . $user->token),
                 ]
             )
             ->transport('default');
     }
 
 
-
     /**
      * Send a email to an user in Comptoir du Libre
      * @param Event $event
@@ -36,10 +37,10 @@ class UserMailer extends Mailer
         $this
             ->to($event->data['recipient'])
             ->from("barman@comptoir-du-libre.org")
-            ->subject(Configure::read("Mail.Contact.UserToUser.Prefix").$event->data["subject"])
+            ->subject(Configure::read("Mail.Contact.UserToUser.Prefix") . $event->data["subject"])
             ->replyTo($event->data['email'])
             ->template('contactViaForm')// Par défaut le template avec le même nom que le nom de la méthode est utilisé.
-            ->set (
+            ->set(
                 [
                     'message' => $event->data["text"],
                 ]
diff --git a/tests/Manual_tests/README.md b/tests/Manual_tests/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..0d92aaf727cfc8e1547bc8dcc71855e1242871f4
--- /dev/null
+++ b/tests/Manual_tests/README.md
@@ -0,0 +1,11 @@
+# Manual tests
+
+## Purpose
+
+Tests that should be done by a human. They are the last type of test after unit-tests and functional / acceptance tests.
+
+## Create an account
+
+## Verify lost password
+
+