diff --git a/apps/maarch_entreprise/actions/process.php b/apps/maarch_entreprise/actions/process.php
index a979ddd58a31246db7f44965362ea7d9e719ffc2..e1886c179df4c90b369785c4edb90dd1c258350f 100755
--- a/apps/maarch_entreprise/actions/process.php
+++ b/apps/maarch_entreprise/actions/process.php
@@ -246,11 +246,7 @@ function get_form_txt($values, $path_manage_action, $id_action, $table, $module,
 
     $frm_str .= '<i onmouseover="this.style.cursor=\'pointer\';" ';
     $frm_str .= 'onclick="$j.ajax({url :\'index.php?display=true&dir=actions&page=docLocker\', type : \'POST\',data : {\'AJAX_CALL\': true, \'unlock\': true, \'res_id\': '.$res_id.'}, success: function (answer) { ';
-    $frm_str .= 'destroyModal(\'modal_'.$id_action.'\');triggerAngular(\'#/basketList/users/21/groups/2/baskets/9\');';
-    //$frm_str .= 'window.location.href=window.location.href.replace(\'&directLinkToAction\', \'\');} });var tmp_bask=$(\'baskets\');';
-    //$frm_str .= 'if (tmp_bask){tmp_bask.style.visibility=\'visible\';}var tmp_ent =$(\'entity\');';
-    //$frm_str .= 'if (tmp_ent){tmp_ent.style.visibility=\'visible\';} var tmp_cat =$(\'category\');';
-    //$frm_str .= 'if (tmp_cat){tmp_cat.style.visibility=\'visible\';}destroyModal(\'modal_'.$id_action.'\');reinit();"';
+    $frm_str .= 'destroyModal(\'modal_'.$id_action.'\');triggerAngular(\'#/basketList/users/'.$_SESSION['urlV2Basket']['userId'].'/groups/'.$_SESSION['urlV2Basket']['groupIdSer'].'/baskets/'.$_SESSION['urlV2Basket']['basketId'].'\');';
     $frm_str .= ' }});"';
 
     $frm_str .= ' class="fa fa-times-circle fa-2x closeModale" title="'._CLOSE.'"/>';
diff --git a/apps/maarch_entreprise/actions/validate_mail.php b/apps/maarch_entreprise/actions/validate_mail.php
index 178355e9a3c550ee7d14e56bc964f2aa0c80a90c..d840fece0d281d86316f34e373c9e8ff1514bf24 100755
--- a/apps/maarch_entreprise/actions/validate_mail.php
+++ b/apps/maarch_entreprise/actions/validate_mail.php
@@ -281,13 +281,11 @@ function get_form_txt($values, $path_manage_action, $id_action, $table, $module,
     $frm_str .= '</div>';
     $frm_str .= '</div>';
 
-    $frm_str .= '<i onmouseover="this.style.cursor=\'pointer\';" '
-        .'onclick="new Ajax.Request(\''.$_SESSION['config']['businessappurl']
-        .'index.php?display=true&dir=actions&page=docLocker\',{ method:\'post\', parameters: {\'AJAX_CALL\': true, \'unlock\': true, \'res_id\': '
-        .functions::xssafe($res_id).'}, onSuccess: function(answer){window.location.href=\''
-        .$_SESSION['config']['businessappurl'].'index.php?page=view_baskets&module=basket&baskets='
-        .$_SESSION['current_basket']['id'].'\';} });$j(\'#baskets\').css(\'visibility\',\'visible\');destroyModal(\'modal_'.$id_action.'\');reinit();"'
-        .' class="fa fa-times-circle fa-2x closeModale" title="'._CLOSE.'"/>';
+    $frm_str .= '<i onmouseover="this.style.cursor=\'pointer\';" ';
+    $frm_str .= 'onclick="$j.ajax({url :\'index.php?display=true&dir=actions&page=docLocker\', type : \'POST\',data : {\'AJAX_CALL\': true, \'unlock\': true, \'res_id\': '.$res_id.'}, success: function (answer) { ';
+    $frm_str .= 'destroyModal(\'modal_'.$id_action.'\');triggerAngular(\'#/basketList/users/'.$_SESSION['urlV2Basket']['userId'].'/groups/'.$_SESSION['urlV2Basket']['groupIdSer'].'/baskets/'.$_SESSION['urlV2Basket']['basketId'].'\');';
+    $frm_str .= ' }});"';
+    $frm_str .=' class="fa fa-times-circle fa-2x closeModale" title="'._CLOSE.'"/>';
     $frm_str .= '</i>';
 
     //PART LEFT
diff --git a/apps/maarch_entreprise/documents_list_with_attachments.php b/apps/maarch_entreprise/documents_list_with_attachments.php
index 5e4008f64a02d0160db6c63a33db3e0c57990636..947b3554d9234241a9574adf25707ae2455cca8b 100755
--- a/apps/maarch_entreprise/documents_list_with_attachments.php
+++ b/apps/maarch_entreprise/documents_list_with_attachments.php
@@ -5,672 +5,46 @@
 * This file is part of Maarch software.
 
 *
-* @brief   documents_list_width_attachments
+* @brief documents_list_width_attachments
 *
-* @author  dev <dev@maarch.org>
+* @author dev <dev@maarch.org>
 * @ingroup apps
 */
-require_once 'core/class/class_request.php';
-require_once 'core/class/class_security.php';
-require_once 'apps/'.$_SESSION['config']['app_id'].'/class/class_contacts_v2.php';
-require_once 'core/class/class_manage_status.php';
 require_once 'apps/'.$_SESSION['config']['app_id'].'/class/class_lists.php';
 
-$status_obj = new manage_status();
-$security = new security();
-$core_tools = new core_tools();
-$request = new request();
-$contact = new contacts_v2();
-$list = new lists();
-
-//Include definition fields
-require_once 'apps/'.$_SESSION['config']['app_id'].'/definition_mail_categories.php';
-
-//Order
-    $order = $order_field = '';
-    $order = $list->getOrder();
-    $order_field = $list->getOrderField();
-    $_SESSION['save_list']['order'] = $order;
-    $_SESSION['save_list']['order_field'] = $order_field;
- //URL extra Parameters
-    $parameters = '';
-    $start = $list->getStart();
-
-    if (!empty($order_field) && !empty($order)) {
-        $parameters .= '&order='.$order.'&order_field='.$order_field;
-    }
-    if (!empty($what)) {
-        $parameters .= '&what='.$what;
-    }
-    if (!empty($selectedTemplate)) {
-        $parameters .= '&template='.$selectedTemplate;
-    }
-
-    $parameters .= '&start='.$start;
-    $_SESSION['save_list']['start'] = $start;
-
-//Keep some parameters
-$parameters = '';
-if (isset($_REQUEST['order']) && !empty($_REQUEST['order'])) {
-    $parameters .= '&order='.$_REQUEST['order'];
-    $_SESSION['save_list']['order'] = $_REQUEST['order'];
-
-    if (isset($_REQUEST['order_field']) && !empty($_REQUEST['order_field'])) {
-        $parameters .= '&order_field='.$_REQUEST['order_field'];
-        $_SESSION['save_list']['order_field'] = $_REQUEST['order_field'];
-    }
-}
-if (isset($_REQUEST['what']) && !empty($_REQUEST['what'])) {
-    $parameters .= '&what='.$_REQUEST['what'];
-}
-if (isset($_REQUEST['template']) && !empty($_REQUEST['template'])) {
-    $parameters .= '&template='.$_REQUEST['template'];
-}
-if (isset($_REQUEST['start']) && !empty($_REQUEST['start'])) {
-    $parameters .= '&start='.$_REQUEST['start'];
-    $_SESSION['save_list']['start'] = $_REQUEST['start'];
-}
-
-//URL extra parameters
-$urlParameters = '';
-//origin
-if ($_REQUEST['origin'] == 'searching') {
-    $urlParameters .= '&origin=searching';
-}
-
-//Basket information
-if (!empty($_SESSION['current_basket']['view'])) {
-    $table = $_SESSION['current_basket']['view'];
-} else {
-    $table = $_SESSION['current_basket']['table'];
-}
-$_SESSION['origin'] = 'basket';
-$_SESSION['collection_id_choice'] = $_SESSION['current_basket']['coll_id']; //Collection
-
-//Table
-$select[$table] = array();
-
-//Fields
-array_push(
-    $select[$table], 'res_id', 'status', 'category_id as category_img',
-    'contact_firstname', 'contact_lastname', 'contact_society', 'user_lastname',
-    'user_firstname', 'priority', 'creation_date', 'admission_date', 'subject',
-    'process_limit_date', 'entity_label', 'dest_user', 'category_id', 'type_label',
-    'address_id', 'exp_user_id', 'doc_custom_n1 as count_attachment', 'alt_identifier', 'is_multicontacts', 'locker_user_id', 'locker_time', 'filename', 'res_id as real_dest'
-);
-
-if ($core_tools->is_module_loaded('cases') == true) {
-    array_push($select[$table], 'case_id', 'case_label', 'case_description');
-}
-
-$arrayPDO = array();
-//Where clause
-$where_tab = array();
-//From basket
-if (!empty($_SESSION['current_basket']['clause'])) {
-    $where_tab[] = '('.stripslashes($_SESSION['current_basket']['clause']).')';
-} //Basket clause
-//From filters
-$filterClause = $list->getFilters();
-if (!empty($filterClause)) {
-    $where_tab[] = $filterClause;
-} //Filter clause
-//From search
-if ((isset($_REQUEST['origin']) && $_REQUEST['origin'] == 'searching')
-    && !empty($_SESSION['searching']['where_request'])
-) {
-    $where_tab[] = $_SESSION['searching']['where_request'].'(1=1)';
-    $arrayPDO = array_merge($arrayPDO, $_SESSION['searching']['where_request_parameters']);
-}
-//Build where
-$where = implode(' and ', $where_tab);
-
-//Order
-
-$order = $order_field = '';
-$arr_order = explode(', ', $_SESSION['current_basket']['basket_res_order']);
-if (!empty($arr_order) && count($arr_order) == 1) {
-    $order = $list->getOrder();
-    $order_field = $list->getOrderField();
-}
-if (!empty($order_field) && !empty($order)) {
-    if ($_REQUEST['order_field'] == 'alt_identifier') {
-        $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$order;
-    } else if ($_REQUEST['order_field'] == 'priority') {
-        $where .= ' and '.$table.'.priority = priorities.id';
-        $select['priorities'] = ['order', 'id'];
-        $orderstr = 'order by priorities.order '.$order;
-    } else {
-        $orderstr = 'order by '.$order_field.' '.$order;
-    }
-    $_SESSION['last_order_basket'] = $orderstr;
-} elseif (!empty($_SESSION['save_list']['order']) && !empty($_SESSION['save_list']['order_field'])) {
-    if ($_SESSION['save_list']['order_field'] == 'alt_identifier') {
-        $orderstr = 'order by order_alphanum(alt_identifier)'.' '.$_SESSION['save_list']['order'];
-    } else if ($_SESSION['save_list']['order_field']) {
-        $where .= ' and '.$table.'.priority = priorities.id';
-        $select['priorities'] = ['order', 'id'];
-        $orderstr = 'order by priorities.order '.$_SESSION['save_list']['order'];
-    } else {
-        $orderstr = 'order by '.$_SESSION['save_list']['order_field'].' '.$_SESSION['save_list']['order'];
-    }
-    $_SESSION['last_order_basket'] = $orderstr;
-} else {
-    if (!empty($_SESSION['current_basket']['basket_res_order'])) {
-        if (!empty($arr_order) && count($arr_order) == 1) {
-            $orders = explode(' ', $arr_order[0]);
-            if (!empty($orders[1])) {
-                $list->setOrder($orders[1]);
-            } else {
-                $orders[] = 'desc';
-                $list->setOrder();
-            }
-            $list->setOrderField($orders[0]);
-        }
-        $orderstr = 'order by '.str_replace('alt_identifier', 'order_alphanum(alt_identifier)', $_SESSION['current_basket']['basket_res_order']);
-        if (strpos($_SESSION['current_basket']['basket_res_order'], 'priority') !== false) {
-            $where .= ' and '.$table.'.priority = priorities.id';
-            $select['priorities'] = ['order', 'id'];
-            $orderstr = 'order by priorities.order '.$orders[1];
-        }
-        $_SESSION['last_order_basket'] = $_SESSION['current_basket']['basket_res_order'];
-    } else {
-        $list->setOrder();
-        $list->setOrderField('res_id');
-        $orderstr = 'order by res_id desc';
-        $_SESSION['last_order_basket'] = $orderstr;
-    }
-}
 
-if (isset($_REQUEST['lines'])) {
-    $limit = $_REQUEST['lines'];
-} else {
-    $limit = 'default';
-}
-
-//Request
-$tab = $request->PDOselect($select, $where, $arrayPDO, $orderstr, $_SESSION['config']['databasetype'], $limit, false, '', '', '', false, false, 'distinct', $_SESSION['save_list']['start']);
-
-$_SESSION['current_basket']['last_query'] = array();
-$_SESSION['current_basket']['last_query']['select'] = $select;
-$_SESSION['current_basket']['last_query']['where'] = $where;
-$_SESSION['current_basket']['last_query']['arrayPDO'] = $arrayPDO;
-$_SESSION['current_basket']['last_query']['orderstr'] = $orderstr;
-
-//Templates
-$defaultTemplate = 'documents_list_with_attachments';
-$selectedTemplate = $list->getTemplate();
-if (empty($selectedTemplate)) {
-    if (!empty($defaultTemplate)) {
-        $list->setTemplate($defaultTemplate);
-        $selectedTemplate = $list->getTemplate();
-    }
-}
-$template_list = array();
-array_push($template_list, 'documents_list_with_attachments');
-if ($core_tools->is_module_loaded('cases')) {
-    array_push($template_list, 'cases_list');
-}
-
-//For status icon
-$extension_icon = '';
-if ($selectedTemplate != 'none') {
-    $extension_icon = '_big';
-}
-
-$db = new Database();
-
-//Result Array
-$addressId = 0;
-$tabI = count($tab);
-for ($i = 0; $i < $tabI; ++$i) {
-    $tabJ = count($tab[$i]);
-    for ($j = 0; $j < $tabJ; ++$j) {
-        foreach (array_keys($tab[$i][$j]) as $value) {
-            if ($tab[$i][$j][$value] == 'res_id') {
-                $tab[$i][$j]['res_id'] = $tab[$i][$j]['value'];
-                $tab[$i][$j]['label'] = _GED_NUM;
-                $tab[$i][$j]['size'] = '4';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = true;
-                $tab[$i][$j]['order'] = 'res_id';
-                $_SESSION['mlb_search_current_res_id'] = $tab[$i][$j]['value'];
-
-                // notes
-                $query = 'SELECT ';
-                $query .= 'notes.id ';
-                $query .= 'FROM ';
-                $query .= 'notes ';
-                $query .= 'left join ';
-                $query .= 'note_entities ';
-                $query .= 'on ';
-                $query .= 'notes.id = note_entities.note_id ';
-                $query .= 'WHERE ';
-                $query .= 'identifier = ? ';
-                $arrayPDOnotes = array($tab[$i][$j]['value']);
-                $query .= 'AND ';
-                $query .= '( ';
-                $query .= '( ';
-                $query .= 'item_id IN (';
-
-                if(!empty($_SESSION['user']['entities'])){
-                    foreach ($_SESSION['user']['entities'] as $entitiestmpnote) {
-                        $query .= '?, ';
-                        $arrayPDOnotes = array_merge($arrayPDOnotes, array($entitiestmpnote['ENTITY_ID']));
-                    }
-                    $query = substr($query, 0, -2);
-                } else {
-                    $query .= "''";
-                }
-
-                $query .= ') ';
-                $query .= 'OR ';
-                $query .= 'item_id IS NULL ';
-                $query .= ') ';
-                $query .= 'OR ';
-                $query .= 'user_id = ? ';
-                $arrayPDOnotes = array_merge($arrayPDOnotes, array($_SESSION['user']['UserId']));
-                $query .= ') ';
-                $stmt = $db->query($query, $arrayPDOnotes);
-                $tab[$i][$j]['hasNotes'] = $stmt->fetchObject();
-                $tab[$i][$j]['res_multi_contacts'] = $_SESSION['mlb_search_current_res_id'];
-            }
-
-            if ($tab[$i][$j][$value] == 'address_id') {
-                $addressId = $tab[$i][$j]['value'];
-                $tab[$i][$j]['show'] = false;
-            }
-            if ($tab[$i][$j][$value] == 'creation_date') {
-                $tab[$i][$j]['value'] = $core_tools->format_date_db($tab[$i][$j]['value'], false, '', true);
-                $tab[$i][$j]['label'] = _CREATION_DATE;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = true;
-                $tab[$i][$j]['order'] = 'creation_date';
-            }
-            if ($tab[$i][$j][$value] == 'admission_date') {
-                $tab[$i][$j]['value'] = $core_tools->format_date_db($tab[$i][$j]['value'], false);
-                $tab[$i][$j]['label'] = _ADMISSION_DATE;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = false;
-                $tab[$i][$j]['order'] = 'admission_date';
-            }
-            if ($tab[$i][$j][$value] == 'process_limit_date') {
-                $tab[$i][$j]['value'] = $core_tools->format_date_db($tab[$i][$j]['value'], false);
-                $compareDate = '';
-                if ($tab[$i][$j]['value'] != '' && ($statusCmp == 'NEW' || $statusCmp == 'COU' || $statusCmp == 'VAL' || $statusCmp == 'RET')) {
-                    $compareDate = $core_tools->compare_date($tab[$i][$j]['value'], date('d-m-Y'));
-                    if ($compareDate == 'date2') {
-                        $tab[$i][$j]['value'] = "<span style='color:red;'><b>".$tab[$i][$j]['value'].'<br><small>('.$core_tools->nbDaysBetween2Dates($tab[$i][$j]['value'], date('d-m-Y')).' '._DAYS.')</small></b></span>';
-                    } elseif ($compareDate == 'date1') {
-                        $tab[$i][$j]['value'] = $tab[$i][$j]['value'].'<br><small>('.$core_tools->nbDaysBetween2Dates(date('d-m-Y'), $tab[$i][$j]['value']).' '._DAYS.')</small>';
-                    } elseif ($compareDate == 'equal') {
-                        $tab[$i][$j]['value'] = "<span style='color:blue;'><b>".$tab[$i][$j]['value'].'<br><small>('._LAST_DAY.')</small></b></span>';
-                    }
-                }
-                if (empty($tab[$i][$j]['value'])) {
-                    $tab[$i][$j]['value'] = '<i style="opacity:0.5;">'._UNDEFINED_DATA.'</i>';
-                }
-                $tab[$i][$j]['label'] = _PROCESS_LIMIT_DATE;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = true;
-                $tab[$i][$j]['order'] = 'process_limit_date';
-            }
-            if ($tab[$i][$j][$value] == 'category_id') {
-                $_SESSION['mlb_search_current_category_id'] = $tab[$i][$j]['value'];
-                $tab[$i][$j]['value'] = $_SESSION['coll_categories'][$_SESSION['collection_id_choice']][$tab[$i][$j]['value']];
-                $tab[$i][$j]['label'] = _CATEGORY;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = true;
-                $tab[$i][$j]['order'] = 'category_id';
-            }
-            if ($tab[$i][$j][$value] == 'priority') {
-                $fakeId = null;
-                foreach ($_SESSION['mail_priorities_id'] as $key => $prioValue) {
-                    if ($prioValue == $tab[$i][$j]['value']) {
-                        $fakeId = $key;
-                    }
-                }
-                $tab[$i][$j]['value'] = $_SESSION['mail_priorities'][$fakeId];
-                $tab[$i][$j]['label'] = _PRIORITY;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = false;
-                $tab[$i][$j]['order'] = 'priority';
-            }
-            if ($tab[$i][$j][$value] == 'subject') {
-                $tab[$i][$j]['value'] = $request->cut_string($request->show_string($tab[$i][$j]['value'], '', '', '', false), 250);
-                $tab[$i][$j]['label'] = _SUBJECT;
-                $tab[$i][$j]['size'] = '12';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = true;
-                $tab[$i][$j]['order'] = 'subject';
-            }
-            if ($tab[$i][$j][$value] == 'contact_firstname') {
-                $contact_firstname = $tab[$i][$j]['value'];
-                $tab[$i][$j]['show'] = false;
-            }
-            if ($tab[$i][$j][$value] == 'contact_lastname') {
-                $contact_lastname = $tab[$i][$j]['value'];
-                $tab[$i][$j]['show'] = false;
-            }
-            if ($tab[$i][$j][$value] == 'contact_society') {
-                $contact_society = $tab[$i][$j]['value'];
-                $tab[$i][$j]['show'] = false;
-            }
-            if ($tab[$i][$j][$value] == 'user_firstname') {
-                $user_firstname = $tab[$i][$j]['value'];
-                $tab[$i][$j]['show'] = false;
-            }
-            if ($tab[$i][$j][$value] == 'user_lastname') {
-                $user_lastname = $tab[$i][$j]['value'];
-                $tab[$i][$j]['show'] = false;
-            }
-            if ($tab[$i][$j][$value] == 'exp_user_id') {
-                $itContactI = $i;
-                $itContactJ = $j;
-                if (empty($contact_lastname) && empty($contact_firstname) && empty($user_lastname) && empty($user_firstname) && !empty($addressId)) {
-                    $query = 'SELECT ca.firstname, ca.lastname FROM contact_addresses ca WHERE ca.id = ?';
-                    $arrayPDO = array($addressId);
-                    $stmt2 = $db->query($query, $arrayPDO);
-                    $return_contact = $stmt2->fetchObject();
-
-                    if (!empty($return_contact)) {
-                        $contact_firstname = $return_contact->firstname;
-                        $contact_lastname = $return_contact->lastname;
-                    }
-                }
-
-                $tab[$i][$j]['label'] = _CONTACT;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = false;
-                $tab[$i][$j]['value_export'] = $tab[$i][$j]['value'];
-                if (empty($contact_lastname) && empty($contact_firstname) && empty($user_lastname) && empty($user_firstname) && empty($contact_society)) {
-                    $tab[$i][$j]['value'] = '<i style="opacity:0.5;">'._UNDEFINED_DATA.'</i>';
-                } else {
-                    $tab[$i][$j]['value'] = $contact->get_contact_information_from_view($_SESSION['mlb_search_current_category_id'], $contact_lastname, $contact_firstname, $contact_society, $user_lastname, $user_firstname);
-                }
-                $tab[$i][$j]['order'] = false;
-            }
-            if ($tab[$i][$j][$value] == 'dest_user') {
-                $tab[$i][$j]['label'] = 'dest_user';
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = false;
-                $tab[$i][$j]['value_export'] = $tab[$i][$j]['value'];
-                if (!empty($tab[$i][$j]['value'])) {
-                    $user = \User\models\UserModel::getByLogin(['login' => $tab[$i][$j]['value'], 'select' => ['firstname', 'lastname']]);
-                    $dest = $tab[$i][$j]['value'];
-                    $dest = $user['firstname'] . ' ' . $user['lastname'];
-                } else {
-                    $dest = '<i style="opacity:0.5;">'._UNDEFINED_DATA.'</i>';
-                }
-                $tab[$i][$j]["value"]=$dest;
-                if ($tab[$i][15]['value'] == 'outgoing') {
-                    $tab[$i][$j]['value'] = '<b>'._WRITTEN_BY.' : </b>'.$tab[$i][$j]['value'];
-                } else {
-                    $tab[$i][$j]['value'] = '<b>'._PROCESSED_BY.' : </b>'.$tab[$i][$j]['value'];
-                }
-                $tab[$i][$j]['order'] = false;
-            }
-            if ($tab[$i][$j][$value] == 'is_multicontacts') {
-                if ($tab[$i][$j]['value'] == 'Y') {
-                    $tab[$i][$j]['label'] = _CONTACT;
-                    $tab[$i][$j]['size'] = '10';
-                    $tab[$i][$j]['label_align'] = 'left';
-                    $tab[$i][$j]['align'] = 'left';
-                    $tab[$i][$j]['valign'] = 'bottom';
-                    $tab[$i][$j]['show'] = false;
-                    $tab[$i][$j]['value_export'] = $tab[$i][$j]['value'];
-                    $tab[$i][$j]['order'] = false;
-                    if ($_SESSION['mlb_search_current_category_id'] == 'incoming') {
-                        $prefix = '<b>'._TO_CONTACT_C.'</b>';
-                    } elseif ($_SESSION['mlb_search_current_category_id'] == 'outgoing' || $_SESSION['mlb_search_current_category_id'] == 'internal') {
-                        $prefix = '<b>'._FOR_CONTACT_C.'</b>';
-                    } else {
-                        $prefix = '';
-                    }
-                    $tab[$i][$j]['value'] = $prefix.' '._MULTI_CONTACT;
-                    $tab[$i][$j]['is_multi_contacts'] = 'Y';
-                    $tab[$itContactI][$itContactJ]['value'] = null;
-                }
-            }
-            if ($tab[$i][$j][$value] == 'type_label') {
-                $tab[$i][$j]['value'] = $request->show_string($tab[$i][$j]['value']);
-                $tab[$i][$j]['label'] = _TYPE;
-                $tab[$i][$j]['size'] = '12';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = true;
-                $tab[$i][$j]['order'] = 'type_label';
-            }
-            if ($tab[$i][$j][$value] == 'status') {
-                //couleurs des priorités
-                $fakeId = null;
-                foreach ($_SESSION['mail_priorities_id'] as $key => $prioValue) {
-                    if ($prioValue == $tab[$i][8]['value']) {
-                        $fakeId = $key;
-                    }
-                }
-                $style = "style='color:".$_SESSION['mail_priorities_color'][$fakeId].";font-size:36px'";
-                $res_status = $status_obj->get_status_data($tab[$i][$j]['value'], $extension_icon);
-                $statusCmp = $tab[$i][$j]['value'];
-                $img_class = substr($res_status['IMG_SRC'], 0, 2);
-                if (!isset($res_status['IMG_SRC']) || empty($res_status['IMG_SRC'])) {
-                    $tab[$i][$j]['value'] = '<i  '.$style." class = 'fm fm-letter-status-new fm-3x' alt = '".$res_status['LABEL']."' title = '".$res_status['LABEL']."'></i>";
-                } else {
-                    $tab[$i][$j]['value'] = '<i '.$style." class = '".$img_class.' '.$res_status['IMG_SRC'].' '.$img_class."-3x' alt = '".$res_status['LABEL']."' title = '".$res_status['LABEL']."'></i>";
-                }
-                $tab[$i][$j]['label'] = _STATUS;
-                $tab[$i][$j]['size'] = '4';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = true;
-                $tab[$i][$j]['order'] = 'status';
-            }
-            if ($tab[$i][$j][$value] == 'category_img') {
-                $tab[$i][$j]['label'] = _CATEGORY;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'right';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = false;
-                $tab[$i][$j]['value_export'] = $tab[$i][$j]['value'];
-                $my_imgcat = get_img_cat($tab[$i][$j]['value'], $extension_icon);
-                $tab[$i][$j]['value'] = $my_imgcat;
-                $tab[$i][$j]['value'] = $tab[$i][$j]['value'];
-                $tab[$i][$j]['order'] = 'category_id';
-            }
-            if ($tab[$i][$j][$value] == 'count_attachment') {
-                $query = "SELECT count(res_id) as total FROM res_view_attachments
-                            WHERE res_id_master = ?
-                            AND status NOT IN ('DEL', 'OBS') AND attachment_type NOT IN ('converted_pdf', 'print_folder') AND coll_id = ? AND (status <> 'TMP' or (typist = ? and status = 'TMP'))";
-                $arrayPDO = array($tab[$i][0]['res_id'], $_SESSION['collection_id_choice'], $_SESSION['user']['UserId']);
-                $stmt2 = $db->query($query, $arrayPDO);
-                $return_count = $stmt2->fetchObject();
+$list = new lists();
 
-                $tab[$i][$j]['label'] = _ATTACHMENTS;
-                $tab[$i][$j]['size'] = '12';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = false;
-                $tab[$i][$j]['value'] = "$return_count->total";
-                $tab[$i][$j]['order'] = 'count_attachment';
-            }
-            if ($tab[$i][$j][$value] == 'case_id' && $core_tools->is_module_loaded('cases') == true) {
-                $tab[$i][$j]['label'] = _CASE_NUM;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = false;
-                $tab[$i][$j]['value_export'] = $tab[$i][$j]['value'];
-                $tab[$i][$j]['value'] = "<a href='".$_SESSION['config']['businessappurl'].'index.php?page=details_cases&module=cases&id='.$tab[$i][$j]['value']."'>".$tab[$i][$j]['value'].'</a>';
-                $tab[$i][$j]['order'] = 'case_id';
-            }
-            if ($tab[$i][$j][$value] == 'case_label' && $core_tools->is_module_loaded('cases') == true) {
-                $tab[$i][$j]['label'] = _CASE_LABEL;
-                $tab[$i][$j]['size'] = '10';
-                $tab[$i][$j]['label_align'] = 'left';
-                $tab[$i][$j]['align'] = 'left';
-                $tab[$i][$j]['valign'] = 'bottom';
-                $tab[$i][$j]['show'] = false;
-                $tab[$i][$j]['value_export'] = $tab[$i][$j]['value'];
-                $tab[$i][$j]['order'] = 'case_label';
-            }
-            if ($tab[$i][$j][$value] == 'real_dest') {
-                $query = 'SELECT item_id, type FROM resource_contacts WHERE res_id = ?';
-                $arrayPDO = array($tab[$i][$j]['value']);
-                $stmt2 = $db->query($query, $arrayPDO);
-                $return_stmt = $stmt2->fetchObject();
+$tab = [
+"column" => "res_id",
+"value" => "0"
+];
 
-                if ($return_stmt->type == 'contact') {
-                    $query = 'SELECT * FROM view_contacts WHERE ca_id = ?';
-                    $arrayPDO = array($return_stmt->item_id);
-                    $stmt2 = $db->query($query, $arrayPDO);
-                    $return_stmt = $stmt2->fetch(PDO::FETCH_ASSOC);
-                    if ($return_stmt == false) {
-                        $tab[$i][$j]['value'] = '';
-                    } else {
-                        $formattedContact = \SrcCore\controllers\AutoCompleteController::getFormattedContact(['contact' => $return_stmt]);
-                        $tab[$i][$j]['value'] = $formattedContact['contact']['contact'];
-                    }
-                } else if ($return_stmt->type == 'entity') {
-                    $query = 'SELECT short_label FROM entities WHERE id = ?';
-                    $arrayPDO = array($return_stmt->item_id);
-                    $stmt2 = $db->query($query, $arrayPDO);
-                    $return_stmt = $stmt2->fetchObject();
-                    $tab[$i][$j]['value'] = $return_stmt->short_label;
-                } else {
-                    $query = 'SELECT firstname, lastname FROM users WHERE id = ?';
-                    $arrayPDO = array($return_stmt->item_id);
-                    $stmt2 = $db->query($query, $arrayPDO);
-                    $return_stmt = $stmt2->fetchObject();
-                    $tab[$i][$j]['value'] = $return_stmt->firstname.' '. $return_stmt->lastname;
-                }
-                if (empty(trim($tab[$i][$j]['value']))) {
-                    $tab[$i][$j]['value'] = null;
-                } else if ($_SESSION['mlb_search_current_category_id'] == 'outgoing') {
-                    $tab[$i][$j]['value'] = '<b>'._TO_CONTACT_C.'</b>'.$tab[$i][$j]['value'];
-                } else {
-                    $tab[$i][$j]['value'] = '<b>'._FOR_CONTACT_C.'</b>'.$tab[$i][$j]['value'];
-                }
-                $tab[$i][$j]['order'] = false;
-            }
-        }
-    }
-}
 //Cle de la liste
 $listKey = 'res_id';
 
 //Initialiser le tableau de parametres
 $paramsTab = array();
-$paramsTab['pageTitle'] = _RESULTS.' : '.$_SESSION['save_list']['full_count'].' '._FOUND_DOCS;   //Titre de la page
-$paramsTab['listCss'] = 'listing largerList spec';                     //css
-$paramsTab['bool_sortColumn'] = true;                                          //Affichage Tri
-$paramsTab['bool_bigPageTitle'] = false;                                         //Affichage du titre en grand
-$paramsTab['bool_showIconDocument'] = true;                                          //Affichage de l'icone du document
-$paramsTab['bool_showIconDetails'] = true;                                          //Affichage de l'icone de la page de details
-$paramsTab['urlParameters'] = 'baskets='.$_SESSION['current_basket']['id']   //Parametres d'url supplementaires
-                                             .$urlParameters;
-$paramsTab['start'] = $_REQUEST['start'];
-$paramsTab['filters'] = array(                                         //Filtres
-                                                'entity',
-                                                'entity_subentities',
-                                                'category',
-                                                'priority',
-                                                'identifier',
-                                            );
-
-if (count($template_list) > 0) {                                                           //Templates
-    $paramsTab['templates'] = array();
-    $paramsTab['templates'] = $template_list;
-}
+$paramsTab['pageTitle'] = ''; //Titre de la page
+$paramsTab['listCss'] = 'listing largerList spec'; //css
+$paramsTab['bool_sortColumn'] = false; //Affichage Tri
+$paramsTab['bool_bigPageTitle'] = false; //Affichage du titre en grand
+$paramsTab['bool_showIconDocument'] = false; //Affichage de l'icone du document
+$paramsTab['bool_showIconDetails'] = false; //Affichage de l'icone de la page de details
+$paramsTab['urlParameters'] = 'baskets='.$_SESSION['current_basket']['id'] //Parametres d'url supplementaires
+.$urlParameters;
+$paramsTab['start'] = 0;
 
-$paramsTab['bool_showTemplateDefaultList'] = true;                                          //Default list (no template)
-$paramsTab['defaultTemplate'] = $defaultTemplate;                              //Default template
-$paramsTab['start'] = $_SESSION['save_list']['start'];
-$paramsTab['tools'] = array();                                       //Icones dans la barre d'outils
+$paramsTab['bool_showTemplateDefaultList'] = false; //Default list (no template)
+$paramsTab['defaultTemplate'] = ''; //Default template
+$paramsTab['tools'] = array(); //Icones dans la barre d'outils
 
-//Fileplan
-if ($core_tools->test_service('fileplan', 'fileplan', false)) {
-    include_once 'modules'.DIRECTORY_SEPARATOR.'fileplan'.DIRECTORY_SEPARATOR
-        .'class'.DIRECTORY_SEPARATOR.'class_modules_tools.php';
-    $fileplan = new fileplan();
-    if (count($fileplan->getUserFileplan()) > 0
-        || (count($fileplan->getEntitiesFileplan()) > 0
-        && $core_tools->test_service('put_doc_in_fileplan', 'fileplan', false))
-    ) {
-        $paramsTab['bool_checkBox'] = true;
-        $paramsTab['bool_standaloneForm'] = true;
-        $positions = array(
-            'script' => "showFileplanList('".$_SESSION['config']['businessappurl']
-                                    .'index.php?display=true&module=fileplan&page=fileplan_ajax_script'
-                                    .'&mode=setPosition&origin=basket&coll_id='.$_SESSION['current_basket']['coll_id']
-                                    .$parameters."', 'formList', '600px', '510px', '"
-                                    ._CHOOSE_ONE_DOC."')",
-            'icon' => 'bookmark',
-            'tooltip' => _FILEPLAN,
-            'disabledRules' => count($tab).' == 0 || '.$selectedTemplate." == 'cases_list_search_adv'",
-        );
-        array_push($paramsTab['tools'], $positions);
-    }
-}
-if (isset($_REQUEST['origin']) && $_REQUEST['origin'] == 'searching') {
-    $save = array(
-            'script' => "createModal(form_txt, 'save_search', '100px', '500px');window.location.href='#top';",
-            'icon' => 'save',
-            'tooltip' => _SAVE_QUERY,
-            'disabledRules' => count($tab).' == 0',
-            );
-    array_push($paramsTab['tools'], $save);
-}
-$export = array(
-        'script' => "window.open('".$_SESSION['config']['businessappurl']."index.php?display=true&page=export', '_blank');",
-        'icon' => 'file-excel',
-        'tooltip' => _EXPORT_LIST,
-        'disabledRules' => count($tab).' == 0',
-        );
-array_push($paramsTab['tools'], $export);
-$export2 = array(
-    'script' => "print_current_result_list('".$_SESSION['config']['businessappurl']."');",
-    'icon' => 'print',
-    'tooltip' => _PRINT_LIST,
-    'disabledRules' => count($tab).' == 0',
-    );
-array_push($paramsTab['tools'], $export2);
 
 //Afficher la liste
 $status = 0;
 $content = $list->showList($tab, $paramsTab, $listKey, $_SESSION['current_basket']);
-// $debug = $list->debug(false);
 
-$content .= '<script>$j(\'#container\').attr(\'style\', \'width: 90%; min-width: 1000px\');$j(\'#content\').attr(\'style\', \'width: auto; min-width: 1000px;\');';
-$content .= '$j(\'#inner_content\').attr(\'style\', \'width: auto; min-width: 1000px;\');</script>';
+$content .= '<script>$j(\'#inner_content\').hide();</script>';
 
 echo "{'status' : ".$status.", 'content' : '".addslashes($debug.$content)."', 'error' : '".addslashes(functions::xssafe($error))."'}";
+
diff --git a/composer.json b/composer.json
index 57825e3f076926da20f562a13765c25f675d775b..0c96bdadb2fa7d49b2af6ba7adbe4fe2957c624f 100755
--- a/composer.json
+++ b/composer.json
@@ -1,36 +1,37 @@
 {
     "autoload": {
     	"psr-4": {
-            "SrcCore\\"           : "src/core/",
-            "Action\\"            : "src/app/action/",
-            "Attachment\\"        : "src/app/attachment/",
-            "Basket\\"            : "src/app/basket/",
-            "Configuration\\"     : "src/app/configuration/",
-            "Contact\\"           : "src/app/contact/",
-            "ContentManagement\\" : "src/app/contentManagement/",
-            "Convert\\"           : "src/app/convert/",
-            "Docserver\\"         : "src/app/docserver/",
-            "Doctype\\"           : "src/app/doctype/",
-            "Email\\"             : "src/app/email/",
-            "Entity\\"            : "src/app/entity/",
-            "Folder\\"            : "src/app/folder/",
-            "Group\\"             : "src/app/group/",
-            "History\\"           : "src/app/history/",
-            "Home\\"              : "src/app/home/",
-            "Link\\"              : "src/app/link/",
-            "Note\\"              : "src/app/note/",
-            "Notification\\"      : "src/app/notification/",
-            "Parameter\\"         : "src/app/parameter/",
-            "Priority\\"          : "src/app/priority/",
-            "Report\\"            : "src/app/report/",
-            "Resource\\"          : "src/app/resource/",
-            "SignatureBook\\"     : "src/app/signatureBook/",
-            "Status\\"            : "src/app/status/",
-            "Tag\\"               : "src/app/tag/",
-            "Template\\"          : "src/app/template/",
-            "User\\"              : "src/app/user/",
-            "VersionUpdate\\"     : "src/app/versionUpdate/",
-            "Sendmail\\"          : "modules/sendmail/"
+            "SrcCore\\"                 : "src/core/",
+            "AcknowledgementReceipt\\"  : "src/app/acknowledgementReceipt/",
+            "Action\\"                  : "src/app/action/",
+            "Attachment\\"              : "src/app/attachment/",
+            "Basket\\"                  : "src/app/basket/",
+            "Configuration\\"           : "src/app/configuration/",
+            "Contact\\"                 : "src/app/contact/",
+            "ContentManagement\\"       : "src/app/contentManagement/",
+            "Convert\\"                 : "src/app/convert/",
+            "Docserver\\"               : "src/app/docserver/",
+            "Doctype\\"                 : "src/app/doctype/",
+            "Email\\"                   : "src/app/email/",
+            "Entity\\"                  : "src/app/entity/",
+            "Folder\\"                  : "src/app/folder/",
+            "Group\\"                   : "src/app/group/",
+            "History\\"                 : "src/app/history/",
+            "Home\\"                    : "src/app/home/",
+            "Link\\"                    : "src/app/link/",
+            "Note\\"                    : "src/app/note/",
+            "Notification\\"            : "src/app/notification/",
+            "Parameter\\"               : "src/app/parameter/",
+            "Priority\\"                : "src/app/priority/",
+            "Report\\"                  : "src/app/report/",
+            "Resource\\"                : "src/app/resource/",
+            "SignatureBook\\"           : "src/app/signatureBook/",
+            "Status\\"                  : "src/app/status/",
+            "Tag\\"                     : "src/app/tag/",
+            "Template\\"                : "src/app/template/",
+            "User\\"                    : "src/app/user/",
+            "VersionUpdate\\"           : "src/app/versionUpdate/",
+            "Sendmail\\"                : "modules/sendmail/"
     	}
     },
     "require": {
diff --git a/core/xml/actions_pages.xml b/core/xml/actions_pages.xml
index aad9311c9f0d32f639f5a5970e7e53b8397420c3..e60d0fd17d2af7c412acbccf9569ad9849ba81e4 100755
--- a/core/xml/actions_pages.xml
+++ b/core/xml/actions_pages.xml
@@ -17,6 +17,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_REDIRECTION</LABEL>
         <NAME>redirect</NAME>
         <DESC>_REDIRECTION_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>entities</MODULE>
         <KEYWORD>redirect</KEYWORD>
@@ -27,6 +28,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_PUT_IN_COPY</LABEL>
         <NAME>put_in_copy</NAME>
         <DESC>_PUT_IN_COPY_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>entities</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -62,6 +64,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_PROCESS_ACTION</LABEL>
         <NAME>process</NAME>
         <DESC>_PROCESS_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -74,6 +77,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_INDEX_FILE</LABEL>
         <NAME>index_mlb</NAME>
         <DESC>_INDEX_FILE_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <KEYWORD>indexing</KEYWORD>
@@ -87,6 +91,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_VALIDATE_QUALIF</LABEL>
         <NAME>validate_mail</NAME>
         <DESC>_VALIDATE_QUALIF_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -99,6 +104,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_VIEW_DOC</LABEL>
         <NAME>view</NAME>
         <DESC>_VIEW_DOC_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -162,6 +168,7 @@ An action page is described in a ACTIONPAGE tag :
         <ID>sendFileWS</ID>
         <LABEL>_SEND_FILE_WS</LABEL>
         <NAME>sendFileWS</NAME>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -173,6 +180,7 @@ An action page is described in a ACTIONPAGE tag :
         <ID>sendDataWS</ID>
         <LABEL>_SEND_DATA_WS</LABEL>
         <NAME>sendDataWS</NAME>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -184,6 +192,7 @@ An action page is described in a ACTIONPAGE tag :
         <ID>sendToExternalSignatureBook</ID>
         <LABEL>_SEND_TO_EXTERNAL_SB</LABEL>
         <NAME>sendToExternalSignatureBook</NAME>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -196,6 +205,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_CLOSE_MAIL_AND_INDEX</LABEL>
         <NAME>close_mail_and_index</NAME>
         <DESC>_CLOSE_MAIL_AND_INDEX_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -208,6 +218,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_CLOSE_MAIL_WITH_ATTACHMENT</LABEL>
         <NAME>close_mail_with_attachment</NAME>
         <DESC>_CLOSE_MAIL_WITH_ATTACHMENT_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -220,6 +231,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_SEND_ATTACHMENTS_TO_CONTACT</LABEL>
         <NAME>send_attachments_to_contact</NAME>
         <DESC>_SEND_ATTACHMENTS_TO_CONTACT_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -232,6 +244,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_SEND_TO_CONTACT_WITH_MANDATORY_ATTACHMENT</LABEL>
         <NAME>send_to_contact_with_mandatory_attachment</NAME>
         <DESC>_SEND_TO_CONTACT_WITH_MANDATORY_ATTACHMENT_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>apps</ORIGIN>
         <MODULE></MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -244,6 +257,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_VISA_MAIL</LABEL>
         <NAME>visa_mail</NAME>
         <DESC>_VISA_MAIL_DESC</DESC>
+        <component>signatureBookAction</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>visa</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -256,6 +270,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_PROCEED_WORKFLOW</LABEL>
         <NAME>visa_workflow</NAME>
         <DESC>_PROCEED_WORKFLOW_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>visa</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -268,6 +283,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_INTERRUPT_WORKFLOW</LABEL>
         <NAME>interrupt_visa</NAME>
         <DESC>_INTERRUPT_WORKFLOW_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>visa</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -280,6 +296,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_REJECTION_WORKFLOW_REDACTOR</LABEL>
         <NAME>rejection_visa_redactor</NAME>
         <DESC>_REJECTION_WORKFLOW_REDACTOR_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>visa</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -292,6 +309,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_REJECTION_WORKFLOW_PREVIOUS</LABEL>
         <NAME>rejection_visa_previous</NAME>
         <DESC>_REJECTION_WORKFLOW_PREVIOUS_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>visa</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -304,6 +322,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_REDIRECT_WORKFLOW_ENTITY</LABEL>
         <NAME>redirect_visa_entity</NAME>
         <DESC>_REDIRECT_WORKFLOW_ENTITY_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>visa</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -316,6 +335,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_SEND_TO_VISA</LABEL>
         <NAME>send_to_visa</NAME>
         <DESC>_SEND_TO_VISA_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>visa</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -328,6 +348,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_SEND_SIGNED_DOCS</LABEL>
         <NAME>send_signed_docs</NAME>
         <DESC>_SEND_SIGNED_DOCS_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>visa</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -340,6 +361,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_SEND_DOCS_TO_RECOMMENDATION</LABEL>
         <NAME>send_docs_to_recommendation</NAME>
         <DESC>_SEND_DOCS_TO_RECOMMENDATION_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>avis</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -352,6 +374,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_VALIDATE_RECOMMENDATION</LABEL>
         <NAME>validate_recommendation</NAME>
         <DESC>_VALIDATE_RECOMMENDATION_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>avis</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -364,6 +387,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_SEND_TO_AVIS_WF</LABEL>
         <NAME>send_to_avis</NAME>
         <DESC>_SEND_TO_AVIS_WF_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>avis</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -376,6 +400,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_PROCEED_WORKFLOW_AVIS</LABEL>
         <NAME>avis_workflow</NAME>
         <DESC>_PROCEED_WORKFLOW_AVIS_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>avis</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -388,6 +413,7 @@ An action page is described in a ACTIONPAGE tag :
         <LABEL>_PROCEED_WORKFLOW_AVIS_SIMPLE</LABEL>
         <NAME>avis_simple</NAME>
         <DESC>_PROCEED_WORKFLOW_AVIS_SIMPLE_DESC</DESC>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>avis</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -399,6 +425,7 @@ An action page is described in a ACTIONPAGE tag :
         <ID>export_seda</ID>
         <LABEL>_EXPORT_SEDA</LABEL>
         <NAME>export_seda</NAME>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>export_seda</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -410,6 +437,7 @@ An action page is described in a ACTIONPAGE tag :
         <ID>check_acknowledgement</ID>
         <LABEL>_CHECK_ACKNOWLEDGEMENT</LABEL>
         <NAME>check_acknowledgement</NAME>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>export_seda</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -421,6 +449,7 @@ An action page is described in a ACTIONPAGE tag :
         <ID>check_reply</ID>
         <LABEL>_CHECK_REPLY</LABEL>
         <NAME>check_reply</NAME>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>export_seda</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -432,6 +461,7 @@ An action page is described in a ACTIONPAGE tag :
         <ID>purge_letter</ID>
         <LABEL>_PURGE_LETTER</LABEL>
         <NAME>purge_letter</NAME>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>export_seda</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
@@ -443,6 +473,7 @@ An action page is described in a ACTIONPAGE tag :
         <ID>reset_letter</ID>
         <LABEL>_RESET_LETTER</LABEL>
         <NAME>reset_letter</NAME>
+        <component>v1Action</component>
         <ORIGIN>module</ORIGIN>
         <MODULE>export_seda</MODULE>
         <FLAG_CREATE>false</FLAG_CREATE>
diff --git a/modules/basket/view_baskets.php b/modules/basket/view_baskets.php
index 91da151c11118ee87dd40a9a5bb8572574df0bfd..a4478d7815f6a8bdef31cb3a4bc47c9d6933a23e 100755
--- a/modules/basket/view_baskets.php
+++ b/modules/basket/view_baskets.php
@@ -365,9 +365,15 @@ if ($_SESSION['cpt_info_basket'] > 0) {
 }
 
 if (!empty($_GET['resId']) && !empty($_GET['defaultAction']) && ($_SESSION['alreadyDefaultAction'] == false || !empty($_GET['groupIdSer']))) {
-    $_SESSION['alreadyDefaultAction'] = true;
+
+    $_SESSION['urlV2Basket'] = $_GET;
     echo '<script language="javascript">';
-    echo 'setTimeout(function(){validForm(\'page\', \''.$_GET['resId'].'\', \''.$_GET['defaultAction'].'\');}, 800);';
+    
+    if (!empty($_GET['signatureBookMode'])) {
+        echo 'setTimeout(function(){islockForSignatureBook(\''.$_GET['resId'].'\', \''.$_GET['baskets'].'\', \'RESPONSABLE\');}, 400);';
+    } else {
+        echo 'setTimeout(function(){validForm(\'page\', \''.$_GET['resId'].'\', \''.$_GET['defaultAction'].'\');}, 400);';
+    }
     echo '</script>';
 } else {
     $_SESSION['alreadyDefaultAction'] = false;
diff --git a/modules/content_management/dist/lib/commons-logging-1.2.jar b/modules/content_management/dist/lib/commons-logging-1.2.jar
index ba2fd28c5dfda52bdad5577e22046a1600945932..4e0af0031d36cc4f07811aea5a01d5725de61f9f 100755
Binary files a/modules/content_management/dist/lib/commons-logging-1.2.jar and b/modules/content_management/dist/lib/commons-logging-1.2.jar differ
diff --git a/modules/content_management/dist/lib/httpclient-4.5.2.jar b/modules/content_management/dist/lib/httpclient-4.5.2.jar
index 065cba7de9194469b98e254bc9ef9665a8f0a089..de8ac88fb64a7eaf7af33ff08e7f2977f059e76a 100755
Binary files a/modules/content_management/dist/lib/httpclient-4.5.2.jar and b/modules/content_management/dist/lib/httpclient-4.5.2.jar differ
diff --git a/modules/content_management/dist/lib/httpclient-cache-4.5.2.jar b/modules/content_management/dist/lib/httpclient-cache-4.5.2.jar
index a705b7e9d8971794b7374f8651b47de6649050fd..85b191b1b2090c84e731e94215a34fe23780c131 100755
Binary files a/modules/content_management/dist/lib/httpclient-cache-4.5.2.jar and b/modules/content_management/dist/lib/httpclient-cache-4.5.2.jar differ
diff --git a/modules/content_management/dist/lib/httpclient-win-4.5.2.jar b/modules/content_management/dist/lib/httpclient-win-4.5.2.jar
index 6fda7233a5f1686da9b49e3bc980caa543ba6e9e..cbb891460705eeeb680fb09fe3d72a4c17b4a3c3 100755
Binary files a/modules/content_management/dist/lib/httpclient-win-4.5.2.jar and b/modules/content_management/dist/lib/httpclient-win-4.5.2.jar differ
diff --git a/modules/content_management/dist/lib/httpcore-4.4.4.jar b/modules/content_management/dist/lib/httpcore-4.4.4.jar
index 25cc37a861ff6aff1954a4edc98e0e2b73517b81..bd65628bf1956dd96ff47f423979929172652c78 100755
Binary files a/modules/content_management/dist/lib/httpcore-4.4.4.jar and b/modules/content_management/dist/lib/httpcore-4.4.4.jar differ
diff --git a/modules/content_management/dist/lib/plugin.jar b/modules/content_management/dist/lib/plugin.jar
index 052be36ba6fe28152b36843791310851087188f3..d007e09f6773f2784974797a2f13f195275afa40 100755
Binary files a/modules/content_management/dist/lib/plugin.jar and b/modules/content_management/dist/lib/plugin.jar differ
diff --git a/modules/content_management/dist/maarchCM.jar b/modules/content_management/dist/maarchCM.jar
index b84f3f2c8b3caf7d863508817c47c375e12687e8..56fa4a8aef62e501092f7f0b12a05fbc565c8552 100755
Binary files a/modules/content_management/dist/maarchCM.jar and b/modules/content_management/dist/maarchCM.jar differ
diff --git a/sql/data_fr.sql b/sql/data_fr.sql
index c255eda6c3cac2916b5a07c57aac96690d9ff545..6f2ba00d3544b0986e0e1ed775b7fb7bd3009a5d 100755
--- a/sql/data_fr.sql
+++ b/sql/data_fr.sql
@@ -993,6 +993,8 @@ INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, f
 VALUES ('TEMPLATES', 'Modèles de documents', 'Y', 'NONE');
 INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, fingerprint_mode)
 VALUES ('ARCHIVETRANSFER', 'Archives numériques', 'Y', 'SHA256');
+INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled)
+VALUES ('ACKNOWLEDGMENT_RECEIPTS', 'Accusés de réception', 'Y');
 
 TRUNCATE TABLE docservers;
 INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id)
@@ -1025,6 +1027,8 @@ INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readon
 VALUES ('TEMPLATES', 'TEMPLATES', 'Dépôt des modèles de documents', 'N', 50000000000, 71511, '/opt/maarch/docservers/templates/', '2012-04-01 14:49:05.095119', 'templates');
 INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id)
 VALUES ('ARCHIVETRANSFER', 'ARCHIVETRANSFER', 'Dépôt des archives numériques', 'N', 50000000000, 1, '/opt/maarch/docservers/archive_transfer/', '2017-01-13 14:47:49.197164', 'archive_transfer_coll');
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id)
+VALUES ('ACKNOWLEDGMENT_RECEIPTS', 'ACKNOWLEDGMENT_RECEIPTS', 'Dépôt des AR', 'N', 50000000000, 0, '/opt/maarch/docservers/acknowledgment_receipts/', '2019-04-19 22:22:22.201904', 'letterbox_coll');
 ------------
 --SUPERADMIN USER
 ------------
