diff --git a/apps/maarch_entreprise/actions/sendFileWS.php b/apps/maarch_entreprise/actions/sendFileWS.php
index a75fe2dd663ecb8308df466eff07a2af89338658..f4c8120c07e38f5162e81d2892e17219f6ae4385 100644
--- a/apps/maarch_entreprise/actions/sendFileWS.php
+++ b/apps/maarch_entreprise/actions/sendFileWS.php
@@ -9,8 +9,9 @@ function manage_send($aId)
     $result = '';
 
     foreach ($aId as $resId) {
-        $document = \Resource\models\ResModel::getById(['resId' => $resId, 'select' => ['res_id', 'format', 'path', 'filename']]);
-        $docserver = \Docserver\models\DocserverModel::getFirstByTypeId(['typeId' => 'DOC', 'select' => ['path_template']]);
+        $document = \Resource\models\ResModel::getById(['resId' => $resId, 'select' => ['res_id', 'format', 'path', 'filename', 'docserver_id']]);
+        $docserver = \Docserver\models\DocserverModel::getByDocserverId(['docserverId' => $document['docserver_id'], 'select' => ['path_template']]);
+
 
         $file = file_get_contents($docserver['path_template'] . str_replace('#', '/', $document['path']) . $document['filename']);
         $encodedFile = base64_encode($file);
diff --git a/core/Test/DocserverControllerTest.php b/core/Test/DocserverControllerTest.php
index 65ee04406f37e97b3dd728dc6843e04916d20998..4169eb555326b3c5cb17262161705c6d01f2f0fa 100644
--- a/core/Test/DocserverControllerTest.php
+++ b/core/Test/DocserverControllerTest.php
@@ -125,8 +125,7 @@ class DocserverControllerTest extends TestCase
             'docserver_type_id'      =>  'DOC',
             'device_label'           =>  'updated docserver',
             'size_limit_number'      =>  50000000000,
-            'path_template'          =>  '/tmp/',
-            'priority_number'        =>  30
+            'path_template'          =>  '/tmp/'
         ];
         $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
         $response     = $docserverController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
@@ -151,8 +150,7 @@ class DocserverControllerTest extends TestCase
             'docserver_type_id'      =>  'DOC',
             'device_label'           =>  'updated docserver',
             'size_limit_number'      =>  50000000000,
-            'path_template'          =>  '/wrong/path/',
-            'priority_number'        =>  30
+            'path_template'          =>  '/wrong/path/'
         ];
         $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
         $response     = $docserverController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
@@ -168,8 +166,7 @@ class DocserverControllerTest extends TestCase
             'docserver_type_id'      =>  'DOC',
             'device_label'           =>  'updated docserver',
             'size_limit_number'      =>  50000000000,
-            'path_template'          =>  '/tmp/',
-            'priority_number'        =>  30
+            'path_template'          =>  '/tmp/'
         ];
         $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
         $response     = $docserverController->update($fullRequest, new \Slim\Http\Response(), ['id' => 12345]);
diff --git a/core/class/docservers_controler.php b/core/class/docservers_controler.php
index b10aa95bfa528238e4586f1d8a19a102d963e11c..358ce304095b2e1633167ae69372baa7aa58250e 100755
--- a/core/class/docservers_controler.php
+++ b/core/class/docservers_controler.php
@@ -304,40 +304,6 @@ class docservers_controler
         }
     }
 
