diff --git a/qt/scientific_interfaces/Indirect/ConvFitAddWorkspaceDialog.cpp b/qt/scientific_interfaces/Indirect/ConvFitAddWorkspaceDialog.cpp
index 2a4471f7079f66be0a746ecb06c183281afcad9c..6bd71d1e13dec43f2bbcc17f8fc3caa251b613ea 100644
--- a/qt/scientific_interfaces/Indirect/ConvFitAddWorkspaceDialog.cpp
+++ b/qt/scientific_interfaces/Indirect/ConvFitAddWorkspaceDialog.cpp
@@ -8,6 +8,7 @@
 
 #include "MantidAPI/AnalysisDataService.h"
 #include "MantidAPI/MatrixWorkspace.h"
+#include "MantidQtWidgets/Common/SignalBlocker.h"
 
 #include <boost/optional.hpp>
 
@@ -18,6 +19,14 @@ MatrixWorkspace_sptr getWorkspace(const std::string &name) {
   return AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(name);
 }
 
+bool doesExistInADS(std::string const &workspaceName) {
+  return AnalysisDataService::Instance().doesExist(workspaceName);
+}
+
+bool validWorkspace(std::string const &name) {
+  return !name.empty() && doesExistInADS(name);
+}
+
 boost::optional<std::size_t> maximumIndex(MatrixWorkspace_sptr workspace) {
   if (workspace) {
     const auto numberOfHistograms = workspace->getNumberHistograms();
@@ -115,8 +124,9 @@ void ConvFitAddWorkspaceDialog::setResolutionFBSuffices(
 }
 
 void ConvFitAddWorkspaceDialog::selectAllSpectra(int state) {
-  if (state == Qt::Checked) {
-    m_uiForm.leWorkspaceIndices->setText(getIndexString(workspaceName()));
+  auto const name = workspaceName();
+  if (validWorkspace(name) && state == Qt::Checked) {
+    m_uiForm.leWorkspaceIndices->setText(getIndexString(name));
     m_uiForm.leWorkspaceIndices->setEnabled(false);
   } else
     m_uiForm.leWorkspaceIndices->setEnabled(true);
@@ -133,8 +143,10 @@ void ConvFitAddWorkspaceDialog::workspaceChanged(const QString &workspaceName) {
 
 void ConvFitAddWorkspaceDialog::setWorkspace(const std::string &workspace) {
   setAllSpectraSelectionEnabled(true);
-  if (m_uiForm.ckAllSpectra->isChecked())
+  if (m_uiForm.ckAllSpectra->isChecked()) {
     m_uiForm.leWorkspaceIndices->setText(getIndexString(workspace));
+    m_uiForm.leWorkspaceIndices->setEnabled(false);
+  }
 }
 
 void ConvFitAddWorkspaceDialog::setAllSpectraSelectionEnabled(bool doEnable) {
diff --git a/qt/scientific_interfaces/Indirect/ConvFitModel.cpp b/qt/scientific_interfaces/Indirect/ConvFitModel.cpp
index 932e2a5c8fb6c61cc4e94d8a0aa58dffef736f66..633914846d1aaf846a62841d816fec86f1ab7631 100644
--- a/qt/scientific_interfaces/Indirect/ConvFitModel.cpp
+++ b/qt/scientific_interfaces/Indirect/ConvFitModel.cpp
@@ -24,6 +24,10 @@ MatrixWorkspace_sptr getADSMatrixWorkspace(std::string const &workspaceName) {
       workspaceName);
 }
 
+bool doesExistInADS(std::string const &workspaceName) {
+  return AnalysisDataService::Instance().doesExist(workspaceName);
+}
+
 boost::optional<std::size_t>
 getFirstInCategory(CompositeFunction_const_sptr composite,
                    const std::string &category) {
@@ -553,7 +557,10 @@ void ConvFitModel::removeWorkspace(std::size_t index) {
 }
 
 void ConvFitModel::setResolution(const std::string &name, std::size_t index) {
-  setResolution(getADSMatrixWorkspace(name), index);
+  if (!name.empty() && doesExistInADS(name))
+    setResolution(getADSMatrixWorkspace(name), index);
+  else
+    throw std::runtime_error("A valid resolution file needs to be selected.");
 }
 
 void ConvFitModel::setResolution(MatrixWorkspace_sptr resolution,
diff --git a/qt/scientific_interfaces/Indirect/IndirectAddWorkspaceDialog.cpp b/qt/scientific_interfaces/Indirect/IndirectAddWorkspaceDialog.cpp
index 2d3c8128512318adaa83a814d6c7aea951ae2778..edcb81288fcf603dc4249308e3840dd27ef8c58d 100644
--- a/qt/scientific_interfaces/Indirect/IndirectAddWorkspaceDialog.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectAddWorkspaceDialog.cpp
@@ -18,6 +18,14 @@ MatrixWorkspace_sptr getWorkspace(const std::string &name) {
   return AnalysisDataService::Instance().retrieveWS<MatrixWorkspace>(name);
 }
 
+bool doesExistInADS(std::string const &workspaceName) {
+  return AnalysisDataService::Instance().doesExist(workspaceName);
+}
+
+bool validWorkspace(std::string const &name) {
+  return !name.empty() && doesExistInADS(name);
+}
+
 boost::optional<std::size_t> maximumIndex(MatrixWorkspace_sptr workspace) {
   if (workspace) {
     const auto numberOfHistograms = workspace->getNumberHistograms();
@@ -102,8 +110,9 @@ void AddWorkspaceDialog::setFBSuffices(const QStringList &suffices) {
 }
 
 void AddWorkspaceDialog::selectAllSpectra(int state) {
-  if (state == Qt::Checked) {
-    m_uiForm.leWorkspaceIndices->setText(getIndexString(workspaceName()));
+  auto const name = workspaceName();
+  if (validWorkspace(name) && state == Qt::Checked) {
+    m_uiForm.leWorkspaceIndices->setText(getIndexString(name));
     m_uiForm.leWorkspaceIndices->setEnabled(false);
   } else
     m_uiForm.leWorkspaceIndices->setEnabled(true);
@@ -120,8 +129,10 @@ void AddWorkspaceDialog::workspaceChanged(const QString &workspaceName) {
 
 void AddWorkspaceDialog::setWorkspace(const std::string &workspace) {
   setAllSpectraSelectionEnabled(true);
-  if (m_uiForm.ckAllSpectra->isChecked())
+  if (m_uiForm.ckAllSpectra->isChecked()) {
     m_uiForm.leWorkspaceIndices->setText(getIndexString(workspace));
+    m_uiForm.leWorkspaceIndices->setEnabled(false);
+  }
 }
 
 void AddWorkspaceDialog::setAllSpectraSelectionEnabled(bool doEnable) {
diff --git a/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp b/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp
index f31e89d8de8d419e6d2b8c3dd00e299ec902d3df..f7bad0ef0bb860da7cde8cc0d1ba9f1a03d3101e 100644
--- a/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp
+++ b/qt/scientific_interfaces/Indirect/IndirectFittingModel.cpp
@@ -25,6 +25,10 @@ using namespace Mantid::API;
 namespace {
 using namespace MantidQt::CustomInterfaces::IDA;
 
+bool doesExistInADS(std::string const &workspaceName) {
+  return AnalysisDataService::Instance().doesExist(workspaceName);
+}
+
 bool equivalentWorkspaces(MatrixWorkspace_const_sptr lhs,
                           MatrixWorkspace_const_sptr rhs) {
   if (!lhs || !rhs)
@@ -497,6 +501,9 @@ void IndirectFittingModel::addWorkspace(const std::string &workspaceName,
   if (spectra.empty())
     throw std::runtime_error(
         "Fitting Data must consist of one or more spectra.");
+  if (workspaceName.empty() || !doesExistInADS(workspaceName))
+    throw std::runtime_error("A valid sample file needs to be selected.");
+
   addWorkspace(workspaceName, DiscontinuousSpectra<std::size_t>(spectra));
 }