From 15b7c9bb990392e2d48da7dee785d8261c1e26b5 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Thu, 16 Apr 2020 15:39:37 +0200
Subject: [PATCH] work on manufacturer report completed bus

---
 .../IPneumaticUserInputsConfig.cs             |   5 +
 .../VectoCommon/InputData/DigestData.cs       |  12 +
 .../InputData/IInputDataProvider.cs           |   8 +-
 .../VectoCommon/Models/AxleConfiguration.cs   |   5 +
 .../VectoCommon/Models/RegistrationClass.cs   |   8 +-
 .../XMLDeclarationInputDataProvider.cs        |  17 +-
 ...larationDataAdapterCompletedBusSpecific.cs |   8 +-
 .../SimulationComponent/Data/VehicleData.cs   |   5 +-
 .../OutputData/XML/XMLCustomerReport.cs       |  11 +-
 .../XMLDeclarationReportCompletedVehicle.cs   |   2 +-
 .../XML/XMLManufacturerReportCompletedBus.cs  | 305 ++++++++++--------
 .../OutputData/XML/XMLPrimaryVehicleReport.cs |   6 +-
 .../VectoDeclarationDefinitions.2.6_Buses.xsd |  32 +-
 .../XSD/VectoOutputManufacturer.0.8.xsd       | 101 ++++++
 .../Resources/XSD/VectoOutputPrimaryBus.xsd   |   3 +-
 VectoCore/VectoCore/Utils/VectoVersionCore.cs |   2 +-
 VectoCore/VectoCore/Utils/XMLHelper.cs        |   9 +
 ...mary_heavyBus group42_SmartPS.RSLT_PIF.xml |  34 +-
 .../XMLPrimaryVehicleReportBusReaderTest.cs   |   4 +-
 19 files changed, 401 insertions(+), 176 deletions(-)

diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
index 66508b4f12..802d2722a1 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
@@ -64,5 +64,10 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 					return ConsumerTechnology.Unknown.ToString();
 			}
 		}
+
+		public static string ToXMLFormat(this ConsumerTechnology technology)
+		{
+			return technology.GetLabel().ToLowerInvariant();
+		}
 	}
 }
diff --git a/VectoCommon/VectoCommon/InputData/DigestData.cs b/VectoCommon/VectoCommon/InputData/DigestData.cs
index 4de3812589..d7892f302d 100644
--- a/VectoCommon/VectoCommon/InputData/DigestData.cs
+++ b/VectoCommon/VectoCommon/InputData/DigestData.cs
@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using System.Xml;
 using System.Xml.Linq;
 using System.Xml.XPath;
@@ -76,5 +77,16 @@ namespace TUGraz.VectoCommon.InputData {
 		public string[] CanonicalizationMethods { get; }
 		public string DigestMethod { get; }
 
+		public XElement ToXML(XNamespace di)
+		{
+			return new XElement(di + "Reference",
+				new XAttribute("URI", Reference),
+				new XElement(di + "Transforms", 
+				CanonicalizationMethods.Select(x => new XElement(di + "Transform", new XAttribute("Algorithm", x)))
+				),
+				new XElement(di + "DigestMethod", new XAttribute("Algorithm",  DigestMethod)),
+				new XElement(di + "DigestValue", DigestValue)
+				);
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
index 7533af593c..93ecf752d9 100644
--- a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
+++ b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
@@ -62,15 +62,19 @@ namespace TUGraz.VectoCommon.InputData
 	{
 		IVehicleDeclarationInputData Vehicle { get; }
 
-		DigestData ResultDataHash { get; }
+		DigestData ManufacturerRecordHash { get; }
+
+		DigestData PrimaryVehicleInputDataHash { get; }
 
 		IResultsInputData ResultsInputData { get; }
 
 		IApplicationInformation ApplicationInformation { get; }
 
-		DigestData ManufacturerHash { get; }
+		//DigestData ManufacturerHash { get; }
 
 		IResult GetResult(VehicleClass vehicleClass, MissionType mission, string fuelMode, Kilogram payload);
+
+		XElement XMLHash { get; }
 	}
 
 	public interface ISingleBusInputDataProvider : IDeclarationInputDataProvider
diff --git a/VectoCommon/VectoCommon/Models/AxleConfiguration.cs b/VectoCommon/VectoCommon/Models/AxleConfiguration.cs
index 32a2f4c6a2..4de78fb9e5 100644
--- a/VectoCommon/VectoCommon/Models/AxleConfiguration.cs
+++ b/VectoCommon/VectoCommon/Models/AxleConfiguration.cs
@@ -84,6 +84,11 @@ namespace TUGraz.VectoCommon.Models
 			return self.ToString().Replace(Prefix, "");
 		}
 
+		public static string ToXMLFormat(this AxleConfiguration self)
+		{
+			return self.GetName();
+		}
+
 		public static AxleConfiguration Parse(string typeString)
 		{
 			return (Prefix + typeString).ParseEnum<AxleConfiguration>();
diff --git a/VectoCommon/VectoCommon/Models/RegistrationClass.cs b/VectoCommon/VectoCommon/Models/RegistrationClass.cs
index 7953b0ad60..518ecd1294 100644
--- a/VectoCommon/VectoCommon/Models/RegistrationClass.cs
+++ b/VectoCommon/VectoCommon/Models/RegistrationClass.cs
@@ -8,6 +8,7 @@ namespace TUGraz.VectoCommon.Models
 {
 	public enum RegistrationClass
 	{
+		unknown,
 		I,
 		I_II,
 		II,
@@ -15,7 +16,7 @@ namespace TUGraz.VectoCommon.Models
 		III,
 		A,
 		B,
-		unknown
+		
 	}
 	
 	public static class RegistrationClassHelper
@@ -32,6 +33,11 @@ namespace TUGraz.VectoCommon.Models
 			}
 		}
 
+		public static string ToXMLFormat(this RegistrationClass self)
+		{
+			return self.GetLabel();
+		}
+
 		public static RegistrationClass[] Parse(string registrationClasses)
 		{
 			var classes = registrationClasses.Split('/');
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs
index b9282412d5..8c91f030a6 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs
@@ -135,6 +135,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 		{
 			Document = xmlDoc;
 			SourceType = DataSourceType.XMLFile;
+
+			var h = VectoHash.Load(xmlDoc);
+			XMLHash = h.ComputeXmlHash();
 		}
 
 
@@ -145,19 +148,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 			get { return _vehicle ?? (_vehicle = Reader.JobData.Vehicle); }
 		}
 
-		public DigestData ResultDataHash
+		public DigestData PrimaryVehicleInputDataHash
 		{
-			get { return Reader.GetDigestData(GetNode(XMLNames.Tag_ResultDataSignatureNode)); }
+			get { return Reader.GetDigestData(GetNode("InputDataSignature")); }
 		}
 
-		public IApplicationInformation ApplicationInformation
+		public DigestData ManufacturerRecordHash
 		{
-			get { return _applicationInformation ?? (_applicationInformation = Reader.ApplicationInformation); }
+			get { return Reader.GetDigestData(GetNode("ManufacturerRecordSignature")); }
 		}
 
-		public DigestData ManufacturerHash
+		public IApplicationInformation ApplicationInformation
 		{
-			get { return Reader.GetDigestData(Document.LastChild.LastChild); }
+			get { return _applicationInformation ?? (_applicationInformation = Reader.ApplicationInformation); }
 		}
 
 		public IResult GetResult(VehicleClass vehicleClass, MissionType mission, string fuelMode, Kilogram payload)
@@ -168,6 +171,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 					x.SimulationParameter.FuelMode.Equals(fuelMode, StringComparison.InvariantCultureIgnoreCase));
 		}
 
