Merge "Fix policy status issue"
diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
index 0ebaab5..b24bc99 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
@@ -30,6 +30,9 @@
 import java.io.IOException;

 import java.util.Date;

 

+import org.apache.camel.CamelContext;

+import org.apache.camel.Exchange;

+import org.apache.camel.builder.ExchangeBuilder;

 import org.json.simple.JSONArray;

 import org.json.simple.JSONObject;

 import org.json.simple.parser.JSONParser;

@@ -38,7 +41,6 @@
 import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse;

 import org.onap.clamp.clds.util.JsonUtils;

 import org.onap.clamp.clds.util.LoggingUtils;

-import org.onap.clamp.util.HttpConnectionManager;

 import org.springframework.beans.factory.annotation.Autowired;

 import org.springframework.stereotype.Component;

 

@@ -48,6 +50,9 @@
 @Component

 public class DcaeInventoryServices {

 

+    @Autowired

+    CamelContext camelContext;

+

     protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeInventoryServices.class);

     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();

     protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();

@@ -55,15 +60,13 @@
     public static final String DCAE_INVENTORY_RETRY_INTERVAL = "dcae.intentory.retry.interval";

     public static final String DCAE_INVENTORY_RETRY_LIMIT = "dcae.intentory.retry.limit";

     private final ClampProperties refProp;

-    private final HttpConnectionManager httpConnectionManager;

 

     /**

      * Constructor.

      */

     @Autowired

-    public DcaeInventoryServices(ClampProperties refProp, HttpConnectionManager httpConnectionManager) {

+    public DcaeInventoryServices(ClampProperties refProp) {

         this.refProp = refProp;

-        this.httpConnectionManager = httpConnectionManager;

     }

 

     private int getTotalCountFromDcaeInventoryResponse(String responseStr) throws ParseException {

@@ -96,19 +99,7 @@
     public DcaeInventoryResponse getDcaeInformation(String artifactName, String serviceUuid, String resourceUuid)

             throws IOException, ParseException, InterruptedException {

         LoggingUtils.setTargetContext("DCAE", "getDcaeInformation");

-        String queryString = "?asdcResourceId=" + resourceUuid + "&asdcServiceId=" + serviceUuid + "&typeName="

-                + artifactName;

-        String fullUrl = refProp.getStringValue(DCAE_INVENTORY_URL) + "/dcae-service-types" + queryString;

-        logger.info("Dcae Inventory Service full url - " + fullUrl);

-        DcaeInventoryResponse response = queryDcaeInventory(fullUrl);

-        LoggingUtils.setResponseContext("0", "Get Dcae Information success", this.getClass().getName());

-        Date startTime = new Date();

-        LoggingUtils.setTimeContext(startTime, new Date());

-        return response;

-    }

 

-    private DcaeInventoryResponse queryDcaeInventory(String fullUrl)

-            throws IOException, InterruptedException, ParseException {

         int retryInterval = 0;

         int retryLimit = 1;

         if (refProp.getStringValue(DCAE_INVENTORY_RETRY_LIMIT) != null) {

@@ -118,18 +109,31 @@
             retryInterval = Integer.valueOf(refProp.getStringValue(DCAE_INVENTORY_RETRY_INTERVAL));

         }

         for (int i = 0; i < retryLimit; i++) {

+            Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)

+                    .withProperty("blueprintResourceId", resourceUuid).withProperty("blueprintServiceId", serviceUuid)

+                    .withProperty("blueprintName", artifactName).build();

             metricsLogger.info("Attempt n°" + i + " to contact DCAE inventory");

-            String response = httpConnectionManager.doHttpRequest(fullUrl, "GET", null, null, "DCAE", null, null);

-            int totalCount = getTotalCountFromDcaeInventoryResponse(response);

-            metricsLogger.info("getDcaeInformation complete: totalCount returned=" + totalCount);

-            if (totalCount > 0) {

-                logger.info("getDcaeInformation, answer from DCAE inventory:" + response);

-                return getItemsFromDcaeInventoryResponse(response);

+

+            Exchange exchangeResponse = camelContext.createProducerTemplate()

+                    .send("direct:get-dcae-blueprint-inventory", myCamelExchange);

+

+            if (Integer.valueOf(200).equals(exchangeResponse.getIn().getHeader("CamelHttpResponseCode"))) {

+                String dcaeResponse = (String) exchangeResponse.getIn().getBody();

+                int totalCount = getTotalCountFromDcaeInventoryResponse(dcaeResponse);

+                metricsLogger.info("getDcaeInformation complete: totalCount returned=" + totalCount);

+                if (totalCount > 0) {

+                    logger.info("getDcaeInformation, answer from DCAE inventory:" + dcaeResponse);

+                    LoggingUtils.setResponseContext("0", "Get Dcae Information success", this.getClass().getName());

+                    Date startTime = new Date();

+                    LoggingUtils.setTimeContext(startTime, new Date());

+                    return getItemsFromDcaeInventoryResponse(dcaeResponse);

+                } else {

+                    logger.info("Dcae inventory totalCount returned is 0, so waiting " + retryInterval

+                            + "ms before retrying ...");

+                    // wait for a while and try to connect to DCAE again

+                    Thread.sleep(retryInterval);

+                }

             }

-            logger.info(

-                    "Dcae inventory totalCount returned is 0, so waiting " + retryInterval + "ms before retrying ...");

-            // wait for a while and try to connect to DCAE again

-            Thread.sleep(retryInterval);

         }

         logger.warn("Dcae inventory totalCount returned is still 0, after " + retryLimit + " attempts, returning NULL");

         return null;

diff --git a/src/main/java/org/onap/clamp/util/HttpConnectionManager.java b/src/main/java/org/onap/clamp/util/HttpConnectionManager.java
deleted file mode 100644
index 6459fa9..0000000
--- a/src/main/java/org/onap/clamp/util/HttpConnectionManager.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights
- *                             reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END============================================
- * Modifications copyright (c) 2018 Nokia
- * ===================================================================
- *
- */
-
-package org.onap.clamp.util;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.Base64;
-
-import javax.net.ssl.HttpsURLConnection;
-import javax.ws.rs.BadRequestException;
-
-import org.apache.commons.io.IOUtils;
-import org.onap.clamp.clds.util.LoggingUtils;
-import org.springframework.stereotype.Component;
-
-/**
- * This class manages the HTTP and HTTPS connections.
- */
-@Component
-public class HttpConnectionManager {
-    protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HttpConnectionManager.class);
-    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-    private static final String REQUEST_FAILED_LOG = "Request Failed - response payload=";
-
-    private String doHttpsQuery(URL url, String requestMethod, String payload, String contentType, String target,
-        String userName, String password) throws IOException {
-        LoggingUtils utils = new LoggingUtils(logger);
-        logger.info("Using HTTPS URL:" + url.toString());
-        HttpsURLConnection secureConnection = (HttpsURLConnection) url.openConnection();
-        secureConnection = utils.invokeHttps(secureConnection, target, requestMethod);
-        secureConnection.setRequestMethod(requestMethod);
-        if (userName != null && password != null) {
-            secureConnection.setRequestProperty("Authorization", "Basic "
-                + Base64.getEncoder().encodeToString((userName + ":" + password).getBytes(StandardCharsets.UTF_8)));
-        }
-        if (payload != null && contentType != null) {
-            secureConnection.setRequestProperty("Content-Type", contentType);
-            secureConnection.setDoOutput(true);
-            try (DataOutputStream wr = new DataOutputStream(secureConnection.getOutputStream())) {
-                wr.writeBytes(payload);
-                wr.flush();
-            }
-        }
-        int responseCode = secureConnection.getResponseCode();
-        logger.info("Response Code: " + responseCode);
-        if (responseCode < 400) {
-            try (BufferedReader reader = new BufferedReader(new InputStreamReader(secureConnection.getInputStream()))) {
-                String responseStr = IOUtils.toString(reader);
-                logger.info("Response Content: " + responseStr);
-                return responseStr;
-            }
-        } else {
-            // In case of connection failure just check whether there is a
-            // content or not
-            try (BufferedReader reader = new BufferedReader(new InputStreamReader(secureConnection.getErrorStream()))) {
-                String responseStr = IOUtils.toString(reader);
-                logger.error(REQUEST_FAILED_LOG + responseStr);
-                throw new BadRequestException(responseStr);
-            }
-        }
-    }
-
-    private String doHttpQuery(URL url, String requestMethod, String payload, String contentType, String target,
-        String userName, String password) throws IOException {
-        LoggingUtils utils = new LoggingUtils(logger);
-        logger.info("Using HTTP URL:" + url);
-        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-        connection = utils.invoke(connection, target, requestMethod);
-        connection.setRequestMethod(requestMethod);
-        if (userName != null && password != null) {
-            connection.setRequestProperty("Authorization", "Basic "
-                + Base64.getEncoder().encodeToString((userName + ":" + password).getBytes(StandardCharsets.UTF_8)));
-        }
-        if (payload != null && contentType != null) {
-            connection.setRequestProperty("Content-Type", contentType);
-            connection.setDoOutput(true);
-            try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) {
-                wr.writeBytes(payload);
-                wr.flush();
-            }
-        }
-        int responseCode = connection.getResponseCode();
-        logger.info("Response Code: " + responseCode);
-        if (responseCode < 400) {
-            try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
-                String responseStr = IOUtils.toString(reader);
-                logger.info("Response Content: " + responseStr);
-                utils.invokeReturn();
-                return responseStr;
-            }
-        } else {
-            // In case of connection failure just check whether there is a
-            // content or not
-            try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()))) {
-                String responseStr = IOUtils.toString(reader);
-                logger.error(REQUEST_FAILED_LOG + responseStr);
-                utils.invokeReturn();
-                throw new BadRequestException(responseStr);
-            }
-        }
-    }
-
-    /**
-     * This method does a HTTP/HTTPS query with parameters specified.
-     *
-     * @param url
-     *        The string HTTP or HTTPS that mustr be used to connect
-     * @param requestMethod
-     *        The Request Method (PUT, POST, GET, DELETE, etc ...)
-     * @param payload
-     *        The payload if any, in that case an ouputstream is opened
-     * @param contentType
-     *        The "application/json or application/xml, or whatever"
-     * @return The payload of the answer
-     * @throws IOException
-     *         In case of issue with the streams
-     */
-    public String doHttpRequest(String url, String requestMethod, String payload, String contentType, String target,
-        String userName, String password) throws IOException {
-        URL urlObj = new URL(url);
-        if (url.contains("https://")) { // Support for HTTPS
-            return doHttpsQuery(urlObj, requestMethod, payload, contentType, target, userName, password);
-        } else { // Support for HTTP
-            return doHttpQuery(urlObj, requestMethod, payload, contentType, target, userName, password);
-        }
-    }
-}
diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties
index 580ec3f..79466c8 100644
--- a/src/main/resources/application-noaaf.properties
+++ b/src/main/resources/application-noaaf.properties
@@ -208,15 +208,10 @@
 clamp.config.clds.service.cache.invalidate.after.seconds=120
 
 #DCAE Inventory Url Properties
