diff --git a/NEW/src/JdeScoping.DataSync/Etl/Transformers/ColumnDropTransformer.cs b/NEW/src/JdeScoping.DataSync/Etl/Transformers/ColumnDropTransformer.cs
index 7d49b72..a97a271 100644
--- a/NEW/src/JdeScoping.DataSync/Etl/Transformers/ColumnDropTransformer.cs
+++ b/NEW/src/JdeScoping.DataSync/Etl/Transformers/ColumnDropTransformer.cs
@@ -63,4 +63,7 @@ public class ColumnDropTransformer : DataTransformerBase
///
public override bool IsDBNull(int ordinal, IDataReader source) => source.IsDBNull(_ordinalMap![ordinal]);
+
+ ///
+ public override int MapOrdinal(int transformedOrdinal, IDataReader source) => _ordinalMap![transformedOrdinal];
}
diff --git a/NEW/tests/JdeScoping.DataSync.Tests/Etl/Transformers/ColumnDropTransformerTests.cs b/NEW/tests/JdeScoping.DataSync.Tests/Etl/Transformers/ColumnDropTransformerTests.cs
index b7301d2..0f4ec50 100644
--- a/NEW/tests/JdeScoping.DataSync.Tests/Etl/Transformers/ColumnDropTransformerTests.cs
+++ b/NEW/tests/JdeScoping.DataSync.Tests/Etl/Transformers/ColumnDropTransformerTests.cs
@@ -71,6 +71,21 @@ public class ColumnDropTransformerTests
Assert.Equal("Value", reader.GetName(2));
}
+ [Fact]
+ public void MapOrdinal_DroppedColumn_MapsCorrectly()
+ {
+ // Arrange - drop column B (ordinal 1), so C becomes ordinal 1
+ var source = CreateMockReader(new[] { "A", "B", "C" });
+ var transformer = new ColumnDropTransformer("B");
+ transformer.Transform(source);
+
+ // Act - transformed ordinal 1 should map to source ordinal 2 (C)
+ var result = transformer.MapOrdinal(1, source);
+
+ // Assert
+ Assert.Equal(2, result);
+ }
+
private static IDataReader CreateMockReader(string[] columns, object[]? values = null)
{
var reader = Substitute.For();