+		public XElement XMLHash { get; }
+
 		public IResultsInputData ResultsInputData
 		{
 			get { return _resultsInputData ?? (_resultsInputData = Reader.ResultsInputData); }
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
index 8cb3dc6d19..aba5ffaa7c 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
@@ -30,7 +30,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				completedVehicle.NumberOfPassengersLowerDeck + completedVehicle.NumberOfPassengersUpperDeck, loading.Key);
 
 			var vehicleData = base.CreateVehicleData(primaryVehicle, mission, loading);
-
+			vehicleData.InputData = completedVehicle;
 			vehicleData.VIN = completedVehicle.VIN;
 			vehicleData.LegislativeClass = completedVehicle.LegislativeClass;
 			vehicleData.VehicleCategory = VehicleCategory.HeavyBusCompletedVehicle;
@@ -43,7 +43,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			vehicleData.PassengerCount = passengers;
 			vehicleData.GrossVehicleMass = completedVehicle.GrossVehicleMassRating;
 			vehicleData.DigestValueInput = completedVehicle.DigestValue?.DigestValue ?? "";
-			
+
+			vehicleData.RegisteredClass = completedVehicle.RegisteredClass;
+
+			vehicleData.VehicleCode = completedVehicle.VehicleCode;
+
 			return vehicleData;
 		}
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
index dc02311249..70b76855ed 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
@@ -251,8 +251,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		[JsonIgnore]
 		public IVehicleDeclarationInputData InputData { get; internal set; }
 
+		public RegistrationClass RegisteredClass { get; internal set; }
+		public VehicleCode VehicleCode { get; internal  set; }
 
-//		#region "Bus Parameters"
+
+		//		#region "Bus Parameters"
 //		public double PassengerCount { get; internal set; }
 
 //		public FloorType FloorType { get; internal set; }
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
index d6905a4914..7b1b08743a 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
@@ -113,7 +113,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 					);
 			}
 			InputDataIntegrity = new XElement(tns + XMLNames.Report_InputDataSignature,
-				modelData.InputDataHash == null ? CreateDummySig() : new XElement(modelData.InputDataHash));
+				modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash));
 		}
 
 		private object[] ExemptedData(VectoRunData modelData)
@@ -162,14 +162,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		}
 
