diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
index 598a8c25b3085ade04c0c92197e38833bdf25a82..240f3f990b1f93fef5106ee7cdaac83c66411db4 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
+using System.Runtime.InteropServices;
 using System.Text;
 using System.Windows;
 using System.Windows.Input;
@@ -59,6 +60,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			AirDragViewModel = _dependencies.ComponentViewModelFactory.CreateComponentViewModel(airdragInputData) as IAirDragViewModel;
 			if (AirDragViewModel != null) {
 				AirDragViewModel.LabelVisible = false;
+				AirDragViewModel.IsReadOnly = true;
 			}
 		}
 
@@ -123,6 +125,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 					var airDragInputData = _dependencies.InjectFactory.CreateAirdragData(dataProviderVersion, null, airdragNode, fileName);
 					AirDragViewModel = _dependencies.ComponentViewModelFactory.CreateComponentViewModel(airDragInputData) as IAirDragViewModel;
+					AirDragViewModel.IsReadOnly = true;
+					AirDragViewModel.LabelVisible = false;
 					success = true;
 				} else {
 					success = false;
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
index 473d10565ec9ad67c86756b790c8ac8beea4a485..597ff589bb53e646e342dbbf035f2a4b849f538e 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
@@ -31,9 +31,14 @@ using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType;
 
 namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 {
-	//AGGREGATE MULTISTAGEDEPENDENCIES
 
-	public class MultiStageJobViewModel_v0_1 : ViewModelBase, IMultiStageJobViewModel, IMultistageVIFInputData, IMultistageBusInputDataProvider
+	public interface IMultiStageJobViewModel : IDeclarationMultistageJobInputData, IMultistageVIFInputData, IMultistageBusInputDataProvider
+	{
+		IManufacturingStageViewModel ManufacturingStageViewModel { get; }
+	}
+
+
+	public class MultiStageJobViewModel_v0_1 : ViewModelBase, IMultiStageJobViewModel
 	{
 		private IDeclarationMultistageJobInputData _jobInputData;
 
@@ -51,6 +56,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			set => SetProperty(ref _manufacturingStageViewModel, value);
 		}
 
+
 		#region Commands
 		private ICommand _saveVifCommand;
 
@@ -59,16 +65,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			get
 			{
 				return _saveVifCommand ?? new RelayCommand(() => {
-					var outPutFile = _multistageDependencies.DialogHelperLazy.Value.SaveToXMLDialog(Settings.Default.DefaultFilePath);
-					if (outPutFile == null) {
+					var outputFile = _multistageDependencies.DialogHelperLazy.Value.SaveToXMLDialog(Settings.Default.DefaultFilePath);
+					if (outputFile == null) {
 						return;
 					}
-					SaveVIF(this, outPutFile);
+					SaveVif(this, outputFile);
 				}, () => true);
 			}
 		}
 
-		private static void SaveVIF(IMultistageVIFInputData vifData, string outputFile)
+		public static void SaveVif(IMultistageVIFInputData vifData, string outputFile)
 		{
 
 
@@ -149,10 +155,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			}
 			if (!valid) {
 				_dialogHelper.Value.ShowMessageBox($"Invalid Document: {validator.ValidationError}", "Error");
-				xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces);
-				LoadVehicleData(filename);
+				//xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces);
+				//LoadVehicleData(filename);
 			} else {
 				xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces);
+				LoadVehicleData(filename);
 			}
 		}
 
@@ -290,8 +297,5 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		#endregion
 	}
 
-	public interface IMultiStageJobViewModel : IDeclarationMultistageJobInputData
-	{
-		IManufacturingStageViewModel ManufacturingStageViewModel { get; }
-	}
+
 }
\ No newline at end of file
diff --git a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml
index 6fa79fa6bb9259cc1a236f120a4c88300343b536..3eb4584508a506adcebea3e1751586bf590a7697 100644
--- a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml
@@ -28,12 +28,15 @@
                             Text="{Binding AirdragFilePath, TargetNullValue=Select Airdrag Input Data}" 
                             Command="{Binding LoadAirdragFileCommand}"/>
                     </DockPanel>
