diff --git a/jpo-conflictmonitor b/jpo-conflictmonitor
index 63cd37612..e8187d152 160000
--- a/jpo-conflictmonitor
+++ b/jpo-conflictmonitor
@@ -1 +1 @@
-Subproject commit 63cd3761247b1b24c8bc41c68e7e884293965ade
+Subproject commit e8187d152935334cb98e4a0579eb4f891c2d5091
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/ConflictMonitorApiProperties.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/ConflictMonitorApiProperties.java
index 640e38dd7..d68b77383 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/ConflictMonitorApiProperties.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/ConflictMonitorApiProperties.java
@@ -71,6 +71,7 @@ public class ConflictMonitorApiProperties {
     private String kafkaProducerType = AppContext.DEFAULT_KAFKA_PRODUCER_TYPE;
     private Boolean verboseJson = false;
     private Boolean load = false;
+    private String cmServerURL = "";
     private String emailBroker = "";
     private String emailFromAddress = "noreply@cimms.com";
     private int importProcessorBufferSize = OdePlugin.INPUT_STREAM_BUFFER_SIZE;
@@ -138,6 +139,15 @@ public void setLoad(boolean load) {
         this.load = load;
     }
 
+    public String getCmServerURL() {
+        return cmServerURL;
+    }
+
+    @Value("${cmServerURL}")
+    public void setCmServerURL(String cmServerUrl) {
+        this.cmServerURL = cmServerUrl;
+    }
+
     public String getEmailBroker() {
         return emailBroker;
     }
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/ConnectionOfTravelAssessment/ConnectionOfTravelAssessmentRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/ConnectionOfTravelAssessment/ConnectionOfTravelAssessmentRepositoryImpl.java
index dd8f41bb4..73c2039f5 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/ConnectionOfTravelAssessment/ConnectionOfTravelAssessmentRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/ConnectionOfTravelAssessment/ConnectionOfTravelAssessmentRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.assessments.ConnectionOfTravelAssessment;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,14 +30,17 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if (startTime == null) {
-            startTime = 0L;
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if (endTime == null) {
-            endTime = Instant.now().toEpochMilli();
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("assessmentGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("assessmentGeneratedAt").gte(startTimeDate).lte(endTimeDate));
 
         if (latest) {
             query.with(Sort.by(Sort.Direction.DESC, "assessmentGeneratedAt"));
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/LaneDirectionOfTravelAssessment/LaneDirectionOfTravelAssessmentRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/LaneDirectionOfTravelAssessment/LaneDirectionOfTravelAssessmentRepositoryImpl.java
index 73e4b3e39..4d93dd31b 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/LaneDirectionOfTravelAssessment/LaneDirectionOfTravelAssessmentRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/LaneDirectionOfTravelAssessment/LaneDirectionOfTravelAssessmentRepositoryImpl.java
@@ -1,7 +1,7 @@
 
 package us.dot.its.jpo.ode.api.accessors.assessments.LaneDirectionOfTravelAssessment;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,14 +34,17 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if (startTime == null) {
-            startTime = 0L;
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if (endTime == null) {
-            endTime = Instant.now().toEpochMilli();
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("assessmentGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("assessmentGeneratedAt").gte(startTimeDate).lte(endTimeDate));
         if (latest) {
             query.with(Sort.by(Sort.Direction.DESC, "assessmentGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/SignalStateAssessment/StopLineStopAssessmentRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/SignalStateAssessment/StopLineStopAssessmentRepositoryImpl.java
index 5139f2a13..9976860d0 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/SignalStateAssessment/StopLineStopAssessmentRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/SignalStateAssessment/StopLineStopAssessmentRepositoryImpl.java
@@ -1,7 +1,7 @@
 
 package us.dot.its.jpo.ode.api.accessors.assessments.SignalStateAssessment;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,14 +31,17 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if (startTime == null) {
-            startTime = 0L;
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if (endTime == null) {
-            endTime = Instant.now().toEpochMilli();
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("assessmentGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("assessmentGeneratedAt").gte(startTimeDate).lte(endTimeDate));
         if (latest) {
             query.with(Sort.by(Sort.Direction.DESC, "assessmentGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/SignalStateEventAssessment/SignalStateEventAssessmentRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/SignalStateEventAssessment/SignalStateEventAssessmentRepositoryImpl.java
index 1e0a2d278..9cf52c4df 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/SignalStateEventAssessment/SignalStateEventAssessmentRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/assessments/SignalStateEventAssessment/SignalStateEventAssessmentRepositoryImpl.java
@@ -1,7 +1,7 @@
 
 package us.dot.its.jpo.ode.api.accessors.assessments.SignalStateEventAssessment;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,14 +32,17 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if (startTime == null) {
-            startTime = 0L;
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if (endTime == null) {
-            endTime = Instant.now().toEpochMilli();
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("assessmentGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("assessmentGeneratedAt").gte(startTimeDate).lte(endTimeDate));
         if (latest) {
             query.with(Sort.by(Sort.Direction.DESC, "assessmentGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/bsm/OdeBsmJsonRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/bsm/OdeBsmJsonRepositoryImpl.java
index 895a50885..69c0f3c38 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/bsm/OdeBsmJsonRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/bsm/OdeBsmJsonRepositoryImpl.java
@@ -71,6 +71,7 @@ public List<OdeBsmData> findOdeBsmDataGeo(String originIp, String vehicleId, Lon
         }
 	    query.limit(props.getMaximumResponseSize());
         query.addCriteria(Criteria.where("metadata.odeReceivedAt").gte(startTimeString).lte(endTimeString));
+        query.fields().exclude("recordGeneratedAt");
         
         if (longitude!=null && latitude!=null && distance!=null){
             Double[] latitudes = calculateLatitudes(latitude, distance);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/ConnectionOfTravelEvent/ConnectionOfTravelEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/ConnectionOfTravelEvent/ConnectionOfTravelEventRepositoryImpl.java
index a5217e2a0..8b9c9e7ec 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/ConnectionOfTravelEvent/ConnectionOfTravelEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/ConnectionOfTravelEvent/ConnectionOfTravelEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 
 package us.dot.its.jpo.ode.api.accessors.events.ConnectionOfTravelEvent;
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -15,7 +14,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/IntersectionReferenceAlignmentEvent/IntersectionReferenceAlignmentEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/IntersectionReferenceAlignmentEvent/IntersectionReferenceAlignmentEventRepositoryImpl.java
index ec207a7e8..2ef3c7add 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/IntersectionReferenceAlignmentEvent/IntersectionReferenceAlignmentEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/IntersectionReferenceAlignmentEvent/IntersectionReferenceAlignmentEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 
 package us.dot.its.jpo.ode.api.accessors.events.IntersectionReferenceAlignmentEvent;
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -9,7 +8,6 @@
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/LaneDirectionOfTravelEvent/LaneDirectionOfTravelEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/LaneDirectionOfTravelEvent/LaneDirectionOfTravelEventRepositoryImpl.java
index 636eb7133..15d5a28eb 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/LaneDirectionOfTravelEvent/LaneDirectionOfTravelEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/LaneDirectionOfTravelEvent/LaneDirectionOfTravelEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 
 package us.dot.its.jpo.ode.api.accessors.events.LaneDirectionOfTravelEvent;
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -17,7 +16,6 @@
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
 import org.springframework.data.mongodb.core.aggregation.ArithmeticOperators;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/MapBroadcastRateEvents/MapBroadcastRateEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/MapBroadcastRateEvents/MapBroadcastRateEventRepositoryImpl.java
index 3bea9fedf..e36360efc 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/MapBroadcastRateEvents/MapBroadcastRateEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/MapBroadcastRateEvents/MapBroadcastRateEventRepositoryImpl.java
@@ -1,6 +1,5 @@
 package us.dot.its.jpo.ode.api.accessors.events.MapBroadcastRateEvents;
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -16,7 +15,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/MapMinimumDataEvent/MapMinimumDataEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/MapMinimumDataEvent/MapMinimumDataEventRepositoryImpl.java
index 3a1bbae4c..81820a306 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/MapMinimumDataEvent/MapMinimumDataEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/MapMinimumDataEvent/MapMinimumDataEventRepositoryImpl.java
@@ -1,6 +1,5 @@
 package us.dot.its.jpo.ode.api.accessors.events.MapMinimumDataEvent;
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -15,7 +14,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.conflictmonitor.monitor.models.events.minimum_data.MapMinimumDataEvent;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateConflictEvent/SignalStateConflictEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateConflictEvent/SignalStateConflictEventRepositoryImpl.java
index f37a927d5..56f3c4d26 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateConflictEvent/SignalStateConflictEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateConflictEvent/SignalStateConflictEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 
 package us.dot.its.jpo.ode.api.accessors.events.SignalStateConflictEvent;
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -15,7 +14,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateEvent/SignalStateEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateEvent/SignalStateEventRepositoryImpl.java
index 8c9fd4b33..f22950183 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateEvent/SignalStateEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateEvent/SignalStateEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 
 package us.dot.its.jpo.ode.api.accessors.events.SignalStateEvent;
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -15,7 +14,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateStopEvent/SignalStateStopEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateStopEvent/SignalStateStopEventRepositoryImpl.java
index 07b06c10e..621439430 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateStopEvent/SignalStateStopEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SignalStateStopEvent/SignalStateStopEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 
 package us.dot.its.jpo.ode.api.accessors.events.SignalStateStopEvent;
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -15,7 +14,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SpatBroadcastRateEvent/SpatBroadcastRateEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SpatBroadcastRateEvent/SpatBroadcastRateEventRepositoryImpl.java
index 625735316..b5cf3815d 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SpatBroadcastRateEvent/SpatBroadcastRateEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SpatBroadcastRateEvent/SpatBroadcastRateEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.events.SpatBroadcastRateEvent;
 
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -16,7 +15,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.conflictmonitor.monitor.models.events.broadcast_rate.SpatBroadcastRateEvent;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SpatMinimumDataEvent/SpatMinimumDataEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SpatMinimumDataEvent/SpatMinimumDataEventRepositoryImpl.java
index 817f69aa3..c1e19c92b 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SpatMinimumDataEvent/SpatMinimumDataEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/SpatMinimumDataEvent/SpatMinimumDataEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.events.SpatMinimumDataEvent;
 
 
-import java.time.Instant;
 import java.util.Date;
 import java.util.List;
 
@@ -16,7 +15,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.conflictmonitor.monitor.models.events.minimum_data.SpatMinimumDataEvent;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/TimeChangeDetailsEvent/TimeChangeDetailsEventRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/TimeChangeDetailsEvent/TimeChangeDetailsEventRepositoryImpl.java
index 6f2356fba..7f10932ab 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/TimeChangeDetailsEvent/TimeChangeDetailsEventRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/events/TimeChangeDetailsEvent/TimeChangeDetailsEventRepositoryImpl.java
@@ -1,7 +1,6 @@
 
 package us.dot.its.jpo.ode.api.accessors.events.TimeChangeDetailsEvent;
 
-import java.time.Instant;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,7 +15,6 @@
 
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.AggregationResults;
-import org.springframework.data.mongodb.core.aggregation.ConvertOperators;
 import org.springframework.data.mongodb.core.aggregation.DateOperators;
 
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/map/ProcessedMapRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/map/ProcessedMapRepositoryImpl.java
index 63ae610a9..dc1559a64 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/map/ProcessedMapRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/map/ProcessedMapRepositoryImpl.java
@@ -73,6 +73,7 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
         }
 
         query.addCriteria(Criteria.where("properties.timeStamp").gte(startTimeString).lte(endTimeString));
+        query.fields().exclude("recordGeneratedAt");
         return query;
     }
 
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/ActiveNotification/ActiveNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/ActiveNotification/ActiveNotificationRepositoryImpl.java
index dadcafa11..a304b43bf 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/ActiveNotification/ActiveNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/ActiveNotification/ActiveNotificationRepositoryImpl.java
@@ -3,23 +3,13 @@
 import java.util.List;
 import java.util.Map;
 
-import org.bson.BsonDocument;
 import org.bson.conversions.Bson;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
 import org.springframework.data.mongodb.core.MongoTemplate;
-import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
-import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
-import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Component;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
-import com.fasterxml.jackson.databind.jsontype.impl.StdSubtypeResolver;
-import com.mongodb.DBObject;
-
 import us.dot.its.jpo.conflictmonitor.monitor.models.notifications.ConnectionOfTravelNotification;
 import us.dot.its.jpo.conflictmonitor.monitor.models.notifications.IntersectionReferenceAlignmentNotification;
 import us.dot.its.jpo.conflictmonitor.monitor.models.notifications.LaneDirectionOfTravelNotification;
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/ConnectionOfTravelNotification/ConnectionOfTravelNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/ConnectionOfTravelNotification/ConnectionOfTravelNotificationRepositoryImpl.java
index f47c3969e..3903b673e 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/ConnectionOfTravelNotification/ConnectionOfTravelNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/ConnectionOfTravelNotification/ConnectionOfTravelNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.ConnectionOfTravelNotification;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,14 +26,18 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if(startTime == null){
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if(endTime == null){
-            endTime = Instant.now().toEpochMilli(); 
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if(latest){
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/IntersectionReferenceAlignmentNotification/IntersectionReferenceAlignmentNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/IntersectionReferenceAlignmentNotification/IntersectionReferenceAlignmentNotificationRepositoryImpl.java
index 8c579ef92..82870798a 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/IntersectionReferenceAlignmentNotification/IntersectionReferenceAlignmentNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/IntersectionReferenceAlignmentNotification/IntersectionReferenceAlignmentNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.IntersectionReferenceAlignmentNotification;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 import org.springframework.data.domain.Sort;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,14 +25,18 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if(startTime == null){
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if(endTime == null){
-            endTime = Instant.now().toEpochMilli(); 
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if(latest){
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/LaneDirectionOfTravelNotificationRepo/LaneDirectionOfTravelNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/LaneDirectionOfTravelNotificationRepo/LaneDirectionOfTravelNotificationRepositoryImpl.java
index bc60faab1..585fc583d 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/LaneDirectionOfTravelNotificationRepo/LaneDirectionOfTravelNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/LaneDirectionOfTravelNotificationRepo/LaneDirectionOfTravelNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.LaneDirectionOfTravelNotificationRepo;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 import org.springframework.data.domain.Sort;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,19 +26,23 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if(startTime == null){
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if(endTime == null){
-            endTime = Instant.now().toEpochMilli(); 
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if(latest){
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
         return query;
     }
 
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/MapBroadcastRateNotification/MapBroadcastRateNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/MapBroadcastRateNotification/MapBroadcastRateNotificationRepositoryImpl.java
index db7f38a74..5223f0cbd 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/MapBroadcastRateNotification/MapBroadcastRateNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/MapBroadcastRateNotification/MapBroadcastRateNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.MapBroadcastRateNotification;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,14 +26,18 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if (startTime == null) {
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if (endTime == null) {
-            endTime = Instant.now().toEpochMilli();
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if (latest) {
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SignalGroupAlignmentNotificationRepo/SignalGroupAlignmentNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SignalGroupAlignmentNotificationRepo/SignalGroupAlignmentNotificationRepositoryImpl.java
index 8d5ba1561..f12c047b2 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SignalGroupAlignmentNotificationRepo/SignalGroupAlignmentNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SignalGroupAlignmentNotificationRepo/SignalGroupAlignmentNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.SignalGroupAlignmentNotificationRepo;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,14 +26,18 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if (startTime == null) {
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if (endTime == null) {
-            endTime = Instant.now().toEpochMilli();
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if (latest) {
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SignalStateConflictNotification/SignalStateConflictNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SignalStateConflictNotification/SignalStateConflictNotificationRepositoryImpl.java
index 7ab34cd75..1c9965e39 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SignalStateConflictNotification/SignalStateConflictNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SignalStateConflictNotification/SignalStateConflictNotificationRepositoryImpl.java
@@ -1,7 +1,7 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.SignalStateConflictNotification;
 
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,14 +28,18 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if(startTime == null){
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if(endTime == null){
-            endTime = Instant.now().toEpochMilli(); 
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if(latest){
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SpatBroadcastRateNotification/SpatBroadcastRateNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SpatBroadcastRateNotification/SpatBroadcastRateNotificationRepositoryImpl.java
index 71d96721f..256fe5601 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SpatBroadcastRateNotification/SpatBroadcastRateNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/SpatBroadcastRateNotification/SpatBroadcastRateNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.SpatBroadcastRateNotification;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,14 +26,18 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if (startTime == null) {
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if (endTime == null) {
-            endTime = Instant.now().toEpochMilli();
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if (latest) {
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/StopLinePassageNotification/StopLinePassageNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/StopLinePassageNotification/StopLinePassageNotificationRepositoryImpl.java
index ff4ab3d68..7b1e29915 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/StopLinePassageNotification/StopLinePassageNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/StopLinePassageNotification/StopLinePassageNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.StopLinePassageNotification;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 import org.springframework.data.domain.Sort;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,19 +26,23 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if(startTime == null){
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if(endTime == null){
-            endTime = Instant.now().toEpochMilli(); 
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if(latest){
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
         return query;
     }
 
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/StopLineStopNotification/StopLineStopNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/StopLineStopNotification/StopLineStopNotificationRepositoryImpl.java
index eff0d568c..b0364a403 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/StopLineStopNotification/StopLineStopNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/StopLineStopNotification/StopLineStopNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.StopLineStopNotification;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 import org.springframework.data.domain.Sort;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,19 +26,23 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if(startTime == null){
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if(endTime == null){
-            endTime = Instant.now().toEpochMilli(); 
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if(latest){
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
         return query;
     }
 
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/TimeChangeDetailsNotification/TimeChangeDetailsNotificationRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/TimeChangeDetailsNotification/TimeChangeDetailsNotificationRepositoryImpl.java
index e0c1ccecf..8b900993d 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/TimeChangeDetailsNotification/TimeChangeDetailsNotificationRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/notifications/TimeChangeDetailsNotification/TimeChangeDetailsNotificationRepositoryImpl.java
@@ -1,6 +1,6 @@
 package us.dot.its.jpo.ode.api.accessors.notifications.TimeChangeDetailsNotification;
 
-import java.time.Instant;
+import java.util.Date;
 import java.util.List;
 import org.springframework.data.domain.Sort;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,19 +26,23 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime, bool
             query.addCriteria(Criteria.where("intersectionID").is(intersectionID));
         }
 
-        if(startTime == null){
-            startTime = Instant.ofEpochMilli(0).toEpochMilli();
+        Date startTimeDate = new Date(0);
+        Date endTimeDate = new Date();
+
+        if (startTime != null) {
+            startTimeDate = new Date(startTime);
         }
-        if(endTime == null){
-            endTime = Instant.now().toEpochMilli(); 
+        if (endTime != null) {
+            endTimeDate = new Date(endTime);
         }
 
+        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTimeDate).lte(endTimeDate));
+
         if(latest){
             query.with(Sort.by(Sort.Direction.DESC, "notificationGeneratedAt"));
             query.limit(1);
         }
 
-        query.addCriteria(Criteria.where("notificationGeneratedAt").gte(startTime).lte(endTime));
         return query;
     }
 
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/reports/ReportRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/reports/ReportRepositoryImpl.java
index cad945620..4df08df4a 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/reports/ReportRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/reports/ReportRepositoryImpl.java
@@ -2,20 +2,14 @@
 
 
 import java.time.Instant;
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-
-import org.bson.conversions.Bson;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.MongoTemplate;
-import org.springframework.data.mongodb.core.aggregation.Fields;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Component;
 
-import us.dot.its.jpo.conflictmonitor.monitor.models.events.broadcast_rate.MapBroadcastRateEvent;
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
 import us.dot.its.jpo.ode.api.models.ReportDocument;
 
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/spat/ProcessedSpatRepositoryImpl.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/spat/ProcessedSpatRepositoryImpl.java
index 6fd85a897..0f6f891f8 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/spat/ProcessedSpatRepositoryImpl.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/accessors/spat/ProcessedSpatRepositoryImpl.java
@@ -63,6 +63,7 @@ public Query getQuery(Integer intersectionID, Long startTime, Long endTime) {
         }
 	    query.limit(props.getMaximumResponseSize());
         query.addCriteria(Criteria.where("odeReceivedAt").gte(startTimeString).lte(endTimeString));
+        query.fields().exclude("recordGeneratedAt");
         return query;
     }
 
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/ConfigController.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/ConfigController.java
index 3cd0936c0..39d733c9e 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/ConfigController.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/ConfigController.java
@@ -6,9 +6,11 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.kafka.core.KafkaTemplate;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -18,6 +20,8 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import scala.collection.generic.BitOperations.Long;
@@ -26,10 +30,12 @@
 
 import us.dot.its.jpo.conflictmonitor.monitor.models.config.Config;
 import us.dot.its.jpo.conflictmonitor.monitor.models.config.DefaultConfig;
+import us.dot.its.jpo.conflictmonitor.monitor.models.config.DefaultConfigMap;
 import us.dot.its.jpo.conflictmonitor.monitor.models.config.IntersectionConfig;
+import us.dot.its.jpo.conflictmonitor.monitor.models.config.IntersectionConfigMap;
+import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
 import us.dot.its.jpo.ode.api.accessors.config.DefaultConfig.DefaultConfigRepository;
 import us.dot.its.jpo.ode.api.accessors.config.IntersectionConfig.IntersectionConfigRepository;
-// import us.dot.its.jpo.ode.api.services.KafkaProducerService;
 
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.springframework.http.MediaType;
@@ -47,8 +53,20 @@ public class ConfigController {
     @Autowired
     IntersectionConfigRepository intersectionConfigRepository;
 
-    // @Autowired
-    // KafkaProducerService kafkaProducerService;
+    @Autowired
+    KafkaTemplate<String, DefaultConfig> defaultConfigProducer;
+
+    @Autowired
+    ConflictMonitorApiProperties props;
+
+    private RestTemplate restTemplate = new RestTemplate();
+
+    private final String defaultConfigTemplate = "%s/config/default/%s";
+    private final String intersectionConfigTemplate = "%s/config/intersection/%s/%s/%s";
+    private final String defaultConfigAllTemplate = "%s/config/defaults";
+    private final String intersectionConfigAllTemplate = "%s/config/intersections";
+    
+
 
     // General Setter for Default Configs
     @CrossOrigin(origins = "http://localhost:3000")
@@ -56,7 +74,20 @@ public class ConfigController {
     @PreAuthorize("hasRole('ADMIN')")
     public @ResponseBody ResponseEntity<String> default_config(@RequestBody DefaultConfig config) {
         try {
-            defaultConfigRepository.save(config);
+            
+            String resourceURL = String.format(defaultConfigTemplate, props.getCmServerURL(), config.getKey());
+            ResponseEntity<DefaultConfig> response = restTemplate.getForEntity(resourceURL, DefaultConfig.class);
+            
+            
+            if(response.getStatusCode().is2xxSuccessful()){
+                DefaultConfig previousConfig = response.getBody();
+                previousConfig.setValue(config.getValue());
+                restTemplate.postForEntity(resourceURL, previousConfig, DefaultConfig.class);
+                defaultConfigRepository.save(previousConfig);
+            }else{
+                return ResponseEntity.status(response.getStatusCode()).contentType(MediaType.TEXT_PLAIN).body("Conflict Monitor API was unable to change setting on conflict monitor.");
+            }
+
             return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.TEXT_PLAIN).body(config.toString());
         } catch (Exception e) {
             logger.error("Failure in Default Config" + e.getStackTrace());
@@ -71,7 +102,25 @@ public class ConfigController {
     @PreAuthorize("hasRole('ADMIN')")
     public @ResponseBody ResponseEntity<String> intersection_config(@RequestBody IntersectionConfig config) {
         try {
-            intersectionConfigRepository.save(config);
+            String resourceURL = String.format(intersectionConfigTemplate, props.getCmServerURL(),config.getRoadRegulatorID(),config.getIntersectionID(), config.getKey());
+            ResponseEntity<IntersectionConfig> response = restTemplate.getForEntity(resourceURL, IntersectionConfig.class);
+            
+            if(response.getStatusCode().is2xxSuccessful()){
+                IntersectionConfig previousConfig = response.getBody();
+                System.out.println(previousConfig);
+                if(previousConfig == null){
+                    previousConfig = config;
+                }
+                previousConfig.setValue(config.getValue());
+                restTemplate.postForEntity(resourceURL, previousConfig, DefaultConfig.class);
+                System.out.println("PostBack Complete");
+
+                intersectionConfigRepository.save(previousConfig);
+                System.out.println("Database Postback Complete");
+            }else{
+                return ResponseEntity.status(response.getStatusCode()).contentType(MediaType.TEXT_PLAIN).body("Conflict Monitor API was unable to change setting on conflict monitor.");
+            }
+
             return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.TEXT_PLAIN).body(config.toString());
         } catch (Exception e) {
             logger.error("Failure in Intersection Config" + e.getStackTrace());
@@ -87,6 +136,20 @@ public class ConfigController {
         Query query = intersectionConfigRepository.getQuery(config.getKey(), config.getRoadRegulatorID(),
                 config.getIntersectionID());
         try {
+            String resourceURL = String.format(intersectionConfigTemplate, props.getCmServerURL(),config.getRoadRegulatorID(),config.getIntersectionID(), config.getKey());
+
+            restTemplate.postForEntity(resourceURL, null, DefaultConfig.class);
+            // ResponseEntity<IntersectionConfig> response = restTemplate.getForEntity(resourceURL, IntersectionConfig.class);
+            // if(response.getStatusCode().is2xxSuccessful()){
+            //     IntersectionConfig previousConfig = response.getBody();
+            //     previousConfig.setValue(config.getValue());
+                
+            //     intersectionConfigRepository.save(previousConfig);
+            // }else{
+            //     return ResponseEntity.status(response.getStatusCode()).contentType(MediaType.TEXT_PLAIN).body("Conflict Monitor API was unable to change setting on conflict monitor.");
+            // }
+
+
             intersectionConfigRepository.delete(query);
             return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.TEXT_PLAIN).body(config.toString());
         } catch (Exception e) {
@@ -100,11 +163,15 @@ public class ConfigController {
     @RequestMapping(value = "/config/default/all", method = RequestMethod.GET, produces = "application/json")
     @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
     public @ResponseBody ResponseEntity<List<DefaultConfig>> default_config_all() {
-        Query query = defaultConfigRepository.getQuery(null);
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list);
-        } else {
+        
+        String resourceURL = String.format(defaultConfigAllTemplate, props.getCmServerURL());
+        ResponseEntity<DefaultConfigMap> response = restTemplate.getForEntity(resourceURL, DefaultConfigMap.class);
+
+        if(response.getStatusCode().is2xxSuccessful()){
+            DefaultConfigMap configMap = response.getBody();
+            ArrayList<DefaultConfig> results = new ArrayList<>(configMap.values());
+            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(results);
+        }else{
             return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON)
                     .body(new ArrayList<DefaultConfig>());
         }
@@ -115,11 +182,15 @@ public class ConfigController {
     @RequestMapping(value = "/config/intersection/all", method = RequestMethod.GET, produces = "application/json")
     @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
     public @ResponseBody ResponseEntity<List<IntersectionConfig>> intersection_config_all() {
-        Query query = intersectionConfigRepository.getQuery(null, null, null);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list);
-        } else {
+        
+
+        String resourceURL = String.format(intersectionConfigAllTemplate, props.getCmServerURL());
+        ResponseEntity<IntersectionConfigMap> response = restTemplate.getForEntity(resourceURL, IntersectionConfigMap.class);
+        if(response.getStatusCode().is2xxSuccessful()){
+            IntersectionConfigMap configMap = response.getBody();
+            ArrayList<IntersectionConfig> results = new ArrayList<>(configMap.listConfigs());
+            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(results);
+        }else{
             return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON)
                     .body(new ArrayList<IntersectionConfig>());
         }
@@ -132,11 +203,31 @@ public class ConfigController {
             @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
             @RequestParam(name = "intersection_id", required = true) int intersectionID) {
 
-        Query query = defaultConfigRepository.getQuery(null);
-        List<DefaultConfig> defaultList = defaultConfigRepository.find(query);
+        // Query Default Configuration
+        String defaultResourceURL = String.format(defaultConfigAllTemplate, props.getCmServerURL());
+        List<DefaultConfig> defaultList = new ArrayList<>();
+        ResponseEntity<DefaultConfigMap> defaultConfigResponse = restTemplate.getForEntity(defaultResourceURL, DefaultConfigMap.class);
+        if(defaultConfigResponse.getStatusCode().is2xxSuccessful()){
+            DefaultConfigMap configMap = defaultConfigResponse.getBody();
+            defaultList = new ArrayList<>(configMap.values());
+        }
+
+        // Query Intersection Configuration
+        List<IntersectionConfig> intersectionList = new ArrayList<>();
+        String intersectionResourceURL = String.format(intersectionConfigAllTemplate, props.getCmServerURL());
+        ResponseEntity<IntersectionConfigMap> intersectionConfigResponse = restTemplate.getForEntity(intersectionResourceURL, IntersectionConfigMap.class);
+        if(intersectionConfigResponse.getStatusCode().is2xxSuccessful()){
+            IntersectionConfigMap configMap = intersectionConfigResponse.getBody();
+            ArrayList<IntersectionConfig> results = new ArrayList<>(configMap.listConfigs());
+
+            for(IntersectionConfig config: results){
+                if(config.getRoadRegulatorID()== roadRegulatorID && config.getIntersectionID() == intersectionID){
+                    intersectionList.add(config);
+                }
+            }
+
+        }
 
-        query = intersectionConfigRepository.getQuery(null, roadRegulatorID, intersectionID);
-        List<IntersectionConfig> intersectionList = intersectionConfigRepository.find(query);
 
         List<Config> finalConfig = new ArrayList<>();
 
@@ -158,1139 +249,4 @@ public class ConfigController {
                     .body(new ArrayList<Config>());
         }
     }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/minimum_speed_threshold", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Double>> default_lane_direction_of_travel_minimum_speed_threshold() {
-
-        Query query = defaultConfigRepository.getQuery("ldot_minimum_speed_threshold");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/minimum_speed_threshold", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Double>> intersection_lane_direction_of_travel_minimum_speed_threshold(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ldot_minimum_speed_threshold", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/minimum_speed_threshold", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_minimum_speed_threshold(
-            @RequestBody DefaultConfig<Double> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/minimum_speed_threshold", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_minimum_speed_threshold(
-            @RequestBody IntersectionConfig<Double> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/minimum_number_of_points", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_lane_direction_of_travel_minimum_number_of_points() {
-        Query query = defaultConfigRepository.getQuery("ldot_minimum_number_of_points");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/minimum_number_of_points", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_lane_direction_of_travel_minimum_number_of_points(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ldot_minimum_number_of_points", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/minimum_number_of_points", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_minimum_number_of_points(
-            @RequestBody DefaultConfig<Integer> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/minimum_number_of_points", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_minimum_number_of_points(
-            @RequestBody IntersectionConfig<Integer> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/look_back_period", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Long>> default_lane_direction_of_travel_look_back_period() {
-        Query query = defaultConfigRepository.getQuery("ldot_look_back_period");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/look_back_period", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Long>> intersection_lane_direction_of_travel_look_back_period(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ldot_look_back_period", roadRegulatorID, intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/look_back_period", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_look_back_period(
-            @RequestBody DefaultConfig<Long> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/look_back_period", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_look_back_period(
-            @RequestBody IntersectionConfig<Long> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/heading_tolerance", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Double>> default_lane_direction_of_travel_heading_tolerance() {
-        Query query = defaultConfigRepository.getQuery("ldot_heading_tolerance");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/heading_tolerance", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Double>> intersection_lane_direction_of_travel_heading_tolerance(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ldot_heading_tolerance", roadRegulatorID, intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/heading_tolerance", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_heading_tolerance(
-            @RequestBody DefaultConfig<Double> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/heading_tolerance", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_heading_tolerance(
-            @RequestBody IntersectionConfig<Double> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/minimum_number_of_events", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_lane_direction_of_travel_minimum_number_of_events() {
-        Query query = defaultConfigRepository.getQuery("ldot_minimum_number_of_events");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/minimum_number_of_events", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_lane_direction_of_travel_minimum_number_of_events(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ldot_minimum_number_of_events", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/lane_direction_of_travel/minimum_number_of_events", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_minimum_number_of_events(
-            @RequestBody DefaultConfig<Integer> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/lane_direction_of_travel/minimum_number_of_events", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_lane_direction_of_travel_minimum_number_of_events(
-            @RequestBody IntersectionConfig<Integer> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/maximum_distance_from_stopbar", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Double>> default_signal_state_maximum_distance_from_stopbar() {
-        Query query = defaultConfigRepository.getQuery("ss_maximum_distance_from_stopbar");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/maximum_distance_from_stopbar", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Double>> intersection_signal_state_maximum_distance_from_stopbar(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ss_maximum_distance_from_stopbar", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/maximum_distance_from_stopbar", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_maximum_distance_from_stopbar(
-            @RequestBody DefaultConfig<Double> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/maximum_distance_from_stopbar", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_maximum_distance_from_stopbar(
-            @RequestBody IntersectionConfig<Double> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/heading_tolerance", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Double>> default_signal_state_heading_tolerance() {
-        Query query = defaultConfigRepository.getQuery("ss_heading_tolerance");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/heading_tolerance", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Double>> intersection_signal_state_heading_tolerance(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ss_heading_tolerance", roadRegulatorID, intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/heading_tolerance", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_heading_tolerance(
-            @RequestBody DefaultConfig<Double> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/heading_tolerance", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_heading_tolerance(
-            @RequestBody IntersectionConfig newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/look_back_period", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Long>> default_signal_state_look_back_period() {
-        Query query = defaultConfigRepository.getQuery("ss_look_back_period");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/look_back_period", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Long>> intersection_signal_state_look_back_period(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ss_look_back_period", roadRegulatorID, intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/look_back_period", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_look_back_period(
-            @RequestBody DefaultConfig<Long> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/look_back_period", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_look_back_period(
-            @RequestBody IntersectionConfig<Long> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/minimum_red_light_percentage_threshold", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Double>> default_signal_state_minimum_red_light_percentage_threshold() {
-        Query query = defaultConfigRepository.getQuery("ss_minimum_red_light_percentage_threshold");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/minimum_red_light_percentage_threshold", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Double>> intersection_signal_state_minimum_red_light_percentage_threshold(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ss_minimum_red_light_percentage_threshold",
-                roadRegulatorID, intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/minimum_red_light_percentage_threshold", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_minimum_red_light_percentage_threshold(
-            @RequestBody DefaultConfig<Double> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/minimum_red_light_percentage_threshold", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_minimum_red_light_percentage_threshold(
-            @RequestBody IntersectionConfig newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/minimum_number_of_events", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_signal_state_minimum_number_of_events() {
-        Query query = defaultConfigRepository.getQuery("ss_minimum_number_of_events");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/minimum_number_of_events", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_signal_state_minimum_number_of_events(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ss_minimum_number_of_events", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/minimum_number_of_events", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_minimum_number_of_events(
-            @RequestBody DefaultConfig<Integer> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/minimum_number_of_events", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_minimum_number_of_events(
-            @RequestBody IntersectionConfig newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/red_light_running_minimum_speed", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Double>> default_signal_state_red_light_running_minimum_speed() {
-        Query query = defaultConfigRepository.getQuery("ss_red_light_running_minimum_speed");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/red_light_running_minimum_speed", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Double>> intersection_signal_state_red_light_running_minimum_speed(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("ss_red_light_running_minimum_speed", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/signal_state/red_light_running_minimum_speed", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_red_light_running_minimum_speed(
-            @RequestBody DefaultConfig<Double> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/signal_state/red_light_running_minimum_speed", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_signal_state_red_light_running_minimum_speed(
-            @RequestBody IntersectionConfig<Double> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/connection_of_travel/look_back_period", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Long>> default_connection_of_travel_look_back_period() {
-        Query query = defaultConfigRepository.getQuery("cot_look_back_period");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/connection_of_travel/look_back_period", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Long>> intersection_connection_of_travel_look_back_period(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-        Query query = intersectionConfigRepository.getQuery("cot_look_back_period", roadRegulatorID, intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/connection_of_travel/look_back_period", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_connection_of_travel_look_back_period(
-            @RequestBody DefaultConfig<Long> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/connection_of_travel/look_back_period", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_connection_of_travel_look_back_period(
-            @RequestBody IntersectionConfig<Long> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/connection_of_travel/minimum_number_of_events", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_connection_of_travel_minimum_number_of_events() {
-        Query query = defaultConfigRepository.getQuery("cot_minimum_number_of_events");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/connection_of_travel/minimum_number_of_events", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_connection_of_travel_minimum_number_of_events(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("cot_minimum_number_of_events", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/connection_of_travel/minimum_number_of_events", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_connection_of_travel_minimum_number_of_events(
-            @RequestBody DefaultConfig<Integer> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/connection_of_travel/minimum_number_of_events", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_connection_of_travel_minimum_number_of_events(
-            @RequestBody IntersectionConfig<Integer> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/v2x_message_processing_frequency", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_general_v2x_message_processing_frequency() {
-        Query query = defaultConfigRepository.getQuery("g_v2x_message_processing_frequency");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/v2x_message_processing_frequency", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_general_v2x_message_processing_frequency(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("g_v2x_message_processing_frequency", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/v2x_message_processing_frequency", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_v2x_message_processing_frequency(
-            @RequestBody DefaultConfig newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/v2x_message_processing_frequency", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_v2x_message_processing_frequency(
-            @RequestBody IntersectionConfig<Integer> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/message_storage_period", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Long>> default_general_message_storage_period() {
-        Query query = defaultConfigRepository.getQuery("g_message_storage_period");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/message_storage_period", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Long>> intersection_general_message_storage_period(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("g_message_storage_period", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/message_storage_period", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_message_storage_period(
-            @RequestBody DefaultConfig<Long> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/message_storage_period", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_message_storage_period(
-            @RequestBody IntersectionConfig<Long> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/spat_minimum_10_second_reception", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_general_spat_minimum_10_second_reception() {
-        Query query = defaultConfigRepository.getQuery("g_spat_minimum_10_second_reception");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/spat_minimum_10_second_reception", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_general_spat_minimum_10_second_reception(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-        Query query = intersectionConfigRepository.getQuery("g_spat_minimum_10_second_reception", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/spat_minimum_10_second_reception", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_spat_minimum_10_second_reception(
-            @RequestBody DefaultConfig<Integer> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/spat_minimum_10_second_reception", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_spat_minimum_10_second_reception(
-            @RequestBody IntersectionConfig<Integer> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/spat_maximum_10_second_reception", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_general_spat_maximum_10_second_reception() {
-        Query query = defaultConfigRepository.getQuery("g_spat_maximum_10_second_reception");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/spat_maximum_10_second_reception", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_general_spat_maximum_10_second_reception(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("g_spat_maximum_10_second_reception", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/spat_maximum_10_second_reception", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_spat_maximum_10_second_reception(
-            @RequestBody DefaultConfig<Integer> newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/spat_maximum_10_second_reception", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_spat_maximum_10_second_reception(
-            @RequestBody IntersectionConfig<Integer> newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/map_minimum_10_second_reception", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_general_map_minimum_10_second_reception() {
-        Query query = defaultConfigRepository.getQuery("g_map_minimum_10_second_reception");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/map_minimum_10_second_reception", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_general_map_minimum_10_second_reception(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("g_map_minimum_10_second_reception", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/map_minimum_10_second_reception", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_map_minimum_10_second_reception(
-            @RequestBody DefaultConfig newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/map_minimum_10_second_reception", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_map_minimum_10_second_reception(
-            @RequestBody IntersectionConfig newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/map_maximum_10_second_reception", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<DefaultConfig<Integer>> default_general_map_maximum_10_second_reception() {
-        Query query = defaultConfigRepository.getQuery("g_map_maximum_10_second_reception");
-        List<DefaultConfig> list = defaultConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/map_maximum_10_second_reception", method = RequestMethod.GET, produces = "application/json")
-    @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<IntersectionConfig<Integer>> intersection_general_map_maximum_10_second_reception(
-            @RequestParam(name = "road_regulator_id", required = true) int roadRegulatorID,
-            @RequestParam(name = "intersection_id", required = true) int intersectionID) {
-
-        Query query = intersectionConfigRepository.getQuery("g_map_maximum_10_second_reception", roadRegulatorID,
-                intersectionID);
-        List<IntersectionConfig> list = intersectionConfigRepository.find(query);
-        if (list.size() > 0) {
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(list.get(0));
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(null);
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/default/general/map_maximum_10_second_reception", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_map_maximum_10_second_reception(
-            @RequestBody DefaultConfig newConfig) {
-        try {
-            defaultConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
-
-    @CrossOrigin(origins = "http://localhost:3000")
-    @RequestMapping(value = "/config/intersection/general/map_maximum_10_second_reception", method = RequestMethod.POST, produces = "application/json")
-    @PreAuthorize("hasRole('ADMIN')")
-    public @ResponseBody ResponseEntity<String> default_general_map_maximum_10_second_reception(
-            @RequestBody IntersectionConfig newConfig) {
-        try {
-            intersectionConfigRepository.save(newConfig);
-            return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON)
-                    .body(newConfig.toString());
-        } catch (Exception e) {
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).contentType(MediaType.TEXT_PLAIN)
-                    .body(ExceptionUtils.getStackTrace(e));
-        }
-    }
 }
\ No newline at end of file
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/UserController.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/UserController.java
index 704ffba77..a984314e5 100644
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/UserController.java
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/UserController.java
@@ -41,8 +41,6 @@
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.ResponseBody;
-
-// import us.dot.its.jpo.ode.api.EmailService;
 import us.dot.its.jpo.ode.api.ConflictMonitorApiProperties;
 
 @RestController
@@ -143,11 +141,6 @@ public ResponseEntity<List<UserCreationRequest>> findUserCreationRequests(
             @RequestBody UserCreationRequest newUserCreationRequest) {
         try {
 
-            // EmailServiceImpl email = new EmailServiceImpl();
-            
-            
-            
-
             UserRepresentation user = new UserRepresentation();
             user.setUsername(newUserCreationRequest.getEmail());
             user.setEmail(newUserCreationRequest.getEmail());
@@ -157,7 +150,6 @@ public ResponseEntity<List<UserCreationRequest>> findUserCreationRequests(
             
             
             List<String> groups = new ArrayList<>();
-            List<String> roles= new ArrayList<>();
 
             EmailSettings settings = new EmailSettings();
 
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/serialization/DefaultConfigDeserializer.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/serialization/DefaultConfigDeserializer.java
new file mode 100644
index 000000000..3bf035d84
--- /dev/null
+++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/serialization/DefaultConfigDeserializer.java
@@ -0,0 +1,13 @@
+package us.dot.its.jpo.ode.api.serialization;
+
+import us.dot.its.jpo.conflictmonitor.monitor.models.config.DefaultConfig;
+import us.dot.its.jpo.conflictmonitor.monitor.serialization.deserialization.GenericJsonDeserializer;
+
+public class DefaultConfigDeserializer extends GenericJsonDeserializer<DefaultConfig>{
+
+    public DefaultConfigDeserializer() {
+        super(DefaultConfig.class);
+        //TODO Auto-generated constructor stub
+    }
+    
+}
diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/services/KafkaProducerService.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/services/KafkaProducerService.java
deleted file mode 100644
index bbdabf41e..000000000
--- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/services/KafkaProducerService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// package us.dot.its.jpo.ode.api.services;
-
-// import org.springframework.beans.factory.annotation.Autowired;
-// import org.springframework.kafka.core.KafkaTemplate;
-// import org.springframework.stereotype.Service;
-
-// @Service
-// public class KafkaProducerService {
-
-//     private final KafkaTemplate<String, String> kafkaTemplate;
-
-//     @Autowired
-//     public KafkaProducerService(KafkaTemplate<String, String> kafkaTemplate) {
-//         this.kafkaTemplate = kafkaTemplate;
-//     }
-
-//     public void sendMessage(String topic, String message) {
-//         kafkaTemplate.send(topic, message);
-//         System.out.println("Message sent to topic: " + topic);
-//     }
-// }
\ No newline at end of file
diff --git a/jpo-conflictvisualizer-api/src/main/resources/application.properties.example b/jpo-conflictvisualizer-api/src/main/resources/application.properties.example
index ce6a6596a..9b467cb45 100644
--- a/jpo-conflictvisualizer-api/src/main/resources/application.properties.example
+++ b/jpo-conflictvisualizer-api/src/main/resources/application.properties.example
@@ -7,7 +7,7 @@ spring.data.mongodb.database=ConflictMonitor
 spring.data.mongodb.host=${DOCKER_HOST_IP:localhost}
 spring.data.mongodb.port=27017
 
-
+cmServerURL = ${CM_SERVER_URL:http://localhost:8082}
 cors=*
 maximumResponseSize=10000
 
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/ConfigTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/ConfigTest.java
index 4a36df85d..a99d7c695 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/ConfigTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/ConfigTest.java
@@ -1,105 +1,122 @@
-package us.dot.its.jpo.ode.api;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.data.mongodb.core.query.Query;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import us.dot.its.jpo.conflictmonitor.monitor.models.config.DefaultConfig;
-import us.dot.its.jpo.conflictmonitor.monitor.models.config.IntersectionConfig;
-import us.dot.its.jpo.conflictmonitor.monitor.models.config.UnitsEnum;
-import us.dot.its.jpo.ode.api.accessors.config.DefaultConfig.DefaultConfigRepository;
-import us.dot.its.jpo.ode.api.accessors.config.IntersectionConfig.IntersectionConfigRepository;
-import us.dot.its.jpo.ode.api.controllers.ConfigController;
-
-
-@SpringBootTest
-@RunWith(SpringRunner.class)
-public class ConfigTest {
-
-  @Autowired
-  ConfigController controller;
-
-  @MockBean
-  DefaultConfigRepository defaultConfigRepo;
-
-  @MockBean
-  IntersectionConfigRepository intersectionConfigRepo;
-
-  @Test
-  public void testDefaultSignalStateRedLightRunningMinimumSpeed_found() {
-    MockKeyCloakAuth.setSecurityContextHolder("cm_user", Set.of("USER"));
-    List<DefaultConfig> list = new ArrayList<>();
-    list.add(new DefaultConfig("ss-red-light-running-minimum-speed", "signal-state", 5.0, "Double",UnitsEnum.MILES_PER_HOUR, "Minimum Red Light Speed"));
+// package us.dot.its.jpo.ode.api;
+
+// import static org.assertj.core.api.Assertions.assertThat;
+// import static org.junit.Assert.assertEquals;
+// import static org.mockito.ArgumentMatchers.anyString;
+// import static org.mockito.ArgumentMatchers.eq;
+// import static org.mockito.Mockito.when;
+
+// import java.util.ArrayList;
+// import java.util.List;
+// import java.util.Set;
+
+// import org.junit.Test;
+// import org.junit.jupiter.api.BeforeEach;
+// import org.junit.runner.RunWith;
+// import org.mockito.InjectMocks;
+// import org.mockito.Mock;
+// import org.mockito.MockitoAnnotations;
+// import org.springframework.beans.factory.annotation.Autowired;
+// import org.springframework.boot.test.context.SpringBootTest;
+// import org.springframework.boot.test.mock.mockito.MockBean;
+// import org.springframework.http.HttpStatus;
+// import org.springframework.http.MediaType;
+// import org.springframework.http.ResponseEntity;
+// import org.springframework.test.context.junit4.SpringRunner;
+// import org.springframework.web.client.RestTemplate;
+
+
+// import us.dot.its.jpo.conflictmonitor.monitor.models.config.DefaultConfig;
+// import us.dot.its.jpo.conflictmonitor.monitor.models.config.DefaultConfigMap;
+// import us.dot.its.jpo.conflictmonitor.monitor.models.config.UnitsEnum;
+// import us.dot.its.jpo.ode.api.accessors.config.DefaultConfig.DefaultConfigRepository;
+// import us.dot.its.jpo.ode.api.accessors.config.IntersectionConfig.IntersectionConfigRepository;
+// import us.dot.its.jpo.ode.api.controllers.ConfigController;
+
+
+// @SpringBootTest
+// @RunWith(SpringRunner.class)
+// public class ConfigTest {
+
+//     @Mock
+//     RestTemplate restTemplate;
+
+//     @InjectMocks
+//     @Autowired
+//     ConfigController controller;
+
+//     @MockBean
+//     DefaultConfigRepository defaultConfigRepo;
+
+//     @MockBean
+//     IntersectionConfigRepository intersectionConfigRepo;
+
+//     @BeforeEach
+//     void setUp() {
+//         MockitoAnnotations.openMocks(this);
+//     }
+
+// //   @Test
+// //   public void testIntersectionSignalStateRedLightRunningMinimumSpeed_found() {
+// //     MockKeyCloakAuth.setSecurityContextHolder("cm_user", Set.of("USER"));
+// //     int roadRegulatorID = 12345;
+// //     int intersectionID = 1;
+// //     List<IntersectionConfig> list = new ArrayList<>();
+// //     list.add(new IntersectionConfig<Double>("ss-red-light-running-minimum-speed", "signal-state", roadRegulatorID, intersectionID, 5.0, "Double", UnitsEnum.MILES_PER_HOUR, "Minimum Red Light Speed"));
+// //     // public IntersectionConfig(String key, String category, int roadRegulatorID, int intersectionID, T value, String type, UnitsEnum units, String description){
     
-    Query query = defaultConfigRepo.getQuery("ss-red-light-running-minimum-speed");
-    when(defaultConfigRepo.find(query)).thenReturn(list);
-
-    ResponseEntity<DefaultConfig<Double>> result = controller.default_signal_state_red_light_running_minimum_speed();
-    assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
-    assertThat(result.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON);
-    assertThat(result.getBody()).isEqualTo(list.get(0));
-  }
-
-  @Test
-  public void testDefaultSignalStateRedLightRunningMinimumSpeed_notFound() {
-    MockKeyCloakAuth.setSecurityContextHolder("cm_user", Set.of("USER"));
-    int roadRegulatorID = 67890;
-    int intersectionID = 2;
-    List<DefaultConfig> list = new ArrayList<>();
-    Query query = intersectionConfigRepo.getQuery("ss-red-light-running-minimum-speed", roadRegulatorID, intersectionID);
-    when(defaultConfigRepo.find(query)).thenReturn(list);
-
-    ResponseEntity<DefaultConfig<Double>> result = controller.default_signal_state_red_light_running_minimum_speed();
-    assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
-    assertThat(result.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON);
-    assertEquals(null, result.getBody());
-  }
-
-
-  @Test
-  public void testIntersectionSignalStateRedLightRunningMinimumSpeed_found() {
-    MockKeyCloakAuth.setSecurityContextHolder("cm_user", Set.of("USER"));
-    int roadRegulatorID = 12345;
-    int intersectionID = 1;
-    List<IntersectionConfig> list = new ArrayList<>();
-    list.add(new IntersectionConfig("ss-red-light-running-minimum-speed", "signal-state", roadRegulatorID, intersectionID, "1", 5.0, "Double",UnitsEnum.MILES_PER_HOUR, "Minimum Red Light Speed"));
+// //     Query query = intersectionConfigRepo.getQuery("ss-red-light-running-minimum-speed", roadRegulatorID, intersectionID);
+// //     when(intersectionConfigRepo.find(query)).thenReturn(list);
+
+// //     ResponseEntity<IntersectionConfig<Double>> result = controller.intersection_config(roadRegulatorID, intersectionID);
+// //     assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
+// //     assertThat(result.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON);
+// //     assertThat(result.getBody()).isEqualTo(list.get(0));
+// //   }
+
+// //   @Test
+// //   public void testIntersectionSignalStateRedLightRunningMinimumSpeed_notFound() {
+// //     MockKeyCloakAuth.setSecurityContextHolder("cm_user", Set.of("USER"));
+// //     int roadRegulatorID = 67890;
+// //     int intersectionID = 2;
+// //     List<IntersectionConfig> list = new ArrayList<>();
+// //     Query query = intersectionConfigRepo.getQuery("ss-red-light-running-minimum-speed", roadRegulatorID, intersectionID);
+// //     when(intersectionConfigRepo.find(query)).thenReturn(list);
+
+// //     ResponseEntity<IntersectionConfig<Double>> result = controller.intersection_signal_state_red_light_running_minimum_speed(roadRegulatorID, intersectionID);
+// //     assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
+// //     assertThat(result.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON);
+// //     assertEquals(null, result.getBody());
+// //   }
+
+//     // @Test
+//     // public void testDefaultConfigAll() {
+
+//     //     MockKeyCloakAuth.setSecurityContextHolder("cm_user", Set.of("USER"));
+        
+//     //     DefaultConfigMap defaultConfigMap = new DefaultConfigMap();
+
+//     //     DefaultConfig<Double> test = new DefaultConfig<Double>("ss-red-light-running-minimum-speed", "signal-state", 5.0, "Double", UnitsEnum.MILES_PER_HOUR, "Minimum Red Light Speed");
+
+//     //     defaultConfigMap.put("ss-red-light-running-minimum-speed", test);
+//     //     defaultConfigMap.put("test", test);
+
+        
+
+//     //     when(restTemplate.getForEntity(anyString(), eq(DefaultConfigMap.class)))
+//     //             .thenReturn(new ResponseEntity<>(defaultConfigMap, HttpStatus.OK));
+
     
-    Query query = intersectionConfigRepo.getQuery("ss-red-light-running-minimum-speed", roadRegulatorID, intersectionID);
-    when(intersectionConfigRepo.find(query)).thenReturn(list);
-
-    ResponseEntity<IntersectionConfig<Double>> result = controller.intersection_signal_state_red_light_running_minimum_speed(roadRegulatorID, intersectionID);
-    assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
-    assertThat(result.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON);
-    assertThat(result.getBody()).isEqualTo(list.get(0));
-  }
-
-  @Test
-  public void testIntersectionSignalStateRedLightRunningMinimumSpeed_notFound() {
-    MockKeyCloakAuth.setSecurityContextHolder("cm_user", Set.of("USER"));
-    int roadRegulatorID = 67890;
-    int intersectionID = 2;
-    List<IntersectionConfig> list = new ArrayList<>();
-    Query query = intersectionConfigRepo.getQuery("ss-red-light-running-minimum-speed", roadRegulatorID, intersectionID);
-    when(intersectionConfigRepo.find(query)).thenReturn(list);
-
-    ResponseEntity<IntersectionConfig<Double>> result = controller.intersection_signal_state_red_light_running_minimum_speed(roadRegulatorID, intersectionID);
-    assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
-    assertThat(result.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON);
-    assertEquals(null, result.getBody());
-  }
-}
\ No newline at end of file
+//     //     ResponseEntity<List<DefaultConfig>> responseEntity = controller.default_config_all();
+
+//     //     List<DefaultConfig> responseMap = responseEntity.getBody();
+
+//     //     System.out.println(responseMap.size());
+//     //     System.out.println(responseMap.get(0));
+
+//     //     assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
+//     //     assertEquals(MediaType.APPLICATION_JSON, responseEntity.getHeaders().getContentType());
+//     //     assertEquals(test, responseMap.get(0));
+//     // }
+
+// }
\ No newline at end of file
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/EmailSettingsTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/EmailSettingsTest.java
index add6b01e6..0aa839464 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/EmailSettingsTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/EmailSettingsTest.java
@@ -9,7 +9,6 @@
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
-import us.dot.its.jpo.ode.api.models.EmailFrequency;
 import us.dot.its.jpo.ode.api.models.EmailSettings;
 
 @SpringBootTest
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/ConnectionOfTravelAssessmentRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/ConnectionOfTravelAssessmentRepositoryImplTest.java
index 5e7b60e99..60464219a 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/ConnectionOfTravelAssessmentRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/ConnectionOfTravelAssessmentRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -53,8 +54,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("assessmentGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/LaneDirectionOfTravelAssessmentRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/LaneDirectionOfTravelAssessmentRepositoryImplTest.java
index 69305e510..4fbe8c1e0 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/LaneDirectionOfTravelAssessmentRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/LaneDirectionOfTravelAssessmentRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -53,8 +54,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("assessmentGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/SignalStateEventAssessmentRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/SignalStateEventAssessmentRepositoryImplTest.java
index f0380b9e0..94ea344ce 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/SignalStateEventAssessmentRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/SignalStateEventAssessmentRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -53,8 +54,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("assessmentGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/StopLineStopAssessmentRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/StopLineStopAssessmentRepositoryImplTest.java
index 716788621..f27ad07dd 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/StopLineStopAssessmentRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/assessments/StopLineStopAssessmentRepositoryImplTest.java
@@ -13,6 +13,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -55,8 +56,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("assessmentGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/ConnectionOfTravelNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/ConnectionOfTravelNotificationRepositoryImplTest.java
index 7d4e6fe22..1e37e5d85 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/ConnectionOfTravelNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/ConnectionOfTravelNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/IntersectionReferenceAlignmentNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/IntersectionReferenceAlignmentNotificationRepositoryImplTest.java
index ed3629597..8badde4ef 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/IntersectionReferenceAlignmentNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/IntersectionReferenceAlignmentNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/LaneDirectionOfTravelNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/LaneDirectionOfTravelNotificationRepositoryImplTest.java
index 49fbca0d8..bec862f44 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/LaneDirectionOfTravelNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/LaneDirectionOfTravelNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/MapBroadcastRateNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/MapBroadcastRateNotificationRepositoryImplTest.java
index a80c80523..3e7443d7d 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/MapBroadcastRateNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/MapBroadcastRateNotificationRepositoryImplTest.java
@@ -13,6 +13,7 @@
 import us.dot.its.jpo.conflictmonitor.monitor.models.notifications.broadcast_rate.MapBroadcastRateNotification;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -53,8 +54,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SignalGroupAlignmentNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SignalGroupAlignmentNotificationRepositoryImplTest.java
index 98beceda2..fb1e7d0ce 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SignalGroupAlignmentNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SignalGroupAlignmentNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SignalStateConflictNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SignalStateConflictNotificationRepositoryImplTest.java
index 05f040d90..855f598c2 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SignalStateConflictNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SignalStateConflictNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SpatBroadcastRateNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SpatBroadcastRateNotificationRepositoryImplTest.java
index 5727da028..f849d7c7d 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SpatBroadcastRateNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/SpatBroadcastRateNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/StopLinePassageNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/StopLinePassageNotificationRepositoryImplTest.java
index f4b7bb300..c2010d3d8 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/StopLinePassageNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/StopLinePassageNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/StopLineStopNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/StopLineStopNotificationRepositoryImplTest.java
index f978020af..63e19502a 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/StopLineStopNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/StopLineStopNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit
diff --git a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/TimeChangeDetailsNotificationRepositoryImplTest.java b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/TimeChangeDetailsNotificationRepositoryImplTest.java
index f7e895eb7..f5bed3ede 100644
--- a/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/TimeChangeDetailsNotificationRepositoryImplTest.java
+++ b/jpo-conflictvisualizer-api/src/test/java/us/dot/its/jpo/ode/api/accessorTests/notifications/TimeChangeDetailsNotificationRepositoryImplTest.java
@@ -12,6 +12,7 @@
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.Document;
@@ -54,8 +55,8 @@ public void testGetQuery() {
         
         // Assert Start and End Time
         Document queryTimeDocument = (Document)query.getQueryObject().get("notificationGeneratedAt");
-        assertThat(queryTimeDocument.getLong("$gte")).isEqualTo(startTime);
-        assertThat(queryTimeDocument.getLong("$lte")).isEqualTo(endTime);
+        assertThat(queryTimeDocument.getDate("$gte")).isEqualTo(new Date(startTime));
+        assertThat(queryTimeDocument.getDate("$lte")).isEqualTo(new Date(endTime));
 
 
         // Assert sorting and limit