diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..22ec1ac4d8a9fcf04ca59c5b312daf935bb4c571
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+data/conf/vhost.win.conf
diff --git a/bundle/seda2/Controller/ArchiveTransfer.php b/bundle/seda2/Controller/ArchiveTransfer.php
index 16395d3a8af76ce3a3274968940f55275048fa26..0e610fca5f0b2ecd80d5515a86d096c9674df3d1 100644
--- a/bundle/seda2/Controller/ArchiveTransfer.php
+++ b/bundle/seda2/Controller/ArchiveTransfer.php
@@ -49,6 +49,13 @@ class ArchiveTransfer
         $accountToken = \laabs::getToken('AUTH');
         $organizationToken = \laabs::getToken('ORGANIZATION');
 
+        if (empty($messageObject->TransferIdentifier->value)) {
+            throw \laabs::newException("seda2/invalidMessageException", "Identifiant du bordereau manquant");
+        }
+        if (empty($messageObject->ArchivalAgency->Identifier->value)) {
+            throw \laabs::newException("seda2/invalidMessageException", "Service d'Archives du bordereau manquant");
+        }
+
         $message = \laabs::newInstance('medona/message');
 
         $message->messageId = \laabs::newId();
@@ -63,11 +70,11 @@ class ArchiveTransfer
         $message->recipientOrgName = $messageObject->ArchivalAgency->name;
         $message->recipientOrgRegNumber = $messageObject->ArchivalAgency->Identifier->value;
 