-                   
-                    <StackPanel HorizontalAlignment="Stretch" Margin="4" Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}}">
-                        <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label>
-                        <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Manufacturer, Mode=OneWay}" ReadOnly="True"/>
-                        <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Model, Mode=OneWay}" ReadOnly="True"/>
-                        <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.AirDragArea, Mode=OneWay}" ReadOnly="True"/>
+
+                    <StackPanel HorizontalAlignment="Stretch" Margin="4" >
+                        
+                        <StackPanel Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}}">
+                            <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label>
+                            <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Manufacturer, Mode=OneWay}" ReadOnly="True"/>
+                            <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Model, Mode=OneWay}" ReadOnly="True"/>
+                            <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.AirDragArea, Mode=OneWay}" ReadOnly="True"/>
+                        </StackPanel>
                         <Label Style="{DynamicResource LabelStyle1}">Data from File</Label>
                         <ContentControl Content="{Binding AirDragViewModel}" 
                                         Visibility="{Binding AirDragViewModel, Converter={StaticResource NullToVisibilityConverter}}">
diff --git a/Vecto3GUI2020Test/UI/DesktopSession.cs b/Vecto3GUI2020Test/UI/DesktopSession.cs
index 45e09d63eca3cce890187e8beccce1157f0e5e4d..d71ebdb97973fcb2f1a3d58f490d86c721289fce 100644
--- a/Vecto3GUI2020Test/UI/DesktopSession.cs
+++ b/Vecto3GUI2020Test/UI/DesktopSession.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -16,6 +17,8 @@ namespace Vecto3GUI2020Test
 
 		public DesktopSession()
 		{
+			var process = Process.Start(@"C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe");
+
 			var appCapabilities = new AppiumOptions();
 			appCapabilities.AddAdditionalCapability("app", "Root");
 			appCapabilities.AddAdditionalCapability("deviceName", "WindowsPC");
diff --git a/Vecto3GUI2020Test/UI/UITests.cs b/Vecto3GUI2020Test/UI/UITests.cs
index 785fadf49d36f65a0958416fea3a2743dbc3db8b..1d11d583737730319fc3f46977df4e30c3ad18c2 100644
--- a/Vecto3GUI2020Test/UI/UITests.cs
+++ b/Vecto3GUI2020Test/UI/UITests.cs
@@ -24,25 +24,48 @@ namespace Vecto3GUI2020Test
             Setup(TestContext.CurrentContext);
 		}
 
+
+		[Test]
+		public void LoadFileSession()
+		{
+			session.FindElementByXPath(
+				"//Button[@Name=\"New Multistage File\"][@AutomationId=\"JobListViewNewManufacturingStageFileButton\"]").Click(); //open new multistageWindow
+			
+			//session.SwitchTo().Window(session.WindowHandles.First());
+			
+
+			session.FindElementByXPath("//Button[@AutomationId=\"button\"]").Click(); //open filepicker
+
+
+			Thread.Sleep(100000);
+		}  
+
+
+
+
+		#region DesktopSessionTests
+
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFile()
 		{
 			LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_multiple_stages.xml");
 		}
-
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFileAirdrag()
 		{
 			LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_multiple_stages_airdrag.xml");
 
 		}
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFileheatPump()
 		{
 			LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_multiple_stages_heatPump.xml");
 
 		}
-
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFilehev()
 		{
@@ -50,37 +73,39 @@ namespace Vecto3GUI2020Test
 
 		}
 
-
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFileNGTankSystem()
 		{
 			LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_multiple_stages_NGTankSystem.xml");
 		}
 
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFileConsolidatedOneStage()
 		{
 			LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_one_stage.xml");
 		}
-
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFileConsolidatedTwoStages()
 		{
 			LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_two_stages.xml");
 		}