-		private XElement CreateDummySig()
-		{
-			return new XElement(di + XMLNames.DI_Signature_Reference,
-				new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod,
-					new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "null")),
-				new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, "NOT AVAILABLE")
-				);
-		}
+		
 
 		public virtual void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
 		{
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
index 5c906d13f3..8dfefbbab4 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
@@ -18,7 +18,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		protected override void InstantiateReports(VectoRunData modelData)
 		{
 			ManufacturerRpt = new XMLManufacturerReportCompletedBus() {
-				PrimaryVehicle = PrimaryResults.Vehicle
+				PrimaryVehicleRecordFile = PrimaryResults
 			};
 			CustomerRpt = new XMLCustomerReportCompletedBus();
 		}
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs
index 741060ee39..e690857fe3 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Xml.Linq;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
@@ -17,39 +18,68 @@ namespace TUGraz.VectoCore.OutputData.XML {
 	public class XMLManufacturerReportCompletedBus : AbstractXMLManufacturerReport
 	{
 
-		public IVehicleDeclarationInputData PrimaryVehicle { get; set; }
+		public IPrimaryVehicleInformationInputDataProvider PrimaryVehicleRecordFile { get; set; }
 
+		public IVehicleDeclarationInputData PrimaryVehicle { get { return PrimaryVehicleRecordFile.Vehicle; } }
+
+	
 
 		#region Overrides of AbstractXMLManufacturerReport
 
 		public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
 		{
 			VehiclePart.Add(
-				new XAttribute(xsi + "type", "VehiclePrimaryBusType"),
-				new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName),
-				new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
-				new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress),
-				new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
-				new XElement(
-					tns + XMLNames.Vehicle_GrossVehicleMass,
-					XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_t, 1)),
+				new XAttribute(xsi + "type", "VehicleCompletedBusType"),
+				GetPrimaryVehicleInformation(),
 				new XElement(
-					tns + XMLNames.Vehicle_CurbMassChassis, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)),
-				new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle),
-				new XElement(tns + XMLNames.Vehicle_HybridElectricHDV, modelData.VehicleData.HybridElectricHDV),
-				new XElement(tns + XMLNames.Vehicle_DualFuelVehicle, modelData.VehicleData.DualFuelVehicle),
-				new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()),
-				new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, modelData.VehicleData.VehicleClass.GetClassNumber()),
-
-				GetADAS(modelData.VehicleData.ADAS),
-				GetTorqueLimits(modelData.EngineData),
-				VehicleComponents(modelData, fuelModes)
-
+					tns + "CompletedVehicle",
+					new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName),
+					new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
+					new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress),
+					new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
+					new XElement(tns + XMLNames.Vehicle_VehicleCategory, modelData.VehicleData.VehicleCategory.ToXMLFormat()),
+					new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, modelData.VehicleData.VehicleClass.GetClassNumber()),
+					new XElement(tns + XMLNames.Vehicle_RegisteredClass, modelData.VehicleData.RegisteredClass.ToXMLFormat()),
+					new XElement(tns + XMLNames.Vehicle_VehicleCode, modelData.VehicleData.VehicleCode.ToXMLFormat()),
+					new XElement(tns + XMLNames.Vehicle_CurbMassChassis, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)),
+					new XElement(tns + XMLNames.TPMLM,
+								XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_t, 1)),
+					new XElement(tns + XMLNames.Vehicle_VocationalVehicle, modelData.VehicleData.ZeroEmissionVehicle),
+					new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle),
+					new XElement(tns + XMLNames.Vehicle_HybridElectricHDV, modelData.VehicleData.HybridElectricHDV),
+					new XElement(tns + XMLNames.Vehicle_DualFuelVehicle, modelData.VehicleData.DualFuelVehicle),
+					new XElement(tns + XMLNames.Vehicle_SleeperCab, modelData.VehicleData.DualFuelVehicle),
+					
+					new XElement(tns + "RegisteredPassengers",
+						new XElement(tns + XMLNames.Bus_LowerDeck, modelData.VehicleData.InputData.NumberOfPassengersLowerDeck),
+						new XElement(tns + XMLNames.Bus_UpperDeck, modelData.VehicleData.InputData.NumberOfPassengersUpperDeck)
+					),
+					new XElement(tns +XMLNames.Bus_LowEntry, modelData.VehicleData.InputData.FloorType == FloorType.LowFloor),
+					new XElement(tns + XMLNames.Bus_HeighIntegratedBody, modelData.VehicleData.InputData.Height.ToXMLFormat(3)),
+					new XElement(tns + XMLNames.Bus_VehicleLength, modelData.VehicleData.InputData.Length.ToXMLFormat(3)),
+					new XElement(tns + XMLNames.Bus_VehicleWidth, modelData.VehicleData.InputData.Width.ToXMLFormat(3)),
+					new XElement(tns + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, modelData.VehicleData.InputData.DoorDriveTechnology.ToXMLFormat()),
+					
+					VehicleComponents(modelData, fuelModes)
+				)
 			);
 
 			InputDataIntegrity = GetInputDataSignature(modelData);
 		}
 
