diff --git a/Framework/MDAlgorithms/test/ConvertToMDTest.h b/Framework/MDAlgorithms/test/ConvertToMDTest.h
index 8f11945bd17d8b9f3fb477476176fa6ee1d560d2..7adc9502125f931e4b1c716084003899b885adad 100644
--- a/Framework/MDAlgorithms/test/ConvertToMDTest.h
+++ b/Framework/MDAlgorithms/test/ConvertToMDTest.h
@@ -10,6 +10,7 @@
 #include "MantidTestHelpers/WorkspaceCreationHelper.h"
 
 #include "MantidAPI/AlgorithmManager.h"
+#include <Poco/File.h>
 #include <cxxtest/TestSuite.h>
 
 using namespace Mantid;
@@ -18,6 +19,35 @@ using namespace Mantid::API;
 using namespace Mantid::DataObjects;
 using namespace Mantid::MDAlgorithms;
 
+namespace {
+Mantid::API::MatrixWorkspace_sptr createTestWorkspaces() {
+  auto sim_alg = Mantid::API::AlgorithmManager::Instance().createUnmanaged(
+      "CreateSimulationWorkspace");
+  sim_alg->initialize();
+  sim_alg->setChild(true);
+  sim_alg->setPropertyValue("Instrument", "MAR");
+  sim_alg->setPropertyValue("BinParams", "-3,1,3");
+  sim_alg->setPropertyValue("UnitX", "DeltaE");
+  sim_alg->setPropertyValue("OutputWorkspace", "data_source_1");
+  sim_alg->execute();
+
+  Mantid::API::MatrixWorkspace_sptr ws =
+      sim_alg->getProperty("OutputWorkspace");
+
+  auto log_alg =
+      Mantid::API::AlgorithmManager::Instance().create("AddSampleLog");
+  log_alg->initialize();
+  log_alg->setChild(true);
+  log_alg->setProperty("Workspace", ws);
+  log_alg->setPropertyValue("LogName", "Ei");
+  log_alg->setPropertyValue("LogText", "3.0");
+  log_alg->setPropertyValue("LogType", "Number");
+  log_alg->execute();
+
+  return ws;
+}
+}
+
 class Convert2AnyTestHelper : public ConvertToMD {
 public:
   Convert2AnyTestHelper(){};
@@ -414,6 +444,84 @@ public:
     AnalysisDataService::Instance().remove("testWSProcessed");
   }
 
+  void test_execute_filebackend() {
+    // Arrange
+    std::string file_name = "convert_to_md_test_file.nxs";
+    if (Poco::File(file_name).exists())
+      Poco::File(file_name).remove();
+    {
+      auto test_workspace = createTestWorkspaces();
+      Algorithm_sptr min_max_alg = AlgorithmManager::Instance().createUnmanaged(
+          "ConvertToMDMinMaxGlobal");
+      min_max_alg->initialize();
+      min_max_alg->setChild(true);
+      min_max_alg->setProperty("InputWorkspace", test_workspace);
+      min_max_alg->setProperty("QDimensions", "Q3D");
+      min_max_alg->setProperty("dEAnalysisMode", "Direct");
+      min_max_alg->executeAsChildAlg();
+      std::string min_values = min_max_alg->getPropertyValue("MinValues");
+      std::string max_values = min_max_alg->getPropertyValue("MaxValues");
+
+      Algorithm_sptr convert_alg =
+          AlgorithmManager::Instance().createUnmanaged("ConvertToMD");
+      convert_alg->initialize();
+      convert_alg->setChild(true);
+      convert_alg->setProperty("InputWorkspace", test_workspace);
+      convert_alg->setProperty("QDimensions", "Q3D");
+      convert_alg->setProperty("QConversionScales", "HKL");
+      convert_alg->setProperty("dEAnalysisMode", "Direct");
+      convert_alg->setPropertyValue("MinValues", min_values);
+      convert_alg->setPropertyValue("MaxValues", max_values);
+
+      // Act
+      convert_alg->setProperty("Filename", file_name);
+      convert_alg->setProperty("FileBackEnd", true);
+      convert_alg->setProperty("OutputWorkspace", "blank");
+      TS_ASSERT_THROWS_NOTHING(convert_alg->execute());
+      Mantid::API::IMDEventWorkspace_sptr out_ws =
+          convert_alg->getProperty("OutputWorkspace");
+
+      // Asssert
+      file_name = out_ws->getBoxController()->getFilename();
+
+      auto load_alg = AlgorithmManager::Instance().createUnmanaged("LoadMD");
+      load_alg->initialize();
+      load_alg->setChild(true);
+      load_alg->setProperty("Filename", file_name);
+      load_alg->setProperty("FileBackEnd", true);
+      load_alg->setProperty("OutputWorkspace", "blank");
+      TS_ASSERT_THROWS_NOTHING(load_alg->execute());
+      Mantid::API::IMDWorkspace_sptr reference_out_ws =
+          load_alg->getProperty("OutputWorkspace");
+      // Make sure that the output workspaces exist
+      TS_ASSERT(out_ws);
+      TS_ASSERT(reference_out_ws);
+      auto ws_cast =
+          boost::dynamic_pointer_cast<Mantid::API::IMDHistoWorkspace_sptr>(
+              reference_out_ws);
+
+      // Compare the loaded and original workspace
+      auto compare_alg =
+          Mantid::API::AlgorithmManager::Instance().createUnmanaged(
+              "CompareMDWorkspaces");
+      compare_alg->setChild(true);
+      compare_alg->initialize();
+      compare_alg->setProperty("Workspace1", out_ws);
+      compare_alg->setProperty("Workspace2", reference_out_ws);
+      compare_alg->setProperty("Tolerance", 0.00001);
+      compare_alg->setProperty("CheckEvents", true);
+      compare_alg->setProperty("IgnoreBoxID", true);
+      TS_ASSERT_THROWS_NOTHING(compare_alg->execute());
+      bool is_equal = compare_alg->getProperty("Equals");
+      TS_ASSERT(is_equal);
+    }
+
+    // Remove the file
+    if (Poco::File(file_name).exists()) {
+      Poco::File(file_name).remove();
+    }
+  }
+
 private:
   void checkHistogramsHaveBeenStored(const std::string &wsName,
                                      double val = 0.34, double bin_min = 0.3,