-
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFilePrimaryVehicleOnly()
 		{
 			LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_primary_vehicle_only.xml");
 		}
 
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFilePrimaryVehicleStage_2_3()
 		{
 			LoadFileThroughUIWithDesktopSession(fileName: "vecto_multistage_consolidated_one_stage.xml");
 		}
-
+		[Ignore("disabled Desktop Session tests")]
 		[Test]
 		public void LoadFilePrimaryVehicleOnlyAndCheckFields()
 		{
@@ -210,14 +235,14 @@ namespace Vecto3GUI2020Test
 		}
 
 
-
+		#endregion
 
 
 		[TearDown]
 		public void OneTimeTeardown()
 		{
 			TearDown();
-			Thread.Sleep(1000);
+			Thread.Sleep(0);
 		}
 
 
diff --git a/Vecto3GUI2020Test/UI/VECTO3GUI2020Session.cs b/Vecto3GUI2020Test/UI/VECTO3GUI2020Session.cs
index c509ef95965474be669baf8ec5a92b06f5f60ac0..dc54fdb7b27f07c17bcf14805da562c9e7b2ee87 100644
--- a/Vecto3GUI2020Test/UI/VECTO3GUI2020Session.cs
+++ b/Vecto3GUI2020Test/UI/VECTO3GUI2020Session.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Diagnostics;
 using NUnit.Framework;
 using OpenQA.Selenium;
 using OpenQA.Selenium.Appium.Windows;
@@ -11,6 +12,8 @@ namespace Vecto3GUI2020Test.UI
         protected const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
         private const string NotepadAppId = @"C:\Windows\System32\notepad.exe";
 
+		private static Process winappDriverProcess;
+
         internal static WindowsDriver<WindowsElement> session;
 		internal static DesktopSession desktopSession;
 