diff --git a/sql/develop.sql b/sql/develop.sql
index 86a5db8ac71ca487bb29f4cbb5727a1c9bdb7d6c..7e810fa52469a59e3b935d1f153bd59589d36456 100755
--- a/sql/develop.sql
+++ b/sql/develop.sql
@@ -12,12 +12,6 @@ DROP VIEW IF EXISTS res_view_letterbox;
 ALTER TABLE res_letterbox DROP COLUMN IF EXISTS external_signatory_book_id;
 ALTER TABLE res_letterbox ADD COLUMN external_signatory_book_id integer;
 
-/* Acknowledgment receipt */
-ALTER TABLE res_letterbox DROP COLUMN IF EXISTS acknowledgment_creation_date;
-ALTER TABLE res_letterbox ADD COLUMN acknowledgment_creation_date timestamp without time zone;
-ALTER TABLE res_letterbox DROP COLUMN IF EXISTS acknowledgment_send_date;
-ALTER TABLE res_letterbox ADD COLUMN acknowledgment_send_date timestamp without time zone;
-
 ALTER TABLE users DROP COLUMN IF EXISTS external_id;
 ALTER TABLE users ADD COLUMN external_id json DEFAULT '{}';
 
@@ -164,6 +158,28 @@ UPDATE groupbasket SET list_display = '[{"value":"getPriority","cssClasses":[],"
 ALTER TABLE actions DROP COLUMN IF EXISTS component;
 ALTER TABLE actions ADD COLUMN component CHARACTER VARYING (128);
 
