diff --git a/qt/python/mantidqtpython/mantidqtpython_def.sip b/qt/python/mantidqtpython/mantidqtpython_def.sip
index 225ec3d5503781b79ec540eceedb98c9887bf325..8049ef32de4a62f60edbab0d06a0af3e5cc9138e 100644
--- a/qt/python/mantidqtpython/mantidqtpython_def.sip
+++ b/qt/python/mantidqtpython/mantidqtpython_def.sip
@@ -1594,8 +1594,8 @@ class DataProcessorMainPresenter
 public:
 DataProcessorMainPresenter();
 
-virtual QString getPreprocessingOptionsAsString() const;
-virtual QString getProcessingOptionsAsString() const;
+virtual QMap<QString, QString> getPreprocessingOptions() const;
+virtual QMap<QString, QString> getProcessingOptions() const;
 virtual QString getPostprocessingOptionsAsString() const;
 
 virtual void notifyADSChanged(const QSet<QString> &);
diff --git a/qt/scientific_interfaces/ISISReflectometry/IReflMainWindowPresenter.h b/qt/scientific_interfaces/ISISReflectometry/IReflMainWindowPresenter.h
index 9876d5f6e5ad37c697134adbbff4ad7a3ddcc5f2..cb08c64f5f433bcaa189d795dd9c015415c24b5e 100644
--- a/qt/scientific_interfaces/ISISReflectometry/IReflMainWindowPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/IReflMainWindowPresenter.h
@@ -1,7 +1,7 @@
 #ifndef MANTID_ISISREFLECTOMETRY_IREFLMAINWINDOWPRESENTER_H
 #define MANTID_ISISREFLECTOMETRY_IREFLMAINWINDOWPRESENTER_H
 
-#include "MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h"
+#include "MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h"
 
 #include <string>
 
@@ -45,10 +45,10 @@ public:
 
   /// Pre-processing
   virtual std::string getTransmissionRuns(int group) const = 0;
-  virtual MantidWidgets::DataProcessor::OptionsMap
+  virtual MantidWidgets::DataProcessor::OptionsQMap
   getTransmissionOptions(int group) const = 0;
   /// Processing
-  virtual MantidWidgets::DataProcessor::OptionsMap
+  virtual MantidWidgets::DataProcessor::OptionsQMap
   getReductionOptions(int group) const = 0;
   /// Post-processing
   virtual std::string getStitchOptions(int group) const = 0;
diff --git a/qt/scientific_interfaces/ISISReflectometry/IReflSettingsPresenter.h b/qt/scientific_interfaces/ISISReflectometry/IReflSettingsPresenter.h
index 8a448994a86f5f986dd76edf2b2d31b97e2bb870..a391758cc9d6b2cf5c10ab935d874e6849eff437 100644
--- a/qt/scientific_interfaces/ISISReflectometry/IReflSettingsPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/IReflSettingsPresenter.h
@@ -1,7 +1,7 @@
 #ifndef MANTID_ISISREFLECTOMETRY_IREFLSETTINGSPRESENTER_H
 #define MANTID_ISISREFLECTOMETRY_IREFLSETTINGSPRESENTER_H
 
-#include "MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h"
+#include "MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h"
 
 #include <string>
 
@@ -41,10 +41,10 @@ public:
   virtual ~IReflSettingsPresenter(){};
   /// Pre-processing
   virtual std::string getTransmissionRuns() const = 0;
-  virtual MantidWidgets::DataProcessor::OptionsMap
+  virtual MantidWidgets::DataProcessor::OptionsQMap
   getTransmissionOptions() const = 0;
   /// Processing
-  virtual MantidWidgets::DataProcessor::OptionsMap
+  virtual MantidWidgets::DataProcessor::OptionsQMap
   getReductionOptions() const = 0;
   /// Post-processing
   virtual std::string getStitchOptions() const = 0;
diff --git a/qt/scientific_interfaces/ISISReflectometry/IReflSettingsTabPresenter.h b/qt/scientific_interfaces/ISISReflectometry/IReflSettingsTabPresenter.h
index 69b692fefd4e8840590aa60c4d2d5947e5123a26..47f5446cd28473735b927104fcc1426ad967f506 100644
--- a/qt/scientific_interfaces/ISISReflectometry/IReflSettingsTabPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/IReflSettingsTabPresenter.h
@@ -1,7 +1,7 @@
 #ifndef MANTID_ISISREFLECTOMETRY_IREFLSETTINGSTABPRESENTER_H
 #define MANTID_ISISREFLECTOMETRY_IREFLSETTINGSTABPRESENTER_H
 
-#include "MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h"
+#include "MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h"
 
 #include <string>
 
@@ -41,10 +41,10 @@ public:
   virtual ~IReflSettingsTabPresenter(){};
   /// Pre-processing
   virtual std::string getTransmissionRuns(int group) const = 0;
-  virtual MantidWidgets::DataProcessor::OptionsMap
+  virtual MantidWidgets::DataProcessor::OptionsQMap
   getTransmissionOptions(int group) const = 0;
   /// Processing
-  virtual MantidWidgets::DataProcessor::OptionsMap
+  virtual MantidWidgets::DataProcessor::OptionsQMap
   getReductionOptions(int group) const = 0;
   /// Post-processing
   virtual std::string getStitchOptions(int group) const = 0;
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflDataProcessorPresenter.cpp b/qt/scientific_interfaces/ISISReflectometry/ReflDataProcessorPresenter.cpp
index fb39af64b10149124523aebb442731e7356b86b6..7b3cd8c7907a118cbe02fa1257981b8127b5e8d8 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflDataProcessorPresenter.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflDataProcessorPresenter.cpp
@@ -5,6 +5,7 @@
 #include "MantidAPI/Run.h"
 #include "MantidQtWidgets/Common/DataProcessorUI/TreeManager.h"
 #include "MantidQtWidgets/Common/DataProcessorUI/DataProcessorView.h"
+#include "MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h"
 #include "MantidQtWidgets/Common/ParseKeyValueString.h"
 #include "MantidQtWidgets/Common/ParseNumerics.h"
 #include "MantidQtWidgets/Common/ProgressPresenter.h"