+		private XElement GetPrimaryVehicleInformation()
+		{
+			return new XElement(
+				tns + "PrimaryVehicle",
+				new XElement(tns + XMLNames.Component_Manufacturer, PrimaryVehicle.Manufacturer),
+				new XElement(tns + XMLNames.Component_ManufacturerAddress, PrimaryVehicle.ManufacturerAddress),
+				new XElement(tns + XMLNames.Vehicle_AxleConfiguration, PrimaryVehicle.AxleConfiguration.ToXMLFormat()),
+				new XElement(tns + XMLNames.Report_InputDataSignature, PrimaryVehicleRecordFile.PrimaryVehicleInputDataHash.ToXML(di)),
+				new XElement(tns + "ManufacturerRecordSignature", PrimaryVehicleRecordFile.ManufacturerRecordHash.ToXML(di)),
+				new XElement(tns + "VehicleInformationSignature", PrimaryVehicleRecordFile.XMLHash)
+			);
+		}
+
 		public virtual void WriteResult(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult)
 		{
 			
@@ -269,106 +299,100 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		{
 			return new XElement(
 				tns + XMLNames.Vehicle_Components,
-				new XAttribute(xsi + "type", "ComponentsPrimaryBusType"),
-				GetEngineDescription(modelData.EngineData, fuelModes),
-				GetGearboxDescription(modelData.GearboxData),
-				GetTorqueConverterDescription(modelData.GearboxData.TorqueConverterData),
-				GetRetarderDescription(modelData.Retarder),
-				GetAngledriveDescription(modelData.AngledriveData),
-				GetAxlegearDescription(modelData.AxleGearData),
-				GetAxleWheelsDescription(modelData.VehicleData),
+				new XAttribute(xsi + "type", "ComponentsCompletedBusType"),
+				GetAirDragDescription(modelData.AirdragData),
 				GetAuxiliariesDescription(modelData)
 			);
 		}
 
-		protected override XElement GetEngineDescription(CombustionEngineData engineData, List<List<FuelData.Entry>> fuelModes)
-		{
-			return new XElement(
-				tns + XMLNames.Component_Engine,
-				GetCommonDescription(PrimaryVehicle.Components.EngineInputData),
-				new XElement(
-					tns + XMLNames.Engine_RatedPower, XMLHelper.ValueAsUnit(engineData.RatedPowerDeclared, XMLNames.Unit_kW)),
-				new XElement(tns + XMLNames.Engine_IdlingSpeed, XMLHelper.ValueAsUnit(engineData.IdleSpeed, XMLNames.Unit_RPM)),
-				new XElement(
-					tns + XMLNames.Engine_RatedSpeed, XMLHelper.ValueAsUnit(engineData.RatedSpeedDeclared, XMLNames.Unit_RPM)),
-				new XElement(
-					tns + XMLNames.Engine_Displacement, XMLHelper.ValueAsUnit(engineData.Displacement, XMLNames.Unit_ltr, 1)),
-				new XElement(tns + XMLNames.Engine_WHRType, engineData.WHRType.ToXMLFormat()),
-				PrimaryVehicle.Components.EngineInputData.EngineModes.Select(
-					x => new XElement(
-						tns + XMLNames.Report_Engine_FuelMode,
-						x.Fuels.Select(f => new XElement(tns + XMLNames.Engine_FuelType, f.FuelType.ToXMLFormat()))))
-			);
-		}
-
-		protected override XElement GetGearboxDescription(GearboxData gearboxData)
-		{
-			return new XElement(
-				tns + XMLNames.Component_Gearbox,
-				GetCommonDescription(PrimaryVehicle.Components.GearboxInputData),
-				new XElement(tns + XMLNames.Gearbox_TransmissionType, gearboxData.Type.ToXMLFormat()),
-				new XElement(tns + XMLNames.Report_GetGearbox_GearsCount, gearboxData.Gears.Count),
-				new XElement(
-					tns + XMLNames.Report_Gearbox_TransmissionRatioFinalGear,
-					gearboxData.Gears[gearboxData.Gears.Keys.Max()].Ratio.ToXMLFormat(3))
-			);
-		}
-
-		protected override XElement GetGearboxDescription(GearboxData gearboxData, AxleGearData axlegearData)
-		{
-			return new XElement(
-				tns + XMLNames.Component_Gearbox,
-				GetCommonDescription(PrimaryVehicle.Components.GearboxInputData),
-				new XElement(tns + XMLNames.Gearbox_TransmissionType, gearboxData.Type.ToXMLFormat()),
-				new XElement(tns + XMLNames.Report_GetGearbox_GearsCount, gearboxData.Gears.Count),
-				new XElement(tns + XMLNames.Gearbox_AxlegearRatio, axlegearData.AxleGear.Ratio.ToXMLFormat(3)),
-				new XElement(
-					tns + XMLNames.Report_Gearbox_TransmissionRatioFinalGear,
-					gearboxData.Gears[gearboxData.Gears.Keys.Max()].Ratio.ToXMLFormat(3))
-			);
-		}
-
-
-		protected override XElement GetTorqueConverterDescription(TorqueConverterData torqueConverterData)
-		{
-			if (torqueConverterData == null) {
-				return null;
-			}
-
-			return new XElement(
-				tns + XMLNames.Component_TorqueConverter,
-				GetCommonDescription(PrimaryVehicle.Components.TorqueConverterInputData));
-		}
-
-		protected override XElement GetRetarderDescription(RetarderData retarder)
-		{
-			return new XElement(
-				tns + XMLNames.Component_Retarder,
-				new XElement(tns + XMLNames.Vehicle_RetarderType, retarder.Type.ToXMLFormat())
-				//retarder.Type.IsDedicatedComponent() ? GetCommonDescription(PrimaryVehicle.Components.RetarderInputData) : null
-				);
-		}
-
-		protected override XElement GetAngledriveDescription(AngledriveData angledriveData)
-		{
-			if (angledriveData == null) {
-				return null;
-			}
-
-			return new XElement(
-				tns + XMLNames.Component_Angledrive,
-				GetCommonDescription(PrimaryVehicle.Components.AngledriveInputData),
-				new XElement(tns + XMLNames.AngleDrive_Ratio, angledriveData.Angledrive.Ratio.ToXMLFormat(3)));
-		}
-
-		protected override XElement GetAxlegearDescription(AxleGearData axleGearData)
-		{
-			return new XElement(
-				tns + XMLNames.Component_Axlegear,
-				GetCommonDescription(PrimaryVehicle.Components.AxleGearInputData),
-				new XElement(tns + XMLNames.Axlegear_LineType, axleGearData.LineType.ToXMLFormat()),
-				new XElement(tns + XMLNames.Axlegear_Ratio, axleGearData.AxleGear.Ratio.ToXMLFormat(3)));
-		}
+		//protected override XElement GetEngineDescription(CombustionEngineData engineData, List<List<FuelData.Entry>> fuelModes)
+		//{
+		//	return new XElement(
+		//		tns + XMLNames.Component_Engine,
+		//		GetCommonDescription(PrimaryVehicle.Components.EngineInputData),
+		//		new XElement(
+		//			tns + XMLNames.Engine_RatedPower, XMLHelper.ValueAsUnit(engineData.RatedPowerDeclared, XMLNames.Unit_kW)),
+		//		new XElement(tns + XMLNames.Engine_IdlingSpeed, XMLHelper.ValueAsUnit(engineData.IdleSpeed, XMLNames.Unit_RPM)),
+		//		new XElement(
+		//			tns + XMLNames.Engine_RatedSpeed, XMLHelper.ValueAsUnit(engineData.RatedSpeedDeclared, XMLNames.Unit_RPM)),
+		//		new XElement(
+		//			tns + XMLNames.Engine_Displacement, XMLHelper.ValueAsUnit(engineData.Displacement, XMLNames.Unit_ltr, 1)),
+		//		new XElement(tns + XMLNames.Engine_WHRType, engineData.WHRType.ToXMLFormat()),
+		//		PrimaryVehicle.Components.EngineInputData.EngineModes.Select(
+		//			x => new XElement(
+		//				tns + XMLNames.Report_Engine_FuelMode,
+		//				x.Fuels.Select(f => new XElement(tns + XMLNames.Engine_FuelType, f.FuelType.ToXMLFormat()))))
+		//	);
+		//}
+
+		//protected override XElement GetGearboxDescription(GearboxData gearboxData)
+		//{
+		//	return new XElement(
+		//		tns + XMLNames.Component_Gearbox,
+		//		GetCommonDescription(PrimaryVehicle.Components.GearboxInputData),
+		//		new XElement(tns + XMLNames.Gearbox_TransmissionType, gearboxData.Type.ToXMLFormat()),
+		//		new XElement(tns + XMLNames.Report_GetGearbox_GearsCount, gearboxData.Gears.Count),
+		//		new XElement(
+		//			tns + XMLNames.Report_Gearbox_TransmissionRatioFinalGear,
+		//			gearboxData.Gears[gearboxData.Gears.Keys.Max()].Ratio.ToXMLFormat(3))
+		//	);
+		//}
+
+		//protected override XElement GetGearboxDescription(GearboxData gearboxData, AxleGearData axlegearData)
+		//{
+		//	return new XElement(
+		//		tns + XMLNames.Component_Gearbox,
+		//		GetCommonDescription(PrimaryVehicle.Components.GearboxInputData),
+		//		new XElement(tns + XMLNames.Gearbox_TransmissionType, gearboxData.Type.ToXMLFormat()),
+		//		new XElement(tns + XMLNames.Report_GetGearbox_GearsCount, gearboxData.Gears.Count),
+		//		new XElement(tns + XMLNames.Gearbox_AxlegearRatio, axlegearData.AxleGear.Ratio.ToXMLFormat(3)),
+		//		new XElement(
+		//			tns + XMLNames.Report_Gearbox_TransmissionRatioFinalGear,
+		//			gearboxData.Gears[gearboxData.Gears.Keys.Max()].Ratio.ToXMLFormat(3))
+		//	);
+		//}
+
+
+		//protected override XElement GetTorqueConverterDescription(TorqueConverterData torqueConverterData)
+		//{
+		//	if (torqueConverterData == null) {
+		//		return null;
+		//	}
+
+		//	return new XElement(
+		//		tns + XMLNames.Component_TorqueConverter,
+		//		GetCommonDescription(PrimaryVehicle.Components.TorqueConverterInputData));
+		//}
+
+		//protected override XElement GetRetarderDescription(RetarderData retarder)
+		//{
+		//	return new XElement(
+		//		tns + XMLNames.Component_Retarder,
+		//		new XElement(tns + XMLNames.Vehicle_RetarderType, retarder.Type.ToXMLFormat())
+		//		//retarder.Type.IsDedicatedComponent() ? GetCommonDescription(PrimaryVehicle.Components.RetarderInputData) : null
+		//		);
+		//}
+
+		//protected override XElement GetAngledriveDescription(AngledriveData angledriveData)
+		//{
+		//	if (angledriveData == null) {
+		//		return null;
+		//	}
+
+		//	return new XElement(
+		//		tns + XMLNames.Component_Angledrive,
+		//		GetCommonDescription(PrimaryVehicle.Components.AngledriveInputData),
+		//		new XElement(tns + XMLNames.AngleDrive_Ratio, angledriveData.Angledrive.Ratio.ToXMLFormat(3)));
+		//}
+
+		//protected override XElement GetAxlegearDescription(AxleGearData axleGearData)
+		//{
+		//	return new XElement(
+		//		tns + XMLNames.Component_Axlegear,
+		//		GetCommonDescription(PrimaryVehicle.Components.AxleGearInputData),
+		//		new XElement(tns + XMLNames.Axlegear_LineType, axleGearData.LineType.ToXMLFormat()),
+		//		new XElement(tns + XMLNames.Axlegear_Ratio, axleGearData.AxleGear.Ratio.ToXMLFormat(3)));
+		//}
 
 		protected override XElement GetAirDragDescription(AirdragData airdragData)
 		{
@@ -390,27 +414,40 @@ namespace TUGraz.VectoCore.OutputData.XML {
 			);
 		}
 
-
-		protected virtual object[] GetCommonDescription(IEngineDeclarationInputData data)
+		protected override XElement GetAuxiliariesDescription(VectoRunData modelData)
 		{
-			return new object[] {
-				new XElement(tns + XMLNames.Component_Model, data.Model),
-				new XElement(tns + XMLNames.Report_Component_CertificationNumber, data.CertificationNumber),
-				new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValue.DigestValue)
-			};
+			var busAuxiliaries = modelData.BusAuxiliaries;
+			var busAuxXML = busAuxiliaries.InputData.XMLSource;
+			var ns = XNamespace.Get(busAuxXML.FirstChild.SchemaInfo.SchemaType.QualifiedName.Namespace);
+			const string auxPrefix = "aux";
+			return new XElement(
+				tns + XMLNames.Component_Auxiliaries,
+				new XAttribute(XNamespace.Xmlns + auxPrefix, ns.NamespaceName),
+				new XAttribute(xsi + "type", string.Format("{0}:{1}", auxPrefix, busAuxXML.FirstChild.SchemaInfo.SchemaType.QualifiedName.Name)),
+				XElement.Parse(busAuxXML.InnerXml).Elements()
+			);
 		}
 