@@ -22,9 +25,9 @@ namespace Vecto3GUI2020Test.UI
 		public static void Setup(TestContext context)
         {
             // Launch a new instance of VECTO application
-            if (session == null)
-            {
-                // Create a new session to launch Notepad application
+            if (session == null) {
+				winappDriverProcess = Process.Start(@"C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe");
+				// Create a new session to launch Notepad application
 				var appiumOptions = new OpenQA.Selenium.Appium.AppiumOptions();
 				appiumOptions.AddAdditionalCapability("app", @"C:\Users\Harry\source\repos\vecto-dev\VECTO3GUI2020\bin\Debug\VECTO3GUI2020.exe");
 				appiumOptions.AddAdditionalCapability("deviceName", "WindowsPC");
@@ -49,7 +52,8 @@ namespace Vecto3GUI2020Test.UI
             if (session != null)
             {
                 session.CloseApp();
-
+				winappDriverProcess.Kill();
+				
 				session = null;
             }
         }
diff --git a/Vecto3GUI2020Test/ViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
similarity index 64%
rename from Vecto3GUI2020Test/ViewModelTests.cs
rename to Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
index 1ba6933f93f1b4419b13f2a5ea79dca041defcfb..e5c6ca2ec92e530b7b5e41d4099e4d462f94ce78 100644
--- a/Vecto3GUI2020Test/ViewModelTests.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
@@ -3,59 +3,26 @@ using System.IO;
 using System.Linq;
 using System.Runtime.CompilerServices;
 using System.Xml;
+using Castle.DynamicProxy.Generators.Emitters.SimpleAST;
 using Moq;
 using Ninject;
 using NUnit.Framework;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCore;
-using TUGraz.VectoCore.InputData.FileIO.XML;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Strategies;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.Utils;
 using VECTO3GUI2020.Helper;
-using VECTO3GUI2020.Ninject;
-using VECTO3GUI2020.Ninject.Vehicle;
 using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
-using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
 
 namespace Vecto3GUI2020Test
 {
-    [TestFixture]
-    public class ViewModelTests
-    {
-		protected IXMLInputDataReader xmlInputReader;
-		private IKernel _kernel;
-
-		const string DirPath = @"Testdata\";
-
-		private const string consolidated_multiple_stages = "vecto_multistage_consolidated_multiple_stages.xml";
-
-		private const string consolidated_multiple_stages_airdrag =
-			"vecto_multistage_consolidated_multiple_stages_airdrag.xml";
-
-		private const string consolidated_one_stage = "vecto_multistage_consolidated_one_stage.xml";
-		private const string primary_vehicle_only = "vecto_multistage_primary_vehicle_only.xml";
-
-		[SetUp]
-        public void OneTimeSetUp()
-        {
-			_kernel = new StandardKernel(
-				new VectoNinjectModule(),
-				new JobEditModule(),
-				new ComponentModule(),
-				new DocumentModule(),
-				new XMLWriterFactoryModule(),
-				new FactoryModule(),
-				new MultistageModule()
-			);
-			xmlInputReader = _kernel.Get<IXMLInputDataReader>();
-			
-		}
-
+	[TestFixture]
+    public class LoadAndSaveVehicleData : ViewModelTestBase
+	{
 		[Test]
 		public void loadInputFileMultipleStage()
 		{
@@ -67,6 +34,7 @@ namespace Vecto3GUI2020Test
 		{
 			var newMultiStageJob = loadFile(primary_vehicle_only);
 			var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			Assert.NotNull(vehicle);
 			vehicle.Manufacturer = "test1";
 			vehicle.ManufacturerAddress = "testAddress2";
 			vehicle.VIN = "VIN123456789";
@@ -75,16 +43,31 @@ namespace Vecto3GUI2020Test
 			var manufacturingStage =
 				newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
 
-			var fileName = primary_vehicle_only.Replace(".xml", "") + "_output.xml";
+			Assert.NotNull(manufacturingStage);
+
 
+			var fileName = primary_vehicle_only.Replace(".xml", "") + "_output.xml";
+			deleteFile(fileName);
 			_kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(fileToSave:fileName).Object);
-			
 			manufacturingStage.SaveInputDataAsCommand.Execute(null);
+			Assert.True(checkFileExists(fileName));
+		}
 
+		[TestCase(primary_vehicle_only)]
+		[TestCase(consolidated_multiple_stages)]
+		[TestCase(consolidated_one_stage)]
+		public void SaveVehicleDataWithMissingFields(string fileName)
+		{
+			var newMultistageJobViewModel = loadFile(fileName);
+			var manstage = newMultistageJobViewModel.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+			Assert.NotNull(manstage);
 
-			checkFileExists(fileName);
-
+			var saveFileName = fileName.Replace(".xml", "") + "_output.xml";
+			deleteFile(saveFileName);
+			_kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(fileToSave: saveFileName).Object);
+			manstage.SaveInputDataAsCommand.Execute(null);
 
+			Assert.False(checkFileExists(saveFileName));
 
 		}
 
@@ -131,10 +114,12 @@ namespace Vecto3GUI2020Test
 			Assert.Null(vehicleViewModel_v2_8.ConsolidatedEntranceHeightInMm);
 
 			Assert.AreEqual(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled, false);
+			Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries);
 
 
-			Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries);
+			var vifInputData = vm.MultiStageJobViewModel as IMultistageVIFInputData;
 
+			Assert.Null(vifInputData.VehicleInputData.Components);
 		}
 
 
@@ -218,90 +203,10 @@ namespace Vecto3GUI2020Test
 
 		}
 
-		[TearDown]
-		public void TearDown()
-		{
-			_kernel.Dispose();
-			_kernel = null;
-		}
-
-
-		
-
 
 		#region Helper