-clamp.config.dcae.inventory.url=http://localhost:8085
+clamp.config.dcae.inventory.url=http4://localhost:8085
 clamp.config.dcae.intentory.retry.interval=10000
 clamp.config.dcae.intentory.retry.limit=5
 
-#DCAE Dispatcher Url Properties
-clamp.config.dcae.dispatcher.url=http://localhost:8085
-clamp.config.dcae.dispatcher.retry.interval=20000
-clamp.config.dcae.dispatcher.retry.limit=30
-
 #DCAE Deployment Url Properties
 clamp.config.dcae.deployment.url=http4://localhost:8085
 clamp.config.dcae.deployment.userName=test
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index dcad32e..64121c9 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -219,15 +219,10 @@
 clamp.config.clds.service.cache.invalidate.after.seconds=120
 
 #DCAE Inventory Url Properties
-clamp.config.dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080
+clamp.config.dcae.inventory.url=http4://dcae.api.simpledemo.onap.org:8080
 clamp.config.dcae.intentory.retry.interval=10000
 clamp.config.dcae.intentory.retry.limit=5
 
-#DCAE Dispatcher Url Properties
-clamp.config.dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8188
-clamp.config.dcae.dispatcher.retry.interval=20000
-clamp.config.dcae.dispatcher.retry.limit=30
-
 #DCAE Deployment Url Properties
 clamp.config.dcae.deployment.url=http4://dcae.api.simpledemo.onap.org:8188
 clamp.config.dcae.deployment.userName=test
@@ -249,7 +244,7 @@
 clamp.config.cadi.cadiLoglevel=DEBUG
 clamp.config.cadi.cadiLatitude=10
 clamp.config.cadi.cadiLongitude=10
-clamp.config.cadi.aafLocateUrl=https://aaf.api.simpledemo.onap.org:8095
+clamp.config.cadi.aafLocateUrl=https://10.0.0.106:31111
 clamp.config.cadi.cadiKeystorePassword=enc:V_kq_EwDNb4itWp_lYfDGXIWJzemHGkhkZOxAQI9IHs
 clamp.config.cadi.cadiTruststorePassword=enc:Mj0YQqNCUKbKq2lPp1kTFQWeqLxaBXKNwd5F1yB1ukf
 #clamp.config.cadi.oauthTokenUrl=https://AAF_LOCATE_URL/AAF_NS.token:2.0/token
diff --git a/src/main/resources/clds/camel/routes/dcae-flows.xml b/src/main/resources/clds/camel/routes/dcae-flows.xml
index 4693581..fb3bc90 100644
--- a/src/main/resources/clds/camel/routes/dcae-flows.xml
+++ b/src/main/resources/clds/camel/routes/dcae-flows.xml
@@ -177,6 +177,40 @@
 				<to uri="direct:dump-loop-log-http-response" />
 			</doFinally>
 		</doTry>
+	</route>
+	<route id="get-dcae-blueprint-inventory">
+		<from uri="direct:get-dcae-blueprint-inventory" />
+		<log loggingLevel="INFO"
+			message="Getting DCAE blueprint id in inventory" />
+		<to
+			uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Getting blueprint id in inventory')" />
+		<doTry>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>GET</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to query Dcae inventory Loop status: {{clamp.config.dcae.inventory.url}}/dcae-service-types?${header[CamelHttpQuery]}"></log>
+			<toD
+				uri="{{clamp.config.dcae.inventory.url}}/dcae-service-types?asdcResourceId=${exchangeProperty[blueprintResourceId]}&amp;asdcServiceId=${exchangeProperty[blueprintServiceId]}&amp;typeName=${exchangeProperty[blueprintName]}&amp;bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authMethod=Basic&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=30000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<convertBodyTo type="java.lang.String" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+			</doFinally>
+		</doTry>
 
 	</route>
 </routes>
