diff --git a/sql/develop.sql b/sql/develop.sql
index 5ab9b70cbfb4100a2bd62fefd8e0abefe604b803..9f4c6eda34b150c6ccec3da0d643b69753168dbb 100755
--- a/sql/develop.sql
+++ b/sql/develop.sql
@@ -36,7 +36,7 @@ ALTER TABLE usergroups ADD COLUMN indexation_parameters jsonb NOT NULL DEFAULT '
 /* BASKETS LIST EVENT */
 ALTER TABLE groupbasket DROP COLUMN IF EXISTS list_event;
 ALTER TABLE groupbasket ADD COLUMN list_event character varying(255);
-UPDATE groupbasket SET list_event = 'processDoc'
+UPDATE groupbasket SET list_event = 'processDocument'
 FROM (
        SELECT basket_id, group_id
        FROM actions_groupbaskets ag
@@ -52,7 +52,7 @@ FROM (
        WHERE ag.default_action_list = 'Y' AND a.component = 'viewDoc'
      ) AS subquery
 WHERE groupbasket.basket_id = subquery.basket_id AND groupbasket.group_id = subquery.group_id;
-UPDATE groupbasket SET list_event = 'visaMail'
+UPDATE groupbasket SET list_event = 'signatureBookAction'
 FROM (
        SELECT basket_id, group_id
        FROM actions_groupbaskets ag
@@ -80,6 +80,7 @@ CREATE TABLE folders
   public boolean NOT NULL,   
   user_id INTEGER NOT NULL,
   parent_id INTEGER,
+  level INTEGER,
   CONSTRAINT folders_pkey PRIMARY KEY (id)
 )
 WITH (OIDS=FALSE);
diff --git a/sql/structure.sql b/sql/structure.sql
index 37b0d3012c2fe62d7cf175a8c9bcd064b817fa17..fcf1ca88e5254e45ac4bdfc67b87c7f2532667b1 100755
--- a/sql/structure.sql
+++ b/sql/structure.sql
@@ -565,6 +565,7 @@ CREATE TABLE folders
   public boolean NOT NULL,   
   user_id INTEGER NOT NULL,
   parent_id INTEGER,
+  level INTEGER,
   CONSTRAINT folders_pkey PRIMARY KEY (id)
 )
 WITH (OIDS=FALSE);
diff --git a/src/app/folder/controllers/FolderController.php b/src/app/folder/controllers/FolderController.php
index 6b4fb1f70d13ec377b3486dde3951f09acb451d3..54d4c3549cc075f7e3b5fde865e5d715dc80cd1f 100755
--- a/src/app/folder/controllers/FolderController.php
+++ b/src/app/folder/controllers/FolderController.php
@@ -20,27 +20,38 @@ use History\controllers\HistoryController;
 use Respect\Validation\Validator;
 use Slim\Http\Request;
 use Slim\Http\Response;