-		protected virtual object[] GetCommonDescription(IComponentInputData data)
-		{
-			return new object[] {
-				new XElement(tns + XMLNames.Component_Model, data.Model),
-				new XElement(tns + XMLNames.Report_Component_CertificationMethod, data.CertificationMethod.ToXMLFormat()),
-				data.CertificationMethod == CertificationMethod.StandardValues
-					? null
-					: new XElement(tns + XMLNames.Report_Component_CertificationNumber, data.CertificationNumber),
-				new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValue.DigestValue)
-			};
-		}
+		//protected virtual object[] GetCommonDescription(IEngineDeclarationInputData data)
+		//{
+		//	return new object[] {
+		//		new XElement(tns + XMLNames.Component_Model, data.Model),
+		//		new XElement(tns + XMLNames.Report_Component_CertificationNumber, data.CertificationNumber),
+		//		new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValue.DigestValue)
+		//	};
+		//}
+
+		//protected virtual object[] GetCommonDescription(IComponentInputData data)
+		//{
+		//	return new object[] {
+		//		new XElement(tns + XMLNames.Component_Model, data.Model),
+		//		new XElement(tns + XMLNames.Report_Component_CertificationMethod, data.CertificationMethod.ToXMLFormat()),
+		//		data.CertificationMethod == CertificationMethod.StandardValues
+		//			? null
+		//			: new XElement(tns + XMLNames.Report_Component_CertificationNumber, data.CertificationNumber),
+		//		new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValue.DigestValue)
+		//	};
+		//}
 		#endregion
 
 		public override void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs
