diff --git a/core/trunk/core/class/class_resource.php b/core/trunk/core/class/class_resource.php
index 131733d7db6f20d58c908ab47385da84ce628134..8ef170dbede5b9101e7c20685ac8b2fedd4c41d1 100644
--- a/core/trunk/core/class/class_resource.php
+++ b/core/trunk/core/class/class_resource.php
@@ -153,6 +153,7 @@
         if(!$this->check_basic_fields($data))
         {
             $_SESSION['error'] = $this->error;
+            echo $this->error;exit;
             return false;
         }
         else
diff --git a/core/trunk/core/class/resources_controler.php b/core/trunk/core/class/resources_controler.php
index 3a111ee103b62c9719e80747a0b99262c27e8732..169a285f974d134d07be7fe70e2239db6900ad8b 100755
--- a/core/trunk/core/class/resources_controler.php
+++ b/core/trunk/core/class/resources_controler.php
@@ -59,53 +59,90 @@ class resources_controler
     #####################################
     public function storeResource($encodedFile, $data, $collId, $table, $fileFormat, $status)
     {
-        $func = new functions();
-        $data = $func->object2array($data);
-        $returnCode = 0;
-        $db = new dbquery();
-        $db->connect();
-        //copy sended file on tmp 
-        $fileContent = base64_decode($encodedFile);
-        $random = rand();
-        $fileName = 'tmp_file_' . $random . '.' . $fileFormat;
-        $Fnm = $_SESSION['config']['tmppath'] . $fileName;
-        $inF = fopen($Fnm,"w");
-        fwrite($inF, $fileContent);
-        fclose($inF);
-        //store resource on docserver
-        $docserverControler = new docservers_controler();
-        $fileInfos = array(
-            'tmpDir'      => $_SESSION['config']['tmppath'],
-            'size'        => filesize($Fnm),
-            'format'      => $fileFormat,
-            'tmpFileName' => $fileName,
-        );
-        //print_r($fileInfos);
-        $storeResult = array();
-        $storeResult = $docserverControler->storeResourceOnDocserver(
-            $collId, $fileInfos
-        );
-        //print_r($storeResult);exit;
-        //store resource metadata in database
-        $resource = new resource();
-        $data = $this->prepareStorage(
-            $data, 
-            $storeResult['docserver_id'],
-            $status,
-            $fileFormat
-        );
-        unlink($Fnm);
-        //var_dump($data);exit;
-        $resId = $resource->load_into_db(
-            $table, 
-            $storeResult['destination_dir'],
-            $storeResult['file_destination_name'],
-            $storeResult['path_template'],
-            $storeResult['docserver_id'], 
-            $data,
-            $_SESSION['config']['databasetype']
-        );
-        return $resId;
+        try {
+            $func = new functions();
+            $data = $func->object2array($data);
+            for ($i=0; $i < count($data);$i++) {
+                $data[$i]['column'] = strtolower($data[$i]['column']);
+            }
+            $returnCode = 0;
+            $db = new dbquery();
+            $db->connect();
+            //copy sended file on tmp 
+            $fileContent = base64_decode($encodedFile);
+            $random = rand();
+            $fileName = 'tmp_file_' . $random . '.' . $fileFormat;
+            $Fnm = $_SESSION['config']['tmppath'] . $fileName;
+            $inF = fopen($Fnm,"w");
+            fwrite($inF, $fileContent);
+            fclose($inF);
+            //store resource on docserver
+            $docserverControler = new docservers_controler();
+            $fileInfos = array(
+                'tmpDir'      => $_SESSION['config']['tmppath'],
+                'size'        => filesize($Fnm),
+                'format'      => $fileFormat,
+                'tmpFileName' => $fileName,
+            );
+            //print_r($fileInfos);
+            $storeResult = array();
+            $storeResult = $docserverControler->storeResourceOnDocserver(
+                $collId, $fileInfos
+            );
+            if (!empty($storeResult['error'])) {
+                $returnResArray = array(
+                    'returnCode' => (int) -3,
+                    'resId' => '',
+                    'error' => $storeResult['error'],
+                );
+                return $returnResArray;
+            }
+            //print_r($storeResult);exit;
+            //store resource metadata in database
+            $resource = new resource();
+            
+            $data = $this->prepareStorage(
+                $data, 
+                $storeResult['docserver_id'],
+                $status,
+                $fileFormat
+            );
+            unlink($Fnm);
+            //var_dump($data);exit;
+            $resId = $resource->load_into_db(
+                $table, 
+                $storeResult['destination_dir'],
+                $storeResult['file_destination_name'],
+                $storeResult['path_template'],
+                $storeResult['docserver_id'], 
+                $data,
+                $_SESSION['config']['databasetype']
+            );
+            if (!is_numeric($resId)) {
+                $returnResArray = array(
+                    'returnCode' => (int) -2,
+                    'resId' => '',
+                    'error' => 'Pb with SQL insertion : ' .$resId ,
+                );
+                return $returnResArray;
+            }
+            if ($resId == 0) {
+                $resId = '';
+            }
+            $returnResArray = array(
+                'returnCode' => (int) 0,
+                'resId' => $resId,
+                'error' => '',
+            );
+            return $returnResArray;
+        } catch (Exception $e) {
+            $returnResArray = array(
+                'returnCode' => (int) -1,
+                'resId' => '',
+                'error' => 'unknown error' . $e->getMessage(),
+            );
+            return $returnResArray;
+        }
     }
 
     private function prepareStorage($data, $docserverId, $status, $fileFormat)