+/* Acknowledgment receipts */
+DROP TABLE IF EXISTS acknowledgment_receipts;
+CREATE TABLE acknowledgment_receipts
+(
+id serial NOT NULL,
+res_id INTEGER NOT NULL,
+type CHARACTER VARYING(4) NOT NULL,
+format CHARACTER VARYING(8) NOT NULL,
+user_id INTEGER NOT NULL,
+contact_address_id character varying(8) NOT NULL,
+creation_date timestamp without time zone NOT NULL,
+send_date timestamp without time zone NOT NULL,
+docserver_id CHARACTER VARYING(128) NOT NULL,
+path CHARACTER VARYING(256) NOT NULL,
+filename CHARACTER VARYING(256) NOT NULL,
+CONSTRAINT acknowledgment_receipts_pkey PRIMARY KEY (id)
+)
+WITH (OIDS=FALSE);
+INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled)
+VALUES ('ACKNOWLEDGMENT_RECEIPTS', 'Accusés de réception', 'Y');
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id)
+VALUES ('ACKNOWLEDGMENT_RECEIPTS', 'ACKNOWLEDGMENT_RECEIPTS', 'Dépôt des AR', 'N', 50000000000, 0, '/opt/maarch/docservers/acknowledgment_receipts/', '2019-04-19 22:22:22.201904', 'letterbox_coll');
 
 /* RE-CREATE VIEW*/
 CREATE OR REPLACE VIEW res_view_letterbox AS