index 4ee33626f1..08eb113541 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs
@@ -72,7 +72,8 @@ namespace TUGraz.VectoCore.OutputData.XML
 						RootNS + XMLNames.Report_DataWrap,
 						new XAttribute(xsi + "type", "PrimaryVehicleHeavyBusDataType"),
 						VehiclePart,
-						new XElement(tns + XMLNames.Report_ResultData_Signature, resultSignature),
+						InputDataIntegrity,
+						new XElement(tns + "ManufacturerRecordSignature", resultSignature),
 						results,
 						GetApplicationInfo())
 				)
@@ -127,6 +128,9 @@ namespace TUGraz.VectoCore.OutputData.XML
 				GetTorqueLimits(modelData),
 				VehicleComponents(modelData, fuelModes)
 			);
+
+			InputDataIntegrity = new XElement(tns + XMLNames.Report_InputDataSignature,
+											modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash));
 		}
 
 		private XElement GetADAS(VehicleData.ADASData adasData)
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
index 8901a27fc3..155b350e73 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
@@ -140,10 +140,34 @@
 						</xs:complexType>
 					</xs:element>
 					<xs:element name="LowEntry" type="xs:boolean"/>
-					<xs:element name="HeightIntegratedBody" type="v1.0:Double3"/>
-					<xs:element name="VehicleLength" type="v1.0:Double3"/>
-					<xs:element name="VehicleWidth" type="v1.0:Double3"/>
-					<xs:element name="EntranceHeight" type="v1.0:Double3"/>
+					<xs:element name="HeightIntegratedBody">
+						<xs:simpleType>
+							<xs:restriction base="v1.0:Double3">
+								<xs:minExclusive value="0.000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="VehicleLength">
+						<xs:simpleType>
+							<xs:restriction base="v1.0:Double3">
+								<xs:minExclusive value="0.000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="VehicleWidth">
+						<xs:simpleType>
+							<xs:restriction base="v1.0:Double3">
+								<xs:minExclusive value="0.000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="EntranceHeight">
+						<xs:simpleType>
+							<xs:restriction base="v1.0:Double3">
+								<xs:minExclusive value="0.000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
 					<xs:element name="DoorDriveTechnology" type="v2.6:DoorDriveTechnologyType"/>
 					<xs:element name="Components" type="v2.6:AbstractCompletedVehicleComponentsDeclarationType"/>
 				</xs:sequence>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