@@ -73,8 +74,8 @@ void ReflDataProcessorPresenter::process() {
     return;
 
   // Get global settings
-  this->setPreprocessingOptions(m_mainPresenter->getPreprocessingOptions());
-  m_processingOptions = m_mainPresenter->getProcessingOptions();
+  this->setPreprocessingOptions(convertOptionsFromQMap(m_mainPresenter->getPreprocessingOptions()));
+  m_processingOptions = convertOptionsFromQMap(m_mainPresenter->getProcessingOptions());
   this->setPostprocessingOptions(
       m_mainPresenter->getPostprocessingOptionsAsString());
 
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflMainWindowPresenter.cpp b/qt/scientific_interfaces/ISISReflectometry/ReflMainWindowPresenter.cpp
index f1436df99a67352e3feece0baab7599eef1fadc5..081a988e6f3439d71f0b80b45fee18a77f8657e9 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflMainWindowPresenter.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflMainWindowPresenter.cpp
@@ -76,7 +76,7 @@ std::string ReflMainWindowPresenter::getTransmissionRuns(int group) const {
 *options
 * @return :: Global options for 'CreateTransmissionWorkspaceAuto'
 */
-OptionsMap ReflMainWindowPresenter::getTransmissionOptions(int group) const {
+OptionsQMap ReflMainWindowPresenter::getTransmissionOptions(int group) const {
 
   checkSettingsPtrValid(m_settingsPresenter);
 
@@ -89,7 +89,7 @@ OptionsMap ReflMainWindowPresenter::getTransmissionOptions(int group) const {
 *options
 * @return :: Global processing options
 */
-OptionsMap ReflMainWindowPresenter::getReductionOptions(int group) const {
+OptionsQMap ReflMainWindowPresenter::getReductionOptions(int group) const {
 
   checkSettingsPtrValid(m_settingsPresenter);
 
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflMainWindowPresenter.h b/qt/scientific_interfaces/ISISReflectometry/ReflMainWindowPresenter.h
index d06e6704478b714cdcbfecce180a1b6bd05e6b11..96e2e2dfc30472e9fa62593d231dbad1c97866fe 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflMainWindowPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflMainWindowPresenter.h
@@ -57,10 +57,10 @@ public:
   /// Returns values passed for 'Transmission run(s)'
   std::string getTransmissionRuns(int group) const override;
   /// Returns global options for 'CreateTransmissionWorkspaceAuto'
-  MantidWidgets::DataProcessor::OptionsMap
+  MantidWidgets::DataProcessor::OptionsQMap
   getTransmissionOptions(int group) const override;
   /// Returns global options for 'ReflectometryReductionOneAuto'
-  MantidWidgets::DataProcessor::OptionsMap
+  MantidWidgets::DataProcessor::OptionsQMap
   getReductionOptions(int group) const override;
   /// Returns global options for 'Stitch1DMany'
   std::string getStitchOptions(int group) const override;
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflRunsTabPresenter.cpp b/qt/scientific_interfaces/ISISReflectometry/ReflRunsTabPresenter.cpp
index 7a1578f2cf650c0fc01a5134bf92464b6413a9a6..f2677ecede9a55e8e8ec9c7ee11c3a65ea98ed60 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflRunsTabPresenter.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflRunsTabPresenter.cpp
@@ -403,63 +403,23 @@ void ReflRunsTabPresenter::notifyADSChanged(
       m_tablePresenters.at(m_view->getSelectedGroup())->isProcessing());
 }
 
-/** Convert an options map to a comma-separated list of key=value pairs
- */
-QString
-ReflRunsTabPresenter::convertMapToString(const OptionsMap &optionsMap) const {
-  QString result;
-  bool first = true;
-
-  for (auto &kvp : optionsMap) {
-    if (!first)
-      result += ",";
-    else
-      first = false;
-
-    result += kvp.first + "=" + kvp.second;
-  }
-
-  return result;
-}
-
 /** Requests global pre-processing options as a string. Options are supplied by
   * the main presenter.
   * @return :: Global pre-processing options
   */
-OptionsMap ReflRunsTabPresenter::getPreprocessingOptions() const {
+OptionsQMap ReflRunsTabPresenter::getPreprocessingOptions() const {
 
   return m_mainPresenter->getTransmissionOptions(m_view->getSelectedGroup());
 }
 
-/** Requests global pre-processing options as a string. Options are supplied by
-  * the main presenter.
-  * @return :: Global pre-processing options as a string
-  */
-QString ReflRunsTabPresenter::getPreprocessingOptionsAsString() const {
-
-  auto optionsStr = convertMapToString(
-      m_mainPresenter->getTransmissionOptions(m_view->getSelectedGroup()));
-
-  return optionsStr;
-}
-
 /** Requests global processing options. Options are supplied by the main
 * presenter
 * @return :: Global processing options
 */
-OptionsMap ReflRunsTabPresenter::getProcessingOptions() const {
+OptionsQMap ReflRunsTabPresenter::getProcessingOptions() const {
   return m_mainPresenter->getReductionOptions(m_view->getSelectedGroup());
 }
 
-/** Requests global processing options. Options are supplied by the main
-* presenter
-* @return :: Global processing options as a string
-*/
-QString ReflRunsTabPresenter::getProcessingOptionsAsString() const {
-  return convertMapToString(
-      m_mainPresenter->getReductionOptions(m_view->getSelectedGroup()));
-}
-
 /** Requests global post-processing options as a string. Options are supplied by
 * the main
 * presenter
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflRunsTabPresenter.h b/qt/scientific_interfaces/ISISReflectometry/ReflRunsTabPresenter.h
index d8eb11e4628c49f3172fb552ec4a0843fc28b8c0..fac439fc43c201b4d127fdb4ef59a54a9914fe53 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflRunsTabPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflRunsTabPresenter.h
@@ -70,12 +70,8 @@ public:
   void notifyADSChanged(const QSet<QString> &workspaceList) override;
   /// Handle data reduction paused/resumed
   /// Global options (inherited from DataProcessorMainPresenter)
-  MantidWidgets::DataProcessor::OptionsMap
-  getPreprocessingOptions() const override;
-  QString getPreprocessingOptionsAsString() const override;
-  MantidWidgets::DataProcessor::OptionsMap
-  getProcessingOptions() const override;
-  QString getProcessingOptionsAsString() const override;
+  MantidWidgets::DataProcessor::OptionsQMap getPreprocessingOptions() const override;
+  MantidWidgets::DataProcessor::OptionsQMap getProcessingOptions() const override;
   QString getPostprocessingOptionsAsString() const override;
   QString getTimeSlicingValues() const override;
   QString getTimeSlicingType() const override;
@@ -124,9 +120,6 @@ private:
   void changeInstrument();
   /// enable/disable widgets on the view
   void updateWidgetEnabledState(const bool isProcessing) const;
-  /// Convert an options map to a string
-  QString convertMapToString(
-      const MantidWidgets::DataProcessor::OptionsMap &optionsMap) const;
 };
 }
 }
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflSettingsPresenter.cpp b/qt/scientific_interfaces/ISISReflectometry/ReflSettingsPresenter.cpp
index affd16fcbf11e120fca2b0d23fe392107cd1069a..80bae5286802fa700e73856ecc5fd6be21ac2de2 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflSettingsPresenter.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflSettingsPresenter.cpp
@@ -61,9 +61,9 @@ void ReflSettingsPresenter::setInstrumentName(const std::string &instName) {
 /** Returns global options for 'CreateTransmissionWorkspaceAuto'
  * @return :: Global options for 'CreateTransmissionWorkspaceAuto'
  */
-OptionsMap ReflSettingsPresenter::getTransmissionOptions() const {
+OptionsQMap ReflSettingsPresenter::getTransmissionOptions() const {
 
-  OptionsMap options;
+  OptionsQMap options;
 
   if (m_view->experimentSettingsEnabled()) {
 
@@ -140,9 +140,9 @@ OptionsMap ReflSettingsPresenter::getTransmissionOptions() const {
 /** Returns global options for 'ReflectometryReductionOneAuto'
  * @return :: Global options for 'ReflectometryReductionOneAuto'
  */
-OptionsMap ReflSettingsPresenter::getReductionOptions() const {
+OptionsQMap ReflSettingsPresenter::getReductionOptions() const {
 
-  OptionsMap options;
+  OptionsQMap options;
 
   if (m_view->experimentSettingsEnabled()) {
 
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflSettingsPresenter.h b/qt/scientific_interfaces/ISISReflectometry/ReflSettingsPresenter.h
index 77dcbd6e4998c92b7673761087c9518fc439647a..a95e48036d698c7dd3a12873e98f489543b3c4c6 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflSettingsPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflSettingsPresenter.h
@@ -52,10 +52,10 @@ public:
   /// Returns values passed for 'Transmission run(s)'
   std::string getTransmissionRuns() const override;
   /// Returns global options for 'CreateTransmissionWorkspaceAuto'
-  MantidWidgets::DataProcessor::OptionsMap
+  MantidWidgets::DataProcessor::OptionsQMap
   getTransmissionOptions() const override;
   /// Returns global options for 'ReflectometryReductionOneAuto'
-  MantidWidgets::DataProcessor::OptionsMap getReductionOptions() const override;
+  MantidWidgets::DataProcessor::OptionsQMap getReductionOptions() const override;
   /// Returns global options for 'Stitch1DMany'
   std::string getStitchOptions() const override;
 
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflSettingsTabPresenter.cpp b/qt/scientific_interfaces/ISISReflectometry/ReflSettingsTabPresenter.cpp
index d6784e79ae0f051b677772368fd8ca4c2211aa8c..5380587ec2046d8b7dcd7c3351f03ea52b53f4e7 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflSettingsTabPresenter.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflSettingsTabPresenter.cpp
@@ -51,7 +51,7 @@ std::string ReflSettingsTabPresenter::getTransmissionRuns(int group) const {
 * @param group :: The group from which to get the options
 * @return :: Global options for 'CreateTransmissionWorkspaceAuto'
 */
-OptionsMap ReflSettingsTabPresenter::getTransmissionOptions(int group) const {
+OptionsQMap ReflSettingsTabPresenter::getTransmissionOptions(int group) const {
 
   return m_settingsPresenters.at(group)->getTransmissionOptions();
 }
@@ -61,7 +61,7 @@ OptionsMap ReflSettingsTabPresenter::getTransmissionOptions(int group) const {
 * @param group :: The group from which to get the options
 * @return :: Global options for 'ReflectometryReductionOneAuto'
 */
-OptionsMap ReflSettingsTabPresenter::getReductionOptions(int group) const {
+OptionsQMap ReflSettingsTabPresenter::getReductionOptions(int group) const {
 
   return m_settingsPresenters.at(group)->getReductionOptions();
 }
diff --git a/qt/scientific_interfaces/ISISReflectometry/ReflSettingsTabPresenter.h b/qt/scientific_interfaces/ISISReflectometry/ReflSettingsTabPresenter.h
index da79b1360acfe7253f1fe98fd8a13df50ce12435..08ddfbaac021772d4a019823b2b9d05506493f97 100644
--- a/qt/scientific_interfaces/ISISReflectometry/ReflSettingsTabPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/ReflSettingsTabPresenter.h
@@ -51,10 +51,10 @@ public:
   /// Returns values passed for 'Transmission run(s)'
   std::string getTransmissionRuns(int group) const override;
   /// Returns global options for 'CreateTransmissionWorkspaceAuto'
-  MantidWidgets::DataProcessor::OptionsMap
+  MantidWidgets::DataProcessor::OptionsQMap
   getTransmissionOptions(int group) const override;
   /// Returns global options for 'ReflectometryReductionOneAuto'
-  MantidWidgets::DataProcessor::OptionsMap
+  MantidWidgets::DataProcessor::OptionsQMap
   getReductionOptions(int group) const override;
   /// Returns global options for 'Stitch1DMany'
   std::string getStitchOptions(int group) const override;
diff --git a/qt/scientific_interfaces/test/ReflDataProcessorPresenterTest.h b/qt/scientific_interfaces/test/ReflDataProcessorPresenterTest.h
index 013584f1d9929b3102584d6c4586acd1610421ed..d57bf2fdaa54aad8c2a6ce58f3c968398de28eae 100644
--- a/qt/scientific_interfaces/test/ReflDataProcessorPresenterTest.h
+++ b/qt/scientific_interfaces/test/ReflDataProcessorPresenterTest.h
@@ -168,10 +168,10 @@ public:
         .WillOnce(Return("UniformEven"));
     EXPECT_CALL(mockMainPresenter, getPreprocessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getProcessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getPostprocessingOptionsAsString())
         .Times(1)
         .WillOnce(Return(""));
@@ -252,10 +252,10 @@ public:
         .WillOnce(Return("Uniform"));
     EXPECT_CALL(mockMainPresenter, getPreprocessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getProcessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getPostprocessingOptionsAsString())
         .Times(1)
         .WillOnce(Return(""));
@@ -347,10 +347,10 @@ public:
         .WillOnce(Return("Custom"));
     EXPECT_CALL(mockMainPresenter, getPreprocessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getProcessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getPostprocessingOptionsAsString())
         .Times(1)
         .WillOnce(Return(""));
@@ -431,10 +431,10 @@ public:
         .WillOnce(Return("LogValue"));
     EXPECT_CALL(mockMainPresenter, getPreprocessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getProcessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getPostprocessingOptionsAsString())
         .Times(1)
         .WillOnce(Return(""));
@@ -515,10 +515,10 @@ public:
         .WillOnce(Return("Custom"));
     EXPECT_CALL(mockMainPresenter, getPreprocessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getProcessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getPostprocessingOptionsAsString())
         .Times(1)
         .WillOnce(Return(QString()));
@@ -576,10 +576,10 @@ public:
         .WillOnce(Return("Custom"));
     EXPECT_CALL(mockMainPresenter, getPreprocessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getProcessingOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(mockMainPresenter, getPostprocessingOptionsAsString())
         .Times(1)
         .WillOnce(Return(""));
diff --git a/qt/scientific_interfaces/test/ReflMainWindowPresenterTest.h b/qt/scientific_interfaces/test/ReflMainWindowPresenterTest.h
index 178b6e1bb6c58b65464486eff025b9a7970e4504..f7c9f9809003a2aee40e1323e0425f521a25ea39 100644
--- a/qt/scientific_interfaces/test/ReflMainWindowPresenterTest.h
+++ b/qt/scientific_interfaces/test/ReflMainWindowPresenterTest.h
@@ -60,12 +60,12 @@ public:
 
     EXPECT_CALL(mockSettingsPresenter, getTransmissionOptions(0))
         .Times(Exactly(1))
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     presenter.getTransmissionOptions(0);
 
     EXPECT_CALL(mockSettingsPresenter, getTransmissionOptions(1))
         .Times(Exactly(1))
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     presenter.getTransmissionOptions(1);
 
     TS_ASSERT(Mock::VerifyAndClearExpectations(&mockSettingsPresenter));
@@ -83,12 +83,12 @@ public:
 
     EXPECT_CALL(mockSettingsPresenter, getReductionOptions(0))
         .Times(Exactly(1))
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     presenter.getReductionOptions(0);
 
     EXPECT_CALL(mockSettingsPresenter, getReductionOptions(1))
         .Times(Exactly(1))
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     presenter.getReductionOptions(1);
 
     TS_ASSERT(Mock::VerifyAndClearExpectations(&mockSettingsPresenter));
diff --git a/qt/scientific_interfaces/test/ReflMockObjects.h b/qt/scientific_interfaces/test/ReflMockObjects.h
index 18780e29cbb5448fce47f0c8457fd84e18f95787..09a0d539c7c59e5c13545002cb0ecec9b385f710 100644
--- a/qt/scientific_interfaces/test/ReflMockObjects.h
+++ b/qt/scientific_interfaces/test/ReflMockObjects.h
@@ -200,8 +200,8 @@ public:
 class MockSettingsPresenter : public IReflSettingsPresenter {
 public:
   MOCK_CONST_METHOD0(getTransmissionRuns, std::string());
-  MOCK_CONST_METHOD0(getTransmissionOptions, OptionsMap());
-  MOCK_CONST_METHOD0(getReductionOptions, OptionsMap());
+  MOCK_CONST_METHOD0(getTransmissionOptions, OptionsQMap());
+  MOCK_CONST_METHOD0(getReductionOptions, OptionsQMap());
   MOCK_CONST_METHOD0(getStitchOptions, std::string());
   MOCK_METHOD1(setInstrumentName, void(const std::string &));
   void notify(IReflSettingsPresenter::Flag flag) override { UNUSED_ARG(flag); }
@@ -211,8 +211,8 @@ public:
 class MockSettingsTabPresenter : public IReflSettingsTabPresenter {
 public:
   MOCK_CONST_METHOD1(getTransmissionRuns, std::string(int));
-  MOCK_CONST_METHOD1(getTransmissionOptions, OptionsMap(int));
-  MOCK_CONST_METHOD1(getReductionOptions, OptionsMap(int));
+  MOCK_CONST_METHOD1(getTransmissionOptions, OptionsQMap(int));
+  MOCK_CONST_METHOD1(getReductionOptions, OptionsQMap(int));
   MOCK_CONST_METHOD1(getStitchOptions, std::string(int));
   void setInstrumentName(const std::string &instName) override {
     UNUSED_ARG(instName);
@@ -232,8 +232,8 @@ public:
 class MockMainWindowPresenter : public IReflMainWindowPresenter {
 public:
   MOCK_CONST_METHOD1(getTransmissionRuns, std::string(int));
-  MOCK_CONST_METHOD1(getTransmissionOptions, OptionsMap(int));
-  MOCK_CONST_METHOD1(getReductionOptions, OptionsMap(int));
+  MOCK_CONST_METHOD1(getTransmissionOptions, OptionsQMap(int));
+  MOCK_CONST_METHOD1(getReductionOptions, OptionsQMap(int));
   MOCK_CONST_METHOD1(getStitchOptions, std::string(int));
   MOCK_CONST_METHOD1(setInstrumentName, void(const std::string &instName));
   MOCK_CONST_METHOD0(getInstrumentName, std::string());
diff --git a/qt/scientific_interfaces/test/ReflRunsTabPresenterTest.h b/qt/scientific_interfaces/test/ReflRunsTabPresenterTest.h
index 5ac140348270e418156fa65d38ee8be76a778ca1..c0b1d2ccb42555ecc3f1c4e1ef013124350b5651 100644
--- a/qt/scientific_interfaces/test/ReflRunsTabPresenterTest.h
+++ b/qt/scientific_interfaces/test/ReflRunsTabPresenterTest.h
@@ -122,37 +122,13 @@ public:
         .WillOnce(Return(group));
     EXPECT_CALL(mockMainPresenter, getTransmissionOptions(group))
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     presenter.getPreprocessingOptions();
 
     TS_ASSERT(Mock::VerifyAndClearExpectations(&mockMainPresenter));
     TS_ASSERT(Mock::VerifyAndClearExpectations(&mockRunsTabView));
   }
 
-  void test_preprocessingOptionsAsString() {
-    NiceMock<MockRunsTabView> mockRunsTabView;
-    MockProgressableView mockProgress;
-    NiceMock<MockDataProcessorPresenter> mockTablePresenter;
-    MockMainWindowPresenter mockMainPresenter;
-    std::vector<DataProcessorPresenter *> tablePresenterVec;
-    tablePresenterVec.push_back(&mockTablePresenter);
-    ReflRunsTabPresenter presenter(&mockRunsTabView, &mockProgress,
-                                   tablePresenterVec);
-    presenter.acceptMainPresenter(&mockMainPresenter);
-
-    int group = 199;
-    EXPECT_CALL(mockRunsTabView, getSelectedGroup())
-        .Times(Exactly(1))
-        .WillOnce(Return(group));
-    EXPECT_CALL(mockMainPresenter, getTransmissionOptions(group))
-        .Times(1)
-        .WillOnce(Return(OptionsMap()));
-    presenter.getPreprocessingOptionsAsString();
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&mockMainPresenter));
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&mockRunsTabView));
-  }
-
   void test_processingOptions() {
     NiceMock<MockRunsTabView> mockRunsTabView;
     MockProgressableView mockProgress;
@@ -170,37 +146,13 @@ public:
         .WillOnce(Return(group));
     EXPECT_CALL(mockMainPresenter, getReductionOptions(group))
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     presenter.getProcessingOptions();
 
     TS_ASSERT(Mock::VerifyAndClearExpectations(&mockMainPresenter));
     TS_ASSERT(Mock::VerifyAndClearExpectations(&mockRunsTabView));
   }
 
-  void test_processingOptionsAsString() {
-    NiceMock<MockRunsTabView> mockRunsTabView;
-    MockProgressableView mockProgress;
-    NiceMock<MockDataProcessorPresenter> mockTablePresenter;
-    MockMainWindowPresenter mockMainPresenter;
-    std::vector<DataProcessorPresenter *> tablePresenterVec;
-    tablePresenterVec.push_back(&mockTablePresenter);
-    ReflRunsTabPresenter presenter(&mockRunsTabView, &mockProgress,
-                                   tablePresenterVec);
-    presenter.acceptMainPresenter(&mockMainPresenter);
-
-    int group = 199;
-    EXPECT_CALL(mockRunsTabView, getSelectedGroup())
-        .Times(Exactly(1))
-        .WillOnce(Return(group));
-    EXPECT_CALL(mockMainPresenter, getReductionOptions(group))
-        .Times(1)
-        .WillOnce(Return(OptionsMap()));
-    presenter.getProcessingOptionsAsString();
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&mockMainPresenter));
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&mockRunsTabView));
-  }
-
   void test_postprocessingOptions() {
     NiceMock<MockRunsTabView> mockRunsTabView;
     MockProgressableView mockProgress;
diff --git a/qt/scientific_interfaces/test/ReflSettingsTabPresenterTest.h b/qt/scientific_interfaces/test/ReflSettingsTabPresenterTest.h
index c3e7ef50c400193dc2ac0d22eff3e4e49a5da5c6..270bc6793b6ce828acc03a33a594f12553e97cd3 100644
--- a/qt/scientific_interfaces/test/ReflSettingsTabPresenterTest.h
+++ b/qt/scientific_interfaces/test/ReflSettingsTabPresenterTest.h
@@ -98,7 +98,7 @@ public:
 
     EXPECT_CALL(presenter_0, getTransmissionOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(presenter_1, getTransmissionOptions()).Times(0);
     EXPECT_CALL(presenter_2, getTransmissionOptions()).Times(0);
     presenter.getTransmissionOptions(0);
@@ -109,7 +109,7 @@ public:
     EXPECT_CALL(presenter_0, getTransmissionOptions()).Times(0);
     EXPECT_CALL(presenter_1, getTransmissionOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(presenter_2, getTransmissionOptions()).Times(0);
     presenter.getTransmissionOptions(1);
     TS_ASSERT(Mock::VerifyAndClearExpectations(&presenter_0));
@@ -120,7 +120,7 @@ public:
     EXPECT_CALL(presenter_1, getTransmissionOptions()).Times(0);
     EXPECT_CALL(presenter_2, getTransmissionOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     presenter.getTransmissionOptions(2);
     TS_ASSERT(Mock::VerifyAndClearExpectations(&presenter_0));
     TS_ASSERT(Mock::VerifyAndClearExpectations(&presenter_1));
@@ -141,7 +141,7 @@ public:
 
     EXPECT_CALL(presenter_0, getReductionOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(presenter_1, getReductionOptions()).Times(0);
     EXPECT_CALL(presenter_2, getReductionOptions()).Times(0);
     presenter.getReductionOptions(0);
@@ -152,7 +152,7 @@ public:
     EXPECT_CALL(presenter_0, getReductionOptions()).Times(0);
     EXPECT_CALL(presenter_1, getReductionOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     EXPECT_CALL(presenter_2, getReductionOptions()).Times(0);
     presenter.getReductionOptions(1);
     TS_ASSERT(Mock::VerifyAndClearExpectations(&presenter_0));
@@ -163,7 +163,7 @@ public:
     EXPECT_CALL(presenter_1, getReductionOptions()).Times(0);
     EXPECT_CALL(presenter_2, getReductionOptions())
         .Times(1)
-        .WillOnce(Return(OptionsMap()));
+        .WillOnce(Return(OptionsQMap()));
     presenter.getReductionOptions(2);
     TS_ASSERT(Mock::VerifyAndClearExpectations(&presenter_0));
     TS_ASSERT(Mock::VerifyAndClearExpectations(&presenter_1));
diff --git a/qt/widgets/common/CMakeLists.txt b/qt/widgets/common/CMakeLists.txt
index 231185b2f082cd36eeaaa37cdee056b83641fde2..7a029c9e784f9ae48f0c526a150e7373df561634 100644
--- a/qt/widgets/common/CMakeLists.txt
+++ b/qt/widgets/common/CMakeLists.txt
@@ -55,6 +55,7 @@ set ( SRC_FILES
 	src/DataProcessorUI/AbstractTreeModel.cpp
 	src/DataProcessorUI/GenerateNotebook.cpp
 	src/DataProcessorUI/OneLevelTreeManager.cpp
+        src/DataProcessorUI/OptionsMap.cpp
 	src/DataProcessorUI/PostprocessingAlgorithm.cpp
 	src/DataProcessorUI/PreprocessingAlgorithm.cpp
 	src/DataProcessorUI/PreprocessMap.cpp
@@ -298,7 +299,8 @@ set ( INC_FILES
 	inc/MantidQtWidgets/Common/DataProcessorUI/OneLevelTreeManager.h
 	inc/MantidQtWidgets/Common/DataProcessorUI/OpenTableCommand.h
 	inc/MantidQtWidgets/Common/DataProcessorUI/OptionsCommand.h
-  inc/MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h
+        inc/MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h
+        inc/MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h
 	inc/MantidQtWidgets/Common/DataProcessorUI/PasteSelectedCommand.h
 	inc/MantidQtWidgets/Common/DataProcessorUI/PauseCommand.h
 	inc/MantidQtWidgets/Common/DataProcessorUI/PlotGroupCommand.h
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/DataProcessorMainPresenter.h b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/DataProcessorMainPresenter.h
index aa4d18d4214cc0391441b5f9547071808042c25a..d85e8b74d226393feb180a28f84c14b575ede64c 100644
--- a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/DataProcessorMainPresenter.h
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/DataProcessorMainPresenter.h
@@ -2,7 +2,7 @@
 #define MANTIDQTMANTIDWIDGETS_DATAPROCESSORMAINPRESENTER_H
 
 #include "MantidKernel/System.h"
-#include "MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h"
+#include "MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h"
 
 #include <QSet>
 #include <QString>
@@ -55,13 +55,9 @@ public:
   }
 
   /// Return global options for pre-processing
-  virtual OptionsMap getPreprocessingOptions() const { return OptionsMap(); }
-  /// Return global options for pre-processing as a string
-  virtual QString getPreprocessingOptionsAsString() const { return QString(); }
+  virtual OptionsQMap getPreprocessingOptions() const { return OptionsQMap(); }
   /// Return global options for reduction
-  virtual OptionsMap getProcessingOptions() const { return OptionsMap(); }
-  /// Return global options for reduction as a string
-  virtual QString getProcessingOptionsAsString() const { return QString(); }
+  virtual OptionsQMap getProcessingOptions() const { return OptionsQMap(); }
   /// Return global options for post-processing as a string
   virtual QString getPostprocessingOptionsAsString() const { return QString(); }
   /// Return time-slicing values
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/GenerateNotebook.h b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/GenerateNotebook.h
index b20c4ade5a9f9a25691272f79d7019c382022469..82e5d0f7e605824ca847725d9dc54ad601f3b834 100644
--- a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/GenerateNotebook.h
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/GenerateNotebook.h
@@ -121,7 +121,7 @@ private:
   // hinting line edits
   OptionsMap m_preprocessingOptionsMap;
   // Options to reduction algorithm specified in the view via hinting line edit
-  std::map<QString, QString> m_processingOptions;
+  OptionsMap m_processingOptions;
   // Options to post-processing algorithm specified in the view via hinting line
   // edit
 };
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/MockObjects.h b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/MockObjects.h
index 273e5e93ef1f9e7d3d340039c45bac7a545b7fbb..f2a7d90d12841610bdf59cc9424c17c025a601d6 100644
--- a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/MockObjects.h
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/MockObjects.h
@@ -109,10 +109,8 @@ public:
   MOCK_METHOD1(runPythonAlgorithm, QString(const QString &));
 
   // Global options
-  MOCK_CONST_METHOD0(getPreprocessingOptions, OptionsMap());
-  MOCK_CONST_METHOD0(getPreprocessingOptionsAsString, QString());
-  MOCK_CONST_METHOD0(getProcessingOptions, OptionsMap());
-  MOCK_CONST_METHOD0(getProcessingOptionsAsString, QString());
+  MOCK_CONST_METHOD0(getPreprocessingOptions, OptionsQMap());
+  MOCK_CONST_METHOD0(getProcessingOptions, OptionsQMap());
   MOCK_CONST_METHOD0(getPostprocessingOptionsAsString, QString());
   MOCK_CONST_METHOD0(getTimeSlicingOptions, QString());
 
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h
index fe101b7fbda7c0c196ed99b769ea425a18d3ee56..994309e69ca28e3ec8120f4e16a135d3dcbfd03e 100644
--- a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h
@@ -25,6 +25,9 @@
     Code Documentation is available at: <http://doxygen.mantidproject.org>
     */
 
+#include "MantidKernel/System.h"
+#include "MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h"
+
 #include <QString>
 #include <map>
 
@@ -32,6 +35,8 @@ namespace MantidQt {
 namespace MantidWidgets {
 namespace DataProcessor {
 using OptionsMap = std::map<QString, QString>;
+
+OptionsMap DLLExport convertOptionsFromQMap(const OptionsQMap &src);
 }
 }
 }
diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h
new file mode 100644
index 0000000000000000000000000000000000000000..e82e898717b6522be60dad227be1e9ef18f0d6d2
--- /dev/null
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/DataProcessorUI/OptionsQMap.h
@@ -0,0 +1,38 @@
+#ifndef MANTIDQTMANTIDWIDGETS_DATAPROCESSOROPTIONSQMAP_H
+#define MANTIDQTMANTIDWIDGETS_DATAPROCESSOROPTIONSQMAP_H
+/** This file defines the OptionsData type alias used by
+   the DataProcessor widget.
+
+    Copyright &copy; 2017 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
+    National Laboratory & European Spallation Source
+
+    This file is part of Mantid.
+
+    Mantid 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.
+
+    Mantid 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+    File change history is stored at: <https://github.com/mantidproject/mantid>.
+    Code Documentation is available at: <http://doxygen.mantidproject.org>
+    */
+
+#include <QString>
+#include <QMap>
+
+namespace MantidQt {
+namespace MantidWidgets {
+namespace DataProcessor {
+using OptionsQMap = QMap<QString, QString>;
+}
+}
+}
+#endif // MANTIDQTMANTIDWIDGETS_DATAPROCESSOROPTIONSQMAP_H
diff --git a/qt/widgets/common/src/DataProcessorUI/GenericDataProcessorPresenter.cpp b/qt/widgets/common/src/DataProcessorUI/GenericDataProcessorPresenter.cpp
index b9f79541ab819c8f2961054c2a32142bd1ad8a6e..6843d7b0703bb5b64c4bef9e87a8d0e492f57ac1 100644
--- a/qt/widgets/common/src/DataProcessorUI/GenericDataProcessorPresenter.cpp
+++ b/qt/widgets/common/src/DataProcessorUI/GenericDataProcessorPresenter.cpp
@@ -261,8 +261,8 @@ void GenericDataProcessorPresenter::acceptViews(
 }
 
 bool GenericDataProcessorPresenter::areOptionsUpdated() {
-  auto newPreprocessingOptions = m_mainPresenter->getPreprocessingOptions();
-  auto newProcessingOptions = m_mainPresenter->getProcessingOptions();
+  auto newPreprocessingOptions = convertOptionsFromQMap(m_mainPresenter->getPreprocessingOptions());
+  auto newProcessingOptions = convertOptionsFromQMap(m_mainPresenter->getProcessingOptions());
   auto newPostprocessingOptions =
       m_mainPresenter->getPostprocessingOptionsAsString();
 
diff --git a/qt/widgets/common/src/DataProcessorUI/OptionsMap.cpp b/qt/widgets/common/src/DataProcessorUI/OptionsMap.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e84a3b71e193e1ded7eb6f907d580fdaac55c1ff
--- /dev/null
+++ b/qt/widgets/common/src/DataProcessorUI/OptionsMap.cpp
@@ -0,0 +1,19 @@
+#include "MantidQtWidgets/Common/DataProcessorUI/OptionsMap.h"
+namespace MantidQt {
+namespace MantidWidgets {
+namespace DataProcessor {
+
+/** Convert an options map from a QMap to a std::map
+ * @papram src [in] : the options as a QMap
+ * @return : the options as a std::map
+ */
+OptionsMap convertOptionsFromQMap(const OptionsQMap &src) {
+  OptionsMap dest;
+  for (auto iter = src.constBegin(); iter != src.constEnd(); ++iter) {
+      dest[iter.key()] = iter.value();
+    }
+  return dest;
+}
+}
+}
+}
diff --git a/qt/widgets/common/test/DataProcessorUI/GenericDataProcessorPresenterTest.h b/qt/widgets/common/test/DataProcessorUI/GenericDataProcessorPresenterTest.h
index 7daefa18846206278ba9de5bf65dfab390f58c10..aec1a8a8d7e4b75e949526622f589348bda797af 100644
--- a/qt/widgets/common/test/DataProcessorUI/GenericDataProcessorPresenterTest.h
+++ b/qt/widgets/common/test/DataProcessorUI/GenericDataProcessorPresenterTest.h
@@ -476,10 +476,10 @@ private:
     } else {
       EXPECT_CALL(mockMainPresenter, getPreprocessingOptions())
           .Times(numTimes)
-          .WillOnce(Return(OptionsMap()));
+          .WillOnce(Return(OptionsQMap()));
       EXPECT_CALL(mockMainPresenter, getProcessingOptions())
           .Times(numTimes)
-          .WillOnce(Return(OptionsMap()));
+          .WillOnce(Return(OptionsQMap()));
       EXPECT_CALL(mockMainPresenter, getPostprocessingOptionsAsString())
           .Times(numTimes)
           .WillOnce(Return(QString::fromStdString(postprocessingOptions)));
diff --git a/scripts/Interface/ui/dataprocessorinterface/data_processor_gui.py b/scripts/Interface/ui/dataprocessorinterface/data_processor_gui.py
index 773f5ea9c9bebd27704473f85a23c8c99c6811d3..5e50208471385c2a3c3ff70dea903127ebfb0c78 100644
--- a/scripts/Interface/ui/dataprocessorinterface/data_processor_gui.py
+++ b/scripts/Interface/ui/dataprocessorinterface/data_processor_gui.py
@@ -16,8 +16,8 @@ class MainPresenter(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresen
     """
     A DataProcessorMainPresenter. The base class provides default implementations
     but we should re-implement the following methods:
-    - getPreprocessingOptionsAsString() -- to supply global pre-processing options to the table widget
-    - getProcessingOptionsAsString() -- to supply global processing options
+    - getPreprocessingOptions() -- to supply global pre-processing options to the table widget
+    - getProcessingOptions() -- to supply global processing options
     - getPostprocessingOptionsAsString() -- to supply global post-processing options
     - notifyADSChanged() -- to act when the ADS changed, typically we want to update
       table actions with the list of table workspaces that can be loaded into the interface
@@ -31,19 +31,19 @@ class MainPresenter(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresen
         super(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresenter, self).__init__()
         self.gui = gui
 
-    def getPreprocessingOptionsAsString(self):
+    def getPreprocessingOptions(self):
         """
-        Return global pre-processing options as a string.
-        The string must be a sequence of key=value separated by ','.
+        Return global pre-processing options as a dict of key:value pairs
         """
-        return "AnalysisMode=PointDetectorAnalysis"
+        result = {"AnalysisMode":"PointDetectorAnalysis"}
+        return result
 
-    def getProcessingOptionsAsString(self):
+    def getProcessingOptions(self):
         """
-        Return global processing options as a string.
-        The string must be a sequence of key=value separated by ','.
+        Return global processing options as a dict of key:value pairs.
         """
-        return "AnalysisMode=PointDetectorAnalysis, WavelengthMin=1.5"
+        result = {"AnalysisMode":"PointDetectorAnalysis", "WavelengthMin":"1.5"}
+        return result
 
     def getPostprocessingOptionsAsString(self):
         """
diff --git a/scripts/Interface/ui/poldi/poldi_gui.py b/scripts/Interface/ui/poldi/poldi_gui.py
index 8924bf307a9059c2f664a702795dd4021102f6e0..b1fa9a934e1c8b64a0d3a8312255e4001eea62aa 100644
--- a/scripts/Interface/ui/poldi/poldi_gui.py
+++ b/scripts/Interface/ui/poldi/poldi_gui.py
@@ -17,8 +17,8 @@ class MainPresenter(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresen
     """
     A DataProcessorMainPresenter. The base class provides default implementations
     but we should re-implement the following methods:
-    - getPreprocessingOptionsAsString() -- to supply global pre-processing options to the table widget
-    - getProcessingOptionsAsString() -- to supply global processing options
+    - getPreprocessingOptions() -- to supply global pre-processing options to the table widget
+    - getProcessingOptions() -- to supply global processing options
     - getPostprocessingOptionsAsString() -- to supply global post-processing options
     - notifyADSChanged() -- to act when the ADS changed, typically we want to update
       table actions with the list of table workspaces that can be loaded into the interface
@@ -32,19 +32,19 @@ class MainPresenter(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresen
         super(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresenter, self).__init__()
         self.gui = gui
 
-    def getPreprocessingOptionsAsString(self):
+    def getPreprocessingOptions(self):
         """
-        Return global pre-processing options as a string.
-        The string must be a sequence of key=value separated by ','.
+        Return global pre-processing options as a dict of key:value pairs
         """
-        return ""
+        empty = {}
+        return empty
 
-    def getProcessingOptionsAsString(self):
+    def getProcessingOptions(self):
         """
-        Return global processing options as a string.
-        The string must be a sequence of key=value separated by ','.
+        Return global processing options as a dict of key:value pairs
         """
-        return ""
+        empty = {}
+        return empty
 
     def getPostprocessingOptionsAsString(self):
         """
diff --git a/scripts/SANS/sans/gui_logic/presenter/main_presenter.py b/scripts/SANS/sans/gui_logic/presenter/main_presenter.py
index 34d16b69a8cae058ca259a98372fe5b9e9a1107a..3759d4158fec548a94e7158f8dbece2b002737f5 100644
--- a/scripts/SANS/sans/gui_logic/presenter/main_presenter.py
+++ b/scripts/SANS/sans/gui_logic/presenter/main_presenter.py
@@ -24,8 +24,8 @@ class MainPresenter(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresen
 
     A DataProcessorMainPresenter. The base class provides default implementations
     but we should re-implement the following methods:
-    - getPreprocessingOptionsAsString() -- to supply global pre-processing options to the table widget
-    - getProcessingOptionsAsString() -- to supply global processing options
+    - getPreprocessingOptions() -- to supply global pre-processing options to the table widget
+    - getProcessingOptions() -- to supply global processing options
     - getPostprocessingOptionsAsString() -- to supply global post-processing options
     - notifyADSChanged() -- to act when the ADS changed, typically we want to update
       table actions with the list of table workspaces that can be loaded into the interface
@@ -76,7 +76,7 @@ class MainPresenter(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresen
     # ------------------------------------------------------------------------------------------------------------------
     # Inherited methods
     # ------------------------------------------------------------------------------------------------------------------
-    def getProcessingOptionsAsString(self):
+    def getProcessingOptions(self):
         """
         Gets the processing options from the run tab presenter
         """
@@ -85,8 +85,9 @@ class MainPresenter(MantidQt.MantidWidgets.DataProcessor.DataProcessorMainPresen
     # ------------------------------------------------------------------------------------------------------------------
     # Unused
     # ------------------------------------------------------------------------------------------------------------------
-    def getPreprocessingOptionsAsString(self):
-        return ""
+    def getPreprocessingOptions(self):
+        empty = {}
+        return empty
 
     def getPostprocessingOptionsAsString(self):
         return ""
diff --git a/scripts/SANS/sans/gui_logic/presenter/run_tab_presenter.py b/scripts/SANS/sans/gui_logic/presenter/run_tab_presenter.py
index d65e62ea46a6954c44665277b2766aa19b907816..c4c3c479be08153fd3ffead4c07a1d0cadbdaf6b 100644
--- a/scripts/SANS/sans/gui_logic/presenter/run_tab_presenter.py
+++ b/scripts/SANS/sans/gui_logic/presenter/run_tab_presenter.py
@@ -393,29 +393,22 @@ class RunTabPresenter(object):
         """
         Creates a processing string for the data processor widget
 
-        :return: A processing string for the data processor widget
+        :return: A dict of key:value pairs of processing-algorithm properties and values for the data processor widget
         """
-        global_options = ""
+        global_options = {}
 
         # Check if optimizations should be used
-        optimization_selection = "UseOptimizations=1" if self._view.use_optimizations else "UseOptimizations=0"
-        global_options += optimization_selection
+        global_options['UseOptimizations'] = "1" if self._view.use_optimizations else "0"
 
         # Get the output mode
         output_mode = self._view.output_mode
-        output_mode_selection = "OutputMode=" + OutputMode.to_string(output_mode)
-        global_options += ","
-        global_options += output_mode_selection
+        global_options['OutputMode'] = OutputMode.to_string(output_mode)
 
         # Check if results should be plotted
-        plot_results_selection = "PlotResults=1" if self._view.plot_results else "PlotResults=0"
-        global_options += ","
-        global_options += plot_results_selection
+        global_options['PlotResults'] = "1" if self._view.plot_results else "0"
 
         # Get the name of the graph to output to
-        output_graph_selection = "OutputGraph={}".format(self.output_graph)
-        global_options += ","
-        global_options += output_graph_selection
+        global_options['OutputGraph'] = "{}".format(self.output_graph)
         return global_options
 
     # ------------------------------------------------------------------------------------------------------------------
diff --git a/scripts/test/SANS/gui_logic/main_presenter_test.py b/scripts/test/SANS/gui_logic/main_presenter_test.py
index 4d550e0246751266f2296b0074506d962dfbb6eb..72ce26094394044d9a17b94431dc4e30fdee0ff8 100644
--- a/scripts/test/SANS/gui_logic/main_presenter_test.py
+++ b/scripts/test/SANS/gui_logic/main_presenter_test.py
@@ -66,7 +66,8 @@ class MainPresenterTest(unittest.TestCase):
         pre_processing_options = presenter.getProcessingOptionsAsString()
 
         # Assert
-        expected = 'UseOptimizations=1,OutputMode=PublishToADS,PlotResults=1,OutputGraph=SANS-Latest'
+        expected = {'UseOptimizations':'1','OutputMode':'PublishToADS','PlotResults':'1', \
+                    'OutputGraph':'SANS-Latest'}
         self.assertEqual(expected, pre_processing_options)
         self.assertFalse(presenter.getPreprocessingOptionsAsString())
         self.assertFalse(presenter.getPostprocessingOptionsAsString())
diff --git a/scripts/test/SANS/gui_logic/run_tab_presenter_test.py b/scripts/test/SANS/gui_logic/run_tab_presenter_test.py
index fc1ea744da45d884385e60d39a8798b41c267462..0df6a03c637cce004e930794d17e0119ac898374 100644
--- a/scripts/test/SANS/gui_logic/run_tab_presenter_test.py
+++ b/scripts/test/SANS/gui_logic/run_tab_presenter_test.py
@@ -374,7 +374,7 @@ class RunTabPresenterTest(unittest.TestCase):
 
     def test_that_get_processing_options_returns_correct_value(self):
         batch_file_path, user_file_path, presenter, _ = self._get_files_and_mock_presenter(BATCH_FILE_TEST_CONTENT_1)
-        expected_result = 'UseOptimizations=1,OutputMode=PublishToADS,PlotResults=1,OutputGraph=SANS-Latest'
+        expected_result = {'UseOptimizations':'1','OutputMode':'PublishToADS','PlotResults':'1','OutputGraph':'SANS-Latest'}
 
         result = presenter.get_processing_options()