diff --git a/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py b/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py
index 345d2a6995453873ddc6d02e243d811da754a657..cbc847192cbd080879179153e3c5c9604d602c3e 100644
--- a/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py
+++ b/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py
@@ -77,13 +77,13 @@ def _run_vanadium_calibration():
 def _run_focus():
     run_number = 79514
     polaris_obj = setup_polaris_instrument()
-    return polaris_obj.focus(run_number=run_number, focus_mode="")
+    return polaris_obj.focus(run_number=run_number)
 
 
 def _calibration_validation(cls, results):
     _validation_setup(cls)
     output_full_path = os.path.join(_get_calibration_dir(), _get_calibration_output_name())
-    ws_to_validate_output_name = "pearl_van_cal_output"
+    ws_to_validate_output_name = "POLARIS_Vanadium_Calibration_Output"
     mantid.LoadNexus(Filename=output_full_path, OutputWorkspace=ws_to_validate_output_name)
 
     reference_file_name = "ISIS_Powder-PEARL78338_Van_Cal.nxs"
diff --git a/Testing/SystemTests/tests/analysis/reference/ISIS_Powder-PEARL78338_Van_Cal.nxs.md5 b/Testing/SystemTests/tests/analysis/reference/ISIS_Powder-PEARL78338_Van_Cal.nxs.md5
index ac9fac5a1c4185c797ce7bbba1b536c0eda86fb7..76e055cb075a06a960d13796e52829829e3fb141 100644
--- a/Testing/SystemTests/tests/analysis/reference/ISIS_Powder-PEARL78338_Van_Cal.nxs.md5
+++ b/Testing/SystemTests/tests/analysis/reference/ISIS_Powder-PEARL78338_Van_Cal.nxs.md5
@@ -1 +1 @@
-19390f1b54bb9f7837c9c4d7fe991691
+7e80088fe9a61995c18fa1f9156321b9
diff --git a/scripts/Diffraction/isis_powder/abstract_inst.py b/scripts/Diffraction/isis_powder/abstract_inst.py
index 0ac25d6bc785c825472c0366dde5cf9d8839d207..0661c6f8a732305e48389006e33bb7cc50448805 100644
--- a/scripts/Diffraction/isis_powder/abstract_inst.py
+++ b/scripts/Diffraction/isis_powder/abstract_inst.py
@@ -231,9 +231,6 @@ class AbstractInst(object):
     def _process_focus_output(self, processed_spectra, run_details, attenuate=False):
         return _empty_hook_return_none()
 
-    def _subtract_sample_empty(self, input_sample):
-        return input_sample
-
     def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, run_details=None):
         return ws_to_correct
 
diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py
index e6dcaae38f668ee67769a5d6db3de6bc4300e5f1..9ba46ab7be9ced82972b27c2ef0f712969eb9a11 100644
--- a/scripts/Diffraction/isis_powder/polaris.py
+++ b/scripts/Diffraction/isis_powder/polaris.py
@@ -26,7 +26,7 @@ class Polaris(AbstractInst):
         super(Polaris, self).__init__(user_name=user_name, calibration_dir=calibration_dir,
                                       output_dir=output_dir, kwargs=kwargs)
 
-        self._chopper_on = kwargs.get("chopper_on")
+        self._chopper_on = chopper_on
 
         # Caches the last dictionary to avoid us having to keep parsing the YAML
         self._run_details_last_run_number = None
@@ -56,26 +56,28 @@ class Polaris(AbstractInst):
 
         input_run_number_list = common.generate_run_numbers(run_number_string=run_number)
         configuration = polaris_calib_parser.get_calibration_dict(run_number=input_run_number_list[0])
-        cycle = configuration["label"]
-        calibration_dir = os.path.join(self.calibration_dir, cycle)
-
-        calibration_full_path = os.path.join(calibration_dir, configuration["offset_file_name"])
-        grouping_full_path = os.path.join(calibration_dir, configuration["offset_file_name"])
 
         if self._chopper_on:
             chopper_config = configuration["chopper_on"]
         else:
             chopper_config = configuration["chopper_off"]
 
+        empty_runs = chopper_config["empty_run_numbers"]
         vanadium_runs = chopper_config["vanadium_run_numbers"]
         solid_angle_file_name = "SAC_" + vanadium_runs
-        solid_angle_file_path = os.path.join(calibration_dir, solid_angle_file_name)
         splined_vanadium_name = "SplinedVan_" + vanadium_runs
+        cycle = configuration["label"]
+
+        calibration_dir = os.path.join(self.calibration_dir, cycle)
+        calibration_full_path = os.path.join(calibration_dir, configuration["offset_file_name"])
+        grouping_full_path = os.path.join(calibration_dir, configuration["offset_file_name"])
+        solid_angle_file_path = os.path.join(calibration_dir, solid_angle_file_name)
         splined_vanadium = os.path.join(calibration_dir, splined_vanadium_name)
 
         calibration_details = RunDetails(calibration_path=calibration_full_path, grouping_path=grouping_full_path,
                                          vanadium_runs=vanadium_runs, run_number=run_number)
         calibration_details.label = cycle
+        calibration_details.sample_empty = empty_runs
         calibration_details.splined_vanadium = splined_vanadium
         calibration_details.solid_angle_corr = solid_angle_file_path
 
@@ -123,17 +125,6 @@ class Polaris(AbstractInst):
 
         return corrections_ws
 