index a4fd13a5d9..b8cb60dccb 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
@@ -1205,4 +1205,105 @@
 			<xs:minLength value="1"/>
 		</xs:restriction>
 	</xs:simpleType>
+	<xs:complexType name="VehicleCompletedBusType">
+		<xs:complexContent>
+			<xs:extension base="AbstractVehicleType">
+				<xs:sequence>
+					<xs:element name="PrimaryVehicle" type="PrimaryVehicleType"/>
+					<xs:element name="CompletedVehicle">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="Model" type="vdecdef:ModelType"/>
+								<xs:element name="Manufacturer" type="vdecdef:ManufacturerType"/>
+								<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType"/>
+								<xs:element name="VIN" type="vdecdef:VINType"/>
+								<xs:element name="VehicleCategory" type="vdecdef:LegislativeClassDeclarationType"/>
+								<xs:element name="VehicleGroup" type="xs:string"/>
+								<xs:element name="RegisteredClass" type="xs:string"/>
+								<xs:element name="VehicleCode" type="xs:string"/>
+								<xs:element name="CurbMassChassis" type="vdecdef:VehicleCurbMassChassisType"/>
+								<xs:element name="TechnicalPermissibleMaximumLadenMass" type="vdecdef:VehicleGrossVehicleMassType"/>
+								<xs:element name="VocationalVehcle" type="BooleanNotApplicableType"/>
+								<xs:element name="ZeroEmissionVehicle" type="xs:boolean"/>
+								<xs:element name="HybridElectricHDV" type="xs:boolean"/>
+								<xs:element name="DualFuelVehicle" type="xs:boolean"/>
+								<xs:element name="SleeperCab" type="BooleanNotApplicableType"/>
+								<xs:element name="RegisteredPassengers">
+									<xs:complexType>
+										<xs:sequence>
+											<xs:element name="LowerDeck">
+												<xs:simpleType>
+													<xs:restriction base="xs:int">
+														<xs:minInclusive value="0"/>
+													</xs:restriction>
+												</xs:simpleType>
+											</xs:element>
+											<xs:element name="UpperDeck">
+												<xs:simpleType>
+													<xs:restriction base="xs:int">
+														<xs:minInclusive value="0"/>
+													</xs:restriction>
+												</xs:simpleType>
+											</xs:element>
+										</xs:sequence>
+									</xs:complexType>
+								</xs:element>
+								<xs:element name="LowEntry" type="xs:boolean"/>
+								<xs:element name="HeightIntegratedBody">
+									<xs:simpleType>
+										<xs:restriction base="vdecdef:Double3">
+											<xs:minExclusive value="0.000"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="VehicleLength">
+									<xs:simpleType>
+										<xs:restriction base="vdecdef:Double3">
+											<xs:minExclusive value="0.000"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="VehicleWidth">
+									<xs:simpleType>
+										<xs:restriction base="vdecdef:Double3">
+											<xs:minExclusive value="0.000"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="DoorDriveTechnology" type="xs:string"/>
+								<xs:element name="Components" type="AbstractComponentsType"/>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="PrimaryVehicleType">
+		<xs:sequence>
+			<xs:element name="Manufacturer" type="vdecdef:ManufacturerType"/>
+			<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType"/>
+			<xs:element name="AxleConfiguration" type="xs:string"/>
+			<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
+			<xs:element name="ManufacturerRecordSignature" type="vdecdef:SignatureType"/>
+			<xs:element name="VehicleInformationSignature" type="vdecdef:SignatureType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:simpleType name="BooleanNotApplicableType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="true"/>
+			<xs:enumeration value="false"/>
+			<xs:enumeration value="not applicable"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:complexType name="ComponentsCompletedBusType">
+		<xs:complexContent>
+			<xs:extension base="AbstractComponentsType">
+				<xs:sequence>
+					<xs:element name="AirDrag" type="AirdragType"/>
+					<xs:element name="Auxiliaries" type="v2.6:AbstractCompletedVehicleAuxiliaryDataDeclarationType"/>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 </xs:schema>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd
index c37837a94c..0edba654ec 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd
@@ -253,7 +253,8 @@
 			<xs:extension base="out:AbstractPrimaryVehicleDataPIFType">
 				<xs:sequence>
 					<xs:element name="Vehicle" type="AbstractVehiclePIFType"/>
-					<xs:element name="ResultDataSignature" type="v1.0:SignatureType"/>
+					<xs:element name="InputDataSignature" type="v1.0:SignatureType"/>
+					<xs:element name="ManufacturerRecordSignature" type="v1.0:SignatureType"/>
 					<xs:element name="Results" type="ResultsPIFType"/>
 					<xs:element name="ApplicationInformation" type="ApplicationInformationPIFType"/>
 				</xs:sequence>
diff --git a/VectoCore/VectoCore/Utils/VectoVersionCore.cs b/VectoCore/VectoCore/Utils/VectoVersionCore.cs
index 3798ec4c6e..6514ff0728 100644
--- a/VectoCore/VectoCore/Utils/VectoVersionCore.cs
+++ b/VectoCore/VectoCore/Utils/VectoVersionCore.cs
@@ -47,7 +47,7 @@ namespace TUGraz.VectoCore.Utils
 		public static string VersionNumber
 		{
 			get {
-				return "0.6.0.1884" + SUFFIX;
+				return "0.6.1.1932" + SUFFIX;
 			}
 		}
 