\ No newline at end of file
diff --git a/src/main/resources/clds/camel/routes/flexible-flow.xml b/src/main/resources/clds/camel/routes/flexible-flow.xml
deleted file mode 100644
index bc79fc2..0000000
--- a/src/main/resources/clds/camel/routes/flexible-flow.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<routes xmlns="http://camel.apache.org/schema/spring">
-	<route id="submit">
-		<from uri="direct:processSubmit" />
-		<choice>
-			<when>
-				<simple> ${exchangeProperty.actionCd} == 'SUBMIT' ||
-					${exchangeProperty.actionCd} == 'RESUBMIT'
-				</simple>
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-				<to uri="bean:org.onap.clamp.clds.client.TcaPolicyDelegate" />
-				<to uri="bean:org.onap.clamp.clds.client.HolmesPolicyDelegate" />
-				<delay>
-					<constant>30000</constant>
-				</delay>
-				<to
-					uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" />
-				<to uri="bean:org.onap.clamp.clds.client.GuardPolicyDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-			</when>
-			<when>
-				<simple> ${exchangeProperty.actionCd} == 'DELETE'</simple>
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-				<to uri="bean:org.onap.clamp.clds.client.TcaPolicyDeleteDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.HolmesPolicyDeleteDelegate" />
-				<delay>
-					<constant>30000</constant>
-				</delay>
-				<to
-					uri="bean:org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.GuardPolicyDeleteDelegate" />
-				<to uri="bean:org.onap.clamp.clds.client.ModelDeleteDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-			</when>
-			<when>
-				<simple> ${exchangeProperty.actionCd} == 'UPDATE'</simple>
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-				<to uri="bean:org.onap.clamp.clds.client.TcaPolicyDelegate" />
-				<to uri="bean:org.onap.clamp.clds.client.HolmesPolicyDelegate" />
-				<delay>
-					<constant>30000</constant>
-				</delay>
-				<to
-					uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" />
-				<to uri="bean:org.onap.clamp.clds.client.GuardPolicyDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-			</when>
-			<when>
-				<simple> ${exchangeProperty.actionCd} == 'STOP'</simple>
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.GuardPolicyDeleteDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-			</when>
-			<when>
-				<simple> ${exchangeProperty.actionCd} == 'RESTART'</simple>
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-				<to uri="bean:org.onap.clamp.clds.client.GuardPolicyDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" />
-				<to
-					uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-			</when>
-		</choice>
-	</route>
-</routes>
\ No newline at end of file
diff --git a/src/test/java/org/onap/clamp/clds/client/DcaeInventoryServicesTest.java b/src/test/java/org/onap/clamp/clds/client/DcaeInventoryServicesTest.java
deleted file mode 100644
index a66694c..0000000
--- a/src/test/java/org/onap/clamp/clds/client/DcaeInventoryServicesTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2019 Huawei Technologies Co., Ltd.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- * ================================================================================
- *
- */
-
-package org.onap.clamp.clds.client;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsNull.nullValue;
-import static org.onap.clamp.clds.client.DcaeInventoryServices.DCAE_INVENTORY_RETRY_INTERVAL;
-import static org.onap.clamp.clds.client.DcaeInventoryServices.DCAE_INVENTORY_RETRY_LIMIT;
-import static org.onap.clamp.clds.client.DcaeInventoryServices.DCAE_INVENTORY_URL;
-import static org.powermock.api.mockito.PowerMockito.when;
-
-import java.io.IOException;
-
-import org.json.simple.parser.ParseException;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.clamp.clds.config.ClampProperties;
-import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse;
-import org.onap.clamp.clds.model.dcae.DcaeLinks;
-import org.onap.clamp.clds.model.dcae.DcaeOperationStatusResponse;
-import org.onap.clamp.util.HttpConnectionManager;
-
-
-@RunWith(MockitoJUnitRunner.class)
-public class DcaeInventoryServicesTest {
-
-    @Mock
-    private HttpConnectionManager httpConnectionManager;
-
-    @Mock
-    private ClampProperties properties;
-
-    private static final String resourceUuid = "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad";
-    private static final String serviceUuid = "4cc5b45a-1f63-4194-8100-cd8e14248c92";
-    private static final String artifactName = "tca_2.yaml";
-    private static final String queryString = "?asdcResourceId=" + resourceUuid + "&asdcServiceId=" + serviceUuid
-            + "&typeName=" + artifactName;
-    private static final String url = "http://localhost:8085" + "/dcae-service-types" + queryString;
-
-    @Test
-    public void testDcaeInventoryResponse() throws ParseException, InterruptedException, IOException {
-        when(properties.getStringValue(DCAE_INVENTORY_URL)).thenReturn("http://localhost:8085");
-        when(properties.getStringValue(DCAE_INVENTORY_RETRY_LIMIT)).thenReturn("1");
-        when(properties.getStringValue(DCAE_INVENTORY_RETRY_INTERVAL)).thenReturn("100");
-        String responseStr = "{\"totalCount\":1, "
-                + "\"items\":[{\"typeId\":\"typeId-32147723-d323-48f9-a325-bcea8d728025\","
-                + " \"typeName\":\"typeName-32147723-d323-48f9-a325-bcea8d728025\"}]}";
-        when(httpConnectionManager.doHttpRequest(url, "GET", null, null,
-                                                 "DCAE", null, null))
-                .thenReturn(responseStr);
-
-        DcaeInventoryServices services = new DcaeInventoryServices(properties,
-                                                                   httpConnectionManager);
-        DcaeInventoryResponse response = services.getDcaeInformation(artifactName, serviceUuid, resourceUuid);
-        assertThat(response.getTypeId(),is("typeId-32147723-d323-48f9-a325-bcea8d728025"));
-        assertThat(response.getTypeName(),is("typeName-32147723-d323-48f9-a325-bcea8d728025"));
-    }
-
-    @Test
-    public void testDcaeInventoryResponseWithZeroCount() throws ParseException, InterruptedException, IOException {
-        when(properties.getStringValue(DCAE_INVENTORY_URL)).thenReturn("http://localhost:8085");
-        when(properties.getStringValue(DCAE_INVENTORY_RETRY_LIMIT)).thenReturn("1");
-        when(properties.getStringValue(DCAE_INVENTORY_RETRY_INTERVAL)).thenReturn("100");
-        when(httpConnectionManager.doHttpRequest(url, "GET", null, null,
-                                                 "DCAE", null, null))
-                .thenReturn("{\"totalCount\":0}\"}]}");
-        DcaeInventoryServices services = new DcaeInventoryServices(properties,
-                                                                   httpConnectionManager);
-        DcaeInventoryResponse response = services.getDcaeInformation(artifactName, serviceUuid, resourceUuid);
-        assertThat(response, nullValue());
-    }
-
-    @Test
-    public void testDcaeInventoryResponsePojo() {
-        DcaeInventoryResponse response = new DcaeInventoryResponse();
-        response.setTypeId("typeId-32147723-d323-48f9-a325-bcea8d728025");
-        response.setTypeName("typeName-32147723-d323-48f9-a325-bcea8d728025");
-        assertThat(response.getTypeId(),is("typeId-32147723-d323-48f9-a325-bcea8d728025"));
-        assertThat(response.getTypeName(),is("typeName-32147723-d323-48f9-a325-bcea8d728025"));
-    }
-
-    @Test
-    public void testDcaeOperationStatusResponsePojo() {
-        DcaeLinks links = new DcaeLinks();
-        links.setSelf("selfUrl");
-        links.setStatus("state");
-        links.setUninstall("uninstallUrl");
-        DcaeOperationStatusResponse response = new DcaeOperationStatusResponse();
-        response.setRequestId("testId");
-        response.setError("errorMessage");
-        response.setLinks(links);
-        response.setOperationType("install");
-        response.setStatus("state");
-        assertThat(response.getRequestId(),is("testId"));
-        assertThat(response.getError(),is("errorMessage"));
-        assertThat(response.getOperationType(),is("install"));
-        assertThat(response.getStatus(),is("state"));
-        assertThat(response.getLinks().getSelf(),is("selfUrl"));
-        assertThat(response.getLinks().getStatus(),is("state"));
-        assertThat(response.getLinks().getUninstall(),is("uninstallUrl"));
-    }
-}
\ No newline at end of file
diff --git a/src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java b/src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java
deleted file mode 100644
index beb0750..0000000
--- a/src/test/java/org/onap/clamp/clds/it/HttpConnectionManagerItCase.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
- *                             reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); 
- * you may not use this file except in compliance with the License. 
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software 
- * distributed under the License is distributed on an "AS IS" BASIS, 
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- * See the License for the specific language governing permissions and 
- * limitations under the License.
- * ============LICENSE_END============================================
- * Modifications copyright (c) 2018 Nokia
- * ===================================================================
- * 
- */
-
-package org.onap.clamp.clds.it;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import javax.ws.rs.BadRequestException;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.clamp.util.HttpConnectionManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringRunner;
-
-/**
- * Test HTTP and HTTPS settings + redirection of HTTP to HTTPS.
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
-@TestPropertySource(locations = "classpath:https/https-test.properties")
-public class HttpConnectionManagerItCase {
-
-    @Value("${server.port}")
-    private String httpsPort;
-    @Value("${server.http-to-https-redirection.port}")
-    private String httpPort;
-
-    @Autowired
-    HttpConnectionManager httpConnectionManager;
-
-    private static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
-
-        @Override
-        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
-            return null;
-        }
-
-        @Override
-        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
-        }
-
-        @Override
-        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
-        }
-    } };
-
-    private void enableSslNoCheck() throws NoSuchAlgorithmException, KeyManagementException {
-        SSLContext sc = SSLContext.getInstance("SSL");
-        sc.init(null, trustAllCerts, new java.security.SecureRandom());
-        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
-        HostnameVerifier allHostsValid = new HostnameVerifier() {
-
-            @Override
-            public boolean verify(String hostname, SSLSession session) {
-                return true;
-            }
-        };
-        // set the allTrusting verifier
-        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
-    }
-
-    @Before
-    public void setupEnvBeforeTest() throws KeyManagementException, NoSuchAlgorithmException {
-        enableSslNoCheck();
-    }
-
-    @Test
-    public void testHttpGet() throws Exception {
-        String response = httpConnectionManager.doHttpRequest("http://localhost:" + this.httpPort + "/swagger.html",
-                "GET", null, null, "DCAE", null, null);
-        assertNotNull(response);
-        // Should be a redirection so 302, so empty
-        assertTrue(response.isEmpty());
-    }
-
-    @Test
-    public void testHttpsGet() throws Exception {
-        String response = httpConnectionManager.doHttpRequest("https://localhost:" + this.httpsPort + "/swagger.html",
-                "GET", null, null, "DCAE", null, null);
-        assertNotNull(response);
-        // Should contain something
-        assertTrue(!response.isEmpty());
-    }
-
-    @Test(expected = BadRequestException.class)
-    public void testHttpsGet404() throws IOException {
-        httpConnectionManager.doHttpRequest("https://localhost:" + this.httpsPort + "/swaggerx.html", "GET", null, null,
-                "DCAE", null, null);
-        fail("Should have raised an BadRequestException");
-    }
-
-    @Test(expected = BadRequestException.class)
-    public void testHttpsPost404() throws IOException {
-        httpConnectionManager.doHttpRequest("https://localhost:" + this.httpsPort + "/swaggerx.html", "POST", "",
-                "application/json", "DCAE", null, null);
-        fail("Should have raised an BadRequestException");
-    }
-
-    @Test(expected = BadRequestException.class)
-    public void testHttpException() throws IOException {
-        httpConnectionManager.doHttpRequest("http://localhost:" + this.httpsPort + "/swagger.html", "GET", null, null,
-                "DCAE", null, null);
-        fail("Should have raised an BadRequestException");
-    }
-}
diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties
index b23f77a..bbade74 100644
--- a/src/test/resources/application.properties
+++ b/src/test/resources/application.properties
@@ -208,15 +208,10 @@
 clamp.config.clds.service.cache.invalidate.after.seconds=120
 
 #DCAE Inventory Url Properties
-clamp.config.dcae.inventory.url=http://localhost:${docker.http-cache.port.host}
+clamp.config.dcae.inventory.url=http4://localhost:${docker.http-cache.port.host}
 clamp.config.dcae.intentory.retry.interval=100
 clamp.config.dcae.intentory.retry.limit=1
 
-#DCAE Dispatcher Url Properties
-clamp.config.dcae.dispatcher.url=http://localhost:${docker.http-cache.port.host}
-clamp.config.dcae.dispatcher.retry.interval=100
-clamp.config.dcae.dispatcher.retry.limit=1
-
 #DCAE Deployment Url Properties
 clamp.config.dcae.deployment.url=http4://localhost:${docker.http-cache.port.host}
 clamp.config.dcae.deployment.userName=test
diff --git a/src/test/resources/clds/camel/rest/clamp-api-v2.xml b/src/test/resources/clds/camel/rest/clamp-api-v2.xml
new file mode 100644
index 0000000..cf99625
--- /dev/null
+++ b/src/test/resources/clds/camel/rest/clamp-api-v2.xml
@@ -0,0 +1,617 @@
+<rests xmlns="http://camel.apache.org/schema/spring">
+	<rest>
+		<get
+			uri="/v2/loop/getAllNames"
+			outType="java.lang.String[]"
+			produces="application/json">
+			<route>
+				<removeHeaders pattern="*" />
+				<doTry>
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Loop')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','read')" />
+					<to
+						uri="bean:org.onap.clamp.loop.LoopController?method=getLoopNames()" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+					</doCatch>
+				</doTry>
+			</route>
+		</get>
+		<get
+			uri="/v2/loop/{loopName}"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET Loop')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','read')" />
+					<to
+						uri="bean:org.onap.clamp.loop.LoopController?method=getLoop(${header.loopName})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+					</doCatch>
+				</doTry>
+			</route>
+		</get>
+		<get
+			uri="/v2/loop/svgRepresentation/{loopName}"
+			outType="java.lang.String"
+			produces="application/xml">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Get SVG Representation')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','read')" />
+					<to
+						uri="bean:org.onap.clamp.loop.LoopController?method=getSvgRepresentation(${header.loopName})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+					</doCatch>
+				</doTry>
+			</route>
+		</get>
+
+		<post
+			uri="/v2/loop/updateGlobalProperties/{loopName}"
+			type="com.google.gson.JsonObject"
+			consumes="application/json"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Update the global properties')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<setHeader headerName="GlobalPropertiesJson">
+						<simple>${body}</simple>
+					</setHeader>
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.LoopController?method=updateGlobalPropertiesJson(${header.loopName},${header.GlobalPropertiesJson})" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Global Properties UPDATED','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+					</doCatch>
+				</doTry>
+			</route>
+		</post>
+		<post
+			uri="/v2/loop/updateOperationalPolicies/{loopName}"
+			type="com.google.gson.JsonArray"
+			consumes="application/json"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Update operational policies')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<setHeader headerName="OperationalPoliciesArray">
+						<simple>${body}</simple>
+					</setHeader>
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.LoopController?method=updateOperationalPolicies(${header.loopName},${header.OperationalPoliciesArray})" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Operational and Guard policies UPDATED','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+					</doCatch>
+				</doTry>
+			</route>
+		</post>
+		<post
+			uri="/v2/loop/updateMicroservicePolicy/{loopName}"
+			type="org.onap.clamp.policy.microservice.MicroServicePolicy"
+			consumes="application/json"
+			outType="org.onap.clamp.policy.microservice.MicroServicePolicy"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'Update Microservice policies')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<setProperty propertyName="MicroServicePolicyObject">
+						<simple>${body}</simple>
+					</setProperty>
+
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.LoopController?method=updateMicroservicePolicy(${header.loopName},${exchangeProperty[MicroServicePolicyObject]})" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Micro Service policies UPDATED','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+					</doCatch>
+				</doTry>
+			</route>
+		</post>
+		<put
+			uri="/v2/loop/deploy/{loopName}"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<log
+						loggingLevel="INFO"
+						message="DCAE DEPLOY request for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'DCAE DEPLOY request')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DCAE DEPLOY request','INFO',${exchangeProperty[loopObject]})" />
+
+					<to uri="direct:deploy-loop" />
+
+					<log
+						loggingLevel="INFO"
+						message="DEPLOY request successfully executed for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DEPLOY request successfully executed','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+						<log
+							loggingLevel="ERROR"
+							message="DEPLOY request failed for loop: ${header.loopName}" />
+						<to
+							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DEPLOY request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
+					</doCatch>
+				</doTry>
+			</route>
+		</put>
+		<put
+			uri="/v2/loop/undeploy/{loopName}"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<log
+						loggingLevel="INFO"
+						message="DCAE UNDEPLOY request for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'DCAE UNDEPLOY request')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DCAE UNDEPLOY request','INFO',${exchangeProperty[loopObject]})" />
+					<to uri="direct:undeploy-loop" />
+
+					<log
+						loggingLevel="INFO"
+						message="UNDEPLOY request successfully executed for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('UNDEPLOY request successfully executed','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+						<log
+							loggingLevel="ERROR"
+							message="UNDEPLOY request failed for loop: ${header.loopName}" />
+						<to
+							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('UNDEPLOY request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
+					</doCatch>
+				</doTry>
+			</route>
+		</put>
+		<put
+			uri="/v2/loop/stop/{loopName}"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<log
+						loggingLevel="INFO"
+						message="STOP request for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*,'STOP request')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('STOP request','INFO',${exchangeProperty[loopObject]})" />
+
+					<to uri="direct:remove-all-policy-from-active-pdp-group" />
+					<log
+						loggingLevel="INFO"
+						message="STOP request successfully executed for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('STOP request successfully executed','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+						<log
+							loggingLevel="ERROR"
+							message="STOP request failed for loop: $${header.loopName}" />
+						<to
+							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('STOP request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
+					</doCatch>
+				</doTry>
+			</route>
+		</put>
+		<put
+			uri="/v2/loop/restart/{loopName}"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<log
+						loggingLevel="INFO"
+						message="RESTART request for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*,'RESTART request')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<to uri="direct:load-loop" />
+
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('RESTART request','INFO',${exchangeProperty[loopObject]})" />
+
+					<to uri="direct:add-all-to-active-pdp-group" />
+					<log
+						loggingLevel="INFO"
+						message="RESTART request successfully executed for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('RESTART request successfully executed','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+						<log
+							loggingLevel="ERROR"
+							message="RESTART request failed for loop: ${header.loopName}" />
+						<to
+							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('RESTART request failed, Error reported: ${exception} - Body: ${exception.responseBody}','INFO',${exchangeProperty[loopObject]})" />
+					</doCatch>
+				</doTry>
+			</route>
+		</put>
+		<put
+			uri="/v2/loop/submit/{loopName}"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<log
+						loggingLevel="INFO"
+						message="POLICY SUBMIT request for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'POLICY SUBMIT request')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('POLICY SUBMIT request','INFO',${exchangeProperty[loopObject]})" />
+					<setProperty propertyName="raiseHttpExceptionFlag">
+						<simple resultType="java.lang.Boolean">false</simple>
+					</setProperty>
+					<to uri="direct:remove-all-policy-from-active-pdp-group" />
+					<log
+						loggingLevel="INFO"
+						message="Processing all MICRO-SERVICES policies defined in loop ${exchangeProperty[loopObject].getName()}" />
+					<split>
+						<simple>${exchangeProperty[loopObject].getMicroServicePolicies()}
+						</simple>
+						<setProperty propertyName="microServicePolicy">
+							<simple>${body}</simple>
+						</setProperty>
+						<log
+							loggingLevel="INFO"
+							message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" />
+						<setProperty propertyName="raiseHttpExceptionFlag">
+							<simple resultType="java.lang.Boolean">false</simple>
+						</setProperty>
+						<to uri="direct:delete-micro-service-policy" />
+						<to uri="direct:create-micro-service-policy" />
+					</split>
+					<log
+						loggingLevel="INFO"
+						message="Processing all OPERATIONAL policies defined in loop ${exchangeProperty[loopObject].getName()}" />
+					<split>
+						<simple>${exchangeProperty[loopObject].getOperationalPolicies()}
+						</simple>
+						<setProperty propertyName="operationalPolicy">
+							<simple>${body}</simple>
+						</setProperty>
+						<log
+							loggingLevel="INFO"
+							message="Processing Operational Policy: ${exchangeProperty[operationalPolicy].getName()}" />
+						<setProperty propertyName="raiseHttpExceptionFlag">
+							<simple resultType="java.lang.Boolean">false</simple>
+						</setProperty>
+
+						<to uri="direct:delete-operational-policy" />
+						<to uri="direct:create-operational-policy" />
+
+						<log
+							loggingLevel="INFO"
+							message="Processing all GUARD policies defined in loop ${exchangeProperty[loopObject].getName()}" />
+						<split>
+							<simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()}
+							</simple>
+							<setProperty propertyName="guardPolicy">
+								<simple>${body}</simple>
+							</setProperty>
+							<log
+								loggingLevel="INFO"
+								message="Processing Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" />
+
+							<setProperty propertyName="raiseHttpExceptionFlag">
+								<simple resultType="java.lang.Boolean">false</simple>
+							</setProperty>
+							<to uri="direct:delete-guard-policy" />
+							<to uri="direct:create-guard-policy" />
+						</split>
+					</split>
+
+					<delay>
+						<constant>3000</constant>
+					</delay>
+
+					<to uri="direct:add-all-to-active-pdp-group" />
+
+					<log
+						loggingLevel="INFO"
+						message="SUBMIT request successfully executed for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('SUBMIT request successfully executed','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+						<log
+							loggingLevel="ERROR"
+							message="SUBMIT request failed for loop: ${header.loopName}" />
+						<to
+							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('SUBMIT request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
+					</doCatch>
+				</doTry>
+			</route>
+		</put>
+		<put uri="/v2/loop/delete/{loopName}">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<log
+						loggingLevel="INFO"
+						message="DELETE request for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*,'DELETE request')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DELETE request','INFO',${exchangeProperty[loopObject]})" />
+					<to uri="direct:undeploy-loop" />
+					<to uri="direct:remove-all-policy-from-active-pdp-group" />
+					<split>
+						<simple>${exchangeProperty[loopObject].getMicroServicePolicies()}
+						</simple>
+						<setProperty propertyName="microServicePolicy">
+							<simple>${body}</simple>
+						</setProperty>
+						<log
+							loggingLevel="INFO"
+							message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" />
+						<to uri="direct:delete-micro-service-policy" />
+					</split>
+
+					<log
+						loggingLevel="INFO"
+						message="Processing all OPERATIONAL policies defined in loop ${exchangeProperty[loopObject].getName()}" />
+					<split>
+						<simple>${exchangeProperty[loopObject].getOperationalPolicies()}
+						</simple>
+						<setProperty propertyName="operationalPolicy">
+							<simple>${body}</simple>
+						</setProperty>
+						<log
+							loggingLevel="INFO"
+							message="Processing Operational Policy: ${exchangeProperty[operationalPolicy].getName()}" />
+						<to uri="direct:delete-operational-policy" />
+						<log
+							loggingLevel="INFO"
+							message="Processing all GUARD policies defined in loop ${exchangeProperty[loopObject].getName()}" />
+						<split>
+							<simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()}
+							</simple>
+							<setProperty propertyName="guardPolicy">
+								<simple>${body}</simple>
+							</setProperty>
+							<log
+								loggingLevel="INFO"
+								message="Processing Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" />
+							<to uri="direct:delete-guard-policy" />
+						</split>
+					</split>
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopService?method=deleteLoop(${header.loopName})" />
+					<log
+						loggingLevel="INFO"
+						message="DELETE request successfully executed for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DELETE request successfully executed','INFO',${exchangeProperty[loopObject]})" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+						<log
+							loggingLevel="ERROR"
+							message="DELETE request failed for loop: ${header.loopName}" />
+						<to
+							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('DELETE request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
+					</doCatch>
+				</doTry>
+			</route>
+		</put>
+		<get
+			uri="/v2/loop/getstatus/{loopName}"
+			outType="org.onap.clamp.loop.Loop"
+			produces="application/json">
+			<route>
+				<removeHeaders
+					pattern="*"
+					excludePattern="loopName" />
+				<doTry>
+					<log
+						loggingLevel="INFO"
+						message="GET STATUS request for loop: ${header.loopName}" />
+					<to
+						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET STATUS request')" />
+					<to
+						uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','read')" />
+					<to uri="direct:load-loop" />
+					<to
+						uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('GET STATUS request','INFO',${exchangeProperty[loopObject]})" />
+					<doTry>
+						<to uri="direct:update-policy-status-for-loop" />
+						<to uri="direct:update-dcae-status-for-loop" />
+						<to uri="direct:update-loop-state" />
+
+						<to
+							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Get Status request successfully executed','INFO',${exchangeProperty[loopObject]})" />
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
+					</doTry>
+					<doCatch>
+						<exception>java.lang.Exception</exception>
+						<handled>
+							<constant>false</constant>
+						</handled>
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" />
+						<log
+							loggingLevel="ERROR"
+							message="Get Status request failed for loop: ${header.loopName}" />
+						<to
+							uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Get Status request failed, Error reported: ${exception} - Body: ${exception.responseBody}','ERROR',${exchangeProperty[loopObject]})" />
+					</doCatch>
+					<doFinally>
+						<setBody>
+							<simple>${exchangeProperty[loopObject]}</simple>
+						</setBody>
+					</doFinally>
+				</doTry>
+			</route>
+		</get>
+	</rest>
+</rests>
diff --git a/src/test/resources/clds/camel/rest/clds-services.xml b/src/test/resources/clds/camel/rest/clds-services.xml
new file mode 100644
index 0000000..dd3a4bf
--- /dev/null
+++ b/src/test/resources/clds/camel/rest/clds-services.xml
@@ -0,0 +1,29 @@
+<rests xmlns="http://camel.apache.org/schema/spring">
+	<rest>
+		<get uri="/v1/clds/cldsInfo" outType="org.onap.clamp.clds.model.CldsInfo"
+			produces="application/json">
+			<to
+				uri="bean:org.onap.clamp.clds.service.CldsService?method=getCldsInfo()" />
+		</get>
+		<get uri="/v1/healthcheck" produces="application/json"
+			outType="org.onap.clamp.clds.model.CldsHealthCheck">
+			<route>
+				<setBody>
+					<method ref="org.onap.clamp.clds.service.CldsHealthcheckService"
+						method="gethealthcheck()" />
+				</setBody>
+				<when>
+					<simple> ${body} == 'NOT-OK'</simple>
+					<setHeader headerName="CamelHttpResponseCode">
+						<constant>404</constant>
+					</setHeader>
+					<log loggingLevel="ERROR" message="HealthCheck failed" />
+				</when>
+			</route>
+		</get>
+
+		<get uri="/v1/user/getUser" produces="text/plain">
+			<to uri="bean:org.onap.clamp.clds.service.UserService?method=getUser()" />
+		</get>
+	</rest>
+</rests>
diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml
new file mode 100644
index 0000000..fb3bc90
--- /dev/null
+++ b/src/test/resources/clds/camel/routes/dcae-flows.xml
@@ -0,0 +1,216 @@
+<routes xmlns="http://camel.apache.org/schema/spring">
+	<route id="deploy-loop">
+		<from uri="direct:deploy-loop" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Deploying the loop: ${exchangeProperty[loopObject].getName()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Deploying the loop')" />
+			<setBody>
+				<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+					method="getDeployPayload(${exchangeProperty[loopObject]})" />
+			</setBody>
+			<setProperty propertyName="dcaeDeploymentId">
+				<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+					method="generateDeploymentId()" />
+			</setProperty>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>PUT</constant>
+			</setHeader>
+			<setHeader headerName="Content-Type">
+				<constant>application/json</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to deploy loop: {{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[dcaeDeploymentId]}"></log>
+			<toD
+				uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[dcaeDeploymentId]}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=300000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<convertBodyTo type="java.lang.String" />
+			<setProperty propertyName="dcaeResponse">
+				<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+					method="convertDcaeResponse(${body})" />
+			</setProperty>
+			<setProperty propertyName="dcaeStatusUrl">
+				<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+					method="getStatusUrl(${exchangeProperty[dcaeResponse]})" />
+			</setProperty>
+			<to
+				uri="bean:org.onap.clamp.loop.LoopService?method=updateDcaeDeploymentFields(${exchangeProperty[loopObject]},${exchangeProperty[dcaeDeploymentId]},${exchangeProperty[dcaeStatusUrl]})" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>DEPLOY loop status
+						(Dep-id:${exchangeProperty[dcaeDeploymentId]},
+						StatusUrl:${exchangeProperty[dcaeStatusUrl]})
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>DCAE</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="undeploy-loop">
+		<from uri="direct:undeploy-loop" />
+		<log loggingLevel="INFO"
+			message="Undeploying the loop: ${exchangeProperty[loopObject].getName()} : ${exchangeProperty[loopObject].getDcaeDeploymentId()}" />
+		<to
+			uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Undeploying the loop')" />
+		<choice>
+			<when>
+				<simple>${exchangeProperty[loopObject].getDcaeDeploymentId()}
+					!= null
+				</simple>
+				<doTry>
+					<setBody>
+						<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+							method="getUndeployPayload(${exchangeProperty[loopObject]})" />
+					</setBody>
+					<setHeader headerName="CamelHttpMethod">
+						<constant>DELETE</constant>
+					</setHeader>
+					<setHeader headerName="Content-Type">
+						<constant>application/json</constant>
+					</setHeader>
+
+					<setHeader headerName="X-ONAP-RequestID">
+						<simple>${exchangeProperty[X-ONAP-RequestID]}
+						</simple>
+					</setHeader>
+					<setHeader headerName="X-ONAP-InvocationID">
+						<simple>${exchangeProperty[X-ONAP-InvocationID]}
+						</simple>
+					</setHeader>
+					<setHeader headerName="X-ONAP-PartnerName">
+						<simple>${exchangeProperty[X-ONAP-PartnerName]}
+						</simple>
+					</setHeader>
+					<log loggingLevel="INFO"
+						message="Endpoint to undeploy loop: {{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[loopObject].getDcaeDeploymentId()}"></log>
+					<toD
+						uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[loopObject].getDcaeDeploymentId()}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=300000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+					<convertBodyTo type="java.lang.String" />
+					<setProperty propertyName="dcaeResponse">
+						<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+							method="convertDcaeResponse(${body})" />
+					</setProperty>
+					<setProperty propertyName="dcaeStatusUrl">
+						<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+							method="getStatusUrl(${exchangeProperty[dcaeResponse]})" />
+					</setProperty>
+					<to
+						uri="bean:org.onap.clamp.loop.LoopService?method=updateDcaeDeploymentFields(${exchangeProperty[loopObject]},${exchangeProperty[loopObject].getDcaeDeploymentId()},${exchangeProperty[dcaeStatusUrl]})" />
+					<doFinally>
+						<to uri="direct:reset-raise-http-exception-flag" />
+						<to
+							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+						<setProperty propertyName="logMessage">
+							<simple>UNDEPLOY loop status</simple>
+						</setProperty>
+						<setProperty propertyName="logComponent">
+							<simple>DCAE</simple>
+						</setProperty>
+						<to uri="direct:dump-loop-log-http-response" />
+					</doFinally>
+				</doTry>
+			</when>
+			<otherwise>
+				<log loggingLevel="WARNING"
+					message="Cannot Undeploy for the loop: ${exchangeProperty[loopObject].getName()}, the Deployment ID does not exist !" />
+				<to
+					uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Cannot Undeploy for the loop: ${exchangeProperty[loopObject].getName()}, the Deployment ID does not exist !','WARNING',${exchangeProperty[loopObject]})" />
+
+			</otherwise>
+		</choice>
+	</route>
+	<route id="get-dcae-deployment-status">
+		<from uri="direct:get-dcae-deployment-status" />
+		<log loggingLevel="INFO"
+			message="Getting DCAE deployment status for loop: ${exchangeProperty[loopObject].getName()}" />
+		<to
+			uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Getting Deployment status')" />
+		<doTry>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>GET</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to query Closed Loop status: ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()}"></log>
+			<toD
+				uri="${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authMethod=Basic&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=30000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>DCAE deployment status</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>DCAE</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+	<route id="get-dcae-blueprint-inventory">
+		<from uri="direct:get-dcae-blueprint-inventory" />
+		<log loggingLevel="INFO"
+			message="Getting DCAE blueprint id in inventory" />
+		<to
+			uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Getting blueprint id in inventory')" />
+		<doTry>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>GET</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to query Dcae inventory Loop status: {{clamp.config.dcae.inventory.url}}/dcae-service-types?${header[CamelHttpQuery]}"></log>
+			<toD
+				uri="{{clamp.config.dcae.inventory.url}}/dcae-service-types?asdcResourceId=${exchangeProperty[blueprintResourceId]}&amp;asdcServiceId=${exchangeProperty[blueprintServiceId]}&amp;typeName=${exchangeProperty[blueprintName]}&amp;bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authMethod=Basic&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=30000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<convertBodyTo type="java.lang.String" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+			</doFinally>
+		</doTry>
+
+	</route>
+</routes>
\ No newline at end of file
diff --git a/src/test/resources/clds/camel/routes/flexible-flow.xml b/src/test/resources/clds/camel/routes/flexible-flow.xml
deleted file mode 100644
index 2103b4a..0000000
--- a/src/test/resources/clds/camel/routes/flexible-flow.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<routes xmlns="http://camel.apache.org/schema/spring">
-		<route id="submit">
-				<from uri="direct:processSubmit" />
-				<choice>
-						<when>
-								<simple> ${exchangeProperty.actionCd} == 'SUBMIT' || ${exchangeProperty.actionCd} == 'RESUBMIT'</simple>
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-								<to uri="bean:org.onap.clamp.clds.client.TcaPolicyDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.HolmesPolicyDelegate" />
-								<delay>
-										<constant>30000</constant>
-								</delay>
-								<to uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.GuardPolicyDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-						</when>
-						<when>
-								<simple> ${exchangeProperty.actionCd} == 'DELETE'</simple>
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-								<to uri="bean:org.onap.clamp.clds.client.TcaPolicyDeleteDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.HolmesPolicyDeleteDelegate" />
-								<delay>
-										<constant>30000</constant>
-								</delay>
-								<to
-										uri="bean:org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.GuardPolicyDeleteDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.ModelDeleteDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-						</when>
-						<when>
-								<simple> ${exchangeProperty.actionCd} == 'UPDATE'</simple>
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-								<to uri="bean:org.onap.clamp.clds.client.TcaPolicyDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.HolmesPolicyDelegate" />
-								<delay>
-										<constant>30000</constant>
-								</delay>
-								<to uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.GuardPolicyDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-						</when>
-						<when>
-								<simple> ${exchangeProperty.actionCd} == 'STOP'</simple>
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-								<to
-										uri="bean:org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.GuardPolicyDeleteDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-						</when>
-						<when>
-								<simple> ${exchangeProperty.actionCd} == 'RESTART'</simple>
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'INITIATED')" />
-								<to uri="bean:org.onap.clamp.clds.client.GuardPolicyDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" />
-								<to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate?method=addEvent(*,'COMPLETED')" />
-						</when>
-				</choice>
-		</route>
-
-</routes>
\ No newline at end of file
diff --git a/src/test/resources/clds/camel/routes/loop-flows.xml b/src/test/resources/clds/camel/routes/loop-flows.xml
new file mode 100644
index 0000000..036e8ef
--- /dev/null
+++ b/src/test/resources/clds/camel/routes/loop-flows.xml
@@ -0,0 +1,222 @@
+<routes xmlns="http://camel.apache.org/schema/spring">
+	<route id="load-loop">
+		<from uri="direct:load-loop" />
+		<setBody>
+			<simple>${header.loopName}</simple>
+		</setBody>
+		<setProperty propertyName="loopObject">
+			<method ref="org.onap.clamp.loop.LoopService" method="getLoop" />
+		</setProperty>
+
+		<when>
+			<simple>${exchangeProperty[loopObject]} == null</simple>
+			<setHeader headerName="CamelHttpResponseCode">
+				<constant>404</constant>
+			</setHeader>
+			<log loggingLevel="WARN" message="Loop not found in database: ${body}" />
+			<stop />
+		</when>
+	</route>
+
+	<route id="update-policy-status-for-loop">
+		<from uri="direct:update-policy-status-for-loop" />
+		<setProperty propertyName="policyComponent">
+			<simple>${exchangeProperty[loopObject].getComponent('POLICY')}
+			</simple>
+		</setProperty>
+		<setProperty propertyName="policyFound">
+			<simple resultType="java.lang.Boolean">true</simple>
+		</setProperty>
+		<setProperty propertyName="policyDeployed">
+			<simple resultType="java.lang.Boolean">true</simple>
+		</setProperty>
+		<log loggingLevel="INFO"
+			message="Processing all MICRO-SERVICES policies defined in loop ${exchangeProperty[loopObject].getName()}" />
+		<split>
+			<simple>${exchangeProperty[loopObject].getMicroServicePolicies()}
+			</simple>
+			<setProperty propertyName="policyName">
+				<simple>${body.getName()}</simple>
+			</setProperty>
+			<setProperty propertyName="policyType">
+				<simple>${body.getModelType()}</simple>
+			</setProperty>
+			<setProperty propertyName="policyVersion">
+				<simple>1.0.0</simple>
+			</setProperty>
+			<setBody>
+				<constant>null</constant>
+			</setBody>
+			<log loggingLevel="INFO"
+				message="Processing Micro Service Policy: ${exchangeProperty[policyName]} of type ${exchangeProperty[policyType]}" />
+			<to uri="direct:verify-one-policy" />
+		</split>
+		<log loggingLevel="INFO"
+			message="Processing all OPERATIONAL policies defined in loop ${exchangeProperty[loopObject].getName()}" />
+		<split>
+			<simple>${exchangeProperty[loopObject].getOperationalPolicies()}
+			</simple>
+			<setProperty propertyName="policyName">
+				<simple>${body.getName()}</simple>
+			</setProperty>
+			<setProperty propertyName="policyType">
+				<simple>onap.policies.controlloop.Operational</simple>
+			</setProperty>
+			<setProperty propertyName="policyVersion">
+				<simple>1</simple>
+			</setProperty>
+			<setProperty propertyName="operationalPolicy">
+				<simple>${body}</simple>
+			</setProperty>
+			<setBody>
+				<constant>null</constant>
+			</setBody>
+			<log loggingLevel="INFO"
+				message="Processing Micro Service Policy: ${exchangeProperty[policyName]} of type ${exchangeProperty[policyType]}" />
+			<to uri="direct:verify-one-policy" />
+			<log loggingLevel="INFO"
+				message="Processing all GUARD policies defined in loop ${exchangeProperty[loopObject].getName()}" />
+			<split>
+				<simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()}
+				</simple>
+				<setProperty propertyName="policyName">
+					<simple>${body.getKey()}</simple>
+				</setProperty>
+				<setProperty propertyName="policyType">
+					<simple>onap.policies.controlloop.Guard</simple>
+				</setProperty>
+				<setProperty propertyName="policyVersion">
+					<simple>1</simple>
+				</setProperty>
+				<setBody>
+					<constant>null</constant>
+				</setBody>
+				<log loggingLevel="INFO"
+					message="Processing Guard Policy: ${exchangeProperty[policyName]} of type ${exchangeProperty[policyType]}" />
+				<to uri="direct:verify-one-policy" />
+			</split>
+		</split>
+		<setProperty propertyName="policyState">
+			<simple> ${exchangeProperty[policyComponent].getState()}
+			</simple>
+		</setProperty>
+		<log loggingLevel="INFO"
+			message="Policy state set to: ${exchangeProperty[policyState].getStateName()}" />
+		<to
+			uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLogForComponent('Policy state set to: ${exchangeProperty[policyState].getStateName()}','INFO','POLICY',${exchangeProperty[loopObject]})" />
+	</route>
+	<route id="update-dcae-status-for-loop">
+		<from uri="direct:update-dcae-status-for-loop" />
+		<log loggingLevel="INFO"
+			message="Updating DCAE status for loop: ${exchangeProperty[loopObject].getName()}" />
+		<setProperty propertyName="dcaeComponent">
+			<simple>${exchangeProperty[loopObject].getComponent('DCAE')}</simple>
+		</setProperty>
+		<when>
+			<simple>${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()}
+				!= null
+			</simple>
+			<setProperty propertyName="raiseHttpExceptionFlag">
+				<simple resultType="java.lang.Boolean">false</simple>
+			</setProperty>
+			<to uri="direct:get-dcae-deployment-status" />
+			<when>
+				<simple> ${header.CamelHttpResponseCode} == 200 </simple>
+				<convertBodyTo type="java.lang.String" />
+				<setProperty propertyName="dcaeResponse">
+					<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+						method="convertDcaeResponse(${body})" />
+				</setProperty>
+			</when>
+		</when>
+
+		<setProperty propertyName="dcaeState">
+			<simple> ${exchangeProperty[dcaeComponent].computeState(*)}
+			</simple>
+		</setProperty>
+		<log loggingLevel="INFO"
+			message="DCAE state set to: ${exchangeProperty[dcaeState].getStateName()} - DCAE message: ${exchangeProperty[dcaeResponse].getError()}" />
+		<to
+			uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLogForComponent('DCAE state set to: ${exchangeProperty[dcaeState].getStateName()} - message: ${exchangeProperty[dcaeResponse].getError()}','INFO','DCAE',${exchangeProperty[loopObject]})" />
+
+	</route>
+	<route id="direct:update-loop-state">
+		<from uri="direct:update-loop-state" />
+		<log loggingLevel="INFO"
+			message="Updating status for loop: ${exchangeProperty[loopObject].getName()}" />
+		<choice>
+			<when>
+				<simple>${exchangeProperty['dcaeState'].getStateName()} ==
+					'BLUEPRINT_DEPLOYED' and ${exchangeProperty['policyState'].getStateName()}
+					== 'NOT_SENT'
+				</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.LoopService?method=updateLoopState(${exchangeProperty[loopObject]},'DESIGN')" />
+			</when>
+			<when>
+				<simple>${exchangeProperty['dcaeState'].getStateName()} == 'IN_ERROR' or
+					${exchangeProperty['dcaeState'].getStateName()} ==
+					'MICROSERVICE_INSTALLATION_FAILED'
+				</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.LoopService?method=updateLoopState(${exchangeProperty[loopObject]},'IN_ERROR')" />
+			</when>
+			<when>
+				<simple>${exchangeProperty['dcaeState'].getStateName()} ==
+					'MICROSERVICE_UNINSTALLATION_FAILED' or
+					${exchangeProperty['policyState'].getStateName()} == 'IN_ERROR'
+				</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.LoopService?method=updateLoopState(${exchangeProperty[loopObject]},'IN_ERROR')" />
+			</when>
+			<when>
+				<simple>${exchangeProperty['dcaeState'].getStateName()} ==
+					'MICROSERVICE_INSTALLED_SUCCESSFULLY' and
+					${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED'
+				</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.LoopService?method=updateLoopState(${exchangeProperty[loopObject]},'RUNNING')" />
+			</when>
+			<when>
+				<simple>${exchangeProperty['dcaeState'].getStateName()} ==
+					'MICROSERVICE_INSTALLED_SUCCESSFULLY' and
+					${exchangeProperty['policyState'].getStateName()} == 'SENT'
+				</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.LoopService?method=updateLoopState(${exchangeProperty[loopObject]},'STOPPED')" />
+			</when>
+			<when>
+				<simple>${exchangeProperty['dcaeState'].getStateName()} ==
+					'BLUEPRINT_DEPLOYED' or ${exchangeProperty['dcaeState'].getStateName()} ==
+					'MICROSERVICE_UNINSTALLED_SUCCESSFULLY' and
+					${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED'
+				</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.LoopService?method=updateLoopState(${exchangeProperty[loopObject]},'SUBMITTED')" />
+			</when>
+			<when>
+				<simple>${exchangeProperty['dcaeState'].getStateName()} ==
+					'PROCESSING_MICROSERVICE_INSTALLATION' or
+					${exchangeProperty['dcaeState'].getStateName()} ==
+					'PROCESSING_MICROSERVICE_UNINSTALLATION' and
+					${exchangeProperty['policyState'].getStateName()} == 'SENT_AND_DEPLOYED'
+				</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.LoopService?method=updateLoopState(${exchangeProperty[loopObject]},'WAITING')" />
+			</when>
+			<when>
+				<simple>${exchangeProperty['dcaeState'].getStateName()} ==
+					'MICROSERVICE_INSTALLED_SUCCESSFULLY' and
+					${exchangeProperty['policyState'].getStateName()} != 'NOT_SENT'
+				</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.LoopService?method=updateLoopState(${exchangeProperty[loopObject]},'DEPLOYED')" />
+			</when>
+		</choice>
+		<log loggingLevel="INFO"
+			message="New loop state is: ${exchangeProperty[loopObject].getLastComputedState().toString()}" />
+		<to
+			uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('New loop state is: ${exchangeProperty[loopObject].getLastComputedState().toString()}','INFO',${exchangeProperty[loopObject]})" />
+
+	</route>
+</routes>
\ No newline at end of file
diff --git a/src/test/resources/clds/camel/routes/policy-flows.xml b/src/test/resources/clds/camel/routes/policy-flows.xml
new file mode 100644
index 0000000..75ac66c
--- /dev/null
+++ b/src/test/resources/clds/camel/routes/policy-flows.xml
@@ -0,0 +1,520 @@
+
+<routes xmlns="http://camel.apache.org/schema/spring">
+	<route id="verify-one-policy">
+		<from uri="direct:verify-one-policy" />
+		<setProperty propertyName="raiseHttpExceptionFlag">
+			<simple resultType="java.lang.Boolean">false</simple>
+		</setProperty>
+		<to uri="direct:get-policy" />
+		<when>
+			<simple> ${header.CamelHttpResponseCode} != 200 </simple>
+			<setProperty propertyName="policyFound">
+				<simple resultType="java.lang.Boolean">false</simple>
+			</setProperty>
+			<log loggingLevel="WARN"
+				message="At least one policy has not been found on policy engine: ${exchangeProperty[policyName]}" />
+		</when>
+		<setProperty propertyName="raiseHttpExceptionFlag">
+			<simple resultType="java.lang.Boolean">false</simple>
+		</setProperty>
+		<to uri="direct:get-deployment-policy" />
+		<when>
+			<simple> ${header.CamelHttpResponseCode} != 200 </simple>
+			<setProperty propertyName="policyDeployed">
+				<simple resultType="java.lang.Boolean">false</simple>
+			</setProperty>
+			<log loggingLevel="WARN"
+				message="At least one policy has not been deployed on policy engine: ${exchangeProperty[policyName]}" />
+		</when>
+		<setProperty propertyName="newPolicyState">
+			<simple>${exchangeProperty[policyComponent].computeState(*)}</simple>
+		</setProperty>
+	</route>
+
+	<route id="get-policy">
+		<from uri="direct:get-policy" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Getting Policy: ${exchangeProperty[policyName]}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Get Policy')" />
+			<setHeader headerName="CamelHttpMethod">
+				<constant>GET</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to get policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyType]}/versions/1.0.0/policies/${exchangeProperty[policyName]}/versions/${exchangeProperty[policyVersion]}"></log>
+			<toD
+				uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyType]}/versions/1.0.0/policies/${exchangeProperty[policyName]}/versions/${exchangeProperty[policyVersion]}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authMethod=Basic&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[policyName]} GET
+						Policy status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="get-deployment-policy">
+		<from uri="direct:get-deployment-policy" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Getting the policy deployment in PDP: ${exchangeProperty[policyName]}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Getting the policy deployment in PDP')" />
+			<setHeader headerName="CamelHttpMethod">
+				<constant>GET</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to get policy deployment status: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyType]}/versions/1.0.0/policies/${exchangeProperty[policyName]}/versions/deployed"></log>
+			<toD
+				uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyType]}/versions/1.0.0/policies/${exchangeProperty[policyName]}/versions/deployed?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authMethod=Basic&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[policyName]} GET Policy deployment
+						status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+	<route id="create-micro-service-policy">
+		<from uri="direct:create-micro-service-policy" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Creating Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Create Micro Service Policy')" />
+			<setBody>
+				<simple>${exchangeProperty[microServicePolicy].createPolicyPayload()}
+				</simple>
+			</setBody>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>POST</constant>
+			</setHeader>
+			<setHeader headerName="Content-Type">
+				<constant>application/json</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to create microservice policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies"></log>
+			<toD
+				uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[microServicePolicy].getName()} creation
+						status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="delete-micro-service-policy">
+		<from uri="direct:delete-micro-service-policy" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Deleting Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete Micro Service Policy')" />
+			<setBody>
+				<constant>null</constant>
+			</setBody>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>DELETE</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to delete microservice policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies/${exchangeProperty[microServicePolicy].getName()}/versions/1.0.0"></log>
+			<toD
+				uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies/${exchangeProperty[microServicePolicy].getName()}/versions/1.0.0?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[microServicePolicy].getName()} removal
+						status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="create-operational-policy">
+		<from uri="direct:create-operational-policy" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Creating Operational Policy: ${exchangeProperty[operationalPolicy].getName()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Create Operational Policy')" />
+			<setBody>
+				<simple>${exchangeProperty[operationalPolicy].createPolicyPayload()}
+				</simple>
+			</setBody>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>POST</constant>
+			</setHeader>
+			<setHeader headerName="Content-Type">
+				<constant>application/json</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to create operational policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies"></log>
+			<toD
+				uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[operationalPolicy].getName()} creation
+						status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="delete-operational-policy">
+		<from uri="direct:delete-operational-policy" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Deleting Operational Policy: ${exchangeProperty[operationalPolicy].getName()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete Operational Policy')" />
+			<setBody>
+				<constant>null</constant>
+			</setBody>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>DELETE</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to delete operational policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicy].getName()}/versions/1"></log>
+			<toD
+				uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicy].getName()}/versions/1?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[operationalPolicy].getName()} removal
+						status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="create-guard-policy">
+		<from uri="direct:create-guard-policy" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Creating Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Create Guard Policy')" />
+			<setBody>
+				<simple>${exchangeProperty[guardPolicy].getValue()}
+				</simple>
+			</setBody>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>POST</constant>
+			</setHeader>
+			<setHeader headerName="Content-Type">
+				<constant>application/json</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to create guard policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies"></log>
+			<toD
+				uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[guardPolicy].getKey()} creation status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="delete-guard-policy">
+		<from uri="direct:delete-guard-policy" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Deleting Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete Guard Policy')" />
+			<setBody>
+				<constant>null</constant>
+			</setBody>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>DELETE</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to delete guard policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/${exchangeProperty[guardPolicy].getKey()}/versions/1"></log>
+			<toD
+				uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/${exchangeProperty[guardPolicy].getKey()}/versions/1?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[guardPolicy].getKey()} removal status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="add-all-to-active-pdp-group">
+		<from uri="direct:add-all-to-active-pdp-group" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Adding loop policies to PDP Group: ${exchangeProperty[loopObject].getName()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Add policies to PDP group')" />
+			<setBody>
+				<simple>${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject])}
+				</simple>
+			</setBody>
+			<setHeader headerName="CamelHttpMethod">
+				<constant>POST</constant>
+			</setHeader>
+			<setHeader headerName="Content-Type">
+				<constant>application/json</constant>
+			</setHeader>
+			<setHeader headerName="X-ONAP-RequestID">
+				<simple>${exchangeProperty[X-ONAP-RequestID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-InvocationID">
+				<simple>${exchangeProperty[X-ONAP-InvocationID]}
+				</simple>
+			</setHeader>
+			<setHeader headerName="X-ONAP-PartnerName">
+				<simple>${exchangeProperty[X-ONAP-PartnerName]}
+				</simple>
+			</setHeader>
+			<log loggingLevel="INFO"
+				message="Endpoint to add policies to PDP Group: {{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/policies"></log>
+			<toD
+				uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/policies?bridgeEndpoint=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;useSystemProperties=true&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+				<setProperty propertyName="logMessage">
+					<simple>PDP Group push ALL status</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doFinally>
+		</doTry>
+	</route>
+
+	<route id="remove-all-policy-from-active-pdp-group">
+		<from uri="direct:remove-all-policy-from-active-pdp-group" />
+		<doTry>
+			<log loggingLevel="INFO"
+				message="Removing policies from active PDP group for loop: ${exchangeProperty[loopObject].getName()}" />
+			<to
+				uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Removing policies PDP group')" />
+			<split>
+				<simple>${exchangeProperty[loopObject].getComponent("POLICY").listPolicyNamesPdpGroup(exchangeProperty[loopObject])}
+				</simple>
+				<setProperty propertyName="policyName">
+					<simple>${body}</simple>
+				</setProperty>
+				<setBody>
+					<constant>null</constant>
+				</setBody>
+				<setHeader headerName="CamelHttpMethod">
+					<constant>DELETE</constant>
+				</setHeader>
+				<setHeader headerName="X-ONAP-RequestID">
+					<simple>${exchangeProperty[X-ONAP-RequestID]}
+					</simple>
+				</setHeader>
+				<setHeader headerName="X-ONAP-InvocationID">
+					<simple>${exchangeProperty[X-ONAP-InvocationID]}
+					</simple>
+				</setHeader>
+				<setHeader headerName="X-ONAP-PartnerName">
+					<simple>${exchangeProperty[X-ONAP-PartnerName]}
+					</simple>
+				</setHeader>
+				<log loggingLevel="INFO"
+					message="Endpoint to delete policy from PDP Group: {{clamp.config.policy.pap.url}}/pdps/policies/${exchangeProperty[policyName]}/versions/1.0.0"></log>
+				<toD
+					uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/policies/${exchangeProperty[policyName]}/versions/1.0.0?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+				<setProperty propertyName="logMessage">
+					<simple>${exchangeProperty[policyName]} PDP Group removal status
+					</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</split>
+			<doCatch>
+				<exception>java.lang.Exception</exception>
+				<handled>
+					<constant>false</constant>
+				</handled>
+				<setProperty propertyName="logMessage">
+					<simple>PDP Group removal, Error reported: ${exception}</simple>
+				</setProperty>
+				<setProperty propertyName="logComponent">
+					<simple>POLICY</simple>
+				</setProperty>
+				<to uri="direct:dump-loop-log-http-response" />
+			</doCatch>
+			<doFinally>
+				<to uri="direct:reset-raise-http-exception-flag" />
+				<to
+					uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+			</doFinally>
+		</doTry>
+	</route>
+</routes>
\ No newline at end of file
diff --git a/src/test/resources/clds/camel/routes/utils-flows.xml b/src/test/resources/clds/camel/routes/utils-flows.xml
new file mode 100644
index 0000000..bbbc46a
--- /dev/null
+++ b/src/test/resources/clds/camel/routes/utils-flows.xml
@@ -0,0 +1,28 @@
+<routes xmlns="http://camel.apache.org/schema/spring">
+	<route id="reset-raise-http-exception-flag">
+		<from uri="direct:reset-raise-http-exception-flag" />
+		<setProperty propertyName="raiseHttpExceptionFlag">
+			<simple resultType="java.lang.Boolean">true</simple>
+		</setProperty>
+	</route>
+
+	<route id="dump-loop-log-http-response">
+		<from uri="direct:dump-loop-log-http-response" />
+		<log loggingLevel="INFO"
+			message="${exchangeProperty[logMessage]} - ${header.CamelHttpResponseCode} : ${header.CamelHttpResponseText}" />
+		<choice>
+			<when>
+				<simple>${exchangeProperty[logComponent]} == null</simple>
+				<to
+					uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('${exchangeProperty[logMessage]} - ${header.CamelHttpResponseCode} : ${header.CamelHttpResponseText}','INFO',${exchangeProperty[loopObject]})" />
+			</when>
+			<otherwise>
+				<to
+					uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLogForComponent('${exchangeProperty[logMessage]} - ${header.CamelHttpResponseCode} : ${header.CamelHttpResponseText}','INFO','${exchangeProperty[logComponent]}',${exchangeProperty[loopObject]})" />
+				<setProperty propertyName="logComponent">
+					<constant>null</constant>
+				</setProperty>
+			</otherwise>
+		</choice>
+	</route>
+</routes>
\ No newline at end of file