-
-    /**
-    * Check if two docservers have the same priorities
-    *
-    * @param $docserver docservers object
-    * @return bool true if the control is ok
-    */
-    private function priorityNumberControl($docserver)
-    {
-        $func = new functions();
-        if (!isset($docserver)
-            || empty($docserver)
-            || empty($docserver->priority_number)
-        ) {
-            return false;
-        }
-        $db = new Database();
-        $query = "select priority_number from " . _DOCSERVERS_TABLE_NAME
-               . " where priority_number = ? AND docserver_type_id = ?"
-               . " AND docserver_id <> ?";
-        $stmt = $db->query(
-            $query, 
-            array(
-                $docserver->priority_number, 
-                $docserver->docserver_type_id, 
-                $docserver->docserver_id 
-            )
-        );
-        if ($stmt->rowCount() > 0) {
-            return false;
-        }
-        return true;
-    }
-
     /**
     * Check if the docserver actual size is less than the size limit
     *
@@ -368,19 +334,11 @@ class docservers_controler
         }
     }
 
-    /**
-     * Get docservers to insert a new doc.
-     * Can return null if no corresponding object.
-     * @param  $coll_id  string Collection identifier
-     * @return docservers
-     */
-    public function getDocserverToInsert($collId)
+    public function getDocserverToInsert($collId, $typeId = 'DOC')
     {
         $db = new Database();
-        $query = "select priority_number, docserver_id from "
-               . _DOCSERVERS_TABLE_NAME . " where is_readonly = 'N' and "
-               . "coll_id = ? order by priority_number";
-        $stmt = $db->query($query, array($collId));
+        $query = "select docserver_id from docservers where is_readonly = 'N' and coll_id = ?  and docserver_type_id = ?";
+        $stmt = $db->query($query, [$collId, $typeId]);
         $queryResult = $stmt->fetchObject();
         if ($queryResult->docserver_id <> '') {
             $docserver = $this->get($queryResult->docserver_id);
diff --git a/core/class/ws.php b/core/class/ws.php
index 22a6854a173c16614df5ae64d0e035f007144525..8a08640800ca53cb4ebf48061d31d6323eeedff9 100755
--- a/core/class/ws.php
+++ b/core/class/ws.php
@@ -18,7 +18,6 @@ $SOAP_typedef['docservers'] = array(    'docserver_id'=>'string',
                                         'size_limit_number'=>'string',
                                         'path_template'=>'string',
                                         'coll_id'=>'string',
-                                        'priority_number'=>'string',
                                     );
 $SOAP_typedef['returnViewResource'] = array('status'=>'string',
                                             'mime_type'=>'string',
diff --git a/modules/life_cycle/batch/process_stack.php b/modules/life_cycle/batch/process_stack.php
index dc88a8ec0076f2d094fa791b1e0031921820c413..acb77a29de9082d16e2b4662f5ea54949fd55b45 100755
--- a/modules/life_cycle/batch/process_stack.php
+++ b/modules/life_cycle/batch/process_stack.php
@@ -208,8 +208,7 @@ while ($GLOBALS['state'] <> "END") {
                             );
                     }
                     // no need for a purge
-                    $query = "select * from " . _DOCSERVERS_TABLE_NAME 
-                           . " where docserver_type_id = ? and coll_id = ? order by priority_number";
+                    $query = "select * from docservers where docserver_type_id = ? and coll_id = ?";
                     $stmt2 = Bt_doQuery(
                         $GLOBALS['db2'], 
                         $query,
diff --git a/modules/thumbnails/class/class_modules_tools.php b/modules/thumbnails/class/class_modules_tools.php
index 7c4f69c231a4a6d0a5995225e295ff61c94f02d9..2a57fcfbb39bcd011febe3f507570bf569eb0d00 100755
--- a/modules/thumbnails/class/class_modules_tools.php
+++ b/modules/thumbnails/class/class_modules_tools.php
@@ -49,8 +49,8 @@ class thumbnails
 }
 	public function generateTnl($res_id, $coll_id, $table_name = false){
 		$db = new Database();
-		$query = "select priority_number, docserver_id from docservers where is_readonly = 'N' and "
-	   . " enabled = 'Y' and coll_id = ? and docserver_type_id = 'TNL' order by priority_number";
+		$query = "select docserver_id from docservers where is_readonly = 'N' and "
+	   . " coll_id = ? and docserver_type_id = 'TNL'";
 		$stmt1 = $db->query($query, array($coll_id));
 
 		if($res = $stmt1->fetchObject()){
@@ -156,9 +156,7 @@ class thumbnails
 		if ($table_name) $table = $table_name;
 		$db = new Database();
 		
-		$query = "select priority_number, docserver_id from "
-			   . _DOCSERVERS_TABLE_NAME . " where is_readonly = 'N' and "
-			   . " enabled = 'Y' and coll_id = ? and docserver_type_id = 'TNL' order by priority_number";
+		$query = "select docserver_id from docservers where is_readonly = 'N' and coll_id = ? and docserver_type_id = 'TNL'";
 			   
 		$stmt = $db->query($query, array($coll_id));
 		$docserverId = $stmt->fetchObject()->docserver_id;
diff --git a/modules/thumbnails/create_tnl.php b/modules/thumbnails/create_tnl.php
index afaf0d97610687087b231b9b0d1ec64aa81c6aab..e6f3ab8cecf720286493215202c4f8423a6cd403 100755
--- a/modules/thumbnails/create_tnl.php
+++ b/modules/thumbnails/create_tnl.php
@@ -156,8 +156,8 @@ $GLOBALS['db'] = new Database($conf);
 
 Bt_getWorkBatch();
 
-$query = "select priority_number, docserver_id from docservers where is_readonly = 'N' and "
-       . " enabled = 'Y' and coll_id = ? and docserver_type_id = 'TNL' order by priority_number";
+$query = "select docserver_id from docservers where is_readonly = 'N' and "
+       . " coll_id = ? and docserver_type_id = 'TNL'";
        
 $stmt1 = $GLOBALS['db']->query($query, array($GLOBALS['collection']));
 if ($res = $stmt1->fetchObject()) {
diff --git a/modules/visa/class/class_user_signatures_Abstract.php b/modules/visa/class/class_user_signatures_Abstract.php
index ef02771b1b1e1384b7dfb3d49a39c636445ee475..2a2ed69b7bd6e8ad894e4f7c8a2cfe8f0cb3c15a 100755
--- a/modules/visa/class/class_user_signatures_Abstract.php
+++ b/modules/visa/class/class_user_signatures_Abstract.php
@@ -28,8 +28,8 @@ abstract class UserSignaturesAbstract extends Database
             . DIRECTORY_SEPARATOR . 'docservers_controler.php');
         $ds_ctrl = new docservers_controler();
         $db = new Database();
-        $query_ds = "select priority_number, docserver_id, path_template  from docservers where is_readonly = 'N' and "
-        . " enabled = 'Y' and coll_id = ? and docserver_type_id = 'TEMPLATES' order by priority_number";
+        $query_ds = "select docserver_id, path_template  from docservers where is_readonly = 'N' and "
+        . "coll_id = ? and docserver_type_id = 'TEMPLATES'";
         $stmt = $db->query($query_ds,[$coll_id]);
 
         if($res = $stmt->fetchObject()){
diff --git a/modules/visa/sign_file.php b/modules/visa/sign_file.php
index 87fa9be01f5f3b8c4944c8382e355cc92de83053..5f4b18d04cb5bca21cd3bbb16640963d7bd2a14b 100755
--- a/modules/visa/sign_file.php
+++ b/modules/visa/sign_file.php
@@ -48,7 +48,7 @@ if (!empty($_REQUEST['id']) && !empty($_REQUEST['collId'])) {
             exit;
         }
 
-        $docserver = \Docserver\models\DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]);
+        $docserver = \Docserver\models\DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]);
         $pathToWantedSignature = $docserver['path_template'] . str_replace('#', '/', $signature->signature_path) . $signature->signature_file_name;
     } else {
         $pathToWantedSignature = $_SESSION['user']['pathToSignature'][0];
diff --git a/sql/data_fr.sql b/sql/data_fr.sql
index 0a282dfbb43a5804acf542879044710a33f53633..a72b305d47d1bae2e36defec199cb29a688e2ab2 100755
--- a/sql/data_fr.sql
+++ b/sql/data_fr.sql
@@ -1010,36 +1010,36 @@ INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, f
 VALUES ('ARCHIVETRANSFER', 'Archives numériques', 'Y', 'SHA256');
 
 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, priority_number)
