diff --git a/src/files/tandemparametersfile.cpp b/src/files/tandemparametersfile.cpp
index 481bafb64b44b66c59ee2a6dc93c86ac412cf9f5..bf0711d9ee148706248b837b91ef52d906a0df6f 100644
--- a/src/files/tandemparametersfile.cpp
+++ b/src/files/tandemparametersfile.cpp
@@ -67,6 +67,10 @@ bool TandemParametersFile::exists() const
 {
     return _param_source.exists();
 }
+void TandemParametersFile::setDirectory(const QDir & directory) {
+    QFileInfo new_dir(QString("%1/%2").arg(directory.absolutePath()).arg(_param_source.fileName()));
+    _param_source = new_dir;
+}
 
 void TandemParametersFile::setTandemParameters(const TandemParameters & parameters) {
 
@@ -110,20 +114,21 @@ TandemParameters TandemParametersFile::getTandemParameters() const {
     QXmlInputSource xmlInputSource(&qfile);
 
     if (simplereader.parse(xmlInputSource)) {
-
+        qDebug() << "TandemParametersFile::getTandemParameters parse ok";
         qfile.close();
+        delete parser;
     } else {
 
+        qDebug() << "TandemParametersFile::getTandemParameters parse error";
         qfile.close();
-        delete parser;
 
         throw pappso::PappsoException(QObject::tr("Error reading %1 X!Tandem preset file :\n %2").arg(_param_source.absoluteFilePath()).arg(parser->errorString()));
+        delete parser;
     }
-    delete parser;
     return parameters;
 }
 
-bool TandemParametersFile::isTandemPresetFile() {
+bool TandemParametersFile::isTandemPresetFile() const {
 
     if (this->exists()) {
 
diff --git a/src/files/tandemparametersfile.h b/src/files/tandemparametersfile.h
index fda4836871353960710569449b5a7686b7fc224f..73dcd62116dd079941b47bd123f6800500759d66 100644
--- a/src/files/tandemparametersfile.h
+++ b/src/files/tandemparametersfile.h
@@ -61,6 +61,10 @@ public:
      */
     void setTandemParameters(const TandemParameters & parameters);
     
+    /** @brief set param file directory
+     */
+    void setDirectory(const QDir & directory);
+    
 private :
     void writeXmlParametersFile (QXmlStreamWriter * p_out, const TandemParameters & parameters) const;
 
diff --git a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp
index 88f67be1eddbf978c411ffd70873e96e7571ffd5..cc7b41badd0cd3c25e50defdcea226eed7b75cc3 100644
--- a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp
+++ b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp
@@ -70,13 +70,15 @@ void EditTandemPresetDialog::setTandemParametersFile(const TandemParametersFile
     if (tandem_preset_file.exists()) {
         _p_tandem_preset_file = new TandemParametersFile( tandem_preset_file);
         _preset_directory = _p_tandem_preset_file->getAbsoluteDir().absolutePath();
+        _tandem_params = _p_tandem_preset_file->getTandemParameters();
     } else {
-        _p_tandem_preset_file = new TandemParametersFile(":/tandem/ressources/model/QExactive_analysis_FDR_nosemi.xml");
-
+        _p_tandem_preset_file = new TandemParametersFile(":/tandem/resources/model/QExactive_analysis_FDR_nosemi.xml");
+        _tandem_params = _p_tandem_preset_file->getTandemParameters();
         QSettings settings;
         _preset_directory = settings.value("path/tandemrun_preset_directory", "").toString();
+        _p_tandem_preset_file->setDirectory(QDir(_preset_directory));
     }
-    _tandem_params = _p_tandem_preset_file->getTandemParameters();
+    
 
     fillPresetComboBox();
     populate();
@@ -118,6 +120,7 @@ void EditTandemPresetDialog::doSave() {
     if (_p_tandem_preset_file == nullptr) {
         throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
     }
+    _p_tandem_preset_file->setDirectory(QDir(_preset_directory));
     _p_tandem_preset_file->setTandemParameters(_tandem_params);
     fillPresetComboBox();
     populate();
@@ -126,17 +129,23 @@ void EditTandemPresetDialog::doSave() {
 void EditTandemPresetDialog::doLoad() {
     int index = ui->preset_combo_box->currentIndex();
     if ( index != -1 ) { // -1 for not found
-        if (_p_tandem_preset_file == nullptr) {
-            throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
+        TandemParametersFile * p_tandem_preset_file = new TandemParametersFile(
+            ui->preset_combo_box->itemData(index).value<QString>());
+        if (p_tandem_preset_file->isTandemPresetFile()) {
+            if (_p_tandem_preset_file == nullptr) {
+                throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr"));
+            }
+            else {
+                delete _p_tandem_preset_file;
+            }
+
+            _p_tandem_preset_file = p_tandem_preset_file;
+            _tandem_params = _p_tandem_preset_file->getTandemParameters();
+            populate();
         }
         else {
-            delete _p_tandem_preset_file;
+            QMessageBox::warning(this,tr("Error :"), tr("%1 is not an X!Tandem parameter file").arg(p_tandem_preset_file->getAbsoluteFilePath()));
         }
-
-        _p_tandem_preset_file = new TandemParametersFile(
-            ui->preset_combo_box->itemData(index).value<QString>());
-        _tandem_params = _p_tandem_preset_file->getTandemParameters();
-        populate();
     }
 }
 const TandemParametersFile & EditTandemPresetDialog::getTandemParametersFile() const {
@@ -972,6 +981,11 @@ void EditTandemPresetDialog::done(int r)
     if(QDialog::Accepted == r)  // ok was pressed
     {
         readUi();
+        if (!_p_tandem_preset_file->exists()) {
+            QMessageBox::warning(this,
+                                 tr("Save parameters"), tr("Parameters file does not exists.\nPlease save it before pressing ok or cancel edition"));
+            return;
+        }
         TandemParameters ref_params = _p_tandem_preset_file->getTandemParameters();
         if(ref_params.equals(_tandem_params))   // validate the data somehow
         {
diff --git a/src/gui/tandem_run_dialog/tandemrundialog.cpp b/src/gui/tandem_run_dialog/tandemrundialog.cpp
index 7be7e716d14164a7fd0def04b09b6736a9451043..3b4bb303e97448ae1d7c93918f2ef5e97cc20dd0 100644
--- a/src/gui/tandem_run_dialog/tandemrundialog.cpp
+++ b/src/gui/tandem_run_dialog/tandemrundialog.cpp
@@ -104,7 +104,10 @@ void TandemRunDialog::fillPresetComboBox() {
     filters << "*.xml";
     preset_dir.setNameFilters(filters);
     for (QFileInfo file_info: preset_dir.entryInfoList() ) {
-        ui->preset_combobox->addItem(file_info.baseName(), QVariant(file_info.absoluteFilePath()));
+        TandemParametersFile param_file(file_info.absoluteFilePath());
+        if (param_file.isTandemPresetFile()) {
+            ui->preset_combobox->addItem(file_info.baseName(), QVariant(file_info.absoluteFilePath()));
+        }
     }
     int index = ui->preset_combobox->findText(default_preset_name);
     if ( index != -1 ) { // -1 for not found
diff --git a/src/input/xtandemparamsaxhandler.cpp b/src/input/xtandemparamsaxhandler.cpp
index f68fbabce17faca23748727c04b91ac806336f58..06e44a24258b5f4e20dc39f545f6214bde652c53 100644
--- a/src/input/xtandemparamsaxhandler.cpp
+++ b/src/input/xtandemparamsaxhandler.cpp
@@ -29,6 +29,7 @@
 
 #include "xtandemparamsaxhandler.h"
 #include <pappsomspp/pappsoexception.h>
+#include <QDebug>
 
 
 XtandemParamSaxHandler::XtandemParamSaxHandler(TandemParameters * p_tandem_parameters) {
@@ -51,6 +52,13 @@ bool XtandemParamSaxHandler::startElement(const QString & namespaceURI, const QS
     bool is_ok = true;
 
     try {
+        //<bioml label="example api document">
+        if (_tag_stack.size() == 1) {
+            if (qName != "bioml") {
+                _errorStr = QObject::tr("ERROR in XtandemParamSaxHandler::startElement root tag %1 is not <bioml>").arg(qName);
+                return false;
+            }
+        }
         //startElement_group
 
         if (qName == "note") {
@@ -102,7 +110,7 @@ bool XtandemParamSaxHandler::error(const QXmlParseException &exception) {
     _errorStr = QObject::tr("Parse error at line %1, column %2 :\n"
                             "%3").arg(exception.lineNumber()).arg(exception.columnNumber()).arg(
                     exception.message());
-
+    qDebug() << "XtandemParamSaxHandler::error " << _errorStr;
     return false;
 }
 
@@ -111,6 +119,7 @@ bool XtandemParamSaxHandler::fatalError(const QXmlParseException &exception) {
     _errorStr = QObject::tr("Parse error at line %1, column %2 :\n"
                             "%3").arg(exception.lineNumber()).arg(exception.columnNumber()).arg(
                     exception.message());
+    qDebug() << "XtandemParamSaxHandler::fatalError " << _errorStr;
     return false;
 }