diff --git a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
index 41b3a203fbe3579061951bf0cc748329eae6b439..2c9753bde1da886c019e15285802d62fffc786db 100644
--- a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
+++ b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
@@ -29,28 +29,33 @@ namespace TUGraz.VectoCommon.InputData
 		public const string HybridPrefix = "Hybrid";
 		public const string BatteryElectricPrefix = "BatteryElectric";
 
-		public static PowertrainPosition Parse(string pos)
+		public static PowertrainPosition Parse(string prefix, string pos)
 		{
 			if (pos.Equals(nameof(PowertrainPosition.GEN))) {
 				return PowertrainPosition.GEN;
 			}
-
-			if (pos.StartsWith("P", StringComparison.InvariantCultureIgnoreCase)) {
-				return (HybridPrefix + pos).Replace(".", "_").ParseEnum<PowertrainPosition>();
+			if (pos.Equals(nameof(PowertrainPosition.IHPC), StringComparison.InvariantCultureIgnoreCase)) {
+				return PowertrainPosition.IHPC;
 			}
 
-			if (pos.StartsWith("B", StringComparison.InvariantCultureIgnoreCase)) {
-				return (BatteryElectricPrefix + pos.Replace("B", "E")).ParseEnum<PowertrainPosition>();
+			if (prefix.Equals("P", StringComparison.InvariantCultureIgnoreCase)) {
+				return (HybridPrefix + prefix + pos).Replace(".", "_").ParseEnum<PowertrainPosition>();
 			}
-			if (pos.StartsWith("E", StringComparison.InvariantCultureIgnoreCase)) {
-				return (BatteryElectricPrefix + pos).ParseEnum<PowertrainPosition>();
+
+			if (prefix.Equals("B", StringComparison.InvariantCultureIgnoreCase) || prefix.Equals("E", StringComparison.InvariantCultureIgnoreCase)) {
+				return (BatteryElectricPrefix + prefix + pos.Replace("B", "E")).ParseEnum<PowertrainPosition>();
 			}
+			
+			throw new VectoException("invalid powertrain position {0}", pos);
+		}
 
-			if (pos.Equals(nameof(PowertrainPosition.IHPC), StringComparison.InvariantCultureIgnoreCase)) {
-				return PowertrainPosition.IHPC;
+		public static PowertrainPosition Parse(string pos)
+		{
+			if (pos.Length > 1 && pos[0].IsOneOf('B', 'P', 'E')) {
+				return Parse(pos.Substring(0, 1), pos.Substring(1));
 			}
 
-			throw new VectoException("invalid powertrain position {0}", pos);
+			return Parse("", pos);
 		}
 
 		public static string GetName(this PowertrainPosition pos)
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index 2012d6daea235ebf055ff5108872254d1106f20e..43d1ac73300e541ac0d9354cd1abab13c3acbeaf 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -712,7 +712,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 				foreach (XmlNode electricMachineNode in electricMachineNodes)
 				{
 					var powertrainPosition =
-						PowertrainPositionHelper.Parse(PowertrainPositionPrefix + GetString(XMLNames.ElectricMachine_Position, electricMachineNode));
+						PowertrainPositionHelper.Parse(PowertrainPositionPrefix, GetString(XMLNames.ElectricMachine_Position, electricMachineNode));
 
 					if (!motorTorqueLimits.ContainsKey(powertrainPosition))
 						motorTorqueLimits.Add(powertrainPosition, new List<Tuple<Volt, TableData>>());
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMachinesDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMachinesDeclarationInputDataProvider.cs
index a4abc2cbdf8deb6c05f504c065eef5d6ee35a5e2..6a73d928db4c734bbbc058fbead8467010dc0b0b 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMachinesDeclarationInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMachinesDeclarationInputDataProvider.cs
@@ -38,7 +38,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		private List<ElectricMachineEntry<IElectricMotorDeclarationInputData>> GetEntries()
 		{
 			var machineEntry = new ElectricMachineEntry<IElectricMotorDeclarationInputData> {
-				Position = PowertrainPositionHelper.Parse(((AbstractXMLVehicleDataProviderV24)_vehicle).PowertrainPositionPrefix +
+				Position = PowertrainPositionHelper.Parse(((AbstractXMLVehicleDataProviderV24)_vehicle).PowertrainPositionPrefix,
 							GetString(XMLNames.ElectricMachine_PowertrainPosition)),
 				Count = XmlConvert.ToInt32(GetString(XMLNames.ElectricMachine_Count)),
 				ElectricMachine = ElectricMachineSystemReader.CreateElectricMachineSystem(GetNode(XMLNames.ElectricMachineSystem)),
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 7566e08ec0a5f1ed6b45613ed5682e3248bd52d7..0fae92d6312ad372e901b6a82813e084be0dcfcf 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -1567,6 +1567,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				case GearboxType.AMT:
 					switch (runData.JobType) {
 						case VectoSimulationJobType.ConventionalVehicle:
+						case VectoSimulationJobType.ParallelHybridVehicle:
 							runData.ShiftStrategy = AMTShiftStrategyOptimized.Name;
 							return new AMTShiftStrategyOptimized(container);
 						case VectoSimulationJobType.BatteryElectricVehicle:
diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
index 61e790c8f0188195b11e842ea5cfb6fdd8dd5098..2f6c82d6805506cfcd7a12c0d28ed21409a90d83 100644
--- a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
@@ -1900,6 +1900,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 						})).ToDictionary(k => k.Item1 + 1, v => v.Item2),
 				Inertia = 0.SI<KilogramSquareMeter>(),
 				TractionInterruption = 1.SI<Second>(),
+				Type = GearboxType.AMT
 			};
 		}