diff --git a/src/core/identification_sources/identificationdatasource.cpp b/src/core/identification_sources/identificationdatasource.cpp
index 7899da8e95aa430374f68271da2f8c78e4706a60..f3312f069b30244cb0fdee783a965dca08beddb0 100644
--- a/src/core/identification_sources/identificationdatasource.cpp
+++ b/src/core/identification_sources/identificationdatasource.cpp
@@ -43,6 +43,15 @@ IdentificationDataSource::~IdentificationDataSource()
 {
 
 }
+
+const std::map<IdentificationEngineStatistics, QVariant> & IdentificationDataSource::getIdentificationEngineStatisticsMap() const {
+    return _param_stats;
+}
+
+const std::map<IdentificationEngineParam, QVariant> & IdentificationDataSource::getIdentificationEngineParamMap() const {
+    return _params;
+}
+
 const PeptideEvidenceStore & IdentificationDataSource::getPeptideEvidenceStore() const {
     return _peptide_evidence_store;
 }
diff --git a/src/core/identification_sources/identificationdatasource.h b/src/core/identification_sources/identificationdatasource.h
index 01a8d220288a6bb4ee5d1b38b8da7d6d6d5955dd..52bf3cf03f3b9ffc3e71367d031a06cd2084e76f 100644
--- a/src/core/identification_sources/identificationdatasource.h
+++ b/src/core/identification_sources/identificationdatasource.h
@@ -114,6 +114,16 @@ public:
     void addFastaFile (FastaFileSp file);
     
     const std::vector<FastaFileSp> & getFastaFileList() const;
+    
+        
+    /** \brief get identification engine statistics map
+     */
+    virtual const std::map<IdentificationEngineStatistics, QVariant> & getIdentificationEngineStatisticsMap() const;
+    
+    /** \brief get identification engine param map
+     */
+    virtual const std::map<IdentificationEngineParam, QVariant> & getIdentificationEngineParamMap() const;
+
 
 protected :
     QString _resource_name;
diff --git a/src/output/xpip.cpp b/src/output/xpip.cpp
index ba1f7ce39819f0208ac9a7366bd91a6421246951..5b48a4b26a7581e7de309ef5f1e786103bce6ec8 100644
--- a/src/output/xpip.cpp
+++ b/src/output/xpip.cpp
@@ -194,6 +194,29 @@ void Xpip::writeIdentificationDataSourceList(const IdentificationDataSourceStore
         _output_stream->writeAttribute("engine",QString("%1").arg(static_cast<std::int8_t>(ident_source_sp.get()->getIdentificationEngine())));
         _output_stream->writeAttribute("version",ident_source_sp.get()->getIdentificationEngineVersion());
 
+        const std::map<IdentificationEngineParam, QVariant> params = ident_source_sp.get()->getIdentificationEngineParamMap();
+        if (params.size() > 0) {
+            _output_stream->writeStartElement("params");
+            for (const std::pair<IdentificationEngineParam, QVariant> stat_pair: params) {
+                _output_stream->writeStartElement("param");
+                _output_stream->writeAttribute("key",QString("%1").arg(static_cast<std::int8_t>(stat_pair.first)));
+                _output_stream->writeAttribute("value",stat_pair.second.toString());
+                _output_stream->writeEndElement();
+            }
+            _output_stream->writeEndElement();
+        }
+        
+        const std::map<IdentificationEngineStatistics, QVariant> stats = ident_source_sp.get()->getIdentificationEngineStatisticsMap();
+        if (stats.size() > 0) {
+            _output_stream->writeStartElement("stats");
+            for (const std::pair<IdentificationEngineStatistics, QVariant> stat_pair: stats) {
+                _output_stream->writeStartElement("stat");
+                _output_stream->writeAttribute("key",QString("%1").arg(static_cast<std::int8_t>(stat_pair.first)));
+                _output_stream->writeAttribute("value",stat_pair.second.toString());
+                _output_stream->writeEndElement();
+            }
+            _output_stream->writeEndElement();
+        }
         _output_stream->writeEndElement();
     }
     _output_stream->writeEndElement();