diff --git a/src/app/doctype/controllers/FirstLevelController.php b/src/app/doctype/controllers/FirstLevelController.php
index 9e2f03cb59cffac94b533bbf4583d14e00b7bf83..17de8ab11256bd05b9fde8e36cb8daf2bcb603f3 100644
--- a/src/app/doctype/controllers/FirstLevelController.php
+++ b/src/app/doctype/controllers/FirstLevelController.php
@@ -4,7 +4,7 @@
 * See LICENCE.txt file at the root folder for more details.
 * This file is part of Maarch software.
 
-* @brief   DoctypeController
+* @brief   FirstLevelController
 * @author  dev <dev@maarch.org>
 * @ingroup core
 */
@@ -13,17 +13,17 @@ namespace Doctype\controllers;
 
 use History\controllers\HistoryController;
 use Respect\Validation\Validator;
-use SrcCore\models\CoreConfigModel;
 use Doctype\models\FirstLevelModel;
 use Doctype\models\SecondLevelModel;
 use Doctype\models\DoctypeModel;
+use Folder\models\FolderTypeModel;
 use Core\Models\ServiceModel;
 use Slim\Http\Request;
 use Slim\Http\Response;
 
-class DoctypeController
+class FirstLevelController
 {
-    public function get(Request $request, Response $response)
+    public function getTree(Request $request, Response $response)
     {
 
         $firstLevels  = FirstLevelModel::get();
@@ -50,7 +50,7 @@ class DoctypeController
         ]);
     }
 
-    public function getFirstLevelById(Request $request, Response $response, $aArgs)
+    public function getById(Request $request, Response $response, $aArgs)
     {
 
         if (!Validator::intVal()->validate($aArgs['id']) || !Validator::notEmpty()->validate($aArgs['id'])) {
@@ -59,20 +59,21 @@ class DoctypeController
                 ->withJson(['errors' => 'wrong format for id'.$aArgs['id']]);
         }
 
-        $obj = FirstLevelModel::getById(['id' => $aArgs['id']]);
+        $obj['FirstLevelInfo'] = FirstLevelModel::getById(['id' => $aArgs['id']]);
 
         if(!empty($obj)){
-            if ($obj['enabled'] == 'Y') {
-                $obj['enabled'] = true;
+            if ($obj['FirstLevelInfo']['enabled'] == 'Y') {
+                $obj['FirstLevelInfo']['enabled'] = true;
             } else {
-                $obj['enabled'] = false;
+                $obj['FirstLevelInfo']['enabled'] = false;
             }
         }
   
+        $obj['FolderTypeDocType'] = FolderTypeModel::getFolderTypeDocTypeFirstLevel();
         return $response->withJson($obj);
     }
 
-    public function getSecondLevelById(Request $request, Response $response, $aArgs)
+    public function getDoctypeById(Request $request, Response $response, $aArgs)
     {
 
         if (!Validator::intVal()->validate($aArgs['id']) || !Validator::notEmpty()->validate($aArgs['id'])) {
@@ -81,7 +82,7 @@ class DoctypeController
                 ->withJson(['errors' => 'wrong format for id']);
         }
 
-        $obj = SecondLevelModel::getById(['id' => $aArgs['id']]);
+        $obj = DoctypeModel::getById(['id' => $aArgs['id']]);
 
         if(!empty($obj)){
             if ($obj['enabled'] == 'Y') {
@@ -94,74 +95,60 @@ class DoctypeController
         return $response->withJson($obj);
     }
 
-    public function getDoctypeById(Request $request, Response $response, $aArgs)
+    public function initFirstLevel(Request $request, Response $response, $aArgs)
     {
-
-        if (!Validator::intVal()->validate($aArgs['id']) || !Validator::notEmpty()->validate($aArgs['id'])) {
-            return $response
-                ->withStatus(500)
-                ->withJson(['errors' => 'wrong format for id']);
-        }
-
-        $obj = DoctypeModel::getById(['id' => $aArgs['id']]);
-
-        if(!empty($obj)){
-            if ($obj['enabled'] == 'Y') {
-                $obj['enabled'] = true;
-            } else {
-                $obj['enabled'] = false;
-            }
-        }
-  
+        $obj['folderType'] = FolderTypeModel::get(['select' => ['foldertype_id', 'foldertype_label']]);
         return $response->withJson($obj);
     }
 
-
-
-
-
-
     public function create(Request $request, Response $response)
     {
-        if (!ServiceModel::hasService(['id' => 'admin_actions', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
+        if (!ServiceModel::hasService(['id' => 'admin_architecture', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
             return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
         }
 
         $data = $request->getParams();
-        $data  = $this->manageValue($data);
+        $data = $this->manageValue($data);
         
         $errors = $this->control($data, 'create');
         if (!empty($errors)) {
             return $response->withStatus(500)->withJson(['errors' => $errors]);
         }
     
-        ActionModel::create($data);
-
-        $obj = max(ActionModel::get());
+        $folderTypeId = $data['foldertype_id'];
+        unset($data['foldertype_id']);
+        $obj = FirstLevelModel::create($data);
+
+        foreach ($folderTypeId as $value) {
+            FolderTypeModel::createFolderTypeDocTypeFirstLevel([
+                "doctypes_first_level_id" => $obj['doctypes_first_level_id'], 
+                "foldertype_id" => $value
+            ]);
+        }
 
         HistoryController::add([
-            'tableName' => 'actions',
-            'recordId'  => $obj['id'],
+            'tableName' => 'doctypes_first_level',
+            'recordId'  => $obj['doctypes_first_level_id'],
             'eventType' => 'ADD',
-            'eventId'   => 'actionadd',
-            'info'      => _ACTION_ADDED . ' : ' . $obj['label_action']
+            'eventId'   => 'structureadd',
+            'info'      => _DOCTYPE_FIRSTLEVEL_ADDED . ' : ' . $obj['doctypes_first_level_label']
         ]);
 
         return $response->withJson(
             [
-            'action'  => $obj
+            'firstLevel'  => $obj
             ]
         );
     }
 
     public function update(Request $request, Response $response, $aArgs)
     {
-        if (!ServiceModel::hasService(['id' => 'admin_actions', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
+        if (!ServiceModel::hasService(['id' => 'admin_architecture', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
             return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
         }
 
-        $obj       = $request->getParams();
-        $obj['id'] = $aArgs['id'];
+        $obj                            = $request->getParams();
+        $obj['doctypes_first_level_id'] = $aArgs['id'];
 
         $obj    = $this->manageValue($obj);
         $errors = $this->control($obj, 'update');
@@ -172,35 +159,36 @@ class DoctypeController
                 ->withJson(['errors' => $errors]);
         }
 
-        $return = ActionModel::update($obj);
+        $folderTypeId = $data['foldertype_id'];
+        unset($data['foldertype_id']);
+        $obj = FirstLevelModel::update($data);
 
-        if ($return) {
-            $id  = $aArgs['id'];
-            $obj = ActionModel::getById(['id' => $id]);
-        } else {
-            return $response
-                ->withStatus(500)
-                ->withJson(['errors' => 'Problem during action update']);
+        FolderTypeModel::deleteFolderTypeDocTypeFirstLevel();
+        foreach ($folderTypeId as $value) {
+            FolderTypeModel::createFolderTypeDocTypeFirstLevel([
+                "doctypes_first_level_id" => $obj['doctypes_first_level_id'], 
+                "foldertype_id" => $value
+            ]);
         }
 
         HistoryController::add([
-            'tableName' => 'actions',
-            'recordId'  => $obj['id'],
+            'tableName' => 'doctypes_first_level',
+            'recordId'  => $obj['doctypes_first_level_id'],
             'eventType' => 'UP',
-            'eventId'   => 'actionup',
-            'info'      => _ACTION_UPDATED. ' : ' . $obj['label_action']
+            'eventId'   => 'structureup',
+            'info'      => _DOCTYPE_FIRSTLEVEL_UPDATED. ' : ' . $obj['doctypes_first_level_label']
         ]);
 
         return $response->withJson(
             [
-            'action'  => $obj
+            'firstLevel'  => $obj
             ]
         );
     }
 
     public function delete(Request $request, Response $response, $aArgs)
     {
-        if (!ServiceModel::hasService(['id' => 'admin_actions', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
+        if (!ServiceModel::hasService(['id' => 'admin_architecture', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
             return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
         }
 
@@ -210,90 +198,59 @@ class DoctypeController
                 ->withJson(['errors' => 'Id is not a numeric']);
         }
 
-        $action = ActionModel::getById(['id' => $aArgs['id']]); // TODO select label_action
-        ActionModel::delete(['id' => $aArgs['id']]);
+        $firstLevel = FirstLevelModel::getById(['id' => $aArgs['id']]);
+        FirstLevelModel::update(['doctypes_first_level_id' => $aArgs['id'], 'enabled' => 'N']);
+        SecondLevelModel::disabledFirstLevel(['doctypes_first_level_id' => $aArgs['id'], 'enabled' => 'N']);
+        DoctypeModel::disabledFirstLevel(['doctypes_first_level_id' => $aArgs['id'], 'enabled' => 'N']);
+        FolderTypeModel::deleteFolderTypeDocTypeFirstLevel();
 
         HistoryController::add([
-            'tableName' => 'actions',
-            'recordId'  => $aArgs['id'],
+            'tableName' => 'doctypes_first_level',
+            'recordId'  => $aArgs['doctypes_first_level_id'],
             'eventType' => 'DEL',
-            'eventId'   => 'actiondel',
-            'info'      => _ACTION_DELETED. ' : ' . $action['label_action']
+            'eventId'   => 'structuredel',
+            'info'      => _DOCTYPE_FIRSTLEVEL_DELETED. ' : ' . $firstLevel['doctypes_first_level_label']
         ]);
 
-        return $response->withJson(['action' => ActionModel::get()]);
+        return $response->withJson(['firstLevel' => $firstLevel]);
     }
 
     protected function control($aArgs, $mode)
     {
         $errors = [];
-      
-        $objs = StatusModel::get();
-
-        foreach ($objs as $obj) {
-            $status[] = $obj['id'];
-        }
-        array_unshift($status, '_NOSTATUS_');
-
-        if (!(in_array($aArgs['id_status'], $status))) {
-            $errors[]= 'Invalid Status';
-        }
 
         if ($mode == 'update') {
-            if (!Validator::intVal()->validate($aArgs['id'])) {
+            if (!Validator::intVal()->validate($aArgs['doctypes_first_level_id'])) {
                 $errors[] = 'Id is not a numeric';
             } else {
-                $obj = ActionModel::getById(['id' => $aArgs['id']]);
+                $obj = FirstLevelModel::getById(['id' => $aArgs['doctypes_first_level_id']]);
             }
            
             if (empty($obj)) {
-                $errors[] = 'Id ' .$aArgs['id']. ' does not exists';
+                $errors[] = 'Id ' .$aArgs['doctypes_first_level_id']. ' does not exists';
             }
         }
            
-        if (!Validator::notEmpty()->validate($aArgs['label_action']) ||
-            !Validator::length(1, 255)->validate($aArgs['label_action'])) {
-            $errors[] = 'Invalid label action';
+        if (!Validator::notEmpty()->validate($aArgs['doctypes_first_level_label']) ||
+            !Validator::length(1, 255)->validate($aArgs['doctypes_first_level_label'])) {
+            $errors[] = 'Invalid doctypes_first_level_label';
         }
 
-        if (!Validator::notEmpty()->validate($aArgs['id_status'])) {
-            $errors[] = 'id_status is empty';
+        if (!Validator::notEmpty()->validate($aArgs['foldertype_id'])) {
+            $errors[] = 'Invalid foldertype_id';
         }
 
-        if (!Validator::notEmpty()->validate($aArgs['history']) || ($aArgs['history'] != 'Y' && $aArgs['history'] != 'N')) {
+        if (!Validator::notEmpty()->validate($aArgs['enabled']) || ($aArgs['enabled'] != 'Y' && $aArgs['enabled'] != 'N')) {
             $errors[]= 'Invalid history value';
         }
 
         return $errors;
     }
 
-    public function initAction(Request $request, Response $response)
-    {
-        //default data
-        $obj['action']['history']          = true;
-        $obj['action']['keyword']          = '';
-        $obj['action']['is_folder_action'] = false;
-        $obj['action']['action_page']      = '';
-        $obj['action']['id_status']        = '_NOSTATUS_';
-        $obj['categoriesList']             = CoreConfigModel::getLettersBoxCategories();
-
-        foreach ($obj['categoriesList'] as $key => $value) {
-            $obj['categoriesList'][$key]['selected'] = true;
-        }
-
-        $obj['statuses'] = StatusModel::get();
-        array_unshift($obj['statuses'], ['id'=>'_NOSTATUS_','label_status'=> _UNCHANGED]);
-        $obj['action_pagesList'] = ActionModel::getAction_pages();
-        array_unshift($obj['action_pagesList']['actionsPageList'], ['id'=>'','label'=> _NO_PAGE, 'name'=>'', 'origin'=>'']);
-        $obj['keywordsList'] = ActionModel::getKeywords();
-        
-        return $response->withJson($obj);
-    }
-
     protected function manageValue($request)
     {
         foreach ($request  as $key => $value) {
-            if (in_array($key, ['is_folder_action', 'history'])) {
+            if (in_array($key, ['enabled'])) {
                 if (empty($value)) {
                     $request[$key] = 'N';
                 } else {