-use User\models\UserModel;
 
 class FolderController
 {
     public function get(Request $request, Response $response)
     {
-        $folders = FolderModel::get();
-
-        foreach ($folders as $key => $value) {
-            $folders[$key]['icon'] = "fa fa-folder-open";
-            if (empty($value['parent_id'])) {
-                $folders[$key]['parent'] = '#';
+        $folders = FolderModel::get(['order_by' => ['level']]);
+
+        $tree = [];
+        foreach ($folders as $folder) {
+            $insert = [
+                'name'       => $folder['label'],
+                'expandable' => true,
+                'id'         => $folder['id'],
+                'label'      => $folder['label'],
+                'public'     => $folder['public'],
+                'user_id'    => $folder['user_id'],
+                'parent_id'  => $folder['parent_id'],
+                'level'      => $folder['level'],
+            ];
+            if ($folder['level'] == 0) {
+                $tree[] = $insert;
             } else {
-                $folders[$key]['parent'] = $value['parent_id'];
+                foreach ($tree as $key => $branch) {
+                    if ($branch['id'] == $folder['parent_id']) {
+                        array_splice($tree, $key + 1, 0, [$insert]);
+                        break;
+                    }
+                }
             }
-
-            $folders[$key]['state']['opened'] = true;
-            $folders[$key]['text'] = $value['label'];
         }
 
-        return $response->withJson(['folders' => $folders]);
+        return $response->withJson(['folders' => $tree]);
     }
 
     public function getById(Request $request, Response $response, array $aArgs)
@@ -77,25 +88,32 @@ class FolderController
         if (!empty($data['parent_id']) && !Validator::intval()->validate($data['parent_id'])) {
             return $response->withStatus(400)->withJson(['errors' => 'Body parent_id is not a numeric']);
         }
-        if (!Validator::boolVal()->validate($data['public'])) {
-            return $response->withStatus(400)->withJson(['errors' => 'Body public is empty or not a boolean']);
-        }
-
-        $currentUser = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
 
         //TODO Check rights
 
+        if (empty($data['parent_id'])) {
+            $data['parent_id'] = 0;
+            $level  = 0;
+            $owner  = $GLOBALS['id'];
+            $public = false;
+        } else {
+            $folder = FolderModel::getById(['id' => $data['parent_id'], 'select' => ['user_id', 'public', 'level']]);
+            $owner  = $folder['user_id'];
+            $public = $folder['public'];
+            $level  = $folder['level'] + 1;
+        }
+
         $id = FolderModel::create([
-            'label'      => $data['label'],
-            'public'     => $data['public'],
-            'user_id'    => $currentUser['id'],
-            'parent_id'  => $data['parent_id']
+            'label'     => $data['label'],
+            'public'    => $public,
+            'user_id'   => $owner,
+            'parent_id' => $data['parent_id'],
+            'level'     => $level
         ]);
 
-        if (!empty($data['sharing']['entities'])) {
-            //TODO check entities exists
-
-            foreach ($data['sharing']['entities'] as $entity) {
+        if (!empty($entitiesSharing)) {
+            //TODO $entitiesSharing = Get entities sharing from n-1
+            foreach ($entitiesSharing as $entity) {
                 EntityFolderModel::create([
                     'folder_id' => $id,
                     'entity_id' => $entity['entity_id'],
@@ -135,11 +153,23 @@ class FolderController
 
         //TODO Check rights
 
+        if (empty($data['parent_id'])) {
+            $data['parent_id'] = 0;
+            $level  = 0;
+            $public = false;
+        } else {
+            $folder = FolderModel::getById(['id' => $data['parent_id'], 'select' => ['public', 'level']]);
+            $public = $folder['public'];
+            $level  = $folder['level'] + 1;
+            // Get entities sharing from n-1
+        }
+
         FolderModel::update([
             'set' => [
                 'label'      => $data['label'],
-                'public'     => empty($data['public']) ? 'false' : 'true',
-                'parent_id'  => $data['parent_id']
+                'public'     => empty($public) ? 'false' : 'true',
+                'parent_id'  => $data['parent_id'],
+                'level'      => $level
             ],
             'where' => ['id = ?'],
             'data' => [$aArgs['id']]
@@ -194,7 +224,7 @@ class FolderController
             'tableName' => 'folder',
             'recordId'  => $aArgs['id'],
             'eventType' => 'DEL',
-            'info'      => _BASKET_SUPPRESSION . " : {$aArgs['id']}",
+            'info'      => _FOLDER_SUPPRESSION . " : {$aArgs['id']}",
             'moduleId'  => 'folder',
             'eventId'   => 'folderSuppression',
         ]);
diff --git a/src/app/folder/models/FolderModelAbstract.php b/src/app/folder/models/FolderModelAbstract.php
index f9ec8bc5206723ef4d2167597249c1f7daa978b8..795d1c3b395673325c785e35990ddff496a2cb68 100755
--- a/src/app/folder/models/FolderModelAbstract.php
+++ b/src/app/folder/models/FolderModelAbstract.php
@@ -22,7 +22,8 @@ class FolderModelAbstract
 
         $folders = DatabaseModel::select([
             'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
-            'table'  => ['folders']
+            'table'  => ['folders'],
+            'order_by' => empty($aArgs['order_by']) ? ['label'] : $aArgs['order_by']
         ]);
 
         return $folders;
@@ -47,7 +48,7 @@ class FolderModelAbstract
     {
         ValidatorModel::notEmpty($aArgs, ['user_id', 'label']);
         ValidatorModel::stringType($aArgs, ['label']);
-        ValidatorModel::intVal($aArgs, ['user_id', 'parent_id']);
+        ValidatorModel::intVal($aArgs, ['user_id', 'parent_id', 'level']);
         ValidatorModel::boolType($aArgs, ['public']);
 
         $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'folders_id_seq']);
@@ -59,7 +60,8 @@ class FolderModelAbstract
                 'label'      => $aArgs['label'],
                 'public'     => empty($aArgs['public']) ? 'false' : 'true',
                 'user_id'    => $aArgs['user_id'],
-                'parent_id'  => $aArgs['parent_id']
+                'parent_id'  => $aArgs['parent_id'],
+                'level'  => $aArgs['level']
             ]
         ]);
 
diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php
index 30263060feaa0b8c67237ff21277996a8f828726..3ca28b8b3ded42d7c12782cbe46c34f46bd18631 100755
--- a/src/core/lang/lang-en.php
+++ b/src/core/lang/lang-en.php
@@ -497,3 +497,7 @@ define("_SIGNATORY", "Signatory");
 define("_VISA_USER_MIN", "Visa user");
 define("_NOTE_USER", "Note user");
 define("_WF_SEND_TO", "Send to : ");
+
+define("_FOLDER_CREATION", "Folder creation");
+define("_FOLDER_MODIFICATION", "Folder modification");
+define("_FOLDER_SUPPRESSION", "Folder suppression");
\ No newline at end of file
diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php
index 9c92b056a4617e6a71f48c4662b8a3af996d788b..7554199f89ec38c165e52c7dc11b0766109431dc 100755
--- a/src/core/lang/lang-fr.php
+++ b/src/core/lang/lang-fr.php
@@ -496,3 +496,7 @@ define("_SIGNATORY", "Signataire");
 define("_VISA_USER_MIN", "Viseur");
 define("_NOTE_USER", "Annotateur");
 define("_WF_SEND_TO", "Envoyé à : ");
+
+define("_FOLDER_CREATION", "Dossier créé");
+define("_FOLDER_MODIFICATION", "Dossier modifié");
+define("_FOLDER_SUPPRESSION", "Dossier supprimé");
diff --git a/src/core/lang/lang-nl.php b/src/core/lang/lang-nl.php
index f0ba7717b0de9cfc5ae503ff1f910cd055bfa622..790339006a954b82fd75c6a2f00948e4d6de47cd 100755
--- a/src/core/lang/lang-nl.php
+++ b/src/core/lang/lang-nl.php
@@ -501,3 +501,7 @@ define("_SIGNATORY", "Signatory_TO_TRANSLATE");
 define("_VISA_USER_MIN", "Visa user_TO_TRANSLATE");
 define("_NOTE_USER", "Note user_TO_TRANSLATE");
 define("_WF_SEND_TO", "Send to : _TO_TRANSLATE");
+
+define("_FOLDER_CREATION", "Folder creation_TO_TRANSLATE");
+define("_FOLDER_MODIFICATION", "Folder modification_TO_TRANSLATE");
+define("_FOLDER_SUPPRESSION", "Folder suppression_TO_TRANSLATE");
\ No newline at end of file