@@ -217,210 +254,57 @@ class resources_controler
     }
     
     #####################################
-    ## Web Service de versement de données issue du gros scanner
+    ## Store datas of the resource in extension table 
     #####################################
-    public function storeAttachmentResource($resId, $collId, $encodedContent, $fileFormat, $fileName)
+    public function storeExtResource($resId, $data, $table)
     {
-        require_once 'core/class/class_request.php';
-        require_once 'core/class/class_resource.php';
-        require_once 'core/class/docservers_controler.php';
-        require_once 'core/class/class_security.php';
-        $sec = new security();
-        $table = $sec->retrieve_table_from_coll($collId);
-        $db = new request();
-        $db->connect();
-        $query = 'select res_id from ' . $table . ' where res_id = '
-               . $resId;
-        $db->query($query);
-        if ($db->nb_result() == 0) {
-            $status = 'ko';
-            $error .= 'res_id inexistant';
-        } else {
-            $fileContent = base64_decode($encodedContent);
-            $tmpFileName = 'tmp_file_ws_'
-                 . rand() . "_" . md5($fileContent) 
-                 . "." . strtolower($fileFormat);
-            $Fnm = $_SESSION['config']['tmppath'] . $tmpFileName; 
-            $inF = fopen($Fnm, "w");
-            fwrite($inF, $fileContent);
-            fclose($inF);
-            $docserverControler = new docservers_controler();
-            $docserver = $docserverControler->getDocserverToInsert(
-               $collId
+        try {
+            $func = new functions();
+            $data = $func->object2array($data);
+            $queryExtFields = '(';
+            $queryExtValues = '(';
+            for ($i=0; $i < count($data);$i++) {
+                //COLUMN
+                $data[$i]['column'] = strtolower($data[$i]['column']);
+                $queryExtFields .= $data[$i]['column'] . ',';
+                //VALUE
+                if ($data[$i]['type'] == 'string' || $data[$i]['type'] == 'date') {
+                    $queryExtValues .= "'" . $data[$i]['value'] . "',";
+                } else {
+                    $queryExtValues .= $data[$i]['value'] . ",";
+                }
+            }
+            $queryExtFields = preg_replace('/,$/', ',res_id)', $queryExtFields);
+            $queryExtValues = preg_replace(
+                '/,$/', ',' . $resId . ')', $queryExtValues
             );
-            if (empty($docserver)) {
-                $status = 'ko';
-                $error = _DOCSERVER_ERROR . ' : '
-                    . _NO_AVAILABLE_DOCSERVER . ". " . _MORE_INFOS . ".";
+            $queryExt = " insert into " . $table . " " . $queryExtFields
+                   . ' values ' . $queryExtValues ;
+            $returnCode = 0;
+            $db = new dbquery();
+            $db->connect();
+            if ($db->query($queryExt)) {
+                $returnResArray = array(
+                    'returnCode' => (int) 0,
+                    'resId' => $resId,
+                    'error' => '',
+                );
             } else {
-                $newSize = $docserverControler->checkSize(
-                    $docserver, $_SESSION['upfile']['size']
+                $returnResArray = array(
+                    'returnCode' => (int) -2,
+                    'resId' => '',
+                    'error' => 'Pb with SQL insertion',
                 );
-                if ($newSize == 0) {
-                    $status = 'ko';
-                    $error = _DOCSERVER_ERROR . ' : '
-                        . _NOT_ENOUGH_DISK_SPACE . ". " . _MORE_INFOS . ".";
-                } else {
-                    $fileInfos = array(
-                        "tmpDir"      => $_SESSION['config']['tmppath'],
-                        "size"        => filesize($Fnm),
-                        "format"      => strtolower($fileFormat),
-                        "tmpFileName" => $tmpFileName,
-                    );
-                    $storeResult = array();
-                    $storeResult = $docserverControler->storeResourceOnDocserver(
-                        $collId, $fileInfos
-                    );
-                    if (isset($storeResult['error']) && $storeResult['error'] <> '') {
-                        $status = 'ko';
-                        $error = $storeResult['error'];
-                    } else {
-                        unlink($Fnm);
-                        $resAttach = new resource();
-                        $_SESSION['data'] = array();
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "typist",
-                                'value' => $_SESSION['user']['UserId'],
-                                'type' => "string",
-                            )
-                        );
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "format",
-                                'value' => strtolower($fileFormat),
-                                'type' => "string",
-                            )
-                        );
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "docserver_id",
-                                'value' => $storeResult['docserver_id'],
-                                'type' => "string",
-                            )
-                        );
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "status",
-                                'value' => 'NEW',
-                                'type' => "string",
-                            )
-                        );
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "offset_doc",
-                                'value' => ' ',
-                                'type' => "string",
-                            )
-                        );
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "logical_adr",
-                                'value' => ' ',
-                                'type' => "string",
-                            )
-                        );
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "title",
-                                'value' => strtolower($fileName),
-                                'type' => "string",
-                            )
-                        );
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "coll_id",
-                                'value' => $collId,
-                                'type' => "string",
-                            )
-                        );
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "res_id_master",
-                                'value' => $resId,
-                                'type' => "integer",
-                            )
-                        );
-                        if ($_SESSION['origin'] == "scan") {
-                            array_push(
-                                $_SESSION['data'],
-                                array(
-                                    'column' => "scan_user",
-                                    'value' => $_SESSION['user']['UserId'],
-                                    'type' => "string",
-                                )
-                            );
-                            array_push(
-                                $_SESSION['data'],
-                                array(
-                                    'column' => "scan_date",
-                                    'value' => $req->current_datetime(),
-                                    'type' => "function",
-                                )
-                            );
-                        }
-                        array_push(
-                            $_SESSION['data'],
-                            array(
-                                'column' => "type_id",
-                                'value' => 0,
-                                'type' => "int",
-                            )
-                        );
-                        $id = $resAttach->load_into_db(
-                            'res_attachments',
-                            $storeResult['destination_dir'],
-                            $storeResult['file_destination_name'] ,
-                            $storeResult['path_template'],
-                            $storeResult['docserver_id'], $_SESSION['data'],
-                            $_SESSION['config']['databasetype']
-                        );
-                        if ($id == false) {
-                            $status = 'ko';
-                            $error = $resAttach->get_error();
-                        } else {
-                            $status = 'ok';
-                            if ($_SESSION['history']['attachadd'] == "true") {
-                                $users = new history();
-                                $view = $sec->retrieve_view_from_coll_id(
-                                    $collId
-                                );
-                                $users->add(
-                                    $view, $resId, "ADD", 'attachadd',
-                                    ucfirst(_DOC_NUM) . $id . ' '
-                                    . _NEW_ATTACH_ADDED . ' ' . _TO_MASTER_DOCUMENT
-                                    . $resId,
-                                    $_SESSION['config']['databasetype'],
-                                    'apps'
-                                );
-                                $users->add(
-                                    RES_ATTACHMENTS_TABLE, $id, "ADD",'attachadd',
-                                    _NEW_ATTACH_ADDED . " (" . $fileName
-                                    . ") ",
-                                    $_SESSION['config']['databasetype'],
-                                    'attachments'
-                                );
-                            }
-                        }
-                    }
-                }
             }
