diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py
index af6b0774414349bc0be26663d2e22c5e2edea5fe..70f9f6991875b5435685043ed1c33e86c6ed95e1 100644
--- a/scripts/Diffraction/isis_powder/polaris.py
+++ b/scripts/Diffraction/isis_powder/polaris.py
@@ -35,7 +35,10 @@ class Polaris(AbstractInst):
         self._inst_settings.update_attributes(kwargs=kwargs)
         vanadium_d = self._create_vanadium(run_number_string=self._inst_settings.run_in_range,
                                            do_absorb_corrections=self._inst_settings.do_absorb_corrections)
-        # TODO: save vanadium_d
+        
+        run_details = self._get_run_details(run_number_string=self._inst_settings.run_in_range)
+        polaris_algs.save_unsplined_vanadium(vanadium_ws=vanadium_d,
+                                             output_path=run_details.unsplined_vanadium_file_path)
         return vanadium_d
 
     def set_sample_details(self, **kwargs):
diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
index 5cfe261a1911d8646fe9d9c124dc2cb1bfb6c840..4825ba40484e073aa6ca8da0bf6b35283eef0ef6 100644
--- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
+++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
@@ -2,7 +2,7 @@ from __future__ import (absolute_import, division, print_function)
 
 import mantid.simpleapi as mantid
 
-from isis_powder.routines import absorb_corrections, common
+from isis_powder.routines import absorb_corrections, common, common_enums
 from isis_powder.routines.run_details import create_run_details_object, \
                                              CustomFuncForRunDetails, RunDetailsWrappedCommonFuncs
 from isis_powder.polaris_routines import polaris_advanced_config
@@ -57,6 +57,11 @@ def process_vanadium_for_focusing(bank_spectra, mask_path, spline_number):
     return output
 
 
+def save_unsplined_vanadium(vanadium_ws, output_path):
+    # TODO: convert vanadium_ws to TOF
+    mantid.SaveNexus(InputWorkspace=vanadium_ws, Filename=output_path, Append=False)
+
+
 def _apply_bragg_peaks_masking(workspaces_to_mask, mask_list):
     output_workspaces = list(workspaces_to_mask)
 
diff --git a/scripts/Diffraction/isis_powder/routines/common.py b/scripts/Diffraction/isis_powder/routines/common.py
index e25eaeb42fd4c90f20ef697b6f94529141311c0f..a1413d8d09237d6a88a0ce8aab60cd3c882253ba 100644
--- a/scripts/Diffraction/isis_powder/routines/common.py
+++ b/scripts/Diffraction/isis_powder/routines/common.py
@@ -148,6 +148,23 @@ def generate_run_numbers(run_number_string):
     return run_list
 
 
+def _generate_vanadium_name(vanadium_string, is_spline, *args):
+    out_name = 'Van'
+    if is_spline:
+        out_name += 'Splined'
+
+    out_name += '_' + str(vanadium_string)
+    for passed_arg in args:
+        if isinstance(passed_arg, list):
+            for arg in passed_arg:
+                out_name += '_' + str(arg)
+        else:
+            out_name += '_' + (str(passed_arg))
+
+    out_name += ".nxs"
+    return out_name
+
+
 def generate_splined_name(vanadium_string, *args):
     """
     Generates a unique splined vanadium name which encapsulates
@@ -159,16 +176,21 @@ def generate_splined_name(vanadium_string, *args):
     :param args: Any identifying properties to append to the name
     :return: The splined vanadium name
     """
-    out_name = "VanSplined" + '_' + str(vanadium_string)
-    for passed_arg in args:
-        if isinstance(passed_arg, list):
-            for arg in passed_arg:
-                out_name += '_' + str(arg)
-        else:
-            out_name += '_' + (str(passed_arg))
+    return _generate_vanadium_name(vanadium_string, True, *args)
 
-    out_name += ".nxs"
-    return out_name
+
+def generate_unsplined_name(vanadium_string, *args):
+    """
+    Generates a unique unsplined vanadium name which encapsulates
+    any properties passed into this method so that the vanadium
+    can be later loaded. This acts as a fingerprint for the vanadium
+    as some properties (such as offset file used) can impact
+    on the correct splined vanadium file to use.
+    :param vanadium_string: The name of this vanadium run
+    :param args: Any identifying properties to append to the name
+    :return: The splined vanadium name
+    """
+    return _generate_vanadium_name(vanadium_string, False, *args)
 
 
 def get_first_run_number(run_number_string):
diff --git a/scripts/Diffraction/isis_powder/routines/run_details.py b/scripts/Diffraction/isis_powder/routines/run_details.py
index 8dd9e79ed8c8e18f3d605c46c3243ef2608a3a38..1e87f551f221630398a8b40c5bdf79ea7797de50 100644
--- a/scripts/Diffraction/isis_powder/routines/run_details.py
+++ b/scripts/Diffraction/isis_powder/routines/run_details.py
@@ -67,13 +67,15 @@ def create_run_details_object(run_number_string, inst_settings, is_vanadium_run,
     # Offset  and splined vanadium is within the correct label folder
     offset_file_path = os.path.join(calibration_dir, label, offset_file_name)
     splined_van_path = os.path.join(calibration_dir, label, results_dict["splined_van_name"])
+    unsplined_van_path = os.path.join(calibration_dir, label, results_dict["unsplined_van_name"])
     van_absorb_path = os.path.join(calibration_dir, van_abs_file_name) if van_abs_file_name else None
 
     return _RunDetails(empty_run_number=results_dict["empty_runs"], file_extension=file_extension,
                        run_number=run_number, output_run_string=output_run_string, label=label,
                        offset_file_path=offset_file_path, grouping_file_path=grouping_file_path,
                        splined_vanadium_path=splined_van_path, vanadium_run_number=vanadium_run_string,
-                       sample_empty=sample_empty, vanadium_abs_path=van_absorb_path)
+                       sample_empty=sample_empty, vanadium_abs_path=van_absorb_path,
+                       unsplined_vanadium_path=unsplined_van_path)
 
 
 def _get_customisable_attributes(cal_dict, inst_settings, empty_run_call, grouping_name_call, vanadium_run_call,
@@ -98,6 +100,7 @@ def _get_customisable_attributes(cal_dict, inst_settings, empty_run_call, groupi
     dict_to_return["grouping_file_name"] = grouping_name
 
     dict_to_return["splined_van_name"] = common.generate_splined_name(vanadium_runs, splined_name_list)
+    dict_to_return["unsplined_van_name"] = common.generate_unsplined_name(vanadium_runs, splined_name_list)
 
     return dict_to_return
 
@@ -180,7 +183,7 @@ class _RunDetails(object):
 
     def __init__(self, empty_run_number, file_extension, run_number, output_run_string, label,
                  offset_file_path, grouping_file_path, splined_vanadium_path, vanadium_run_number,
-                 sample_empty, vanadium_abs_path):
+                 sample_empty, vanadium_abs_path, unsplined_vanadium_path):
 
         # Essential attribute
         self.empty_runs = empty_run_number
@@ -193,6 +196,7 @@ class _RunDetails(object):
         self.grouping_file_path = grouping_file_path
 
         self.splined_vanadium_file_path = splined_vanadium_path
+        self.unsplined_vanadium_file_path = unsplined_vanadium_path
         self.vanadium_run_numbers = vanadium_run_number
 
         # Optional