diff --git a/VectoCore/VectoCore/Utils/XMLHelper.cs b/VectoCore/VectoCore/Utils/XMLHelper.cs
index 718437960c..d0605f5f8c 100644
--- a/VectoCore/VectoCore/Utils/XMLHelper.cs
+++ b/VectoCore/VectoCore/Utils/XMLHelper.cs
@@ -273,5 +273,14 @@ namespace TUGraz.VectoCore.Utils
 			var namesp = node.SchemaInfo.SchemaType.QualifiedName.Namespace;
 			return namesp.Split(':').Last(x => x.StartsWith(versionPrefix)).Replace(versionPrefix, string.Empty).ToDouble();
 		}
+
+		public static XElement CreateDummySig(XNamespace di)
+		{
+			return new XElement(di + XMLNames.DI_Signature_Reference,
+								new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod,
+											new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "null")),
+								new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, "NOT AVAILABLE")
+			);
+		}
 	}
 }
diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_PIF.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_PIF.xml
index edb50f75f4..e8dea11f64 100644
--- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_PIF.xml	
+++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_PIF.xml	
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <pif:VectoOutputPrimaryVehicle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" xmlns:pif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputPrimaryVehicleInformation.xsd">
-  <pif:Data xsi:type="PrimaryVehicleHeavyBusDataType" id="PIF-b1f9a6097ed74a6b82de">
+  <pif:Data xsi:type="PrimaryVehicleHeavyBusDataType" id="PIF-1a5c4fd556f14ec8ac23">
     <Vehicle xsi:type="VehiclePIFType">
       <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle>
       <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle>
@@ -127,8 +127,8 @@
         </Transmission>
         <Axlegear>
           <Data xsi:type="AxlegearDataPIFType">
-            <Manufacturer>Generic Gearbox Manufacturer Primary</Manufacturer>
-            <Model>Generic 40t Long Haul Truck AxleGear</Model>
+            <Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
+            <Model>Generic 40t Long Haul Truck AxleGear Primary</Model>
             <CertificationMethod>Standard values</CertificationMethod>
             <Date>2017-01-11T11:00:00Z</Date>
             <AppVersion>3.0.1</AppVersion>
@@ -254,16 +254,28 @@
         </Auxiliaries>
       </Components>
     </Vehicle>
-    <ResultDataSignature>
-      <di:Reference URI="#RESULT-f61bd2ce3c3341eb8048">
+    <InputDataSignature>
+      
+        <di:Reference URI="#VEH-PrimaryBus_SmartPS">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>KyEUoR+pb/fnqRuLFC53Ft+RhDf+ABAdd1xxsMwH7io=</di:DigestValue>
+        </di:Reference>
+      
+    </InputDataSignature>
+    <ManufacturerRecordSignature>
+      <di:Reference URI="#RESULT-bfe32d82bc964c108ed0">
         <di:Transforms>
           <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
           <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
         </di:Transforms>
         <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
-        <di:DigestValue>heugWRk0GnYtGPjosKwy3WhcNUMVeLC6nTE69GzCYnY=</di:DigestValue>
+        <di:DigestValue>1g9GT522b4FZfr8XwSCNBMfrdcP9F6MoZHxRWugnOzs=</di:DigestValue>
       </di:Reference>
-    </ResultDataSignature>
+    </ManufacturerRecordSignature>
     <Results>
       <Status>success</Status>
       <Result status="success">
@@ -548,18 +560,18 @@
       </Result>
     </Results>
     <ApplicationInformation>
-      <SimulationToolVersion>0.6.0.1884-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion>
-      <Date>2020-04-16T05:38:26.8930564Z</Date>
+      <SimulationToolVersion>0.6.1.1932-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion>
+      <Date>2020-04-16T12:23:52.6883135Z</Date>
     </ApplicationInformation>
   </pif:Data>
   <pif:Signature>
-    <di:Reference URI="#PIF-b1f9a6097ed74a6b82de">
+    <di:Reference URI="#PIF-1a5c4fd556f14ec8ac23">
       <di:Transforms>
         <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
         <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
       </di:Transforms>
       <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
-      <di:DigestValue>igtEc9rHHfZ+4xt2XsbxYnD7yW0qLkrVe/UJL/bMZ5U=</di:DigestValue>
+      <di:DigestValue>b3547elwo1lTvTbxKYq/b7VwOEygVUcPt9E/kpjkMcY=</di:DigestValue>
     </di:Reference>
   </pif:Signature>
 </pif:VectoOutputPrimaryVehicle>
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/XML/XMLPrimaryVehicleReportBusReaderTest.cs b/VectoCore/VectoCoreTest/XML/XMLPrimaryVehicleReportBusReaderTest.cs
index 9ad11695f9..c3a2209bd0 100644
--- a/VectoCore/VectoCoreTest/XML/XMLPrimaryVehicleReportBusReaderTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLPrimaryVehicleReportBusReaderTest.cs
@@ -102,13 +102,13 @@ namespace TUGraz.VectoCore.Tests.XML
 
 			TestHVAC(components.BusAuxiliaries.HVACAux);
 
-			TestResultDataSignature(inputDataProvider.ResultDataHash);
+			TestResultDataSignature(inputDataProvider.ManufacturerRecordHash);
 
 			TestResultData(inputDataProvider.ResultsInputData);
 
 			TestApplicationInformation(inputDataProvider.ApplicationInformation);
 
-			TestSignature(inputDataProvider.ManufacturerHash);
+			//TestSignature(inputDataProvider.ManufacturerHash);
 		}
 
 		
-- 
GitLab