-        if (isset($messageObject->Comment)) {
+        if (!empty($messageObject->Comment)) {
             $message->comment = $messageObject->Comment->value;
         }
 
-        if (isset($messageObject->ArchivalAgreement)) {
+        if (!empty($messageObject->ArchivalAgreement)) {
             $message->archivalAgreementReference = $messageObject->ArchivalAgreement->value;
         }
 
diff --git a/bundle/seda2/Exception/invalidMessageException.php b/bundle/seda2/Exception/invalidMessageException.php
new file mode 100644
index 0000000000000000000000000000000000000000..8db452c5d636f1d846c7ce4f8042d2ebeb97b321
--- /dev/null
+++ b/bundle/seda2/Exception/invalidMessageException.php
@@ -0,0 +1,26 @@
+<?php
+/*
+ * Copyright (C) 2015 Maarch
+ *
+ * This file is part of bundle audit.
+ *
+ * Bundle digitalResource is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Bundle digitalResource is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with bundle audit.  If not, see <http://www.gnu.org/licenses/>.
+ */
+namespace ext\archivesPubliques\bundle\seda2\Exception;
+
+class invalidMessageException
+    extends \core\Exception
+{
+    
+} 
\ No newline at end of file
diff --git a/data/conf/vhost.win.conf b/data/conf/vhost.win.conf
deleted file mode 100644
index 65a954429023f8ce93e34466ad0bf79f3e87ded7..0000000000000000000000000000000000000000
--- a/data/conf/vhost.win.conf
+++ /dev/null
@@ -1,59 +0,0 @@
-# APP MaarchRM - Records Management
-<VirtualHost *:80>
-    
-    # Set document root in Laabs public web directory
-    DocumentRoot C:/xampp/htdocs/laabs/web/
-
-    # Set server name
-    ServerName maarchrm.archivespublique
-    
-    Options -Indexes 
-    Options FollowSymLinks
-    
-    # DirectoryIndex dynamic.php
-    
-    # Rewrite URLs to route to frontal scripts 
-    # when target is not an existing public resource
-    RewriteEngine On 
-    
-    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f [OR]
-    RewriteCond %{REQUEST_URI} ^/public [NC]
-    RewriteRule .* - [QSA,L]
-
-    # Rewrite to dynamic frontal if no file extension
-    # input: /route?args... 
-    # output : http.php/route?args...
-    RewriteRule ^(.*)$ /http.php [QSA,L] 
-    
-    # Set environment variables for application
-    SetEnv LAABS_INSTANCE_NAME maarchRMAP
-    SetEnv LAABS_APP maarchRMAP
-    SetEnv LAABS_BUNDLES archivesPubliques;audit;auth;batchProcessing;contact;digitalResource;documentManagement;lifeCycle;medona;organization;recordsManagement;seda
-    SetEnv LAABS_EXTENSIONS archivesPubliques;thirdPartyArchiving
-    SetEnv LAABS_DEPENDENCIES repository;xml;html;localisation;datasource;sdo;json;fileSystem
-    SetEnv LAABS_PRESENTATION maarchRM
-	
-    SetEnv LAABS_CONFIGURATION "..\src\ext\archivesPubliques\data\conf\configuration.ini"
-    SetEnv LAABS_LOG "../data/maarchRM/log.txt"
-	SetEnv LAABS_TMP_DIR "C:/TEMP"
-	# SetEnv LAABS_PHP_INI "php.ini"
-    
-	SetEnv LAABS_CONTENT_TYPES "url:application/x-www-form-urlencoded;html:text/html,application/xhtml+xml;xml:application/xml;json:application/json,application/javascript;soap:application/soap+xml;csv:text/csv"
-    SetEnv LAABS_CONTENT_LANGUAGES "fr:fr,fr-fr,fr-ca"
-    SetEnv LAABS_CACHE_CONTROL "public, max-age=3600"
-    
-	# SetEnv LAABS_EXCEPTION_HANDLER
-    # SetEnv LAABS_ERROR_HANDLER
-    
-	SetEnv LAABS_DATE_FORMAT "d/m/Y"
-    SetEnv LAABS_TIMESTAMP_FORMAT "Y-m-d\TH:i:s,u\Z"
-    SetEnv LAABS_NUMBER_DECIMALS 2
-	
-	# SetEnv LAABS_MEMCACHE_SERVER "localhost:11211"
-	# SetEnv LAABS_MEMCACHE_EXPIRE 3600
-	
-	SetEnv LAABS_CRYPT_KEY mySecretKey
-	SetEnv LAABS_CRYPT_CIPHER MCRYPT_BLOWFISH
-	SetEnv LAABS_XML_NS "seda:fr:gouv:culture:archivesdefrance:seda:v1.0;medona:org:afnor:medona:1.0"
-
-</VirtualHost>
\ No newline at end of file
diff --git a/data/samples/ArchiveTransfer_Actes_04 - Copie/AR.xml b/data/samples/ArchiveTransfer_Actes_04 - Copie/AR.xml
deleted file mode 100644
index f030e9630be859a5ea26c519a5096954fb7cfd64..0000000000000000000000000000000000000000
--- a/data/samples/ArchiveTransfer_Actes_04 - Copie/AR.xml	
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<actes:ARActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:DateReception="2003-07-17" actes:IDActe="035-123456789-20030714-9999aaa-AI">
-    <actes:ActeRecu actes:Date="2003-07-14" actes:NumeroInterne="9999aaa" actes:CodeNatureActe="3">
-        <actes:CodeMatiere1 actes:CodeMatiere="2"/>
-        <actes:CodeMatiere2 actes:CodeMatiere="2"/>
-        <actes:Objet>Permis de construire au lieu-dit "Les Rochers"</actes:Objet>
-        <actes:ClassificationDateVersion>2003-06-10</actes:ClassificationDateVersion>
-        <actes:Document>
-            <actes:NomFichier>acte.pdf</actes:NomFichier>
-        </actes:Document>
-        <actes:Annexes actes:Nombre="1">
-            <actes:Annexe>
-                <actes:NomFichier>annexe_acte.pdf</actes:NomFichier>
-            </actes:Annexe>
-        </actes:Annexes>
-    </actes:ActeRecu>
-    <actes:ClassificationDateVersionEnCours>2003-06-10</actes:ClassificationDateVersionEnCours>
-</actes:ARActe>
\ No newline at end of file
diff --git a/data/samples/ArchiveTransfer_Actes_04 - Copie/Acte.pdf b/data/samples/ArchiveTransfer_Actes_04 - Copie/Acte.pdf
deleted file mode 100644
index 854e12f900548edec646f1e60121081d03cd6e10..0000000000000000000000000000000000000000
Binary files a/data/samples/ArchiveTransfer_Actes_04 - Copie/Acte.pdf and /dev/null differ
diff --git a/data/samples/ArchiveTransfer_Actes_04 - Copie/ArchiveTransfer_Actes_04.xml b/data/samples/ArchiveTransfer_Actes_04 - Copie/ArchiveTransfer_Actes_04.xml
deleted file mode 100644
index 4e080e410069ecc4c90df66185a16833d2599252..0000000000000000000000000000000000000000
--- a/data/samples/ArchiveTransfer_Actes_04 - Copie/ArchiveTransfer_Actes_04.xml	
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ArchiveTransfer xmlns="fr:gouv:culture:archivesdefrance:seda:v1.0">
-    <Date>2016-09-21T18:45:28+02:00</Date>
-    <TransferIdentifier>SEDA_Transfer_Actes_09</TransferIdentifier>
-    <ArchivalAgency>
-        <BusinessType>8413Z</BusinessType>
-        <Description>Archivage Conversation et Mémoire Electronique</Description>
-        <Identification>org_123456789_Archives</Identification>
-        <LegalClassification>Autre syndicat mixte</LegalClassification>
-        <Name>ACME</Name>
-        <Address>
-            <BuildingNumber>42</BuildingNumber>
-            <CityName>Nanterre</CityName>
-            <Country listVersionID="second edition 2006">FR</Country>
-            <Postcode>92000</Postcode>
-            <StreetName>rue des Jardins</StreetName>
-        </Address>
-        <Communication>
-            <Channel listVersionID="D10A">TE</Channel>
-            <CompleteNumber>04 92 96 80 80</CompleteNumber>
-        </Communication>
-        <Communication>
-            <Channel listVersionID="D10A">FX</Channel>
-            <CompleteNumber>04 92 96 92 96</CompleteNumber>
-        </Communication>
-        <Communication>
-            <Channel listVersionID="D10A">EM</Channel>
-            <URIID>maarch@maarg.org</URIID>
-        </Communication>
-        <Contact>
-            <DepartmentName>Service d'Archives</DepartmentName>
-            <Identification>Bblier_Maarch</Identification>
-            <PersonName>Bernard BLIER</PersonName>
-            <Responsibility>Responsable du service de tiers-archivage</Responsibility>
-            <Address>
-                <BuildingNumber>11</BuildingNumber>
-                <CityName>Nanterre</CityName>
-                <Country listVersionID="second edition 2006">FR</Country>
-                <Postcode>92000</Postcode>
-                <StreetName>bd du Sud-Est</StreetName>
-            </Address>
-            <Communication>
-                <Channel listVersionID="D10A">TE</Channel>
-                <CompleteNumber>06 10 12 34 56 78</CompleteNumber>
-            </Communication>
-            <Communication>
-                <Channel listVersionID="D10A">EM</Channel>
-                <URIID>maarch@maarch.org</URIID>
-            </Communication>
-        </Contact>
-    </ArchivalAgency>
-    <TransferringAgency>
-        <Identification>org_987654321_Versant</Identification>
-        <Name>Maarch les Bains Service d'Archives</Name>
-        <Address>
-            <BuildingNumber>71</BuildingNumber>
-            <CityName>Lyon</CityName>
-            <Country listVersionID="second edition 2006">FR</Country>
-            <Postcode>69009</Postcode>
-            <StreetName>rue Banaudon</StreetName>
-        </Address>
-    </TransferringAgency>
-    <Archive>
-        <ArchivalAgreement>MAARCH_LES_BAINS_ACTESa</ArchivalAgreement>
-        <ArchivalProfile>actes</ArchivalProfile>
-        <DescriptionLanguage listVersionID="edition 2011">fra</DescriptionLanguage>
-        <Name>Acte</Name>
-        <ContentDescription>
-            <DescriptionLevel listVersionID="edition 2009">item</DescriptionLevel>
-            <FilePlanPosition>classement_1</FilePlanPosition>
-            <FilePlanPosition>classement_2</FilePlanPosition>
-            <Language listVersionID="edition 2011">fra</Language>
-            <LatestDate>2010-12-31</LatestDate>
-            <OldestDate>2000-01-01</OldestDate>
-            <AccessRestrictionRule>
-                <Code listVersionID="edition 2009">AR038</Code>
-                <StartDate>2015-09-21</StartDate>
-            </AccessRestrictionRule>
-            <Keyword>
-                <KeywordContent>ACME</KeywordContent>
-                <KeywordType listVersionID="edition 2009">corpname</KeywordType>
-                <AccessRestrictionRule>
-                    <Code listVersionID="edition 2009">AR038</Code>
-                    <StartDate>2015-09-21</StartDate>
-                </AccessRestrictionRule>
-            </Keyword>
-            <Keyword>
-                <KeywordContent>finances publiques</KeywordContent>
-                <KeywordType listVersionID="edition 2009">subject</KeywordType>
-            </Keyword>
-            <OriginatingAgency>
-                <Identification>org_987654321_DGS_SFa</Identification>
-                <Name>Maarch les Bains Service Finance</Name>
-                <Address>
-                    <BuildingNumber>33</BuildingNumber>
-                    <CityName>Niort</CityName>
-                    <Country listVersionID="second edition 2006">FR</Country>
-                    <Postcode>79000</Postcode>
-                    <StreetName>boulevard de Prague</StreetName>
-                </Address>
-            </OriginatingAgency>
-        </ContentDescription>
-        <AccessRestrictionRule>
-            <Code listVersionID="edition 2009">AR040</Code>
-            <StartDate>2016-09-21</StartDate>
-        </AccessRestrictionRule>
-        <AppraisalRule>
-            <Code listVersionID="edition 2009">detruire</Code>
-            <Duration>P1Y</Duration>
-            <StartDate>2016-09-21</StartDate>
-        </AppraisalRule>
-        <ArchiveObject>
-            <Name>Transmission_acte</Name>
-            <ArchiveObject>
-                <Name>Acte</Name>
-                <Document>
-                    <Attachment format="fmt/18" mimeCode="application/pdf" filename="Acte.pdf"/>
-                    <Integrity algorithme="http://www.w3.org/2001/04/xmlenc#sha256">b720a701028b96cccdbf581762d725676037206b7515333051161c5b4762b300</Integrity>
-                    <Language listVersionID="edition 2011">fra</Language>
-                    <Size unitCode="AD">1090621</Size>
-                    <Type listVersionID="edition 2009">CDO</Type>
-                </Document>
-            </ArchiveObject>
-            <ArchiveObject>
-                <Name>Accusé de réception du contrôle de légalité</Name>
-                <Document>
-                    <Attachment format="fmt/101" mimeCode="text/xml" filename="AR.xml"/>
-                    <Integrity algorithme="http://www.w3.org/2001/04/xmlenc#sha256">d6f5553fa3d800583ebeb312e342078b2bf344703eaea1342861fa5803d0a781</Integrity>
-                    <Language listVersionID="edition 2011">fra</Language>
-                    <Size unitCode="AD">1015</Size>
-                    <Type listVersionID="edition 2009">CDO</Type>
-                </Document>
-            </ArchiveObject>
-        </ArchiveObject>
-    </Archive>
-</ArchiveTransfer>
diff --git a/presentation/maarchRM/Resources/view/seda2/messageComposer/messageComposer.html b/presentation/maarchRM/Resources/view/seda2/messageComposer/messageComposer.html
index b40ff9410dbbaba7de8f03f0c8d09dca214c5dfc..84a5423214171cb35bdd64e2a0d6bf29a91f12b2 100644
--- a/presentation/maarchRM/Resources/view/seda2/messageComposer/messageComposer.html
+++ b/presentation/maarchRM/Resources/view/seda2/messageComposer/messageComposer.html
@@ -205,6 +205,7 @@ var MessageForm = {
 
     showForm : function(formName) {
         var form = $('#messageForm');
+
         if(!$('#'+formName).hasClass('active')) {
             return;
         }
@@ -216,15 +217,23 @@ var MessageForm = {
     },
 
     save : function() {
+        var messageObject = this.serialize();
+
+        if (!messageObject) {
+            return;
+        }
+
         ajax($('#save'), {
             url         : '/seda2/archiveTransfer',
             type        : 'POST',
-            data        : JSON.stringify({messageObject: this.serialize()}),
+            data        : JSON.stringify({messageObject: messageObject}),
             contentType : 'application/json',
             dataType    : 'json',
             success     : function (response) {
                 gritter.show(response.message, response.status, response.errors);
-                load('/seda2/draftlist');
+                if (response.status) {
+                    load('/seda2/draftlist');
+                }
             },
             error       : function(response) {
                 gritter.show(response.responseJSON.message, response.responseJSON.status, response.responseJSON.errors);
@@ -234,15 +243,23 @@ var MessageForm = {
 
     serialize : function() {
         var headerForm = $('#headerForm');
+        var reference = headerForm.find('[name="reference"]').val();
+        var archivalAgency = headerForm.find('[name="recipientOrgRegNumber"]').val();
+
+        if (!reference || ! archivalAgency) {
+            gritter.show($('#compulsoryInput_text').html(), false);
+
+            return false;
+        }
 
         var message = {
           TransferIdentifier : {
-                value : headerForm.find('[name="reference"]').val()
+                value : reference
             },
             ArchivalAgency : {
                 name : headerForm.find('[name="recipientOrgRegNumber"]').find('option:selected').html(),
                 Identifier : {
-                    value : headerForm.find('[name="recipientOrgRegNumber"]').val(),
+                    value : archivalAgency,
                 }
             },
             DataObjectPackage : {