diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/data_presenter.py b/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/data_presenter.py
index 2630d185ee3f94d7b60fa499d4a50fe30bf12121..2605bf43093e04276167596d8daae9f8778ed6b5 100644
--- a/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/data_presenter.py
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/data_presenter.py
@@ -67,11 +67,10 @@ class FittingDataPresenter(object):
         self._emit_enable_button_signal()
 
     def _on_worker_success(self, _):
-        self.view.remove_all()
+        self._remove_all_table_rows()
         self.row_numbers = {}
         for i, name in enumerate(self.get_loaded_workspaces()):
-            self.row_numbers[name] = i
-            self._add_row_to_table(name)
+            self._add_row_to_table(name, i)
 
     def _enable_load_button(self, enabled):
         self.view.set_load_button_enabled(enabled)
@@ -97,12 +96,12 @@ class FittingDataPresenter(object):
             return False
         return True
 
-    def _add_row_to_table(self, ws_name):
+    def _add_row_to_table(self, ws_name, row):
         words = ws_name.split("_")
         if len(words) == 4 and words[2] == "bank":
             self.view.add_table_row(words[1], words[3])
+            self.row_numbers[ws_name] = row
         else:
-            self.remove_workspace(ws_name)
             logger.warning(
                 "The workspace '{}' was not in the correct naming format. Files should be named in the following way: "
                 "INSTRUMENT_RUNNUMBER_bank_BANK.".format(ws_name)
diff --git a/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/test/test_data_presenter.py b/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/test/test_data_presenter.py
index a069af02d2bfa14dabcbcb867c33fff48e4a0b55..b772d1bdd46bb552240c4d76e5ea1008684e8b93 100644
--- a/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/test/test_data_presenter.py
+++ b/scripts/Engineering/gui/engineering_diffraction/tabs/fitting/data_handling/test/test_data_presenter.py
@@ -32,7 +32,8 @@ class FittingDataPresenterTest(unittest.TestCase):
         mock_worker.assert_called_with("mocked model method",
                                        ("/a/file/to/load.txt, /another/one.nxs",),
                                        error_cb=self.presenter._on_worker_error,
-                                       finished_cb=self.presenter._emit_enable_button_signal)
+                                       finished_cb=self.presenter._emit_enable_button_signal,
+                                       success_cb=self.presenter._on_worker_success)
 
     @patch(dir_path + ".data_presenter.create_error_message")
     @patch(dir_path + ".data_presenter.AsyncTask")
@@ -68,61 +69,96 @@ class FittingDataPresenterTest(unittest.TestCase):
         self.assertEqual(1, self.view.sig_enable_load_button.emit.call_count)
         self.view.sig_enable_load_button.emit.called_with(True)
 
+    def test_worker_success_valid_filename(self):
+        model_dict = {"ENGINX_1_bank_1": "ws1", "ENGINX_2_bank_South": "ws2"}
+        self.model.get_loaded_workspaces.return_value = model_dict
+
+        self.presenter._on_worker_success("info")
+
+        self.assertEqual(1, self.view.remove_all.call_count)
+        self.view.add_table_row.assert_any_call("1", "1")
+        self.view.add_table_row.assert_any_call("2", "South")
+
+    @patch(dir_path + ".data_presenter.logger")
+    def test_worker_success_invalid_filename(self, mock_logger):
+        model_dict = {"invalid": "ws1", "invalid2": "ws2"}
+        self.model.get_loaded_workspaces.return_value = model_dict
+
+        self.presenter._on_worker_success("info")
+
+        self.assertEqual(1, self.view.remove_all.call_count)
+        self.assertEqual(0, self.view.add_table_row.call_count)
+        self.assertEqual(2, mock_logger.warning.call_count)
+
     def test_remove_workspace_tracked(self):
         model_dict = {"name1": "ws1", "name2": "ws2"}
         self.model.get_loaded_workspaces.return_value = model_dict
+        self.presenter.row_numbers = {"name1": 0, "name2": 1}
 
         self.presenter.remove_workspace("name1")
 
         self.assertEqual({"name2": "ws2"}, model_dict)
+        self.assertEqual({"name2": 1}, self.presenter.row_numbers)
 
     def test_remove_workspace_not_tracked(self):
         model_dict = {"name1": "ws1", "name2": "ws2"}
         self.model.get_loaded_workspaces.return_value = model_dict
+        self.presenter.row_numbers = {"name1": 0, "name2": 1}
 
         self.presenter.remove_workspace("name3")
 
         self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict)
+        self.assertEqual({"name1": 0, "name2": 1}, self.presenter.row_numbers)
 
     def test_rename_workspace_tracked(self):
         model_dict = {"name1": "ws1", "name2": "ws2"}
         self.model.get_loaded_workspaces.return_value = model_dict
+        self.presenter.row_numbers = {"name1": 0, "name2": 1}
 
         self.presenter.rename_workspace("name1", "new")
 
         self.assertEqual({"new": "ws1", "name2": "ws2"}, model_dict)
+        self.assertEqual({"new": 0, "name2": 1}, self.presenter.row_numbers)
 
     def test_rename_workspace_not_tracked(self):
         model_dict = {"name1": "ws1", "name2": "ws2"}
         self.model.get_loaded_workspaces.return_value = model_dict
+        self.presenter.row_numbers = {"name1": 0, "name2": 1}
 
         self.presenter.rename_workspace("name3", "new")
 
         self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict)
+        self.assertEqual({"name1": 0, "name2": 1}, self.presenter.row_numbers)
 
     def test_clear_workspaces(self):
         model_dict = {"name1": "ws1", "name2": "ws2"}
         self.model.get_loaded_workspaces.return_value = model_dict
+        self.presenter.row_numbers = {"name1": 0, "name2": 1}
 
         self.presenter.clear_workspaces()
 
         self.assertEqual({}, model_dict)
+        self.assertEqual({}, self.presenter.row_numbers)
 
     def test_replace_workspace_tracked(self):
         model_dict = {"name1": "ws1", "name2": "ws2"}
         self.model.get_loaded_workspaces.return_value = model_dict
+        self.presenter.row_numbers = {"name1": 0, "name2": 1}
 
         self.presenter.replace_workspace("name1", "new")
 
         self.assertEqual({"name1": "new", "name2": "ws2"}, model_dict)
+        self.assertEqual({"name1": 0, "name2": 1}, self.presenter.row_numbers)
 
     def test_replace_workspace_not_tracked(self):
         model_dict = {"name1": "ws1", "name2": "ws2"}
         self.model.get_loaded_workspaces.return_value = model_dict
+        self.presenter.row_numbers = {"name1": 0, "name2": 1}
 
         self.presenter.replace_workspace("name3", "new")
 
         self.assertEqual({"name1": "ws1", "name2": "ws2"}, model_dict)
+        self.assertEqual({"name1": 0, "name2": 1}, self.presenter.row_numbers)
 
 
 if __name__ == '__main__':