diff --git a/utils/proxy.py b/utils/proxy.py
index 8014a6d8a0fda1e596e38a880de419daa10fdb36..5c9a016c80b135a001c684595c0ad0d47f233f99 100644
--- a/utils/proxy.py
+++ b/utils/proxy.py
@@ -203,6 +203,37 @@ class Applier(object):
         else:
             return False
 
+    def get_existing_config_xml(self):
+        retriever0 = Retriever(xml=None)
+        config_xml_running = retriever0.fetch_xml()
+        logger.info("proxy::get_existing_config(): config_xml_running="+str(config_xml_running))
+        return config_xml_running
+
+    def get_existing_config(self):
+        retriever0 = Retriever(xml=None)
+        config_parsed = retriever0.proccess_xml()
+        logger.info("proxy::get_existing_config(): config_parsed="+str(config_parsed))
+        return config_parsed
+
+    def get_existing_routes(self):
+        config_parsed = self.get_existing_config()
+        if config_parsed.routing_options and config_parsed.routing_options.__len__()>0:
+          flow = config_parsed.routing_options[0]
+          logger.info("proxy::get_existing_routes(): config_parsed.flow="+str(flow))
+          routes_existing = flow.routes
+          logger.info("proxy::get_existing_routes(): config_parsed.flow.routes="+str(routes_existing))
+          return routes_existing
+        else:
+          logger.info("proxy::get_existing_routes(): no routing_options or is empty")
+          return []
+
+    def get_existing_route_names(self):
+      routes_existing = self.get_existing_routes()
+      route_ids_existing = [route.name for route in routes_existing]
+      logger.info("proxy::get_existing_route_names(): config_parsed.flow.routes.ids="+str(route_ids_existing))
+      return route_ids_existing
+
+
     def apply(self, configuration = None, operation=None):
         reason = None
         if not configuration: