diff --git a/core/trunk/core/class/StatusControler.php b/core/trunk/core/class/StatusControler.php
index 0e59b3b6d6f370b7b6a697d633978921a3bfd91d..e21269e8d8babc1eebefd8ea5861f42f6f8dda4f 100644
--- a/core/trunk/core/class/StatusControler.php
+++ b/core/trunk/core/class/StatusControler.php
@@ -257,6 +257,12 @@ class Maarch_Core_Class_StatusControler
                 && $status->can_be_modified != 'N')) {
           $status->can_be_modified = 'Y';
         }
+        
+        if (!isset($status->is_folder_status)
+            || ($status->is_folder_status != 'N'
+                && $status->is_folder_status != 'Y')) {
+          $status->is_folder_status = 'N';
+        }
 
         $_SESSION['service_tag'] = 'status_check';
         $core = new core_tools();
diff --git a/core/trunk/core/class/class_security.php b/core/trunk/core/class/class_security.php
index 97177d5a94bb4e84591d15dbb1aaab3e5623a845..ffc192bfaac55839039e161a241e85f21b641c8b 100644
--- a/core/trunk/core/class/class_security.php
+++ b/core/trunk/core/class/class_security.php
@@ -761,7 +761,9 @@ class security extends dbquery
                     if(
                         isset($_SESSION['user']['baskets'][$ind_bask]['clause']) 
                         && trim($_SESSION['user']['baskets'][$ind_bask]['clause']
-                    ) <> '') {
+                        ) <> '' 
+                        && $_SESSION['user']['baskets'][$ind_bask]['is_folder_basket'] == 'N'
+                    ) {
                         $basketQuery .= ' or (' 
                             . $_SESSION['user']['baskets'][$ind_bask]['clause'] 
                             . ')';
diff --git a/core/trunk/core/manage_action.php b/core/trunk/core/manage_action.php
index cdce605b1c161fe54b440398ebbfb33807f556f4..dcfc42e9321938d453c373e4b9222aa364a779db 100644
--- a/core/trunk/core/manage_action.php
+++ b/core/trunk/core/manage_action.php
@@ -140,7 +140,10 @@ elseif(trim($_POST['req']) == 'change_status' && !empty($_POST['values']) && !em
         $arr_id[$i] = str_replace('#', '', $arr_id[$i]);
         $result .= $arr_id[$i].'#';
         if (trim($_POST['new_status']) <> '') {
-            if ($_POST['table'] == 'rm_ios') {
+            if ($_POST['table'] == 'folders') {
+                $query_str = "update " . $_POST['table'] .  " set status = '" 
+                    . $_POST['new_status'] . "' where folders_system_id = " . $arr_id[$i];
+            } else if ($_POST['table'] == 'rm_ios') {
                 $query_str = "update " . $_POST['table'] .  " set status = '" 
                     . $_POST['new_status'] . "' where io_id = " . $arr_id[$i];
             } else {
@@ -216,7 +219,10 @@ else
             $arr_id[$i] = str_replace('#', '', $arr_id[$i]);
             $result .= $arr_id[$i].'#';
             if (trim($status) <> '') {
-                if ($_POST['table'] == 'rm_ios') {
+                if ($_POST['table'] == 'folders') {
+                    $query_str = "update " . $_POST['table'] .  " set status = '" 
+                    . $status . "' where folders_system_id = " . $arr_id[$i];
+                } else if ($_POST['table'] == 'rm_ios') {
                     $query_str = "update " . $_POST['table'] .  " set status = '" 
                         . $status . "' where io_id = " . $arr_id[$i];
                 } else {
diff --git a/core/trunk/core/xml/actions_pages.xml b/core/trunk/core/xml/actions_pages.xml
index 6dafa1605e914723d0a5b71c2b2fd911e8a0ad16..8e1a0bfb178693f1628e411c7b31c858a6b2d825 100644
--- a/core/trunk/core/xml/actions_pages.xml
+++ b/core/trunk/core/xml/actions_pages.xml
@@ -159,4 +159,20 @@ An action page is described in a ACTIONPAGE tag :
         <MODULE>records_management</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
     </ACTIONPAGE>
+    <ACTIONPAGE>
+        <ID>confirm_folder_status</ID>
+        <LABEL>_CONFIRM_FOLDER_STATUS</LABEL>
+        <NAME>confirm_folder_status</NAME>
+        <ORIGIN>module</ORIGIN>
+        <MODULE>folder</MODULE>
+        <FLAG_CREATE>false</FLAG_CREATE>
+    </ACTIONPAGE>
+    <ACTIONPAGE>
+        <ID>redirect_folder</ID>
+        <LABEL>_REDIRECT_FOLDER</LABEL>
+        <NAME>redirect_folder</NAME>
+        <ORIGIN>module</ORIGIN>
+        <MODULE>folder</MODULE>
+        <FLAG_CREATE>false</FLAG_CREATE>
+    </ACTIONPAGE>
 </ROOT>
diff --git a/core/trunk/data_en.sql b/core/trunk/data_en.sql
index 27cd5bbee4d0b8821375e2a5b8525e8aa895da1f..2cb77f5471138ec38fb66cd77f3dc4ef460e9251 100644
--- a/core/trunk/data_en.sql
+++ b/core/trunk/data_en.sql
@@ -141,7 +141,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', 'ph
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', 'physical_archive_batch_manage');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', '_print_sep');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'my_alerts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'use_alerts_on_doc');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'use_alerts_on_folder');
@@ -156,7 +156,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'clo
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'print_details');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'my_alerts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'use_alerts_on_doc');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'use_alerts_on_folder');
diff --git a/core/trunk/data_fr.sql b/core/trunk/data_fr.sql
index 1b0665320e88494c7417b20f92fbd739809f507c..d871f8e6b6e57d2b7a804a06753117b5f8d1d276 100644
--- a/core/trunk/data_fr.sql
+++ b/core/trunk/data_fr.sql
@@ -141,7 +141,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', 'ph
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', 'physical_archive_batch_manage');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ARCHIVISTS', '_print_sep');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'my_alerts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'use_alerts_on_doc');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'use_alerts_on_folder');
@@ -156,7 +156,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'clo
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'print_details');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('EMPLOYEES', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'my_alerts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'use_alerts_on_doc');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('MANAGERS', 'use_alerts_on_folder');
diff --git a/core/trunk/data_mlb_fr.sql b/core/trunk/data_mlb_fr.sql
index 7d021cf78707aacff416aeec4ad0de99672bb6a3..7896ecbd0e0346cec8639f09d70fa95a3211a682 100644
--- a/core/trunk/data_mlb_fr.sql
+++ b/core/trunk/data_mlb_fr.sql
@@ -90,7 +90,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'c
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'add_copy_in_process');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'admin_templates');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'view_versions');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'add_links');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESPONSABLE', 'update_case');
@@ -113,7 +113,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'add_cas
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'update_list_diff_in_details');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'create_folder');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'add_new_version');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'add_links');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('AGENT', 'update_case');
@@ -136,7 +136,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'upda
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'reports');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'add_new_version');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'admin');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'admin_architecture');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'my_contacts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('COURRIER', 'put_in_validation');
@@ -171,7 +171,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('ELU', 'tag_view'
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('ELU', 'add_tag_to_res');
 
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'adv_search_mlb');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'view_technical_infos');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'add_links');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('FINANCE', 'view_baskets');
@@ -203,7 +203,7 @@ INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER',
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'update_list_diff_in_details');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'reports');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'admin');
-INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'search_customer');
+INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'view_folder_tree');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'my_contacts');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'view_baskets');
 INSERT INTO usergroups_services (group_id, service_id) VALUES ('RESP_COURRIER', 'join_res_case');
