diff --git a/storage-core/src/main/java/org/opengroup/osdu/storage/conversion/DpsConversionService.java b/storage-core/src/main/java/org/opengroup/osdu/storage/conversion/DpsConversionService.java
index 742585bda97c699306a1fe17dc7cefc5b71e5a74..0c778ce755da03e2898e014e0bd16775574ab4a6 100644
--- a/storage-core/src/main/java/org/opengroup/osdu/storage/conversion/DpsConversionService.java
+++ b/storage-core/src/main/java/org/opengroup/osdu/storage/conversion/DpsConversionService.java
@@ -36,8 +36,10 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -60,26 +62,36 @@ public class DpsConversionService {
         List<JsonObject> recordsWithGeoJsonBlock = new ArrayList<>();
 
         List<ConversionRecord> recordsWithoutConversionBlock = this.classifyRecords(originalRecords, conversionStatuses, recordsWithMetaBlock, recordsWithGeoJsonBlock);
-        List<ConversionRecord> allRecords = recordsWithoutConversionBlock;
+        Map<String, ConversionRecord> conversionResults = new HashMap<>();
+        addOrUpdateRecordStatus(conversionResults, recordsWithoutConversionBlock);
 
         if (!conversionStatuses.isEmpty()) {
             RecordsAndStatuses crsConversionResult = null;
-            List<ConversionRecord> conversionRecords = new ArrayList<>();
             if (!recordsWithGeoJsonBlock.isEmpty()) {
+                List<ConversionRecord> geoConvertedRecords = new ArrayList<>();
                 crsConversionResult = this.crsConversionService.doCrsGeoJsonConversion(recordsWithGeoJsonBlock, conversionStatuses);
-                conversionRecords = this.getConversionRecords(crsConversionResult);
+                geoConvertedRecords = this.getConversionRecords(crsConversionResult);
+                addOrUpdateRecordStatus(conversionResults, geoConvertedRecords);
             }
             if (!recordsWithMetaBlock.isEmpty()) {
+                List<ConversionRecord> metaConvertedRecords = new ArrayList<>();
                 crsConversionResult = this.crsConversionService.doCrsConversion(recordsWithMetaBlock, conversionStatuses);
-                conversionRecords = this.getConversionRecords(crsConversionResult);
-                this.unitConversionService.convertUnitsToSI(conversionRecords);
-                this.datesConversionService.convertDatesToISO(conversionRecords);
+                metaConvertedRecords = this.getConversionRecords(crsConversionResult);
+                this.unitConversionService.convertUnitsToSI(metaConvertedRecords);
+                this.datesConversionService.convertDatesToISO(metaConvertedRecords);
+                addOrUpdateRecordStatus(conversionResults, metaConvertedRecords);
             }
-            allRecords.addAll(conversionRecords);
         }
-        this.checkMismatchAndLogMissing(originalRecords, allRecords);
+        List<ConversionRecord> out = new ArrayList<>(conversionResults.values());
+        this.checkMismatchAndLogMissing(originalRecords, out);
+        return this.makeResponseStatus(out);
+    }
 
