diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/IEPC_S_Test.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/IEPC_S_Test.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9be86c7f4ae801d4e5ceb4b161ead890f9717c0b
--- /dev/null
+++ b/VectoCore/VectoCoreTest/Integration/Hybrid/IEPC_S_Test.cs
@@ -0,0 +1,195 @@
+using System.IO;
+using System.Linq;
+using NUnit.Framework;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.InputData.FileIO.JSON;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
+using TUGraz.VectoCore.OutputData;
+using TUGraz.VectoCore.OutputData.FileIO;
+using TUGraz.VectoCore.Tests.Utils;
+
+namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
+{
+	[TestFixture]
+	[Parallelizable(ParallelScope.All)]
+	public class IEPC_S_Test
+	{
+
+		protected const string IEPC_S_Gbx3Speed = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed\IEPC-S_ENG_Gbx3.vecto";
+
+		protected const string IEPC_S_Gbx3Speed_drag = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed\IEPC-S_ENG_Gbx3_drag.vecto";
+
+		protected const string IEPC_S_Gbx3SpeedAxle = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed+Axle\IEPC-S_ENG_Gbx3Axl.vecto";
+
+		protected const string IEPC_S_Gbx3SpeedWhl1 = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed-Whl1\IEPC-S_ENG_Gbx3Whl1.vecto";
+
+		protected const string IEPC_S_Gbx3SpeedWhl2 = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx3Speed-Whl2\IEPC-S_ENG_Gbx3Whl2.vecto";
+
+		protected const string IEPC_S_Gbx1Speed = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx1Speed\IEPC-S_ENG_Gbx1.vecto";
+
+		protected const string IEPC_S_Gbx1SpeedAxl = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx1Speed+Axle\IEPC-S_ENG_Gbx1Axl.vecto";
+
+		protected const string IEPC_S_Gbx1SpeedWhl1 = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx1Speed-Whl1\IEPC-S_ENG_Gbx1Whl1.vecto";
+
+		protected const string IEPC_S_Gbx1SpeedWhl2 = @"TestData\Hybrids\GenericIEPC-S\IEPC-S_Gbx1Speed-Whl2\IEPC-S_ENG_Gbx1Whl2.vecto";
+
+
+		[OneTimeSetUp]
+		public void RunBeforeAnyTests()
+		{
+			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
+		}
+
+
+		private GraphWriter GetGraphWriter(ModalResultField[] yFields)
+		{
+			var graphWriter = new GraphWriter();
+			//#if TRACE
+			graphWriter.Enable();
+
+			//#else
+			//graphWriter.Disable();
+			//#endif
+
+
+			var Yfields = new[] {
+				ModalResultField.v_act, ModalResultField.altitude, ModalResultField.acc, ModalResultField.Gear,
+				ModalResultField.REESSStateOfCharge,
+			}.Concat(yFields).ToArray();
+			graphWriter.Xfields = new[] { ModalResultField.dist };
+			graphWriter.Yfields = yFields;
+			graphWriter.Series1Label = "BEV";
+			graphWriter.PlotIgnitionState = true;
+
+			return graphWriter;
+		}
+
+
+		[TestCase(IEPC_S_Gbx3Speed, 0, TestName = "IEPC-S Gbx 3speed Job LH"),
+		TestCase(IEPC_S_Gbx3Speed, 1, TestName = "IEPC-S Gbx 3speed Job Coach"),
+		TestCase(IEPC_S_Gbx3Speed, 2, TestName = "IEPC-S Gbx 3speed Job CO"),
+		TestCase(IEPC_S_Gbx3Speed, 3, TestName = "IEPC-S Gbx 3speed Job HU"),
+		TestCase(IEPC_S_Gbx3Speed, 4, TestName = "IEPC-S Gbx 3speed Job IU"),
+		TestCase(IEPC_S_Gbx3Speed, 5, TestName = "IEPC-S Gbx 3speed Job RD"),
+		TestCase(IEPC_S_Gbx3Speed, 6, TestName = "IEPC-S Gbx 3speed Job SU"),
+		TestCase(IEPC_S_Gbx3Speed, 7, TestName = "IEPC-S Gbx 3speed Job U"),
+		TestCase(IEPC_S_Gbx3Speed, 8, TestName = "IEPC-S Gbx 3speed Job UD"),
+
+		TestCase(IEPC_S_Gbx3Speed_drag, 0, TestName = "IEPC-S Gbx 3speed sep dragCurves Job LH"),
+		TestCase(IEPC_S_Gbx3Speed_drag, 1, TestName = "IEPC-S Gbx 3speed sep dragCurves Job Coach"),
+		TestCase(IEPC_S_Gbx3Speed_drag, 2, TestName = "IEPC-S Gbx 3speed sep dragCurves Job CO"),
+		TestCase(IEPC_S_Gbx3Speed_drag, 3, TestName = "IEPC-S Gbx 3speed sep dragCurves Job HU"),
+		TestCase(IEPC_S_Gbx3Speed_drag, 4, TestName = "IEPC-S Gbx 3speed sep dragCurves Job IU"),
+		TestCase(IEPC_S_Gbx3Speed_drag, 5, TestName = "IEPC-S Gbx 3speed sep dragCurves Job RD"),
+		TestCase(IEPC_S_Gbx3Speed_drag, 6, TestName = "IEPC-S Gbx 3speed sep dragCurves Job SU"),
+		TestCase(IEPC_S_Gbx3Speed_drag, 7, TestName = "IEPC-S Gbx 3speed sep dragCurves Job U"),
+		TestCase(IEPC_S_Gbx3Speed_drag, 8, TestName = "IEPC-S Gbx 3speed sep dragCurves Job UD"),
+
+		TestCase(IEPC_S_Gbx3SpeedAxle, 0, TestName = "IEPC-S Gbx 3speed + Axle Job LH"),
+		TestCase(IEPC_S_Gbx3SpeedAxle, 1, TestName = "IEPC-S Gbx 3speed + Axle Job Coach"),
+		TestCase(IEPC_S_Gbx3SpeedAxle, 2, TestName = "IEPC-S Gbx 3speed + Axle Job CO"),
+		TestCase(IEPC_S_Gbx3SpeedAxle, 3, TestName = "IEPC-S Gbx 3speed + Axle Job HU"),
+		TestCase(IEPC_S_Gbx3SpeedAxle, 4, TestName = "IEPC-S Gbx 3speed + Axle Job IU"),
+		TestCase(IEPC_S_Gbx3SpeedAxle, 5, TestName = "IEPC-S Gbx 3speed + Axle Job RD"),
+		TestCase(IEPC_S_Gbx3SpeedAxle, 6, TestName = "IEPC-S Gbx 3speed + Axle Job SU"),
+		TestCase(IEPC_S_Gbx3SpeedAxle, 7, TestName = "IEPC-S Gbx 3speed + Axle Job U"),
+		TestCase(IEPC_S_Gbx3SpeedAxle, 8, TestName = "IEPC-S Gbx 3speed + Axle Job UD"),
+
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 0, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job LH"),
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 1, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job Coach"),
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 2, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job CO"),
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 3, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job HU"),
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 4, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job IU"),
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 5, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job RD"),
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 6, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job SU"),
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 7, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job U"),
+		TestCase(IEPC_S_Gbx3SpeedWhl1, 8, TestName = "IEPC-S Gbx 3speed DTWheel-1 Job UD"),
+
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 0, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job LH"),
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 1, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job Coach"),
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 2, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job CO"),
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 3, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job HU"),
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 4, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job IU"),
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 5, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job RD"),
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 6, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job SU"),
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 7, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job U"),
+		TestCase(IEPC_S_Gbx3SpeedWhl2, 8, TestName = "IEPC-S Gbx 3speed DTWheel-2 Job UD"),
+
+		TestCase(IEPC_S_Gbx1Speed, 0, TestName = "IEPC-S Gbx 1speed Job LH"),
+		TestCase(IEPC_S_Gbx1Speed, 1, TestName = "IEPC-S Gbx 1speed Job Coach"),
+		TestCase(IEPC_S_Gbx1Speed, 2, TestName = "IEPC-S Gbx 1speed Job CO"),
+		TestCase(IEPC_S_Gbx1Speed, 3, TestName = "IEPC-S Gbx 1speed Job HU"),
+		TestCase(IEPC_S_Gbx1Speed, 4, TestName = "IEPC-S Gbx 1speed Job IU"),
+		TestCase(IEPC_S_Gbx1Speed, 5, TestName = "IEPC-S Gbx 1speed Job RD"),
+		TestCase(IEPC_S_Gbx1Speed, 6, TestName = "IEPC-S Gbx 1speed Job SU"),
+		TestCase(IEPC_S_Gbx1Speed, 7, TestName = "IEPC-S Gbx 1speed Job U"),
+		TestCase(IEPC_S_Gbx1Speed, 8, TestName = "IEPC-S Gbx 1speed Job UD"),
+
+		TestCase(IEPC_S_Gbx1SpeedAxl, 0, TestName = "IEPC-S Gbx 1speed + Axle Job LH"),
+		TestCase(IEPC_S_Gbx1SpeedAxl, 1, TestName = "IEPC-S Gbx 1speed + Axle Job Coach"),
+		TestCase(IEPC_S_Gbx1SpeedAxl, 2, TestName = "IEPC-S Gbx 1speed + Axle Job CO"),
+		TestCase(IEPC_S_Gbx1SpeedAxl, 3, TestName = "IEPC-S Gbx 1speed + Axle Job HU"),
+		TestCase(IEPC_S_Gbx1SpeedAxl, 4, TestName = "IEPC-S Gbx 1speed + Axle Job IU"),
+		TestCase(IEPC_S_Gbx1SpeedAxl, 5, TestName = "IEPC-S Gbx 1speed + Axle Job RD"),
+		TestCase(IEPC_S_Gbx1SpeedAxl, 6, TestName = "IEPC-S Gbx 1speed + Axle Job SU"),
+		TestCase(IEPC_S_Gbx1SpeedAxl, 7, TestName = "IEPC-S Gbx 1speed + Axle Job U"),
+		TestCase(IEPC_S_Gbx1SpeedAxl, 8, TestName = "IEPC-S Gbx 1speed + Axle Job UD"),
+
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 0, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job LH"),
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 1, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job Coach"),
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 2, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job CO"),
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 3, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job HU"),
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 4, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job IU"),
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 5, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job RD"),
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 6, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job SU"),
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 7, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job U"),
+		TestCase(IEPC_S_Gbx1SpeedWhl1, 8, TestName = "IEPC-S Gbx 1speed DTWheel-1 Job UD"),
+
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 0, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job LH"),
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 1, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job Coach"),
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 2, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job CO"),
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 3, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job HU"),
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 4, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job IU"),
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 5, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job RD"),
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 6, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job SU"),
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 7, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job U"),
+		TestCase(IEPC_S_Gbx1SpeedWhl2, 8, TestName = "IEPC-S Gbx 1speed DTWheel-2 Job UD"),
+		]
+		public void IEPCRunJob(string jobFile, int cycleIdx)
+		{
+			var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile);
+
+			var writer = new FileOutputWriter(jobFile);
+			var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, writer);
+			factory.Validate = false;
+			factory.WriteModalResults = true;
+			
+
+			var sumContainer = new SummaryDataContainer(writer);
+			var jobContainer = new JobContainer(sumContainer);
+
+			factory.SumData = sumContainer;
+			
+			if (cycleIdx < 0) {
+				jobContainer.AddRuns(factory);
+				jobContainer.Execute();
+				jobContainer.WaitFinished();
+				Assert.IsTrue(jobContainer.GetProgress().All(x => x.Value.Success));
+			} else {
+				var run = factory.SimulationRuns().ToArray()[cycleIdx];
+
+				Assert.NotNull(run);
+
+				var pt = run.GetContainer();
+
+				Assert.NotNull(pt);
+
+				run.Run();
+				Assert.IsTrue(run.FinishedWithoutErrors);
+			}
+		}
+
+	}
+}
\ No newline at end of file