@@ -209,8 +225,6 @@ CREATE OR REPLACE VIEW res_view_letterbox AS
     r.department_number_id,
     r.barcode,
     r.external_signatory_book_id,
-    r.acknowledgment_creation_date,
-    r.acknowledgment_send_date,
     r.custom_t1 AS doc_custom_t1,
     r.custom_t2 AS doc_custom_t2,
     r.custom_t3 AS doc_custom_t3,
diff --git a/sql/structure.sql b/sql/structure.sql
index 949a3313d2f55fd51b740f009bdb0734d850d583..04a5ed5d5146d07668971e0bec75d2c3f8eec010 100755
--- a/sql/structure.sql
+++ b/sql/structure.sql
@@ -1350,8 +1350,6 @@ CREATE TABLE res_letterbox
   barcode text,
   sve_start_date TIMESTAMP without time zone,
   external_signatory_book_id integer,
-  acknowledgment_creation_date timestamp without time zone,
-  acknowledgment_send_date timestamp without time zone,
   CONSTRAINT res_letterbox_pkey PRIMARY KEY  (res_id)
 )
 WITH (OIDS=FALSE);
@@ -1641,8 +1639,6 @@ CREATE OR REPLACE VIEW res_view_letterbox AS
     r.department_number_id,
     r.barcode,
     r.external_signatory_book_id,