-    def _subtract_sample_empty(self, input_sample):
-        # TODO when calibration mapping has sample.empty enable this
-        return input_sample
-        if self._sample_empty is not None:
-            empty_sample_path = os.path.join(self.calibration_dir, self._sample_empty)
-            empty_sample = mantid.Load(Filename=empty_sample_path)
-            empty_sample = self._normalise_ws(empty_sample)
-            input_sample = mantid.Minus(LHSWorkspace=input_sample, RHSWorkspace=empty_sample)
-            common.remove_intermediate_workspace(empty_sample)
-        return input_sample
-
     def _apply_solid_angle_efficiency_corr(self, ws_to_correct, vanadium_number=None, run_details=None):
         assert(vanadium_number or run_details)
 
diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_calibration.yaml b/scripts/Diffraction/isis_powder/polaris_routines/polaris_calibration.yaml
index 606f1ac16540c91a618fcae5b4377595bb16bca6..ca3322c6a63c2d93415f20c8c35855e91e51dade 100644
--- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_calibration.yaml
+++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_calibration.yaml
@@ -6,11 +6,11 @@
   label : "15_2"
   chopper_on:
     vanadium_run_numbers : "78338"
-    empty_run = "78339"
+    empty_run_numbers : "78339"
 
   chopper_off:
     vanadium_run_numbers : "78338"
-    empty_run = "78339"
+    empty_run_numbers : "78339"
 
 
 93105-95614:
@@ -19,5 +19,7 @@
   label : "15_2"
   chopper_on:
     vanadium_run_numbers : "95603-95607,95613-95614"
+    empty_run_numbers : "78339"
   chopper_off:
-    vanadium_run_numbers : "95603-95607,95613-95614"
\ No newline at end of file
+    vanadium_run_numbers : "95603-95607,95613-95614"
+    empty_run_numbers : "78339"
\ No newline at end of file
diff --git a/scripts/Diffraction/isis_powder/routines/calibrate.py b/scripts/Diffraction/isis_powder/routines/calibrate.py
index 5757e75a46e99477cf540c9341b06bf5b9119587..4ee32f734b3801008523d376278f8dd8370af974 100644
--- a/scripts/Diffraction/isis_powder/routines/calibrate.py
+++ b/scripts/Diffraction/isis_powder/routines/calibrate.py
@@ -9,11 +9,10 @@ import isis_powder.routines.common as common
 
 def create_van(instrument, van, empty, output_van_file_name, num_of_splines, absorb, gen_absorb):
     input_van_ws = common.load_current_normalised_ws(run_number_string=van, instrument=instrument)
-    input_empty_ws = common.load_current_normalised_ws(run_number_string=empty, instrument=instrument)
 
-    corrected_van_ws = mantid.Minus(LHSWorkspace=input_van_ws, RHSWorkspace=input_empty_ws)
+    corrected_van_ws = common.subtract_sample_empty(ws_to_correct=input_van_ws, empty_sample_ws_string=empty,
+                                                instrument=instrument)
 
-    common.remove_intermediate_workspace(input_empty_ws)
     common.remove_intermediate_workspace(input_van_ws)
 
     run_details = instrument._get_run_details(run_number=van)
diff --git a/scripts/Diffraction/isis_powder/routines/common.py b/scripts/Diffraction/isis_powder/routines/common.py
index cd988bcf38c8a966f8acf60d59ce86902c9d5abd..99d7ee87605e200573eceedc6482b6a56f8b6038 100644
--- a/scripts/Diffraction/isis_powder/routines/common.py
+++ b/scripts/Diffraction/isis_powder/routines/common.py
@@ -58,6 +58,16 @@ def load_monitor(run_numbers, instrument):
     return load_monitor_ws
 
 
+def subtract_sample_empty(ws_to_correct, empty_sample_ws_string, instrument):
+    output = ws_to_correct
+    if empty_sample_ws_string is not None:
+        empty_sample = load_current_normalised_ws(run_number_string=empty_sample_ws_string, instrument=instrument)
+        corrected_ws = mantid.Minus(LHSWorkspace=ws_to_correct, RHSWorkspace=empty_sample)
+        remove_intermediate_workspace(empty_sample)
+        output = corrected_ws
+    return output
+
+
 def _load_raw_files(run_number_string, instrument):
     run_number_list = generate_run_numbers(run_number_string=run_number_string)
     instrument.PEARL_setup_input_directories(run_number=run_number_list[0])
diff --git a/scripts/Diffraction/isis_powder/routines/focus.py b/scripts/Diffraction/isis_powder/routines/focus.py
index 49fc5f41440ba9225676aeb6c887e2148ef87c0a..ca0ee09ef946d1849b8be4d099372d3051a93410 100644
--- a/scripts/Diffraction/isis_powder/routines/focus.py
+++ b/scripts/Diffraction/isis_powder/routines/focus.py
@@ -3,6 +3,7 @@ from __future__ import (absolute_import, division, print_function)
 import mantid.simpleapi as mantid
 
 import isis_powder.routines.common as common
+import os
 
 
 def focus(number, instrument, attenuate=True, van_norm=True):
@@ -17,8 +18,14 @@ def _run_focus(instrument, run_number, perform_attenuation, perform_vanadium_nor
 
     run_details = instrument._get_run_details(run_number=run_number)
 
+    # Check the necessary splined vanadium file has been created
+    if not os.path.isfile(run_details.splined_vanadium):
+        raise ValueError("Processed vanadium runs not found at this path: "
+                         + str(run_details.splined_vanadium) + " \n\nHave you created a vanadium calibration yet?")
+
     # Compensate for empty sample if specified
-    input_workspace = instrument._subtract_sample_empty(input_workspace)
+    input_workspace = common.subtract_sample_empty(ws_to_correct=input_workspace, instrument=instrument,
+                                                   empty_sample_ws_string=run_details.sample_empty)
 
     # Align / Focus
     input_workspace = mantid.AlignDetectors(InputWorkspace=input_workspace,