-VALUES ('FASTHD_AI', 'DOC', 'Dépôt documentaire issue d''imports de masse', 'N', 50000000000, 1, '/opt/maarch/docservers/ai/', '2011-01-07 13:43:48.696644', 'letterbox_coll', 11);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FASTHD_MAN', 'DOC', 'Dépôt documentaire de numérisation manuelle', 'N', 50000000000, 1290730, '/opt/maarch/docservers/manual/', '2011-01-13 14:47:49.197164', 'letterbox_coll', 10);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FASTHD_ATTACH', 'FASTHD', 'Dépôt des pièces jointes', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments/', '2011-01-13 14:47:49.197164', 'attachments_coll', 2);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FASTHD_ATTACH_VERSION', 'FASTHD', 'Dépôt des pièces jointes versionnées', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments_version/', '2011-01-13 14:47:49.197164', 'attachments_version_coll', 100);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('CONVERT_MLB', 'CONVERT', 'Dépôt des formats des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 13);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('CONVERT_ATTACH', 'CONVERT', 'Dépôt des formats des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 14);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('CONVERT_ATTACH_VERSION', 'CONVERT', 'Dépôt des formats des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 101);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('TNL_MLB', 'TNL', 'Dépôt des maniatures des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 12);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('TNL_ATTACH', 'TNL', 'Dépôt des maniatures des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 15);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('TNL_ATTACH_VERSION', 'TNL', 'Dépôt des maniatures des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 102);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FULLTEXT_MLB', 'FULLTEXT', 'Dépôt de l''extraction plein texte des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 16);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FULLTEXT_ATTACH', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 17);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FULLTEXT_ATTACH_VERSION', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 103);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-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', 1);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-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', 10);
+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 ('FASTHD_AI', 'DOC', 'Dépôt documentaire issue d''imports de masse', 'Y', 50000000000, 1, '/opt/maarch/docservers/ai/', '2011-01-07 13:43:48.696644', 'letterbox_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 ('FASTHD_MAN', 'DOC', 'Dépôt documentaire de numérisation manuelle', 'N', 50000000000, 1290730, '/opt/maarch/docservers/manual/', '2011-01-13 14:47:49.197164', 'letterbox_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 ('FASTHD_ATTACH', 'FASTHD', 'Dépôt des pièces jointes', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments/', '2011-01-13 14:47:49.197164', 'attachments_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 ('FASTHD_ATTACH_VERSION', 'FASTHD', 'Dépôt des pièces jointes versionnées', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments_version/', '2011-01-13 14:47:49.197164', 'attachments_version_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 ('CONVERT_MLB', 'CONVERT', 'Dépôt des formats des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_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 ('CONVERT_ATTACH', 'CONVERT', 'Dépôt des formats des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments/', '2015-03-16 14:47:49.197164', 'attachments_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 ('CONVERT_ATTACH_VERSION', 'CONVERT', 'Dépôt des formats des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_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 ('TNL_MLB', 'TNL', 'Dépôt des maniatures des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_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 ('TNL_ATTACH', 'TNL', 'Dépôt des maniatures des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments/', '2015-03-16 14:47:49.197164', 'attachments_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 ('TNL_ATTACH_VERSION', 'TNL', 'Dépôt des maniatures des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_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 ('FULLTEXT_MLB', 'FULLTEXT', 'Dépôt de l''extraction plein texte des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_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 ('FULLTEXT_ATTACH', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments/', '2015-03-16 14:47:49.197164', 'attachments_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 ('FULLTEXT_ATTACH_VERSION', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_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 ('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');
 ------------
 --SUPERADMIN USER
 ------------
diff --git a/sql/develop.sql b/sql/develop.sql
index b7aa4ba9e5cecdea326536d3aaf42aa57e2d80a5..369fd00ad9a853188994a14ec1a81e3209bfcfd4 100644
--- a/sql/develop.sql
+++ b/sql/develop.sql
@@ -36,6 +36,7 @@ ALTER TABLE docservers DROP COLUMN IF EXISTS chain_after;
 ALTER TABLE docservers DROP COLUMN IF EXISTS closing_date;
 ALTER TABLE docservers DROP COLUMN IF EXISTS enabled;
 ALTER TABLE docservers DROP COLUMN IF EXISTS adr_priority_number;
+ALTER TABLE docservers DROP COLUMN IF EXISTS priority_number;
 ALTER TABLE docservers DROP COLUMN IF EXISTS id;
 ALTER TABLE docservers ADD COLUMN id serial;
 ALTER TABLE docservers ADD UNIQUE (id);
@@ -49,6 +50,7 @@ ALTER TABLE docserver_types DROP COLUMN IF EXISTS is_logged;
 ALTER TABLE docserver_types DROP COLUMN IF EXISTS log_template;
 ALTER TABLE docserver_types DROP COLUMN IF EXISTS is_signed;
 DROP TABLE IF EXISTS docserver_locations;
+UPDATE docservers set is_readonly = 'Y' WHERE docserver_id = 'FASTHD_AI';
 
 /* Refactoring */
 DROP TABLE IF EXISTS allowed_ip;
diff --git a/sql/structure.sql b/sql/structure.sql
index 83c287f0234f36cd17784cfbadef7a2509b95780..d7248fec5e27e4129c81406089ac3dc93edbf47a 100755
--- a/sql/structure.sql
+++ b/sql/structure.sql
@@ -62,7 +62,6 @@ CREATE TABLE docservers
   path_template character varying(255) NOT NULL,
   creation_date timestamp without time zone NOT NULL,
   coll_id character varying(32) NOT NULL DEFAULT 'coll_1'::character varying,
-  priority_number integer NOT NULL DEFAULT 10,
   CONSTRAINT docservers_pkey PRIMARY KEY (docserver_id),
   CONSTRAINT docservers_id_key UNIQUE (id)
 )
diff --git a/src/app/docserver/controllers/DocserverController.php b/src/app/docserver/controllers/DocserverController.php
index 8f638d24fb10ee5e13a3d150bc27cdf437f84ae4..f8e49c42cf80ec4276b7573027ca7a0035f2ad2a 100644
--- a/src/app/docserver/controllers/DocserverController.php
+++ b/src/app/docserver/controllers/DocserverController.php
@@ -33,7 +33,7 @@ class DocserverController
         }
 
         $sortedDocservers = [];
-        $docservers = DocserverModel::get(['orderBy' => ['priority_number']]);
+        $docservers = DocserverModel::get();
         foreach ($docservers as $docserver) {
             $sortedDocservers[$docserver['docserver_type_id']][] = DocserverController::getFormattedDocserver(['docserver' => $docserver]);
         }
@@ -87,19 +87,13 @@ class DocserverController
             return $response->withStatus(400)->withJson(['errors' => _PATH_OF_DOCSERVER_UNAPPROACHABLE]);
         }
 
-        $data['is_readonly'] = empty($data['is_readonly']) ? 'N' : 'Y';
-        $docservers = DocserverModel::get([
-            'select'    => ['priority_number'],
-            'where'     => ['docserver_type_id = ?'],
-            'data'      => [$data['docserver_type_id']],
-            'orderBy'   => ['priority_number DESC'],
-            'limit'     => 1
+        $existingCurrentDocserver = DocserverModel::getCurrentDocserver([
+            'select' => ['1'],
+            'typeId' => $data['docserver_type_id'],
+            'collId' => $data['coll_id']
         ]);
-        if (empty($docservers[0]['priority_number'])) {
-            $data['priority_number'] = 1;
-        } else {
-            $data['priority_number'] = $docservers[0]['priority_number'] + 1;
-        }
+        $data['is_readonly'] = empty($existingCurrentDocserver) ? 'N' : 'Y';
+
 
         $id = DocserverModel::create($data);
         HistoryController::add([
@@ -125,25 +119,27 @@ class DocserverController
         $check = Validator::stringType()->notEmpty()->validate($data['device_label']);
         $check = $check && Validator::intVal()->notEmpty()->validate($data['size_limit_number']);
         $check = $check && Validator::stringType()->notEmpty()->validate($data['path_template']);
-        $check = $check && Validator::intVal()->notEmpty()->validate($data['priority_number']);
+        $check = $check && Validator::boolType()->validate($data['is_readonly']);
         if (!$check) {
             return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
         }
 
-        $docserver = DocserverModel::getById(['id' => $aArgs['id'], 'select' => ['docserver_type_id']]);
+        $docserver = DocserverModel::getById(['id' => $aArgs['id'], 'select' => ['docserver_type_id', 'coll_id']]);
         if (empty($docserver)) {
             return $response->withStatus(400)->withJson(['errors' => 'Docserver not found']);
         }
         if (!DocserverController::isPathAvailable(['path' => $data['path_template']])) {
             return $response->withStatus(400)->withJson(['errors' => _PATH_OF_DOCSERVER_UNAPPROACHABLE]);
         }
-        $existingDocserverPriority = DocserverModel::get([
-            'select'    => ['1'],
-            'where'     => ['priority_number = ?', 'docserver_type_id = ?', 'id != ?'],
-            'data'      => [$data['priority_number'], $docserver['docserver_type_id'], $aArgs['id']]
-        ]);
-        if (!empty($existingDocserverPriority)) {
-            return $response->withStatus(400)->withJson(['errors' => _DOCSERVER_PRIORITY_EXISTS]);
+        if (!$data['is_readonly']) {
+            $existingCurrentDocserver = DocserverModel::getCurrentDocserver([
+                'select' => ['id'],
+                'typeId' => $docserver['docserver_type_id'],
+                'collId' => $docserver['coll_id']
+            ]);
+            if (!empty($existingCurrentDocserver) && $existingCurrentDocserver['id'] != $aArgs['id']) {
+                return $response->withStatus(400)->withJson(['errors' => _DOCSERVER_ACTIVATED_EXISTS]);
+            }
         }
 
         $updateData = [
@@ -151,7 +147,6 @@ class DocserverController
             'device_label'          => $data['device_label'],
             'size_limit_number'     => $data['size_limit_number'],
             'path_template'         => $data['path_template'],
-            'priority_number'       => $data['priority_number'],
             'is_readonly'           => empty($data['is_readonly']) ? 'N' : 'Y'
         ];
 
@@ -196,9 +191,9 @@ class DocserverController
 
     public static function storeResourceOnDocServer(array $aArgs)
     {
-        ValidatorModel::notEmpty($aArgs, ['collId', 'fileInfos']);
-        ValidatorModel::arrayType($aArgs, ['fileInfos']);
+        ValidatorModel::notEmpty($aArgs, ['collId', 'docserverTypeId', 'fileInfos']);
         ValidatorModel::stringType($aArgs, ['collId', 'docserverTypeId']);
+        ValidatorModel::arrayType($aArgs, ['fileInfos']);
         ValidatorModel::notEmpty($aArgs['fileInfos'], ['tmpDir', 'size', 'format', 'tmpFileName']);
         ValidatorModel::stringType($aArgs['fileInfos'], ['tmpDir', 'format', 'tmpFileName']);
         ValidatorModel::intVal($aArgs['fileInfos'], ['size']);
@@ -211,8 +206,7 @@ class DocserverController
                 . $aArgs['fileInfos']['tmpDir'] . $aArgs['fileInfos']['tmpFileName']];
         }
 
-        $aArgs['docserverTypeId'] = empty($aArgs['docserverTypeId']) ? 'DOC' : $aArgs['docserverTypeId'];
-        $docserver = DocserverModel::getDocserverToInsert(['collId' => $aArgs['collId'], 'typeId' => $aArgs['docserverTypeId']]);
+        $docserver = DocserverModel::getCurrentDocserver(['collId' => $aArgs['collId'], 'typeId' => $aArgs['docserverTypeId']]);
         if (empty($docserver)) {
             return ['errors' => '[storeRessourceOnDocserver] No available Docserver'];
         }
diff --git a/src/app/docserver/models/DocserverModelAbstract.php b/src/app/docserver/models/DocserverModelAbstract.php
index 5b8accdffe6f117a66a10cabbba37fda5e30b7ae..9671e840be193bb37edd0b76898bf82a1e6a0b11 100644
--- a/src/app/docserver/models/DocserverModelAbstract.php
+++ b/src/app/docserver/models/DocserverModelAbstract.php
@@ -77,33 +77,11 @@ class DocserverModelAbstract
         return $aDocserver[0];
     }
 
-    public static function getFirstByTypeId(array $aArgs)
-    {
-        ValidatorModel::notEmpty($aArgs, ['typeId']);
-        ValidatorModel::stringType($aArgs, ['typeId']);
-        ValidatorModel::arrayType($aArgs, ['select']);
-
-        $aDocserver = DatabaseModel::select([
-            'select'    => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
-            'table'     => ['docservers'],
-            'where'     => ['docserver_type_id = ?'],
-            'data'      => [$aArgs['typeId']],
-            'order_by'  => ['priority_number'],
-            'limit'     => 1
-        ]);
-
-        if (empty($aDocserver[0])) {
-            return [];
-        }
-
-        return $aDocserver[0];
-    }
-
     public static function create(array $aArgs)
     {
-        ValidatorModel::notEmpty($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'size_limit_number', 'priority_number', 'is_readonly']);
+        ValidatorModel::notEmpty($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'size_limit_number', 'is_readonly']);
         ValidatorModel::stringType($aArgs, ['docserver_id', 'docserver_type_id', 'device_label', 'path_template', 'coll_id', 'is_readonly']);
-        ValidatorModel::intVal($aArgs, ['size_limit_number', 'priority_number']);
+        ValidatorModel::intVal($aArgs, ['size_limit_number']);
 
         $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'docservers_id_seq']);
 
@@ -117,7 +95,6 @@ class DocserverModelAbstract
                 'path_template'         => $aArgs['path_template'],
                 'coll_id'               => $aArgs['coll_id'],
                 'size_limit_number'     => $aArgs['size_limit_number'],
-                'priority_number'       => $aArgs['priority_number'],
                 'is_readonly'           => $aArgs['is_readonly'],
                 'creation_date'         => 'CURRENT_TIMESTAMP'
             ]
@@ -158,21 +135,16 @@ class DocserverModelAbstract
         return true;
     }
 
-    public static function getDocserverToInsert(array $aArgs)
+    public static function getCurrentDocserver(array $aArgs)
     {
-        ValidatorModel::notEmpty($aArgs, ['collId']);
+        ValidatorModel::notEmpty($aArgs, ['collId', 'typeId']);
         ValidatorModel::stringType($aArgs, ['collId', 'typeId']);
 
-        if (empty($aArgs['typeId'])) {
-            $aArgs['typeId'] = 'DOC';
-        }
-
         $aDocserver = DatabaseModel::select([
             'select'    => ['*'],
             'table'     => ['docservers'],
             'where'     => ['is_readonly = ?', 'coll_id = ?', 'docserver_type_id = ?'],
             'data'      => ['N', $aArgs['collId'], $aArgs['typeId']],
-            'order_by'  => ['priority_number'],
             'limit'     => 1,
         ]);
 
diff --git a/src/app/resource/controllers/StoreController.php b/src/app/resource/controllers/StoreController.php
index c38feb1f6b4ff1224a6a890a27724ce28ce5a58e..99648d1162c277c77172b24f058e3c2a4b3333e6 100644
--- a/src/app/resource/controllers/StoreController.php
+++ b/src/app/resource/controllers/StoreController.php
@@ -47,12 +47,13 @@ class StoreController
             fclose($file);
 
             $storeResult = DocserverController::storeResourceOnDocServer([
-                'collId'    => $aArgs['collId'],
-                'fileInfos' => [
-                    'tmpDir'        => CoreConfigModel::getTmpPath(),
-                    'size'          => filesize($tmpFilepath),
-                    'format'        => $aArgs['fileFormat'],
-                    'tmpFileName'   => $fileName,
+                'collId'            => $aArgs['collId'],
+                'docserverTypeId'   => 'DOC',
+                'fileInfos'         => [
+                    'tmpDir'            => CoreConfigModel::getTmpPath(),
+                    'size'              => filesize($tmpFilepath),
+                    'format'            => $aArgs['fileFormat'],
+                    'tmpFileName'       => $fileName,
                 ]
             ]);
             if (!empty($storeResult['errors'])) {
diff --git a/src/app/signatureBook/controllers/SignatureBookController.php b/src/app/signatureBook/controllers/SignatureBookController.php
index 699080212a31bc9382b1560810ebe472ab2d4f44..3fafd3b2f201bb78458db90e3386cbf949004ad7 100644
--- a/src/app/signatureBook/controllers/SignatureBookController.php
+++ b/src/app/signatureBook/controllers/SignatureBookController.php
@@ -43,7 +43,7 @@ class SignatureBookController
         if (!ResController::hasRightByResId(['resId' => $resId, 'userId' => $GLOBALS['userId']])) {
             return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
         }
-        $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]);
+        $docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]);
         if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
             return $response->withStatus(500)->withJson(['errors' => _UNREACHABLE_DOCSERVER]);
         }