-		public bool checkFileExists(string fileName)
-		{
-			var filePath = Path.GetFullPath(DirPath + fileName);
-			var exists = File.Exists(filePath);
-			if (!exists)
-			{
-				Console.WriteLine(filePath + @" not existing");
-			}
-
-			Assert.IsTrue(exists);
-			return exists;
-		}
-
-		public NewMultiStageJobViewModel loadFile(string fileName)
-		{
-			string filePath = "";
-			filePath = Path.GetFullPath(DirPath + fileName);
 
-			var dialogMock = new Mock<IDialogHelper>();
-			dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath);
-			dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath);
-
-			var newMultistageJobViewModel = new NewMultiStageJobViewModel(dialogMock.Object, xmlInputReader,
-				_kernel.Get<IMultiStageViewModelFactory>());
-			newMultistageJobViewModel.AddVifFile.Execute(null);
-
-			Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel);
-
-			var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
-			Assert.NotNull(manstageVehicleViewModel);
-
-			var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel;
-			Assert.NotNull(auxiliariesViewModel);
-
-
-
-
-			var airdragViewModel = (manstageVehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel;
-			Assert.NotNull(airdragViewModel);
-
-			Assert.AreEqual(filePath, newMultistageJobViewModel.VifPath);
-
-
-
-			return newMultistageJobViewModel;
-		}
-
-		private Mock<IDialogHelper> getMockDialogHelper(string fileToLoad = null, string fileToSave = null)
-		{
-			Mock<IDialogHelper> mockDialogHelper = null;
-			if (fileToLoad != null) {
-				var filePath = Path.GetFullPath(DirPath + fileToLoad);
-
-				Assert.NotNull(filePath);
-				mockDialogHelper = new Mock<IDialogHelper>();
-				mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath);
-				mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath);
-			}
-
-			if (fileToSave != null) {
-				var filePath = Path.GetFullPath(DirPath + fileToSave);
-				mockDialogHelper = mockDialogHelper ?? new Mock<IDialogHelper>();
-				mockDialogHelper.Setup(dialogHelper =>
-					dialogHelper.SaveToXMLDialog(It.IsAny<string>())).Returns(filePath);
-				mockDialogHelper.Setup(dialogHelper =>
-					dialogHelper.SaveToXMLDialog(null)).Returns(filePath);
-			}
-
-
-			return mockDialogHelper;
-		}
-#endregion
+		#endregion
 	}
 
 }
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs
new file mode 100644
index 0000000000000000000000000000000000000000..fb464a44d12f8cb852cc58cb07ad8bb668327bbe
--- /dev/null
+++ b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using NUnit.Framework;
+using VECTO3GUI2020.Helper;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+
+namespace Vecto3GUI2020Test.ViewModelTests
+{
+    public class VIFTests : ViewModelTestBase
+    {
+
+
+        [Test]
+		public void loadPrimaryVehicleOnlyAndCreateNewVIF()
+		{
+			var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel;
+
+			var stage = multistagevm.ManufacturingStageViewModel.StageCount;
+			Assert.AreEqual(1, stage);
+
+			//Set Necessary Fields
+			var vehicle =
+				multistagevm.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			vehicle.ManufacturerAddress = "Address";
+			vehicle.Manufacturer = "Manufacturer";
+			vehicle.VIN = "VIN12345678";
+
+			var outputFile = primary_vehicle_only.Replace(".xml", "_vif_output_mandatory_fields.xml");
+
+			deleteFile(outputFile);
+			getMockDialogHelper(null, fileToSave: primary_vehicle_only.Replace(".xml", "_vif_output.xml"));
+			_kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(null, outputFile).Object);
+
+			MultiStageJobViewModel_v0_1.SaveVif(multistagevm, outputFile);
+			
+			Assert.IsTrue(checkFileExists(outputFile));
+
+		}
+
+
+
+    }
+}
diff --git a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4e20d27fe4ce296484f13292b6a7164fa9cba682
--- /dev/null
+++ b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs
@@ -0,0 +1,132 @@
+using System;
+using System.IO;
+using Moq;
+using Ninject;
+using NUnit.Framework;
+using TUGraz.VectoCore;
+using TUGraz.VectoCore.InputData.FileIO.XML;
+using VECTO3GUI2020.Helper;
+using VECTO3GUI2020.Ninject;
+using VECTO3GUI2020.Ninject.Vehicle;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
+
+namespace Vecto3GUI2020Test
+{
+	public class ViewModelTestBase
+	{
+		protected const string DirPath = @"Testdata\";
+		protected const string consolidated_multiple_stages = "vecto_multistage_consolidated_multiple_stages.xml";
+
+		protected const string consolidated_multiple_stages_airdrag =
+			"vecto_multistage_consolidated_multiple_stages_airdrag.xml";
+
+		protected const string consolidated_one_stage = "vecto_multistage_consolidated_one_stage.xml";
+		protected const string primary_vehicle_only = "vecto_multistage_primary_vehicle_only.xml";
+
+		protected IXMLInputDataReader xmlInputReader;
+		protected IKernel _kernel;
+
+		[SetUp]
+		public void OneTimeSetUp()
+		{
+			_kernel = new StandardKernel(
+				new VectoNinjectModule(),
+				new JobEditModule(),
+				new ComponentModule(),
+				new DocumentModule(),
+				new XMLWriterFactoryModule(),
+				new FactoryModule(),
+				new MultistageModule()
+			);
+			xmlInputReader = _kernel.Get<IXMLInputDataReader>();
+			
+		}
+
+		[TearDown]
+		public void TearDown()
+		{
+			_kernel.Dispose();
+			_kernel = null;
+		}
+
+		public bool checkFileExists(string fileName)
+		{
+			var filePath = Path.GetFullPath(DirPath + fileName);
+			var exists = File.Exists(filePath);
+			if (exists)
+			{
+				Console.WriteLine(filePath + @" exists");
+			} else {
+				Console.WriteLine(filePath + @" not existing");
+			}
+
+			return exists;
+		}
+
+		public void deleteFile(string fileName)
+		{
+			var filePath = Path.GetFullPath(DirPath + fileName);
+			File.Delete(fileName);
+		}
+
+		public NewMultiStageJobViewModel loadFile(string fileName)
+		{
+			string filePath = "";
+			filePath = Path.GetFullPath(DirPath + fileName);
+
+			var dialogMock = new Mock<IDialogHelper>();
+			dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath);
+			dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath);
+
+			var newMultistageJobViewModel = new NewMultiStageJobViewModel(dialogMock.Object, xmlInputReader,
+				_kernel.Get<IMultiStageViewModelFactory>());
+			newMultistageJobViewModel.AddVifFile.Execute(null);
+
+			Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel);
+
+			var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			Assert.NotNull(manstageVehicleViewModel);
+
+			var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel;
+			Assert.NotNull(auxiliariesViewModel);
+
+
+
+
+			var airdragViewModel = (manstageVehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel;
+			Assert.NotNull(airdragViewModel);
+
+			Assert.AreEqual(filePath, newMultistageJobViewModel.VifPath);
+
+
+
+			return newMultistageJobViewModel;
+		}
+
+		protected Mock<IDialogHelper> getMockDialogHelper(string fileToLoad = null, string fileToSave = null)
+		{
+			Mock<IDialogHelper> mockDialogHelper = null;
+			if (fileToLoad != null) {
+				var filePath = Path.GetFullPath(DirPath + fileToLoad);
+
+				Assert.NotNull(filePath);
+				mockDialogHelper = new Mock<IDialogHelper>();
+				mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath);
+				mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath);
+			}
+
+			if (fileToSave != null) {
+				var filePath = Path.GetFullPath(DirPath + fileToSave);
+				mockDialogHelper = mockDialogHelper ?? new Mock<IDialogHelper>();
+				mockDialogHelper.Setup(dialogHelper =>
+					dialogHelper.SaveToXMLDialog(It.IsAny<string>())).Returns(filePath);
+				mockDialogHelper.Setup(dialogHelper =>
+					dialogHelper.SaveToXMLDialog(null)).Returns(filePath);
+			}
+
+
+			return mockDialogHelper;
+		}
+	}
+}
\ No newline at end of file