+            return $returnResArray;
+        } catch (Exception $e) {
+            $returnResArray = array(
+                'returnCode' => (int) -1,
+                'resId' => '',
+                'error' => 'unknown error' . $e->getMessage(),
+            );
+            return $returnResArray;
         }
-        $returnArray = array(
-            'status' => $status,
-            'value' => $id,
-            'error' => $error,
-        );
-        return $returnArray;
     }
     
     function Demo_searchResources($searchParams)
diff --git a/core/trunk/core/class/web_service/class_web_service.php b/core/trunk/core/class/web_service/class_web_service.php
index 47348a33170ed53468a3077633ae41245edab418..99415192095cb164ef30c9da144485e140450658 100644
--- a/core/trunk/core/class/web_service/class_web_service.php
+++ b/core/trunk/core/class/web_service/class_web_service.php
@@ -191,9 +191,11 @@ class webService {
         $soapServer = new MySoapServer();
         $xmlRPC = new MyXmlRPCServer();
         $wsMode = explode('/', $_SERVER['QUERY_STRING']);
-        //echo $_SERVER['QUERY_STRING'];exit;
+        
         if (isset($wsMode[0]) && !empty($wsMode[0])) {
             $wsMode = $wsMode[0];
+        } else {
+            $wsMode = 'RAS';
         }
         $wsMode = explode('&', $wsMode);
         if (isset($wsMode[0]) && !empty($wsMode[0])) {
diff --git a/core/trunk/core/class/ws.php b/core/trunk/core/class/ws.php
index 69bc6f3223b5c6b1da6f9116da4e893ad1d98074..1510a53fc7aee5c8afe4206991f01b22f4445bb3 100755
--- a/core/trunk/core/class/ws.php
+++ b/core/trunk/core/class/ws.php
@@ -34,7 +34,7 @@ $SOAP_typedef['returnViewResource'] = array('status'=>'string',
                                             'file_content'=>'string',
                                             'tmp_path'=>'string',
                                             'file_path'=>'string',
-                                            'called_by_ws'=>'string',
+                                            'called_by_ws'=>'boolean',
                                             'error'=>'string'
                                     );
 $SOAP_dispatch_map['docserverSave'] = array(
@@ -181,7 +181,9 @@ $SOAP_dispatch_map['userGet'] = array(
 ## Web Service de versement de données issue du gros scanner
 #####################################
 $SOAP_typedef['arrayOfData'] = array(
-    'arrayOfDataContent' => '{urn:MySoapServer}arrayOfDataContent',
+    array(
+        'arrayOfDataContent' => '{urn:MySoapServer}arrayOfDataContent'
+    )
 );
 
 $SOAP_typedef['arrayOfDataContent'] = array(
@@ -190,6 +192,12 @@ $SOAP_typedef['arrayOfDataContent'] = array(
     'type' => 'string',
 );
 
+$SOAP_typedef['returnResArray'] = array(
+    'returnCode'=> 'int',
+    'resId' => 'string',
+    'error' => 'string'
+);
+
 $SOAP_dispatch_map['storeResource'] = array(
     'in'  => array(
         'encodedFile' => 'string',
@@ -198,21 +206,19 @@ $SOAP_dispatch_map['storeResource'] = array(
         'table' => 'string',
         'fileFormat' => 'string',
         'status' => 'string',
-),
-    'out' => array('out' => 'string'),
+    ),
+    'out' => array('out' => '{urn:MySoapServer}returnResArray'),
     'method' => "core#resources::storeResource",
 );
 
-$SOAP_dispatch_map['storeAttachmentResource'] = array(
+$SOAP_dispatch_map['storeExtResource'] = array(
     'in'  => array(
-        'resId' => 'int',
-        'collId' => 'string',
-        'encodedContent' => 'string',
-        'fileFormat' => 'string',
-        'fileName' => 'string',
-),
-    'out' => array('out' => '{urn:MySoapServer}returnArray'),
-    'method' => "core#resources::storeAttachmentResource",
+        'resId' => 'long',
+        'data' => '{urn:MySoapServer}arrayOfData',
+        'table' => 'string',
+    ),
+    'out' => array('out' => '{urn:MySoapServer}returnResArray'),
+    'method' => "core#resources::storeExtResource",
 );
 
 $SOAP_typedef['searchParams'] = array(