-    r.acknowledgment_creation_date,
-    r.acknowledgment_send_date,
     r.custom_t1 AS doc_custom_t1,
     r.custom_t2 AS doc_custom_t2,
     r.custom_t3 AS doc_custom_t3,
@@ -2179,3 +2175,19 @@ CONSTRAINT exports_templates_unique_key UNIQUE (user_id, format)
 )
 WITH (OIDS=FALSE);
 
+CREATE TABLE acknowledgment_receipts
+(
+id serial NOT NULL,
+res_id INTEGER NOT NULL,
+type CHARACTER VARYING(4) NOT NULL,
+format CHARACTER VARYING(8) NOT NULL,
+user_id INTEGER NOT NULL,
+contact_address_id character varying(8) NOT NULL,
+creation_date timestamp without time zone NOT NULL,
+send_date timestamp without time zone NOT NULL,
+docserver_id CHARACTER VARYING(128) NOT NULL,
+path CHARACTER VARYING(256) NOT NULL,
+filename CHARACTER VARYING(256) NOT NULL,
+CONSTRAINT acknowledgment_receipts_pkey PRIMARY KEY (id)
+)
+WITH (OIDS=FALSE);
diff --git a/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php b/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php
new file mode 100644
index 0000000000000000000000000000000000000000..461b707c1e7f90ea7e7519b42707dcfb75ab771f
--- /dev/null
+++ b/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php
@@ -0,0 +1,20 @@
+<?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 Acknowledgement Receipt Controller
+* @author dev@maarch.org
+*/
+
+namespace AcknowledgementReceipt\controllers;
+
+class AcknowledgementReceiptController
+{
+
+}
\ No newline at end of file
diff --git a/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php b/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php
new file mode 100644
index 0000000000000000000000000000000000000000..b17ceefeaec68f16ffdfb5a9f4d2c41b3f5c0f32
--- /dev/null
+++ b/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php
@@ -0,0 +1,67 @@
+<?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 Acknowledgement Receipt Model
+* @author dev@maarch.org
+*/
+
+namespace AcknowledgementReceipt\models;
+
+use SrcCore\models\DatabaseModel;
+use SrcCore\models\ValidatorModel;
+
+class AcknowledgementReceiptModel
+{
+    public static function get(array $aArgs = [])
+    {
+        ValidatorModel::arrayType($aArgs, ['select', 'where', 'data', 'orderBy']);
+        ValidatorModel::intType($aArgs, ['limit']);
+
+        $aTemplates = DatabaseModel::select([
+            'select'    => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
+            'table'     => ['acknowledgment_receipts'],
+            'where'     => empty($aArgs['where']) ? [] : $aArgs['where'],
+            'data'      => empty($aArgs['data']) ? [] : $aArgs['data'],
+            'order_by'  => empty($aArgs['orderBy']) ? [] : $aArgs['orderBy'],
+            'limit'     => empty($aArgs['limit']) ? 0 : $aArgs['limit']
+        ]);
+
+        return $aTemplates;
+    }
+
+    public static function update(array $aArgs)
+    {
+        ValidatorModel::notEmpty($aArgs, ['set', 'where', 'data']);
+        ValidatorModel::arrayType($aArgs, ['set', 'where', 'data']);
+
+        DatabaseModel::update([
+            'table' => 'acknowledgment_receipts',
+            'set'   => $aArgs['set'],
+            'where' => $aArgs['where'],
+            'data'  => $aArgs['data']
+        ]);
+
+        return true;
+    }
+
+    public static function delete(array $aArgs)
+    {
+        ValidatorModel::notEmpty($aArgs, ['where', 'data']);
+        ValidatorModel::arrayType($aArgs, ['where', 'data']);
+
+        DatabaseModel::delete([
+            'table' => 'acknowledgment_receipts',
+            'where' => $aArgs['where'],
+            'data'  => $aArgs['data']
+        ]);
+
+        return true;
+    }
+}
diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index cf4ff22ec03b5309a89cbe26be2c41d7115361ee..5ff09815bcf6a9b85bf087d9708c935240e93de7 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -636,13 +636,24 @@ class ResourceListController
         $body['note'] = empty($body['note']) ? null : $body['note'];
 
         $method = ActionMethodController::COMPONENTS_ACTIONS[$action['component']];