-        return this.MakeResponseStatus(allRecords);
+    private void addOrUpdateRecordStatus(Map<String, ConversionRecord> out, List<ConversionRecord> result) {
+        for (ConversionRecord conversionRecord: result) {
+            String recordId = conversionRecord.getRecordId();
+            out.put(recordId, conversionRecord);
+        }
     }
 
     private List<ConversionRecord> classifyRecords(List<JsonObject> originalRecords, List<ConversionStatus.ConversionStatusBuilder> conversionStatuses, List<JsonObject> recordsWithMetaBlock, List<JsonObject> recordsWithGeoJsonBlock) {
@@ -147,7 +159,7 @@ public class DpsConversionService {
         return null;
     }
 
-    private RecordsAndStatuses MakeResponseStatus(List<ConversionRecord> conversionRecords) {
+    private RecordsAndStatuses makeResponseStatus(List<ConversionRecord> conversionRecords) {
         RecordsAndStatuses result = new RecordsAndStatuses();
         List<JsonObject> records = new ArrayList<>();
         List<ConversionStatus> conversionStatuses = new ArrayList<>();
diff --git a/storage-core/src/test/java/org/opengroup/osdu/storage/conversion/ConversionServiceTest.java b/storage-core/src/test/java/org/opengroup/osdu/storage/conversion/ConversionServiceTest.java
index 011d614c73e9c69afedf9da286b57be4733d186d..77ea520d36420ba731166e634f3d65f296858732 100644
--- a/storage-core/src/test/java/org/opengroup/osdu/storage/conversion/ConversionServiceTest.java
+++ b/storage-core/src/test/java/org/opengroup/osdu/storage/conversion/ConversionServiceTest.java
@@ -33,6 +33,8 @@ import org.opengroup.osdu.core.common.model.storage.ConversionStatus;
 import java.util.ArrayList;
 import java.util.List;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -81,9 +83,9 @@ public class ConversionServiceTest {
     private static final String INVALID_COORDINATES_ANY_CRS_RECORD = "{\"id\":\"geo-json-multi-polygon-test\",\"kind\":\"geo-json-multi-polygon:test:1.0.0\",\"acl\":{\"viewers\":[\"viewers@unittest.com\"],\"owners\":[\"owners@unittest.com\"]},\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"data\":{\"SpatialLocation\":{\"AsIngestedCoordinates\":{\"features\":[{\"geometry\":{\"coordinates\":[[[[30,20],[45,40],[10,40],[30,20]]],[[15,5],[40,10],[10,20],[5,10],[15,5]]],\"bbox\":null,\"type\":\"AnyCrsMultiPolygon\"},\"bbox\":null,\"properties\":{},\"type\":\"AnyCrsFeature\"}],\"bbox\":null,\"properties\":{},\"persistableReferenceCrs\":\"reference\",\"persistableReferenceUnitZ\":\"reference\",\"type\":\"AnyCrsFeatureCollection\"},\"msg\":\"testing record 2\",\"X\":16.00,\"Y\":10.00,\"Z\":0}}}";
     private static final String ERRONEOUS_ANY_CRS_RECORD_1 = "{\"id\":\"geo-json-point-test\",\"kind\":\"geo-json-point:test:1.0.0\",\"acl\":{\"viewers\":[\"viewers@unittest.com\"],\"owners\":[\"owners@unittest.com\"]},\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"data\":{\"SpatialLocation\":{\"AsIngestedCoordinates\":{\"Type\":\"AnyCrsFeatureCollection\",\"CoordinateReferenceSystemID\":\"NAD27\",\"VerticalCoordinateReferenceSystemID\":null,\"PersistableReferenceCrs\":null,\"PersistableReferenceVerticalCrs\":null,\"PersistableReferenceUnitZ\":null,\"Features\":[{\"Type\":\"AnyCrsFeature\",\"Properties\":null,\"Geometry\":{\"Coordinates\":[30.8793048,-87.7801454],\"Type\":\"AnyCrsPoint\",\"Bbox\":null}}],\"Bbox\":null},\"Wgs84Coordinates\":null}}}";
 
-    private static final String COMBINED_ANY_CRS_META_FOR_RECORD = "{\"id\":\"geo-json-point-test\",\"kind\":\"geo-json-point:test:1.0.0\",\"acl\":{\"viewers\":[\"viewers@unittest.com\"],\"owners\":[\"owners@unittest.com\"]},\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"data\":{\"SpudDate\":\"03/28/2012\",\"SpatialLocation\":{\"AsIngestedCoordinates\":{\"features\":[{\"geometry\":{\"coordinates\":[313405.9477893702,6544797.620047403,6.561679790026246],\"bbox\":null,\"type\":\"AnyCrsPoint\"},\"bbox\":null,\"properties\":{},\"type\":\"AnyCrsFeature\"}],\"bbox\":null,\"properties\":{},\"persistableReferenceCrs\":\"reference\",\"persistableReferenceUnitZ\":\"reference\",\"type\":\"AnyCrsFeatureCollection\"},\"msg\":\"testing record 2\",\"X\":16.00,\"Y\":10.00,\"Z\":0}},\"meta\":[{\"propertyValues\":[\"MM/dd/yyyy\"],\"persistableReference\":\"{\\\"type\\\": \\\"DAT\\\", \\\"format\\\": \\\"MM/dd/yyyy\\\"}\",\"uncertainty\":0,\"kind\":\"DateTime\",\"propertyNames\":[\"SpudDate\"]}]}";
-    private static final String COMBINED_ANY_CRS_CONVERTED_RECORD = "{\"acl\":{\"owners\":[\"owners@unittest.com\"],\"viewers\":[\"viewers@unittest.com\"]},\"data\":{\"SpudDate\":\"03/28/2012\",\"SpatialLocation\":{\"AsIngestedCoordinates\":{\"bbox\":null,\"features\":[{\"bbox\":null,\"geometry\":{\"bbox\":null,\"coordinates\":[313405.9477893702,6544797.620047403,6.561679790026246],\"type\":\"AnyCrsPoint\"},\"properties\":{},\"type\":\"AnyCrsFeature\"}],\"persistableReferenceCrs\":\"reference\",\"persistableReferenceUnitZ\":\"reference\",\"properties\":{},\"type\":\"AnyCrsFeatureCollection\"},\"msg\":\"testing record 2\",\"Wgs84Coordinates\":{\"bbox\":null,\"features\":[{\"bbox\":null,\"geometry\":{\"bbox\":null,\"coordinates\":[5.7500000010406245,59.000000000399105,1.9999999999999998],\"type\":\"Point\"},\"properties\":{},\"type\":\"Feature\"}],\"persistableReferenceCrs\":null,\"persistableReferenceUnitZ\":\"reference\",\"properties\":{},\"type\":\"FeatureCollection\"},\"X\":16,\"Y\":10,\"Z\":0}},\"id\":\"geo-json-point-test\",\"kind\":\"geo-json-point:test:1.0.0\",\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"meta\":[{\"propertyValues\":[\"MM/dd/yyyy\"],\"persistableReference\":\"{\\\"type\\\": \\\"DAT\\\", \\\"format\\\": \\\"MM/dd/yyyy\\\"}\",\"uncertainty\":0,\"kind\":\"DateTime\",\"propertyNames\":[\"SpudDate\"]}]}";
-    private static final String COMBINED_ANY_CRS_META_FOR_CONVERTED_RECORD = "{\"acl\":{\"owners\":[\"owners@unittest.com\"],\"viewers\":[\"viewers@unittest.com\"]},\"data\":{\"SpudDate\":\"2012-03-28\",\"SpatialLocation\":{\"AsIngestedCoordinates\":{\"bbox\":null,\"features\":[{\"bbox\":null,\"geometry\":{\"bbox\":null,\"coordinates\":[313405.9477893702,6544797.620047403,6.561679790026246],\"type\":\"AnyCrsPoint\"},\"properties\":{},\"type\":\"AnyCrsFeature\"}],\"persistableReferenceCrs\":\"reference\",\"persistableReferenceUnitZ\":\"reference\",\"properties\":{},\"type\":\"AnyCrsFeatureCollection\"},\"msg\":\"testing record 2\",\"Wgs84Coordinates\":{\"bbox\":null,\"features\":[{\"bbox\":null,\"geometry\":{\"bbox\":null,\"coordinates\":[5.7500000010406245,59.000000000399105,1.9999999999999998],\"type\":\"Point\"},\"properties\":{},\"type\":\"Feature\"}],\"persistableReferenceCrs\":null,\"persistableReferenceUnitZ\":\"reference\",\"properties\":{},\"type\":\"FeatureCollection\"},\"X\":16,\"Y\":10,\"Z\":0}},\"id\":\"geo-json-point-test\",\"kind\":\"geo-json-point:test:1.0.0\",\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"meta\":[{\"propertyValues\":[\"MM/dd/yyyy\"],\"persistableReference\":\"{\\\"format\\\":\\\"yyyy-MM-dd\\\",\\\"type\\\":\\\"DAT\\\"}\",\"uncertainty\":0,\"kind\":\"DateTime\",\"propertyNames\":[\"SpudDate\"]}]}";
+    private static final String COMBINED_ANY_CRS_META_FOR_RECORD = "{\"id\":\"geo-json-with-meta-point-test\",\"kind\":\"geo-json-point:test:1.0.0\",\"acl\":{\"viewers\":[\"viewers@unittest.com\"],\"owners\":[\"owners@unittest.com\"]},\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"data\":{\"SpudDate\":\"03/28/2012\",\"SpatialLocation\":{\"AsIngestedCoordinates\":{\"features\":[{\"geometry\":{\"coordinates\":[313405.9477893702,6544797.620047403,6.561679790026246],\"bbox\":null,\"type\":\"AnyCrsPoint\"},\"bbox\":null,\"properties\":{},\"type\":\"AnyCrsFeature\"}],\"bbox\":null,\"properties\":{},\"persistableReferenceCrs\":\"reference\",\"persistableReferenceUnitZ\":\"reference\",\"type\":\"AnyCrsFeatureCollection\"},\"msg\":\"testing record 2\",\"X\":16.00,\"Y\":10.00,\"Z\":0}},\"meta\":[{\"propertyValues\":[\"MM/dd/yyyy\"],\"persistableReference\":\"{\\\"type\\\": \\\"DAT\\\", \\\"format\\\": \\\"MM/dd/yyyy\\\"}\",\"uncertainty\":0,\"kind\":\"DateTime\",\"propertyNames\":[\"SpudDate\"]}]}";
+    private static final String COMBINED_ANY_CRS_CONVERTED_RECORD = "{\"acl\":{\"owners\":[\"owners@unittest.com\"],\"viewers\":[\"viewers@unittest.com\"]},\"data\":{\"SpudDate\":\"03/28/2012\",\"SpatialLocation\":{\"AsIngestedCoordinates\":{\"bbox\":null,\"features\":[{\"bbox\":null,\"geometry\":{\"bbox\":null,\"coordinates\":[313405.9477893702,6544797.620047403,6.561679790026246],\"type\":\"AnyCrsPoint\"},\"properties\":{},\"type\":\"AnyCrsFeature\"}],\"persistableReferenceCrs\":\"reference\",\"persistableReferenceUnitZ\":\"reference\",\"properties\":{},\"type\":\"AnyCrsFeatureCollection\"},\"msg\":\"testing record 2\",\"Wgs84Coordinates\":{\"bbox\":null,\"features\":[{\"bbox\":null,\"geometry\":{\"bbox\":null,\"coordinates\":[5.7500000010406245,59.000000000399105,1.9999999999999998],\"type\":\"Point\"},\"properties\":{},\"type\":\"Feature\"}],\"persistableReferenceCrs\":null,\"persistableReferenceUnitZ\":\"reference\",\"properties\":{},\"type\":\"FeatureCollection\"},\"X\":16,\"Y\":10,\"Z\":0}},\"id\":\"geo-json-with-meta-point-test\",\"kind\":\"geo-json-point:test:1.0.0\",\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"meta\":[{\"propertyValues\":[\"MM/dd/yyyy\"],\"persistableReference\":\"{\\\"type\\\": \\\"DAT\\\", \\\"format\\\": \\\"MM/dd/yyyy\\\"}\",\"uncertainty\":0,\"kind\":\"DateTime\",\"propertyNames\":[\"SpudDate\"]}]}";
+    private static final String COMBINED_ANY_CRS_META_FOR_CONVERTED_RECORD = "{\"acl\":{\"owners\":[\"owners@unittest.com\"],\"viewers\":[\"viewers@unittest.com\"]},\"data\":{\"SpudDate\":\"2012-03-28\",\"SpatialLocation\":{\"AsIngestedCoordinates\":{\"bbox\":null,\"features\":[{\"bbox\":null,\"geometry\":{\"bbox\":null,\"coordinates\":[313405.9477893702,6544797.620047403,6.561679790026246],\"type\":\"AnyCrsPoint\"},\"properties\":{},\"type\":\"AnyCrsFeature\"}],\"persistableReferenceCrs\":\"reference\",\"persistableReferenceUnitZ\":\"reference\",\"properties\":{},\"type\":\"AnyCrsFeatureCollection\"},\"msg\":\"testing record 2\",\"Wgs84Coordinates\":{\"bbox\":null,\"features\":[{\"bbox\":null,\"geometry\":{\"bbox\":null,\"coordinates\":[5.7500000010406245,59.000000000399105,1.9999999999999998],\"type\":\"Point\"},\"properties\":{},\"type\":\"Feature\"}],\"persistableReferenceCrs\":null,\"persistableReferenceUnitZ\":\"reference\",\"properties\":{},\"type\":\"FeatureCollection\"},\"X\":16,\"Y\":10,\"Z\":0}},\"id\":\"geo-json-with-meta-point-test\",\"kind\":\"geo-json-point:test:1.0.0\",\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"meta\":[{\"propertyValues\":[\"MM/dd/yyyy\"],\"persistableReference\":\"{\\\"format\\\":\\\"yyyy-MM-dd\\\",\\\"type\\\":\\\"DAT\\\"}\",\"uncertainty\":0,\"kind\":\"DateTime\",\"propertyNames\":[\"SpudDate\"]}]}";
     private static final String SPATIAL_LOCATION_ARRAY_RECORD = "{\"id\":\"geo-json-point-test\",\"kind\":\"geo-json-point:test:1.0.0\",\"acl\":{\"viewers\":[\"viewers@unittest.com\"],\"owners\":[\"owners@unittest.com\"]},\"legal\":{\"legaltags\":[\"unit-test-legal\"],\"otherRelevantDataCountries\":[\"AA\"]},\"data\":{\"SpatialLocation\":[{\"AsIngestedCoordinates\":{\"features\":[{\"geometry\":{\"coordinates\":[313405.9477893702,6544797.620047403,6.561679790026246],\"bbox\":null,\"type\":\"AnyCrsPoint\"},\"bbox\":null,\"properties\":{},\"type\":\"AnyCrsFeature\"}],\"bbox\":null,\"properties\":{},\"persistableReferenceCrs\":\"reference\",\"persistableReferenceUnitZ\":\"reference\",\"type\":\"CrsFeatureCollection\"},\"msg\":\"testing record 2\",\"X\":16.00,\"Y\":10.00,\"Z\":0}]}}";
 
     @Test
@@ -91,10 +93,10 @@ public class ConversionServiceTest {
         this.originalRecords.add(this.jsonParser.parse(RECORD_2).getAsJsonObject());
 
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(RECORD_2));
-        Assert.assertEquals(CrsConversionServiceErrorMessages.MISSING_META_BLOCK, result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(RECORD_2));
+        assertEquals(CrsConversionServiceErrorMessages.MISSING_META_BLOCK, result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -102,10 +104,10 @@ public class ConversionServiceTest {
         this.originalRecords.add(this.jsonParser.parse(RECORD_4).getAsJsonObject());
 
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(RECORD_4));
-        Assert.assertEquals(CrsConversionServiceErrorMessages.MISSING_META_BLOCK, result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(RECORD_4));
+        assertEquals(CrsConversionServiceErrorMessages.MISSING_META_BLOCK, result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -132,9 +134,9 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(2, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(CONVERTED_RECORD_1));
-        Assert.assertTrue(result.getRecords().get(1).toString().equalsIgnoreCase(CONVERTED_RECORD_3));
+        assertEquals(2, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(CONVERTED_RECORD_1));
+        assertTrue(result.getRecords().get(1).toString().equalsIgnoreCase(CONVERTED_RECORD_3));
     }
 
     @Test
@@ -166,11 +168,11 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(3, result.getRecords().size());
+        assertEquals(3, result.getRecords().size());
 
-        Assert.assertTrue(result.getRecords().contains(this.jsonParser.parse(CONVERTED_RECORD_1).getAsJsonObject()));
-        Assert.assertTrue(result.getRecords().contains(this.jsonParser.parse(CONVERTED_RECORD_3).getAsJsonObject()));
-        Assert.assertTrue(result.getRecords().contains(this.jsonParser.parse(RECORD_2).getAsJsonObject()));
+        assertTrue(result.getRecords().contains(this.jsonParser.parse(CONVERTED_RECORD_1).getAsJsonObject()));
+        assertTrue(result.getRecords().contains(this.jsonParser.parse(CONVERTED_RECORD_3).getAsJsonObject()));
+        assertTrue(result.getRecords().contains(this.jsonParser.parse(RECORD_2).getAsJsonObject()));
     }
 
     @Test
@@ -195,14 +197,14 @@ public class ConversionServiceTest {
         RecordsAndStatuses result = this.sut.doConversion(inputRecords);
 
         List<ConversionStatus> resultStatuses = result.getConversionStatuses();
-        Assert.assertTrue(resultStatuses.get(0).getErrors().size() == 0);
+        assertTrue(resultStatuses.get(0).getErrors().size() == 0);
 
         List<JsonObject> resultRecords = result.getRecords();
-        Assert.assertEquals(1, resultRecords.size());
+        assertEquals(1, resultRecords.size());
         JsonObject resultRecord = resultRecords.get(0);
         JsonElement data = resultRecord.get("data");
         double actualMDValue = data.getAsJsonObject().get("MD").getAsDouble();
-        Assert.assertEquals(3.048, actualMDValue, 0.00001);
+        assertEquals(3.048, actualMDValue, 0.00001);
     }
 
     @Test
@@ -237,13 +239,13 @@ public class ConversionServiceTest {
         RecordsAndStatuses result = this.sut.doConversion(inputRecords);
         List<ConversionStatus> resultStatuses = result.getConversionStatuses();
         List<JsonObject> resultRecords = result.getRecords();
-        Assert.assertEquals(2, resultRecords.size());
-        Assert.assertTrue(resultRecords.get(0).toString().equalsIgnoreCase(CONVERTED_RECORD_1));
-        Assert.assertTrue(resultStatuses.get(1).getErrors().size() == 0);
+        assertEquals(2, resultRecords.size());
+        assertTrue(resultRecords.get(0).toString().equalsIgnoreCase(CONVERTED_RECORD_1));
+        assertTrue(resultStatuses.get(1).getErrors().size() == 0);
         JsonObject resultRecord = resultRecords.get(1);
         JsonElement data = resultRecord.get("data");
         double actualMDValue = data.getAsJsonObject().get("MD").getAsDouble();
-        Assert.assertEquals(3.048, actualMDValue, 0.00001);
+        assertEquals(3.048, actualMDValue, 0.00001);
     }
 
     @Test
@@ -274,11 +276,11 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(2, result.getRecords().size());
+        assertEquals(2, result.getRecords().size());
 
         verify(this.logger).warning("Missing record after conversion: unit-test-3");
-        Assert.assertTrue(result.getRecords().contains(this.jsonParser.parse(CONVERTED_RECORD_1).getAsJsonObject()));
-        Assert.assertTrue(result.getRecords().contains(this.jsonParser.parse(RECORD_2).getAsJsonObject()));
+        assertTrue(result.getRecords().contains(this.jsonParser.parse(CONVERTED_RECORD_1).getAsJsonObject()));
+        assertTrue(result.getRecords().contains(this.jsonParser.parse(RECORD_2).getAsJsonObject()));
     }
 
     @Test
@@ -286,10 +288,10 @@ public class ConversionServiceTest {
         this.originalRecords.add(this.jsonParser.parse(GEO_JSON_RECORD).getAsJsonObject());
 
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(GEO_JSON_RECORD));
-        Assert.assertEquals(CrsConversionServiceErrorMessages.MISSING_AS_INGESTED_COORDINATES, result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(GEO_JSON_RECORD));
+        assertEquals(CrsConversionServiceErrorMessages.MISSING_AS_INGESTED_COORDINATES, result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -298,10 +300,10 @@ public class ConversionServiceTest {
         String type = "CrsFeatureCollection";
 
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(GEO_JSON_RECORD_1));
-        Assert.assertEquals(String.format(CrsConversionServiceErrorMessages.MISSING_AS_INGESTED_TYPE, type), result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(GEO_JSON_RECORD_1));
+        assertEquals(String.format(CrsConversionServiceErrorMessages.MISSING_AS_INGESTED_TYPE, type), result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -310,10 +312,10 @@ public class ConversionServiceTest {
         String type = "SpatialLocation";
 
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(SPATIAL_LOCATION_ARRAY_RECORD));
-        Assert.assertEquals(String.format(UNEXPECTED_DATA_FORMAT_JSON_OBJECT, type), result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(SPATIAL_LOCATION_ARRAY_RECORD));
+        assertEquals(String.format(UNEXPECTED_DATA_FORMAT_JSON_OBJECT, type), result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -334,8 +336,8 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_POINT_CONVERTED_RECORD));
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_POINT_CONVERTED_RECORD));
     }
 
     @Test
@@ -356,8 +358,8 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_MULTIPOINT_CONVERTED_RECORD));
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_MULTIPOINT_CONVERTED_RECORD));
     }
 
     @Test
