diff --git a/edge-monitoring/VERSION b/edge-monitoring/VERSION
index cb0c939..be14282 100644
--- a/edge-monitoring/VERSION
+++ b/edge-monitoring/VERSION
@@ -1 +1 @@
-0.5.2
+0.5.3
diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring/edge_monitoring_server.py
index 2d0a9ed..4b935c6 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring/edge_monitoring_server.py
@@ -208,6 +208,7 @@
 
 
 @app.route('/edges', methods=['POST'])
+@app.route('/testresults', methods=['POST'])
 def create_or_update_edge():
     if not request.json:
         abort(400)
@@ -238,6 +239,7 @@
 
 
 @app.route('/edges/<string:name>', methods=['DELETE'])
+@app.route('/testresults/<string:name>', methods=['DELETE'])
 def delete_edge(name):
     print("delete edge request " + name)
     result = False
diff --git a/edge-monitoring/test_edge_monitoring_server.py b/edge-monitoring/test_edge_monitoring_server.py
index ac4b8b9..9aad259 100755
--- a/edge-monitoring/test_edge_monitoring_server.py
+++ b/edge-monitoring/test_edge_monitoring_server.py
@@ -122,7 +122,7 @@
         self.assertEqual(len(data['edges']), 1)
         self.assertEqual(data['edges'][0]['name'], 'ace-example')
 
-    def test_create_and_delete_edge(self):
+    def test_create_and_delete_edge_legacy(self):
         response = self.app.post('/edges', json=test_edge)
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
@@ -155,6 +155,38 @@
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(len(data['edges']), 1)
 
+    def test_create_and_delete_edge(self):
+        response = self.app.post('/testresults', json=test_edge)
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+
+        response = self.app.get('/edges')
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(len(data['edges']), 2)
+
+        response = self.app.get('/edges/metrics')
+        data = response.get_data(as_text=True)
+        print(data)
+        self.assertTrue('aetheredge_status_control_plane{name="ace-menlo-pixel"} 2.0' in data)
+        self.assertTrue('aetheredge_status_user_plane{name="ace-menlo-pixel"} 2.0' in data)
+        self.assertTrue('aetheredge_last_update{name="ace-menlo-pixel"}' in data)
+        self.assertTrue('aetheredge_connect_test_ok{name="ace-menlo-pixel"} 1.0' in data)
+        self.assertTrue('aetheredge_ping_test_ok{name="ace-menlo-pixel"} 1.0' in data)
+        self.assertTrue('aetheredge_e2e_tests_ok{name="ace-menlo-pixel"} 1.0' in data)
+        self.assertTrue('aetheredge_e2e_tests_down{name="ace-menlo-pixel"} 0.0' in data)
+
+        response = self.app.delete('/testresults/ace-menlo-pixel')
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(data['result'], True)
+
+        response = self.app.get('/edges/metrics')
+        data = response.get_data(as_text=True)
+        print(data)
+        self.assertFalse('ace-menlo-pixel' in data)
+
+        response = self.app.get('/edges')
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(len(data['edges']), 1)
 
 if __name__ == '__main__':
     suite = unittest.TestLoader().loadTestsFromTestCase(TestEdgeMonitoringServer)