+        $methodResponses = [];
         foreach ($resourcesForAction as $resId) {
             if (!empty($method)) {
-                ActionMethodController::$method(['id' => $aArgs['actionId'], 'resId' => $resId, 'data' => $body['data']]);
+                $methodResponse = ActionMethodController::$method(['id' => $aArgs['actionId'], 'resId' => $resId, 'data' => $body['data']]);
+                if (!empty($methodResponse['errors'])) {
+                    return $response->withStatus(500)->withJson(['errors' => $methodResponse['errors']]);
+                }
+                if ($methodResponse !== true) {
+                    $methodResponses = array_merge($methodResponses, $methodResponse);
+                }
             }
         }
         ActionMethodController::terminateAction(['id' => $aArgs['actionId'], 'resources' => $resourcesForAction, 'basketName' => $basket['basket_name'], 'note' => $body['note']]);
 
+        if (!empty($methodResponses)) {
+            return $response->withJson($methodResponses);
+        }
+
         return $response->withStatus(204);
     }
 
diff --git a/src/frontend/app/actions/actions-list.component.ts b/src/frontend/app/actions/actions-list.component.ts
index db41c2448f108af2093cbd88cd068fd5ec2b5592..89a998be83f87d94ba987dac39f3b198610ac530 100644
--- a/src/frontend/app/actions/actions-list.component.ts
+++ b/src/frontend/app/actions/actions-list.component.ts
@@ -11,6 +11,7 @@ import { ResMarkAsReadActionComponent } from './res-mark-as-read/res-mark-as-rea
 import { CloseMailActionComponent } from './close-mail-action/close-mail-action.component';
 import { UpdateDepartureDateActionComponent } from './update-departure-date-action/update-departure-date-action.component';
 import { ProcessActionComponent } from './process-action/process-action.component';