@@ -378,8 +380,8 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_POLYGON_CONVERTED_RECORD));
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_POLYGON_CONVERTED_RECORD));
     }
 
     @Test
@@ -400,8 +402,8 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_MULTI_POLYGON_CONVERTED_RECORD));
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_MULTI_POLYGON_CONVERTED_RECORD));
     }
 
     @Test
@@ -422,8 +424,8 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_LINE_STRING_CONVERTED_RECORD));
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_LINE_STRING_CONVERTED_RECORD));
     }
 
     @Test
@@ -444,8 +446,8 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_MULTI_LINE_STRING_CONVERTED_RECORD));
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_MULTI_LINE_STRING_CONVERTED_RECORD));
     }
 
     @Test
@@ -466,12 +468,13 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_GEOMETRY_COLLECTION_CONVERTED_RECORD));
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_GEOMETRY_COLLECTION_CONVERTED_RECORD));
     }
 
     @Test
     public void should_returnRecordsAfterCrsConversion_whenProvidedRecordWithAsIngestedCoordinatesWithMultipleTypes() {
+        final String pointRecordId = "geo-json-point-test";
         this.originalRecords.add(this.jsonParser.parse(ANY_CRS_POINT_RECORD).getAsJsonObject());
         this.originalRecords.add(this.jsonParser.parse(ANY_CRS_POLYGON_RECORD).getAsJsonObject());
 
@@ -481,7 +484,7 @@ public class ConversionServiceTest {
         List<ConversionStatus> conversionStatuses = new ArrayList<>();
         ConversionStatus conversionStatus1 = new ConversionStatus();
         conversionStatus1.setStatus(ConvertStatus.SUCCESS.toString());
-        conversionStatus1.setId("geo-json-point-test");
+        conversionStatus1.setId(pointRecordId);
         ConversionStatus conversionStatus2 = new ConversionStatus();
         conversionStatus2.setStatus(ConvertStatus.SUCCESS.toString());
         conversionStatus2.setId("geo-json-polygon-test");
@@ -494,9 +497,47 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(2, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ANY_CRS_POINT_CONVERTED_RECORD));
-        Assert.assertTrue(result.getRecords().get(1).toString().equalsIgnoreCase(ANY_CRS_POLYGON_CONVERTED_RECORD));
+        assertEquals(2, result.getRecords().size());
+        result.getRecords().stream().map(r -> pointRecordId.equalsIgnoreCase(r.get("id").getAsString())
+                ? r.toString().equalsIgnoreCase(ANY_CRS_POINT_CONVERTED_RECORD)
+                : r.toString().equalsIgnoreCase(ANY_CRS_POLYGON_CONVERTED_RECORD)).forEach(Assert::assertTrue);
+    }
+
+    @Test
+    public void should_returnRecordsAfterCrsConversion_whenProvidedRecordWithAsIngestedCoordinatesWithMetaVariationTypes() {
+        final String geoPointNoMetaRecordId = "geo-json-point-test";
+        final String geoPointWithMetaRecordId = "geo-json-with-meta-point-test";
+        this.originalRecords.add(this.jsonParser.parse(ANY_CRS_POINT_RECORD).getAsJsonObject());
+        this.originalRecords.add(this.jsonParser.parse(COMBINED_ANY_CRS_META_FOR_RECORD).getAsJsonObject());
+
+        List<JsonObject> convertedRecords = new ArrayList<>();
+        convertedRecords.add(this.jsonParser.parse(ANY_CRS_POINT_CONVERTED_RECORD).getAsJsonObject());
+        convertedRecords.add(this.jsonParser.parse(COMBINED_ANY_CRS_CONVERTED_RECORD).getAsJsonObject());
+        List<ConversionStatus> conversionStatuses = new ArrayList<>();
+        ConversionStatus conversionStatus1 = new ConversionStatus();
+        conversionStatus1.setStatus(ConvertStatus.SUCCESS.toString());
+        conversionStatus1.setId(geoPointNoMetaRecordId);
+        ConversionStatus conversionStatus2 = new ConversionStatus();
+        conversionStatus2.setStatus(ConvertStatus.SUCCESS.toString());
+        conversionStatus2.setId(geoPointWithMetaRecordId);
+        conversionStatuses.add(conversionStatus1);
+        conversionStatuses.add(conversionStatus2);
+        RecordsAndStatuses crsConversionResult = new RecordsAndStatuses();
+        crsConversionResult.setConversionStatuses(conversionStatuses);
+        crsConversionResult.setRecords(convertedRecords);
+
+        when(this.crsConversionService.doCrsConversion(any(), any())).thenReturn(crsConversionResult);
+        when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
+        RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
+
+        assertEquals(2, result.getRecords().size());
+        for (JsonObject r : result.getRecords()) {
+            if (geoPointNoMetaRecordId.equalsIgnoreCase(r.get("id").getAsString())) {
+                assertTrue(r.toString().equalsIgnoreCase(ANY_CRS_POINT_CONVERTED_RECORD));
+            } else {
+                assertEquals(r, this.jsonParser.parse(COMBINED_ANY_CRS_META_FOR_CONVERTED_RECORD));
+            }
+        }
     }
 
     @Test
