diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
index 40816aa329d0145744b2d1c92192930510d0699a..0ca13d0fff5b32f79cae6c63768a00c9e86a4525 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
@@ -1063,19 +1063,19 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 				switch (propertyName) {
 					case nameof(Manufacturer):
 						if (string.IsNullOrWhiteSpace(Manufacturer)) {
-							result = "Manufacturer cannot be empty";
+							result = "Manufacturer must not be empty";
 						}
 						
 						break;
 					case nameof(ManufacturerAddress):
 						if (string.IsNullOrWhiteSpace(ManufacturerAddress))
 						{
-							result = "Manufacturer address cannot be empty";
+							result = "Manufacturer address must not be empty";
 						}
 						break;
 					case nameof(VIN):
 						if (string.IsNullOrEmpty(VIN)) {
-							result = "VIN cannot be empty";
+							result = "VIN must not be empty";
 						}
 						break;
 					case nameof(AirdragModifiedEnum):
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs
index 997d39e5c4a2dfdc9b70c04b61df0dcbb300499e..1a6f3eae235a8b2be9cd23c79887dc5a4be87e5c 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs
@@ -515,12 +515,30 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 							break;
 					}
 
+					if (result == null)
+					{
+						if (Errors.ContainsKey(columnName))
+							Errors.Remove(columnName);
+					}
+					else
+					{
+						Errors[columnName] = result;
+					}
+
+
 
 					return result;
 				}
 			}
 
-			string IDataErrorInfo.Error => throw new NotImplementedException();
+			private Dictionary<string, string> Errors { get; } = new Dictionary<string, string>();
+
+			public bool HasErrors
+			{
+				get => !Errors.IsNullOrEmpty();
+
+			}
+			string IDataErrorInfo.Error => String.Join(",", Errors.Values);
 
 			#endregion
 		}
@@ -797,12 +815,41 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			}
 		}
 
-		public string Error { get => String.Join(",", Errors.Values); }
+		public string Error
+		{
+			get
+			{
+				string result = string.Empty;
+				var auxVmError = String.Join(",", Errors.Values);
+				result = auxVmError;
+				if (HeatPumpConfigurationsPassenger != null) {
+					foreach (var heatPumpConfiguration in HeatPumpConfigurationsPassenger) {
+						if (heatPumpConfiguration.HasErrors) {
+							result += "," + ((IDataErrorInfo)heatPumpConfiguration).Error;
+						}
+					}
+				}
+
+				return result;
+			}
+		}
+
 		public bool HasErrors
 		{
 			get
 			{
-				return !Error.IsNullOrEmpty();
+				var auxVmHasErrors = !Error.IsNullOrEmpty();
+				var passengerHeatPumpsHaveError = false;
+				if (HeatPumpConfigurationsPassenger != null) {
+					foreach (var heatPump in HeatPumpConfigurationsPassenger) {
+						if (heatPump.HasErrors) {
+							passengerHeatPumpsHaveError = true;
+							break;
+						}
+					}
+				}
+
+				return auxVmHasErrors || passengerHeatPumpsHaveError;
 			}
 		}
 
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
index cc970c9f52aa485803ebf28a38a13349894623d4..2c30de164145f6de2d6b15e5c7c82e0a582a53ad 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
@@ -1,6 +1,7 @@
 using System;
 using System.CodeDom;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
@@ -10,6 +11,7 @@ using System.Windows.Input;
 using System.Windows.Navigation;
 using System.Xml;
 using System.Xml.Linq;
+using Castle.Core.Internal;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore.InputData.FileIO.JSON;
@@ -104,11 +106,25 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 				return _saveVifCommand ?? new RelayCommand(() => {
 					if (_manufacturingStageViewModel.Vehicle is IMultistageVehicleViewModel vehicleViewModel)
 					{
-						if (vehicleViewModel.HasErrors)
-						{
-							_dialogHelper.Value.ShowMessageBox("Vehicle\n" + string.Join("\n", vehicleViewModel.Errors.Values) 
-																			+ (vehicleViewModel.MultistageAuxiliariesViewModel.HasErrors ? ("\nAuxiliaries\n" + string.Join("\n", vehicleViewModel.MultistageAuxiliariesViewModel.Errors.Values)) : ""),
-								"Error");
+						if (vehicleViewModel.HasErrors) {
+							var errorMessage = "Vehicle\n";
+							var vehicleErrorInfo = vehicleViewModel as IDataErrorInfo;
+							errorMessage += vehicleErrorInfo.Error.Replace(",", "\n");
+
+							var auxiliariesErrorInfo =
+								vehicleViewModel.MultistageAuxiliariesViewModel as IDataErrorInfo;
+							if (!auxiliariesErrorInfo.Error.IsNullOrEmpty()) {
+								errorMessage += "Auxiliaries\n";
+								errorMessage += auxiliariesErrorInfo.Error.Replace(",", "\n");
+							}
+
+
+							//_dialogHelper.Value.ShowMessageBox("Vehicle\n" + string.Join("\n", vehicleViewModel.Errors.Values) 
+							//												+ (vehicleViewModel.MultistageAuxiliariesViewModel.HasErrors ? ("\nAuxiliaries\n" + string.Join("\n", vehicleViewModel.MultistageAuxiliariesViewModel.Errors.Values)) : ""),
+								//"Error");
+
+							_dialogHelper.Value.ShowMessageBox(errorMessage, "Error", MessageBoxButton.OK,
+									MessageBoxImage.Error);
 							return;
 						}
 					} else {
@@ -203,9 +219,25 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			if(_manufacturingStageViewModel.Vehicle is IMultistageVehicleViewModel vehicleViewModel)
 			{
 				if (vehicleViewModel.HasErrors) {
-					_dialogHelper.Value.ShowMessageBox("Vehicle\n" + string.Join("\n", vehicleViewModel.Errors.Values)
-																	+ (vehicleViewModel.MultistageAuxiliariesViewModel.HasErrors ? ("\nAuxiliaries\n" + string.Join("\n", vehicleViewModel.MultistageAuxiliariesViewModel.Errors.Values)) : ""),
-						"Error");
+					var errorMessage = "Vehicle\n";
+					var vehicleErrorInfo = vehicleViewModel as IDataErrorInfo;
+					errorMessage += vehicleErrorInfo.Error.Replace(",", "\n");
+
+					var auxiliariesErrorInfo =
+						vehicleViewModel.MultistageAuxiliariesViewModel as IDataErrorInfo;
+					if (!auxiliariesErrorInfo.Error.IsNullOrEmpty())
+					{
+						errorMessage += "\n Auxiliaries \n";
+						errorMessage += auxiliariesErrorInfo.Error.Replace(",", "\n");
+					}
+
+					_dialogHelper.Value.ShowMessageBox(errorMessage, "Error", MessageBoxButton.OK,
+						MessageBoxImage.Error);
+					return;
+
+					//_dialogHelper.Value.ShowMessageBox("Vehicle\n" + string.Join("\n", vehicleViewModel.Errors.Values)
+					//												+ (vehicleViewModel.MultistageAuxiliariesViewModel.HasErrors ? ("\nAuxiliaries\n" + string.Join("\n", vehicleViewModel.MultistageAuxiliariesViewModel.Errors.Values)) : ""),
+					//	"Error");
 					return;
 				}
 			}