diff --git a/src/app/template/controllers/TemplateController.php b/src/app/template/controllers/TemplateController.php
index 5c7cd921f4fd574da1d5a5daafa1c94c348d2ff7..aecfc5488c533615abcd4a0051c76e05c27a1795 100644
--- a/src/app/template/controllers/TemplateController.php
+++ b/src/app/template/controllers/TemplateController.php
@@ -32,7 +32,7 @@ class TemplateController
         }
 
         if ($template['template_type'] == 'OFFICE') {
-            $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]);
+            $docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]);
 
             $pathOnDocserver = DocserverController::createPathOnDocServer(['path' => $docserver['path_template']]);
             $docinfo = DocserverController::getNextFileNameInDocServer(['pathOnDocserver' => $pathOnDocserver['pathToDocServer']]);
diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index 135f52907a425e2a60f63a5264d8ef8ad4503275..0de726e61d7a9d1a2df07f56bdd11ec86605393b 100644
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -470,7 +470,7 @@ class UserController
             return $response->withStatus(400)->withJson(['errors' => 'Signature does not exist']);
         }
 
-        $docserver = DocserverModel::getFirstByTypeId(['typeId' => 'TEMPLATES', 'select' => ['path_template']]);
+        $docserver = DocserverModel::getCurrentDocserver(['typeId' => 'TEMPLATES', 'collId' => 'templates', 'select' => ['path_template']]);
         if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
             return [];
         }
diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php
index 7d246d86ac717941b8376bd76ab11d506403f635..c649c18c597ed013d8dfe0234865eeef7b536d06 100644
--- a/src/core/lang/lang-en.php
+++ b/src/core/lang/lang-en.php
@@ -41,7 +41,7 @@ define('_DEST_USER', 'Recipient');
 define('_DOCSERVER_ADDED', 'Docserver added');
 define('_DOCSERVER_UPDATED', 'Docserver updated');
 define('_DOCSERVER_DELETED', 'Docserver deleted');
-define('_DOCSERVER_PRIORITY_EXISTS', 'A docserver with this priority already exists');
+define('_DOCSERVER_ACTIVATED_EXISTS', 'A docserver with this type and this collection is already activated');
 define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Doctype first level added');
 define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Doctype first level deleted');
 define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Doctype first level edited');
diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php
index 59ee2b3eee71898585ecea807f780be1bc9acf7d..c0fc1896be5e26db95f1954aa18de95a9b80c659 100644
--- a/src/core/lang/lang-fr.php
+++ b/src/core/lang/lang-fr.php
@@ -41,7 +41,7 @@ define('_DEST_USER', 'Destinataire');
 define('_DOCSERVER_ADDED', 'Zone de stockage ajoutée');
 define('_DOCSERVER_UPDATED', 'Zone de stockage modifiée');
 define('_DOCSERVER_DELETED', 'Zone de stockage supprimée');
-define('_DOCSERVER_PRIORITY_EXISTS', 'Une zone de stockage avec cette priorité existe déjà');
+define('_DOCSERVER_ACTIVATED_EXISTS', 'Une zone de stockage avec le même type et la même collection est déjà activée');
 define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Chemise ajoutée');
 define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Chemise supprimée');
 define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Chemise modifiée');