+import { Router } from '@angular/router';
 
 @Component({
     selector: 'app-actions-list',
@@ -41,7 +42,7 @@ export class ActionsListComponent implements OnInit {
     @Input('contextMode') contextMode: boolean;
     @Input('currentBasketInfo') currentBasketInfo: any;
 
-    constructor(public http: HttpClient, private notify: NotificationService, public dialog: MatDialog) { }
+    constructor(public http: HttpClient, private notify: NotificationService, public dialog: MatDialog, private router: Router) { }
 
     ngOnInit(): void { }
 
@@ -82,6 +83,7 @@ export class ActionsListComponent implements OnInit {
                 }
                 catch (error) {
                     console.log(error);
+                    console.log(action);
                     alert(this.lang.actionNotExist);  
                 }
                 this.loading = false;
@@ -213,6 +215,9 @@ export class ActionsListComponent implements OnInit {
 
     processAction() {
 
+    // CALL GENERIC ACTION V1
+    v1Action() {
+        location.hash = "";
         window.location.href = 'index.php?page=view_baskets&module=basket&baskets='+this.currentBasketInfo.basket_id+'&basketId='+this.currentBasketInfo.basketId+'&resId='+this.arrRes[0]+'&userId='+this.currentBasketInfo.ownerId+'&groupIdSer='+this.currentBasketInfo.groupId+'&defaultAction='+this.currentAction.id;
         // WHEN V2
         /*this.dialog.open(ProcessActionComponent, {
@@ -226,6 +231,13 @@ export class ActionsListComponent implements OnInit {
             }
         });*/
     }
+
+    // CALL SIGNATUREBOOK WITH V1 METHOD
+    signatureBookAction() {
+        location.hash = "";
+        window.location.href = 'index.php?page=view_baskets&module=basket&baskets='+this.currentBasketInfo.basket_id+'&basketId='+this.currentBasketInfo.basketId+'&resId='+this.arrRes[0]+'&userId='+this.currentBasketInfo.ownerId+'&groupIdSer='+this.currentBasketInfo.groupId+'&defaultAction='+this.currentAction.id+'&signatureBookMode=true';
+
+    }
     ////
 
     endAction() {
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 4626994fd4d8ac4c5489670d85b09af1b6d8aab0..2c72175e7723ad0c73fd3154eb0fecc420810448 100755
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -374,9 +374,13 @@ class ClassLoader
 
         $first = $class[0];
         if (isset($this->prefixLengthsPsr4[$first])) {
-            foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
-                if (0 === strpos($class, $prefix)) {
-                    foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
+            $subPath = $class;
+            while (false !== $lastPos = strrpos($subPath, '\\')) {
+                $subPath = substr($subPath, 0, $lastPos);
+                $search = $subPath.'\\';
+                if (isset($this->prefixDirsPsr4[$search])) {
+                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
+                        $length = $this->prefixLengthsPsr4[$first][$search];
                         if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
                             return $file;
                         }
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
index 1a28124886db89f1ca3e4fa674cb69a9a17585b3..f27399a042d95c4708af3a8c74d35d338763cf8f 100755
--- a/vendor/composer/LICENSE
+++ b/vendor/composer/LICENSE
@@ -1,5 +1,5 @@
 
-Copyright (c) 2016 Nils Adermann, Jordi Boggiano
+Copyright (c) Nils Adermann, Jordi Boggiano
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index d28772ab1296c155d0ef60410ef64e7a384bb8c7..8ce0f36bf88262691ccda4259871f9ce9027ef92 100755
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -66,4 +66,5 @@ return array(
     'Basket\\' => array($baseDir . '/src/app/basket'),
     'Attachment\\' => array($baseDir . '/src/app/attachment'),
     'Action\\' => array($baseDir . '/src/app/action'),
+    'AcknowledgementReceipt\\' => array($baseDir . '/src/app/acknowledgementReceipt'),
 );
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 6ff49eeb4339fa68a5df91aaf19dcad83b9ace51..231e8ed75307007baaad8fb6249548551b46d46f 100755
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -142,6 +142,7 @@ class ComposerStaticInitf21aebccfa6df888200dcb099aa69fbd
         array (
             'Attachment\\' => 11,
             'Action\\' => 7,
+            'AcknowledgementReceipt\\' => 23,
         ),
     );
 
@@ -387,6 +388,10 @@ class ComposerStaticInitf21aebccfa6df888200dcb099aa69fbd
         array (
             0 => __DIR__ . '/../..' . '/src/app/action',
         ),
+        'AcknowledgementReceipt\\' => 
+        array (
+            0 => __DIR__ . '/../..' . '/src/app/acknowledgementReceipt',
+        ),
     );
 
     public static $prefixesPsr0 = array (