diff --git a/core/trunk/structure.sql b/core/trunk/structure.sql
index 2d6483d24497a139135e3faef597dcc20e0f0111..ba2c163062ab9eee0eaf8243d2c8ab8bd951c0f8 100644
--- a/core/trunk/structure.sql
+++ b/core/trunk/structure.sql
@@ -27,6 +27,7 @@ CREATE TABLE actions
   label_action character varying(255),
   id_status character varying(10),
   is_system character(1) NOT NULL DEFAULT 'N'::bpchar,
+  is_folder_action character(1) NOT NULL DEFAULT 'N'::bpchar,
   enabled character(1) NOT NULL DEFAULT 'Y'::bpchar,
   action_page character varying(255),
   history character(1) NOT NULL DEFAULT 'N'::bpchar,
@@ -235,6 +236,7 @@ CREATE TABLE status
   id character varying(10) NOT NULL,
   label_status character varying(50) NOT NULL,
   is_system character(1) NOT NULL DEFAULT 'Y'::bpchar,
+  is_folder_status character(1) NOT NULL default 'N'::bpchar,
   img_filename character varying(255),
   maarch_module character varying(255) NOT NULL DEFAULT 'apps'::character varying,
   can_be_searched character(1) NOT NULL DEFAULT 'Y'::bpchar,
@@ -683,6 +685,7 @@ CREATE TABLE baskets
   basket_clause text NOT NULL,
   is_generic character varying(6) NOT NULL DEFAULT 'N'::character varying,
   is_visible character(1) NOT NULL DEFAULT 'Y'::bpchar,
+  is_folder_basket character (1) NOT NULL default 'N'::bpchar,
   enabled character(1) NOT NULL DEFAULT 'Y'::bpchar,
   CONSTRAINT baskets_pkey PRIMARY KEY (coll_id, basket_id)
 )
@@ -709,6 +712,8 @@ CREATE TABLE groupbasket
   can_redirect character(1) NOT NULL DEFAULT 'N'::bpchar,
   can_delete character(1) NOT NULL DEFAULT 'N'::bpchar,
   can_insert character(1) NOT NULL DEFAULT 'N'::bpchar,
+  list_lock_clause text,
+  sublist_lock_clause text,
   CONSTRAINT groupbasket_pkey PRIMARY KEY (group_id, basket_id)
 )
 WITH (OIDS=FALSE);
@@ -894,9 +899,11 @@ CREATE TABLE folders
   description character varying(255) DEFAULT NULL::character varying,
   author character varying(255) DEFAULT NULL::character varying,
   typist character varying(255) DEFAULT NULL::character varying,
-  status character varying(50) NOT NULL DEFAULT 'NEW'::character varying,
+  status character varying(50) NOT NULL DEFAULT 'FOLDNEW'::character varying,
   folder_level smallint DEFAULT (1)::smallint,
   creation_date timestamp without time zone NOT NULL,
+  destination character varying(50) DEFAULT NULL,
+  dest_user character varying(128) DEFAULT NULL,
   folder_out_id bigint,
   video_status character varying(10) DEFAULT NULL,
   video_user character varying(128) DEFAULT NULL,