@@ -504,12 +545,12 @@ public class ConversionServiceTest {
         this.originalRecords.add(this.jsonParser.parse(ERRONEOUS_ANY_CRS_RECORD_1).getAsJsonObject());
 
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(2, result.getConversionStatuses().get(0).getErrors().size());
-        Assert.assertEquals(ConvertStatus.NO_FRAME_OF_REFERENCE.toString(), result.getConversionStatuses().get(0).getStatus());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ERRONEOUS_ANY_CRS_RECORD_1));
-        Assert.assertEquals(String.format(CrsConversionServiceErrorMessages.MISSING_AS_INGESTED_TYPE, ""), result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(2, result.getConversionStatuses().get(0).getErrors().size());
+        assertEquals(ConvertStatus.NO_FRAME_OF_REFERENCE.toString(), result.getConversionStatuses().get(0).getStatus());
+        assertEquals(1, result.getRecords().size());
+        assertTrue(result.getRecords().get(0).toString().equalsIgnoreCase(ERRONEOUS_ANY_CRS_RECORD_1));
+        assertEquals(String.format(CrsConversionServiceErrorMessages.MISSING_AS_INGESTED_TYPE, ""), result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -528,11 +569,11 @@ public class ConversionServiceTest {
         crsConversionResult.setRecords(this.originalRecords);
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(1, result.getConversionStatuses().get(0).getErrors().size());
-        Assert.assertEquals(ConvertStatus.ERROR.toString(), result.getConversionStatuses().get(0).getStatus());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertEquals(TIMEOUT_FAILURE, result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(1, result.getConversionStatuses().get(0).getErrors().size());
+        assertEquals(ConvertStatus.ERROR.toString(), result.getConversionStatuses().get(0).getStatus());
+        assertEquals(1, result.getRecords().size());
+        assertEquals(TIMEOUT_FAILURE, result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -551,11 +592,11 @@ public class ConversionServiceTest {
         crsConversionResult.setRecords(this.originalRecords);
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(1, result.getConversionStatuses().get(0).getErrors().size());
-        Assert.assertEquals(ConvertStatus.ERROR.toString(), result.getConversionStatuses().get(0).getStatus());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertEquals(OTHER_FAILURE, result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(1, result.getConversionStatuses().get(0).getErrors().size());
+        assertEquals(ConvertStatus.ERROR.toString(), result.getConversionStatuses().get(0).getStatus());
+        assertEquals(1, result.getRecords().size());
+        assertEquals(OTHER_FAILURE, result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -575,11 +616,11 @@ public class ConversionServiceTest {
         crsConversionResult.setRecords(this.originalRecords);
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
-        Assert.assertEquals(1, result.getConversionStatuses().size());
-        Assert.assertEquals(1, result.getConversionStatuses().get(0).getErrors().size());
-        Assert.assertEquals(ConvertStatus.ERROR.toString(), result.getConversionStatuses().get(0).getStatus());
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertEquals(INVALID_COORDINATES, result.getConversionStatuses().get(0).getErrors().get(0));
+        assertEquals(1, result.getConversionStatuses().size());
+        assertEquals(1, result.getConversionStatuses().get(0).getErrors().size());
+        assertEquals(ConvertStatus.ERROR.toString(), result.getConversionStatuses().get(0).getStatus());
+        assertEquals(1, result.getRecords().size());
+        assertEquals(INVALID_COORDINATES, result.getConversionStatuses().get(0).getErrors().get(0));
     }
 
     @Test
@@ -591,7 +632,7 @@ public class ConversionServiceTest {
         List<ConversionStatus> conversionStatuses = new ArrayList<>();
         ConversionStatus conversionStatus = new ConversionStatus();
         conversionStatus.setStatus(ConvertStatus.SUCCESS.toString());
-        conversionStatus.setId("geo-json-point-test");
+        conversionStatus.setId("geo-json-with-meta-point-test");
         conversionStatuses.add(conversionStatus);
         RecordsAndStatuses crsConversionResult = new RecordsAndStatuses();
         crsConversionResult.setConversionStatuses(conversionStatuses);
@@ -601,7 +642,7 @@ public class ConversionServiceTest {
         when(this.crsConversionService.doCrsGeoJsonConversion(any(), any())).thenReturn(crsConversionResult);
         RecordsAndStatuses result = this.sut.doConversion(this.originalRecords);
 
-        Assert.assertEquals(1, result.getRecords().size());
-        Assert.assertEquals(result.getRecords().get(0), this.jsonParser.parse(COMBINED_ANY_CRS_META_FOR_CONVERTED_RECORD));
+        assertEquals(1, result.getRecords().size());
+        assertEquals(result.getRecords().get(0), this.jsonParser.parse(COMBINED_ANY_CRS_META_FOR_CONVERTED_RECORD));
     }
 }