Remove policy from PEF when removing op policy

The operational policy must be removed from the PEF when the user remove an operational policy (at least attempt to purge the PEF)

Issue-ID: CLAMP-824
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
Change-Id: I442c0890c391d43e8fcbdb89189d6ad2581db3af
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java
index 19a17db..0813313 100644
--- a/src/main/java/org/onap/clamp/loop/Loop.java
+++ b/src/main/java/org/onap/clamp/loop/Loop.java
@@ -331,6 +331,36 @@
     }
 
     /**
+     * Return the operationalPolicy object with the opPolicyName.
+     *
+     * @param opPolicyName The operationalPolicy name
+     * @return The OperationalPolicy object found in loop object
+     */
+    public OperationalPolicy getOperationalPolicy(String opPolicyName) {
+        for (OperationalPolicy operationalPolicy : this.getOperationalPolicies()) {
+            if (operationalPolicy.getName().equals(opPolicyName)) {
+                return operationalPolicy;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Return the microServicePolicy object with the msPolicyName.
+     *
+     * @param msPolicyName The microServicePolicy name
+     * @return The MicroServicePolicy object found in loop object
+     */
+    public MicroServicePolicy getMicroServicePolicy(String msPolicyName) {
+        for (MicroServicePolicy microServicePolicy : this.getMicroServicePolicies()) {
+            if (microServicePolicy.getName().equals(msPolicyName)) {
+                return microServicePolicy;
+            }
+        }
+        return null;
+    }
+
+    /**
      * Generate the loop name.
      *
      * @param serviceName       The service name
diff --git a/src/main/java/org/onap/clamp/loop/LoopController.java b/src/main/java/org/onap/clamp/loop/LoopController.java
index a2a4463..fad93bc 100644
--- a/src/main/java/org/onap/clamp/loop/LoopController.java
+++ b/src/main/java/org/onap/clamp/loop/LoopController.java
@@ -137,11 +137,11 @@
     }
 
     /**
-     * This method remove an operational policy to a loop instance.
+     * This method removes an operational policy from a loop instance.
      *
      * @param loopName      The loop name
      * @param policyType    The policy model type
-     * @param policyVersion The policy model  version
+     * @param policyVersion The policy model version
      * @return The loop modified
      */
     public Loop removeOperationalPolicy(String loopName, String policyType, String policyVersion) {
diff --git a/src/main/java/org/onap/clamp/loop/LoopService.java b/src/main/java/org/onap/clamp/loop/LoopService.java
index 6658c5a..ca3681b 100644
--- a/src/main/java/org/onap/clamp/loop/LoopService.java
+++ b/src/main/java/org/onap/clamp/loop/LoopService.java
@@ -131,7 +131,7 @@
      *
      * @param loopName      The loop name
      * @param policyType    The policy model type
-     * @param policyVersion The policy model  version
+     * @param policyVersion The policy model version
      * @return The loop modified
      */
     Loop removeOperationalPolicy(String loopName, String policyType, String policyVersion) {
diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml
index 7706267..fc7dbd4 100644
--- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml
+++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml
@@ -770,15 +770,29 @@
 				</doTry>
 			</route>
 		</put>
-		<put uri="/v2/loop/removeOperationaPolicy/{loopName}/policyModel/{policyType}/{policyVersion}" outType="org.onap.clamp.loop.Loop" produces="application/json">
+		<put uri="/v2/loop/removeOperationaPolicy/{loopName}/policyModel/{policyType}/{policyVersion}/{policyName}" outType="org.onap.clamp.loop.Loop" produces="application/json">
 			<route>
-				<removeHeaders pattern="*" excludePattern="loopName|policyType|policyVersion" />
+				<removeHeaders pattern="*" excludePattern="loopName|policyType|policyVersion|policyName" />
 				<doTry>
 					<to
 							uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'REMOVE operational Policy')" />
 					<to
 							uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" />
 					<to uri="direct:load-loop" />
+					<setProperty propertyName="policyName">
+						<simple>${header.policyName}</simple>
+					</setProperty>
+					<setProperty propertyName="policy">
+						<simple>${exchangeProperty[loopObject].getOperationalPolicy(header.policyName)}</simple>
+					</setProperty>
+					<setProperty propertyName="raiseHttpExceptionFlag">
+						<simple resultType="java.lang.Boolean">false</simple>
+					</setProperty>
+					<to uri="direct:remove-one-policy-from-active-pdp-group" />
+					<setProperty propertyName="raiseHttpExceptionFlag">
+						<simple resultType="java.lang.Boolean">false</simple>
+					</setProperty>
+					<to uri="direct:delete-policy" />
 					<to
 							uri="bean:org.onap.clamp.loop.LoopController?method=removeOperationalPolicy(${header.loopName},${header.policyType},${header.policyVersion})" />
 					<to
diff --git a/src/main/resources/clds/camel/routes/policy-flows.xml b/src/main/resources/clds/camel/routes/policy-flows.xml
index ef68a54..59772c2 100644
--- a/src/main/resources/clds/camel/routes/policy-flows.xml
+++ b/src/main/resources/clds/camel/routes/policy-flows.xml
@@ -1,521 +1,579 @@
-
 <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="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/${exchangeProperty[policyTypeVersion]}/policies/${exchangeProperty[policyName]}/versions/${exchangeProperty[policyVersion]}"></log>
-						<toD
-								uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyType]}/versions/${exchangeProperty[policyTypeVersion]}/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-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/${exchangeProperty[policyTypeVersion]}/policies/${exchangeProperty[policyName]}/versions/${exchangeProperty[policyVersion]}"></log>
+            <toD
+                    uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyType]}/versions/${exchangeProperty[policyTypeVersion]}/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.pap.url}}/policy/pap/v1/policies/deployed/${exchangeProperty[policyName]}/1.0.0"></log>
-						<toD
-								uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/policies/deployed/${exchangeProperty[policyName]}/1.0.0?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="get-all-policy-models">
-				<from uri="direct:get-all-policy-models"/>
-				<doTry>
-						<log loggingLevel="INFO" message="Getting all the policy models"/>
-						<to
-								uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Getting all the policy models')"/>
-						<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 all policy models: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes"></log>
-						<toD
-								uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes?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"/>
-						<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>
-		<route id="get-policy-model">
-				<from uri="direct:get-policy-model"/>
-				<doTry>
-						<log loggingLevel="INFO"
-								message="Getting the policy model: ${exchangeProperty[policyModelName]}/${exchangeProperty[policyModelVersion]}"/>
-						<to
-								uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Getting the policy model')"/>
-						<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 model: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyModelName]}/versions/${exchangeProperty[policyModelVersion]}"></log>
-						<toD
-								uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyModelName]}/versions/${exchangeProperty[policyModelVersion]}?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"/>
-						<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>
-		<route id="create-policy">
-			<from uri="direct:create-policy"/>
-			<doTry>
-				<log loggingLevel="INFO"
-					 message="Creating Policy: ${exchangeProperty[policy].getName()}"/>
-				<to
-						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Create Policy')"/>
-				<setBody>
-					<simple>${exchangeProperty[policy].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 policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies"></log>
-				<toD
-						uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/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[policy].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="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.pap.url}}/policy/pap/v1/policies/deployed/${exchangeProperty[policyName]}/1.0.0"></log>
+            <toD
+                    uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/policies/deployed/${exchangeProperty[policyName]}/1.0.0?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="get-all-policy-models">
+        <from uri="direct:get-all-policy-models"/>
+        <doTry>
+            <log loggingLevel="INFO" message="Getting all the policy models"/>
+            <to
+                    uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Getting all the policy models')"/>
+            <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 all policy models: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes"></log>
+            <toD
+                    uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes?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"/>
+            <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>
+    <route id="get-policy-model">
+        <from uri="direct:get-policy-model"/>
+        <doTry>
+            <log loggingLevel="INFO"
+                 message="Getting the policy model: ${exchangeProperty[policyModelName]}/${exchangeProperty[policyModelVersion]}"/>
+            <to
+                    uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Getting the policy model')"/>
+            <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 model: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyModelName]}/versions/${exchangeProperty[policyModelVersion]}"></log>
+            <toD
+                    uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyModelName]}/versions/${exchangeProperty[policyModelVersion]}?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"/>
+            <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>
+    <route id="create-policy">
+        <from uri="direct:create-policy"/>
+        <doTry>
+            <log loggingLevel="INFO"
+                 message="Creating Policy: ${exchangeProperty[policy].getName()}"/>
+            <to
+                    uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Create Policy')"/>
+            <setBody>
+                <simple>${exchangeProperty[policy].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 policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies"></log>
+            <toD
+                    uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/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[policy].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-policy">
-			<from uri="direct:delete-policy"/>
-			<doTry>
-				<log loggingLevel="INFO"
-					 message="Deleting Policy: ${exchangeProperty[policy].getName()}"/>
-				<to
-						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete 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>
-				<choice>
-					<when>
-						<simple>${exchangeProperty[policy].isLegacy()} == true</simple>
-						<setProperty propertyName="policyVersion">
-							<simple>1</simple>
-						</setProperty>
-					</when>
-					<otherwise>
-						<setProperty propertyName="policyVersion">
-							<simple>1.0.0</simple>
-						</setProperty>
-					</otherwise>
-				</choice>
-				<log loggingLevel="INFO"
-					 message="Endpoint to delete policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies/${exchangeProperty[policy].getName()}/versions/${exchangeProperty[policyVersion]}"></log>
-				<toD
-						uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies/${exchangeProperty[policy].getName()}/versions/${exchangeProperty[policyVersion]}?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"/>
+    <route id="delete-policy">
+        <from uri="direct:delete-policy"/>
+        <doTry>
+            <log loggingLevel="INFO"
+                 message="Deleting Policy: ${exchangeProperty[policy].getName()}"/>
+            <to
+                    uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete 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>
+            <choice>
+                <when>
+                    <simple>${exchangeProperty[policy].isLegacy()} == true</simple>
+                    <setProperty propertyName="policyVersion">
+                        <simple>1</simple>
+                    </setProperty>
+                </when>
+                <otherwise>
+                    <setProperty propertyName="policyVersion">
+                        <simple>1.0.0</simple>
+                    </setProperty>
+                </otherwise>
+            </choice>
+            <log loggingLevel="INFO"
+                 message="Endpoint to delete policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies/${exchangeProperty[policy].getName()}/versions/${exchangeProperty[policyVersion]}"></log>
+            <toD
+                    uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies/${exchangeProperty[policy].getName()}/versions/${exchangeProperty[policyVersion]}?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[policy].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>
+            <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[policy].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"/>
+    <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>
+            <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],"POST")}
-								</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/deployments/batch"></log>
-						<toD
-								uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/deployments/batch?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"/>
+    <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],"POST")}
+                </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/deployments/batch"></log>
+            <toD
+                    uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/deployments/batch?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>
+            <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 loop policies from PDP Group: ${exchangeProperty[loopObject].getName()}"/>
-				<to
-						uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Remove policies from PDP group')"/>
-				<setBody>
-					<simple>${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject],"DELETE")}
-					</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 remove policies from PDP Group: {{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/deployments/batch"></log>
-				<toD
-						uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/deployments/batch?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"/>
+    <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 loop policies from PDP Group: ${exchangeProperty[loopObject].getName()}"/>
+            <to
+                    uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Remove policies from PDP group')"/>
+            <setBody>
+                <simple>
+                    ${exchangeProperty[loopObject].getComponent("POLICY").createPoliciesPayloadPdpGroup(exchangeProperty[loopObject],"DELETE")}
+                </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 remove policies from PDP Group: {{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/deployments/batch"></log>
+            <toD
+                    uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/deployments/batch?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 remove ALL status</simple>
-					</setProperty>
-					<setProperty propertyName="logComponent">
-						<simple>POLICY</simple>
-					</setProperty>
-					<to uri="direct:dump-loop-log-http-response"/>
-				</doFinally>
-			</doTry>
-		</route>
-		<route id="get-all-pdp-groups">
-				<from uri="direct:get-all-pdp-groups"/>
-				<doTry>
-						<log loggingLevel="INFO"
-								message="Getting the list of PDP Groups"/>
-						<to
-								uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Getting the PDP Group list')"/>
-						<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 model: {{clamp.config.policy.pap.url}}/policy/pap/v1/pdps"></log>
-						<toD
-								uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps?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"/>
-						<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>
+            <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 remove ALL status</simple>
+                </setProperty>
+                <setProperty propertyName="logComponent">
+                    <simple>POLICY</simple>
+                </setProperty>
+                <to uri="direct:dump-loop-log-http-response"/>
+            </doFinally>
+        </doTry>
+    </route>
+    <route id="get-all-pdp-groups">
+        <from uri="direct:get-all-pdp-groups"/>
+        <doTry>
+            <log loggingLevel="INFO"
+                 message="Getting the list of PDP Groups"/>
+            <to
+                    uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Getting the PDP Group list')"/>
+            <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 model: {{clamp.config.policy.pap.url}}/policy/pap/v1/pdps"></log>
+            <toD
+                    uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps?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"/>
+            <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>
+    <route id="remove-one-policy-from-active-pdp-group">
+        <from uri="direct:remove-one-policy-from-active-pdp-group"/>
+        <doTry>
+            <log loggingLevel="INFO"
+                 message="Removing policy from active PDP group for loop: ${exchangeProperty[loopObject].getName()}"/>
+            <to
+                    uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Removing one policy PDP group')"/>
+            <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"/>
+            <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/ui-react/src/api/LoopService.js b/ui-react/src/api/LoopService.js
index 698ee28..f10d187 100644
--- a/ui-react/src/api/LoopService.js
+++ b/ui-react/src/api/LoopService.js
@@ -240,8 +240,8 @@
 			});
 	}
 
-	static removeOperationalPolicyType(loopName, policyType, policyVersion) {
-		return fetch('/restservices/clds/v2/loop/removeOperationaPolicy/' + loopName + '/policyModel/' + policyType +'/' + policyVersion , {
+	static removeOperationalPolicyType(loopName, policyType, policyVersion, policyName) {
+		return fetch('/restservices/clds/v2/loop/removeOperationaPolicy/' + loopName + '/policyModel/' + policyType +'/' + policyVersion + '/' + policyName , {
 			method: 'PUT',
 			headers: {
 				"Content-Type": "application/json"
diff --git a/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js b/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js
index 1802e43..11e9353 100644
--- a/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js
+++ b/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js
@@ -78,6 +78,10 @@
 				cellStyle: cellStyle,
 				headerStyle: headerStyle
 			},
+			{ title: "Policy Name", field: "policyName",
+             	cellStyle: cellStyle,
+                headerStyle: headerStyle
+            },
 			{ title: "Version", field: "version",
 				cellStyle: cellStyle,
 				headerStyle: headerStyle
@@ -90,7 +94,7 @@
 				cellStyle: cellStyle,
 				headerStyle: headerStyle
 			},
-             { title: "Add", field: "updatedDate", editable: 'never',
+             { title: "Created Date", field: "createdDate", editable: 'never',
              	cellStyle: cellStyle,
              	headerStyle: headerStyle
              }
@@ -128,7 +132,9 @@
 		var operationalPolicies = this.state.loopCache.getOperationalPolicies();
 		var selectedPolicyModels = [];
 		for (var policy in operationalPolicies) {
-			selectedPolicyModels.push(operationalPolicies[policy]["policyModel"]);
+		    var newRow = operationalPolicies[policy]["policyModel"];
+		    newRow.add("policyName", operationalPolicies[policy].name);
+			selectedPolicyModels.push(newRow);
 		}
 
 		PolicyToscaService.getToscaPolicyModels().then(allToscaModels => {
@@ -167,7 +173,7 @@
 	}
 
 	handleRemove() {
-		LoopService.removeOperationalPolicyType(this.state.loopCache.getLoopName(),this.state.selectedRowData.policyModelType,this.state.selectedRowData.version);
+		LoopService.removeOperationalPolicyType(this.state.loopCache.getLoopName(),this.state.selectedRowData.policyModelType,this.state.selectedRowData.version,this.state.selectedRowData.policyName);
 		this.props.loadLoopFunction(this.state.loopCache.getLoopName());
 		this.handleClose();
 	}
@@ -203,7 +209,7 @@
 					<Tab eventKey="remove" title="Remove Operational Policies">
 						<Modal.Body>
 							<MaterialTable
-							title={"Already added Tosca Policy Models"}
+							title={"Tosca Policy Models already added"}
 							data={this.state.selectedPolicyModelsData}
 							columns={this.state.toscaColumns}
 							icons={this.state.tableIcons}