diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallAggregator.java b/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallAggregator.java
index 218070b7e04dc9a37e53f73f0a90b40c7b6d7fac..abdeb19507ebd3d9be69a992c83e39f9afe1721c 100644
--- a/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallAggregator.java
+++ b/src/main/java/kieker/analysis/stage/tracediagnosis/OperationCallAggregator.java
@@ -53,10 +53,9 @@ public final class OperationCallAggregator extends AbstractTransformation<Operat
 			final Statistics statistics = StatisticsUtility.calculateStatistics(durations);
 			super.getOutputPort().send(
 					new AggregatedOperationCall(aggregationList.get(0).getContainer(), aggregationList.get(0).getComponent(), aggregationList.get(0).getOperation(),
-							aggregationList.get(0).getFailedCause(), statistics.getTotalDuration(), statistics.getMedianDuration(), statistics.getMinDuration(),
-							statistics
-									.getMaxDuration(),
-							statistics.getMeanDuration(), aggregationList.size()));
+							aggregationList.get(0).getOrderIndex(), aggregationList.get(0).getFailedCause(), statistics.getTotalDuration(),
+							statistics.getMedianDuration(), statistics.getMinDuration(), statistics.getMaxDuration(), statistics.getMeanDuration(),
+							aggregationList.size()));
 		}
 
 		super.onTerminating();
diff --git a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructor.java b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructor.java
index abe495fea2f912161caa6e906b1138b4a1ca9471..3691c71402d8409ad6b8f5b5d505a9b9788e6ece 100644
--- a/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructor.java
+++ b/src/main/java/kieker/analysis/stage/tracediagnosis/TraceReconstructor.java
@@ -119,8 +119,8 @@ final class TraceReconstructor extends AbstractTransformation<IFlowRecord, Trace
 		private void handleBeforeOperationEventRecord(final BeforeOperationEvent record) {
 			this.stack.push(record);
 
-			final OperationCall newCall = new OperationCall(this.hostname, record.getClassSignature(), record.getOperationSignature(), this.traceID,
-					record.getLoggingTimestamp());
+			final OperationCall newCall = new OperationCall(this.hostname, record.getClassSignature(), record.getOperationSignature(), record.getOrderIndex(),
+					this.traceID, record.getLoggingTimestamp());
 			if (this.root == null) {
 				this.root = newCall;
 			} else {
diff --git a/src/main/java/kieker/analysis/traceanalysisdomain/AbstractOperationCall.java b/src/main/java/kieker/analysis/traceanalysisdomain/AbstractOperationCall.java
index c1abd011db95e23147289e7493f1b337cea780f3..28ea68403d68c9cf6ac177192d5b60fa1f589ee7 100644
--- a/src/main/java/kieker/analysis/traceanalysisdomain/AbstractOperationCall.java
+++ b/src/main/java/kieker/analysis/traceanalysisdomain/AbstractOperationCall.java
@@ -43,14 +43,17 @@ public abstract class AbstractOperationCall<T extends AbstractOperationCall<T>>
 	private int stackSize;
 	private String failedCause;
 
-	public AbstractOperationCall(final String container, final String component, final String operation) {
-		this(container, component, operation, null);
+	private int orderIndex;
+
+	public AbstractOperationCall(final String container, final String component, final String operation, final int orderIndex) {
+		this(container, component, operation, orderIndex, null);
 	}
 
-	public AbstractOperationCall(final String container, final String component, final String operation, final String failedCause) {
+	public AbstractOperationCall(final String container, final String component, final String operation, final int orderIndex, final String failedCause) {
 		this.container = container.intern();
 		this.component = component.intern();
 		this.operation = operation.intern();
+		this.orderIndex = orderIndex;
 		this.failedCause = (failedCause != null) ? failedCause.intern() : null;
 	}
 
@@ -76,6 +79,10 @@ public abstract class AbstractOperationCall<T extends AbstractOperationCall<T>>
 		return this.operation;
 	}
 
+	public int getOrderIndex() {
+		return orderIndex;
+	}
+
 	public final int getStackDepth() {
 		return this.stackDepth;
 	}
diff --git a/src/main/java/kieker/analysis/traceanalysisdomain/AggregatedOperationCall.java b/src/main/java/kieker/analysis/traceanalysisdomain/AggregatedOperationCall.java
index 01bbff30476bf4a9203d3a254a95e1cd0c76399b..b78451b429caffe915d9f638eddb58cb8babda8e 100644
--- a/src/main/java/kieker/analysis/traceanalysisdomain/AggregatedOperationCall.java
+++ b/src/main/java/kieker/analysis/traceanalysisdomain/AggregatedOperationCall.java
@@ -33,7 +33,7 @@ public final class AggregatedOperationCall extends AbstractOperationCall<Aggrega
 	private int calls;
 
 	public AggregatedOperationCall(final OperationCall call) {
-		super(call.getContainer(), call.getComponent(), call.getOperation(), call.getFailedCause());
+		super(call.getContainer(), call.getComponent(), call.getOperation(), call.getOrderIndex(), call.getFailedCause());
 
 		for (final OperationCall child : call.getChildren()) {
 			addChild(new AggregatedOperationCall(child));
@@ -43,10 +43,11 @@ public final class AggregatedOperationCall extends AbstractOperationCall<Aggrega
 		this.setStackSize(call.getStackSize());
 	}
 
-	public AggregatedOperationCall(final String container, final String component, final String operation, // NOPMD (a long parameter list cannot be avoided)
+	public AggregatedOperationCall(final String container, final String component, final String operation, final int orderIndex, // NOPMD (a long parameter list
+																																	// cannot be avoided)
 			final String failedCause, final long totalDuration, final long medianDuration, final long minDuration, final long maxDuration, final long meanDuration,
 			final int calls) {
-		super(container, component, operation);
+		super(container, component, operation, orderIndex);
 
 		this.totalDuration = totalDuration;
 		this.medianDuration = medianDuration;
diff --git a/src/main/java/kieker/analysis/traceanalysisdomain/OperationCall.java b/src/main/java/kieker/analysis/traceanalysisdomain/OperationCall.java
index f240af6db725bc0cbf0c2c38f55d1c38633c1a7d..05099f2a0800d8b69c10ff2e07886bc6640deeee 100644
--- a/src/main/java/kieker/analysis/traceanalysisdomain/OperationCall.java
+++ b/src/main/java/kieker/analysis/traceanalysisdomain/OperationCall.java
@@ -32,13 +32,13 @@ public final class OperationCall extends AbstractOperationCall<OperationCall> {
 	private long duration;
 	private long timestamp;
 
-	public OperationCall(final String container, final String component, final String operation, final long traceID, final long timestamp) {
-		this(container, component, operation, null, traceID, timestamp);
+	public OperationCall(final String container, final String component, final String operation, final int orderIndex, final long traceID, final long timestamp) {
+		this(container, component, operation, orderIndex, null, traceID, timestamp);
 	}
 
-	public OperationCall(final String container, final String component, final String operation, final String failedCause, final long traceID,
+	public OperationCall(final String container, final String component, final String operation, final int orderIndex, final String failedCause, final long traceID,
 			final long timestamp) {
-		super(container, component, operation, failedCause);
+		super(container, component, operation, orderIndex, failedCause);
 
 		this.traceID = traceID;
 		this.timestamp = timestamp;
@@ -50,6 +50,7 @@ public final class OperationCall extends AbstractOperationCall<OperationCall> {
 		child.parent = this;
 	}
 
+	@Override
 	public OperationCall getParent() {
 		return this.parent;
 	}