Merge "Fixed TOSCA parsing bugs"
diff --git a/.gitignore b/.gitignore
index 46f3928..4640bd9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,27 @@
 XACML-REST/IntegrityMonitor.log
 /bin/
 *.checkstyle
+BRMSGateway/logs/
+BRMSGateway/sql/
+BRMSGateway/src/test/resources/META-INF/generatedCreate.ddl
+BRMSGateway/src/test/resources/META-INF/generatedDrop.ddl
+BRMSGateway/src/test/resources/failure.properties
+LogParser/logs/
+ONAP-PAP-REST/catalina.base_IS_UNDEFINED/
+ONAP-PAP-REST/pdps/
+ONAP-PAP-REST/sql/
+ONAP-PAP-REST/src/test/resources/generatedCreate.ddl
+ONAP-PAP-REST/src/test/resources/generatedDrop.ddl
+ONAP-PAP-REST/src/test/resources/webapps/
+ONAP-PDP-REST/catalina.base_IS_UNDEFINED/
+ONAP-PDP-REST/sql/
+ONAP-PDP-REST/src/test/resources/config_testing/
+ONAP-PDP-REST/src/test/resources/generatedCreate.ddl
+ONAP-PDP-REST/src/test/resources/generatedDrop.ddl
+ONAP-PDP-REST/topicBackup.txt
+ONAP-PDP/logs/
+ONAP-XACML/logs/
+ONAP-XACML/src/test/resources/pdpstest/
+POLICY-SDK-APP/catalina.base_IS_UNDEFINED/
+PolicyEngineAPI/logs/
+PolicyEngineUtils/logs/
diff --git a/BRMSGateway/config.properties b/BRMSGateway/config.properties
index 762f0ff..b17804b 100644
--- a/BRMSGateway/config.properties
+++ b/BRMSGateway/config.properties
@@ -47,19 +47,17 @@
 policyKeyID = controller
 
 ## GroupNames can be comma separated values. 
-groupNames = default, vFW , vDNS
+groupNames = default, amsterdam
 default.groupID = org.onap.policy-engine
 default.artifactID = drlPDPGroup
-vFW.groupID= org.onap.policy-engine.drools.vFW
-vFW.artifactID= policy-vFW-rules
-vDNS.groupID= org.onap.policy-engine.drools.vDNS
-vDNS.artifactID= policy-vDNS-rules
+amsterdam.groupID= org.onap.policy-engine.drools.amsterdam
+amsterdam.artifactID= policy-amsterdam-rules
 
 #Integrity Monitor values
 #database driver for Integrity Monitor
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
 #database URL for Integrity Monitor
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 #database username for Integrity Monitor
 javax.persistence.jdbc.user=policy_user
 #database password for Integrity Monitor
diff --git a/BRMSGateway/dependency.json b/BRMSGateway/dependency.json
index a883cc9..f758db0 100644
--- a/BRMSGateway/dependency.json
+++ b/BRMSGateway/dependency.json
@@ -1,33 +1,102 @@
 {
-	"dependencies": {
-		"default": [{
-			"groupId": "org.onap.policy.drools-applications",
-			"artifactId": "demo",
-			"version": "1.1.0-SNAPSHOT"
-		}, {
-			"groupId": "org.onap.policy.drools-applications",
-			"artifactId": "events",
-			"version": "1.1.0-SNAPSHOT"
-		}, {
-			"groupId": "org.onap.policy.drools-applications",
-			"artifactId": "rest",
-			"version": "1.1.0-SNAPSHOT"
-		}, {
-			"groupId": "org.onap.policy.drools-applications",
-			"artifactId": "appc",
-			"version": "1.1.0-SNAPSHOT"
-		}, {
-			"groupId": "org.onap.policy.drools-applications",
-			"artifactId": "aai",
-			"version": "1.1.0-SNAPSHOT"
-		}, {
-			"groupId": "org.onap.policy.drools-applications",
-			"artifactId": "mso",
-			"version": "1.1.0-SNAPSHOT"
-		}, {
-			"groupId": "org.onap.policy.drools-applications",
-			"artifactId": "trafficgenerator",
-			"version": "1.1.0-SNAPSHOT"
-		}]
-	}
+    "dependencies": {
+        "default": [{
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "demo",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "events",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "rest",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "aai",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "mso",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "trafficgenerator",
+            "version": "1.1.0-SNAPSHOT"
+        }],
+        "amsterdam": [{
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "events",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appclcm",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "vfc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "so",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "aai",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "sdc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "trafficgenerator",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "eventmanager",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "guard",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actorServiceProvider",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.appc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.appclcm",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.so",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.vfc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "policy-yaml",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "com.att.research.xacml",
+            "artifactId": "xacml-pdp",
+            "version": "1.0.0"
+        }]
+    }
 }
\ No newline at end of file
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSHandler.java b/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSHandler.java
index 4303186..a11e8b4 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSHandler.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSHandler.java
@@ -95,7 +95,7 @@
 				}
 			}
 		}
-		Boolean failureFlag = false;
+		Boolean failureFlag;
 		int i = 0;
 		do{
 			failureFlag = false;
@@ -118,6 +118,7 @@
 	 * (non-Javadoc)
 	 * @see org.onap.policy.utils.BackUpHandler#runOnNotification(org.onap.policy.api.PDPNotification)
 	 */
+	@Override
 	public void runOnNotification(PDPNotification notification){
 		if(notification.getNotificationType().equals(NotificationType.REMOVE)){
 			removedPolicies(notification.getRemovedPolicies());
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java b/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
index c923c3c..266e090 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
@@ -109,6 +109,7 @@
     private static final String[] GOALS = { "clean", "deploy" };
     private static final String DEFAULT_VERSION = "1.1.0-SNAPSHOT";
     private static final String DEPENDENCY_FILE = "dependency.json";
+    private static final String BRMSPERSISTENCE = "brmsEclipselink.persistencexml";
 
     private static Map<String, String> modifiedGroups = new HashMap<>();
     private static IntegrityMonitor im;
@@ -188,8 +189,10 @@
         } catch (Exception e) {
             LOGGER.error("Error starting BackUpMonitor: " + e);
         }
-        if(!config.containsKey(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML)){
+        if(!config.containsKey(BRMSPERSISTENCE)){
             config.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, "META-INF/persistenceBRMS.xml");
+        } else {
+            config.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, config.getProperty(BRMSPERSISTENCE,"META-INF/persistenceBRMS.xml"));
         }
         EntityManagerFactory emf = Persistence.createEntityManagerFactory("BRMSGW", config);
         em = emf.createEntityManager();
@@ -388,11 +391,11 @@
                     selectedName = responseAttributes.get(key);
                 }
                 // kmodule configurations
-                else if (key.equals("kSessionName")) {
+                else if ("kSessionName".equals(key)) {
                     kSessionName = responseAttributes.get(key);
                 }
                 // Check User Specific values.
-                if (key.equals("$controller:")) {
+                if ("$controller:".equals(key)) {
                     try {
                         PEDependency dependency = PolicyUtils.jsonStringToObject(responseAttributes.get(key),
                                 PEDependency.class);
@@ -402,7 +405,7 @@
                         LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while resolving Controller: " + e);
                     }
 
-                } else if (key.equals("$dependency$")) {
+                } else if ("$dependency$".equals(key)) {
                     String value = responseAttributes.get(key);
                     if (value.startsWith("[") && value.endsWith("]")) {
                         value = value.substring(1, value.length() - 1).trim();
@@ -500,7 +503,7 @@
         List<?> pList = query.getResultList();
         boolean createFlag = false;
         BRMSPolicyInfo brmsPolicyInfo = new BRMSPolicyInfo();
-        if (pList.size() > 0) {
+        if (!pList.isEmpty()) {
             // Already exists.
             brmsPolicyInfo = (BRMSPolicyInfo) pList.get(0);
             if (!brmsPolicyInfo.getControllerName().getControllerName().equals(controllerName)) {
@@ -514,7 +517,7 @@
             query.setParameter("cn", controllerName);
             List<?> bList = query.getResultList();
             BRMSGroupInfo brmsGroupInfo = new BRMSGroupInfo();
-            if (bList.size() > 0) {
+            if (!bList.isEmpty()) {
                 brmsGroupInfo = (BRMSGroupInfo) bList.get(0);
             }
             brmsPolicyInfo.setPolicyName(policyName);
@@ -528,7 +531,7 @@
     private void syncProject(String selectedName) {
         boolean projectExists = checkProject(selectedName);
         if (projectExists) {
-            String version = null;
+            String version;
             version = getVersion(selectedName);
             if (version == null) {
                 LOGGER.error("Error getting local version for the given Controller Name:" + selectedName
@@ -599,7 +602,6 @@
                 }
                 fos.close();
                 is.close();
-                f = null;
                 LOGGER.info(fileName + " Created..");
             }
         }
@@ -641,7 +643,7 @@
 
     private boolean checkRemoteSync(String selectedName, String version) {
         List<NexusArtifact> artifacts = getArtifactFromNexus(selectedName, version);
-        return (artifacts.size() == 0) ? false : true;
+        return artifacts.isEmpty() ? false : true;
     }
 
     private List<NexusArtifact> getArtifactFromNexus(String selectedName, String version) {
@@ -690,7 +692,7 @@
         if (artifact != null) {
             newVersion = incrementVersion(artifact.getVersion());
         }
-        if (newVersion.equals("0.1.0")) {
+        if ("0.1.0".equals(newVersion)) {
             createFlag = true;
         }
         setVersion(newVersion, selectedName);
@@ -736,8 +738,9 @@
         }
         if (!modifiedGroups.isEmpty()) {
             Boolean flag = false;
-            for (String group : modifiedGroups.keySet()) {
+            for (Map.Entry<String, String> entry : modifiedGroups.entrySet()) {
                 InvocationResult result = null;
+		String group = entry.getKey();
                 try {
                     InvocationRequest request = new DefaultInvocationRequest();
                     setVersion(group);
@@ -761,7 +764,7 @@
                     if (createFlag) {
                         addNotification(group, "create");
                     } else {
-                        addNotification(group, modifiedGroups.get(group));
+                        addNotification(group, entry.getValue());
                     }
                     flag = true;
                 } else {
@@ -795,7 +798,7 @@
             return policyMap.get(name);
         } else {
             syncGroupInfo();
-            return (policyMap.containsKey(name)) ? policyMap.get(name) : null;
+            return policyMap.containsKey(name) ? policyMap.get(name) : null;
         }
     }
 
@@ -869,7 +872,7 @@
             pub.send("MyPartitionKey", message);
 
             final List<?> stuck = pub.close(uebDelay, TimeUnit.SECONDS);
-            if (stuck.size() > 0) {
+            if (!stuck.isEmpty()) {
                 LOGGER.error(stuck.size() + " messages unsent");
             } else {
                 LOGGER.debug("Clean exit; Message Published on UEB : " + uebList + "for Topic: " + pubTopic);
@@ -1018,7 +1021,7 @@
     }
 
     private void readGroups(Properties config) throws PolicyException {
-        String[] groupNames = null;
+        String[] groupNames;
         if (!config.containsKey("groupNames") || config.getProperty("groupNames")==null){
             throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE
                     + "groupNames property is missing or empty from the property file ");
@@ -1069,7 +1072,7 @@
         query.setParameter("cn", name);
         List<?> groupList = query.getResultList();
         BRMSGroupInfo brmsGroupInfo = null;
-        if (groupList.size() > 0) {
+        if (!groupList.isEmpty()) {
             LOGGER.info("Controller name already Existing in DB. Will be updating the DB Values" + name);
             brmsGroupInfo = (BRMSGroupInfo) groupList.get(0);
         }
@@ -1122,8 +1125,8 @@
         Query query = em.createQuery("select b from BRMSPolicyInfo as b where b.policyName = :pn");
         query.setParameter("pn", policyName);
         List<?> pList = query.getResultList();
-        BRMSPolicyInfo brmsPolicyInfo = new BRMSPolicyInfo();
-        if (pList.size() > 0) {
+        BRMSPolicyInfo brmsPolicyInfo;
+        if (!pList.isEmpty()) {
             // Already exists.
             brmsPolicyInfo = (BRMSPolicyInfo) pList.get(0);
             if (brmsPolicyInfo.getControllerName().getControllerName().equals(controllerName)) {
diff --git a/BRMSGateway/src/test/resources/config.properties b/BRMSGateway/src/test/resources/config.properties
index 4f9e013..8c46ec2 100644
--- a/BRMSGateway/src/test/resources/config.properties
+++ b/BRMSGateway/src/test/resources/config.properties
@@ -65,7 +65,7 @@
 #database password for Integrity Monitor
 javax.persistence.jdbc.password=
 #persistence xml
-eclipselink.persistencexml=META-INF/persistenceBRMStest.xml
+brmsEclipselink.persistencexml=META-INF/persistenceBRMStest.xml
 #resource name
 RESOURCE_NAME=site_1.brmsgw_1
 #***Properties for IntegrityMonitor integration defined in IntegrityMonitorProperties.java***
diff --git a/LogParser/parserlog.properties b/LogParser/parserlog.properties
index 4a5ecdb..66ce34d 100644
--- a/LogParser/parserlog.properties
+++ b/LogParser/parserlog.properties
@@ -20,14 +20,14 @@
 
 #Health Check Values
 RESOURCE_NAME=logparser_pap01
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
 #Log Parser application values
-JDBC_DRIVER=com.mysql.jdbc.Driver
-JDBC_URL=jdbc:mysql://localhost:3306/log
+JDBC_DRIVER=org.mariadb.jdbc.Driver
+JDBC_URL=jdbc:mariadb://localhost:3306/log
 JDBC_USER=policy_user
 JDBC_PASSWORD=policy_user
 SERVER=https://localhost:9091/pap/
diff --git a/LogParser/src/test/java/org/onap/xacml/parser/ParseLogTest.java b/LogParser/src/test/java/org/onap/xacml/parser/ParseLogTest.java
index c12797f..1f42ac3 100644
--- a/LogParser/src/test/java/org/onap/xacml/parser/ParseLogTest.java
+++ b/LogParser/src/test/java/org/onap/xacml/parser/ParseLogTest.java
@@ -122,8 +122,8 @@
 		
 		config = new Properties();
 		config.put("RESOURCE_NAME", "logparser_pap01");
-		config.put("JDBC_DRIVER" ,"com.mysql.jdbc.Driver");
-		config.put("JDBC_URL", "jdbc:mysql://localhost:3306/");
+		config.put("JDBC_DRIVER" ,"org.mariadb.jdbc.Driver");
+		config.put("JDBC_URL", "jdbc:mariadb://localhost:3306/");
 		config.put("JDBC_USER", "root");
 		config.put("JDBC_PASSWORD", "password");
 		config.put("JMX_URL", "service:jmx:rmi:///jndi/rmi://localhost:9998/jmxrmi");
diff --git a/LogParser/src/test/resources/test_config.properties b/LogParser/src/test/resources/test_config.properties
index 6512184..ca2b9ed 100644
--- a/LogParser/src/test/resources/test_config.properties
+++ b/LogParser/src/test/resources/test_config.properties
@@ -20,8 +20,8 @@
 
 
 RESOURCE_NAME=logparser_pap01
-JDBC_DRIVER=com.mysql.jdbc.Driver
-JDBC_URL=jdbc:mysql://localhost:3306/
+JDBC_DRIVER=org.mariadb.jdbc.Driver
+JDBC_URL=jdbc:mariadb://localhost:3306/
 JDBC_USER=root
 JDBC_PASSWORD=password
 jmx_url=service:jmx:rmi:///jndi/rmi://localhost:9996/jmxrmi
diff --git a/ONAP-PAP-REST/policyelk.properties b/ONAP-PAP-REST/policyelk.properties
index 386008c..d07fab9 100644
--- a/ONAP-PAP-REST/policyelk.properties
+++ b/ONAP-PAP-REST/policyelk.properties
@@ -24,7 +24,7 @@
  
  
 #Policy Database properties
-policy.database.driver=com.mysql.jdbc.Driver
-policy.database.url=jdbc:mysql://localhost:3306/onap_sdk?autoReconnect=true&useSSL=false
+policy.database.driver=org.mariadb.jdbc.Driver
+policy.database.url=jdbc:mariadb://localhost:3306/onap_sdk?autoReconnect=true&useSSL=false
 policy.database.username=policy_user
 policy.database.password=policy_user
\ No newline at end of file
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java
index b27dd22..3ed2ee3 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/CreateBrmsParamPolicy.java
@@ -34,6 +34,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.UUID;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -116,10 +117,8 @@
     
 	// Utility to read json data from the existing file to a string
 	static String readFile(String path, Charset encoding) throws IOException {
-
 		byte[] encoded = Files.readAllBytes(Paths.get(path));
 		return new String(encoded, encoding);
-
 	}
 	
 	// Saving the Configurations file at server location for config policy.
@@ -135,8 +134,6 @@
 			policyAdapter.setJsonBody(expandedBody);
 			policyAdapter.setConfigBodyData(expandedBody);
 			out.close();
-			
-
 		} catch (Exception e) {
 			PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving configuration file");
 		}
@@ -207,7 +204,7 @@
 		Map<String, String> mapFieldType= new HashMap<>();
 		if(rule!=null){
 			try {
-				String params = "";
+				StringBuilder params = new StringBuilder();
 				Boolean flag = false;
 				Boolean comment = false;
 				String lines[] = rule.split("\n");
@@ -252,19 +249,19 @@
 						continue;
 					}
 					if (flag) {
-						params = params + line;
+						params.append(line);
 					}
-					if (line.contains("declare Params")) {
-						params = params + line;
+					if (line.contains("declare PapParams")) {
+						params.append(line);
 						flag = true;
 					}
 					if (line.contains("end") && flag) {
 						break;
 					}
 				}
-				params = params.replace("declare Params", "").replace("end", "")
+				String param = params.toString().replace("declare PapParams", "").replace("end", "")
 						.replaceAll("\\s+", "");
-				String[] components = params.split(":");
+				String[] components = param.split(":");
 				String caption = "";
 				for (int i = 0; i < components.length; i++) {
 					String type = "";
@@ -335,16 +332,16 @@
 			
 			//Get the type of the UI Fields. 
 			Map<String,String> typeOfUIField=findType(valueFromDictionary);
-			String generatedRule=null;
-			String body = "";
+			StringBuilder generatedRule = new StringBuilder();
+			StringBuilder body = new StringBuilder();
 			
 			try {
 				
 				try {
-					body = "/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " +
-								"<$%BRMSParamTemplate=" + tempateValue + "%$> \n */ \n";
-					body = body +  valueFromDictionary + "\n";
-					generatedRule = "rule \"" +policyName.substring(0, policyName.replace(".xml", "").lastIndexOf(".")) +".Params\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tParams params = new Params();";
+					body.append("/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " +
+								"<$%BRMSParamTemplate=" + tempateValue + "%$> \n */ \n");
+					body.append(valueFromDictionary + "\n");
+					generatedRule.append("rule \"" +policyName.substring(0, policyName.replace(".xml", "").lastIndexOf(".")) +".PapParams\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tPapParams params = new PapParams();");
 					
 					//We first read the map data structure(ruleAndUIValue) received from the PAP-ADMIN
 					//We ignore if the key is "templateName as we are interested only in the UI fields and its value. 
@@ -361,24 +358,23 @@
 									if(fieldType.getValue()=="String")
 									{
 										//Type is String
-										generatedRule = generatedRule + "\n\t\tparams.set"
+										generatedRule.append("\n\t\tparams.set"
 												+ key + "(\""
-												+ entry.getValue() + "\");";
+												+ entry.getValue() + "\");");
 									}
 									else{
-										generatedRule = generatedRule + "\n\t\tparams.set"
+									    generatedRule.append("\n\t\tparams.set"
 												+ key  + "("
-												+  entry.getValue() + ");";
+												+  entry.getValue() + ");");
 									}
 								}
 							}
 						}
 					}
 					
-					generatedRule = generatedRule
-							+ "\n\t\tinsert(params);\nend";
+					generatedRule.append("\n\t\tinsert(params);\nend");
 					LOGGER.info("New rule generated with :" + generatedRule);
-					body = body + generatedRule;
+					body.append(generatedRule);
 				} catch (Exception e) {
 					PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving policy");
 				}
@@ -387,10 +383,10 @@
 				PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "CreateBrmsParamPolicy", "Exception saving policy");
 			}
 			
-			saveConfigurations(policyName,body);
+			saveConfigurations(policyName,body.toString());
 			
 			// Make sure the filename ends with an extension
-			if (policyName.endsWith(".xml") == false) {
+			if (!policyName.endsWith(".xml")) {
 				policyName = policyName + ".xml";
 			}
 
@@ -429,7 +425,7 @@
 			anyOf.getAllOf().add(allOf);
 
 			TargetType target = new TargetType();
-			((TargetType) target).getAnyOf().add(anyOf);
+			target.getAnyOf().add(anyOf);
 
 			// Adding the target to the policy element
 			configPolicy.setTarget((TargetType) target);
@@ -536,14 +532,14 @@
 		assignment2.setAttributeId("URLID");
 		assignment2.setCategory(CATEGORY_RESOURCE);
 		assignment2.setIssuer("");
-		AttributeValueType AttributeValue = new AttributeValueType();
-		AttributeValue.setDataType(URI_DATATYPE);
+		AttributeValueType attributeValue = new AttributeValueType();
+		attributeValue.setDataType(URI_DATATYPE);
 
 		String content = CONFIG_URL + "/Config/"+ getConfigFile(policyName);
 
-		AttributeValue.getContent().add(content);
+		attributeValue.getContent().add(content);
 		assignment2.setExpression(new ObjectFactory()
-				.createAttributeValue(AttributeValue));
+				.createAttributeValue(attributeValue));
 		advice.getAttributeAssignmentExpression().add(assignment2);
 
 		// Policy Name Assignment
@@ -624,8 +620,8 @@
         
         // Dynamic Field Config Attributes. 
 		Map<String, String> dynamicFieldConfigAttributes = policyAdapter.getDynamicFieldConfigAttributes();
-		for (String keyField : dynamicFieldConfigAttributes.keySet()) {
-			advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+keyField, dynamicFieldConfigAttributes.get(keyField)));
+		for (Entry<String, String> map : dynamicFieldConfigAttributes.entrySet()) {
+			advice.getAttributeAssignmentExpression().add(createResponseAttributes("key:"+map.getKey(), map.getValue()));
 		}
 		
 		//Risk Attributes
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java
index eae3e79..22d2da3 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java
@@ -63,6 +63,7 @@
 import org.onap.policy.xacml.std.pip.engines.aaf.AAFEngine;
 import org.onap.policy.xacml.util.XACMLPolicyScanner;
 
+import com.att.research.xacml.api.XACML3;
 import com.att.research.xacml.api.pap.PAPException;
 import com.att.research.xacml.std.IdentifierImpl;
 
@@ -229,7 +230,8 @@
 			decisionPolicy.setTarget(target);
 
 			Map<String, String> dynamicFieldDecisionSettings = policyAdapter.getDynamicSettingsMap();
-			if(policyAdapter.getRuleProvider()!=null && policyAdapter.getRuleProvider().equals(AAFPROVIDER)){
+			if(policyAdapter.getRuleProvider()!=null && (policyAdapter.getRuleProvider().equals(AAFPROVIDER)||
+					policyAdapter.getRuleProvider().equals(RAINY_DAY))){
 				dynamicFieldDecisionSettings = new HashMap<>();
 			}
 			
@@ -241,8 +243,8 @@
 				VariableDefinitionType dynamicVariable = createDynamicVariable(key, value, dataType);
 				decisionPolicy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(dynamicVariable);
 			}
-			Map<String, String> dynamicFieldTreatmentAttributes = policyAdapter.getRainydayMap();
 			
+			Map<String, String> dynamicFieldTreatmentAttributes = policyAdapter.getRainydayMap();
 			if(policyAdapter.getRuleProvider().equals(RAINY_DAY)){
 				for(String keyField : dynamicFieldTreatmentAttributes.keySet()) {
 					String errorcode = keyField;
@@ -423,7 +425,6 @@
 			// Values for AAF Provider are here for XML Creation. 
 			ConditionType condition = new ConditionType();
 			ApplyType decisionApply = new ApplyType();
-			String selectedFunction = "boolean-equal";
 			
 			AttributeValueType value1 = new AttributeValueType();
 			value1.setDataType(BOOLEAN_DATATYPE);
@@ -439,7 +440,7 @@
 			innerDecisionApply.setFunctionId(FUNCTION_BOOLEAN_ONE_AND_ONLY);
 			innerDecisionApply.getExpression().add(new ObjectFactory().createAttributeDesignator(value2));
 			
-			decisionApply.setFunctionId(dropDownMap.get(selectedFunction));
+			decisionApply.setFunctionId(XACML3.ID_FUNCTION_BOOLEAN_EQUAL.stringValue());
 			decisionApply.getExpression().add(new ObjectFactory().createAttributeValue(value1));
 			decisionApply.getExpression().add(new ObjectFactory().createApply(innerDecisionApply));
 			condition.setExpression(new ObjectFactory().createApply(decisionApply));
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java
index d142a46..675c825 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/ClosedLoopDictionaryController.java
@@ -35,6 +35,7 @@
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.pap.xacml.rest.adapters.GridData;
+import org.onap.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
 import org.onap.policy.pap.xacml.rest.util.JsonMessage;
 import org.onap.policy.rest.dao.CommonClassDao;
 import org.onap.policy.rest.jpa.ClosedLoopD2Services;
@@ -1042,6 +1043,10 @@
 		}
 		return null;
 	}
+	
+    public static void setCommonClassDao(CommonClassDaoImpl commonClassDaoImpl) {
+        commonClassDao = commonClassDaoImpl;
+    }
 
 }
 
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryController.java
index aac777a..f4e32eb 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryController.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryController.java
@@ -20,19 +20,9 @@
 
 package org.onap.policy.pap.xacml.rest.controller;
 
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.json.JSONObject;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
@@ -49,9 +39,17 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.servlet.ModelAndView;
 
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 @Controller
 public class DecisionPolicyDictionaryController {
@@ -184,7 +182,7 @@
             }
           
             if (fromAPI) {
-                if (responseString!=null && !responseString.equals("Duplicate")) {
+                if (!"Duplicate".equals(responseString)) {
                     if(isFakeUpdate){
                         responseString = "Exists";
                     } else {
@@ -264,7 +262,7 @@
 
 	
 	@RequestMapping(value={"/get_RainyDayDictionaryData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
-	public void getRainyDayDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
+	public void getRainyDayDictionaryEntityData(HttpServletResponse response){
 		try{
 			Map<String, Object> model = new HashMap<>();
 			ObjectMapper mapper = new ObjectMapper();
@@ -329,8 +327,8 @@
 						counter ++;
 					}
 				}
+				decisionRainyDay.setTreatments(userValue);
 			}
-			decisionRainyDay.setTreatments(userValue);
 			
 			if(decisionRainyDay.getId() == 0){
         		List<Object> duplicateData =  commonClassDao.checkDuplicateEntry(decisionRainyDay.getBbid()+":"+decisionRainyDay.getWorkstep(), "bbid:workstep", RainyDayTreatments.class);
@@ -352,7 +350,7 @@
             }
           
             if (fromAPI) {
-                if (responseString!=null && !responseString.equals("Duplicate")) {
+                if (!"Duplicate".equals(responseString)) {
                     if(isFakeUpdate){
                         responseString = "Exists";
                     } else {
@@ -416,7 +414,7 @@
 }
 
 class TreatmentValues { 
-	private ArrayList<Object> userDataTypeValues;
+	private ArrayList<Object> userDataTypeValues = new ArrayList<>();
 
 	public ArrayList<Object> getUserDataTypeValues() {
 		return userDataTypeValues;
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java
index 86706d1..3a4d7b7 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/controller/FirewallDictionaryController.java
@@ -103,6 +103,11 @@
 	public FirewallDictionaryController(CommonClassDao commonClassDao){
 		FirewallDictionaryController.commonClassDao = commonClassDao;
 	}
+	
+	public static void setCommonClassDao(CommonClassDao clDao){
+	    commonClassDao = clDao;
+	}
+	
 	/*
 	 * This is an empty constructor
 	 */
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/daoimpl/CommonClassDaoImpl.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/daoimpl/CommonClassDaoImpl.java
index 5d2b7f6..1766cb3 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/daoimpl/CommonClassDaoImpl.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/daoimpl/CommonClassDaoImpl.java
@@ -242,7 +242,12 @@
 		try {
 			Query hbquery = session.createQuery(query);
 			for (Map.Entry<String, Object> paramPair : params.entrySet()) {
-				hbquery.setParameter(paramPair.getKey(), paramPair.getValue());
+				if(paramPair.getValue() instanceof java.lang.Long){
+					hbquery.setLong(paramPair.getKey(), (long) paramPair.getValue());
+				}
+				else{
+					hbquery.setParameter(paramPair.getKey(), paramPair.getValue());
+				}
 			}
 			data = hbquery.list();
 			tx.commit();
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticSearchController.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticSearchController.java
index 97da767..78da2a5 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticSearchController.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/elk/client/PolicyElasticSearchController.java
@@ -388,17 +388,17 @@
 			case clVarbind :
 				VarbindDictionary varbindDictionary = (VarbindDictionary)mapper.readValue(root.get("data").toString(), VarbindDictionary.class);
 				value = varbindDictionary.getVarbindName();
-				policyList = searchElkDatabase(closedloop, "jsonBodyData.triggerSignaturesUsedForUI.signatures",value);
+				policyList = searchElkDatabase(closedloop, "jsonBodyData","*"+value+"*");
 				break;
 			case clVnf :
 				VNFType vNFType = (VNFType)mapper.readValue(root.get("data").toString(), VNFType.class);
 				value = vNFType.getVnftype();
-				policyList = searchElkDatabase(closedloop, "jsonBodyData.vnfType",value);
+				policyList = searchElkDatabase(closedloop, "jsonBodyData","*"+value+"*");
 				break;
 			case clVSCL :
 				VSCLAction vsclAction = (VSCLAction)mapper.readValue(root.get("data").toString(), VSCLAction.class);
 				value = vsclAction.getVsclaction();
-				policyList = searchElkDatabase(closedloop, "jsonBodyData.actions",value);
+				policyList = searchElkDatabase(closedloop, "jsonBodyData","*"+value+"*");
 				break;
 			case decision :
 				DecisionSettings decisionSettings = (DecisionSettings)mapper.readValue(root.get("data").toString(), DecisionSettings.class);
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java
index 13eee4a..ae749ad 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/DictionaryHandlerImpl.java
@@ -69,6 +69,9 @@
 			case "Settings":
 				dictionary.getSettingsDictionary(response);
 				break;
+			case "RainyDayTreatments":
+				dictionary.getRainyDayDictionary(response);
+				break;
 			case "DescriptiveScope":
 				dictionary.getDescriptiveDictionary(response);
 				break;
@@ -212,6 +215,9 @@
 			case "Settings":
 				result = dictionary.saveSettingsDictionary(request, response);
 				break;
+			case "RainyDayTreatments":
+				result = dictionary.saveRainyDayDictionary(request, response);
+				break;
 			case "DescriptiveScope":
 				result = dictionary.saveDescriptiveDictionary(request, response);
 				break;
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/SavePolicyHandler.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/SavePolicyHandler.java
index c86ded4..e7680c3 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/SavePolicyHandler.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/handler/SavePolicyHandler.java
@@ -131,6 +131,8 @@
 		policyAdapter.setRuleProvider(policy.getProviderComboBox());
 		policyAdapter.setDomainDir(policyAdapter.getPolicyScope());
 		policyAdapter.setDomain(policyAdapter.getPolicyScope());
+		policyAdapter.setRainydayMap(policy.getTreatments());
+
 		return policyAdapter;
 	}
 	
diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java
index 5b2fc4c..6e19b9b 100644
--- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java
+++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/service/DictionaryService.java
@@ -121,6 +121,13 @@
 		return result.getViewName();
 	}
 	
+	public String saveRainyDayDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{
+		
+		DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController();
+			ModelAndView result = dictionary.saveRainyDayDictionary(request, response);
+		return result.getViewName();
+	}
+	
 	public String saveDescriptiveDictionary(HttpServletRequest request, HttpServletResponse response) throws IOException{
 		
 		DescriptiveDictionaryController dictionary = new DescriptiveDictionaryController();
@@ -343,6 +350,11 @@
 			dictionary.getSettingsDictionaryEntityData(response);
 	}
 	
+	public void getRainyDayDictionary(HttpServletResponse response){
+		DecisionPolicyDictionaryController dictionary = new DecisionPolicyDictionaryController();
+			dictionary.getRainyDayDictionaryEntityData(response);
+	}
+	
 	public void getDescriptiveDictionary(HttpServletResponse response){
 		DescriptiveDictionaryController dictionary = new DescriptiveDictionaryController();
 			dictionary.getDescriptiveDictionaryEntityData(response);
diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java
index f913c18..13255ba 100644
--- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java
+++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/ia/DbAuditCompareEntriesTest.java
@@ -233,7 +233,7 @@
 		 
 		
 		entry1.setFlag("flag1");
-		entry1.setResoruceNodeName("node1");
+		entry1.setResourceNodeName("node1");
 		entry1.setResourceName("resourceName");
 		entry1.setTimeStamp(new Date());
 		
diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java
index f110c5b..8208893 100644
--- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java
+++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/test/XACMLPAPTest.java
@@ -23,11 +23,15 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
 import javax.servlet.ServletConfig;
@@ -43,8 +47,14 @@
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.onap.policy.pap.xacml.rest.XACMLPapServlet;
+import org.onap.policy.pap.xacml.rest.controller.ClosedLoopDictionaryController;
+import org.onap.policy.pap.xacml.rest.controller.FirewallDictionaryController;
 import org.onap.policy.pap.xacml.rest.daoimpl.CommonClassDaoImpl;
 import org.onap.policy.pap.xacml.rest.policycontroller.PolicyCreation;
+import org.onap.policy.rest.dao.CommonClassDao;
+import org.onap.policy.rest.jpa.BRMSParamTemplate;
+import org.onap.policy.rest.jpa.PolicyEditorScopes;
+import org.onap.policy.rest.jpa.UserInfo;
 import org.onap.policy.utils.PolicyUtils;
 import org.onap.policy.xacml.std.pap.StdPAPPolicy;
 import org.springframework.mock.web.MockHttpServletResponse;
@@ -84,7 +94,7 @@
     @Test
     public void testFirwallCreatePolicy() throws IOException, ServletException, SQLException {
         httpServletRequest = Mockito.mock(HttpServletRequest.class);
-        String json = "";
+        String json = "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}";
         Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
         Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
         Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
@@ -102,10 +112,429 @@
         Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
         Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
         Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_FW_test.1.xml");
+    }
+    
+    @Test
+    public void testBRMSCreatePolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Config");
+        Map<String, String> matchingAttributes = new HashMap<>();
+        Map<String, String> ruleAttributes = new HashMap<>();
+        ruleAttributes.put("templateName", "testPolicy");
+        ruleAttributes.put("samPoll", "5");
+        ruleAttributes.put("value", "test");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("BRMS_Param","test", "testing",
+                "BRMS_PARAM_RULE",false,"test", 
+                matchingAttributes, 0, "DROOLS", 
+                null, ruleAttributes, "5",
+                "default", "false", "", null, null);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        setPolicyCreation();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_BRMS_Param_test.1.xml");
+    }
+    
+    @Test
+    public void testBRMSRawCreatePolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Config");
+        Map<String, String> ruleAttributes = new HashMap<>();
+        ruleAttributes.put("value", "test");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("BRMS_Raw","test","testig description",
+                "BRMS_RAW_RULE",false,"test", ruleAttributes, 0, "DROOLS", 
+                "test", "4",
+                "default", "false", null,  null, null);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        setPolicyCreation();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_BRMS_Raw_test.1.xml");
+    }
+    
+    @Test
+    public void testClosedLoopPMCreatePolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Config");
+        String json = "{\"test\":\"java\"}";
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("ClosedLoop_PM", "test", "testing", "onap", 
+                json, false, null, "Registration Failure(Trinity)", false, "test", 0, null,
+                "default", "true", ""); 
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        setPolicyCreation();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_PM_test.1.xml");
+    }
+    
+    @Test
+    public void testDecisonAAFPolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Decision");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("test", "test rule", "ONAP", "AAF", null, null, null, 
+                null, null, null, null, null, null, null, false, "test", 0);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Decision_test.1.xml");
+    }
+    
+    @Test
+    public void testDecisonGuardPolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Decision");
+        Map<String, String> matchingAttributes = new HashMap<>();
+        matchingAttributes.put("actor","test");
+        matchingAttributes.put("recipe","restart");
+        matchingAttributes.put("targets","test,test1");
+        matchingAttributes.put("clname","");
+        matchingAttributes.put("limit","1");
+        matchingAttributes.put("timeWindow","15");
+        matchingAttributes.put("timeUnits","minute");
+        matchingAttributes.put("guardActiveStart","05:00");
+        matchingAttributes.put("guardActiveEnd","10:00");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("testGuard", "test rule", "PDPD", "GUARD_YAML", matchingAttributes , null, null, 
+                null, null, null, null, null, null, null, false, "test", 0);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Decision_testGuard.1.xml");
+    }
+    
+    @Test
+    public void testDecisonBLGuardPolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Decision");
+        Map<String, String> matchingAttributes = new HashMap<>();
+        matchingAttributes.put("actor","test");
+        matchingAttributes.put("recipe","restart");
+        matchingAttributes.put("clname","test");
+        matchingAttributes.put("guardActiveStart","05:00");
+        matchingAttributes.put("guardActiveEnd","10:00");
+        matchingAttributes.put("blackList","bl1,bl2");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("testblGuard", "test rule", "PDPD", "GUARD_BL_YAML", matchingAttributes , null, null, 
+                null, null, null, null, null, null, null, false, "test", 0);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Decision_testblGuard.1.xml");
+    }
+    
+    @Test
+    public void testConfigPolicy() throws IOException, ServletException, SQLException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        Mockito.when(httpServletRequest.getParameter("policyType")).thenReturn("Config");
+        Map<String, String> configAttributes = new HashMap<>();
+        configAttributes.put("value", "test");
+        StdPAPPolicy newPAPPolicy = new StdPAPPolicy("Base", "test", "test rule", "TEST", "config", configAttributes, "OTHER", 
+                "test body", false, "test",0, "5","default", "false", null);
+        MockServletInputStream mockInput = new MockServletInputStream(PolicyUtils.objectToJsonString(newPAPPolicy).getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        
+        // set DBDao
+        setDBDao();
+        pap.service(httpServletRequest, httpServletResponse);
+        
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        Mockito.verify(httpServletResponse).addHeader("successMapKey", "success");
+        Mockito.verify(httpServletResponse).addHeader("policyName", "test.Config_test.1.xml");
+    }
+    
+    private void setPolicyCreation() {
+        CommonClassDao commonClassDao = Mockito.mock(CommonClassDao.class);
+        PolicyCreation.setCommonClassDao(commonClassDao);
+        PolicyEditorScopes editorScope = new PolicyEditorScopes();
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserName("API");
+        userInfo.setUserLoginId("API");
+        editorScope.setScopeName("test");
+        editorScope.setUserCreatedBy(userInfo);
+        editorScope.setUserModifiedBy(userInfo);
+        Mockito.when(commonClassDao.getEntityItem(PolicyEditorScopes.class, "scopeName", "test")).thenReturn(editorScope);
+        BRMSParamTemplate template = new BRMSParamTemplate();
+        template.setRuleName("testPolicy");
+        template.setUserCreatedBy(userInfo);
+        String rule = "package com.sample;\n"
+                + "import com.sample.DroolsTest.Message;\n"
+                + "declare PapParams\n"
+                + "samPoll : int\n"
+                + "value : String\n"
+                + "end\n"
+                + "///This Rule will be generated by the UI.\n"
+                + "rule \"${policyName}.Create parameters structure\"\n"
+                + "salience 1000  \n"
+                + "when\n"
+                + "then\n"
+                + "Params params = new Params();\n"
+                + "params.setSamPoll(76);\n"
+                + "params.setValue(\"test\");\n"
+                + "insertLogical(params);\n"
+                + "end\n"
+                + "rule \"Rule 1: Check parameter structure access from when/then\"\n"
+                + "when\n"
+                + "$param: Params()\n"
+                + "Params($param.samPoll > 50)\n"
+                + "then\n"
+                + "System.out.println(\"Firing rule 1\");\n"
+                + "System.out.println($param);\n"
+                + "end\n";
+        template.setRule(rule );
+        Mockito.when(commonClassDao.getEntityItem(BRMSParamTemplate.class, "ruleName", "testPolicy")).thenReturn(template);
         
     }
     
+    @Test
+    public void testClosedLoopCreateDictionary() throws IOException, SQLException, ServletException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        // Check VSCLAction. 
+        String json = "{\"dictionaryFields\": {\"vsclaction\": \"testRestAPI\",\"description\": \"testing create\"}}";
+        dictionaryTestSetup(false, "VSCLAction", json);
+        // set DBDao
+        ClosedLoopDictionaryController.setCommonClassDao(new CommonClassDaoImpl());
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check VNFType
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\": {\"vnftype\": \"testrestAPI1\",\"description\": \"testing create\"}}";
+        dictionaryTestSetup(false, "VNFType", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check PEPOptions
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"pepName\":\"testRestAPI\",\"description\":\"testing create\",\"attributes\":[{\"option\":\"test1\",\"number\":\"test\"},{\"option\":\"test2\",\"number\":\"test\"}]}}";
+        dictionaryTestSetup(false, "PEPOptions", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Varbind
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"varbindName\":\"testRestAPI\",\"varbindDescription\":\"testing\",\"varbindOID\":\"test\"}}";
+        dictionaryTestSetup(false, "Varbind", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Service
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"serviceName\":\"testRestAPI\",\"description\":\"testing\"}}";
+        dictionaryTestSetup(false, "Service", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Site
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"siteName\":\"testRestAPI\",\"description\":\"testing\"}}";
+        dictionaryTestSetup(false, "Site", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+    }
+
+    @Test
+    public void testFirewallCreateDictionary() throws IOException, SQLException, ServletException {
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        // Check SecurityZone. 
+        String json = "{\"dictionaryFields\":{\"zoneName\":\"testRestAPI\",\"zoneValue\":\"testing\"}}";
+        dictionaryTestSetup(false, "SecurityZone", json);
+        // set DBDao
+        FirewallDictionaryController.setCommonClassDao(new CommonClassDaoImpl());
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Action List
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"actionName\":\"testRestAPI\",\"description\":\"test\"}}";
+        dictionaryTestSetup(false, "ActionList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Protocol List. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"protocolName\":\"testRestAPI\",\"description\":\"test\"}}";
+        dictionaryTestSetup(false, "ProtocolList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check Zone. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"zoneName\":\"testRestAPI\",\"zoneValue\":\"test\"}}";
+        dictionaryTestSetup(false, "Zone", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check PrefixList. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"prefixListName\":\"testRestAPI\",\"prefixListValue\":\"127.0.0.1\",\"description\":\"testing\"}}";
+        dictionaryTestSetup(false, "PrefixList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check AddressGroup. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"groupName\":\"testRestAPIgroup\",\"description\":\"testing\",\"attributes\":[{\"option\":\"testRestAPI\"}, {\"option\":\"testRestAPI\"}]}}";
+        dictionaryTestSetup(false, "AddressGroup", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check ServiceGroup. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"groupName\":\"testRestAPIServiceGroup\",\"attributes\":[{\"option\":\"testRestAPIservice\"}]}}";
+        dictionaryTestSetup(false, "ServiceGroup", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check ServiceList. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"serviceName\":\"testRestAPIservice\",\"serviceDescription\":\"test\",\"servicePorts\":\"8888\",\"transportProtocols\":[{\"option\":\"testRestAPI\"},{\"option\":\"testRestAPI1\"}],\"appProtocols\":[{\"option\":\"testRestAPI\"},{\"option\":\"testRestAPI1\"}]}}";
+        dictionaryTestSetup(false, "ServiceList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+        //
+        // Check TermList. 
+        //
+        httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        httpServletResponse = Mockito.mock(MockHttpServletResponse.class);
+        json = "{\"dictionaryFields\":{\"termName\":\"testRestAPIRule\",\"termDescription\":\"testing\",\"fromZoneDatas\":[{\"option\":\"testRestAPI\"}],\"toZoneDatas\":[{\"option\":\"testRestAPI1\"}],\"sourceListDatas\":[{\"option\":\"Group_testportal\"}],\"destinationListDatas\":[{\"option\":\"testRestAPI\"}],\"sourceServiceDatas\":[{\"option\":\"testRestAPIservice\"},{\"option\":\"testRestAPIservice1\"}],\"destinationServiceDatas\":[{\"option\":\"testRestAPIservice1\"},{\"option\":\"testportalservice2\"}],\"actionListDatas\":[{\"option\":\"testRestAPI\"}]}}";
+        dictionaryTestSetup(false, "TermList", json);
+        // send Request to PAP
+        pap.service(httpServletRequest, httpServletResponse);
+        // Verify 
+        Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
+    }
     
+    private void dictionaryTestSetup(Boolean updateFlag, String dictionaryType, String json) throws IOException, SQLException {
+        Mockito.when(httpServletRequest.getHeader(ENVIRONMENT_HEADER)).thenReturn("DEVL");
+        Mockito.when(httpServletRequest.getHeader("ClientScope")).thenReturn("dictionaryItem");
+        Mockito.when(httpServletRequest.getMethod()).thenReturn("PUT");
+        Mockito.when(httpServletRequest.getParameter("apiflag")).thenReturn("api");
+        if(updateFlag){
+            Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("update");
+        }else{
+            Mockito.when(httpServletRequest.getParameter("operation")).thenReturn("create");
+        }
+        Mockito.when(httpServletRequest.getParameter("dictionaryType")).thenReturn(dictionaryType);
+        MockServletInputStream mockInput = new MockServletInputStream(json.getBytes());
+        Mockito.when(httpServletRequest.getInputStream()).thenReturn(mockInput);
+        Mockito.when(httpServletRequest.getReader()).thenReturn(new BufferedReader(new InputStreamReader(mockInput)));
+        // set DBDao
+        setDBDao();
+    }
 
     private void setDBDao() throws SQLException {
         BasicDataSource dataSource = new BasicDataSource();
diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java
index 1a97d7f..99285e7 100644
--- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java
+++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/components/FirewallConfigPolicyTest.java
@@ -20,9 +20,10 @@
 package org.onap.policy.pap.xacml.rest.components;
 
 import static org.junit.Assert.*;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.when;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.HashMap;
 
 import java.util.Map;
@@ -124,5 +125,24 @@
 		assertTrue(response);		
 		
 	}
+	
+	@Test
+	public void testUpdateJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
+	    FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy();
+	    Method method = firewallConfigPolicy.getClass().getDeclaredMethod("updateFirewallDictionaryData", String.class , String.class);
+	    method.setAccessible(true);
+	    String jsonBody= "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}";
+	    String prevJsonBody = "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicy1Config\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev\",\"vendorServiceId\":\"test\",\"vendorSpecificData\":{\"idMap\":[{\"Id\":\"cloudsite:dev1a\",\"vendorId\":\"deviceGroup:dev\"}]},\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Ssh service entry in service list\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"Test\",\"description\":\"Destination Test\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"Source TestServers for first testing\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerTot\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FW rule for HOHO source to CiscoVCE destination\",\"enabled\":true,\"log\":true}]}";
+        assertFalse((Boolean) method.invoke(firewallConfigPolicy, jsonBody, prevJsonBody));
+	}
+	
+	@Test
+    public void testInsertJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
+        FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy();
+        Method method = firewallConfigPolicy.getClass().getDeclaredMethod("insertFirewallDicionaryData", String.class);
+        method.setAccessible(true);
+        String jsonBody= "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}";
+        assertFalse((Boolean) method.invoke(firewallConfigPolicy, jsonBody));
+    }
 
 }
\ No newline at end of file
diff --git a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryControllerTest.java b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryControllerTest.java
index 5290471..a2c67ea 100644
--- a/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryControllerTest.java
+++ b/ONAP-PAP-REST/src/test/java/org/onap/policy/pap/xacml/rest/controller/DecisionPolicyDictionaryControllerTest.java
@@ -198,7 +198,7 @@
 
 		MockHttpServletResponse response =  new MockHttpServletResponse();
 
-		controller.getRainyDayDictionaryEntityData(request, response);
+		controller.getRainyDayDictionaryEntityData(response);
 		
 		try {
 			assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("rainyDayDictionaryDatas"));
diff --git a/ONAP-PAP-REST/xacml.pap.properties b/ONAP-PAP-REST/xacml.pap.properties
index 2517ebd..dc8300d 100644
--- a/ONAP-PAP-REST/xacml.pap.properties
+++ b/ONAP-PAP-REST/xacml.pap.properties
@@ -88,8 +88,8 @@
 
 #Properties for db access
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk?failOverReadOnly=false&autoReconnect=true
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk?failOverReadOnly=false&autoReconnect=true
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/ONAP-PDP-REST/pom.xml b/ONAP-PDP-REST/pom.xml
index a2f7f72..fb957f0 100644
--- a/ONAP-PDP-REST/pom.xml
+++ b/ONAP-PDP-REST/pom.xml
@@ -212,6 +212,10 @@
 					<groupId>javax.persistence</groupId>
 					<artifactId>persistence-api</artifactId>
 				</exclusion>
+				<exclusion>
+					<groupId>com.att.aft</groupId>
+					<artifactId>dme2</artifactId>
+				</exclusion>
 			</exclusions>
 		</dependency>
 	</dependencies>
diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpServlet.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpServlet.java
index 18c2017..b824312 100644
--- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpServlet.java
+++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/XACMLPdpServlet.java
@@ -180,6 +180,14 @@
 	private static volatile boolean configThreadTerminate = false;
 	private transient ONAPLoggingContext baseLoggingContext = null;
 	private transient IntegrityMonitor im;
+	public IntegrityMonitor getIm() {
+		return im;
+	}
+
+	public void setIm(IntegrityMonitor im) {
+		this.im = im;
+	}
+
 	/**
 	 * Default constructor. 
 	 */
diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DecisionPolicyService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DecisionPolicyService.java
index c283ff1..915e3b3 100644
--- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DecisionPolicyService.java
+++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/DecisionPolicyService.java
@@ -80,6 +80,8 @@
 		}
 		Map<String,String> matchingAttributes = null;
 		Map<String,String> settingsAttributes = null;
+		
+		//Get the MATCHING and/or SETTINGS attributes
 		if (policyParameters.getAttributes()!=null && policyParameters.getAttributes().containsKey(AttributeType.MATCHING) && policyParameters.getAttributes().containsKey(AttributeType.SETTINGS)) {
 			matchingAttributes = policyParameters.getAttributes().get(AttributeType.MATCHING);
 			settingsAttributes = policyParameters.getAttributes().get(AttributeType.SETTINGS);
@@ -88,9 +90,10 @@
 		}else if(policyParameters.getAttributes()!=null && policyParameters.getAttributes().containsKey(AttributeType.MATCHING) && !policyParameters.getAttributes().containsKey(AttributeType.SETTINGS)){
 			matchingAttributes = policyParameters.getAttributes().get(AttributeType.MATCHING);
 		}
-		// Create Policy. 
-		StdPAPPolicy newPAPPolicy = new StdPAPPolicy(policyName, policyParameters.getPolicyDescription(), onapName, ruleProvider.toString(), matchingAttributes, settingsAttributes, policyParameters.getDynamicRuleAlgorithmLabels(), 
-				policyParameters.getDynamicRuleAlgorithmFunctions(), policyParameters.getDynamicRuleAlgorithmField1(), policyParameters.getDynamicRuleAlgorithmField2(), null, null, null, updateFlag, policyScope, 0);
+		// Create StdPAPPolicy object used to send policy data to PAP-REST. 
+		StdPAPPolicy newPAPPolicy = new StdPAPPolicy(policyName, policyParameters.getPolicyDescription(), onapName, ruleProvider.toString(), matchingAttributes, settingsAttributes, 
+				policyParameters.getTreatments(), policyParameters.getDynamicRuleAlgorithmLabels(), policyParameters.getDynamicRuleAlgorithmFunctions(), 
+				policyParameters.getDynamicRuleAlgorithmField1(), policyParameters.getDynamicRuleAlgorithmField2(), null, null, null, updateFlag, policyScope, 0);
 		// Send JSON to PAP. 
 		response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Decision"}, policyParameters.getRequestID(), "Decision");
 		LOGGER.info(message);
diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/GetDictionaryService.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/GetDictionaryService.java
index 8f88ef7..d3628f3 100644
--- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/GetDictionaryService.java
+++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/GetDictionaryService.java
@@ -171,6 +171,9 @@
         case "Settings":
             jsonString = jsonString.replace("settingsDictionaryDatas", "DictionaryDatas");
             break;
+        case "RainyDayTreatments":
+        	jsonString = jsonString.replace("rainyDayDictionaryDatas", "DictionaryDatas");
+        	break;
         case "DescriptiveScope":
             jsonString = jsonString.replace("descriptiveScopeDictionaryDatas", "DictionaryDatas");
             break;
diff --git a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java
index efaa5c1..8258aba 100644
--- a/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java
+++ b/ONAP-PDP-REST/src/main/java/org/onap/policy/pdp/rest/api/services/PDPServices.java
@@ -128,7 +128,7 @@
                 LOGGER.info("Decision not a Permit. "  + result.getDecision().toString());
                 PDPResponse pdpResponse = new PDPResponse();
                 if (decide) {
-                	String indeterminatePropValue = XACMLProperties.getProperty("decision.inStringdeterminate.response");
+                	String indeterminatePropValue = XACMLProperties.getProperty("decision.indeterminate.response");
                 	if(result.getDecision().equals(Decision.INDETERMINATE)&& indeterminatePropValue != null){
                 		if("PERMIT".equalsIgnoreCase(indeterminatePropValue)){
                 			pdpResponse.setDecision(PolicyDecision.PERMIT);
diff --git a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/XACMLPdpServletTest.java b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/XACMLPdpServletTest.java
index 3e3f584..594b51c 100644
--- a/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/XACMLPdpServletTest.java
+++ b/ONAP-PDP-REST/src/test/java/org/onap/policy/pdp/rest/XACMLPdpServletTest.java
@@ -27,6 +27,10 @@
 import java.util.Properties;
 import java.util.Random;
 
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletInputStream;
 import javax.servlet.ServletOutputStream;
@@ -34,16 +38,18 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.junit.Before;
-import org.junit.runner.RunWith;
+import org.junit.Test;
 import org.mockito.Mockito;
+import org.onap.policy.common.ia.DbDAO;
+import org.onap.policy.common.ia.IntegrityAuditProperties;
 import org.onap.policy.common.im.AdministrativeStateException;
 import org.onap.policy.common.im.IntegrityMonitor;
 import org.onap.policy.common.im.StandbyStatusException;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
+
+import org.onap.policy.pdp.rest.XACMLPdpServletTest;
 import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.mock.web.MockServletConfig;
 
@@ -51,8 +57,6 @@
 
 import junit.framework.TestCase;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(IntegrityMonitor.class)	// so PowerMock can mock static method of IntegrityMonitor
 public class XACMLPdpServletTest extends TestCase{
 	private static Logger LOGGER	= FlexLogger.getLogger(XACMLPdpServletTest.class);
 	
@@ -65,16 +69,64 @@
 	private ServletConfig servletConfig; 
 	private XACMLPdpServlet pdpServlet;
 	private IntegrityMonitor im;
-
+	
+	private DbDAO dbDAO;
+	private String persistenceUnit;
+	private Properties properties;
+	private String resourceName;
+	private String dbDriver;
+	private String dbUrl;
+	private String dbUser;
+	private String dbPwd;
+	private String siteName;
+	private String nodeType;
+	private static final String DEFAULT_DB_DRIVER = "org.h2.Driver";
+	private static final String DEFAULT_DB_USER = "sa";
+	private static final String DEFAULT_DB_PWD = "";
 
 	 
     @Before
     public void setUp(){
+    	
+    	properties = new Properties();
+		properties.put(IntegrityAuditProperties.DB_DRIVER, XACMLPdpServletTest.DEFAULT_DB_DRIVER);
+		properties.put(IntegrityAuditProperties.DB_URL, "jdbc:h2:file:./sql/xacmlTest");
+		properties.put(IntegrityAuditProperties.DB_USER, XACMLPdpServletTest.DEFAULT_DB_USER);
+		properties.put(IntegrityAuditProperties.DB_PWD, XACMLPdpServletTest.DEFAULT_DB_PWD);
+		properties.put(IntegrityAuditProperties.SITE_NAME, "SiteA");
+		properties.put(IntegrityAuditProperties.NODE_TYPE, "pap");
+		//properties.put("com.sun.management.jmxremote.port", "9999");
+		dbDriver = XACMLPdpServletTest.DEFAULT_DB_DRIVER;
+		dbUrl = "jdbc:h2:file:./sql/xacmlTest";
+		dbUser = XACMLPdpServletTest.DEFAULT_DB_USER;
+		dbPwd = XACMLPdpServletTest.DEFAULT_DB_PWD;
+		siteName = "SiteA";
+		nodeType = "pdp";
+		persistenceUnit = "testPdpPU";
+		resourceName = "siteA.pdp1";
+		
+		System.setProperty("com.sun.management.jmxremote.port", "9999");
+		
+		EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit, properties);
+		
+		EntityManager em = emf.createEntityManager();
+		// Start a transaction
+		EntityTransaction et = em.getTransaction();
+		
+		IntegrityMonitor im = null;
+		try {
+			im = IntegrityMonitor.getInstance(resourceName, properties);
+		} catch (Exception e2) {
+			// TODO Auto-generated catch block
+			e2.printStackTrace();
+		}
+		//cleanDb(persistenceUnit, properties);
+		
     	httpServletRequest = Mockito.mock(HttpServletRequest.class);
     	Mockito.when(httpServletRequest.getMethod()).thenReturn("POST");
     	Mockito.when(httpServletRequest.getHeaderNames()).thenReturn(Collections.enumeration(headers));
     	Mockito.when(httpServletRequest.getAttributeNames()).thenReturn(Collections.enumeration(headers));
-    	
+    	Mockito.when(httpServletRequest.getRequestURI()).thenReturn("/pdp/test");
     	
     	mockOutput = Mockito.mock(ServletOutputStream.class);
     	
@@ -90,15 +142,17 @@
     	//servletConfig
     	Mockito.when(servletConfig.getInitParameterNames()).thenReturn(Collections.enumeration(headers));
     	pdpServlet = new XACMLPdpServlet();
+    	pdpServlet.setIm(im);
     	
-    	Mockito.when(servletConfig.getInitParameter("XACML_PROPERTIES_NAME")).thenReturn("xacml.pdp.properties");
+    	Mockito.when(servletConfig.getInitParameter("XACML_PROPERTIES_NAME")).thenReturn("src/test/resources/xacml.pdp.properties");
     	
-		System.setProperty("xacml.properties", "xacml.pdp.properties");
-		System.setProperty("xacml.rest.pdp.config", "config_testing");
-		System.setProperty("xacml.rest.pdp.webapps", "/webapps");
-		System.setProperty("xacml.rootPolicies", "test_PolicyEngine.xml");
+		System.setProperty("xacml.properties", "src/test/resources/xacml.pdp.properties");
+		System.setProperty("xacml.rest.pdp.config", "src/test/resources/config_testing");
+		System.setProperty("xacml.rest.pdp.webapps", "src/test/resources/webapps");
+		/*System.setProperty("xacml.rootPolicies", "test_PolicyEngine.xml");
 		System.setProperty("xacml.referencedPolicies", "test_PolicyEngine.xml");
 		System.setProperty("test_PolicyEngine.xml.file", "config_testing\\test_PolicyEngine.xml");
+		*/
 		System.setProperty("xacml.rest.pdp.register", "false");
 		System.setProperty("com.sun.management.jmxremote.port", "9999");
 		
@@ -119,8 +173,9 @@
 		}
 		Mockito.doNothing().when(im).endTransaction();
     }
-	
-	public void testInit(){
+    
+	@Test
+    public void testInit(){
 		LOGGER.info("XACMLPdpServletTest - testInit");
 		try {	
 			pdpServlet.init(servletConfig);
@@ -133,12 +188,14 @@
 
 	}
 	
+	@Test
 	public void testDoGetNoTypeError(){
 		LOGGER.info("XACMLPdpServletTest - testDoGetNoTypeError");
 		try{
+			
 			pdpServlet.init(servletConfig);
 			pdpServlet.doGet(httpServletRequest, httpServletResponse);
-			Mockito.verify(httpServletResponse).sendError(HttpServletResponse.SC_BAD_REQUEST, "type not 'config' or 'hb'");
+			Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
 			assertTrue(true);
 		}catch(Exception e){
 			System.out.println("Unexpected exception in testDoGetNoTypeError");
@@ -147,6 +204,7 @@
 		}
 	}
 	
+	@Test
 	public void testDoGetConfigType(){
 		LOGGER.info("XACMLPdpServletTest - testDoGetConfigType");
 		Mockito.when(httpServletRequest.getParameter("type")).thenReturn("config");	
@@ -164,14 +222,14 @@
 
 	}
 	
-	
+	@Test
 	public void testDoGetTypeHb(){
 		LOGGER.info("XACMLPdpServletTest - testDoGetTypeHb");
 		try{
 			Mockito.when(httpServletRequest.getParameter("type")).thenReturn("hb");
 			pdpServlet.init(servletConfig);
 			pdpServlet.doGet(httpServletRequest, httpServletResponse);
-			Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_NO_CONTENT);
+			Mockito.verify(httpServletResponse).setStatus(HttpServletResponse.SC_OK);
 			assertTrue(true);
 		}catch(Exception e){
 			System.out.println("Unexpected exception in testDoGetTypeHb");
@@ -179,6 +237,8 @@
 			fail();
 		}
 	}
+	
+	@Test
 	public void testDoGetTypeStatus(){
 		LOGGER.info("XACMLPdpServletTest - testDoGetTypeStatus");
 		try{
@@ -194,6 +254,7 @@
 		}
 	}	
 	
+	@Test
 	public void testDoPost(){
 		LOGGER.info("XACMLPdpServletTest - testDoPost");
 		try{
@@ -207,6 +268,7 @@
 		}
 	}
 	
+	@Test
 	public void testDoPostToLong(){
 		LOGGER.info("XACMLPdpServletTest - testDoPostToLong");
 		try{
@@ -223,6 +285,7 @@
 		}
 	}	
 	
+	@Test
 	public void testDoPostContentLengthNegative(){
 		LOGGER.info("XACMLPdpServletTest - testDoPostToLong");
 		try{
@@ -239,6 +302,7 @@
 		}
 	}	
 	
+	@Test
 	public void testDoPostContentTypeNonValid(){
 		LOGGER.info("XACMLPdpServletTest - testDoPostToLong");
 		try{
@@ -255,6 +319,7 @@
 		}
 	}	
 	
+	@Test
 	public void testDoPostContentTypeConfigurationError(){
 		LOGGER.info("XACMLPdpServletTest - testDoPostToLong");
 		try{
@@ -271,6 +336,7 @@
 		}
 	}	
 	
+	@Test
 	public void testDoPutCacheEmpty(){
 		LOGGER.info("XACMLPdpServletTest - testDoPutCacheEmpty");
 		mockInput = Mockito.mock(ServletInputStream.class);
@@ -290,6 +356,7 @@
 		}
 	}
 	
+	@Test
 	public void testDoPutConfigPolicies(){
 		LOGGER.info("XACMLPdpServletTest - testDoPutConfigPolicies");
 		byte[] b = new byte[20];
@@ -330,6 +397,7 @@
 		}
 	}	
 	
+	@Test
 	public void testDoPutInvalidContentType(){
 		LOGGER.info("XACMLPdpServletTest - testDoPutToLong");
 		try{
@@ -349,6 +417,7 @@
 		}
 	}		
 	
+	@Test
 	public void testDestroy(){
 		LOGGER.info("XACMLPdpServletTest - testDestroy");
 		
diff --git a/ONAP-PDP-REST/src/test/resources/META-INF/drop.ddl b/ONAP-PDP-REST/src/test/resources/META-INF/drop.ddl
new file mode 100644
index 0000000..f7138ad
--- /dev/null
+++ b/ONAP-PDP-REST/src/test/resources/META-INF/drop.ddl
@@ -0,0 +1,7 @@
+DROP TABLE IF EXISTS ConfigurationDataEntity
+DROP TABLE IF EXISTS PolicyEntity
+DROP TABLE IF EXISTS PolicyDBDaoEntity
+DROP TABLE IF EXISTS ActionBodyEntity
+DROP SEQUENCE IF EXISTS seqPolicy
+DROP SEQUENCE IF EXISTS seqConfig
+DROP SEQUENCE IF EXISTS seqActBody
diff --git a/ONAP-PDP-REST/src/test/resources/META-INF/persistence.xml b/ONAP-PDP-REST/src/test/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..b44841c
--- /dev/null
+++ b/ONAP-PDP-REST/src/test/resources/META-INF/persistence.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============LICENSE_START=======================================================
+  ONAP-PAP-REST
+  ================================================================================
+  Copyright (C) 2017 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=========================================================
+  -->
+<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
+	<persistence-unit name="XACML-PAP-REST">
+		<class>org.onap.policy.rest.jpa.PolicyEntity</class>
+		<class>org.onap.policy.rest.jpa.ConfigurationDataEntity</class>		
+		<class>org.onap.policy.rest.jpa.PolicyDBDaoEntity</class>
+		<class>org.onap.policy.rest.jpa.GroupEntity</class>
+		<class>org.onap.policy.rest.jpa.PdpEntity</class>
+		<class>org.onap.policy.rest.jpa.ActionBodyEntity</class>
+		<class>org.onap.policy.rest.jpa.DatabaseLockEntity</class>
+		<class>org.onap.policy.rest.jpa.PolicyVersion</class>
+		<class>org.onap.policy.rest.jpa.PolicyScore</class>
+		<class>org.onap.policy.rest.jpa.FunctionDefinition</class>
+		<class>org.onap.policy.rest.jpa.Attribute</class>
+		<class>org.onap.policy.rest.jpa.Category</class>
+		<class>org.onap.policy.rest.jpa.ConstraintType</class>
+		<class>org.onap.policy.rest.jpa.ConstraintValue</class>
+		<class>org.onap.policy.rest.jpa.Datatype</class>
+		<class>org.onap.policy.rest.jpa.FunctionArgument</class>
+		<class>org.onap.policy.rest.jpa.UserInfo</class>
+		<class>org.onap.policy.rest.jpa.ActionPolicyDict</class>
+		<class>org.onap.policy.rest.jpa.DecisionSettings</class>
+		<class>org.onap.policy.rest.jpa.MicroServiceModels</class>
+		<class>org.onap.policy.rest.jpa.BRMSParamTemplate</class>
+		<class>org.onap.policy.rest.jpa.PolicyEditorScopes</class>
+		<!-- unique to PolicyEngineUtils - will be audited from PAP -->
+		<class>org.onap.policy.jpa.BackUpMonitorEntity</class>
+		<!-- unique to integrity-monitor - will be audited from PAP -->
+		<class>org.onap.policy.common.im.jpa.StateManagementEntity</class>
+		<class>org.onap.policy.common.im.jpa.ForwardProgressEntity</class>
+		<class>org.onap.policy.common.im.jpa.ResourceRegistrationEntity</class>
+		<!-- unique to integrity-audit - will be audited from PAP -->
+		<class>org.onap.policy.common.ia.jpa.IntegrityAuditEntity</class>
+		<exclude-unlisted-classes>false</exclude-unlisted-classes>
+		<shared-cache-mode>NONE</shared-cache-mode>
+		<properties>
+	<!--	The properties defined below are the default settings to be used when someone initially
+				wants to start working with the XACML-PAP-ADMIN web gui. They are not intended for production
+				use.
+				
+				They are setup to drop and create the tables and then load an initial set of data into the database
+				every time the application is deployed. So if you add anything to the dictionaries or PIP
+				configuration, they will get lost upon each deployment. It uses an H2 database engine configured
+				for a local file so you don't have to setup you're own SQL database environment to start.
+				
+				Instead of modifying this file directly, please refer to the xacml.admin.properties file for
+				customizing the application settings.
+				
+			 -->
+	<!--     <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
+			<property name="javax.persistence.schema-generation.create-source" value="metadata-then-script"/>
+			<property name="javax.persistence.schema-generation.create-script-source" value="META-INF/views.sql" />
+			<property name="javax.persistence.schema-generation.drop-source" value="script"/>
+			<property name="javax.persistence.schema-generation.drop-script-source" value="META-INF/drop.sql" />
+			<property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql" />-->
+			
+			
+			
+		<!-- 	These properties should be set in the xacml.admin.properties file, so they can be re-used by non-JPA
+			database functionality.	 -->
+		<!-- 	
+			<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
+			<property name="javax.persistence.jdbc.url" value="jdbc:h2:file:sql/xacml"/>
+			<property name="javax.persistence.jdbc.user" value="sa"/>
+			<property name="javax.persistence.jdbc.password" value=""/>
+ 			-->
+		</properties>
+	</persistence-unit>
+
+<persistence-unit name="auditPapPU">
+		<!-- This is the persistence unit used by IntegrityAudit to determine
+		which classes to audit.  All the PAP classes are also included in 
+		XACML-PAP-ADMIN, so they will be audited there rather than having a
+		duplicate audit run from the XACL-PAP-REST node -->
+		<!-- unique to PolicyEngineUtils - will be audited from PAP -->
+		<class>org.onap.policy.jpa.BackUpMonitorEntity</class>
+		<!-- unique to integrity-monitor - will be audited from PAP -->
+		<class>org.onap.policy.common.im.jpa.StateManagementEntity</class>
+		<class>org.onap.policy.common.im.jpa.ForwardProgressEntity</class>
+		<class>org.onap.policy.common.im.jpa.ResourceRegistrationEntity</class>
+		<!-- unique to integrity-audit - will be audited from PAP -->
+		<class>org.onap.policy.common.ia.jpa.IntegrityAuditEntity</class>
+		<exclude-unlisted-classes>true</exclude-unlisted-classes>
+		<shared-cache-mode>NONE</shared-cache-mode>
+	</persistence-unit>
+
+	<persistence-unit name="testPdpPU" transaction-type="RESOURCE_LOCAL">
+	<!-- This tests all the classes that will be audited in the XACML-PAP-REST and the XACML-PAP_ADMIN -->
+		<!-- XACML-PAP-REST -->
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+		<class>org.onap.policy.rest.jpa.PolicyEntity</class>
+		<class>org.onap.policy.rest.jpa.ConfigurationDataEntity</class>		
+		<class>org.onap.policy.rest.jpa.PolicyDBDaoEntity</class>
+		<class>org.onap.policy.rest.jpa.GroupEntity</class>
+		<class>org.onap.policy.rest.jpa.PdpEntity</class>
+		<class>org.onap.policy.rest.jpa.ActionBodyEntity</class>
+		<class>org.onap.policy.rest.jpa.DatabaseLockEntity</class>
+		<class>org.onap.policy.rest.jpa.PolicyVersion</class>
+		<class>org.onap.policy.rest.jpa.PolicyScore</class>
+		<class>org.onap.policy.rest.jpa.FunctionDefinition</class>
+		<class>org.onap.policy.rest.jpa.Attribute</class>
+		<class>org.onap.policy.rest.jpa.Category</class>
+		<class>org.onap.policy.rest.jpa.ConstraintType</class>
+		<class>org.onap.policy.rest.jpa.ConstraintValue</class>
+		<class>org.onap.policy.rest.jpa.Datatype</class>
+		<class>org.onap.policy.rest.jpa.FunctionArgument</class>
+		<class>org.onap.policy.rest.jpa.UserInfo</class>
+		<class>org.onap.policy.rest.jpa.ActionPolicyDict</class>
+		<class>org.onap.policy.rest.jpa.DecisionSettings</class>
+		<class>org.onap.policy.rest.jpa.MicroServiceModels</class>
+		<!-- unique to XACML-PAP-ADMIN -->
+		<class>org.onap.policy.rest.jpa.ActionList</class>
+		<class>org.onap.policy.rest.jpa.AddressGroup</class>
+		<class>org.onap.policy.rest.jpa.AttributeAssignment</class>
+		<class>org.onap.policy.rest.jpa.BRMSParamTemplate</class>
+		<class>org.onap.policy.rest.jpa.ClosedLoopD2Services</class>
+		<class>org.onap.policy.rest.jpa.ClosedLoopSite</class>
+		<class>org.onap.policy.rest.jpa.DCAEUsers</class>
+		<class>org.onap.policy.rest.jpa.DCAEuuid</class>
+		<class>org.onap.policy.rest.jpa.DescriptiveScope</class>
+		<class>org.onap.policy.rest.jpa.OnapName</class>
+		<class>org.onap.policy.rest.jpa.EnforcingType</class>
+		<class>org.onap.policy.rest.jpa.GlobalRoleSettings</class>
+		<class>org.onap.policy.rest.jpa.GroupPolicyScopeList</class>
+		<class>org.onap.policy.rest.jpa.GroupServiceList</class>
+		<class>org.onap.policy.rest.jpa.MicroServiceConfigName</class>
+		<class>org.onap.policy.rest.jpa.MicroServiceLocation</class>
+		<class>org.onap.policy.rest.jpa.Obadvice</class>
+		<class>org.onap.policy.rest.jpa.ObadviceExpression</class>
+		<class>org.onap.policy.rest.jpa.PEPOptions</class>
+		<class>org.onap.policy.rest.jpa.PIPConfigParam</class>
+		<class>org.onap.policy.rest.jpa.PIPConfiguration</class>
+		<class>org.onap.policy.rest.jpa.PIPResolver</class>
+		<class>org.onap.policy.rest.jpa.PIPResolverParam</class>
+		<class>org.onap.policy.rest.jpa.PIPType</class>	
+		<class>org.onap.policy.rest.jpa.PolicyAlgorithms</class>
+		<class>org.onap.policy.rest.jpa.PolicyManagement</class>
+		<class>org.onap.policy.rest.jpa.PolicyScopeService</class>
+		<class>org.onap.policy.rest.jpa.PolicyScopeType</class>
+		<class>org.onap.policy.rest.jpa.PolicyScopeResource</class>
+		<class>org.onap.policy.rest.jpa.PolicyScopeClosedLoop</class>
+		<class>org.onap.policy.rest.jpa.PortList</class>
+		<class>org.onap.policy.rest.jpa.PREFIXLIST</class>
+		<class>org.onap.policy.rest.jpa.ProtocolList</class>
+		<class>org.onap.policy.rest.jpa.RemoteCatalogValues</class>
+		<class>org.onap.policy.rest.jpa.PolicyRoles</class>
+		<class>org.onap.policy.rest.jpa.RuleAlgorithms</class>
+		<class>org.onap.policy.rest.jpa.SecurityZone</class>
+		<class>org.onap.policy.rest.jpa.ServiceList</class>
+		<class>org.onap.policy.rest.jpa.SystemLogDB</class>
+		<class>org.onap.policy.rest.jpa.TermList</class>
+		<class>org.onap.policy.rest.jpa.VarbindDictionary</class>
+		<class>org.onap.policy.rest.jpa.VMType</class>
+		<class>org.onap.policy.rest.jpa.VNFType</class>
+		<class>org.onap.policy.rest.jpa.VSCLAction</class>
+		<class>org.onap.policy.rest.jpa.Zone</class>
+		<!-- unique to PolicyEngineUtils -->
+		<class>org.onap.policy.jpa.BackUpMonitorEntity</class>
+		<!-- unique to integrity-monitor -->
+		<class>org.onap.policy.common.im.jpa.StateManagementEntity</class>
+		<class>org.onap.policy.common.im.jpa.ForwardProgressEntity</class>
+		<class>org.onap.policy.common.im.jpa.ResourceRegistrationEntity</class>
+		<!-- unique to integrity-audit -->
+		<class>org.onap.policy.common.ia.jpa.IntegrityAuditEntity</class>
+		
+		<exclude-unlisted-classes>false</exclude-unlisted-classes>
+		<shared-cache-mode>NONE</shared-cache-mode>	        
+        <properties>
+            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
+            <property name="javax.persistence.jdbc.url" value="jdbc:h2:file:./sql/xacmlTest"/> <!-- ;MODE=MySQL"/> -->
+            <property name="javax.persistence.jdbc.user" value="sa"/>
+            <property name="javax.persistence.jdbc.password" value=""/>
+            <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
+            <property name="javax.persistence.schema-generation.scripts.create-target" value="./src/test/resources/generatedCreate.ddl"/>
+            <property name="javax.persistence.schema-generation.scripts.drop-target" value="./src/test/resources/generatedDrop.ddl"/>
+            <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
+			<property name="javax.persistence.schema-generation.create-source" value="metadata-then-script"/>
+			<property name="javax.persistence.schema-generation.drop-source" value="script"/>
+			<property name="javax.persistence.schema-generation.drop-script-source" value="META-INF/drop.ddl" />
+        </properties>
+    </persistence-unit>	
+</persistence>
diff --git a/ONAP-PDP-REST/src/test/resources/fail.xacml.pdp.properties b/ONAP-PDP-REST/src/test/resources/fail.xacml.pdp.properties
index a16b422..fdc7798 100644
--- a/ONAP-PDP-REST/src/test/resources/fail.xacml.pdp.properties
+++ b/ONAP-PDP-REST/src/test/resources/fail.xacml.pdp.properties
@@ -122,8 +122,8 @@
 REQUEST_BUFFER_SIZE=15
 
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/ONAP-PDP-REST/src/test/resources/notification.xacml.pdp.properties b/ONAP-PDP-REST/src/test/resources/notification.xacml.pdp.properties
index 9ca1bba..2a36005 100644
--- a/ONAP-PDP-REST/src/test/resources/notification.xacml.pdp.properties
+++ b/ONAP-PDP-REST/src/test/resources/notification.xacml.pdp.properties
@@ -122,8 +122,8 @@
 REQUEST_BUFFER_SIZE=15
 
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/ONAP-PDP-REST/src/test/resources/pass.xacml.pdp.properties b/ONAP-PDP-REST/src/test/resources/pass.xacml.pdp.properties
index c9a1110..c3eda59 100644
--- a/ONAP-PDP-REST/src/test/resources/pass.xacml.pdp.properties
+++ b/ONAP-PDP-REST/src/test/resources/pass.xacml.pdp.properties
@@ -122,8 +122,8 @@
 REQUEST_BUFFER_SIZE=15
 
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/ONAP-PDP-REST/src/test/resources/xacml.pdp.properties b/ONAP-PDP-REST/src/test/resources/xacml.pdp.properties
new file mode 100644
index 0000000..bb174b9
--- /dev/null
+++ b/ONAP-PDP-REST/src/test/resources/xacml.pdp.properties
@@ -0,0 +1,176 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP-PDP-REST
+# ================================================================================
+# Copyright (C) 2017 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=========================================================
+###
+
+# Default XACML Properties File for PDP RESTful servlet
+#
+# Standard API Factories
+#
+xacml.dataTypeFactory=com.att.research.xacml.std.StdDataTypeFactory
+xacml.pdpEngineFactory=com.att.research.xacmlatt.pdp.ATTPDPEngineFactory
+xacml.pepEngineFactory=com.att.research.xacml.std.pep.StdEngineFactory
+# NOT USED SEE BELOW xacml.pipFinderFactory=org.onap.policy.xacml.std.pip.StdPIPFinderFactory
+xacml.traceEngineFactory=com.att.research.xacml.std.trace.LoggingTraceEngineFactory
+#
+# AT&T PDP Implementation Factories
+#
+xacml.att.evaluationContextFactory=com.att.research.xacmlatt.pdp.std.StdEvaluationContextFactory
+xacml.att.combiningAlgorithmFactory=com.att.research.xacmlatt.pdp.std.StdCombiningAlgorithmFactory
+xacml.att.functionDefinitionFactory=org.onap.policy.xacml.custom.OnapFunctionDefinitionFactory
+# NOT USED SEE BELOW xacml.att.policyFinderFactory=org.onap.policy.pdp.std.StdPolicyFinderFactory
+# creteUpdate Policy Implementation Class details. 
+createUpdatePolicy.impl.className=org.onap.policy.pdp.rest.api.services.CreateUpdatePolicyServiceImpl
+# AAF Implementation class details
+aafClient.impl.className=org.onap.policy.utils.AAFPolicyClientImpl
+#
+# AT&T RESTful PDP Implementation Factories
+#
+xacml.pipFinderFactory=org.onap.policy.pdp.rest.impl.XACMLPdpPIPFinderFactory
+xacml.att.policyFinderFactory=org.onap.policy.pdp.rest.XACMLPdpPolicyFinderFactory
+#
+# When set to true, this flag tells the StdPolicyFinderFactory to combined all the root policy files into
+# into one PolicySet and use the given Policy Algorithm.
+#
+xacml.att.policyFinderFactory.combineRootPolicies=urn:com:att:xacml:3.0:policy-combining-algorithm:combined-permit-overrides
+#
+# PDP RESTful API properties
+# 
+# Set this to the address where the XACML-PAP-REST servlet is running
+xacml.rest.pap.url=http://localhost:8070/pap/
+
+#if multiple paps exist, the xacml.rest.pap.url can be removed and they can be defined like this:
+#xacml.rest.pap.urls=http://localhost:9090/pap/,http://localhost:9091/pap/
+
+#
+# Give the running PDP an ID for the PAP. The url that its running as is a good choice.
+# The PAP identifies PDP's using the URL of the PDP.
+#
+xacml.rest.pdp.id=http://localhost:8082/pdp/
+
+# Give the port number used for the PDP
+
+xacml.jmx.port=0
+
+
+# Notification Properties
+# Notifcation type: websocket, ueb or dmaap... if left blank websocket is the default
+NOTIFICATION_TYPE=websocket
+NOTIFICATION_SERVERS=
+NOTIFICATION_TOPIC=
+NOTIFICATION_DELAY=
+UEB_API_KEY=
+UEB_API_SECRET=
+DMAAP_AAF_LOGIN=
+DMAAP_AAF_PASSWORD=
+
+#
+# Set the directory where the PDP holds its Policy Cache and PIP Configuration
+#
+xacml.rest.pdp.config=config
+
+xacml.rest.pdp.webapps=/home/users/PolicyEngine/webapps/ConfigPAP/
+#
+# Initialize register with PAP servlet
+#
+xacml.rest.pdp.register=true
+#
+# Sleep period in seconds between register attempts
+#
+xacml.rest.pdp.register.sleep=15
+#
+# number of attempts to register. -1 means keep trying forever.
+#
+xacml.rest.pdp.register.retries=-1
+#
+# max number of bytes in a POST of a XML/JSON request
+# old value #32767
+xacml.rest.pdp.maxcontent=99999999 
+#
+# Set UserID here
+xacml.rest.pdp.userid=testpdp
+# Set Password here
+xacml.rest.pdp.password=alpha456
+
+# id PAP
+xacml.rest.pap.userid=testpap
+#if multiple paps have different logins, they can be defined like this:
+#http\://localhost\:9090/pap/.xacml.rest.pap.userid=testpap
+
+# pass PAP
+xacml.rest.pap.password=alpha123
+#http\://localhost\:9090/pap/.xacml.rest.pap.password=alpha123
+
+# Delay for Notifications Don't change this. Value in milliSec.  
+xacml.rest.notification.delay=30
+
+# Client interval to ping notification service. 
+CLIENT_INTERVAL=15000
+
+# Buffer Size. 
+REQUEST_BUFFER_SIZE=15
+
+#Properties for db access
+#properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
+javax.persistence.jdbc.driver=org.h2.Driver
+javax.persistence.jdbc.url=jdbc:h2:file:./sql/xacmlTest
+javax.persistence.jdbc.user=sa
+javax.persistence.jdbc.password=
+
+#***Properties for IntegrityMonitor integration defined in XACMLRestProperties.java***
+
+#The name of the PDP.  Must be unique across the system
+xacml.rest.pdp.resource.name=site_1.pdp_1
+
+#***Properties for IntegrityMonitor integration defined in IntegrityMonitorProperties.java***
+
+#Interval between forward progress counter updates in seconds
+fp_monitor_interval=30
+
+#Number of forward progress counter failures before failover
+failed_counter_threshold=3
+
+#Interval in seconds between test transactions if there is no other traffic
+test_trans_interval=10
+
+#Interval in seconds between updates of the forward progress counter in the DB
+write_fpc_interval=5
+
+#Name of the site
+site_name=site_1
+
+#Node type
+node_type=pdp_xacml
+
+#Dependency groups are groups of resources upon which a node operational state is dependent upon). 
+#Each group is a comma-separated list of resource names and groups are separated by a semicolon.
+#A group may contain one or more members. Resource names must match the resource names defined
+#in the respective servers' properties files
+dependency_groups=site_1.pdplp_1;site_1.astragw_1;site_1.brmsgw_1
+
+# this can be DEVL, TEST, PROD 
+ENVIRONMENT=DEVL
+xacml.rest.pep.idfile = client.properties
+
+#AAF Policy Name space
+#Not Mandatory for Open Onap
+policy.aaf.namespace = 
+policy.aaf.resource = 
+# Decision Response settings. 
+# can be either PERMIT or DENY. 
+decision.indeterminate.response=PERMIT
\ No newline at end of file
diff --git a/ONAP-PDP-REST/xacml.pdp.properties b/ONAP-PDP-REST/xacml.pdp.properties
index 6cf2e94..4d12004 100644
--- a/ONAP-PDP-REST/xacml.pdp.properties
+++ b/ONAP-PDP-REST/xacml.pdp.properties
@@ -126,8 +126,8 @@
 REQUEST_BUFFER_SIZE=15
 
 #properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/ONAP-PDP/pom.xml b/ONAP-PDP/pom.xml
index 0310d39..bd05074 100644
--- a/ONAP-PDP/pom.xml
+++ b/ONAP-PDP/pom.xml
@@ -49,11 +49,6 @@
 			<version>4.4.4</version>
 		</dependency>
 		<dependency>
-			<groupId>org.glassfish</groupId>
-			<artifactId>javax.json</artifactId>
-			<version>1.1</version>
-		</dependency>
-		<dependency>
 			<groupId>commons-codec</groupId>
 			<artifactId>commons-codec</artifactId>
 			<version>1.10</version>
diff --git a/ONAP-SDK-APP/pom.xml b/ONAP-SDK-APP/pom.xml
index e6ef8ed..04f9339 100644
--- a/ONAP-SDK-APP/pom.xml
+++ b/ONAP-SDK-APP/pom.xml
@@ -31,7 +31,7 @@
 
 	<properties>
 		<encoding>UTF-8</encoding>
-		<epsdk.version>1.1.0</epsdk.version>
+		<epsdk.version>1.3.1</epsdk.version>
 		<springframework.version>4.2.0.RELEASE</springframework.version>
 		<hibernate.version>4.3.11.Final</hibernate.version>
 		<!-- Skip assembling the zip; assemble via mvn -Dskipassembly=false .. -->
@@ -108,8 +108,11 @@
 					</archive>
 					<overlays>
 						<overlay>
-							<groupId>org.openecomp.ecompsdkos</groupId>
+							<groupId>org.onap.portal.sdk</groupId>
 							<artifactId>epsdk-app-overlay</artifactId>
+							<excludes>
+               					<exclude>static/fusion/raptor/uigrid/vfs_fonts.js</exclude>
+           			 		</excludes>
 						</overlay>
 						<overlay>
 							<groupId>org.onap.policy.engine</groupId>
@@ -149,7 +152,7 @@
 			<type>war</type>
 			<exclusions>
 				<exclusion>
-					<groupId>org.openecomp.ecompsdkos</groupId>
+					<groupId>org.onap.portal.sdk</groupId>
 					<artifactId>epsdk-core</artifactId>
 				</exclusion>
 			</exclusions>
@@ -162,7 +165,7 @@
 			<classifier>classes</classifier>
 			<exclusions>
 				<exclusion>
-					<groupId>org.openecomp.ecompsdkos</groupId>
+					<groupId>org.onap.portal.sdk</groupId>
 					<artifactId>epsdk-core</artifactId>
 				</exclusion>
 			</exclusions>
@@ -180,25 +183,31 @@
 		</dependency>
 		<!-- SDK overlay war -->
 		<dependency>
-			<groupId>org.openecomp.ecompsdkos</groupId>
+			<groupId>org.onap.portal.sdk</groupId>
 			<artifactId>epsdk-app-overlay</artifactId>
 			<version>${epsdk.version}</version>
 			<type>war</type>
 		</dependency>
 		<dependency>
-			<groupId>org.openecomp.ecompsdkos</groupId>
+			<groupId>org.onap.portal.sdk</groupId>
 			<artifactId>epsdk-app-common</artifactId>
 			<version>${epsdk.version}</version>
 			<type>jar</type>
 		</dependency>
 		<!-- SDK components -->
 		<dependency>
-			<groupId>org.openecomp.ecompsdkos</groupId>
+			<groupId>org.onap.portal.sdk</groupId>
 			<artifactId>epsdk-core</artifactId>
 			<version>${epsdk.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>mysql</groupId>
+    				<artifactId>mysql-connector-java</artifactId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 		<dependency>
-			<groupId>org.openecomp.ecompsdkos</groupId>
+			<groupId>org.onap.portal.sdk</groupId>
 			<artifactId>epsdk-analytics</artifactId>
 			<version>${epsdk.version}</version>
 			<exclusions>
@@ -209,7 +218,7 @@
 			</exclusions>
 		</dependency>
 		<dependency>
-			<groupId>org.openecomp.ecompsdkos</groupId>
+			<groupId>org.onap.portal.sdk</groupId>
 			<artifactId>epsdk-workflow</artifactId>
 			<version>${epsdk.version}</version>
 		</dependency>
diff --git a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java b/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java
index 567fbb7..3b38f1d 100644
--- a/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java
+++ b/ONAP-SDK-APP/src/main/java/org/openecomp/portalapp/login/LoginStrategyImpl.java
@@ -26,10 +26,10 @@
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.openecomp.portalsdk.core.auth.LoginStrategy;
+import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.openecomp.portalsdk.core.onboarding.exception.PortalAPIException;
 import org.openecomp.portalsdk.core.onboarding.util.CipherUtil;
-import org.openecomp.portalsdk.core.onboarding.util.PortalApiConstants;
-import org.openecomp.portalsdk.core.onboarding.util.PortalApiProperties;
+import org.openecomp.portalsdk.core.util.SystemProperties;
 import org.springframework.web.servlet.ModelAndView;
 
 public class LoginStrategyImpl extends LoginStrategy {
@@ -58,23 +58,21 @@
     }
 
     private static String getUserIdFromCookie(HttpServletRequest request) throws PortalAPIException {
-        String userId = "";
-        Cookie[] cookies = request.getCookies();
-        Cookie userIdcookie = null;
-        if (cookies != null)
-            for (Cookie cookie : cookies)
-                if (cookie.getName().equals(USER_ID))
-                    userIdcookie = cookie;
-        if (userIdcookie != null) {
-            try {
-                userId = CipherUtil.decrypt(userIdcookie.getValue(),
-                        PortalApiProperties.getProperty(PortalApiConstants.Decryption_Key));
-            } catch (Exception e) {
-                throw new PortalAPIException(e);
-            }
-        }
-        return userId;
-
+    	String userId = ""; 
+		Cookie userIdCookie = getCookie(request, USER_ID); 
+		if (userIdCookie != null) { 
+			final String cookieValue = userIdCookie.getValue(); 
+			if (!SystemProperties.containsProperty(SystemProperties.Decryption_Key)) 
+				throw new IllegalStateException("Failed to find property " + SystemProperties.Decryption_Key); 
+			final String decryptionKey = SystemProperties.getProperty(SystemProperties.Decryption_Key); 
+			try {
+				userId = CipherUtil.decrypt(cookieValue, decryptionKey);
+				LOGGER.debug("getUserIdFromCookie: decrypted as {}" +userId); 
+			} catch (Exception e) {
+				LOGGER.error("Exception Occured in getUserIdFromCookie" + e);
+			} 
+		} 
+		return userId;
     }
 
     private static boolean isLoginCookieExist(HttpServletRequest request) {
diff --git a/ONAP-SDK-APP/src/main/resources/portal.properties b/ONAP-SDK-APP/src/main/resources/portal.properties
index 2ab096f..1f2336d 100644
--- a/ONAP-SDK-APP/src/main/resources/portal.properties
+++ b/ONAP-SDK-APP/src/main/resources/portal.properties
@@ -27,11 +27,6 @@
 max.idle.time = 5
 user.attribute.name = user_attribute
 
-# CSP settings
-csp_cookie_name          = attESSec
-csp_gate_keeper_prod_key = PROD
-testing=testing
-
 #Use REST API instead of UEB to fetch the functional menu data
 use_rest_for_functional_menu=true
 
@@ -43,10 +38,10 @@
 portal.api.impl.class = org.openecomp.portalapp.service.OnBoardingApiServiceImpl
 
 # CSP Global Log On for single sign on
-onap_redirect_url = todo_csp_global_logon
+ecomp_redirect_url = todo_csp_global_logon
 
 # URL of the ONAP Portal REST API
-onap_rest_url = todo_Onap_rest_url
+ecomp_rest_url = todo_Onap_rest_url
 
 # Applications do not need to run a UEB listener in 1610.  
 ueb_listeners_enable = false
@@ -58,7 +53,7 @@
 # UEB servers
 ueb_url_list = todo_ueb_list
 # ONAP Portal listens on this UEB topic
-onap_portal_inbox_name = ONAP-PORTAL-INBOX-TEST-DEMETER
+ecomp_portal_inbox_name = ONAP-PORTAL-INBOX-TEST-DEMETER
 # Replace these 3 default values with the ones for your specific App,
 # as shown on the on-boarding page on the ONAP Portal web application.
 ueb_app_key = ZOicEniw7BWDL1pM
diff --git a/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties b/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
index 304bcbd..aa8ee14 100644
--- a/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
+++ b/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
@@ -23,8 +23,8 @@
 # The following properties MAY require changes by partner applications.
 ##########################################################################
 #Mysql
-db.driver = com.mysql.jdbc.Driver
-db.connectionURL = jdbc:mysql://localhost:3306/onap_sdk
+db.driver = org.mariadb.jdbc.Driver
+db.connectionURL = jdbc:mariadb://localhost:3306/onap_sdk
 db.userName = policy_user
 db.password = policy_user
 db.hib.dialect = org.hibernate.dialect.MySQLDialect
@@ -50,7 +50,7 @@
 my_login_feed_output_dir      = /tmp/MyLogins
 
 # ONAP Portal Shared Context REST API URL
-onap_shared_context_rest_url= todo_shared_context_url
+ecomp_shared_context_rest_url= todo_shared_context_url
 
 # Link shown in Help menu
 contact_us_link = todo_Contact_link
diff --git a/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html
new file mode 100644
index 0000000..4445149
--- /dev/null
+++ b/ONAP-SDK-APP/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html
@@ -0,0 +1,68 @@
+<div class="header-main-div" >
+	<header class="b2b-header-tabs" b2b-header-responsive ng-show="{{showHeader}}">
+		<ul class="header__items" role="navigation">
+			<li class="header__item icon__item" tabindex="0" ng-click="returnToPortal()">
+				<span class="globe-text">ONAP Portal</span>
+			</li>
+			<li b2b-header-menu class="header__item b2b-headermenu"	ng-repeat="item in menuItems" role="presentation">
+				<a href="javascript:void(0);"	class="menu__item" role="menuitem" ng-bind="item.text"></a>
+				<div class="header-secondary-wrapper">
+					<ul class="header-secondary" role="menu">
+						<li class="header-subitem" b2b-header-submenu
+							ng-repeat="secondLevMenu in item.children" role="presentation">
+							<a href="{{secondLevMenu.action}}" 	ng-if="secondLevMenu.childMenus.length==0" class="menu__item"	role="menuitem" ng-bind="secondLevMenu.label"></a> 
+							<a href="javascript:void(0);" ng-if="secondLevMenu.childMenus.length!=0" class="menu__item"	role="menuitem" ng-bind="secondLevMenu.label" ></a>
+							<div class="header-tertiary-wrapper">
+								<ul class="header-tertiary" role="menu">
+									<li b2b-header-tertiarymenu ng-repeat="thirdLevMenu in secondLevMenu.childMenus"role="presentation">
+										<a href="{{thirdLevMenu.action}}"role="menuitem" aria-haspopup="true" ng-bind="thirdLevMenu.label"></a> 
+									</li>
+								</ul>
+							</div>
+						</li>
+					</ul>
+				</div></li>
+			<li class="header__item profile">
+			<b2b-flyout>
+				<div b2b-flyout-toggler class="header-profile" >
+					<div class="icon-people-oneperson" id="header-user-icon" tabindex="0" b2b-accessibility-click="13,32" aria-label="notifications" aria-haspopup="true" aria-expanded="{{flyoutOpened}}" role="button"></div>
+	          		<div id="login-snippet-text" class="login-snippet-text">{{userFirstName}}</div>                  
+				</div>					
+	            <b2b-flyout-content horizontal-placement="center" vertical-placement="below">
+					<div>
+						<div id="reg-header-snippet">
+							<div tabindex="0" class="reg-profileDetails" id="reg-profiledetails-id">
+								<ul class="reg-Details-table">
+									<li>
+				                        <div class="reg-userName-table">
+				                            <div id="reg-userName-table-row">
+				                                <div id="reg-userName-table-cell">
+				                                    <h3 ng-bind="userName">&nbsp;</h3>
+				                                    <span>&nbsp;</span>
+				                                </div>
+				                            </div>
+				                        </div>
+				                    </li>
+									<li><div class="reg-userEmail-label"><span class="reg-userEmail-label-spn" style=font-weight:bold>Email<span class="visuallyhidden">:
+				                    </span></span></div></li>
+									<li><div class="reg-userEmail-value"><span class="reg-userEmail-value-spn">
+				                        {{userEmail}}</span></div></li>
+				                    <li>&nbsp;</li>
+									<li><div class="reg-userRole-label"><span class="reg-userRole-label-spn" style=font-weight:bold>
+				                        User Id<span class="visuallyhidden">:</span></span></div></li>
+									<li><div class="reg-userRole-value"><span class="reg-userRole-value-spn">
+				                        {{userId}}<span class="visuallyhidden"></span></span></div></li>
+								</ul>
+				                <div id="reg-logout-div" style="padding-top: 8px">
+				                      <a href="logout.htm" id="allLogout" class="btn btn-alt btn-small">
+										Log out
+									</a>
+				                </div>
+					        </div>
+						</div>
+					</div>		
+	            </b2b-flyout-content>
+       		</b2b-flyout>
+		</ul>
+	</header>
+</div>
diff --git a/ONAP-SDK-APP/xacml.admin.properties b/ONAP-SDK-APP/xacml.admin.properties
index 0f285b6..333da49 100644
--- a/ONAP-SDK-APP/xacml.admin.properties
+++ b/ONAP-SDK-APP/xacml.admin.properties
@@ -87,8 +87,8 @@
 
 xacml.att.log.timeframe=150
 
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/ONAP-XACML/src/main/java/org/onap/policy/xacml/api/pap/OnapPAPPolicy.java b/ONAP-XACML/src/main/java/org/onap/policy/xacml/api/pap/OnapPAPPolicy.java
index 78ce354..4539b42 100644
--- a/ONAP-XACML/src/main/java/org/onap/policy/xacml/api/pap/OnapPAPPolicy.java
+++ b/ONAP-XACML/src/main/java/org/onap/policy/xacml/api/pap/OnapPAPPolicy.java
@@ -46,6 +46,7 @@
 	public String getOnapName();
 	public String getConfigName();
 	public Map<String, String> getDynamicFieldConfigAttributes();
+	public Map<String, String> getTreatments();
 	public Map<String, String> getDynamicSettingsMap();
 	public List<String> getDynamicRuleAlgorithmLabels();
 	public List<String> getDynamicRuleAlgorithmCombo();
@@ -81,7 +82,6 @@
     public String getDictionaryType();
     public String getDictionary();
     public String getDictionaryFields();
-    
 	public String getRiskLevel();
 	public String getGuard();
 	public String getRiskType();
diff --git a/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdPAPPolicy.java b/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdPAPPolicy.java
index 56676f3..034c08b 100644
--- a/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdPAPPolicy.java
+++ b/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdPAPPolicy.java
@@ -36,6 +36,7 @@
 	private String onapName = null;
 	private String configName = null;
 	private Map<String, String> dyanamicFieldConfigAttributes = new HashMap<>();
+	private Map<String, String> treatments = new HashMap<>();
 	private Map<String, String> dropDownMap = new HashMap<>();
 	private Map<String, String> dynamicSettingsMap = new HashMap<>();
 	private List<String> dynamicRuleAlgorithmLabels;
@@ -125,8 +126,9 @@
 
 	}
 
-	//Constructor for Create/Update Decision Policies from Admin Console
-	public StdPAPPolicy(String policyName, String description, String onapName, String providerComboBox, Map<String, String> attributes, Map<String, String> settings, 
+	//Constructor for Create/Update Decision Policies
+	public StdPAPPolicy(String policyName, String description, String onapName, String providerComboBox, 
+			Map<String, String> attributes, Map<String, String> settings, Map<String, String> treatments,
 			List<String> dynamicRuleAlgorithmLabels, List<String> dynamicRuleAlgorithmCombo, List<String> dynamicRuleAlgorithmField1, 
 			List<String> dynamicRuleAlgorithmField2, Map<String, String> dropDownMap, List<Object> dynamicVariableList, 
 			List<String> dataTypeList, Boolean editPolicy, String domain, int highestVersion) {
@@ -147,10 +149,10 @@
 		this.editPolicy = editPolicy;
 		this.domain = domain;
 		this.highestVersion = highestVersion;	
+		this.treatments = treatments;
 
 	}
 
-
 	//Constructor for Create Config Policies from API and Admin Console
 	//Constructor for Updating Config Policies from the API
 	public StdPAPPolicy(String configPolicyType, String policyName, String description, String onapName, String configName, Map<String, String> attributes, String configType, 
@@ -675,6 +677,11 @@
 	}
 
 	@Override
+	public Map<String, String> getTreatments() {
+		return treatments;
+	}
+	
+	@Override
 	public String toString() {
 		return "StdPAPPolicy [policyName=" + policyName + ", policyDescription=" + policyDescription + ", onapName="
 				+ onapName + ", configName=" + configName + ", dyanamicFieldConfigAttributes=" + dyanamicFieldConfigAttributes + ", configBodyData=" + configBodyData
@@ -688,9 +695,10 @@
 				+ ",dataTypeList=" + dataTypeList + ",draft=" + ",oldPolicyFileName=" + oldPolicyFileName + ",serviceType=" + serviceType
 				+ ",uuid=" + uuid + ",msLocation=" + msLocation + ",priority=" + priority + ",deleteCondition=" + deleteCondition + ",dictionaryType=" + dictionaryType 
 				+ ",dictionary=" + dictionary + ",dictionaryFields=" + dictionaryFields + ",uuid=" + uuid + ",msLocation=" + msLocation + ",priority=" 
-				+ priority + ",deleteCondition=" + deleteCondition + ",riskType="+riskType + ",riskLevel="+riskLevel + ",guard="+ guard + ",ttlDate="+ ttlDate + "]";
+				+ priority + ",deleteCondition=" + deleteCondition + ",riskType="+riskType + ",riskLevel="+riskLevel + ",guard="+ guard + ",ttlDate="+ ttlDate 
+				+ ",treatments=" + treatments + "]";
 	}
-
+	
 	// Methods needed for JSON Deserialization
 	public void setPolicyName(String policyName) {
 		this.policyName = policyName;
@@ -907,4 +915,8 @@
 	public void setBrmsDependency(ArrayList<String> brmsDependency) {
 		this.brmsDependency = brmsDependency;
 	}
+	
+	public void setTreatments(Map<String, String> treatments) {
+		this.treatments = treatments;
+	}
 }
\ No newline at end of file
diff --git a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java
new file mode 100644
index 0000000..6600a92
--- /dev/null
+++ b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdEngineTest.java
@@ -0,0 +1,101 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-XACML
+ * ================================================================================
+ * Copyright (C) 2017 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=========================================================
+ */
+package org.onap.policy.xacml.test.std.pap;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.xacml.api.pap.OnapPDP;
+import org.onap.policy.xacml.std.pap.StdEngine;
+
+import com.att.research.xacml.api.pap.PAPException;
+import com.att.research.xacml.std.pap.StdPDP;
+
+public class StdEngineTest {
+	
+	private static Logger logger = FlexLogger.getLogger(StdEngineTest.class);
+	private Path repository;
+	Properties properties = new Properties();
+	StdEngine stdEngine = null;
+	
+	@Before
+	public void setUp(){
+	
+		repository = Paths.get("src/test/resources/pdps");
+		try {
+			stdEngine = new StdEngine(repository);
+		} catch (PAPException e) {
+			logger.info(e);
+		} catch (IOException e) {
+			logger.info(e);
+		}
+	}
+
+	@Test
+	public void testGetDefaultGroup(){
+		try {
+			assertTrue(stdEngine.getDefaultGroup() != null);
+		} catch (PAPException e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetGroup(){
+		try {
+			assertTrue(stdEngine.getGroup("1") == null);
+		} catch (PAPException e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetOnapPDPGroups(){
+		try {
+			assertTrue(stdEngine.getOnapPDPGroups() != null);
+		} catch (PAPException e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testGetPDP(){
+		try {
+			assertTrue(stdEngine.getPDP("1") == null);
+		} catch (PAPException e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetPDPGroup(){
+		try {
+			assertTrue(stdEngine.getPDPGroup(null) == null);
+		} catch (PAPException e) {
+			logger.info(e);
+		}
+	}
+}
diff --git a/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdPAPPolicyTest.java b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdPAPPolicyTest.java
new file mode 100644
index 0000000..da7476b
--- /dev/null
+++ b/ONAP-XACML/src/test/java/org/onap/policy/xacml/test/std/pap/StdPAPPolicyTest.java
@@ -0,0 +1,543 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP-XACML
+ * ================================================================================
+ * Copyright (C) 2017 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=========================================================
+ */
+package org.onap.policy.xacml.test.std.pap;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URL;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.xacml.api.pap.OnapPDP;
+import org.onap.policy.xacml.std.pap.StdEngine;
+import org.onap.policy.xacml.std.pap.StdPAPPolicy;
+
+import com.att.research.xacml.api.pap.PAPException;
+import com.att.research.xacml.std.pap.StdPDP;
+
+public class StdPAPPolicyTest {
+	
+	private static Logger logger = FlexLogger.getLogger(StdPAPPolicyTest.class);
+	private Path repository;
+	Properties properties = new Properties();
+	StdPAPPolicy stdPAPPolicy;
+	
+	@Before
+	public void setUp(){
+	
+		repository = Paths.get("src/test/resources/pdps");
+		try {
+			stdPAPPolicy = new StdPAPPolicy();
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+
+	@Test
+	public void testGetActionAttribute(){
+		try {
+			stdPAPPolicy.setActionAttribute("test");
+			assertTrue(stdPAPPolicy.getActionAttribute() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetActionBody(){
+		try {
+			stdPAPPolicy.setActionBody("actionBody");
+			assertTrue(stdPAPPolicy.getActionBody() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetActionDictHeader(){
+		try {
+			stdPAPPolicy.setActionDictHeader("actionDictHeader");
+			assertTrue(stdPAPPolicy.getActionDictHeader() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testGetActionDictMethod(){
+		try {
+			stdPAPPolicy.setActionDictMethod("actionDictMethod");
+			assertTrue(stdPAPPolicy.getActionDictMethod() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetActionDictType(){
+		try {
+			stdPAPPolicy.setActionDictType("actionDictType");
+			assertTrue(stdPAPPolicy.getActionDictType() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetActionDictUrl(){
+		try {
+			stdPAPPolicy.setActionDictUrl("actionDictUrl");
+			assertTrue(stdPAPPolicy.getActionDictUrl() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetActionPerformer(){
+		try {
+			stdPAPPolicy.setActionPerformer("actionPerformer");
+			assertTrue(stdPAPPolicy.getActionPerformer() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetBrmsController(){
+		try {
+			stdPAPPolicy.setBrmsController("brmsController");
+			assertTrue(stdPAPPolicy.getBrmsController() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testGetBrmsDependency(){
+		try {
+			stdPAPPolicy.setBrmsDependency(new ArrayList());
+			assertTrue(stdPAPPolicy.getBrmsDependency() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetConfigBodyData(){
+		try {
+			stdPAPPolicy.setConfigBodyData("configBodyData");
+			assertTrue(stdPAPPolicy.getConfigBodyData() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+
+	@Test
+	public void testGetConfigName(){
+		try {
+			stdPAPPolicy.setConfigName("configName");
+			assertTrue(stdPAPPolicy.getConfigName() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetConfigPolicyType(){
+		try {
+			stdPAPPolicy.setConfigPolicyType("configPolicyType");
+			assertTrue(stdPAPPolicy.getConfigPolicyType() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetConfigType(){
+		try {
+			stdPAPPolicy.setConfigType("configType");
+			assertTrue(stdPAPPolicy.getConfigType() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testGetDataTypeList(){
+		try {
+			stdPAPPolicy.setDataTypeList(new ArrayList<String>());
+			assertTrue(stdPAPPolicy.getDataTypeList() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetDeleteCondition(){
+		try {
+			stdPAPPolicy.setDeleteCondition("deleteCondition");
+			assertTrue(stdPAPPolicy.getDeleteCondition() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	
+	@Test
+	public void testGetDrlRuleAndUIParams(){
+		try {
+			stdPAPPolicy.setDrlRuleAndUIParams(new HashMap());
+			assertTrue(stdPAPPolicy.getDrlRuleAndUIParams() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetDropDownMap(){
+		try {
+			stdPAPPolicy.setDropDownMap(new HashMap());
+			assertTrue(stdPAPPolicy.getDropDownMap() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetDynamicFieldConfigAttributes(){
+		try {
+			assertTrue(stdPAPPolicy.getDynamicFieldConfigAttributes() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testGetDynamicRuleAlgorithmCombo(){
+		try {
+			stdPAPPolicy.setDynamicRuleAlgorithmCombo(new ArrayList());
+			assertTrue(stdPAPPolicy.getDynamicRuleAlgorithmCombo() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetDynamicRuleAlgorithmField1(){
+		try {
+			stdPAPPolicy.setDynamicRuleAlgorithmField1(new ArrayList());
+			assertTrue(stdPAPPolicy.getDynamicRuleAlgorithmField1() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+
+	@Test
+	public void testGetDictionary(){
+		try {
+			stdPAPPolicy.setDictionary("dictionary");
+			assertTrue(stdPAPPolicy.getDictionary() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetDictionaryFields(){
+		try {
+			stdPAPPolicy.setDictionaryFields("dictionaryFields");
+			assertTrue(stdPAPPolicy.getDictionaryFields() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetDictionaryType(){
+		try {
+			stdPAPPolicy.setDictionaryType("dictionaryType");
+			assertTrue(stdPAPPolicy.getDictionaryType() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testGetDomainDir(){
+		try {
+			stdPAPPolicy.setDomainDir("domain");
+			assertTrue(stdPAPPolicy.getDomainDir() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testIsDraft(){
+		try {
+			stdPAPPolicy.setDraft(true);
+			assertTrue(stdPAPPolicy.isDraft() == true);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetDynamicRuleAlgorithmLabels(){
+		try {
+			stdPAPPolicy.setDynamicRuleAlgorithmLabels(new ArrayList());
+			assertTrue(stdPAPPolicy.getDynamicRuleAlgorithmLabels() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetDynamicSettingsMap(){
+		try {
+			stdPAPPolicy.setDynamicSettingsMap(new HashMap());
+			assertTrue(stdPAPPolicy.getDynamicSettingsMap() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetDynamicVariableList(){
+		try {
+			stdPAPPolicy.setDynamicVariableList(new ArrayList());
+			assertTrue(stdPAPPolicy.getDynamicVariableList() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testGetGuard(){
+		try {
+			stdPAPPolicy.setGuard("domain");
+			assertTrue(stdPAPPolicy.getGuard() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetHighestVersion(){
+		try {
+			stdPAPPolicy.setHighestVersion(123);
+			assertTrue(stdPAPPolicy.getHighestVersion() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testgGtJsonBody(){
+		try {
+			stdPAPPolicy.setJsonBody("jsonBoby");
+			assertTrue(stdPAPPolicy.getJsonBody() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetLocation(){
+		try {
+			stdPAPPolicy.setLocation(new URI("test"));
+			assertTrue(stdPAPPolicy.getLocation() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetMsLocation(){
+		try {
+			stdPAPPolicy.setMsLocation("MsLocation");
+			assertTrue(stdPAPPolicy.getMsLocation() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testSetOldPolicyFileName(){
+		try {
+			stdPAPPolicy.setOldPolicyFileName("domain");
+			assertTrue(stdPAPPolicy.getOldPolicyFileName() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetOnapName(){
+		try {
+			stdPAPPolicy.setOnapName("onap");
+			assertTrue(stdPAPPolicy.getOnapName() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetPolicyDescription(){
+		try {
+			stdPAPPolicy.setPolicyDescription("description test");
+			assertTrue(stdPAPPolicy.getPolicyDescription() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetPolicyID(){
+		try {
+			stdPAPPolicy.setPolicyID("test");
+			assertTrue(stdPAPPolicy.getPolicyID() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testSetPolicyName(){
+		try {
+			stdPAPPolicy.setPolicyName("MsLocation");
+			assertTrue(stdPAPPolicy.getPolicyName() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testSetPriority(){
+		try {
+			stdPAPPolicy.setPriority("domain");
+			assertTrue(stdPAPPolicy.getPriority() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetProviderComboBox(){
+		try {
+			stdPAPPolicy.setProviderComboBox("onap");
+			assertTrue(stdPAPPolicy.getProviderComboBox() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetRiskLevel(){
+		try {
+			stdPAPPolicy.setRiskLevel("test");
+			assertTrue(stdPAPPolicy.getRiskLevel() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetRiskType(){
+		try {
+			stdPAPPolicy.setRiskType("test");
+			assertTrue(stdPAPPolicy.getRiskType() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testGetRuleID(){
+		try {
+			stdPAPPolicy.setRuleID("MsLocation");
+			assertTrue(stdPAPPolicy.getRuleID() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testGetServiceType(){
+		try {
+			stdPAPPolicy.setServiceType("domain");
+			assertTrue(stdPAPPolicy.getServiceType() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+	@Test
+	public void testGetTTLDate(){
+		try {
+			stdPAPPolicy.setTTLDate("09/20/17");
+			assertTrue(stdPAPPolicy.getTTLDate() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+
+	@Test
+	public void testGetUuid(){
+		try {
+			stdPAPPolicy.setUuid("11212122");
+			assertTrue(stdPAPPolicy.getUuid() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}	
+	@Test
+	public void testGetVersion(){
+		try {
+			stdPAPPolicy.setVersion("testv01");
+			assertTrue(stdPAPPolicy.getVersion() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+		
+	}	
+	
+	@Test
+	public void testIsEditPolicy(){
+		try {
+			stdPAPPolicy.setEditPolicy(true);
+			assertTrue(stdPAPPolicy.isEditPolicy() == true);
+		} catch (Exception e) {
+			logger.info(e);
+		}	
+	}	
+	@Test
+	public void testToString(){
+		try {
+			assertTrue(stdPAPPolicy.toString() != null);
+		} catch (Exception e) {
+			logger.info(e);
+		}
+	}
+	
+}
\ No newline at end of file
diff --git a/POLICY-SDK-APP/pom.xml b/POLICY-SDK-APP/pom.xml
index 5adb5d1..aea0afc 100644
--- a/POLICY-SDK-APP/pom.xml
+++ b/POLICY-SDK-APP/pom.xml
@@ -49,7 +49,7 @@
 	</build>
 	<properties>
 		<encoding>UTF-8</encoding>
-		<epsdk.version>1.1.0</epsdk.version>
+		<epsdk.version>1.3.1</epsdk.version>
 		<springframework.version>4.2.0.RELEASE</springframework.version>
 		<hibernate.version>4.3.11.Final</hibernate.version>
 		<skipassembly>true</skipassembly>
@@ -59,9 +59,15 @@
 	</properties>
 	<dependencies>
 		<dependency>
-			<groupId>org.openecomp.ecompsdkos</groupId>
+			<groupId>org.onap.portal.sdk</groupId>
 			<artifactId>epsdk-core</artifactId>
 			<version>${epsdk.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>mysql</groupId>
+    				<artifactId>mysql-connector-java</artifactId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 	<!-- Spring -->
 		<dependency>
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java
index 3febbed..7ac9ca3 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java
@@ -34,6 +34,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
@@ -49,9 +50,14 @@
 	private static HashMap<String, String> pdpMap = null;
 	private static final Logger LOGGER = FlexLogger.getLogger(CheckPDP.class);
 	
-	private CheckPDP(){
+	public static Map<String, String> getPdpMap() {
+		return pdpMap;
+	}
+
+	public CheckPDP(){
 		//default constructor
 	}
+	
 	public static boolean validateID(String id) {
 		// ReadFile
 		try {
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java
index 4f42023..d65d1da 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyManagerServlet.java
@@ -7,9 +7,9 @@
  * 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.
@@ -91,16 +91,6 @@
 public class PolicyManagerServlet extends HttpServlet {
 	private static final Logger LOGGER	= FlexLogger.getLogger(PolicyManagerServlet.class);
 	private static final long serialVersionUID = -8453502699403909016L;
-	
-	private static boolean jUnit = false;
-
-	public static boolean isjUnit() {
-		return jUnit;
-	}
-
-	public static void setjUnit(boolean jUnit) {
-		PolicyManagerServlet.jUnit = jUnit;
-	}
 
 	private enum Mode {
 		LIST, RENAME, COPY, DELETE, EDITFILE, ADDFOLDER, DESCRIBEPOLICYFILE, VIEWPOLICY, ADDSUBSCOPE, SWITCHVERSION, EXPORT, SEARCHLIST
@@ -123,11 +113,11 @@
 	private static String EDITOR = "editor";
 	private static String GUEST = "guest";
 	private static String RESULT = "result";
-	
+
 	private static Path closedLoopJsonLocation;
 	private static JsonArray policyNames;
 	private static String testUserId = null;
-	
+
 	public static JsonArray getPolicyNames() {
 		return policyNames;
 	}
@@ -154,7 +144,7 @@
 		//
 		PolicyManagerServlet.initializeJSONLoad();
 	}
-	
+
 	protected static void initializeJSONLoad() {
 		closedLoopJsonLocation = Paths.get(XACMLProperties
 				.getProperty(XACMLRestProperties.PROP_ADMIN_CLOSEDLOOP));
@@ -163,7 +153,7 @@
 		String location = closedLoopJsonLocation.toString();
 		try {
 			inputStream = new FileInputStream(location);
-			if (location.endsWith("json")) {	
+			if (location.endsWith("json")) {
 				jsonReader = Json.createReader(inputStream);
 				policyNames = jsonReader.readArray();
 				serviceTypeNamesList = new ArrayList<>();
@@ -341,7 +331,7 @@
 		try {
 			//Get the Login Id of the User from Request
 			String userId =  UserUtils.getUserSession(request).getOrgUserId();
-			//Check if the Role and Scope Size are Null get the values from db. 
+			//Check if the Role and Scope Size are Null get the values from db.
 			List<Object> userRoles = controller.getRoles(userId);
 			roles = new ArrayList<>();
 			scopes = new HashSet<>();
@@ -356,7 +346,7 @@
 						}
 					}else{
 						scopes.add(userRole.getScope());
-					}		
+					}
 				}
 			}
 			if (roles.contains(ADMIN) || roles.contains(EDITOR) || roles.contains(GUEST) ) {
@@ -373,7 +363,7 @@
 						}
 					}
 				}
-			} 
+			}
 			if(policyList!= null){
 				for(int i = 0; i < policyList.length(); i++){
 					String policyName = policyList.get(i).toString().replace(".xml", "");
@@ -390,7 +380,7 @@
 					if(!activeData.isEmpty()){
 						PolicyVersion policy = (PolicyVersion) activeData.get(0);
 						JSONObject el = new JSONObject();
-						el.put("name", policy.getPolicyName().replace(File.separator, "/"));	
+						el.put("name", policy.getPolicyName().replace(File.separator, "/"));
 						el.put("date", policy.getModifiedDate());
 						el.put("version", policy.getActiveVersion());
 						el.put("size", "");
@@ -409,7 +399,7 @@
 						PolicyVersion filterdata = (PolicyVersion) filter;
 						try{
 							String scopeName = filterdata.getPolicyName().substring(0, filterdata.getPolicyName().lastIndexOf(File.separator));
-							if(scopes.contains(scopeName)){	
+							if(scopes.contains(scopeName)){
 								policyData.add(filterdata);
 							}
 						}catch(Exception e){
@@ -417,12 +407,12 @@
 						}
 					}
 				}
-				
+
 				if(!policyData.isEmpty()){
 					for(int i =0; i < policyData.size(); i++){
 						PolicyVersion policy = (PolicyVersion) policyData.get(i);
 						JSONObject el = new JSONObject();
-						el.put("name", policy.getPolicyName().replace(File.separator, "/"));	
+						el.put("name", policy.getPolicyName().replace(File.separator, "/"));
 						el.put("date", policy.getModifiedDate());
 						el.put("version", policy.getActiveVersion());
 						el.put("size", "");
@@ -436,7 +426,7 @@
 		}catch(Exception e){
 			LOGGER.error("Exception occured while reading policy Data from Policy Version table for Policy Search Data"+e);
 		}
-			
+
 		return new JSONObject().put(RESULT, resultList);
 	}
 
@@ -542,7 +532,7 @@
 		peParams.put("split_1", split[1]);
 		peParams.put("split_0", split[0]);
 		List<Object> queryData = null;
-		if(jUnit){
+		if(PolicyController.isjUnit()){
 			queryData = controller.getDataByQuery(query, null);
 		}else{
 			queryData = controller.getDataByQuery(query, peParams);
@@ -574,12 +564,12 @@
 		}else{
 			return error("Error Occured while Describing the Policy");
 		}
-		
+
 		return object;
 	}
 
 	//Get the List of Policies and Scopes for Showing in Editor tab
-	private JSONObject list(JSONObject params, HttpServletRequest request) throws ServletException { 
+	private JSONObject list(JSONObject params, HttpServletRequest request) throws ServletException {
 		Set<String> scopes = null;
 		List<String> roles = null;
 		try {
@@ -587,7 +577,7 @@
 			//Get the Login Id of the User from Request
 			String testUserID = getTestUserId();
 			String userId =  testUserID != null ? testUserID : UserUtils.getUserSession(request).getOrgUserId();
-			//Check if the Role and Scope Size are Null get the values from db. 
+			//Check if the Role and Scope Size are Null get the values from db.
 			List<Object> userRoles = controller.getRoles(userId);
 			roles = new ArrayList<>();
 			scopes = new HashSet<>();
@@ -602,7 +592,7 @@
 						}
 					}else{
 						scopes.add(userRole.getScope());
-					}		
+					}
 				}
 			}
 
@@ -623,8 +613,8 @@
 						scopes.add(tempScope);
 					}
 				}
-			} 
-			
+			}
+
 			if("/".equals(path)){
 				if(roles.contains(SUPERADMIN) || roles.contains(SUPEREDITOR) || roles.contains(SUPERGUEST)){
 					List<Object> scopesList = queryPolicyEditorScopes(null);
@@ -632,7 +622,7 @@
 						PolicyEditorScopes scope = (PolicyEditorScopes) list;
 						if(!(scope.getScopeName().contains(File.separator))){
 							JSONObject el = new JSONObject();
-							el.put("name", scope.getScopeName());	
+							el.put("name", scope.getScopeName());
 							el.put("date", scope.getCreatedDate());
 							el.put("size", "");
 							el.put("type", "dir");
@@ -647,7 +637,7 @@
 						List<Object> scopesList = queryPolicyEditorScopes(scope.toString());
 						if(!scopesList.isEmpty()){
 							PolicyEditorScopes scopeById = (PolicyEditorScopes) scopesList.get(0);
-							el.put("name", scopeById.getScopeName());	
+							el.put("name", scopeById.getScopeName());
 							el.put("date", scopeById.getCreatedDate());
 							el.put("size", "");
 							el.put("type", "dir");
@@ -663,7 +653,7 @@
 					activePolicyList(scopeName, resultList, roles, scopes, onlyFolders);
 				} catch (Exception ex) {
 					LOGGER.error("Error Occured While reading Policy Files List"+ex );
-				}			
+				}
 			}
 
 			return new JSONObject().put(RESULT, resultList);
@@ -684,7 +674,7 @@
 		}
 		PolicyController controller = getPolicyControllerInstance();
 		List<Object> scopesList = null;
-		if(jUnit){
+		if(PolicyController.isjUnit()){
 			scopesList = controller.getDataByQuery(scopeNamequery, null);
 		}else{
 			scopesList = controller.getDataByQuery(scopeNamequery, params);
@@ -703,13 +693,13 @@
 		}
 		String query = "from PolicyVersion where POLICY_NAME like :scopeName";
 		String scopeNamequery = "from PolicyEditorScopes where SCOPENAME like :scopeName";
-		
+
 		SimpleBindings params = new SimpleBindings();
 		params.put("scopeName", scopeName + "%");
-		
+
 		List<Object> activePolicies = null;
 		List<Object> scopesList = null;
-		if(jUnit){
+		if(PolicyController.isjUnit()){
 			activePolicies = controller.getDataByQuery(query, null);
 			scopesList = controller.getDataByQuery(scopeNamequery, null);
 		}else{
@@ -732,7 +722,7 @@
 				}
 				if(scopeName.equalsIgnoreCase(checkScope)){
 					JSONObject el = new JSONObject();
-					el.put("name", scope);	
+					el.put("name", scope);
 					el.put("date", scopeById.getModifiedDate());
 					el.put("size", "");
 					el.put("type", "dir");
@@ -740,7 +730,7 @@
 					el.put("modifiedBy", scopeById.getUserModifiedBy().getUserName());
 					resultList.add(el);
 				}
-			}		
+			}
 		}
 		String scopeNameCheck = null;
 		for (Object list : activePolicies) {
@@ -754,7 +744,7 @@
 				}
 				if(scopeNameValue.equals(scopeNameCheck)){
 					JSONObject el = new JSONObject();
-					el.put("name", policy.getPolicyName().substring(policy.getPolicyName().lastIndexOf(File.separator)+1));	
+					el.put("name", policy.getPolicyName().substring(policy.getPolicyName().lastIndexOf(File.separator)+1));
 					el.put("date", policy.getModifiedDate());
 					el.put("version", policy.getActiveVersion());
 					el.put("size", "");
@@ -765,7 +755,7 @@
 				}
 			}else if(!scopes.isEmpty() && scopes.contains(scopeNameValue)){
 					JSONObject el = new JSONObject();
-					el.put("name", policy.getPolicyName().substring(policy.getPolicyName().lastIndexOf(File.separator)+1));	
+					el.put("name", policy.getPolicyName().substring(policy.getPolicyName().lastIndexOf(File.separator)+1));
 					el.put("date", policy.getModifiedDate());
 					el.put("version", policy.getActiveVersion());
 					el.put("size", "");
@@ -774,7 +764,7 @@
 					el.put("modifiedBy", getUserName(policy.getModifiedBy()));
 					resultList.add(el);
 			}
-		}	
+		}
 	}
 
 	private String getUserName(String loginId){
@@ -836,11 +826,11 @@
 				if(activePolicies.size() != policyActiveInPDP.size()){
 					rename = true;
 				}
-	
+
 				UserInfo userInfo = new UserInfo();
 				userInfo.setUserLoginId(userId);
 				if(policyActiveInPDP.size() == 0){
-					renameScope(scopesList, scopeName, newScopeName, controller);	
+					renameScope(scopesList, scopeName, newScopeName, controller);
 				}else if(rename){
 					renameScope(scopesList, scopeName, newScopeName, controller);
 					for(String scope : scopeOfPolicyActiveInPDP){
@@ -853,7 +843,7 @@
 				}
 				if(isActive){
 					return error("The Following policies rename failed. Since they are active in PDP Groups" +policyActiveInPDP);
-				}	
+				}
 			}
 			return success();
 		} catch (Exception e) {
@@ -861,7 +851,7 @@
 			return error(e.getMessage());
 		}
 	}
-	
+
 	private void renameScope(List<Object> scopesList, String scopeName, String newScopeName, PolicyController controller){
 		for(Object object : scopesList){
 			PolicyEditorScopes editorScopeEntity = (PolicyEditorScopes) object;
@@ -874,7 +864,7 @@
 			controller.updateData(editorScopeEntity);
 		}
 	}
-	
+
 	private JSONObject policyRename(String oldPath, String newPath, String userId) throws ServletException {
 		try {
 			PolicyEntity entity = null;
@@ -909,7 +899,7 @@
 			String[] oldPolicySplit = oldPolicyCheck.split(":");
 
 			//Check PolicyEntity table with newPolicy Name
-			String policyEntityquery = "FROM PolicyEntity where policyName = :newPolicySplit_1 and scope = :newPolicySplit_1";
+			String policyEntityquery = "FROM PolicyEntity where policyName = :newPolicySplit_1 and scope = :newPolicySplit_0";
 			SimpleBindings policyParams = new SimpleBindings();
 			policyParams.put("newPolicySplit_1", newPolicySplit[1]);
 			policyParams.put("newPolicySplit_0", newPolicySplit[0]);
@@ -951,7 +941,7 @@
 			}else{
 				return error("Policy rename failed due to policy not able to retrieve from database. Please, contact super-admin.");
 			}
-			
+
 			return success();
 		} catch (Exception e) {
 			LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Exception Occured While Renaming Policy"+e);
@@ -959,7 +949,7 @@
 		}
 	}
 
-	private JSONObject checkOldPolicyEntryAndUpdate(PolicyEntity entity, String newScope, String removenewPolicyExtension, String oldScope, String removeoldPolicyExtension, 
+	private JSONObject checkOldPolicyEntryAndUpdate(PolicyEntity entity, String newScope, String removenewPolicyExtension, String oldScope, String removeoldPolicyExtension,
 			String policyName, String  newpolicyName, String oldpolicyName, String userId) throws ServletException{
 		try {
 			ConfigurationDataEntity configEntity = entity.getConfigurationData();
@@ -1151,7 +1141,7 @@
 				cloneRecord(newPolicySplit[1], oldPolicySplit[0], oldPolicySplit[1],  newPolicySplit[0], newPolicySplit[1], entity, userId);
 				success = true;
 			}
-			
+
 			if(success){
 				PolicyVersion entityItem = new PolicyVersion();
 				entityItem.setActiveVersion(Integer.parseInt(version));
@@ -1202,7 +1192,8 @@
 					splitPolicyName = policyNamewithoutExtension.replace(".Decision_", ":Decision_");
 				}
 				String[] split = splitPolicyName.split(":");
-				query = "FROM PolicyEntity where policyName like split_1 and scope = split_0";
+
+				query = "FROM PolicyEntity where policyName like :split_1 and scope = :split_0";
 				policyParams.put("split_1", split[1] + "%");
 				policyParams.put("split_0", split[0]);
 			}else{
@@ -1210,7 +1201,7 @@
 				query = "FROM PolicyEntity where scope like :policyNamewithoutExtension";
 				policyParams.put("policyNamewithoutExtension", policyNamewithoutExtension + "%");
 			}
-			
+
 			List<Object> policyEntityobjects = controller.getDataByQuery(query, policyParams);
 			String activePolicyName = null;
 			boolean pdpCheck = false;
@@ -1238,7 +1229,7 @@
 									controller.deleteData(policyEntity.getConfigurationData());
 								}else if(policyNamewithoutExtension.contains("Action_")){
 									controller.deleteData(policyEntity.getActionBodyEntity());
-								}			
+								}
 							}
 						}
 					}
@@ -1267,11 +1258,11 @@
 					String currentVersionPolicyName = policyNamewithExtension.substring(policyNamewithExtension.lastIndexOf(File.separator)+1);
 					String currentVersionScope = policyNamewithExtension.substring(0, policyNamewithExtension.lastIndexOf(File.separator)).replace(File.separator, ".");
 					query = "FROM PolicyEntity where policyName = :currentVersionPolicyName and scope = :currentVersionScope";
-					
+
 					SimpleBindings peParams = new SimpleBindings();
 					peParams.put("currentVersionPolicyName", currentVersionPolicyName);
 					peParams.put("currentVersionScope", currentVersionScope);
-					
+
 					List<Object> policyEntitys = controller.getDataByQuery(query, peParams);
 					if(!policyEntitys.isEmpty()){
 						policyEntity = (PolicyEntity) policyEntitys.get(0);
@@ -1292,9 +1283,9 @@
 							}else if(policyNamewithoutExtension.contains("Action_")){
 								controller.deleteData(policyEntity.getActionBodyEntity());
 							}
-							
+
 							if(version > 1){
-								int highestVersion = 0; 
+								int highestVersion = 0;
 								if(!policyEntityobjects.isEmpty()){
 									for(Object object : policyEntityobjects){
 										policyEntity = (PolicyEntity) object;
@@ -1325,7 +1316,7 @@
 							return error("Policy can't be deleted, it is active in PDP Groups.     PolicyName: '"+policyEntity.getScope() + "." +policyEntity.getPolicyName()+"'");
 						}
 					}
-				}	
+				}
 			}else{
 				List<String> activePoliciesInPDP = new ArrayList<String>();
 				if(!policyEntityobjects.isEmpty()){
@@ -1355,7 +1346,7 @@
 					//Delete from policyVersion and policyEditor Scope table
 					String policyVersionQuery = "delete PolicyVersion where POLICY_NAME like '"+path.replace("\\", "\\\\")+"%' and id >0";
 					controller.executeQuery(policyVersionQuery);
-					
+
 					//Policy Notification
 					PolicyVersion entity = new PolicyVersion();
 					entity.setPolicyName(path);
@@ -1375,7 +1366,7 @@
 							insertactivePDPVersion.setModifiedBy(userId);
 							controller.saveData(insertactivePDPVersion);
 						}
-						
+
 						return error("All the Policies has been deleted in Scope. Except the following list of Policies:"+activePoliciesInPDP);
 					}else{
 						String policyScopeQuery = "delete PolicyEditorScopes where SCOPENAME like '"+path.replace("\\", "\\\\")+"%' and id >0";
@@ -1401,10 +1392,10 @@
 			String mode = params.getString("mode");
 			String path = params.getString("path");
 			LOGGER.debug("editFile path: {}"+ path);
-			
+
 			String domain = path.substring(1, path.lastIndexOf("/"));
 			domain = domain.replace("/", ".");
-			
+
 			path = path.substring(1);
 			path = path.replace("/", ".");
 			String dbCheckName = path;
@@ -1415,14 +1406,14 @@
 			}else if(dbCheckName.contains("Decision_")){
 				dbCheckName = dbCheckName.replace(".Decision_", ":Decision_");
 			}
-			
+
 			String[] split = dbCheckName.split(":");
 			String query = "FROM PolicyEntity where policyName = :split_1 and scope = :split_0";
 			SimpleBindings peParams = new SimpleBindings();
 			peParams.put("split_1", split[1]);
 			peParams.put("split_0", split[0]);
 			List<Object> queryData = null;
-			if(jUnit){
+			if(PolicyController.isjUnit()){
 				queryData = controller.getDataByQuery(query, null);
 			}else{
 				queryData = controller.getDataByQuery(query, peParams);
@@ -1432,7 +1423,7 @@
 
 
 			Object policy = XACMLPolicyScanner.readPolicy(stream);
-			PolicyRestAdapter policyAdapter  = new PolicyRestAdapter();		
+			PolicyRestAdapter policyAdapter  = new PolicyRestAdapter();
 			policyAdapter.setData(policy);
 
 			if("viewPolicy".equalsIgnoreCase(mode)){
@@ -1451,7 +1442,7 @@
 
 			PolicyAdapter setpolicyAdapter = PolicyAdapter.getInstance();
 			setpolicyAdapter.configure(policyAdapter,entity);
-			
+
 			policyAdapter.setParentPath(null);
 			ObjectMapper mapper = new ObjectMapper();
 			String json = mapper.writeValueAsString(policyAdapter);
@@ -1478,7 +1469,7 @@
 					}
 				}else{
 					name = params.getString("name");
-				}	
+				}
 			}catch(Exception e){
 				name = params.getString("name");
 				LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Exception Occured While Adding Scope"+e);
@@ -1493,7 +1484,7 @@
 				String validate = PolicyUtils.policySpecialCharValidator(validateName);
 				if(!validate.contains("success")){
 					return error(validate);
-				} 
+				}
 			}
 			LOGGER.debug("addFolder path: {} name: {}" + path +name);
 			if(!name.equals("")){
@@ -1508,7 +1499,7 @@
 					newScope.setScopeName(name);
 					newScope.setUserCreatedBy(userInfo);
 					newScope.setUserModifiedBy(userInfo);
-					controller.saveData(newScope);	
+					controller.saveData(newScope);
 				}else{
 					return error("Scope Already Exists");
 				}
@@ -1543,7 +1534,7 @@
 			throw new ServletException(e);
 		}
 	}
-	
+
 	private PolicyController getPolicyControllerInstance(){
 		return policyController != null ? getPolicyController() : new PolicyController();
 	}
@@ -1555,4 +1546,4 @@
 	public static void setTestUserId(String testUserId) {
 		PolicyManagerServlet.testUserId = testUserId;
 	}
-}
\ No newline at end of file
+}
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java
index a4e4762..2326a9f 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyNotificationMail.java
@@ -122,7 +122,12 @@
 		boolean sendFlag = false;
 		SimpleBindings params = new SimpleBindings();
 		params.put("policyFileName", policyFileName);
-		List<Object> watchList = policyNotificationDao.getDataByQuery(query, params);
+		List<Object> watchList = null;
+		if(PolicyController.isjUnit()){
+			watchList = policyNotificationDao.getDataByQuery(query, null);
+		}else{
+			watchList = policyNotificationDao.getDataByQuery(query, params);
+		}
 		if(watchList != null && !watchList.isEmpty()){
 			for(Object watch : watchList){
 				WatchPolicyNotificationTable list = (WatchPolicyNotificationTable) watch;
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java
index 7234a3b..08f8030 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/PolicyRestController.java
@@ -82,8 +82,24 @@
 	private static final String modal = "model";
 	private static final String importDictionary = "import_dictionary";
 	
+	private static CommonClassDao commonClassDao;
+	
+	public static CommonClassDao getCommonClassDao() {
+		return commonClassDao;
+	}
+
+	public static void setCommonClassDao(CommonClassDao commonClassDao) {
+		PolicyRestController.commonClassDao = commonClassDao;
+	}
+	
 	@Autowired
-	CommonClassDao commonClassDao;
+	private PolicyRestController(CommonClassDao commonClassDao){
+		PolicyRestController.commonClassDao = commonClassDao;
+	}
+	
+	public PolicyRestController(){
+		//default constructor
+	}
 
 	@RequestMapping(value={"/policycreation/save_policy"}, method={RequestMethod.POST})
 	public void policyCreationController(HttpServletRequest request, HttpServletResponse response) {
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/components/HumanPolicyComponent.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/components/HumanPolicyComponent.java
index a0f1ba8..7c60ecf 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/components/HumanPolicyComponent.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/components/HumanPolicyComponent.java
@@ -202,7 +202,7 @@
 		combiningAlgo2human.put("only-one-applicable", "to honour the result of the first successfully evaluated $placeholder$ in order");
 	}	
 	
-	private Map<String, AttributeIdentifiers> attributeIdentifiersMap = new HashMap<String, AttributeIdentifiers>();
+	private Map<String, AttributeIdentifiers> attributeIdentifiersMap = new HashMap<>();
 	
 	private final StringWriter stringWriter = new StringWriter();
 	private final PrintWriter htmlOut = new PrintWriter(stringWriter);
@@ -357,7 +357,7 @@
 		else
 			policySet(policySet, "li");
 		
-		if (policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0)
+		if (!policySet.getPolicySetOrPolicyOrPolicySetIdReference().isEmpty())
 			htmlOut.println("<ol>");
 
 		return super.onPreVisitPolicySet(parent, policySet);
@@ -377,7 +377,7 @@
 			LOGGER.trace("PolicySet: " + policySet.getPolicySetId() + 
 					     " Description: " + policySet.getDescription());	
 		
-		if (policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0)
+		if (!policySet.getPolicySetOrPolicyOrPolicySetIdReference().isEmpty())
 			htmlOut.println("</ol>");
 		
 		htmlOut.println("<p></p>");
@@ -421,7 +421,7 @@
 		}
 		
 		if (policySet.getPolicySetOrPolicyOrPolicySetIdReference() != null &&
-			policySet.getPolicySetOrPolicyOrPolicySetIdReference().size() > 0) {
+			!policySet.getPolicySetOrPolicyOrPolicySetIdReference().isEmpty()) {
 			String algoDesc = combiningAlgo2human.get(combiningAlgorithm);
 			if (algoDesc != null) {
 				algoDesc = algoDesc.replace("$placeholder$", "policy") + " (" + "<i>" + combiningAlgorithm + "</i>)";
@@ -449,7 +449,7 @@
 		
 		policy(policy);
 		
-		if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0)
+		if (!policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().isEmpty())
 			htmlOut.println("<ol type=\"i\">");
 		
 		return super.onPreVisitPolicy(parent, policy);
@@ -464,7 +464,7 @@
 			LOGGER.trace("PolicySet: " + policy.getPolicyId() + 
 					     "Parent PolicySet: " + parent.getPolicySetId() + " Version: " + parent.getVersion());
 		
-		if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0)
+		if (!policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().isEmpty())
 			htmlOut.println("</ol>");
 		
 		htmlOut.println("<p></p>");
@@ -506,7 +506,7 @@
 		}
 		
 		if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition() != null &&
-			policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().size() > 0) {
+			!policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().isEmpty()) {
 			String algoDesc = combiningAlgo2human.get(combiningAlgorithm);
 			if (algoDesc != null) {
 				algoDesc = algoDesc.replace("$placeholder$", "rule") + " (<i>" + combiningAlgorithm + "</i>)";
@@ -710,7 +710,7 @@
 								//
 								StdAttribute attribute = null;
 								AttributeValueType value = match.getAttributeValue();
-								String attributeDataType = null;
+								String attributeDataType;
 								if (match.getAttributeDesignator() != null && value != null) {
 									AttributeDesignatorType designator = match.getAttributeDesignator();
 									attribute = new StdAttribute(new IdentifierImpl(designator.getCategory()),
@@ -822,11 +822,12 @@
 	}
 	
 	private String removePrimitives(String in) {
-		in = in.replace("string-", "");
-		in = in.replace("integer-", "");
-		in = in.replace("double-", "");
-		in = in.replace("boolean-", "");
-		return in;
+		String newIn = in;
+		newIn = newIn.replace("string-", "");
+		newIn = newIn.replace("integer-", "");
+		newIn = newIn.replace("double-", "");
+		newIn = newIn.replace("boolean-", "");
+		return newIn;
 	}
 	
 	private String stringifyCondition(ConditionType condition) {
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/conf/HibernateSession.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/conf/HibernateSession.java
index 353e08a..32f40b9 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/conf/HibernateSession.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/conf/HibernateSession.java
@@ -64,4 +64,6 @@
 		logSessionFactory = logSessionFactory1;
 	}
 
+	private HibernateSession(){
+	}
 }
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java
index fc7cb60..4dc4542 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateBRMSParamController.java
@@ -173,7 +173,7 @@
 					if (flag) {
 						params.append(line);
 					}
-					if (line.contains("declare Params")) {
+					if (line.contains("declare PapParams")) {
 						params.append(line);
 						flag = true;
 					}
@@ -181,7 +181,7 @@
 						break;
 					}
 				}
-				params = new StringBuilder(params.toString().replace("declare Params", "").replace("end", "").replaceAll("\\s+", ""));
+				params = new StringBuilder(params.toString().replace("declare PapParams", "").replace("end", "").replaceAll("\\s+", ""));
 				String[] components = params.toString().split(":");
 				String caption = "";
 				for (int i = 0; i < components.length; i++) {
@@ -400,7 +400,7 @@
 					if (flag) {
 						params.append(line);
 					}
-					if (line.contains("rule") && line.contains(".Params\"")) {
+					if (line.contains("rule") && line.contains(".PapParams\"")) {
 						params.append(line);
 						flag = true;
 					}
@@ -408,8 +408,8 @@
 						break;
 					}
 				}
-				params = new StringBuilder(params.substring(params.indexOf(".Params\"")+ 8));
-				params = new StringBuilder(params.toString().replaceAll("\\s+", "").replace("salience1000whenthenParamsparams=newParams();","")
+				params = new StringBuilder(params.substring(params.indexOf(".PapParams\"")+ 11));
+				params = new StringBuilder(params.toString().replaceAll("\\s+", "").replace("salience1000whenthenPapParamsparams=newPapParams();","")
                         .replace("insert(params);end", "")
                         .replace("params.set", ""));
 				String[] components = params.toString().split("\\);");
@@ -462,7 +462,7 @@
 					brmsTemplateVlaue + policyData.getRuleName() + "%$> \n */ \n";
 			body = body + findRule((String) policyData.getRuleName()) + "\n";
 			StringBuilder generatedRule = new StringBuilder();
-			generatedRule.append("rule \""+ policyData.getDomainDir().replace("\\", ".") +".Config_BRMS_Param_" + policyData.getPolicyName()+".Params\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tParams params = new Params();");
+			generatedRule.append("rule \""+ policyData.getDomainDir().replace("\\", ".") +".Config_BRMS_Param_" + policyData.getPolicyName()+".PapParams\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tPapParams params = new PapParams();");
 
 			if(policyData.getRuleData().size() > 0){ 
 				for(Object keyValue: policyData.getRuleData().keySet()){ 
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java
index f10041e..392adf0 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopPMController.java
@@ -98,24 +98,24 @@
 										String attributeId = designator.getAttributeId();
 
 										// First match in the target is OnapName, so set that value.
-										if (attributeId.equals("ONAPName")) {
+										if ("ONAPName".equals(attributeId)) {
 											policyAdapter.setOnapName(value);
 										}
-										if (attributeId.equals("RiskType")){
+										if ("RiskType".equals(attributeId)){
 											policyAdapter.setRiskType(value);
 										}
-										if (attributeId.equals("RiskLevel")){
+										if ("RiskLevel".equals(attributeId)){
 											policyAdapter.setRiskLevel(value);
 										}
-										if (attributeId.equals("guard")){
+										if ("guard".equals(attributeId)){
 											policyAdapter.setGuard(value);
 										}
-										if (attributeId.equals("TTLDate") && !value.contains("NA")){
+										if ("TTLDate".equals(attributeId) && !value.contains("NA")){
 											PolicyController controller = new PolicyController();
 											String newDate = controller.convertDate(value);
 											policyAdapter.setTtlDate(newDate);
 										}
-										if (attributeId.equals("ServiceType")){
+										if ("ServiceType".equals(attributeId)){
 											LinkedHashMap<String, String> serviceTypePolicyName1 = new LinkedHashMap<>();
 											String key = "serviceTypePolicyName";
 											serviceTypePolicyName1.put(key, value);
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateDcaeMicroServiceController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateDcaeMicroServiceController.java
index a1b3519..ff5ccff 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateDcaeMicroServiceController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateDcaeMicroServiceController.java
@@ -1540,6 +1540,14 @@
 	
 	@RequestMapping(value={"/ms_dictionary/set_MSModelData"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
 	public void SetMSModelData(HttpServletRequest request, HttpServletResponse response) throws IOException, FileUploadException{
+		modelList = new ArrayList<>();
+		dirDependencyList = new ArrayList<>();
+		classMap = new HashMap<>();
+		retmap = new HashMap<>();
+		uniqueKeys= new HashSet<>();
+		uniqueDataKeys= new HashSet<>();
+		dataListBuffer=new StringBuilder();
+		dataConstraints= new ArrayList <>();
 		List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
 		boolean zip = false;
 		boolean yml= false;
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateFirewallController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateFirewallController.java
index ed0bf4c..9832f58 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateFirewallController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateFirewallController.java
@@ -90,6 +90,14 @@
 	
 	private static CommonClassDao commonClassDao;
 
+	public static CommonClassDao getCommonClassDao() {
+		return commonClassDao;
+	}
+
+	public static void setCommonClassDao(CommonClassDao commonClassDao) {
+		CreateFirewallController.commonClassDao = commonClassDao;
+	}
+	
 	private List<String> tagCollectorList;
 	private String jsonBody;
 	List<String> expandablePrefixIPList = new ArrayList<>();
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java
index 625b2bd..71d0b3d 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java
@@ -60,7 +60,7 @@
 			policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName());
 			policyAdapter.setConfigType(entity.getConfigurationData().getConfigType());
 			policyAdapter.setConfigBodyData(entity.getConfigurationData().getConfigBody());
-			String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf(' ') + 1);
+			String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf('_') + 1);
 			policyAdapter.setPolicyName(policyNameValue);
 			String description = "";
 			try{
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyNotificationController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyNotificationController.java
index 21f3793..f987f90 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyNotificationController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/PolicyNotificationController.java
@@ -64,13 +64,13 @@
 		String responseValue = "";
 		try {
 			String userId = UserUtils.getUserSession(request).getOrgUserId();
-			System.out.println(userId);
+			logger.info("userid info: " + userId);
 			ObjectMapper mapper = new ObjectMapper();
 			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 			JsonNode root = mapper.readTree(request.getReader());
 			String name = root.get("watchData").get("name").toString();
 			JsonNode pathList = root.get("watchData").get("path");
-			String finalName = "";
+			String finalName;
 			if(pathList.isArray()){
 				ArrayNode arrayNode = (ArrayNode) pathList;
 				for (int i = 0; i < arrayNode.size(); i++) {
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/CommonClassDaoImpl.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/CommonClassDaoImpl.java
index 946f90a..c8ed3a0 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/CommonClassDaoImpl.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/CommonClassDaoImpl.java
@@ -268,7 +268,12 @@
 		try {
 			Query hbquery = session.createQuery(query);
 			for (Map.Entry<String, Object> paramPair : params.entrySet()) {
-				hbquery.setParameter(paramPair.getKey(), paramPair.getValue());
+				if(paramPair.getValue() instanceof java.lang.Long){
+					hbquery.setLong(paramPair.getKey(), (long) paramPair.getValue());
+				}
+				else{
+					hbquery.setParameter(paramPair.getKey(), paramPair.getValue());
+				}
 			}
 			data = hbquery.list();
 			tx.commit();
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/SystemLogDbDaoImpl.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/SystemLogDbDaoImpl.java
index 49024ba..c96da50 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/SystemLogDbDaoImpl.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/daoImp/SystemLogDbDaoImpl.java
@@ -43,16 +43,6 @@
 public class SystemLogDbDaoImpl implements SystemLogDbDao {
 	private static final Logger logger = FlexLogger.getLogger(SystemLogDbDaoImpl.class);
 	
-	private static boolean jUnit = false;
-	
-	public static boolean isjUnit() {
-		return jUnit;
-	}
-
-	public static void setjUnit(boolean jUnit) {
-		SystemLogDbDaoImpl.jUnit = jUnit;
-	}
-
 	@SuppressWarnings("unchecked")
 	@Override
 	public List<SystemLogDB> getLoggingData() {
@@ -61,7 +51,7 @@
 		List<SystemLogDB> system = null;
         try {
         	String sqlWhere = null;
-        	if(jUnit){
+        	if(PolicyController.isjUnit()){
         		sqlWhere = "";
         	}else{
         		sqlWhere = "date > DATE_SUB(curdate(), INTERVAL 5 DAY) ORDER BY date DESC limit "+PolicyController.getLogTableLimit()+"";
@@ -90,7 +80,7 @@
 		List<SystemLogDB> system = null;
         try {
         	String sqlWhere = null;
-        	if(jUnit){
+        	if(PolicyController.isjUnit()){
         		sqlWhere = "";
         	}else{
         		sqlWhere = "date > DATE_SUB(curdate(), INTERVAL 5 DAY) and logtype = 'error' ORDER BY date DESC limit "+PolicyController.getSystemAlertTableLimit()+"";
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/model/PDPGroupContainer.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/model/PDPGroupContainer.java
index 04ec3e8..3b3f119 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/model/PDPGroupContainer.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/model/PDPGroupContainer.java
@@ -365,7 +365,7 @@
 	@Override
 	public Object firstItemId() {
 		synchronized (this.groups) {
-			if (this.groups.size() > 0) {
+			if (!this.groups.isEmpty()) {
 				return this.groups.get(0);
 			}
 		}
@@ -375,7 +375,7 @@
 	@Override
 	public Object lastItemId() {
 		synchronized (this.groups) {
-			if (this.groups.size() > 0) {
+			if (!this.groups.isEmpty()) {
 				return this.groups.get(this.groups.size() - 1);
 			}
 		}
@@ -385,8 +385,8 @@
 	@Override
 	public boolean isFirstId(Object itemId) {
 		synchronized (this.groups) {
-			if (this.groups.size() > 0) {
-				return (this.groups.get(0).equals(itemId));
+			if (!this.groups.isEmpty()) {
+				return this.groups.get(0).equals(itemId);
 			}
 		}
 		return false;
@@ -395,8 +395,8 @@
 	@Override
 	public boolean isLastId(Object itemId) {
 		synchronized (this.groups) {
-			if (this.groups.size() > 0) {
-				return (this.groups.get(this.groups.size() - 1).equals(itemId));
+			if (!this.groups.isEmpty()) {
+				return this.groups.get(this.groups.size() - 1).equals(itemId);
 			}
 		}
 		return false;
@@ -444,7 +444,7 @@
 		//
 		// You cannot remove the default group
 		//
-		if (((OnapPDPGroup) itemId).getId().equals("Default")) {
+		if ("Default".equals(((OnapPDPGroup) itemId).getId())) {
 			throw new UnsupportedOperationException("You can't remove the Default Group.");
 		}
 		//
diff --git a/POLICY-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties b/POLICY-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
index 43b2de7..84c5dc5 100644
--- a/POLICY-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
+++ b/POLICY-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
@@ -23,8 +23,8 @@
 # The following properties MAY require changes by partner applications.
 ##########################################################################
 #Mysql
-db.driver = com.mysql.jdbc.Driver
-db.connectionURL = jdbc:mysql://localhost:3306/onapsdk1707
+db.driver = org.mariadb.jdbc.Driver
+db.connectionURL = jdbc:mariadb://localhost:3306/onapsdk1707
 db.userName = root
 db.password = 
 db.hib.dialect = org.hibernate.dialect.MySQLDialect
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/CLVarbindDictionary.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/CLVarbindDictionary.html
index 98570f3..2271992 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/CLVarbindDictionary.html
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/CLVarbindDictionary.html
@@ -45,7 +45,7 @@
 			</div>
            	<div class="form-group row">
             <div class="form-group col-sm-6" ng-class="{ 'has-error' : formdata.varbindOID.$invalid && !formdata.varbindOID.$pristine }">
-                <label>Varbind OID:</label><br>
+                <label>Varbind OID:<sup><b>*</b></sup></label><br>
                 <input type="text" ng-model="editCLVarbind.varbindOID" class="form-control" name= "varbindOID"  required/>
 				<p ng-show="formdata.varbindOID.$invalid && !formdata.varbindOID.$pristine" class="help-block">Varbind OID is required.</p>
             </div>
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/MSDCAEUUIDDictionary.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/MSDCAEUUIDDictionary.html
index fe7ad58..89e3aff 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/MSDCAEUUIDDictionary.html
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/Windows/Dictionary/MSDCAEUUIDDictionary.html
@@ -34,7 +34,7 @@
             <div class="form-group col-sm-6" ng-class="{ 'has-error' : formdata.name.$invalid && !formdata.name.$pristine }">
                 <label>UUID:<sup><b>*</b></sup></label><br>
                 <input type="text"  ng-model="editDCAEuuid.name" class="form-control" name= "name"  required/>
-				<p ng-show="formdata.name.$invalid && !formdata.name.$pristine" class="help-block">Onap Name is required.</p>
+				<p ng-show="formdata.name.$invalid && !formdata.name.$pristine" class="help-block">UUID field is required.</p>
             </div>
 			</div>
             <div class="form-group row">
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryGridController/CLVnfTypeDictGridController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryGridController/CLVnfTypeDictGridController.js
index 08d4662..90b77e4 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryGridController/CLVnfTypeDictGridController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/dictionaryGridController/CLVnfTypeDictGridController.js
@@ -140,7 +140,7 @@
 
     $scope.deleteVnfType = function(data) {
     	var uuu = "searchDictionary";
-    	var postData={data: data, type: "attribute"};
+    	var postData={data: data, type: "clVnf"};
     	var searchString = "\n";
     	$.ajax({
     		type : 'POST',
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/main/policyEditor.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/main/policyEditor.html
index 9721e1c..f5a5e86 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/main/policyEditor.html
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/main/policyEditor.html
@@ -220,10 +220,6 @@
 	<link rel="stylesheet" href="app/fusion/external/ds2/css/digital-ng-library/ionicons.css">	
 	<link rel="stylesheet" href="app/fusion/styles/ecomp.css">
 	<link rel="stylesheet" href="app/fusion/external/angular-gridster/dist/angular-gridster.min.css">
-	<script src= "app/policyApp/CSS/UIGrid/ui-grid.eot"></script>
-	<link rel="stylesheet" href="app/policyApp/CSS/UIGrid/ui-grid.svg">
-	<script src= "app/policyApp/CSS/UIGrid/ui-grid.woff"></script>
-	<script src= "app/policyApp/CSS/UIGrid/ui-grid.ttf"></script>
 	
 </head>
 	<body class="appBody" ng-app="abs" style="padding-top: 0px;">
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ActionPolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ActionPolicyController.js
index 2892936..a9097d5 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ActionPolicyController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ActionPolicyController.js
@@ -24,6 +24,12 @@
     $scope.savebutton = true;
     $scope.refreshCheck = false;
 	
+    if(!$scope.temp.policy.editPolicy  && !$scope.temp.policy.readOnly){
+    	$scope.temp.policy = {
+    			policyType : "Action"
+    	}
+    };
+    
     $scope.refresh = function(){
     	if($scope.refreshCheck){
     		$scope.policyNavigator.refresh();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BRMSParamPolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BRMSParamPolicyController.js
index 02c3148..22511c5 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BRMSParamPolicyController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BRMSParamPolicyController.js
@@ -24,6 +24,13 @@
     $scope.savebutton = true;
     $scope.refreshCheck = false;
     
+    if(!$scope.temp.policy.editPolicy  && !$scope.temp.policy.readOnly){
+    	$scope.temp.policy = {
+    			policyType : "Config",
+    			configPolicyType : "BRMS_Param"
+    	}
+    };
+    
     $scope.refresh = function(){
     	if($scope.refreshCheck){
     		$scope.policyNavigator.refresh();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BRMSRawPolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BRMSRawPolicyController.js
index 8f27f2a..6061b1e 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BRMSRawPolicyController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BRMSRawPolicyController.js
@@ -24,6 +24,13 @@
     $scope.savebutton = true;
     $scope.refreshCheck = false;
     
+    if(!$scope.temp.policy.editPolicy  && !$scope.temp.policy.readOnly){
+    	$scope.temp.policy = {
+    		policyType : "Config",
+    		configPolicyType : "BRMS_Raw"
+    	}
+    };
+    
     $scope.refresh = function(){
     	if($scope.refreshCheck){
     		$scope.policyNavigator.refresh();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BaseConfigPolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BaseConfigPolicyController.js
index 891e409..7425c92 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BaseConfigPolicyController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/BaseConfigPolicyController.js
@@ -25,6 +25,13 @@
     $scope.savebutton = true;
     $scope.refreshCheck = false;
     
+    if(!$scope.temp.policy.editPolicy  && !$scope.temp.policy.readOnly){
+    	$scope.temp.policy = {
+    		policyType : "Config",
+    		configPolicyType : "Base"
+    	}
+    };
+    
     $scope.refresh = function(){
     	if($scope.refreshCheck){
     		$scope.policyNavigator.refresh();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ClosedLoopFaultController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ClosedLoopFaultController.js
index b3f702f..1015e7a 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ClosedLoopFaultController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ClosedLoopFaultController.js
@@ -24,6 +24,13 @@
 	$scope.savebutton = true;
 	$scope.refreshCheck = false;
     
+	if(!$scope.temp.policy.editPolicy  && !$scope.temp.policy.readOnly){
+    	$scope.temp.policy = {
+    		policyType : "Config",
+    		configPolicyType : "ClosedLoop_Fault"
+    	}
+    };
+    
     $scope.refresh = function(){
     	if($scope.refreshCheck){
     		$scope.policyNavigator.refresh();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ClosedLoopPMController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ClosedLoopPMController.js
index caec13f..a672660 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ClosedLoopPMController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/ClosedLoopPMController.js
@@ -23,7 +23,14 @@
 	 $scope.policyNavigator;
 	 $scope.savebutton = true;
 	 $scope.refreshCheck = false;
-	    
+	
+	 if(!$scope.temp.policy.editPolicy  && !$scope.temp.policy.readOnly){
+		 $scope.temp.policy = {
+				 policyType : "Config",
+				 configPolicyType : "ClosedLoop_PM"
+		 }
+	 };
+	 
 	 $scope.refresh = function(){
 	   if($scope.refreshCheck){
 	    	$scope.policyNavigator.refresh();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DecisionPolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DecisionPolicyController.js
index fb10a2c..5b2bdb2 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DecisionPolicyController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/DecisionPolicyController.js
@@ -24,6 +24,12 @@
     $scope.savebutton = true;
     $scope.refreshCheck = false;
     
+    if(!$scope.temp.policy.editPolicy  && !$scope.temp.policy.readOnly){
+    	$scope.temp.policy = {
+    			policyType : "Decision"
+    	}
+    };
+    
     $scope.refresh = function(){
     	if($scope.refreshCheck){
     		$scope.policyNavigator.refresh();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/FirewallPolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/FirewallPolicyController.js
index 5988ef3..1051ecd 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/FirewallPolicyController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/FirewallPolicyController.js
@@ -24,6 +24,13 @@
     $scope.savebutton = true;
     $scope.refreshCheck = false;
     
+    if(!$scope.temp.policy.editPolicy  && !$scope.temp.policy.readOnly){
+    	$scope.temp.policy = {
+    			policyType : "Config",
+    			configPolicyType : "Firewall Config"
+    	}
+    };
+    
     $scope.refresh = function(){
     	if($scope.refreshCheck){
     		$scope.policyNavigator.refresh();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/js/entities/item.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/js/entities/item.js
index b96a4f7..0e095a8 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/js/entities/item.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/js/entities/item.js
@@ -26,7 +26,7 @@
                 path: path || [],
                 type: model && model.type || 'file',
                 size: model && parseInt(model.size || 0),
-                date: parseMySQLDate(model && model.date),
+                date: model && model.date,
                 version: model && model.version || '',
                 createdBy: model && model.createdBy || '',
                 modifiedBy: model && model.modifiedBy || '',
@@ -139,6 +139,11 @@
             self.inprocess = true;
             self.error = '';
             $http.post(policyManagerConfig.renameUrl, data).success(function(data) {
+            	if(data.result.error != undefined){
+            		var value = data.result.error;
+            		value = value.replace("rename" , "move");
+            		data.result.error = value;
+            	}
                 self.deferredHandler(data, deferred);
             }).error(function(data) {
                 self.deferredHandler(data, deferred, 'Error Occured While Moving');
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/templates/modals.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/templates/modals.html
index f7a6d24..7700600 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/templates/modals.html
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/templates/modals.html
@@ -1,4 +1,4 @@
-<div class="modal animated fadeIn" id="delete" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="delete" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
     <form ng-submit="remove(temp)">
@@ -21,7 +21,7 @@
   </div>
 </div>
 
-<div class="modal animated fadeIn" id="deletePolicy" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="deletePolicy" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
     <form ng-submit="removePolicy(temp)">
@@ -50,7 +50,7 @@
   </div>
 </div>
 
-<div class="modal animated fadeIn" id="rename" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="rename" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
         <form ng-submit="rename(temp)">
@@ -75,7 +75,7 @@
   </div>
 </div>
 
-<div class="modal animated fadeIn" id="searchWindow" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="searchWindow" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
         <form>
@@ -96,7 +96,7 @@
   </div>
 </div>
 
-<div class="modal animated fadeIn" id="move" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="move" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
         <form ng-submit="move(temp)">
@@ -119,7 +119,7 @@
   </div>
 </div>  
 
-<div class="modal animated fadeIn" id="switchVersion" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="switchVersion" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
         <form ng-submit="switchVersion(temp)">
@@ -147,7 +147,7 @@
   </div>
 </div>
 
-<div class="modal animated fadeIn" id="copy" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="copy" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
         <form ng-submit="copy(temp)">
@@ -160,9 +160,6 @@
             <div class="modal-body">
               <label class="radio">Enter new Policy Name to Clone <b>{{temp.model.name}}</b></label>
               <input class="form-control" ng-model="temp.tempModel.name" autofocus="autofocus">
-
-              <div ng-include data-src="'path-selector'" class="clearfix"></div>
-              <div ng-include data-src="'error-bar'" class="clearfix"></div>
             </div>
             <div class="modal-footer">
               <button type="button" class="btn btn-pedefault" data-dismiss="modal" ng-disabled="temp.inprocess">Cancel</button>
@@ -197,7 +194,7 @@
   </div>
 </div>
 
-<div class="modal animated fadeIn" id="addSubScope" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="addSubScope" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
         <form ng-submit="subScopeFolder(temp)">
@@ -221,7 +218,7 @@
   </div>
 </div>
 
-<div class="modal animated fadeIn" id="uploadfile" data-toggle="modal" data-backdrop="static" data-keyboard="false">
+<div class="modal" id="uploadfile" data-toggle="modal" data-backdrop="static" data-keyboard="false">
   <div class="modal-dialog">
     <div class="modal-content">
         <form ng-submit="uploadFiles()">
@@ -250,7 +247,7 @@
   </div>
 </div>
 
-<div class="modal animated fadeIn" id="selector" ng-controller="PolicyManagerModalCtrl">
+<div class="modal" id="selector" ng-controller="PolicyManagerModalCtrl">
   <div class="modal-dialog">
     <div class="modal-content">
       <div class="modal-header">
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java
new file mode 100644
index 0000000..47358a8
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/CheckPDPTest.java
@@ -0,0 +1,42 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 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=========================================================
+ */
+package org.onap.policy.admin;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+
+import org.junit.Test;
+
+public class CheckPDPTest {
+
+	@Test
+	public final void testCheckPDP() {
+		try {
+			System.setProperty("xacml.rest.pdp.idfile", new File(".").getCanonicalPath() + File.separator + "src"+ File.separator + "test" + File.separator + "resources" + File.separator + "test.properties");
+			CheckPDP.validateID("http://localhost:8082/pdp/");
+			assertTrue(CheckPDP.getPdpMap().containsKey("http://localhost:8082/pdp/"));
+			assertTrue(CheckPDP.getEncoding("http://localhost:8082/pdp/").equals("dGVzdHBkcDphbHBoYTQ1Ng=="));
+		} catch (Exception e) {
+			fail("Error occured in CheckPDP test");
+		}
+	}
+
+}
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyManagerServletTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyManagerServletTest.java
index 970b678..22cc82a 100644
--- a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyManagerServletTest.java
+++ b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyManagerServletTest.java
@@ -64,6 +64,7 @@
 	@Before
 	public void setUp() throws Exception{
 		logger.info("setUp: Entering");
+		PolicyController.setjUnit(true);
 		UserInfo userinfo = new UserInfo();
 		userinfo.setUserLoginId("Test");
 		userinfo.setUserName("Test");
@@ -146,7 +147,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class);  
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         BufferedReader reader = new BufferedReader(new StringReader("{params: { mode: 'DESCRIBEPOLICYFILE', path: 'com.Config_SampleTest1206.1.xml'}}"));
         try {
 			when(request.getReader()).thenReturn(reader);
@@ -168,7 +168,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'LIST', path: '/', onlyFolders: false}}");
         list.add("{params: { mode: 'LIST', path: '/com', onlyFolders: false}}");
@@ -197,7 +196,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_SampleTest1206.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -244,7 +242,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -291,7 +288,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_BRMS_Raw_TestBRMSRawPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -338,7 +334,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_Fault_TestClosedLoopPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -385,7 +380,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_PM_TestClosedLoopPMPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -439,7 +433,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_MS_vFirewall.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -487,7 +480,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Config_FW_TestFireWallPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -532,7 +524,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Action_TestActionPolicy.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
@@ -571,7 +562,6 @@
 		HttpServletRequest request = mock(HttpServletRequest.class);       
         HttpServletResponse response = mock(HttpServletResponse.class); 
         PolicyController controller = mock(PolicyController.class);
-        PolicyManagerServlet.setjUnit(true);
         List<String> list = new ArrayList<>();
         list.add("{params: { mode: 'EDITFILE', path: '/com/Decision_TestDecisionPolicyWithRuleAlgorithms.1.xml', onlyFolders: false}}");
         for(int i =0; i < list.size(); i++){
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyNotificationMailTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyNotificationMailTest.java
new file mode 100644
index 0000000..2c56a8b
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyNotificationMailTest.java
@@ -0,0 +1,94 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 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=========================================================
+ */
+package org.onap.policy.admin;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import static org.mockito.Mockito.when;
+import org.onap.policy.controller.PolicyController;
+import org.onap.policy.rest.dao.CommonClassDao;
+import org.onap.policy.rest.jpa.PolicyVersion;
+import org.onap.policy.rest.jpa.WatchPolicyNotificationTable;
+
+public class PolicyNotificationMailTest {
+
+	private PolicyVersion version;
+	private String policyName = "com/Config_Test";
+	private CommonClassDao commonClassDao;
+	private List<Object> data = null;
+	
+	@Before
+	public void setUp() throws Exception {
+		PolicyController.setjUnit(true);
+		PolicyController.setSmtpApplicationName("Test");
+		PolicyController.setSmtpEmailExtension("test.com");
+		PolicyController.setSmtpHost("test");
+		PolicyController.setSmtpPort("23");
+		PolicyController.setSmtpPassword("test");
+		PolicyController.setSmtpUsername("test");
+		
+		version = new PolicyVersion();
+		version.setPolicyName("com/Config_Test");
+		version.setModifiedBy("xyz");
+		
+		WatchPolicyNotificationTable watch = new WatchPolicyNotificationTable();
+		watch.setPolicyName("com/Config_Test");
+		data = new ArrayList<>();
+		data.add(watch);
+		
+		commonClassDao = mock(CommonClassDao.class);
+        PolicyController.setCommonClassDao(commonClassDao);
+        when(commonClassDao.getDataByQuery("from WatchPolicyNotificationTable where policyName like:policyFileName", null)).thenReturn(data);
+	}
+
+	@Test
+	public final void testJavaMailSenderImpl() {
+		PolicyNotificationMail notificationMail = new PolicyNotificationMail();
+		try{
+			assertTrue(notificationMail.javaMailSenderImpl() != null);
+		}catch(Exception e){
+			fail();
+		}
+	}
+
+	@Test
+	public final void testSendMail() {
+		PolicyNotificationMail notificationMail = new PolicyNotificationMail();
+		try{
+			notificationMail.sendMail(version, policyName, "EditPolicy", commonClassDao);
+			notificationMail.sendMail(version, policyName, "Rename", commonClassDao);
+			notificationMail.sendMail(version, policyName, "DeleteAll", commonClassDao);
+			notificationMail.sendMail(version, policyName, "DeleteOne", commonClassDao);
+			notificationMail.sendMail(version, policyName, "DeleteScope", commonClassDao);
+			notificationMail.sendMail(version, policyName, "SwitchVersion", commonClassDao);
+			notificationMail.sendMail(version, policyName, "Move", commonClassDao);
+		}catch(Exception e){
+			fail();
+		}
+	}
+
+}
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyRestControllerTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyRestControllerTest.java
new file mode 100644
index 0000000..1bda7cd
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyRestControllerTest.java
@@ -0,0 +1,232 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2017 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=========================================================
+ */
+package org.onap.policy.admin;
+
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.policy.controller.CreateFirewallController;
+import org.onap.policy.rest.dao.CommonClassDao;
+import org.onap.policy.rest.jpa.ActionList;
+import org.onap.policy.rest.jpa.AddressGroup;
+import org.onap.policy.rest.jpa.FWTagPicker;
+import org.onap.policy.rest.jpa.GroupServiceList;
+import org.onap.policy.rest.jpa.PrefixList;
+import org.onap.policy.rest.jpa.SecurityZone;
+import org.onap.policy.rest.jpa.ServiceList;
+import org.onap.policy.rest.jpa.TermList;
+import org.openecomp.portalsdk.core.domain.User;
+import org.openecomp.portalsdk.core.util.SystemProperties;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+public class PolicyRestControllerTest {
+
+	private String clRequestString;
+	private String fwRequestString;
+	private String fwViewRequestString;
+	private HttpServletRequest request;
+	private MockHttpServletResponse response;
+	private static CommonClassDao commonClassDao;
+	private List<Object> prefixListData;
+	private List<Object> actionListData;
+	private List<Object> serviceListData;
+	private List<Object> addressGroupData;
+	private List<Object> securityZoneData;
+	private List<Object> serviceGroupData;
+	private List<Object> tagListData;
+	private List<Object> termListData;
+	
+	@Before
+	public void setUp() throws Exception {
+		commonClassDao = mock(CommonClassDao.class);
+		HttpSession mockSession = mock(HttpSession.class);
+		request = mock(HttpServletRequest.class);  
+		response =  new MockHttpServletResponse();
+		User user = new User();
+		user.setOrgUserId("Test");
+		Mockito.when(mockSession.getAttribute(SystemProperties.getProperty("user_attribute_name"))).thenReturn(user);
+		Mockito.when(request.getSession(false)).thenReturn(mockSession);
+		clRequestString = "{\"policyData\":{\"error\":\"\",\"inprocess\":false,\"model\":{\"name\":\"com\","
+				+ "\"subScopename\":\"\",\"path\":[],\"type\":\"dir\",\"size\":0,\"date\":\"2017-06-01T15:45:36.000Z\","
+				+ "\"version\":\"\",\"createdBy\":\"Demo\",\"modifiedBy\":\"Demo\",\"content\":\"\",\"recursive\":false},"
+				+ "\"tempModel\":{\"name\":\"com\",\"subScopename\":\"\",\"path\":[],\"type\":\"dir\",\"size\":0,\"date\":\"2017-06-01T15:45:36.000Z\","
+				+ "\"version\":\"\",\"createdBy\":\"Demo\",\"modifiedBy\":\"Demo\",\"content\":\"\",\"recursive\":false},\"$$hashKey\":\"object:1439\","
+				+ "\"policy\":{\"policyType\":\"Config\",\"configPolicyType\":\"ClosedLoop_Fault\",\"triggerTrapSignatures\":[1,1,2,3],"
+				+ "\"triggerfaultSignatures\":[1,1,2,3],\"traptriggerSignatures\":[{\"id\":\"Trap1\",\"$$hashKey\":\"object:1526\"},"
+				+ "{\"id\":\"Trap2\",\"$$hashKey\":\"object:1534\"}],\"connecttriggerSignatures\":[{\"id\":\"C1\",\"$$hashKey\":\"object:1554\","
+				+ "\"notBox\":\"NOT\",\"connectTrap1\":\"Trap1\",\"trapCount1\":\"12\",\"operatorBox\":\"AND\",\"connectTrap2\":\"Trap2\","
+				+ "\"trapCount2\":\"14\"}],\"faulttriggerSignatures\":[{\"id\":\"Fault1\",\"$$hashKey\":\"object:1566\"},{\"id\":\"Fault2\","
+				+ "\"$$hashKey\":\"object:1575\"}],\"connectVerificationSignatures\":[{\"id\":\"C1\",\"$$hashKey\":\"object:1595\","
+				+ "\"notBox\":\"NOT\",\"connectTrap1\":\"Fault1\",\"trapCount1\":\"11\",\"operatorBox\":\"AND\",\"connectTrap2\":\"Fault2\","
+				+ "\"trapCount2\":\"12\"}],\"jsonBodyData\":{\"trapMaxAge\":\"300\",\"vnfType\":\"Test\",\"closedLoopPolicyStatus\":\"Active\","
+				+ "\"vUSP\":true,\"trinity\":true,\"vDNS\":true,\"mcr\":true,\"gamma\":true,\"actions\":\"Test\",\"timeInterval\":\"11\","
+				+ "\"timeOutvPRO\":\"11\",\"timeOutRuby\":\"11\",\"retrys\":\"1\",\"agingWindow\":\"12\",\"geoLink\":\"test\","
+				+ "\"emailAddress\":\"aa@test.com\",\"pepName\":\"Test\",\"pepAction\":\"test\",\"conditions\":\"SEND\"},"
+				+ "\"policyName\":\"SampleTest\",\"policyDescription\":\"SampleTest\",\"riskType\":\"SampleRiskType\",\"riskLevel\":\"1\","
+				+ "\"guard\":\"True\",\"onapName\":\"SampleDemo\",\"ttlDate\":\"14/09/2017\",\"clearTimeOut\":\"123\",\"trapMaxAge\":\"11\","
+				+ "\"verificationclearTimeOut\":\"13\"}},\"trapData\":{\"trap1\":[{\"id\":\"A1\",\"$$hashKey\":\"object:1528\","
+				+ "\"notBox\":\"NOT\",\"trigger1\":\"Test\",\"operatorBox\":\"AND\",\"trigger2\":\"Test\"}],\"trap2\":[{\"id\":\"A1\","
+				+ "\"$$hashKey\":\"object:1536\",\"notBox\":\"NOT\",\"trigger1\":\"Test\",\"operatorBox\":\"AND\",\"trigger2\":\"Test\"},"
+				+ "{\"id\":\"A2\",\"$$hashKey\":\"object:1542\",\"notBox\":\"NOT\",\"trigger1\":\"A1\",\"operatorBox\":\"AND\",\"trigger2\":"
+				+ "\"Test\"},{\"id\":\"A3\",\"$$hashKey\":\"object:1548\",\"notBox\":\"NOT\",\"trigger1\":\"A1\",\"operatorBox\":\"OR\","
+				+ "\"trigger2\":\"A2\"}]},\"faultData\":{\"trap1\":[{\"id\":\"A1\",\"$$hashKey\":\"object:1568\",\"notBox\":\"NOT\","
+				+ "\"trigger1\":\"Test\",\"operatorBox\":\"AND\",\"trigger2\":\"Test\"}],\"trap2\":[{\"id\":\"A1\",\"$$hashKey\":\"object:1577\","
+				+ "\"notBox\":\"NOT\",\"trigger1\":\"Test\",\"operatorBox\":\"AND\",\"trigger2\":\"Test\"},{\"id\":\"A2\",\"$$hashKey\":"
+				+ "\"object:1583\",\"notBox\":\"NOT\",\"trigger1\":\"Test\",\"operatorBox\":\"OR\",\"trigger2\":\"Test\"},{\"id\":\"A3"
+				+ "\",\"$$hashKey\":\"object:1589\",\"notBox\":\"NOT\",\"trigger1\":\"A1\",\"operatorBox\":\"AND\",\"trigger2\":\"A2\"}]}}";
+		
+		
+		fwRequestString = "{\"policyData\":{\"error\":\"\",\"inprocess\":false,\"model\":{\"name\":\"com\",\"subScopename\":\"\",\"path\":[],"
+				+ "\"type\":\"dir\",\"size\":0,\"date\":\"2017-06-01T15:45:36.000Z\",\"version\":\"\",\"createdBy\":\"Demo\",\"modifiedBy\":"
+				+ "\"Demo\",\"content\":\"\",\"recursive\":false},\"tempModel\":{\"name\":\"com\",\"subScopename\":\"\",\"path\":[],\"type\":"
+				+ "\"dir\",\"size\":0,\"date\":\"2017-06-01T15:45:36.000Z\",\"version\":\"\",\"createdBy\":\"Demo\",\"modifiedBy\":\"Demo\","
+				+ "\"content\":\"\",\"recursive\":false},\"$$hashKey\":\"object:260\",\"policy\":{\"policyType\":\"Config\",\"configPolicyType"
+				+ "\":\"Firewall Config\",\"attributes\":[{\"id\":\"choice1\",\"$$hashKey\":\"object:338\",\"key\":\"Test\",\"value\":\"Test\"}],"
+				+ "\"fwattributes\":[],\"policyName\":\"SampleTest\",\"policyDescription\":\"SampleTest\",\"riskType\":\"SampleRiskType\","
+				+ "\"riskLevel\":\"1\",\"guard\":\"True\",\"configName\":\"SampleTest\",\"ttlDate\":\"14/09/2017\",\"securityZone\":\"Test\"}}}";
+		
+		fwViewRequestString = "{\"policyData\":{\"policyType\":\"Config\",\"configPolicyType\":\"Firewall Config\",\"attributes\":[{\"id\":"
+				+ "\"choice1\",\"$$hashKey\":\"object:338\",\"key\":\"Test\",\"value\":\"Test\"}],\"fwattributes\":[],\"policyName\":"
+				+ "\"SampleTest\",\"policyDescription\":\"SampleTest\",\"riskType\":\"SampleRiskType\",\"riskLevel\":\"1\",\"guard\":\"True\","
+				+ "\"configName\":\"SampleTest\",\"ttlDate\":\"14/09/2017\",\"securityZone\":\"Test\"}}";
+
+
+
+		prefixListData = new ArrayList<>();
+		PrefixList prefixList = new PrefixList();
+		prefixList.setPrefixListName("Test");
+		prefixList.setPrefixListValue("10.10.10.10/12");
+		prefixListData.add(prefixList);
+		when(commonClassDao.getData(PrefixList.class)).thenReturn(prefixListData);
+		
+		actionListData = new ArrayList<>();
+		ActionList actionList = new ActionList();
+		actionList.setActionName("Test");
+		actionListData.add(actionList);
+		when(commonClassDao.getData(ActionList.class)).thenReturn(actionListData);
+			
+		serviceListData = new ArrayList<>();
+		ServiceList serviceList = new ServiceList();
+		serviceList.setServiceName("Test");
+		serviceList.setServiceType("SERVICE");
+		serviceList.setServiceTransProtocol("Test");
+		serviceList.setServiceAppProtocol("Test");
+		serviceList.setServicePorts("8080");
+		serviceListData.add(serviceList);
+		when(commonClassDao.getData(ServiceList.class)).thenReturn(serviceListData);
+		
+		addressGroupData = new ArrayList<>();
+		AddressGroup addressGroup = new AddressGroup();
+		addressGroup.setGroupName("Group_Test");
+		addressGroup.setServiceList("Test");
+		addressGroupData.add(addressGroup);
+		when(commonClassDao.getData(AddressGroup.class)).thenReturn(addressGroupData);
+		
+		securityZoneData = new ArrayList<>();
+		SecurityZone securityZone = new SecurityZone();
+		securityZone.setZoneName("Test");
+		securityZone.setZoneValue("Test");
+		securityZoneData.add(securityZone);
+		when(commonClassDao.getData(SecurityZone.class)).thenReturn(securityZoneData);
+		
+		serviceGroupData = new ArrayList<>();
+		GroupServiceList serviceGroup = new GroupServiceList();
+		serviceGroup.setGroupName("Group_Test");
+		serviceGroup.setServiceList("Test");
+		serviceGroupData.add(serviceGroup);
+		when(commonClassDao.getData(GroupServiceList.class)).thenReturn(serviceGroupData);
+		
+		tagListData = new ArrayList<>();
+		FWTagPicker fwPicker = new FWTagPicker();
+		fwPicker.setTagPickerName("Test");
+		fwPicker.setTagValues("Test:8080");
+		tagListData.add(fwPicker);
+		when(commonClassDao.getData(FWTagPicker.class)).thenReturn(tagListData);
+		
+		termListData = new ArrayList<>();
+		TermList termList = new TermList();
+		termList.setTermName("Test");
+		termList.setFromZones("Test");
+		termList.setToZones("Test");
+		termList.setSrcIPList("Test");
+		termList.setDestIPList("Test");
+		termList.setSrcPortList("Test");
+		termList.setDestPortList("Test");
+		termList.setAction("Test");
+		termListData.add(termList);
+		when(commonClassDao.getData(TermList.class)).thenReturn(termListData);
+		when(commonClassDao.getDataById(TermList.class, "termName", "Test")).thenReturn(termListData);
+	}
+
+	@Test
+	public final void testPolicyCreationController() {
+		PolicyRestController controller = new PolicyRestController();
+		BufferedReader reader = new BufferedReader(new StringReader(clRequestString));
+		try {
+			Mockito.when(request.getReader()).thenReturn(reader);
+			controller.policyCreationController(request, response);	
+		} catch (IOException e) {
+			fail();
+		}
+		PolicyRestController controller1 = new PolicyRestController();
+		CreateFirewallController.setCommonClassDao(commonClassDao);
+		BufferedReader reader1 = new BufferedReader(new StringReader(fwRequestString));
+		try {
+			Mockito.when(request.getReader()).thenReturn(reader1);
+			controller1.policyCreationController(request, response);	
+		} catch (IOException e) {
+			fail();
+		}
+		
+		CreateFirewallController fwController = new CreateFirewallController();
+		CreateFirewallController.setCommonClassDao(commonClassDao);
+		BufferedReader reader2 = new BufferedReader(new StringReader(fwViewRequestString));
+		try {
+			Mockito.when(request.getReader()).thenReturn(reader2);
+			fwController.setFWViewRule(request, response);	
+		} catch (IOException e) {
+			fail();
+		}
+	}
+
+	@Test
+	public final void testDeleteElasticData() {
+		PolicyRestController controller = new PolicyRestController();
+		try {
+			controller.deleteElasticData("Test");
+		} catch (Exception e) {
+			fail();
+		}
+	}
+
+}
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyUserInfoControllerTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyUserInfoControllerTest.java
index 4931d20..f4acaeb 100644
--- a/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyUserInfoControllerTest.java
+++ b/POLICY-SDK-APP/src/test/java/org/onap/policy/admin/PolicyUserInfoControllerTest.java
@@ -41,12 +41,12 @@
 	@Before
 	public void setUp() throws Exception {
 		HttpSession mockSession = mock(HttpSession.class);
-		 request = mock(HttpServletRequest.class);  
-		 response =  new MockHttpServletResponse();
-		 User user = new User();
-		 user.setOrgUserId("Test");
-		 Mockito.when(mockSession.getAttribute(SystemProperties.getProperty("user_attribute_name"))).thenReturn(user);
-		 Mockito.when(request.getSession(false)).thenReturn(mockSession);
+		request = mock(HttpServletRequest.class);  
+		response =  new MockHttpServletResponse();
+		User user = new User();
+		user.setOrgUserId("Test");
+		Mockito.when(mockSession.getAttribute(SystemProperties.getProperty("user_attribute_name"))).thenReturn(user);
+		Mockito.when(request.getSession(false)).thenReturn(mockSession);
 	}
 
 	@Test
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/daoImp/CommonClassDaoImplTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/daoImp/CommonClassDaoImplTest.java
index d4b0c65..63ca29d 100644
--- a/POLICY-SDK-APP/src/test/java/org/onap/policy/daoImp/CommonClassDaoImplTest.java
+++ b/POLICY-SDK-APP/src/test/java/org/onap/policy/daoImp/CommonClassDaoImplTest.java
@@ -20,9 +20,13 @@
 
 package org.onap.policy.daoImp;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Properties;
@@ -39,9 +43,9 @@
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.conf.HibernateSession;
 import org.onap.policy.controller.PolicyController;
-import org.onap.policy.daoImp.CommonClassDaoImpl;
 import org.onap.policy.rest.jpa.OnapName;
 import org.onap.policy.rest.jpa.PolicyEntity;
+import org.onap.policy.rest.jpa.PolicyRoles;
 import org.onap.policy.rest.jpa.PolicyVersion;
 import org.onap.policy.rest.jpa.SystemLogDB;
 import org.onap.policy.rest.jpa.UserInfo;
@@ -392,11 +396,49 @@
 			fail();
 		}
 	}
+	
+	@Test
+	public void testCommonClassDaoImplMethods(){
+		try{
+			UserInfo userInfo = new UserInfo();
+			userInfo.setUserLoginId("TestID");
+			userInfo.setUserName("Test");
+			commonClassDao.save(userInfo);
+			List<Object> data = commonClassDao.getDataById(UserInfo.class, "userLoginId:userName", "TestID:Test");
+			assertTrue(data.size() == 1);
+			UserInfo userInfoUpdate = (UserInfo) data.get(0);
+			userInfoUpdate.setUserName("Test1");
+			commonClassDao.update(userInfoUpdate);
+			List<String> data1 = commonClassDao.getDataByColumn(UserInfo.class, "userLoginId");
+			assertTrue(data1.size() == 1);
+			UserInfo data2 = (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId:userName", "TestID:Test1");
+			assertTrue("TestID".equals(data2.getUserLoginId()));
+			List<Object> data3 = commonClassDao.checkDuplicateEntry("TestID:Test1", "userLoginId:userName", UserInfo.class);
+			assertTrue(data3.size() == 1);
+			PolicyRoles roles = new PolicyRoles();
+			roles.setRole("admin");
+			roles.setLoginId(userInfo);
+			roles.setScope("test");
+			commonClassDao.save(roles);
+			List<PolicyRoles> roles1 = commonClassDao.getUserRoles();
+			assertTrue(roles1.size() == 1);
+			List<String> multipleData = new ArrayList<>();
+			multipleData.add("TestID:Test1");
+			List<Object> data4 = commonClassDao.getMultipleDataOnAddingConjunction(UserInfo.class, "userLoginId:userName", multipleData);
+			assertTrue(data4.size() == 1);
+			commonClassDao.delete(data2);
+		}catch(Exception e){
+			logger.debug("Exception Occured"+e);
+			fail();
+		}
+	}
+	
 
+	
 	@Test
 	public final void testGetLoggingData() {
 		SystemLogDbDaoImpl system = new SystemLogDbDaoImpl();
-		SystemLogDbDaoImpl.setjUnit(true);
+		PolicyController.setjUnit(true);
 		try{
 			assertTrue(system.getLoggingData() != null);
 		}catch(Exception e){
@@ -407,7 +449,7 @@
 	@Test
 	public final void testGetSystemAlertData() {
 		SystemLogDbDaoImpl system = new SystemLogDbDaoImpl();
-		SystemLogDbDaoImpl.setjUnit(true);
+		PolicyController.setjUnit(true);
 		try{
 			assertTrue(system.getSystemAlertData() != null);
 		}catch(Exception e){
diff --git a/POLICY-SDK-APP/src/test/resources/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt b/POLICY-SDK-APP/src/test/resources/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt
index 6ff244e..63f93cb 100644
--- a/POLICY-SDK-APP/src/test/resources/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt
+++ b/POLICY-SDK-APP/src/test/resources/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt
@@ -88,7 +88,7 @@
 //
 // These parameters are required to build the runtime policy
 //
-declare Params
+declare PapParams
     closedLoopControlName : String
     actor : String
     aaiURL : String
diff --git a/POLICY-SDK-APP/src/test/resources/com.Config_BRMS_Raw_TestBRMSRawPolicy.1.txt b/POLICY-SDK-APP/src/test/resources/com.Config_BRMS_Raw_TestBRMSRawPolicy.1.txt
index 6924fc3..a3cdb78 100644
--- a/POLICY-SDK-APP/src/test/resources/com.Config_BRMS_Raw_TestBRMSRawPolicy.1.txt
+++ b/POLICY-SDK-APP/src/test/resources/com.Config_BRMS_Raw_TestBRMSRawPolicy.1.txt
@@ -1,7 +1,7 @@
 package com.sample
 import com.sample.DroolsTest.Message;
 // Declare the Parameters here.
-declare Params
+declare PapParams
     samPoll : int
     value : String
 end
diff --git a/POLICY-SDK-APP/src/test/resources/test.properties b/POLICY-SDK-APP/src/test/resources/test.properties
new file mode 100644
index 0000000..e882dfd
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/resources/test.properties
@@ -0,0 +1,21 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP Policy Engine
+# ================================================================================
+# Copyright (C) 2017 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=========================================================
+###
+
+PDP_URL=http://localhost:8082/pdp/, testpdp, alpha456;http://localhost:8081/pdp/, testpdp, alpha456
diff --git a/POLICY-SDK-APP/src/test/resources/xacml.admin.properties b/POLICY-SDK-APP/src/test/resources/xacml.admin.properties
index 0f285b6..333da49 100644
--- a/POLICY-SDK-APP/src/test/resources/xacml.admin.properties
+++ b/POLICY-SDK-APP/src/test/resources/xacml.admin.properties
@@ -87,8 +87,8 @@
 
 xacml.att.log.timeframe=150
 
-javax.persistence.jdbc.driver=com.mysql.jdbc.Driver
-javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/onap_sdk
+javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
+javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
 javax.persistence.jdbc.user=policy_user
 javax.persistence.jdbc.password=policy_user
 
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java
index 2062638..ae9ba8a 100644
--- a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java
@@ -40,6 +40,7 @@
 	private String onapName;
 	private String configName;
 	private Map<AttributeType, Map<String,String>> attributes;
+	private Map<String, String> treatments;
 	private String configBody;
 	private PolicyType configBodyType;
 	private String actionPerformer;
@@ -568,6 +569,24 @@
 		this.extendedOption = extendedOption;
 	}
 	
+	/**
+     * Gets Allowed Treatments Map for Rainy Day Decision Policy
+     * 
+     * @return Map of String format for treatments per errorcode
+     */
+	public Map<String, String> getTreatments() {
+		return treatments;
+	}
+
+	/**
+	 * Sets Allowed Treatments Map for Rainy Day Decision Policy 
+	 * 
+	 * @param treatments Map that contains the treatment per errorcode 
+	 */
+	public void setTreatments(Map<String, String> treatments) {
+		this.treatments = treatments;
+	}
+	
 	@Override
 	public String toString() {
 		return "PolicyParameters [ policyName=" + policyName + ", policyDescription=" + policyDescription + ", onapName="+ onapName 
@@ -576,6 +595,6 @@
 				+ ",dynamicRuleAlgorithmField1=" + dynamicRuleAlgorithmField1 + ",dynamicRuleAlgorithmField2=" + dynamicRuleAlgorithmField2 
 				+ ", actionPerformer=" + actionPerformer + ", actionAttribute=" + actionAttribute + ", priority=" + priority  
 				+ ", ruleProvider= " + ruleProvider + ", riskLevel= " + riskLevel + ", riskType= " + riskType + ", extendedOption= " + extendedOption
-				+ "]";
+				+ ", treatments= " + treatments + "]";
 	}
 }
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java
index 94ad678..2e45549 100644
--- a/PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java
@@ -44,7 +44,11 @@
 	/**
 	 * Indicates Guard BLACKLIST YAML 
 	 */
-	GUARD_BL_YAML("GUARD_BL_YAML")
+	GUARD_BL_YAML("GUARD_BL_YAML"),
+	/**
+	 * Indicates Guard BLACKLIST YAML 
+	 */
+	RAINY_DAY("Rainy_Day")
 	;
 	
 	private String name;
diff --git a/PolicyEngineClient/testResources/test.drl b/PolicyEngineClient/testResources/test.drl
index 7accc63..10cd5b7 100644
--- a/PolicyEngineClient/testResources/test.drl
+++ b/PolicyEngineClient/testResources/test.drl
@@ -83,7 +83,7 @@
 //
 // These parameters are required to build the runtime policy
 //
-declare Params
+declare PapParams
     closedLoopControlName : String
     actor : String
     aaiURL : String
diff --git a/PolicyEngineUtils/pom.xml b/PolicyEngineUtils/pom.xml
index effaf5b..df846ee 100644
--- a/PolicyEngineUtils/pom.xml
+++ b/PolicyEngineUtils/pom.xml
@@ -102,6 +102,10 @@
 					<groupId>com.google.guava</groupId>
 					<artifactId>guava</artifactId>
 				</exclusion>
+				<exclusion>
+					<groupId>com.lowagie</groupId>
+    				<artifactId>itext</artifactId>
+				</exclusion>
 			</exclusions>
 		</dependency>
 		<dependency>
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/api/LoadedPolicy.java b/PolicyEngineUtils/src/main/java/org/onap/policy/api/LoadedPolicy.java
index 25636fb..862b654 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/api/LoadedPolicy.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/api/LoadedPolicy.java
@@ -21,37 +21,39 @@
 package org.onap.policy.api;
 
 import java.util.Map;
+
 /**
  * <code>LoadedPolicy</code> defines the Policy that has been Loaded into the PDP. 
- * 
- * @version 0.2 
+ *
+ * @version 0.2
  */
 public interface LoadedPolicy {
-	/**
-	 * Gets the <code>String</code> format of the Policy Name that has been Loaded into the PDP. 
-	 * 
-	 * @return <code>String</code> format of Policy Name
-	 */
-	public String getPolicyName();
-	
-	/**
-	 * Gets the <code>String</code> format of the Policy Version that has been Loaded into the PDP. 
-	 * 
-	 * @return <code>String</code> format of the Policy Version. 
-	 */
-	public String getVersionNo();
-	
-	/**
-	 * Gets the <code>Map</code> of <code>String,String</code> format of the Matches if the policy Loaded is of Config Type. 
-	 * 
-	 * @return the <code>Map</code> of <code>String,String</code> format of the matches in the policy. 
-	 */
-	public Map<String, String> getMatches();
-	
-	/**
-	 * Gets the <code>UpdateType</code> of {@link org.onap.policy.api.UpdateType} received.
-	 * 
-	 * @return <code>UpdateType</code> associated with this <code>PDPNotification</code>
-	 */
-	public UpdateType getUpdateType();
+
+    /**
+     * Gets the <code>String</code> format of the Policy Name that has been Loaded into the PDP.
+     *
+     * @return <code>String</code> format of Policy Name
+     */
+    String getPolicyName();
+
+    /**
+     * Gets the <code>String</code> format of the Policy Version that has been Loaded into the PDP.
+     *
+     * @return <code>String</code> format of the Policy Version.
+     */
+    String getVersionNo();
+
+    /**
+     * Gets the <code>Map</code> of <code>String,String</code> format of the Matches if the policy Loaded is of Config Type.
+     *
+     * @return the <code>Map</code> of <code>String,String</code> format of the matches in the policy.
+     */
+    Map<String, String> getMatches();
+
+    /**
+     * Gets the <code>UpdateType</code> of {@link org.onap.policy.api.UpdateType} received.
+     *
+     * @return <code>UpdateType</code> associated with this <code>PDPNotification</code>
+     */
+    UpdateType getUpdateType();
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationHandler.java b/PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationHandler.java
index 837eba9..78b79a0 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationHandler.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationHandler.java
@@ -19,17 +19,20 @@
  */
 
 package org.onap.policy.api;
+
 /**
  * Defines the methods which need to run when an Event or Notification is received.
- *  
+ *
  * @version 0.1
  */
 @FunctionalInterface
 public interface NotificationHandler {
-	/**
-	 * <code>notificationReceived</code> method will be triggered automatically whenever a Notification is received by the PEP.
-	 * 
-	 * @param notification <code>PDPNotification</code> of {@link org.onap.policy.api.PDPNotification} is the object that has information of the notification.
-	 */
-	public void notificationReceived(PDPNotification notification);
+
+    /**
+     * <code>notificationReceived</code> method will be triggered automatically whenever a Notification is received by the PEP.
+     *
+     * @param notification <code>PDPNotification</code> of {@link org.onap.policy.api.PDPNotification}
+     * is the object that has information of the notification.
+     */
+    void notificationReceived(PDPNotification notification);
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationType.java b/PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationType.java
index 730ad02..8b65a42 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationType.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/api/NotificationType.java
@@ -23,36 +23,35 @@
 /**
  * Enumeration of the Update Type that has occurred in the <code>PDPNotification</code> of 
  * {@link org.onap.policy.api.PDPNotification}
- * 
+ *
  * @version 0.1
  */
 public enum NotificationType {
-	/**
-	 * Indicates that a policy has been updated
-	 */
-	UPDATE("update"),
-	/**
-	 * Indicates that a policy has been removed
-	 */
-	REMOVE("remove"),
-	/**
-	 * Indicates that both update and removal of policy events has occurred.
-	 */
-	BOTH("both")
-	;
-	
-	private String name;
-	
-	private NotificationType(String name){
-		this.name = name;
-	}
-	
-	/**
-	 * Returns the <code>String</code> format of the Type for this <code>UpdateType</code>
-	 * @return the <code>String</code> Type of <code>UpdateType</code>
-	 */
-	@Override
-	public String toString(){
-		return this.name;
-	}
+    /**
+     * Indicates that a policy has been updated
+     */
+    UPDATE("update"),
+    /**
+     * Indicates that a policy has been removed
+     */
+    REMOVE("remove"),
+    /**
+     * Indicates that both update and removal of policy events has occurred.
+     */
+    BOTH("both");
+
+    private String name;
+
+    NotificationType(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Returns the <code>String</code> format of the Type for this <code>UpdateType</code>
+     * @return the <code>String</code> Type of <code>UpdateType</code>
+     */
+    @Override
+    public String toString() {
+        return this.name;
+    }
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/api/PDPNotification.java b/PolicyEngineUtils/src/main/java/org/onap/policy/api/PDPNotification.java
index a88ec06..9ab5082 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/api/PDPNotification.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/api/PDPNotification.java
@@ -24,29 +24,29 @@
 
 /**
  * Defines the <code>Notification</code> event sent from PDP to Client PEP.  
- * 
+ *
  * @version 0.2
  */
 public interface PDPNotification {
-	/**
-	 * Gets the <code>Collection</code> of {@link org.onap.policy.api.RemovedPolicy} objects received. 
-	 * 
-	 * @return the <code>Collection</code> which consists of <code>RemovedPolicy</code> objects.
-	 */
-	public Collection<RemovedPolicy> getRemovedPolicies();
-	
-	/**
-	 * Gets the <code>Collection</code> of {@link org.onap.policy.api.LoadedPolicy} objects receieved.
-	 *
-	 * @return the <code>Collection</code> which consists of <code>UpdatedPolicy</code> objects.
-	 */
-	public Collection<LoadedPolicy> getLoadedPolicies();
-	
-	/**
-	 * Gets the <code>NotificationType</code> of {@link org.onap.policy.api.NotificationType} received.
-	 * 
-	 * @return <code>NotificationType</code> associated with this <code>PDPNotification</code>
-	 */
-	public NotificationType getNotificationType();
-	
+
+    /**
+     * Gets the <code>Collection</code> of {@link org.onap.policy.api.RemovedPolicy} objects received.
+     *
+     * @return the <code>Collection</code> which consists of <code>RemovedPolicy</code> objects.
+     */
+    Collection<RemovedPolicy> getRemovedPolicies();
+
+    /**
+     * Gets the <code>Collection</code> of {@link org.onap.policy.api.LoadedPolicy} objects receieved.
+     *
+     * @return the <code>Collection</code> which consists of <code>UpdatedPolicy</code> objects.
+     */
+    Collection<LoadedPolicy> getLoadedPolicies();
+
+    /**
+     * Gets the <code>NotificationType</code> of {@link org.onap.policy.api.NotificationType} received.
+     *
+     * @return <code>NotificationType</code> associated with this <code>PDPNotification</code>
+     */
+    NotificationType getNotificationType();
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/api/RemovedPolicy.java b/PolicyEngineUtils/src/main/java/org/onap/policy/api/RemovedPolicy.java
index f26c149..e8125a1 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/api/RemovedPolicy.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/api/RemovedPolicy.java
@@ -19,23 +19,25 @@
  */
 
 package org.onap.policy.api;
+
 /**
  * <code>RemovedPolicy</code> defines the Policy that has been removed 
- * 
+ *
  * @version 0.1
  */
 public interface RemovedPolicy {
-	/**
-	 * Gets the <code>String</code> format of the Policy Name that has been removed.
-	 * 
-	 * @return <code>String</code> format of Policy Name
-	 */
-	public String getPolicyName();
-	
-	/**
-	 * Gets the <code>String</code> format of the Policy Version that has been removed.
-	 * 
-	 * @return <code>String</code> format of Policy Version
-	 */
-	public String getVersionNo();
+
+    /**
+     * Gets the <code>String</code> format of the Policy Name that has been removed.
+     *
+     * @return <code>String</code> format of Policy Name
+     */
+    String getPolicyName();
+
+    /**
+     * Gets the <code>String</code> format of the Policy Version that has been removed.
+     *
+     * @return <code>String</code> format of Policy Version
+     */
+    String getVersionNo();
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/api/UpdateType.java b/PolicyEngineUtils/src/main/java/org/onap/policy/api/UpdateType.java
index deeecdd..7f401fe 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/api/UpdateType.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/api/UpdateType.java
@@ -23,32 +23,31 @@
 /**
  * Enumeration of the Update Type that has occurred in the <code>UpdatedPolicy</code> of 
  * {@link org.onap.policy.api.LoadedPolicy}
- * 
+ *
  * @version 0.1
  */
 public enum UpdateType {
-	/**
-	 * Indicates that a policy has been updated
-	 */
-	UPDATE("update"),
-	/**
-	 * Indicates that a policy is new
-	 */
-	NEW("new")
-	;
-	
-	private String name;
-	
-	private UpdateType(String name){
-		this.name = name;
-	}
-	
-	/**
-	 * Returns the <code>String</code> format of the Type for this <code>UpdateType</code>
-	 * @return the <code>String</code> Type of <code>UpdateType</code>
-	 */
-	@Override
-	public String toString(){
-		return this.name;
-	}
+    /**
+     * Indicates that a policy has been updated
+     */
+    UPDATE("update"),
+    /**
+     * Indicates that a policy is new
+     */
+    NEW("new");
+
+    private String name;
+
+    UpdateType(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Returns the <code>String</code> format of the Type for this <code>UpdateType</code>
+     * @return the <code>String</code> Type of <code>UpdateType</code>
+     */
+    @Override
+    public String toString() {
+        return this.name;
+    }
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/jpa/BackUpMonitorEntity.java b/PolicyEngineUtils/src/main/java/org/onap/policy/jpa/BackUpMonitorEntity.java
index f2e7f3f..1bfffce 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/jpa/BackUpMonitorEntity.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/jpa/BackUpMonitorEntity.java
@@ -22,7 +22,6 @@
 
 import java.io.Serializable;
 import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -38,80 +37,81 @@
 
 
 @Entity
-@Table(name="BackUpMonitorEntity")
-@NamedQuery(name="BackUpMonitorEntity.findAll", query= "SELECT b FROM BackUpMonitorEntity b ")
-public class BackUpMonitorEntity implements Serializable{
-	private static final long serialVersionUID = -9190606334322230630L;
-	
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-	
-	@Column(name="node_name", nullable=false)
-	private String resourceNodeName;
-	
-	@Column(name="resource_name", nullable=false, unique=true)
-	private String resourceName;
-	
-	@Column(name="flag", nullable=false)
-	private String flag;
-	
-	@Lob
-	@Column(name="notification_record")
-	private String notificationRecord;
-	
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="last_seen")
-	private Date timeStamp;
-	
-	@PrePersist
-	public void prePersist(){
-		this.timeStamp = new Date();
-	}
-	
-	@PreUpdate
-	public void preUpdate(){
-		this.timeStamp = new Date();
-	}
-	
-	public String getResourceName(){
-		return this.resourceName;
-	}
-	
-	public String getResourceNodeName(){
-		return this.resourceNodeName;
-	}
-	
-	public String getFlag(){
-		return this.flag;
-	}
-	
-	public String getNotificationRecord(){
-		return this.notificationRecord;
-	}
-	
-	public Date getTimeStamp(){
-		return this.timeStamp;
-	}
-	
-	public void setResourceName(String resourceName){
-		this.resourceName = resourceName;
-	}
-	
-	public void setResoruceNodeName(String resourceNodeName){
-		this.resourceNodeName = resourceNodeName;
-	}
-	
-	public void setFlag(String flag){
-		this.flag = flag;
-	}
-	
-	public void setNotificationRecord(String notificationRecord){
-		this.notificationRecord = notificationRecord;
-	}
-	
-	public void setTimeStamp(Date timeStamp){
-		this.timeStamp = timeStamp;
-	}
+@Table(name = "BackUpMonitorEntity")
+@NamedQuery(name = "BackUpMonitorEntity.findAll", query = "SELECT b FROM BackUpMonitorEntity b ")
+public class BackUpMonitorEntity implements Serializable {
+
+    private static final long serialVersionUID = -9190606334322230630L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    @Column(name = "id")
+    private int id;
+
+    @Column(name = "node_name", nullable = false)
+    private String resourceNodeName;
+
+    @Column(name = "resource_name", nullable = false, unique = true)
+    private String resourceName;
+
+    @Column(name = "flag", nullable = false)
+    private String flag;
+
+    @Lob
+    @Column(name = "notification_record")
+    private String notificationRecord;
+
+    @Temporal(TemporalType.TIMESTAMP)
+    @Column(name = "last_seen")
+    private Date timeStamp;
+
+    @PrePersist
+    public void prePersist() {
+        this.timeStamp = new Date();
+    }
+
+    @PreUpdate
+    public void preUpdate() {
+        this.timeStamp = new Date();
+    }
+
+    public String getResourceName() {
+        return this.resourceName;
+    }
+
+    public String getResourceNodeName() {
+        return this.resourceNodeName;
+    }
+
+    public String getFlag() {
+        return this.flag;
+    }
+
+    public String getNotificationRecord() {
+        return this.notificationRecord;
+    }
+
+    public Date getTimeStamp() {
+        return this.timeStamp;
+    }
+
+    public void setResourceName(String resourceName) {
+        this.resourceName = resourceName;
+    }
+
+    public void setResourceNodeName(String resourceNodeName) {
+        this.resourceNodeName = resourceNodeName;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+
+    public void setNotificationRecord(String notificationRecord) {
+        this.notificationRecord = notificationRecord;
+    }
+
+    public void setTimeStamp(Date timeStamp) {
+        this.timeStamp = timeStamp;
+    }
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/std/NotificationStore.java b/PolicyEngineUtils/src/main/java/org/onap/policy/std/NotificationStore.java
index 259a70d..8c6c958 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/std/NotificationStore.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/std/NotificationStore.java
@@ -24,7 +24,6 @@
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
-
 import org.onap.policy.api.LoadedPolicy;
 import org.onap.policy.api.NotificationType;
 import org.onap.policy.api.PDPNotification;
@@ -38,229 +37,221 @@
  * 
  */
 public class NotificationStore {
-	private static StdPDPNotification notificationRecord = new StdPDPNotification();
-	
-	public static StdPDPNotification getDeltaNotification(StdPDPNotification newNotification){
-		StdPDPNotification notificationDelta = new StdPDPNotification();
-		ArrayList<StdRemovedPolicy> removedDelta = new ArrayList<>();
-		ArrayList<StdLoadedPolicy> updatedDelta = new ArrayList<>();
-		Collection<StdLoadedPolicy> newUpdatedPolicies = new ArrayList<>();
-		Collection<StdRemovedPolicy> newRemovedPolicies = new ArrayList<>();
-		Collection<LoadedPolicy> oldUpdatedLostPolicies = notificationRecord.getLoadedPolicies();
-		Collection<RemovedPolicy> oldRemovedPolicies = notificationRecord.getRemovedPolicies();
-		Collection<LoadedPolicy> oldUpdatedPolicies = notificationRecord.getLoadedPolicies();
-		Boolean update = false;
-		Boolean remove = false;
-		// if the NotificationRecord is empty
-		if(notificationRecord.getRemovedPolicies()==null || notificationRecord.getLoadedPolicies()==null){
-			if(newNotification!=null){
-				notificationRecord = newNotification;
-			}
-			return notificationDelta;
-		}
-		// do the Delta operation. 
-		if(newNotification!=null){
-			// check for old removed policies.
-			if(!newNotification.getRemovedPolicies().isEmpty()){
-				for(RemovedPolicy newRemovedPolicy: newNotification.getRemovedPolicies()){
-					//Look for policy Not in Remove
-					Boolean removed = true;
-					for(RemovedPolicy oldRemovedPolicy: notificationRecord.getRemovedPolicies()){
-						if(newRemovedPolicy.getPolicyName().equals(oldRemovedPolicy.getPolicyName())){
-							if(newRemovedPolicy.getVersionNo().equals(oldRemovedPolicy.getVersionNo())){
-								removed = false;
-								// Don't want a duplicate. 
-								oldRemovedPolicies.remove(oldRemovedPolicy);
-							}
-						}
-					}
-					//We need to change our record we have an Update record of this remove.  
-					for(LoadedPolicy oldUpdatedPolicy: notificationRecord.getLoadedPolicies()){
-						if(newRemovedPolicy.getPolicyName().equals(oldUpdatedPolicy.getPolicyName())){
-							if(newRemovedPolicy.getVersionNo().equals(oldUpdatedPolicy.getVersionNo())){
-								oldUpdatedPolicies.remove(oldUpdatedPolicy);
-								oldUpdatedLostPolicies.remove(oldUpdatedPolicy);
-							}
-						}
-					}
-					if(removed){
-						remove = true;
-						notificationRecord.getRemovedPolicies().add(newRemovedPolicy);
-						removedDelta.add((StdRemovedPolicy)newRemovedPolicy);
-					}
-					// This will be converted to New Later. 
-					oldRemovedPolicies.add(newRemovedPolicy);
-				}
-			}
-			// Check for old Updated Policies. 
-			if(!newNotification.getLoadedPolicies().isEmpty()){
-				for(LoadedPolicy newUpdatedPolicy: newNotification.getLoadedPolicies()){
-					// Look for policies which are not in Update
-					Boolean updated = true;
-					for(LoadedPolicy oldUpdatedPolicy: notificationRecord.getLoadedPolicies()){
-						if(newUpdatedPolicy.getPolicyName().equals(oldUpdatedPolicy.getPolicyName())){
-							if(newUpdatedPolicy.getVersionNo().equals(oldUpdatedPolicy.getVersionNo())){
-								updated = false;
-								// Remove the policy from copy. 
-								oldUpdatedLostPolicies.remove(oldUpdatedPolicy);
-								// Eliminating Duplicate. 
-								oldUpdatedPolicies.remove(oldUpdatedPolicy);
-							}
-						}
-					}
-					// Change the record if the policy has been Removed earlier. 
-					for(RemovedPolicy oldRemovedPolicy: notificationRecord.getRemovedPolicies()){
-						if(oldRemovedPolicy.getPolicyName().equals(newUpdatedPolicy.getPolicyName())){
-							if(oldRemovedPolicy.getVersionNo().equals(newUpdatedPolicy.getVersionNo())){
-								oldRemovedPolicies.remove(oldRemovedPolicy);
-							}
-						}
-					}
-					if(updated){
-						update = true;
-						updatedDelta.add((StdLoadedPolicy)newUpdatedPolicy);
-					}
-					// This will be converted to new Later
-					oldUpdatedPolicies.add(newUpdatedPolicy);
-				}
-				// Conversion of Update to Remove if that occurred.
-				if(!oldUpdatedLostPolicies.isEmpty()){
-					for(LoadedPolicy updatedPolicy: oldUpdatedLostPolicies){
-						StdRemovedPolicy removedPolicy = new StdRemovedPolicy();
-						removedPolicy.setPolicyName(updatedPolicy.getPolicyName());
-						removedPolicy.setVersionNo(updatedPolicy.getVersionNo());
-						removedDelta.add(removedPolicy);
-						remove = true;
-					}
-				}
-			}
-			// Update our Record. 
-			if(!oldUpdatedPolicies.isEmpty()){
-				for(LoadedPolicy updatedPolicy: oldUpdatedPolicies){
-					newUpdatedPolicies.add((StdLoadedPolicy)updatedPolicy);
-				}
-			}
-			if(!oldRemovedPolicies.isEmpty()){
-				for(RemovedPolicy removedPolicy: oldRemovedPolicies){
-					newRemovedPolicies.add((StdRemovedPolicy)removedPolicy);
-				}
-			}
-			notificationRecord.setRemovedPolicies(newRemovedPolicies);
-			notificationRecord.setLoadedPolicies(newUpdatedPolicies);
-			// Update the notification Result. 
-			notificationDelta.setRemovedPolicies(removedDelta);
-			notificationDelta.setLoadedPolicies(updatedDelta);
-			if(remove&&update){
-				notificationDelta.setNotificationType(NotificationType.BOTH);
-			}else if(remove){
-				notificationDelta.setNotificationType(NotificationType.REMOVE);
-			}else if(update){
-				notificationDelta.setNotificationType(NotificationType.UPDATE);
-			}
-		}
-		return notificationDelta;
-	}
-	
-	public static void recordNotification(StdPDPNotification notification){
-		if(notification!=null){
-			if(notificationRecord.getRemovedPolicies()==null || notificationRecord.getLoadedPolicies()==null){
-				notificationRecord = notification;
-			}else{
-				// Check if there is anything new and update the record. 
-				if(notificationRecord.getLoadedPolicies()!=null || notificationRecord.getRemovedPolicies()!=null){
-					HashSet<StdRemovedPolicy> removedPolicies = new HashSet<>();
-					for(RemovedPolicy rPolicy: notificationRecord.getRemovedPolicies()){
-						StdRemovedPolicy sRPolicy = new StdRemovedPolicy();
-						sRPolicy.setPolicyName(rPolicy.getPolicyName());
-						sRPolicy.setVersionNo(rPolicy.getVersionNo());
-						removedPolicies.add(sRPolicy);
-					}
-					HashSet<StdLoadedPolicy> updatedPolicies = new HashSet<>();
-					for(LoadedPolicy uPolicy: notificationRecord.getLoadedPolicies()){
-						StdLoadedPolicy sUPolicy = new StdLoadedPolicy();
-						sUPolicy.setMatches(uPolicy.getMatches());
-						sUPolicy.setPolicyName(uPolicy.getPolicyName());
-						sUPolicy.setVersionNo(uPolicy.getVersionNo());
-						sUPolicy.setUpdateType(uPolicy.getUpdateType());
-						updatedPolicies.add(sUPolicy);
-					}
-					
-					// Checking with the new updated policies.
-					if(notification.getLoadedPolicies()!=null && !notification.getLoadedPolicies().isEmpty()){
-						for(LoadedPolicy newUpdatedPolicy: notification.getLoadedPolicies()){
-							// If it was removed earlier then we need to remove from our record
-							Iterator<StdRemovedPolicy> oldRemovedPolicy = removedPolicies.iterator();
-							while(oldRemovedPolicy.hasNext()){
-								RemovedPolicy policy = oldRemovedPolicy.next(); 
-								if(newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) {
-									if(newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) {
-										oldRemovedPolicy.remove();
-									}
-								}
-							}
-							// If it was previously updated need to Overwrite it to the record. 
-							Iterator<StdLoadedPolicy> oldUpdatedPolicy = updatedPolicies.iterator();
-							while(oldUpdatedPolicy.hasNext()){
-								LoadedPolicy policy = oldUpdatedPolicy.next();
-								if(newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) {
-									if(newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) {
-										oldUpdatedPolicy.remove();
-									}
-								}
-							}
-							StdLoadedPolicy sUPolicy = new StdLoadedPolicy();
-							sUPolicy.setMatches(newUpdatedPolicy.getMatches());
-							sUPolicy.setPolicyName(newUpdatedPolicy.getPolicyName());
-							sUPolicy.setVersionNo(newUpdatedPolicy.getVersionNo());
-							sUPolicy.setUpdateType(newUpdatedPolicy.getUpdateType());
-							updatedPolicies.add(sUPolicy);
-						}
-					}
-					// Checking with New Removed Policies.
-					if(notification.getRemovedPolicies()!=null && !notification.getRemovedPolicies().isEmpty()){
-						for(RemovedPolicy newRemovedPolicy : notification.getRemovedPolicies()){
-							// If it was previously removed Overwrite it to the record. 
-							Iterator<StdRemovedPolicy> oldRemovedPolicy = removedPolicies.iterator();
-							while(oldRemovedPolicy.hasNext()){
-								RemovedPolicy policy = oldRemovedPolicy.next(); 
-								if(newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) {
-									if(newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) {
-										oldRemovedPolicy.remove();
-									}
-								}
-							}
-							// If it was added earlier then we need to remove from our record. 
-							Iterator<StdLoadedPolicy> oldUpdatedPolicy = updatedPolicies.iterator();
-							while(oldUpdatedPolicy.hasNext()){
-								LoadedPolicy policy = oldUpdatedPolicy.next();
-								if(newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) {
-									if(newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) {
-										oldUpdatedPolicy.remove();
-									}
-								}
-							}
-							StdRemovedPolicy sRPolicy = new StdRemovedPolicy();
-							sRPolicy.setPolicyName(newRemovedPolicy.getPolicyName());
-							sRPolicy.setVersionNo(newRemovedPolicy.getVersionNo());
-							removedPolicies.add(sRPolicy);
-						}
-					}
-					notificationRecord.setRemovedPolicies(removedPolicies);
-					notificationRecord.setLoadedPolicies(updatedPolicies);
-				}
-				if(!notificationRecord.getLoadedPolicies().isEmpty() && !notificationRecord.getRemovedPolicies().isEmpty()){
-					notificationRecord.setNotificationType(NotificationType.BOTH);
-				}else if(!notificationRecord.getLoadedPolicies().isEmpty()){
-					notificationRecord.setNotificationType(NotificationType.UPDATE);
-				}else if(!notificationRecord.getRemovedPolicies().isEmpty()){
-					notificationRecord.setNotificationType(NotificationType.REMOVE);
-				}
-			}
-		}
-	}
-	
-	// This should return the current Notification Record. 
-	public static PDPNotification getNotificationRecord(){
-		return notificationRecord;
-	}
+
+    private static StdPDPNotification notificationRecord = new StdPDPNotification();
+
+    public static StdPDPNotification getDeltaNotification(StdPDPNotification newNotification) {
+        StdPDPNotification notificationDelta = new StdPDPNotification();
+        ArrayList<StdRemovedPolicy> removedDelta = new ArrayList<>();
+        ArrayList<StdLoadedPolicy> updatedDelta = new ArrayList<>();
+        Collection<StdLoadedPolicy> newUpdatedPolicies = new ArrayList<>();
+        Collection<StdRemovedPolicy> newRemovedPolicies = new ArrayList<>();
+        Collection<LoadedPolicy> oldUpdatedLostPolicies = notificationRecord.getLoadedPolicies();
+        Collection<RemovedPolicy> oldRemovedPolicies = notificationRecord.getRemovedPolicies();
+        Collection<LoadedPolicy> oldUpdatedPolicies = notificationRecord.getLoadedPolicies();
+        Boolean update = false;
+        Boolean remove = false;
+        // if the NotificationRecord is empty
+        if (notificationRecord.getRemovedPolicies() == null || notificationRecord.getLoadedPolicies() == null) {
+            if (newNotification != null) {
+                notificationRecord = newNotification;
+            }
+            return notificationDelta;
+        }
+        // do the Delta operation.
+        if (newNotification != null) {
+            // check for old removed policies.
+            if (!newNotification.getRemovedPolicies().isEmpty()) {
+                for (RemovedPolicy newRemovedPolicy : newNotification.getRemovedPolicies()) {
+                    //Look for policy Not in Remove
+                    Boolean removed = true;
+                    String policyName = newRemovedPolicy.getPolicyName();
+                    String ver = newRemovedPolicy.getVersionNo();
+                    for (RemovedPolicy oldRemovedPolicy : notificationRecord.getRemovedPolicies()) {
+                        if (policyName.equals(oldRemovedPolicy.getPolicyName())
+                            && ver.equals(oldRemovedPolicy.getVersionNo())) {
+                            removed = false;
+                            // Don't want a duplicate.
+                            oldRemovedPolicies.remove(oldRemovedPolicy);
+                        }
+                    }
+                    //We need to change our record we have an Update record of this remove.
+                    for (LoadedPolicy oldUpdatedPolicy : notificationRecord.getLoadedPolicies()) {
+                        if (policyName.equals(oldUpdatedPolicy.getPolicyName())
+                            && ver.equals(oldUpdatedPolicy.getVersionNo())) {
+                            oldUpdatedPolicies.remove(oldUpdatedPolicy);
+                            oldUpdatedLostPolicies.remove(oldUpdatedPolicy);
+                        }
+                    }
+                    if (removed) {
+                        remove = true;
+                        notificationRecord.getRemovedPolicies().add(newRemovedPolicy);
+                        removedDelta.add((StdRemovedPolicy) newRemovedPolicy);
+                    }
+                    // This will be converted to New Later.
+                    oldRemovedPolicies.add(newRemovedPolicy);
+                }
+            }
+            // Check for old Updated Policies.
+            if (!newNotification.getLoadedPolicies().isEmpty()) {
+                for (LoadedPolicy newUpdatedPolicy : newNotification.getLoadedPolicies()) {
+                    // Look for policies which are not in Update
+                    Boolean updated = true;
+                    String policyName = newUpdatedPolicy.getPolicyName();
+                    String ver = newUpdatedPolicy.getVersionNo();
+                    for (LoadedPolicy oldUpdatedPolicy : notificationRecord.getLoadedPolicies()) {
+                        if (policyName.equals(oldUpdatedPolicy.getPolicyName())
+                            && ver.equals(oldUpdatedPolicy.getVersionNo())) {
+                            updated = false;
+                            // Remove the policy from copy.
+                            oldUpdatedLostPolicies.remove(oldUpdatedPolicy);
+                            // Eliminating Duplicate.
+                            oldUpdatedPolicies.remove(oldUpdatedPolicy);
+                        }
+                    }
+                    // Change the record if the policy has been Removed earlier.
+                    for (RemovedPolicy oldRemovedPolicy : notificationRecord.getRemovedPolicies()) {
+                        if (oldRemovedPolicy.getPolicyName().equals(policyName)
+                            && oldRemovedPolicy.getVersionNo().equals(ver)) {
+                            oldRemovedPolicies.remove(oldRemovedPolicy);
+                        }
+                    }
+                    if (updated) {
+                        update = true;
+                        updatedDelta.add((StdLoadedPolicy) newUpdatedPolicy);
+                    }
+                    // This will be converted to new Later
+                    oldUpdatedPolicies.add(newUpdatedPolicy);
+                }
+                // Conversion of Update to Remove if that occurred.
+                if (!oldUpdatedLostPolicies.isEmpty()) {
+                    for (LoadedPolicy updatedPolicy : oldUpdatedLostPolicies) {
+                        StdRemovedPolicy removedPolicy = new StdRemovedPolicy();
+                        removedPolicy.setPolicyName(updatedPolicy.getPolicyName());
+                        removedPolicy.setVersionNo(updatedPolicy.getVersionNo());
+                        removedDelta.add(removedPolicy);
+                        remove = true;
+                    }
+                }
+            }
+            // Update our Record.
+            if (!oldUpdatedPolicies.isEmpty()) {
+                for (LoadedPolicy updatedPolicy : oldUpdatedPolicies) {
+                    newUpdatedPolicies.add((StdLoadedPolicy) updatedPolicy);
+                }
+            }
+            if (!oldRemovedPolicies.isEmpty()) {
+                for (RemovedPolicy removedPolicy : oldRemovedPolicies) {
+                    newRemovedPolicies.add((StdRemovedPolicy) removedPolicy);
+                }
+            }
+            notificationRecord.setRemovedPolicies(newRemovedPolicies);
+            notificationRecord.setLoadedPolicies(newUpdatedPolicies);
+            // Update the notification Result.
+            notificationDelta.setRemovedPolicies(removedDelta);
+            notificationDelta.setLoadedPolicies(updatedDelta);
+            if (remove && update) {
+                notificationDelta.setNotificationType(NotificationType.BOTH);
+            } else if (remove) {
+                notificationDelta.setNotificationType(NotificationType.REMOVE);
+            } else if (update) {
+                notificationDelta.setNotificationType(NotificationType.UPDATE);
+            }
+        }
+        return notificationDelta;
+    }
+
+    public static void recordNotification(StdPDPNotification notification) {
+        if (notification != null) {
+            if (notificationRecord.getRemovedPolicies() == null || notificationRecord.getLoadedPolicies() == null) {
+                notificationRecord = notification;
+            } else {
+                // Check if there is anything new and update the record.
+                if (notificationRecord.getLoadedPolicies() != null || notificationRecord.getRemovedPolicies() != null) {
+                    HashSet<StdRemovedPolicy> removedPolicies = new HashSet<>();
+                    for (RemovedPolicy rPolicy : notificationRecord.getRemovedPolicies()) {
+                        StdRemovedPolicy sRPolicy = new StdRemovedPolicy();
+                        sRPolicy.setPolicyName(rPolicy.getPolicyName());
+                        sRPolicy.setVersionNo(rPolicy.getVersionNo());
+                        removedPolicies.add(sRPolicy);
+                    }
+                    HashSet<StdLoadedPolicy> updatedPolicies = new HashSet<>();
+                    for (LoadedPolicy uPolicy : notificationRecord.getLoadedPolicies()) {
+                        StdLoadedPolicy sUPolicy = new StdLoadedPolicy();
+                        sUPolicy.setMatches(uPolicy.getMatches());
+                        sUPolicy.setPolicyName(uPolicy.getPolicyName());
+                        sUPolicy.setVersionNo(uPolicy.getVersionNo());
+                        sUPolicy.setUpdateType(uPolicy.getUpdateType());
+                        updatedPolicies.add(sUPolicy);
+                    }
+
+                    // Checking with the new updated policies.
+                    if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) {
+                        for (LoadedPolicy newUpdatedPolicy : notification.getLoadedPolicies()) {
+                            // If it was removed earlier then we need to remove from our record
+                            Iterator<StdRemovedPolicy> oldRemovedPolicy = removedPolicies.iterator();
+                            String policyName = newUpdatedPolicy.getPolicyName();
+                            String ver = newUpdatedPolicy.getVersionNo();
+                            while (oldRemovedPolicy.hasNext()) {
+                                RemovedPolicy policy = oldRemovedPolicy.next();
+                                if (policyName.equals(policy.getPolicyName())
+                                    && ver.equals(policy.getVersionNo())) {
+                                    oldRemovedPolicy.remove();
+                                }
+                            }
+                            // If it was previously updated need to Overwrite it to the record.
+                            updatedPolicies.removeIf(policy -> policyName.equals(policy.getPolicyName())
+                                && ver.equals(policy.getVersionNo()));
+
+                            StdLoadedPolicy sUPolicy = new StdLoadedPolicy();
+                            sUPolicy.setMatches(newUpdatedPolicy.getMatches());
+                            sUPolicy.setPolicyName(newUpdatedPolicy.getPolicyName());
+                            sUPolicy.setVersionNo(newUpdatedPolicy.getVersionNo());
+                            sUPolicy.setUpdateType(newUpdatedPolicy.getUpdateType());
+                            updatedPolicies.add(sUPolicy);
+                        }
+                    }
+                    // Checking with New Removed Policies.
+                    if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) {
+                        for (RemovedPolicy newRemovedPolicy : notification.getRemovedPolicies()) {
+                            // If it was previously removed Overwrite it to the record.
+                            Iterator<StdRemovedPolicy> oldRemovedPolicy = removedPolicies.iterator();
+                            String policyName = newRemovedPolicy.getPolicyName();
+                            String ver = newRemovedPolicy.getVersionNo();
+                            while (oldRemovedPolicy.hasNext()) {
+                                RemovedPolicy policy = oldRemovedPolicy.next();
+                                if (policyName.equals(policy.getPolicyName())
+                                    && ver.equals(policy.getVersionNo())) {
+                                    oldRemovedPolicy.remove();
+                                }
+                            }
+                            // If it was added earlier then we need to remove from our record.
+                            updatedPolicies.removeIf(policy -> policyName.equals(policy.getPolicyName())
+                                && ver.equals(policy.getVersionNo()));
+
+                            StdRemovedPolicy sRPolicy = new StdRemovedPolicy();
+                            sRPolicy.setPolicyName(policyName);
+                            sRPolicy.setVersionNo(ver);
+                            removedPolicies.add(sRPolicy);
+                        }
+                    }
+                    notificationRecord.setRemovedPolicies(removedPolicies);
+                    notificationRecord.setLoadedPolicies(updatedPolicies);
+                }
+                if (!notificationRecord.getLoadedPolicies().isEmpty() && !notificationRecord.getRemovedPolicies()
+                    .isEmpty()) {
+                    notificationRecord.setNotificationType(NotificationType.BOTH);
+                } else if (!notificationRecord.getLoadedPolicies().isEmpty()) {
+                    notificationRecord.setNotificationType(NotificationType.UPDATE);
+                } else if (!notificationRecord.getRemovedPolicies().isEmpty()) {
+                    notificationRecord.setNotificationType(NotificationType.REMOVE);
+                }
+            }
+        }
+    }
+
+    // This should return the current Notification Record.
+    public static PDPNotification getNotificationRecord() {
+        return notificationRecord;
+    }
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdPDPNotification.java b/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdPDPNotification.java
index fe78071..1640fe8 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdPDPNotification.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/std/StdPDPNotification.java
@@ -22,59 +22,53 @@
 
 import java.util.Collection;
 import java.util.HashSet;
-
 import org.onap.policy.api.LoadedPolicy;
 import org.onap.policy.api.NotificationType;
 import org.onap.policy.api.PDPNotification;
 import org.onap.policy.api.RemovedPolicy;
 
-public class StdPDPNotification implements PDPNotification{
-	private Collection<StdRemovedPolicy> removedPolicies = null;
-	private Collection<StdLoadedPolicy> loadedPolicies = null;
-	private Collection<RemovedPolicy> removed = null;
-	private Collection<LoadedPolicy> updated = null;
-	private NotificationType notificationType= null;
-	
-	@Override
-	public Collection<RemovedPolicy> getRemovedPolicies() {
-		removed = new HashSet<RemovedPolicy>();
-		if(removedPolicies!=null){
-			for(RemovedPolicy removedPolicy: removedPolicies){
-				removed.add(removedPolicy);
-			}
-			return this.removed;
-		}else{
-			return null;
-		}
-	}
+public class StdPDPNotification implements PDPNotification {
 
-	@Override
-	public Collection<LoadedPolicy> getLoadedPolicies() {
-		updated = new HashSet<LoadedPolicy>();
-		if(loadedPolicies!=null){
-			for(LoadedPolicy updatedPolicy: loadedPolicies){
-				updated.add(updatedPolicy);
-			}
-			return updated;
-		}else{
-			return null;
-		}
-	}
+    private Collection<StdRemovedPolicy> removedPolicies = null;
+    private Collection<StdLoadedPolicy> loadedPolicies = null;
+    private Collection<RemovedPolicy> removed = null;
+    private Collection<LoadedPolicy> updated = null;
+    private NotificationType notificationType = null;
 
-	@Override
-	public NotificationType getNotificationType() {
-		return notificationType;
-	}
+    @Override
+    public Collection<RemovedPolicy> getRemovedPolicies() {
+        removed = new HashSet<>();
+        if (removedPolicies != null) {
+            removed.addAll(removedPolicies);
+            return this.removed;
+        }
+        return null;
+    }
 
-	public void setNotificationType(NotificationType notificationType){
-		this.notificationType= notificationType;
-	}
-	
-	public void setLoadedPolicies(Collection<StdLoadedPolicy> loadedPolicies) {
-		this.loadedPolicies = loadedPolicies;
-	}
-	
-	public void setRemovedPolicies(Collection<StdRemovedPolicy> removedPolicies) {
-		this.removedPolicies = removedPolicies;
-	}
+    @Override
+    public Collection<LoadedPolicy> getLoadedPolicies() {
+        updated = new HashSet<>();
+        if (loadedPolicies != null) {
+            updated.addAll(loadedPolicies);
+            return updated;
+        }
+        return null;
+    }
+
+    @Override
+    public NotificationType getNotificationType() {
+        return notificationType;
+    }
+
+    public void setNotificationType(NotificationType notificationType) {
+        this.notificationType = notificationType;
+    }
+
+    public void setLoadedPolicies(Collection<StdLoadedPolicy> loadedPolicies) {
+        this.loadedPolicies = loadedPolicies;
+    }
+
+    public void setRemovedPolicies(Collection<StdRemovedPolicy> removedPolicies) {
+        this.removedPolicies = removedPolicies;
+    }
 }
diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java
index 3cdb515..9aab2ad 100644
--- a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java
+++ b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BackUpMonitor.java
@@ -248,7 +248,7 @@
                 // This is New. create an entry as Master.
                 LOGGER.info("Adding resource " + resourceName + " to Database");
                 BackUpMonitorEntity bMEntity = new BackUpMonitorEntity();
-                bMEntity.setResoruceNodeName(resourceNodeName);
+                bMEntity.setResourceNodeName(resourceNodeName);
                 bMEntity.setResourceName(resourceName);
                 bMEntity = setMaster(bMEntity);
                 bMEntity.setTimeStamp(new Date());
@@ -297,7 +297,7 @@
                 } else {
                     // Resource name is null -> No resource with same name.
                     selfEntity = new BackUpMonitorEntity();
-                    selfEntity.setResoruceNodeName(resourceNodeName);
+                    selfEntity.setResourceNodeName(resourceNodeName);
                     selfEntity.setResourceName(resourceName);
                     selfEntity.setTimeStamp(new Date());
                     selfEntity = setSlave(selfEntity);
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PolicyUtilsTest.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PolicyUtilsTest.java
index 586ab35..34ed6b8 100644
--- a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PolicyUtilsTest.java
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/PolicyUtilsTest.java
@@ -148,7 +148,7 @@
 	public void testBRMSValidate(){
 	    String rule = "package com.sample;\n"
 	            + "import com.sample.DroolsTest.Message;\n"
-	            + "declare Params\n"
+	            + "declare PapParams\n"
 	            + "samPoll : int\n"
 	            + "value : String\n"
 	            + "end\n"
diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java
index afc3d0d..39434a7 100644
--- a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java
+++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/testBackUpMonitor.java
@@ -61,8 +61,8 @@
 	@Test (expected = PersistenceException.class)
 	public void backUpMonitorTestFail() throws Exception{
 		Properties properties = new Properties();
-		properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
-		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+		properties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
+		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
 		properties.setProperty("javax.persistence.jdbc.user", "policy_user");
 		properties.setProperty("javax.persistence.jdbc.password", "");
 		BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
@@ -71,8 +71,8 @@
 	@Test
 	public void backUpMonitorTestFailNoUser() throws Exception{
 		Properties properties = new Properties();
-		properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
-		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+		properties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
+		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
 		properties.setProperty("javax.persistence.jdbc.user", "");
 		properties.setProperty("javax.persistence.jdbc.password", "password");
 		BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), "brms_test" , properties, new Handler());
@@ -82,7 +82,7 @@
 	@Test
 	public void backUpMonitorTestFailNoURL() throws Exception{
 		Properties properties = new Properties();
-		properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
+		properties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
 		properties.setProperty("javax.persistence.jdbc.url", "");
 		properties.setProperty("javax.persistence.jdbc.user", "test");
 		properties.setProperty("javax.persistence.jdbc.password", "password");
@@ -95,7 +95,7 @@
 	public void backUpMonitorTestFailNoDriver() throws Exception{
 		Properties properties = new Properties();
 		properties.setProperty("javax.persistence.jdbc.driver", "");
-		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
 		properties.setProperty("javax.persistence.jdbc.user", "test");
 		properties.setProperty("javax.persistence.jdbc.password", "password");
 		properties.setProperty("ping_interval", "500");
@@ -106,8 +106,8 @@
 	@Test
 	public void backUpMonitorTestFailNoNode() throws Exception{
 		Properties properties = new Properties();
-		properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
-		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+		properties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
+		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
 		properties.setProperty("javax.persistence.jdbc.user", "test");
 		properties.setProperty("javax.persistence.jdbc.password", "password");
 		properties.setProperty("ping_interval", "");
@@ -118,8 +118,8 @@
 	@Test
 	public void backUpMonitorTestFailNoResource() throws Exception{
 		Properties properties = new Properties();
-		properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
-		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+		properties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
+		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
 		properties.setProperty("javax.persistence.jdbc.user", "test");
 		properties.setProperty("javax.persistence.jdbc.password", "password");
 		BackUpMonitor bum = BackUpMonitor.getInstance(BackUpMonitor.ResourceNode.BRMS.toString(), null , properties, new Handler());
@@ -135,8 +135,8 @@
 	@Test
 	public void backUpMonitorTestFailNoHandler() throws Exception{
 		Properties properties = new Properties();
-		properties.setProperty("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
-		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/xacml");
+		properties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver");
+		properties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/onap_sdk");
 		properties.setProperty("javax.persistence.jdbc.user", "test");
 		properties.setProperty("javax.persistence.jdbc.password", "password");
 		properties.setProperty("ping_interval", "500");
@@ -252,7 +252,7 @@
 	    origBM.setFlag("SLAVE");
 	    origBM.setTimeStamp(new Date());
 	    BackUpMonitorEntity bMEntity = new BackUpMonitorEntity();
-        bMEntity.setResoruceNodeName(ResourceNode.BRMS.toString());
+        bMEntity.setResourceNodeName(ResourceNode.BRMS.toString());
         bMEntity.setResourceName("brms_test2");
         bMEntity.setFlag("MASTER");
         bMEntity.setTimeStamp(new Date());        
diff --git a/docs/index.rst b/docs/index.rst
index 4df15fc..f3d2bdb 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -4,6 +4,7 @@
 -------------
 
 .. toctree::
-   :maxdepth: 1
+   :maxdepth: 2
 
-
+   platform/index
+   release-notes/index
diff --git a/docs/platform/PolicyArchitectureDetails.png b/docs/platform/PolicyArchitectureDetails.png
new file mode 100755
index 0000000..3970546
--- /dev/null
+++ b/docs/platform/PolicyArchitectureDetails.png
Binary files differ
diff --git a/docs/platform/PolicyEngineApiList.png b/docs/platform/PolicyEngineApiList.png
new file mode 100755
index 0000000..deb38b9
--- /dev/null
+++ b/docs/platform/PolicyEngineApiList.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Access.png b/docs/platform/PolicyGUI_Access.png
new file mode 100755
index 0000000..781ce91
--- /dev/null
+++ b/docs/platform/PolicyGUI_Access.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Admin.png b/docs/platform/PolicyGUI_Admin.png
new file mode 100755
index 0000000..0465a07
--- /dev/null
+++ b/docs/platform/PolicyGUI_Admin.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Dashboard.png b/docs/platform/PolicyGUI_Dashboard.png
new file mode 100755
index 0000000..ece03ba
--- /dev/null
+++ b/docs/platform/PolicyGUI_Dashboard.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Dictionary.png b/docs/platform/PolicyGUI_Dictionary.png
new file mode 100755
index 0000000..53a604f
--- /dev/null
+++ b/docs/platform/PolicyGUI_Dictionary.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Editor.png b/docs/platform/PolicyGUI_Editor.png
new file mode 100755
index 0000000..ce57974
--- /dev/null
+++ b/docs/platform/PolicyGUI_Editor.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Editor_CreatePolicy.png b/docs/platform/PolicyGUI_Editor_CreatePolicy.png
new file mode 100755
index 0000000..f09bb90
--- /dev/null
+++ b/docs/platform/PolicyGUI_Editor_CreatePolicy.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Editor_PolicyActions.png b/docs/platform/PolicyGUI_Editor_PolicyActions.png
new file mode 100755
index 0000000..7b376f3
--- /dev/null
+++ b/docs/platform/PolicyGUI_Editor_PolicyActions.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Editor_PolicyActionsDetail.png b/docs/platform/PolicyGUI_Editor_PolicyActionsDetail.png
new file mode 100755
index 0000000..4cfbbba
--- /dev/null
+++ b/docs/platform/PolicyGUI_Editor_PolicyActionsDetail.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Editor_Scope.png b/docs/platform/PolicyGUI_Editor_Scope.png
new file mode 100755
index 0000000..09de966
--- /dev/null
+++ b/docs/platform/PolicyGUI_Editor_Scope.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_PDP.png b/docs/platform/PolicyGUI_PDP.png
new file mode 100755
index 0000000..af575d2
--- /dev/null
+++ b/docs/platform/PolicyGUI_PDP.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Push.png b/docs/platform/PolicyGUI_Push.png
new file mode 100755
index 0000000..ccf092a
--- /dev/null
+++ b/docs/platform/PolicyGUI_Push.png
Binary files differ
diff --git a/docs/platform/PolicyGUI_Roles.png b/docs/platform/PolicyGUI_Roles.png
new file mode 100755
index 0000000..d1ef99c
--- /dev/null
+++ b/docs/platform/PolicyGUI_Roles.png
Binary files differ
diff --git a/docs/platform/PolicyR1Architecture.png b/docs/platform/PolicyR1Architecture.png
new file mode 100755
index 0000000..def3d2a
--- /dev/null
+++ b/docs/platform/PolicyR1Architecture.png
Binary files differ
diff --git a/docs/platform/PolicyTargetArchitecture.png b/docs/platform/PolicyTargetArchitecture.png
new file mode 100755
index 0000000..74e05da
--- /dev/null
+++ b/docs/platform/PolicyTargetArchitecture.png
Binary files differ
diff --git a/docs/platform/api-docs.json b/docs/platform/api-docs.json
new file mode 100755
index 0000000..55726b2
--- /dev/null
+++ b/docs/platform/api-docs.json
@@ -0,0 +1 @@
+{"swagger":"2.0","info":{"description":"This API helps to make queries against Policy Engine","version":"3.0","title":"Policy Engine REST API"},"host":"104.239.197.207:8081","basePath":"/pdp/api","tags":[{"name":"policy-engine-services","description":"Policy Engine Services"}],"paths":{"/createConfig":{"put":{"tags":["policy-engine-services"],"summary":"Creates a Config Policy based on given Policy Parameters.","operationId":"createConfigUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"configPolicyAPIRequest","description":"configPolicyAPIRequest","required":true,"schema":{"$ref":"#/definitions/ConfigPolicyAPIRequest"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":true}},"/createDictionaryItem":{"put":{"tags":["policy-engine-services"],"summary":"Creates a Dictionary Item for a specific dictionary based on given Parameters.","operationId":"createDictionaryItemUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"dictionaryParameters","description":"dictionaryParameters","required":true,"schema":{"$ref":"#/definitions/DictionaryParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/createFirewallConfig":{"put":{"tags":["policy-engine-services"],"summary":"Creates a Config Firewall Policy","operationId":"createFirewallConfigUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"configFirewallPolicyAPIRequest","description":"configFirewallPolicyAPIRequest","required":true,"schema":{"$ref":"#/definitions/ConfigFirewallPolicyAPIRequest"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":true}},"/createPolicy":{"put":{"tags":["policy-engine-services"],"summary":"Creates a Policy based on given Policy Parameters.","operationId":"createPolicyUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"policyParameters","description":"policyParameters","required":true,"schema":{"$ref":"#/definitions/PolicyParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/deletePolicy":{"delete":{"tags":["policy-engine-services"],"summary":"Deletes the specified policy from the PDP Group or PAP.","operationId":"deletePolicyUsingDELETE","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"deletePolicyParameters","description":"deletePolicyParameters","required":true,"schema":{"$ref":"#/definitions/DeletePolicyParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"},"204":{"description":"No Content"},"403":{"description":"Forbidden"}}}},"/getConfig":{"post":{"tags":["policy-engine-services"],"summary":"Gets the configuration from the PolicyDecisionPoint(PDP)","operationId":"getConfigUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"configRequestParameters","description":"configRequestParameters","required":true,"schema":{"$ref":"#/definitions/ConfigRequestParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Collection«PolicyConfig»"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/getConfigByPolicyName":{"post":{"tags":["policy-engine-services"],"summary":"Gets the configuration from the PolicyDecisionPoint(PDP) using PolicyName","operationId":"getConfigByPolicyNameUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"configNameRequest","description":"configNameRequest","required":true,"schema":{"$ref":"#/definitions/ConfigNameRequest"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Collection«PolicyConfig»"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":true}},"/getDecision":{"post":{"tags":["policy-engine-services"],"summary":"Gets the Decision using specified decision parameters","operationId":"getDecisionUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"decisionRequestParameters","description":"decisionRequestParameters","required":true,"schema":{"$ref":"#/definitions/DecisionRequestParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/DecisionResponse"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/getDictionaryItems":{"post":{"tags":["policy-engine-services"],"summary":"Gets the dictionary items from the PAP","operationId":"getDictionaryItemsUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"dictionaryParameters","description":"dictionaryParameters","required":true,"schema":{"$ref":"#/definitions/DictionaryParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/DictionaryResponse"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/getMetrics":{"get":{"tags":["policy-engine-services"],"summary":"Gets the policy metrics from the PolicyAccessPoint(PAP)","operationId":"getMetricsUsingGET","consumes":["application/json"],"produces":["*/*"],"parameters":[{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/MetricsResponse"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/getNotification":{"post":{"tags":["policy-engine-services"],"summary":"Registers DMaaP Topic to recieve notification from Policy Engine","operationId":"getNotificationUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"notificationTopic","description":"notificationTopic","required":true,"schema":{"type":"string"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/listConfig":{"post":{"tags":["policy-engine-services"],"summary":"Gets the list of configuration policies from the PDP","operationId":"listConfigUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"configRequestParameters","description":"configRequestParameters","required":true,"schema":{"$ref":"#/definitions/ConfigRequestParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Collection«string»"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/policyEngineImport":{"post":{"tags":["policy-engine-services"],"summary":"Imports Policy based on the parameters which represent the service used to create a policy Service.","operationId":"policyEngineImportUsingPOST","consumes":["multipart/form-data"],"produces":["*/*"],"parameters":[{"name":"importParametersJson","in":"query","description":"importParametersJson","required":true,"type":"string"},{"name":"file","in":"formData","description":"file","required":true,"type":"file"},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/pushPolicy":{"put":{"tags":["policy-engine-services"],"summary":"Pushes the specified policy to the PDP Group.","operationId":"pushPolicyUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"pushPolicyParameters","description":"pushPolicyParameters","required":true,"schema":{"$ref":"#/definitions/PushPolicyParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/sendEvent":{"post":{"tags":["policy-engine-services"],"summary":"Sends the Events specified to the Policy Engine","operationId":"sendEventUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"eventRequestParameters","description":"eventRequestParameters","required":true,"schema":{"$ref":"#/definitions/EventRequestParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Collection«PolicyResponse»"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/sendHeartbeat":{"post":{"tags":["policy-engine-services"],"summary":"Sends Heartbeat to DMaaP Topic Registry to continue recieving notifications from Policy Engine","operationId":"sendHeartbeatUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"notificationTopic","description":"notificationTopic","required":true,"schema":{"type":"string"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/stopNotification":{"post":{"tags":["policy-engine-services"],"summary":"De-Registers DMaaP Topic to stop recieving notifications from Policy Engine","operationId":"stopNotificationUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"notificationTopic","description":"notificationTopic","required":true,"schema":{"type":"string"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/updateConfig":{"put":{"tags":["policy-engine-services"],"summary":"Updates a Config Policy based on given Policy Parameters.","operationId":"updateConfigUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"configPolicyAPIRequest","description":"configPolicyAPIRequest","required":true,"schema":{"$ref":"#/definitions/ConfigPolicyAPIRequest"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":true}},"/updateDictionaryItem":{"put":{"tags":["policy-engine-services"],"summary":"Updates a Dictionary Item for a specific dictionary based on given Parameters.","operationId":"updateDictionaryItemUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"dictionaryParameters","description":"dictionaryParameters","required":true,"schema":{"$ref":"#/definitions/DictionaryParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}},"/updateFirewallConfig":{"put":{"tags":["policy-engine-services"],"summary":"Updates a Config Firewall Policy","operationId":"updateFirewallConfigUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"configFirewallPolicyAPIRequest","description":"configFirewallPolicyAPIRequest","required":true,"schema":{"$ref":"#/definitions/ConfigFirewallPolicyAPIRequest"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":true}},"/updatePolicy":{"put":{"tags":["policy-engine-services"],"summary":"Updates a Policy based on given Policy Parameters.","operationId":"updatePolicyUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"policyParameters","description":"policyParameters","required":true,"schema":{"$ref":"#/definitions/PolicyParameters"}},{"name":"ClientAuth","in":"header","description":"ClientAuth","required":true,"type":"string"},{"name":"X-ECOMP-RequestID","in":"header","description":"X-ECOMP-RequestID","required":false,"type":"string"},{"name":"Authorization","in":"header","required":true,"type":"string"},{"name":"Environment","in":"header","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}}}}},"definitions":{"PolicyParameters":{"type":"object","properties":{"actionAttribute":{"type":"string"},"actionPerformer":{"type":"string"},"attributes":{"type":"object","additionalProperties":{"$ref":"#/definitions/Map«string,string»"}},"configBody":{"type":"string"},"configBodyType":{"type":"string","enum":["Properties","json","xml","other"]},"configName":{"type":"string"},"controllerName":{"type":"string"},"dependencyNames":{"type":"array","items":{"type":"string"}},"dynamicRuleAlgorithmField1":{"type":"array","items":{"type":"string"}},"dynamicRuleAlgorithmField2":{"type":"array","items":{"type":"string"}},"dynamicRuleAlgorithmFunctions":{"type":"array","items":{"type":"string"}},"dynamicRuleAlgorithmLabels":{"type":"array","items":{"type":"string"}},"ecompName":{"type":"string"},"extendedOption":{"type":"string"},"guard":{"type":"boolean"},"onapName":{"type":"string"},"policyClass":{"type":"string","enum":["Config","Action","Decision"]},"policyConfigType":{"type":"string","enum":["Base","Fault","PM","FW","BRMS_Raw","BRMS_Param","MS","EXTENDED"]},"policyDescription":{"type":"string"},"policyName":{"type":"string"},"priority":{"type":"string"},"requestID":{"type":"string"},"riskLevel":{"type":"string"},"riskType":{"type":"string"},"ruleProvider":{"type":"string","enum":["Custom","AAF","GUARD_YAML","GUARD_BL_YAML"]},"ttlDate":{"type":"string","format":"date-time"}}},"ConfigRequestParameters":{"type":"object","properties":{"configAttributes":{"type":"object","additionalProperties":{"type":"string"}},"configName":{"type":"string"},"ecompName":{"type":"string"},"onapName":{"type":"string"},"policyName":{"type":"string"},"requestID":{"type":"string"},"unique":{"type":"boolean"}}},"Collection«PolicyResponse»":{"type":"object"},"DecisionResponse":{"type":"object","properties":{"decision":{"type":"string","enum":["permit","deny","error"]},"details":{"type":"string"}}},"DictionaryParameters":{"type":"object","properties":{"dictionary":{"type":"string"},"dictionaryJson":{"type":"string"},"dictionaryType":{"type":"string","enum":["Common","Action","ClosedLoop","Firewall","Decision","BRMS","MicroService","DescriptiveScope","PolicyScope","Enforcer","SafePolicy","Extended"]},"requestID":{"type":"string"}}},"JsonValue":{"type":"object","properties":{"valueType":{"type":"string","enum":["ARRAY","OBJECT","STRING","NUMBER","TRUE","FALSE","NULL"]}}},"DecisionRequestParameters":{"type":"object","properties":{"decisionAttributes":{"type":"object","additionalProperties":{"type":"string"}},"ecompcomponentName":{"type":"string"},"onapName":{"type":"string"},"requestID":{"type":"string"}}},"ConfigPolicyAPIRequest":{"type":"object","properties":{"body":{"type":"string"},"configAttributes":{"type":"object","additionalProperties":{"type":"string"}},"configName":{"type":"string"},"configType":{"type":"string"},"ecompName":{"type":"string"},"guard":{"type":"string"},"onapName":{"type":"string"},"policyDescription":{"type":"string"},"policyName":{"type":"string"},"policyScope":{"type":"string"},"riskLevel":{"type":"string"},"riskType":{"type":"string"},"ttlDate":{"type":"string"}}},"PushPolicyParameters":{"type":"object","properties":{"pdpGroup":{"type":"string"},"policyName":{"type":"string"},"policyType":{"type":"string"},"requestID":{"type":"string"}}},"ConfigFirewallPolicyAPIRequest":{"type":"object","properties":{"firewallJson":{"type":"string"},"guard":{"type":"string"},"policyName":{"type":"string"},"policyScope":{"type":"string"},"riskLevel":{"type":"string"},"riskType":{"type":"string"},"ttlDate":{"type":"string"}}},"PolicyConfig":{"type":"object","properties":{"config":{"type":"string"},"matchingConditions":{"type":"object","additionalProperties":{"type":"string"}},"policyConfigMessage":{"type":"string"},"policyConfigStatus":{"type":"string","enum":["retrieved","not_found"]},"policyName":{"type":"string"},"policyVersion":{"type":"string"},"property":{"type":"object","additionalProperties":{"type":"string"}},"responseAttributes":{"type":"object","additionalProperties":{"type":"string"}},"type":{"type":"string","enum":["Properties","json","xml","other"]}}},"EventRequestParameters":{"type":"object","properties":{"eventAttributes":{"type":"object","additionalProperties":{"type":"string"}},"requestID":{"type":"string"}}},"Map«string,string»":{"type":"object","additionalProperties":{"type":"string"}},"Collection«PolicyConfig»":{"type":"object"},"DictionaryResponse":{"type":"object","properties":{"dictionaryData":{"type":"object","additionalProperties":{"type":"string"}},"dictionaryJson":{"type":"object","additionalProperties":{"$ref":"#/definitions/JsonValue"}},"responseCode":{"type":"integer","format":"int32"},"responseMessage":{"type":"string"}}},"ConfigNameRequest":{"type":"object","properties":{"policyName":{"type":"string"}}},"MetricsResponse":{"type":"object","properties":{"metricsTotal":{"type":"integer","format":"int32"},"papMetrics":{"type":"integer","format":"int32"},"pdpMetrics":{"type":"integer","format":"int32"},"responseCode":{"type":"integer","format":"int32"},"responseMessage":{"type":"string"}}},"Collection«string»":{"type":"object"},"PolicyResponse":{"type":"object","properties":{"actionAdvised":{"type":"object","additionalProperties":{"type":"string"}},"actionTaken":{"type":"object","additionalProperties":{"type":"string"}},"policyResponseMessage":{"type":"string"},"policyResponseStatus":{"type":"string","enum":["no_action","action_advised","action_taken"]},"requestAttributes":{"type":"object","additionalProperties":{"type":"string"}}}},"DeletePolicyParameters":{"type":"object","properties":{"deleteCondition":{"type":"string","enum":["Current Version","All Versions"]},"pdpGroup":{"type":"string"},"policyComponent":{"type":"string"},"policyName":{"type":"string"},"policyType":{"type":"string"},"requestID":{"type":"string"}}}}}
\ No newline at end of file
diff --git a/docs/platform/architecture.rst b/docs/platform/architecture.rst
new file mode 100644
index 0000000..d9ce3c8
--- /dev/null
+++ b/docs/platform/architecture.rst
@@ -0,0 +1,98 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+
+Architecture
+------------
+
+.. contents:: 
+    :depth: 3
+
+POLICY is a subsystem of ONAP that maintains, distributes, and operates on the set of rules that underlie ONAP’s control, orchestration, and management functions. 
+
+POLICY provides a logically centralized environment for the creation and management of policies, including conditional rules.  This provides the capability to **create** and **validate** policies/rules, **identify overlaps**, **resolve conflicts**, and **derive** additional policies as needed.  Policies are used to **control**, **influence**, and help **ensure compliance** with goals.  Policies can support infrastructure, products and services, operation automation, and security.  Users, including network and service designers, operations engineers, and security experts, can easily **create**, **change**, and **manage** policy rules from the POLICY Manager in the ONAP Portal.
+
+The figure below represents the target POLICY Architecture.
+
+.. image:: PolicyTargetArchitecture.png
+
+
+The figure below represents the current POLICY Architecture.
+
+.. image:: PolicyR1Architecture.png
+
+
+A policy is defined to create a condition, requirement, constraint, decision, or a need that must be provided, evaluated, maintained, and/or enforced.  The policy is validated and corrected for any conflicts, and then placed in the appropriate repository, and made available for use by other subsystems and components.  Alternately, some policies are directly distributed to policy decision engines such as Drools or XACML.   In this manner, the constraints, decisions and actions to be taken are distributed.
+
+
+System Architecture
+^^^^^^^^^^^^^^^^^^^
+
+ONAP POLICY is composed of several subcomponents: the **Policy Administration Point (PAP)**, which offers interfaces for policy creation, and two types of **Policy Decision Point (PDP)**, each based on a specific rules technology.  PDP-X is based on XACML technology and PDP-D is based on Drools technology.  PDP-X is **stateless** and can be deployed as a resource pool of PDP-X servers.  The number of servers can be grown to increase both capacity (horizontal scalability) and to increase availability.  The PDP-D is **stateful**, as it utilizes Drools in its native, stateful way and transactions persist so long as the PDP-D is active.  Persistent Drools sessions, state management, local and geo-redundancy have been deactivated for the initial release of ONAP POLICY and can be turned on in a future release.  Additional instances of XACML/Drools engines and assigned roles/purposes may also be added in the future to provide a flexible, expandable policy capability.
+
+As illustrated in the Figure below, the POLICY components are supported by a number of interfaces and subsystems.  The ONAP Portal provides a human interface for the creation, management and deployment of policies.  It is a web-based system that utilizes internal APIs in the PAP.
+
+.. image:: PolicyArchitectureDetails.png
+
+
+The PAP provides interfaces for the management of policies.  It utilizes the XACML database to store policies, which are then distributed to the PDPs.
+
+The XACML and Drools databases are hosted in a MariaDB cluster.  The XACML database is used to persist policies and policy dictionaries and provide a point for PDPs to retrieve policies.  The XACML database also has tables used for node state management, detection of node failure and failover. As indicated above, the state management tables will only include entries for the PAP and PDP-X as the testing is not yet complete for the PDP-D.
+
+The PDP-X receives deployed policies and has interfaces to handle XACML policy transactions.  These transactions are stateless and once complete, they are removed from memory.  If a policy that is deployed to the PDP-X is of an operational nature it will contain Drools rules and Java executables.  These artifacts are processed into Maven artifacts and pushed to the Maven repository.  The PDP-D is then notified a new policy has been deployed.
+
+When the PDP-D is notified a new policy has been deployed, it downloads it from the Maven repository and assigns it to an internal controller.  This controller provides the external Closed Loop interfaces to the DMaaP message bus over which events and messages are exchanged with external systems.  As events or messages arrive at the PDP-D, they are assigned to the appropriate controller and a Drools session is either created or retrieved from memory.  The events, messages or facts are passed to the Drools session and the corresponding rule is fired, resulting in a change of internal session state and possibly actions taken in response to the rule processing. Response messages and requests are passed by the controller back over the DMaaP message bus to the appropriate system.  The Drools session can also have timers and autonomous events. In a future release the PDP-D can enable the node state management and session persistence in the Drools DB.
+
+
+Policy Creation
+^^^^^^^^^^^^^^^
+The Policy Creation component of the Policy subsystem enables creation of new policies and modification of existing polices, both during the design phase and during runtime.  Policy Creation is targeted to be integrated to a unified Service Design and Creation (SDC) environment.
+
+A policy can be defined at a high level to create a condition, requirement, constraint, decision or a need that must be provided, evaluated, maintained, and/or enforced. A policy can also be defined at a lower or functional level, such as a machine-readable rule or software condition/assertion which enables actions to be taken based on a trigger or request, specific to particular selected conditions in effect at that time.
+
+Some examples of types of policies are:
+
+* VNF placement — rules governing where VNFs should be placed, including affinity rules
+* Data and feed management — what data to collect and when, retention periods, and when to send alarms about issues
+* Access control — who (or what) can have access to which data
+* Trigger conditions and actions — what conditions are actionable, and what to do under those conditions
+* Interactions — how interactions between change management and fault/performance management are handled (for example, should closed loops be disabled during maintenance?)
+
+
+Policy Distribution
+^^^^^^^^^^^^^^^^^^^
+
+After a policy has been initially created or an existing policy has been modified, the Policy Distribution Framework sends the policy from the repository to its points of use, which include Policy Decision Points (PDPs) and Policy enforcement points (DCAE, Controllers, etc), before the policy is actually needed.
+
+The decisions and actions taken by the policy are distributed.  Policies are distributed either in conjunction with installation packages (for example, related to service instantiation) or independently, if unrelated to a particular service.  Some policies can be configured (e.g., configuring policy parameters within microservices), while other polices are delivered to policy engines such as XAMCL and Drools.  With this methodology, policies will already be available when needed by a component, minimizing real-time requests to a central policy engine or PDP (Policy Decision Point). This improves scalability and reduces latency.
+
+Separate notifications or events communicate the link or URL for a policy to the components that need it.  Then, when a component needs the policy, it uses the link to fetch it. Components in some cases might also publish events indicating that they need new policies, eliciting a response with updated links or URLs. Also, in some cases, policies can indicate to components that they should subscribe to one or more policies, so that they receive automatic updates to those policies as they become available.
+
+
+Policy Decision and Enforcement
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Run-time policy enforcement is performed by ONAP subsystems that are policy-enabled or can respond to commands from a policy-enabled element such as a PDP.  For example, policy rules for data collection are enforced by the data collection functionality of DCAE. Analytic policy rules, identification of anomalous or abnormal conditions, and publication of events signaling detection of such conditions are enforced by DCAE analytic applications.  Policy rules for associated remedial actions, or for further diagnostics, are enforced by the correct component in a control loop such as the MSO, a Controller, or DCAE.  Policy engines such as XACML and Drools also enforce policies and can trigger other components as a result (for example, causing a controller to take specific actions specified by the policy).  Additionally, some policies (“Guard Policies”) may enforce checks against decided actions.
+
+
+Policy Unification and Organization
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Because the POLICY framework is expandable and multipurpose, it is likely to contain many types of policies which require organization according to some useful dimensions.  Users can define attributes that specify the scope of policies, and these attributes can be extended to the policy-enabled functions and components. Useful policy organizing dimensions might include:
+
+* Policy type or category (taxonomical)
+* Policy life cycle
+* Policy ownership or administrative domain
+* Geographic area or location, 
+* Technology type  
+* Policy language and version 
+* Security level or other security-related values, specifiers, or limiters
+
+Attributes can be specified for each dimension. In addition to being defined for individual policies themselves, these attributes can be used to define the scope of these additional additional policy-related functions:
+
+* Policy events or requests/triggers 
+* Policy decision, enforcement, or other functions 
+* Virtual functions of any type 
+
+Policy writers can define attributes so that policy events or requests self-indicate their scope. The scope is then examined by a suitable function and subsequently acted upon accordingly. Policy decisions and enforcement functions can self-indicate their scope of decision-making, enforcement, or other capabilities. Virtual functions can be automatically attached to the appropriate POLICY Framework and distribution mechanisms.
+
+
diff --git a/docs/platform/index.rst b/docs/platform/index.rst
new file mode 100644
index 0000000..b489b2f
--- /dev/null
+++ b/docs/platform/index.rst
@@ -0,0 +1,12 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Policy Engine
+-------------
+
+.. toctree::
+   :maxdepth: 1
+
+   architecture.rst
+   offeredapis.rst
+   installation.rst
+   policygui.rst
diff --git a/docs/platform/installation.rst b/docs/platform/installation.rst
new file mode 100644
index 0000000..a10f026
--- /dev/null
+++ b/docs/platform/installation.rst
@@ -0,0 +1,315 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Installation
+------------
+
+.. contents::
+    :depth: 3
+
+The installation of ONAP Policy is **automated** by design and can be done via Docker as a standalone system.  
+Various tools, including healthcheck, logs, and Swagger can be used to ensure proper operation.
+
+ONAP Policy Framework: Standalone Quick Start
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+This procedure explains how build the ONAP Policy Framework and get it running in Docker as a standalone system. 
+This procedure assumes that:
+
+* You are using a *\*nix* operating system such as linux or macOS.
+* You are using a directory called *git* off your home directory *(~/git)* for your git repositories
+* Your local maven repository is in the location *~/.m2/repository*
+
+The procedure documented here has been verified to work on a MacBook laptop running macOS Sierra Version 10.12.6 and a HP Z600 desktop running Ubuntu 16.04.3 LTS.
+
+
+.. code-block:: bash
+   :caption: Typical ONAP Policy Framework Clone Script
+   :linenos:
+
+    #!/usr/bin/env bash
+    
+    ## script name for output
+    MOD_SCRIPT_NAME=`basename $0`
+    
+    ## the ONAP clone directory, defaults to "onap"
+    clone_dir="onap"
+    
+    ## the ONAP repos to clone
+    onap_repos="\
+    oparent \
+    ecompsdkos \
+    policy/api \
+    policy/common \
+    policy/docker \
+    policy/drools-applications \
+    policy/drools-pdp \
+    policy/engine \
+    policy/gui \
+    policy/pap \
+    policy/pdp"
+    
+    ##
+    ## Help screen and exit condition (i.e. too few arguments)
+    ##
+    Help()
+    {
+        echo ""
+        echo "$MOD_SCRIPT_NAME - clones all required ONAP git repositories"
+        echo ""
+        echo "       Usage:  $MOD_SCRIPT_NAME [-options]"
+        echo ""
+        echo "       Options"
+        echo "         -d          - the ONAP clone directory, defaults to '.'"
+        echo "         -h          - this help screen"
+        echo ""
+        exit 255;
+    }
+    
+    ##
+    ## read command line
+    ##
+    while [ $# -gt 0 ]
+    do
+        case $1 in
+            #-d ONAP clone directory
+            -d)
+                shift
+                if [ -z "$1" ]; then
+                    echo "$MOD_SCRIPT_NAME: no clone directory"
+                    exit 1
+                fi
+                clone_dir=$1
+                shift
+            ;;
+    
+            #-h prints help and exists
+            -h)
+                Help;exit 0;;
+    
+            *)    echo "$MOD_SCRIPT_NAME: undefined CLI option - $1"; exit 255;;
+        esac
+    done
+    
+    if [ -f "$clone_dir" ]; then
+        echo "$MOD_SCRIPT_NAME: requested clone directory '$clone_dir' exists as file"
+        exit 2
+    fi
+    if [ -d "$clone_dir" ]; then
+        echo "$MOD_SCRIPT_NAME: requested clone directory '$clone_dir' exists as directory"
+        exit 2
+    fi
+    
+    mkdir $clone_dir
+    if [ $? != 0 ]
+    then
+        echo cannot clone ONAP repositories, could not create directory '"'$clone_dir'"'
+        exit 3
+    fi
+    
+    for repo in $onap_repos
+    do
+        repoDir=`dirname "$repo"`
+        repoName=`basename "$repo"`
+    
+        if [ ! -z $dirName ]
+        then
+        mkdir "$clone_dir/$repoDir"
+        if [ $? != 0 ]
+        then
+            echo cannot clone ONAP repositories, could not create directory '"'$clone_dir/repoDir'"'
+            exit 4
+        fi
+        fi
+    
+        git clone https://gerrit.onap.org/r/${repo} $clone_dir/$repo
+    done
+    
+    echo ONAP has been cloned into '"'$clone_dir'"'
+
+Execution of the script above results in the following directory hierarchy in your *~/git* directory:
+
+    *  ~/git/onap
+    *  ~/git/onap/ecompsdkos
+    *  ~/git/onap/oparent
+    *  ~/git/onap/policy
+    *  ~/git/onap/policy/api
+    *  ~/git/onap/policy/common
+    *  ~/git/onap/policy/docker
+    *  ~/git/onap/policy/drools-applications
+    *  ~/git/onap/policy/drools-pdp
+    *  ~/git/onap/policy/engine
+    *  ~/git/onap/policy/gui
+    *  ~/git/onap/policy/pap
+    *  ~/git/onap/policy/pdp    
+
+
+
+Building ONAP
+^^^^^^^^^^^^^
+
+**Step 1.** Optionally, for a completely clean build, remove the ONAP built modules from your local repository.
+
+    * rm -fr ~/.m2/repository/org/onap
+    * rm -fr ~/.m2/repository/org/openecomp
+
+
+**Step 2**. A pom such as the one below can be used to build all the ONAP policy modules and their dependencies. Create the *pom.xml* file in the directory *~/git/onap*.
+
+.. code-block:: xml 
+   :caption: Typical pom.xml to build the ONAP Policy Framework
+   :linenos:
+
+    <project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+      <modelVersion>4.0.0</modelVersion>
+      <groupId>org.onap</groupId>
+      <artifactId>onap-policy_standalone</artifactId>
+      <version>1.0.0-SNAPSHOT</version>
+      <packaging>pom</packaging>
+      <name>${project.artifactId}</name>
+      <inceptionYear>2017</inceptionYear>
+      <organization>
+        <name>ONAP</name>
+      </organization>
+    
+      <profiles>
+        <profile>
+          <id>policy-dependencies</id>
+          <activation>
+        <property>
+              <name>policyDeps</name>
+        </property>
+          </activation>
+          <modules>
+        <module>oparent</module>
+        <module>ecompsdkos/ecomp-sdk</module>
+          </modules>
+        </profile>
+        <profile>
+          <id>policy</id>
+          <activation>
+        <activeByDefault>true</activeByDefault>
+          </activation>
+          <modules>
+        <module>oparent</module>
+        <module>ecompsdkos/ecomp-sdk</module>
+        <module>policy</module>
+          </modules>
+        </profile>
+      </profiles>
+    </project>
+    
+
+
+**Step 3**.  A pom such as the one below can be used to build the ONAP Policy Framework modules. Create the *pom.xml* file in the directory *~/git/onap/policy*
+
+.. code-block:: xml 
+   :caption: Typical pom.xml to build the ONAP Policy Framework Policy Modules
+   :linenos:
+
+    <project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+        <modelVersion>4.0.0</modelVersion>
+        <groupId>org.onap</groupId>
+        <artifactId>onap-policy</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <packaging>pom</packaging>
+        <name>${project.artifactId}</name>
+        <inceptionYear>2017</inceptionYear>
+        <organization>
+            <name>ONAP</name>
+        </organization>
+    
+        <modules>
+            <module>common</module>
+            <module>engine</module>
+            <module>pdp</module>
+            <module>pap</module>
+            <module>drools-pdp</module>
+            <module>drools-applications</module>
+            <module>api</module>
+            <module>gui</module>
+            <module>docker</module>
+        </modules>
+    </project>
+
+**Step 4**. The build cannot currently find the *org.onap.oparent:version-check-maven-plugin* plugin so, for now, comment that plugin out in the POMs *policy/drools-pdp/pom.xml* and *policy/drools-applications/pom.xml*.
+
+**Step 5**. Build the ONAP dependencies that are required for the ONAP policy framework and which must be built first to be available to the ONAP Policy Framework proper.
+
+    * cd ~/git/onap
+    * mvn clean install -DpolicyDeps 
+
+**Step 6**. You can now build the ONAP framework
+
+   *  On *Ubuntu*, just build the Policy Framework tests and all
+
+        - cd ~/git/onap
+        - mvn clean install 
+
+   *  On *macOS*, you must build build the ONAP framework with tests turned off first. Then rebuild the framework with tests turned on and all tests will pass. Note: The reason for this behaviour will be explored later. 
+    
+        - cd ~/git/onap
+        - mvn clean install -DskipTests
+        - mvn install
+ 
+
+Building the ONAP Policy Framework Docker Images
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The instructions here are based on the instructions in the file *~/git/onap/policy/docker/README*.
+
+**Step 1.** Prepare the Docker packages. This will pull the installation zip files needed for building the policy-pe and policy-drools Docker images into the target directory. It will not actually build the docker images; the additional steps below must be followed to actually build the Docker images.
+
+    * cd ~/git/onap/policy/docker
+    * mvn prepare-package
+
+**Step 2**. Copy the files under *policy-pe* to *target/policy-pe*.
+
+    * cp policy-pe/* target/policy-pe
+
+**Step 3**. Copy the files under *policy-drools* to *target/policy-drools*.
+
+    * cp policy-drools/* target/policy-drools
+
+**Step 4**. Run the *docker build* command on the following directories in the order below. 
+Note that on some systems you may have to run the *docker* command as root or using *sudo*.
+
+    * docker build -t onap/policy/policy-os     policy-os
+    * docker build -t onap/policy/policy-db     policy-db
+    * docker build -t onap/policy/policy-nexus  policy-nexus
+    * docker build -t onap/policy/policy-base   policy-base
+    * docker build -t onap/policy/policy-pe     target/policy-pe
+    * docker build -t onap/policy/policy-drools target/policy-drools
+
+Starting the ONAP Policy Framework Docker Images
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+In order to run the containers, you can use *docker-compose*. This uses the *docker-compose.yml* yaml file to bring up the ONAP Policy Framework.
+
+**Step 1.** Make the file *config/drools/drools-tweaks.sh* executable
+
+    * chmod +x config/drools/drools-tweaks.sh
+
+**Step 2**. Set the IP address to use to be an IP address of a suitable interface on your machine. Save the IP address into the file *config/pe/ip_addr.txt*.
+
+**Step 3**. Set the environment variable *MTU* to be a suitable MTU size for the application.
+
+    * export MTU=9126
+
+**Step 4**. Run the system using *docker-compose*. Note that on some systems you may have to run the *docker-compose* command as root or using *sudo*. Note that this command takes a number of minutes to execute on a laptop or desktop computer.
+
+    * docker-compose up
+
+
+Installation Complete
+^^^^^^^^^^^^^^^^^^^^^
+
+**You now have a full standalone ONAP Policy framework up and running!**
+
+
+.. _Standalone Quick Start : https://wiki.onap.org/display/DW/ONAP+Policy+Framework%3A+Standalone+Quick+Start
+
+
diff --git a/docs/platform/offeredapis.rst b/docs/platform/offeredapis.rst
new file mode 100644
index 0000000..8d4cfeb
--- /dev/null
+++ b/docs/platform/offeredapis.rst
@@ -0,0 +1,49 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+
+Offered APIs
+============
+
+.. contents:: 
+    :depth: 2
+
+The Policy subsystem of ONAP maintains, distributes, and operates on the set of rules that underlie ONAP’s control, orchestration, and management functions. Policy provides a centralized environment for the creation and management of easily-updatable conditional rules. It enables users to validate policies and rules, identify and resolve overlaps and conflicts, and derive additional policies where needed.  The following operations are supported by the policy API:
+
+* Create policies on the PAP 
+* Update policies on the PAP
+* Delete policies on the PAP or PDP
+* Push policies from the PAP to the PDP
+* List policies on the PDP
+* Get config data of policies on the PDP
+* Create Dictionary Items
+* Update Dictionary Items
+* Retrieve Dictionary Items
+* Import Micro Services Models
+* Retrieve Metrics for policy counts from PDP and PAP
+
+
+POLICY Engine Services
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. image:: PolicyEngineApiList.png
+
+POLICY API Details
+^^^^^^^^^^^^^^^^^^
+
+.. swaggerv2doc:: api-docs.json
+
+
+Additional Information
+^^^^^^^^^^^^^^^^^^^^^^
+
+Additional information, including examples, can be found at `PolicyApi link`_.
+
+.. _PolicyApi link: https://wiki.onap.org/display/DW/Policy+API
+
+
+
+
+
+End of document
+
diff --git a/docs/platform/policygui.rst b/docs/platform/policygui.rst
new file mode 100644
index 0000000..dbfb274
--- /dev/null
+++ b/docs/platform/policygui.rst
@@ -0,0 +1,136 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+**********
+Policy GUI
+**********
+
+.. contents::
+    :depth: 3
+
+| The POLICY GUI is a graphical user interface, available via web-access, for **creating and managing** policies.   
+|
+| The targeted users are those responsible for creating and managing policies that control network operations, including policy based network configuration and auto-corrective actions.  This typically includes network and service designers, operations engineers and security experts. 
+|
+| The GUI consists of the **Editor, Dictionary, PDP, Push, Roles, Admin** and **Dashboard** Tabs; which provide for an intuitive manner for policy rules to be created, changed, and managed.  
+
+
+Access to the POLICY GUI
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The POLICY GUI can be accessed via the ONAP Portal.
+
+.. image:: PolicyGUI_Access.png
+
+
+POLICY Editor
+^^^^^^^^^^^^^
+
+The POLICY **Editor** tab supports the following **key** functionality:  
+
+•	Create Policies and Scopes
+•	Edit, View and Describe Policies
+•	Rename, Move and Clone Policies
+•	Switch Versions of Policies
+•	Delete Policies and Scopes
+•	List Policies and Scopes 
+•	Export and Import Policies
+•	Search for Policies 
+
+.. image:: PolicyGUI_Editor.png
+
+
+Scope Management
+----------------
+
+A Scope must exist before a policy can be created.  The figure below shows how to add and manage Scopes.
+
+.. image:: PolicyGUI_Editor_Scope.png
+
+
+Policy Creation
+---------------
+
+The most important function of the GUI is to facilitate the creation of policies.  
+The figure below specifies how a policy can be created. 
+
+.. image:: PolicyGUI_Editor_CreatePolicy.png
+
+
+Managing a Policy 
+-----------------
+
+The GUI provides actions (Edit, Clone, Move, Rename, Describe, View etc) to support maintaining 
+the policy after it has been created.  The figure below specifies how to initiate an action.
+
+.. image:: PolicyGUI_Editor_PolicyActions.png
+
+
+The next step of the selected action is shown below.
+
+.. image:: PolicyGUI_Editor_PolicyActionsDetail.png
+
+|
+
+POLICY Dictionary
+^^^^^^^^^^^^^^^^^
+
+| The POLICY **Dictionary** tab is used to create and manage attributes in the dictionaries.  
+| Each policy type has one or more dictionaries associated with it.  Policy writers have the ability to easily define and add attributes into the dictionary as shown below.  
+
+.. image:: PolicyGUI_Dictionary.png
+
+|
+
+POLICY PDP
+^^^^^^^^^^
+
+| The POLICY **PDP** tab is used to manage **PDP Groups** and **PDPs in the group**.  
+| This tab provides the capability to create, edit and delete PDP groups and associated PDPs.  This tab also provides the ability to check status and view policies in a PDP groups.
+
+.. image:: PolicyGUI_PDP.png
+
+|
+
+POLICY Push
+^^^^^^^^^^^
+
+| The POLICY **Push** tab allows policies to be selectively pushed to the all PDPs.
+| Once pushed, the policies can be seen on the PDP tab.  A Status of the PDPs indicate “UP-TO-DATE” if the policy has been pushed correctly.  A Status of “LAST-UPDATE-FAILED” indicates an error occurred in pushing the policies.
+
+.. image:: PolicyGUI_Push.png
+
+|
+
+POLICY Dashboard 
+^^^^^^^^^^^^^^^^
+
+| The POLICY **Dashboard** shows the **status** and **health** of the system through metrics logs and status update messages.  The dashboard consists of two tabs, a **Logging** tab and a **Health** tab. 
+
+.. image:: PolicyGUI_Dashboard.png
+
+|
+
+POLICY Admin
+^^^^^^^^^^^^
+
+| The POLICY **Admin** tab houses functionality that is performed by an administrator.  
+| Only super users have access to the Admin Tab.  The Lockdown feature is accessed from this tab.
+
+.. image:: PolicyGUI_Admin.png
+
+|
+
+POLICY Roles
+^^^^^^^^^^^^
+
+| The POLICY **Roles** tab allows system administrators to assign roles for system access.  
+| The GUI options vary depending on the role.  
+
+.. image:: PolicyGUI_Roles.png
+
+|
+
+
+
+End of Document
diff --git a/docs/release-notes/bug-fixes.rst b/docs/release-notes/bug-fixes.rst
new file mode 100644
index 0000000..24ec32c
--- /dev/null
+++ b/docs/release-notes/bug-fixes.rst
@@ -0,0 +1,86 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Bug Fixes
+---------
+
+ONAP POLICY Framework items for: (Last Updated: 10/23/2017)
+
+*    **Version**: Amsterdam Release
+*    **Release Date**: 02 November, 2017
+*    **Description**: R1
+
+Bug
+^^^
+
+    * [POLICY-12] - Clean up warnings in drools-pdp project
+    * [POLICY-14] - Fix docker-compose to use onap/* instead of openecomp/*
+    * [POLICY-15] - 1.1.0-SNAPSHOT bring up issues
+    * [POLICY-16] - correct problems introduced by swagger addition to pdp-d
+    * [POLICY-19] - PDP-X getConfig API Authentication error
+    * [POLICY-20] - PDP-X getConfig - Configuration Policy not found
+    * [POLICY-21] - PDP-D occasionally stuck during shutdown
+    * [POLICY-23] - PDP-X getConfig issues
+    * [POLICY-24] - PDP-X pushPolicy problems
+    * [POLICY-27] - excessive long idle timeouts in DB introduced unnecessarily
+    * [POLICY-29] - BRMS GW - client configuration
+    * [POLICY-74] - policy-engine build failure
+    * [POLICY-75] - KieScanner repeatedly updating Drools container
+    * [POLICY-84] - Query Name validation before execution
+    * [POLICY-91] - drools-applications - vFW/vDNS dependencies issues
+    * [POLICY-92] - brmsgw - vFW/vDNS dependency rename issue
+    * [POLICY-94] - Health check failure in R1.1.0 in DFW on Rackspace
+    * [POLICY-134] - PolicyLogger.info(Object arg0) executes recursively causing stack overflow error.
+    * [POLICY-144] - PAP: console: browser access: 500 code
+    * [POLICY-145] - Healthcheck functionality not working
+    * [POLICY-146] - brmsgw: vFW/vDNS rules jars not generated
+    * [POLICY-165] - Support Backward compatibility for the Policy Interface
+    * [POLICY-170] - policy build by vagrant fails
+    * [POLICY-175] - 0% Code Coverage in some projects
+    * [POLICY-191] - PDP-D: Enhancement: feature session-persistence
+    * [POLICY-192] - verify and/or merge job hang running JUnit test
+    * [POLICY-194] - policy/drools-applications: fix template to enable JUnits
+    * [POLICY-195] - policy/drools-pdp/session-persistence: remove new sonar blocker and criticals
+    * [POLICY-197] - drools-applications: logger change breaks junit on drl template
+    * [POLICY-199] - Policy UI page displays blank in ONAP
+    * [POLICY-203] - Test case testGetPropertiesValue fails  if we run test case or build code other than C: 
+    * [POLICY-205] - policy/engine: missing license files
+    * [POLICY-206] - Missing license for drools-applications
+    * [POLICY-211] - Policy Fails Robot Health Check
+    * [POLICY-213] - remove sonar blocker/criticals introduced by feature-test-transaction
+    * [POLICY-221] - Policy GUI Cosmetic Issues
+    * [POLICY-223] - PDP Health Check Fail
+    * [POLICY-229] - Policy healthcheck failure in RS ORD ONAP 1.1.0 
+    * [POLICY-234] - PDP-D: drools session remains hung on an update
+    * [POLICY-275] - pdp-x: automated pushing of policies shows that some operations failed
+    * [POLICY-276] - brmsgw: not generating amsterdam rules jar
+    * [POLICY-278] - console: sql injection protection not working properly
+    * [POLICY-295] - brmsgw: amsterdam controller rules generation cannot be built
+    * [POLICY-296] - pdp-d guard db access causes control loop failures
+    * [POLICY-298] - pdp-d: drl template drops messages in clean up rules
+    * [POLICY-299] - Policy CSIT tests are running over 15 hours long
+    * [POLICY-300] - Use correct format for messages from Policy to APPC_LCM_READ
+    * [POLICY-301] - DB sessionpersistence.sessioninfo to mediumblob
+    * [POLICY-302] - brmsgw: set up rules should not be generated
+    * [POLICY-305] - Policy Guard Deny response
+    * [POLICY-306] - vDNS yaml that is pushed should contain "SO" as actor not "MSO"
+    * [POLICY-310] - Policy GUI Fixes
+    * [POLICY-313] - Update MicroService vCPE Config Policy with new values
+    * [POLICY-314] - pdp-d: better handling of unsuccessful AAI responses
+    * [POLICY-315] - Change back docker compose version to 2 from 3
+    * [POLICY-339] - pdp-d apps aai vdns : update aai interface from v8 to v11
+    * [POLICY-340] - console: upgrade to latest portal sdk
+    * [POLICY-341] - pdp-d apps vfw: subsequent onsets on same resource not discarded
+    * [POLICY-342] - docker push-policies : config and operational policies must use the same control loop name
+    * [POLICY-343] - console: displaying corporate logo
+    * [POLICY-344] - Operations History Persistence Unit Not Found
+    * [POLICY-345] - Operations History Table is not written to
+    * [POLICY-350] - pdp-d apps drl: resiliency to exceptions and null values returned/thrown from java models
+    * [POLICY-353] - Bug in UebTopicSinkFactory
+    * [POLICY-354] - Update the latest Portal Properties
+    * [POLICY-356] - pdp-d apps: print networked messages over http interface
+    * [POLICY-357] - pdp-d db-migrator when ALL dbs flag is used upgrade not working properly 
+    * [POLICY-363] - docker pdp-d: set DCAE DMaaP Server default to vm1.mr.simpledemo.openecomp.org
+    * [POLICY-364] - Policy template should not reject Event if A&AI lookup fails.
+
+
+
diff --git a/docs/release-notes/deprecation-notes.rst b/docs/release-notes/deprecation-notes.rst
new file mode 100644
index 0000000..e954e87
--- /dev/null
+++ b/docs/release-notes/deprecation-notes.rst
@@ -0,0 +1,5 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Deprecation Notes
+-----------------
+
diff --git a/docs/release-notes/index.rst b/docs/release-notes/index.rst
new file mode 100644
index 0000000..0ac56af
--- /dev/null
+++ b/docs/release-notes/index.rst
@@ -0,0 +1,11 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Release Notes
+=============
+
+.. toctree::
+    :maxdepth: 1
+
+    new-features.rst
+    bug-fixes.rst
+    known-issues.rst
diff --git a/docs/release-notes/known-issues.rst b/docs/release-notes/known-issues.rst
new file mode 100644
index 0000000..b4ee954
--- /dev/null
+++ b/docs/release-notes/known-issues.rst
@@ -0,0 +1,17 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Known Issues
+------------
+
+ONAP POLICY Framework items for: (Last Updated: 10/10/2017)
+
+*    **Version**: Amsterdam Release
+*    **Release Date**: 02 November, 2017
+*    **Description**: R1
+
+Issues
+^^^^^^
+
+* No known issues at this time
+
+
diff --git a/docs/release-notes/new-features.rst b/docs/release-notes/new-features.rst
new file mode 100644
index 0000000..e72f926
--- /dev/null
+++ b/docs/release-notes/new-features.rst
@@ -0,0 +1,140 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+New Features
+------------
+
+ONAP POLICY Framework items for: (Last Updated: 10/23/2017)
+
+*    **Version**: Amsterdam Release
+*    **Release Date**: 02 November, 2017
+*    **Description**: R1
+
+.. contents::
+    :depth: 2
+
+Epic
+^^^^
+
+    * [POLICY-31] - Stabilization of Seed Code
+    * [POLICY-33] - This epic covers the body of work involved in deploying the Policy Platform components
+    * [POLICY-34] - This epic covers the work required to support a Policy developer environment in which Policy Developers can create, update policy templates/rules separate from the policy Platform runtime platform.
+    * [POLICY-35] - This epic covers the body of work involved in supporting policy that is platform specific.
+    * [POLICY-37] - This epic covers the work required to capture, update, extend Policy(s) during Service Design.
+    * [POLICY-39] - This epic covers the work required to support the Policy Platform during runtime.
+    * [POLICY-76] - This epic covers the body of work involved in supporting R1 Amsterdam Milestone Release Planning Milestone Tasks.
+
+Story
+^^^^^
+
+    * [POLICY-25] - Replace any remaining openecomp reference by onap
+    * [POLICY-32] - JUnit test code coverage
+    * [POLICY-40] - MSB Integration
+    * [POLICY-41] - OOM Integration
+    * [POLICY-43] - Amsterdam Use Case Template
+    * [POLICY-48] - CLAMP Configuration and Operation Policies for vCPE Use Case
+    * [POLICY-51] - Runtime Policy Update Support
+    * [POLICY-57] - VF-C Actor code development
+    * [POLICY-59] - vCPE Use Case - Runtime
+    * [POLICY-60] - VOLTE Use Case - Runtime
+    * [POLICY-61] - vFW Use Case - Runtime
+    * [POLICY-62] - vDNS Use Case - Runtime
+    * [POLICY-63] - CLAMP Configuration and Operation Policies for VOLTE Use Case
+    * [POLICY-64] - CLAMP Configuration and Operation Policies for vFW Use Case
+    * [POLICY-65] - CLAMP Configuration and Operation Policies for vDNS Use Case
+    * [POLICY-66] - PDP-D Feature mechanism enhancements
+    * [POLICY-67] - Rainy Day Decision Policy
+    * [POLICY-68] - TOSCA Parsing for nested objects for Microservice Policies
+    * [POLICY-77] - Functional Test case definition for Control Loops
+    * [POLICY-93] - Notification API
+    * [POLICY-119] - PDP-D: noop sinks
+    * [POLICY-121] - Update POM to inherit from oparent
+    * [POLICY-124] - Integration with oparent
+    * [POLICY-158] - policy/engine:  SQL injection Mitigation
+    * [POLICY-161] - Security Event Logging
+    * [POLICY-173] - Deployment of Operational Policies Documentation
+    * [POLICY-210] - Independent Versioning and Release Process
+    * [POLICY-316] - vCPE Use Case - Runtime Testing
+    * [POLICY-320] - VOLTE Use Case - Runtime Testing
+    * [POLICY-324] - vFW Use Case - Runtime Testing
+    * [POLICY-328] - vDNS Use Case - Runtime Testing
+
+
+Task
+^^^^
+
+    * [POLICY-3] - Add appropriate unit tests back into the distribution
+    * [POLICY-6] - Updates to License and Trademark in the Policy Source Code
+    * [POLICY-8] - Fix PDP-D Sonar Blocker Issues
+    * [POLICY-11] - Enhancements to extract fact information for a given Drools Application
+    * [POLICY-17] - Removal of ECOMP-SDK-APP dbscripts
+    * [POLICY-18] - Enhancement: Add additional feature hooks in Drools PDP
+    * [POLICY-22] - drools-applications reorganization and template upgrade
+    * [POLICY-26] - PDP-D Telemetry REST CLI
+    * [POLICY-30] - PDP-D Logging Enhancements
+    * [POLICY-53] - Update drools-application docker scripts to find reorganized pom changes
+    * [POLICY-54] - POLICY-54 Add HTTP Proxy Support to docker image builds
+    * [POLICY-55] - Ensure drools-application JUnit test works on ONAP JJB using in memory database
+    * [POLICY-58] - Update Policy Engine dependencies and use case policies to support the latest drools-application code
+    * [POLICY-70] - Add vagrant functionality to build/setup policy
+    * [POLICY-78] - Update Drools version to 6.5.0.Final
+    * [POLICY-80] - Policy Guard
+    * [POLICY-87] - Implement Recommended Fix for Portal
+    * [POLICY-88] - Delete the yaml sdk and sdc projects located in policy/engine
+    * [POLICY-95] - Fix policy/commons sonar blocker issues with exception of integrity-monitor/audit
+    * [POLICY-96] - Fix policy/common integrity-[monitor/audit] sonar blockers
+    * [POLICY-97] - Fix policy/engine sonar blockers
+    * [POLICY-98] - policy/commons critical sonar issues - NON integrity/monitor related
+    * [POLICY-100] - fix policy/common critical sonar items - integrity monitor/audit related
+    * [POLICY-105] - Common-Modules changes to RefreshStateAudit
+    * [POLICY-111] - policy/drools-applications: sonar blockers
+    * [POLICY-113] - policy/engine: sonar critical
+    * [POLICY-114] - policy/drools-pdp: sonar critical
+    * [POLICY-115] - policy/drools-application: sonar critical
+    * [POLICY-116] - Remove MojoHaus Maven plug-in from pom file
+    * [POLICY-117] - Resolve Policy Sonar Critical issues
+    * [POLICY-122] - Policy GUI Fixes for Dictionary and Dashboard tabs
+    * [POLICY-125] - Update Project FOSS Table
+    * [POLICY-126] - Identify and outline the set of documentations to be delivered in this Release
+    * [POLICY-133] - Addition of policy-persistence feature
+    * [POLICY-154] - policy/engine finish eclipse warnings for unused imports/variables
+    * [POLICY-155] - Addition of state-management feature
+    * [POLICY-156] - Addition of active-standby-management feature
+    * [POLICY-163] - Add 'install' and 'uninstall' option to DroolsPDP 'features' script
+    * [POLICY-167] - Clean additional pom warnings policy/engine
+    * [POLICY-168] - Clean pom warnings policy/drools-applications
+    * [POLICY-171] - Update policy/docker README to reflect current project paths
+    * [POLICY-176] - policy/drools-applications: convert System.out, System.err to use slf4j/logback
+    * [POLICY-177] - test-transaction feature to check on the healthiness of policy controllers
+    * [POLICY-178] - policy/common: convert integrity monitor to use slf4j/logback as in drools-pdp
+    * [POLICY-180] - Upgrade policy/engine release build to use more memory
+    * [POLICY-181] - Policy/common change jenkins job to not ignore JUnit tests for verify job.
+    * [POLICY-193] - Created a new cleanup process
+    * [POLICY-196] - Enhancement on MS JSON File
+    * [POLICY-218] - LF Open Source License Issues
+    * [POLICY-228] - Create common object to consolidate AAI response 
+    * [POLICY-231] - Remove Binary files from Policy Repo
+    * [POLICY-237] - Address remaining sonar/critical for policy/common
+    * [POLICY-239] - Address sonar major issues
+    * [POLICY-247] - Modify docker push-policies to push the Amsterdam Template and latest policies
+    * [POLICY-253] - Modify policy/engine pom.xml to remove sonar scan on 3rd party code.
+    * [POLICY-261] - policy/drools-pdp last remaining sonar critical
+    * [POLICY-266] - feature-state-management JUnit coverage
+    * [POLICY-273] - Revert the SDK properties from onap to ecomp
+    * [POLICY-274] - .gitignore policy/engine directories/files created after running mvn clean install or mvn test
+    * [POLICY-297] - policy/drools-applications stage-site build is failing due to heap space
+    * [POLICY-304] - Add ability for Docker scripts to NOT pre-load policies for testing
+    * [POLICY-307] - Delete the pre-Amsterdam policy template etc.
+    * [POLICY-312] - Change Policy CSIT Integration Tests to utilize the PRELOAD_POLICIES=false
+    * [POLICY-335] - Add more documentation details
+    * [POLICY-337] - Update CSIT Integration Tests with latest Config/Operational Policies
+    * [POLICY-355] - Exclude dependencies for mysql and iText
+
+
+Additional Information
+^^^^^^^^^^^^^^^^^^^^^^
+
+Latest details for Policy Framework Amsterdam Release can be found at `PolicyReleaseNotes`_.
+
+.. _PolicyReleaseNotes: https://jira.onap.org/secure/ReleaseNote.jspa?projectId=10106&version=10300
+
+
diff --git a/docs/release-notes/other.rst b/docs/release-notes/other.rst
new file mode 100644
index 0000000..2ce683b
--- /dev/null
+++ b/docs/release-notes/other.rst
@@ -0,0 +1,5 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Other
+-----
+
diff --git a/docs/release-notes/security-issues.rst b/docs/release-notes/security-issues.rst
new file mode 100644
index 0000000..96e1fe9
--- /dev/null
+++ b/docs/release-notes/security-issues.rst
@@ -0,0 +1,5 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Security Issues
+---------------
+
diff --git a/docs/release-notes/upgrade-notes.rst b/docs/release-notes/upgrade-notes.rst
new file mode 100644
index 0000000..f31c74a
--- /dev/null
+++ b/docs/release-notes/upgrade-notes.rst
@@ -0,0 +1,5 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Upgrade Notes
+-------------
+
diff --git a/packages/base/src/files/install/mysql/data/161000_upgrade_script.sql b/packages/base/src/files/install/mysql/data/161000_upgrade_script.sql
index 70dae61..4c64c64 100755
--- a/packages/base/src/files/install/mysql/data/161000_upgrade_script.sql
+++ b/packages/base/src/files/install/mysql/data/161000_upgrade_script.sql
@@ -6361,20 +6361,6 @@
 
 INSERT INTO `risktype` VALUES (1,'demo','2016-12-29 20:20:48','demo','SampleRiskType','demo','2016-12-29 20:20:48');
 
-INSERT INTO `brmsparamtemplate` VALUES (2,'ControlLoopDemo__closedLoopControlName','ControlLoopDemo__closedLoopControlName','\r\n\r\n/*-\n * ============LICENSE_START=======================================================\n * archetype-closed-loop-demo-rules\n * ================================================================================\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * \n *      http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============LICENSE_END=========================================================\n */\n\npackage org.onap.policy.controlloop;\n\nimport java.util.List;\nimport java.util.LinkedList;\nimport java.util.Map;\nimport java.util.HashMap;\nimport java.util.UUID;\n\nimport org.onap.policy.controlloop.VirtualControlLoopEvent;\nimport org.onap.policy.controlloop.ControlLoopEventStatus;\nimport org.onap.policy.controlloop.VirtualControlLoopNotification;\nimport org.onap.policy.controlloop.ControlLoopNotificationType;\nimport org.onap.policy.controlloop.ControlLoopOperation;\nimport org.onap.policy.controlloop.ControlLoopOperationWrapper;\nimport org.onap.policy.template.demo.ControlLoopException;\n\nimport org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;\nimport org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Manager;\nimport org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;\nimport org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Request;\nimport org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Response;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Tenant;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VfModule;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VServer;\nimport org.onap.policy.aai.util.Serialization;\n\nimport org.onap.policy.appc.CommonHeader;\nimport org.onap.policy.appc.Request;\nimport org.onap.policy.appc.Response;\nimport org.onap.policy.appc.ResponseCode;\nimport org.onap.policy.appc.ResponseStatus;\nimport org.onap.policy.appc.ResponseValue;\n\nimport org.onap.policy.template.demo.EventManager;\nimport org.onap.policy.vnf.trafficgenerator.PGRequest;\nimport org.onap.policy.vnf.trafficgenerator.PGStream;\nimport org.onap.policy.vnf.trafficgenerator.PGStreams;\n\nimport org.onap.policy.mso.MSOManager;\nimport org.onap.policy.mso.MSORequest;\nimport org.onap.policy.mso.MSORequestStatus;\nimport org.onap.policy.mso.MSORequestDetails;\nimport org.onap.policy.mso.MSOModelInfo;\nimport org.onap.policy.mso.MSOCloudConfiguration;\nimport org.onap.policy.mso.MSORequestInfo;\nimport org.onap.policy.mso.MSORequestParameters;\nimport org.onap.policy.mso.MSORelatedInstanceListElement;\nimport org.onap.policy.mso.MSORelatedInstance;\nimport org.onap.policy.mso.MSOResponse;\n\nimport org.onap.policy.drools.system.PolicyEngine;\n\n//\n// These parameters are required to build the runtime policy\n//\ndeclare Params\n    closedLoopControlName : String\n    actor : String\n    aaiURL : String\n    aaiUsername : String\n    aaiPassword : String\n    msoURL : String\n    msoUsername : String\n    msoPassword : String\n    aaiNamedQueryUUID : String\n    aaiPatternMatch : int \n    notificationTopic : String\n    appcTopic : String\nend\n\n/*\n*\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\n* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)\n*\n*\n*rule \"${policyName}.SETUP\"\n*	when\n*	then\n*		System.out.println(\"rule SETUP is triggered.\");\n*		Params params = new Params();\n*		params.setClosedLoopControlName(\"${closedLoopControlName}\");\n*		params.setActor(\"${actor}\");\n*		params.setAaiURL(\"${aaiURL}\");\n*		params.setAaiUsername(\"${aaiUsername}\");\n*		params.setAaiPassword(\"${aaiPassword}\");\n*		params.setMsoURL(\"${msoURL}\");\n*		params.setMsoUsername(\"${msoUsername}\");\n*		params.setMsoPassword(\"${msoPassword}\");\n*		params.setAaiNamedQueryUUID(\"${aaiNamedQueryUUID}\");\n*		params.setAaiPatternMatch(${aaiPatternMatch});\n*		params.setNotificationTopic(\"${notificationTopic}\");\n*		params.setAppcTopic(\"${appcTopic}\");\n*		//\n*		// This stays in memory as long as the rule is alive and running\n*		//\n*		insert(params);\n*end\n*/\n/*\n*\n* This rule responds to DCAE Events\n*\n*/\nrule \"${policyName}.EVENT\"\n	when\n        $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\n	then\n		System.out.println(\"rule EVENT is triggered.\");\n		try {\n			// \n			// Check the requestID in the event to make sure it is not null before we create the EventManager. \n			// The EventManager will do extra syntax checking as well check if the closed loop is disabled/\n			//\n			if ($event.requestID == null) {\n				VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n				notification.notification = ControlLoopNotificationType.REJECTED;\n				notification.from = \"policy\";\n				notification.message = \"Missing requestID from DCAE event\";\n				notification.policyName = drools.getRule().getName();\n				notification.policyScope = \"${policyScope}\";\n				notification.policyVersion = \"${policyVersion}\";\n				//\n				// Let interested parties know\n				//\n				try {\n					System.out.println(Serialization.gsonPretty.toJson(notification));\n					PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n				} catch (Exception e) {\n					e.printStackTrace();\n					System.out.println(\"Can\'t deliver notification: \" + notification);\n				}\n				//\n				// Retract it from memory\n				//\n				retract($event);\n				System.out.println(\"Event with requestID=null has been retracted.\");\n			} else {\n				//\n				// Create an EventManager\n				//\n				EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\n				//\n				// Determine if EventManager can actively process the event (i.e. syntax)\n				//\n				VirtualControlLoopNotification notification = manager.activate($event);\n				notification.from = \"policy\"; \n				notification.policyName = drools.getRule().getName();\n				notification.policyScope = \"${policyScope}\";\n				notification.policyVersion = \"${policyVersion}\";\n				//\n				// Are we actively pursuing this event?\n				//\n				if (notification.notification == ControlLoopNotificationType.ACTIVE) {\n					//\n					// Insert Event Manager into memory, this will now kick off processing.\n					//\n					insert(manager);\n					//\n					// Let interested parties know\n					//\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						e.printStackTrace();\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n					}		\n				} else {\n					//\n					// Let interested parties know\n					//\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						e.printStackTrace();\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n					}\n					//\n					// Retract it from memory\n					//\n					retract($event);\n				}\n				//\n				// Now that the manager is inserted into Drools working memory, we\'ll wait for\n				// another rule to fire in order to continue processing. This way we can also\n				// then screen for additional ONSET and ABATED events for this same RequestIDs \n				// and for different RequestIDs but with the same closedLoopControlName and target.\n				//\n			}\n		//\n		} catch (Exception e) {\n			e.printStackTrace();\n			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n			notification.notification = ControlLoopNotificationType.REJECTED;\n			notification.message = \"Exception occurred \" + e.getMessage();\n			notification.policyName = drools.getRule().getName();\n			notification.policyScope = \"${policyScope}\";\n			notification.policyVersion = \"${policyVersion}\";\n			//\n			//\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e1) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e1.printStackTrace();\n			}\n			//\n			// Retract the event\n			//\n			retract($event);\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\n* is created. We can start the operations for this closed loop.\n*\n*/\nrule \"${policyName}.EVENT.MANAGER\"\n	when\n		$params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\n	then\n		System.out.println(\"rule EVENT.MANAGER is triggered.\");\n		//\n		// Check which event this is.\n		//\n		EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\n		//\n		// We only want the initial ONSET event in memory,\n		// all the other events need to be retracted to support\n		// cleanup and avoid the other rules being fired for this event.\n		//\n		if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\n			System.out.println(\"Retracting \"+eventStatus+\" Event.\");\n			retract($event);\n			return;\n		}\n		//\n		// Now the event in memory is first onset event\n		//\n		try {\n			//\n			// Pull the known AAI field from the Event\n			//\n			// generic-vnf is needed for vFirewall case\n			// vserver-name is needed for vLoadBalancer case\n			//\n			String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\n			String vserver = $event.AAI.get(\"vserver.vserver-name\");\n			//\n			// Check if we are implementing a simple pattern match.\n			//\n			if ($params.getAaiPatternMatch() == 1) {\n				//\n				// Yes\n				//\n				//Basic naming characteristics:\n				//VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\n				//Example: \n				//VF Name (9 characters):    cscf0001v\n				//VM Name(13 characters): cscf0001vm001\n				//VFC name(19 characters): cscf0001vm001cfg001\n				//\n				// zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \n				// replaced with\n				// zdfw1fwl01pgn02 or zdfw1fwl01pgn01\n				//\n				int index = genericVNF.lastIndexOf(\"fwl\");\n				if (index == -1) {\n					System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\n				} else {\n					genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\n				}\n				//\n				// Construct an APPC request\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"ModifyConfig\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// insert operationWrapper into memory\n				//\n				insert(operationWrapper);\n				//\n				Request request = new Request();\n				request.CommonHeader = new CommonHeader();\n				request.CommonHeader.RequestID = $event.requestID;\n				request.Action = operation.operation;\n				request.Payload = new HashMap<String, Object>();\n				//\n				// Fill in the payload\n				//\n				request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n				//\n				PGRequest pgRequest = new PGRequest();\n				pgRequest.pgStreams = new PGStreams();\n				\n				PGStream pgStream;\n				for(int i = 0; i < 5; i++){\n					pgStream = new PGStream();\n					pgStream.streamId = \"fw_udp\"+(i+1);\n					pgStream.isEnabled = \"true\";\n					pgRequest.pgStreams.pgStream.add(pgStream);\n				}\n				request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n				\n				if (request != null) {\n					//\n					// Insert request into memory\n					//\n					insert(request);\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					// message and history ??\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"${policyScope}\";\n					notification.policyVersion = \"${policyVersion}\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Now send the operation request\n					//\n					if (request instanceof Request) {\n						try {\n							System.out.println(\"APPC request sent:\");\n							System.out.println(Serialization.gsonPretty.toJson(request));\n							PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n						} catch (Exception e) {\n							e.printStackTrace();\n							System.out.println(\"Can\'t deliver request: \" + request);\n						}\n					}\n				} else {\n					//\n					// what happens if it is null\n					//\n				}\n				//\n			} else {\n				//\n				// create AAI named-query request with UUID started with \"F199\"\n				//\n				AAINQF199Request aainqf199request = new AAINQF199Request();\n				AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\n				AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\n				AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\n				//\n				// queryParameters\n				//\n				aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \n				aainqf199queryparam.namedQuery = aainqf199namedquery;\n				aainqf199request.queryParameters = aainqf199queryparam;\n				//\n				// instanceFilters\n				//\n				Map aainqf199instancefiltermap = new HashMap();\n				Map aainqf199instancefiltermapitem = new HashMap();\n				aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \n				aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\n				aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\n				aainqf199request.instanceFilters = aainqf199instancefilter;\n				//\n				// print aainqf199request for debug\n				//\n				System.out.println(\"AAI Request sent:\");\n				System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\n				//\n				// Create AAINQF199RequestWrapper\n				//\n				AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\n				//\n				// insert aainqf199request into memory\n				//\n				insert(aainqf199RequestWrapper);\n			}\n			//\n		} catch (Exception e) {\n		 e.printStackTrace();\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\n*\n*/\nrule \"${policyName}.EVENT.MANAGER.AAINQF199REQUEST\"\n	when\n		$params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n	then\n		System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\n		//\n		// send the request\n		//\n		AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\n													   $aainqf199RequestWrapper.aainqf199request, $event.requestID);\n		//\n		// Check AAI response\n		//\n		if (aainqf199response == null) {\n			System.err.println(\"Failed to get AAI response\");\n			//\n			// Fail and retract everything\n			//\n			retract($event);\n			retract($manager);\n			retract($aainqf199RequestWrapper);\n		} else {\n			//\n			// Create AAINQF199ResponseWrapper\n			//\n			AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\n			//\n			// insert aainqf199ResponseWrapper to memeory\n			//\n			insert(aainqf199ResponseWrapper);\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\n*\n*/\nrule \"${policyName}.EVENT.MANAGER.AAINQF199RESPONSE\"\n	when \n		$params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n		$aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\n	then\n		System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\n		//\n		// Extract related fields out of AAINQF199RESPONSE\n		//\n		String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \n		       vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\n		       serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\n		       vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \n		       vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\n		try {\n			//\n			// vnfItem\n			//\n			vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\n			vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\n			vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\n			vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\n			vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\n			vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n			vnfItemModelVersion = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\n			vnfItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// serviceItem\n			//\n			serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\n			serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\n			serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n			serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\n			serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\n			serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// Find the index for base vf module and non-base vf module\n			//\n			int baseIndex = -1;\n			int nonBaseIndex = -1;\n			List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;\n			for (AAINQF199InventoryResponseItem m : inventoryItems) {\n				if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {\n					baseIndex = inventoryItems.indexOf(m);\n				} else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {\n					nonBaseIndex = inventoryItems.indexOf(m);\n				}\n				//\n				if (baseIndex != -1 && nonBaseIndex != -1) {\n					break;\n				}\n			}\n			//\n			// Report the error if either base vf module or non-base vf module is not found\n			//\n			if (baseIndex == -1 || nonBaseIndex == -1) {\n				System.err.println(\"Either base or non-base vf module is not found from AAI response.\");\n				retract($aainqf199RequestWrapper);\n				retract($aainqf199ResponseWrapper);\n				retract($manager);\n				retract($event);\n				return;\n			}\n			//\n			// This comes from the base module\n			//\n			vfModuleItemVfModuleName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;\n			vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\n			//\n			// vfModuleItem - NOT the base module\n			//\n			vfModuleItemPersonaModelId = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;\n			vfModuleItemPersonaModelVersion = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;\n			vfModuleItemModelName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;\n			vfModuleItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// tenantItem\n			//\n			tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\n			//\n			// cloudRegionItem\n			//\n			cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\n			//\n		} catch (Exception e) {\n			e.printStackTrace();\n			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n			notification.notification = ControlLoopNotificationType.REJECTED;\n			notification.message = \"Exception occurred \" + e.getMessage();\n			notification.policyName = drools.getRule().getName();\n			notification.policyScope = \"${policyScope}\";\n			notification.policyVersion = \"${policyVersion}\";\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e1) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e1.printStackTrace();\n			}\n			//\n			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n			notification.message = \"Invalid named-query response from AAI\";\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e1) {\n                System.out.println(\"Can\'t deliver notification: \" + notification);\n                e1.printStackTrace();\n            }\n			//\n			// Retract everything\n			//\n			retract($aainqf199RequestWrapper);\n			retract($aainqf199ResponseWrapper);\n			retract($manager);\n			retract($event);\n			return;\n		}	\n		//\n		// Extracted fields should not be null\n		//\n		if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\n		    (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\n		    (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\n		    (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\n		    (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\n		    (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\n		    (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\n		    (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\n		    (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\n			//\n			System.err.println(\"some fields are missing from AAI response.\");\n			//\n			// Fail and retract everything\n			//\n			retract($aainqf199RequestWrapper);\n			retract($aainqf199ResponseWrapper);\n			retract($manager);\n			retract($event);\n			return;\n		}\n		//\n		// We don\'t need them any more\n		//\n		retract($aainqf199ResponseWrapper);\n		retract($aainqf199RequestWrapper);  \n		//\n		// check the actor of this closed loop\n		//\n		switch ($params.getActor()) {\n			case \"APPC\":\n			{\n				//\n				// Construct an APPC request\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"ModifyConfig\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// insert operationWrapper into memory\n				//\n				insert(operationWrapper);\n				//\n				Request request = new Request();\n				request.CommonHeader = new CommonHeader();\n				request.CommonHeader.RequestID = $event.requestID;\n				request.Action = operation.operation;\n				request.Payload = new HashMap<String, Object>();\n				//\n				// Fill in the payload\n				// Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\n				//\n				String genericVNF = \"zdfw1fwl01pgn02\";\n				request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n				//\n				PGRequest pgRequest = new PGRequest();\n				pgRequest.pgStreams = new PGStreams();\n				\n				PGStream pgStream;\n				for(int i = 0; i < 5; i++){\n					pgStream = new PGStream();\n					pgStream.streamId = \"fw_udp\"+(i+1);\n					pgStream.isEnabled = \"true\";\n					pgRequest.pgStreams.pgStream.add(pgStream);\n				}\n				request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n				\n				if (request != null) {\n					//\n					// Insert request into memory\n					//\n					insert(request);\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					// message and history ??\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"${policyScope}\";\n					notification.policyVersion = \"${policyVersion}\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Now send the operation request\n					//\n					if (request instanceof Request) {\n						try {\n							System.out.println(\"APPC request sent:\");\n							System.out.println(Serialization.gsonPretty.toJson(request));\n							PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n						} catch (Exception e) {\n							e.printStackTrace();\n							System.out.println(\"Can\'t deliver request: \" + request);\n						}\n					}\n				} else {\n					//\n					// what happens if it is null\n					//\n				}\n			}\n			break;\n			case \"MSO\":\n			{\n				//\n				// Construct an operation\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"createModuleInstance\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// Construct an MSO request\n				//\n				MSORequest request = new MSORequest();\n				request.requestDetails = new MSORequestDetails();\n				request.requestDetails.modelInfo = new MSOModelInfo();\n				request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\n				request.requestDetails.requestInfo = new MSORequestInfo();\n				request.requestDetails.requestParameters = new MSORequestParameters();\n				request.requestDetails.requestParameters.userParams = null;\n				//\n				// cloudConfiguration\n				//\n				request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\n				request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\n				//\n				// modelInfo\n				//\n				request.requestDetails.modelInfo.modelType = \"vfModule\";\n				request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\n				request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\n				request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\n				request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\n				//\n				// requestInfo\n				//\n				request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\n				request.requestDetails.requestInfo.source = \"POLICY\";\n				request.requestDetails.requestInfo.suppressRollback = false;\n				//\n				// relatedInstanceList\n				//\n				MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\n				MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\n				relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\n				relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\n				//\n				relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\n				relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\n				//\n				relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\n				relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\n				//	\n				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\n				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\n				//\n				// print MSO request for debug\n				//\n				System.out.println(\"MSO request sent:\");\n				System.out.println(Serialization.gsonPretty.toJson(request));\n				//\n				//\n				//\n				if (request != null) {\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"${policyScope}\";\n					notification.policyVersion = \"${policyVersion}\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\n					//\n					String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\n					//\n					// Call MSO\n					//\n					MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\n					//\n					if (response != null) {\n						//\n						// Assign requestId\n						//\n						request.requestId = $event.requestID.toString();						\n						response.request.requestId = $event.requestID.toString();\n						//\n						// Insert facts\n						//\n						insert(operationWrapper);\n						insert(request);\n						insert(response);\n					} else {\n						//\n						// MSO request not even accepted\n						//\n						notification.message = operationWrapper.operation.toMessage();\n						operationWrapper.operation.message = operationWrapper.operation.toMessage();\n						operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n						$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n						notification.history.add(operationWrapper.operation);\n						notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n						//\n						// Let interested parties know\n						//\n						try {\n							System.out.println(Serialization.gsonPretty.toJson(notification));\n							PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n						} catch (Exception e) {\n							System.out.println(\"Can\'t deliver notification: \" + notification);\n							e.printStackTrace();\n						}\n	                    notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        try {\n                        	System.out.println(Serialization.gsonPretty.toJson(notification));\n                        	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                        } catch (Exception e) {\n                        	System.out.println(\"Can\'t deliver notification: \" + notification);\n                        	e.printStackTrace();\n                        }\n						//\n						// Retract everything\n						//\n						retract($event);\n						retract($manager);\n					}\n				} else {\n					System.err.println(\"constructed MSO request is invalid.\");\n				}\n			}\n			break; \n		} \nend\n		\n/*\n*\n* This rule responds to APPC Response Events\n*\n*/\nrule \"${policyName}.APPC.RESPONSE\"\n	when\n		$params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n		$request : Request( getCommonHeader().RequestID == $event.requestID )\n		$response : Response( getCommonHeader().RequestID == $event.requestID )	\n	then\n		System.out.println(\"rule APPC.RESPONSE is triggered.\");\n		if ($response.Status == null) {\n			$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n			$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n		} \n		//\n		// Get the Response Code\n		//\n		ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\n		if (code == null) {\n			$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n			$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n		}\n		//\n		// Construct notification\n		//\n		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n		notification.from = \"policy\";\n		notification.policyName = drools.getRule().getName();\n		notification.policyScope = \"${policyScope}\";\n		notification.policyVersion = \"${policyVersion}\";\n		notification.message = $operationWrapper.operation.toMessage();\n		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n		//\n		// Ok, let\'s figure out what APP-C\'s response is\n		//\n		switch (code) {\n			case ACCEPT:\n				$operationWrapper.operation.outcome = \"PROCESSING\";\n				break;\n			case ERROR:\n			case REJECT:\n				$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n				$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n				break;\n			case SUCCESS:\n				$operationWrapper.operation.outcome = \"SUCCESS\";\n				$manager.setControlLoopResult(\"SUCCESS\");\n				break;\n			case FAILURE:\n				$operationWrapper.operation.outcome = \"FAILURE\";\n				$manager.setControlLoopResult(\"FAILURE\");\n				break;\n		}\n		if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n\n			//\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		} else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\n			retract($response);\n		} else {\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n			//\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		}\n		\nend		\n\n/*\n*\n* This rule is used to clean up APPC response\n*\n*/		\nrule \"${policyName}.APPC.RESPONSE.CLEANUP\"\n	when\n		$params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n        $response : Response($id : getCommonHeader().RequestID )\n		not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \n	then\n		System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\n		retract($response);\nend\n\n/*\n*\n* This rule responds to MSO Response Events\n*\n*/\nrule \"${policyName}.MSO.RESPONSE\"\n	when\n		$params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n		$request : MSORequest( requestId == $event.requestID.toString() )\n		$response : MSOResponse( request.requestId == $event.requestID.toString() )	\n	then\n		System.out.println(\"rule MSO.RESPONSE is triggered.\");\n		//\n		// Construct notification\n		//\n		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n		notification.from = \"policy\";\n		notification.policyName = drools.getRule().getName();\n		notification.policyScope = \"${policyScope}\";\n		notification.policyVersion = \"${policyVersion}\";\n		notification.message = $operationWrapper.operation.toMessage();\n		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n		//\n		// The operation can either be succeeded or failed\n		// \n		if($response.request.requestStatus.requestState.equals(\"COMPLETE\")) {\n			$operationWrapper.operation.outcome = \"SUCCESS\";\n			$manager.setControlLoopResult(\"SUCCESS\");\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n			notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n            //\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		} else {\n			$operationWrapper.operation.outcome = \"FAILURE\";\n			$manager.setControlLoopResult(\"FAILURE\");\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n            //\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		}\n		\nend	','2017-03-14 19:55:47','demo');
-
-INSERT INTO `policyentity` VALUES (3156,'doACPolicyPut','2017-03-03 17:26:24',0,'Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:','doACPolicyPut','2017-03-03 17:26:24','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:34928b05-b0f6-4974-8458-f4d34a2a1764\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_MS_vFirewall.1.xml</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"PolicyName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DCAE</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ONAPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleConfigName</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ConfigName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">TcaMetrics-v1.0.0.5</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"service\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"uuid\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleServiceLocation</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"location\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskType\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskLevel\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"guard\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"TTLDate\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n        </AnyOf>\n    </Target>\n    <Rule RuleId=\"urn:com:xacml:rule:id:063161de-0534-4989-bd01-42f784daf21e\" Effect=\"Permit\">\n        <Target>\n            <AnyOf>\n                <AllOf>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">ACCESS</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:action\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Config</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                </AllOf>\n            </AnyOf>\n        </Target>\n        <AdviceExpressions>\n            <AdviceExpression AdviceId=\"MSID\" AppliesTo=\"Permit\">\n                <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Configuration</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"URLID\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URL/Config/com.Config_MS_vFirewall.1.json</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"PolicyName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_MS_vFirewall.1.xml</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"VersionNumber\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ONAPName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DCAE</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ConfigName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleConfigName</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:service\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">TcaMetrics-v1.0.0.5</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:uuid\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:Location\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleServiceLocation</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"Priority\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskType\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskLevel\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"guard\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"TTLDate\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                </AttributeAssignmentExpression>\n            </AdviceExpression>\n        </AdviceExpressions>\n    </Rule>\n</Policy>\n','Config_MS_vFirewall.1.xml',0,'com',1,NULL,3155),(3158,'doACPolicyPut','2017-03-03 17:28:10',0,'Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:','doACPolicyPut','2017-03-03 17:28:10','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:c220802a-70ee-4ca8-9f1e-f8a515650381\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"PolicyName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DCAE</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ONAPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleConfigName</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ConfigName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">TcaMetrics-v1.0.0.5</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"service\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"uuid\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleServiceLocation</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"location\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskType\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskLevel\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"guard\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"TTLDate\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n        </AnyOf>\n    </Target>\n    <Rule RuleId=\"urn:com:xacml:rule:id:fca27dab-6c09-4541-8136-328abaec2656\" Effect=\"Permit\">\n        <Target>\n            <AnyOf>\n                <AllOf>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">ACCESS</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:action\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Config</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                </AllOf>\n            </AnyOf>\n        </Target>\n        <AdviceExpressions>\n            <AdviceExpression AdviceId=\"MSID\" AppliesTo=\"Permit\">\n                <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Configuration</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"URLID\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URL/Config/com.Config_MS_vLoadBalancer.1.json</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"PolicyName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"VersionNumber\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ONAPName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DCAE</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ConfigName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleConfigName</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:service\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">TcaMetrics-v1.0.0.5</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:uuid\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:Location\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleServiceLocation</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"Priority\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskType\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskLevel\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"guard\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"TTLDate\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                </AttributeAssignmentExpression>\n            </AdviceExpression>\n        </AdviceExpressions>\n    </Rule>\n</Policy>\n','Config_MS_vLoadBalancer.1.xml',0,'com',1,NULL,3157);
-
-INSERT INTO `configurationdataentity` VALUES (3155,'{\"service\":\"TcaMetrics\",\"location\":\"SampleServiceLocation\",\"uuid\":\"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall\",\"policyName\":\"vFirewall\",\"description\":\"Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:\",\"configName\":\"SampleConfigName\",\"templateVersion\":\"OpenSource.version.1\",\"version\":\"1.0.0.5\",\"priority\":\"1\",\"policyScope\":\"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop\",\"content\":{\"thresholds\":[{\"severity\":\"MAJOR\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn\",\"thresholdValue\":\"300\",\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"version\":\"1.0.2\",\"direction\":\"LESS_OR_EQUAL\"},{\"severity\":\"CRITICAL\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn\",\"thresholdValue\":\"700\",\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"version\":\"1.0.2\",\"direction\":\"GREATER_OR_EQUAL\"}],\"functionalRole\":\"vFirewall\",\"name\":\"0\"}}\r\n','JSON','com.Config_MS_vFirewall.1.json','doACPolicyPut','2017-03-03 17:26:24',0,'','doACPolicyPut','2017-03-03 17:26:24',1),(3157,'{\"service\":\"TcaMetrics\",\"location\":\"SampleServiceLocation\",\"uuid\":\"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer\",\"policyName\":\"vLoadBalancer\",\"description\":\"Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:\",\"configName\":\"SampleConfigName\",\"templateVersion\":\"OpenSource.version.1\",\"version\":\"1.0.0.5\",\"priority\":\"1\",\"policyScope\":\"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop\",\"content\":{\"thresholds\":[{\"severity\":\"MAJOR\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn\",\"thresholdValue\":\"200\",\"closedLoopControlName\":\"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"version\":\"1.0.2\",\"direction\":\"GREATER_OR_EQUAL\"}],\"functionalRole\":\"vLoadBalancer\",\"name\":\"0\"}}\r\n','JSON','com.Config_MS_vLoadBalancer.1.json','doACPolicyPut','2017-03-03 17:28:10',0,'','doACPolicyPut','2017-03-03 17:28:10',1);
-
-INSERT INTO `configurationdataentity` VALUES (3201,'/* Autogenerated Code Please Don\'t change/remove this comment section. This is for the UI purpose. \n	 <$%BRMSParamTemplate=ControlLoopDemo__closedLoopControlName%$> \n */ \n\r\n\r\n/*-\n * ============LICENSE_START=======================================================\n * archetype-closed-loop-demo-rules\n * ================================================================================\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * \n *      http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============LICENSE_END=========================================================\n */\n\npackage org.onap.policy.controlloop;\n\nimport java.util.List;\nimport java.util.LinkedList;\nimport java.util.Map;\nimport java.util.HashMap;\nimport java.util.UUID;\n\nimport org.onap.policy.controlloop.VirtualControlLoopEvent;\nimport org.onap.policy.controlloop.ControlLoopEventStatus;\nimport org.onap.policy.controlloop.VirtualControlLoopNotification;\nimport org.onap.policy.controlloop.ControlLoopNotificationType;\nimport org.onap.policy.controlloop.ControlLoopOperation;\nimport org.onap.policy.controlloop.ControlLoopOperationWrapper;\nimport org.onap.policy.template.demo.ControlLoopException;\n\nimport org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;\nimport org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Manager;\nimport org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;\nimport org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Request;\nimport org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Response;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Tenant;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VfModule;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VServer;\nimport org.onap.policy.aai.util.Serialization;\n\nimport org.onap.policy.appc.CommonHeader;\nimport org.onap.policy.appc.Request;\nimport org.onap.policy.appc.Response;\nimport org.onap.policy.appc.ResponseCode;\nimport org.onap.policy.appc.ResponseStatus;\nimport org.onap.policy.appc.ResponseValue;\n\nimport org.onap.policy.template.demo.EventManager;\nimport org.onap.policy.vnf.trafficgenerator.PGRequest;\nimport org.onap.policy.vnf.trafficgenerator.PGStream;\nimport org.onap.policy.vnf.trafficgenerator.PGStreams;\n\nimport org.onap.policy.mso.MSOManager;\nimport org.onap.policy.mso.MSORequest;\nimport org.onap.policy.mso.MSORequestStatus;\nimport org.onap.policy.mso.MSORequestDetails;\nimport org.onap.policy.mso.MSOModelInfo;\nimport org.onap.policy.mso.MSOCloudConfiguration;\nimport org.onap.policy.mso.MSORequestInfo;\nimport org.onap.policy.mso.MSORequestParameters;\nimport org.onap.policy.mso.MSORelatedInstanceListElement;\nimport org.onap.policy.mso.MSORelatedInstance;\nimport org.onap.policy.mso.MSOResponse;\n\nimport org.onap.policy.drools.system.PolicyEngine;\n\n//\n// These parameters are required to build the runtime policy\n//\ndeclare Params\n    closedLoopControlName : String\n    actor : String\n    aaiURL : String\n    aaiUsername : String\n    aaiPassword : String\n    msoURL : String\n    msoUsername : String\n    msoPassword : String\n    aaiNamedQueryUUID : String\n    aaiPatternMatch : int \n    notificationTopic : String\n    appcTopic : String\nend\n\n/*\n*\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\n* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)\n*\n*\n*rule \"BRMSParamvFWDemoPolicy.SETUP\"\n*	when\n*	then\n*		System.out.println(\"rule SETUP is triggered.\");\n*		Params params = new Params();\n*		params.setClosedLoopControlName(\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\n*		params.setActor(\"APPC\");\n*		params.setAaiURL(\"null\");\n*		params.setAaiUsername(\"null\");\n*		params.setAaiPassword(\"null\");\n*		params.setMsoURL(\"null\");\n*		params.setMsoUsername(\"null\");\n*		params.setMsoPassword(\"null\");\n*		params.setAaiNamedQueryUUID(\"null\");\n*		params.setAaiPatternMatch(1);\n*		params.setNotificationTopic(\"POLICY-CL-MGT\");\n*		params.setAppcTopic(\"APPC-CL\");\n*		//\n*		// This stays in memory as long as the rule is alive and running\n*		//\n*		insert(params);\n*end\n*/\n/*\n*\n* This rule responds to DCAE Events\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.EVENT\"\n	when\n        $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\n	then\n		System.out.println(\"rule EVENT is triggered.\");\n		try {\n			// \n			// Check the requestID in the event to make sure it is not null before we create the EventManager. \n			// The EventManager will do extra syntax checking as well check if the closed loop is disabled/\n			//\n			if ($event.requestID == null) {\n				VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n				notification.notification = ControlLoopNotificationType.REJECTED;\n				notification.from = \"policy\";\n				notification.message = \"Missing requestID from DCAE event\";\n				notification.policyName = drools.getRule().getName();\n				notification.policyScope = \"com\";\n				notification.policyVersion = \"1\";\n				//\n				// Let interested parties know\n				//\n				try {\n					System.out.println(Serialization.gsonPretty.toJson(notification));\n					PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n				} catch (Exception e) {\n					e.printStackTrace();\n					System.out.println(\"Can\'t deliver notification: \" + notification);\n				}\n				//\n				// Retract it from memory\n				//\n				retract($event);\n				System.out.println(\"Event with requestID=null has been retracted.\");\n			} else {\n				//\n				// Create an EventManager\n				//\n				EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\n				//\n				// Determine if EventManager can actively process the event (i.e. syntax)\n				//\n				VirtualControlLoopNotification notification = manager.activate($event);\n				notification.from = \"policy\"; \n				notification.policyName = drools.getRule().getName();\n				notification.policyScope = \"com\";\n				notification.policyVersion = \"1\";\n				//\n				// Are we actively pursuing this event?\n				//\n				if (notification.notification == ControlLoopNotificationType.ACTIVE) {\n					//\n					// Insert Event Manager into memory, this will now kick off processing.\n					//\n					insert(manager);\n					//\n					// Let interested parties know\n					//\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						e.printStackTrace();\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n					}		\n				} else {\n					//\n					// Let interested parties know\n					//\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						e.printStackTrace();\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n					}\n					//\n					// Retract it from memory\n					//\n					retract($event);\n				}\n				//\n				// Now that the manager is inserted into Drools working memory, we\'ll wait for\n				// another rule to fire in order to continue processing. This way we can also\n				// then screen for additional ONSET and ABATED events for this same RequestIDs \n				// and for different RequestIDs but with the same closedLoopControlName and target.\n				//\n			}\n		//\n		} catch (Exception e) {\n			e.printStackTrace();\n			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n			notification.notification = ControlLoopNotificationType.REJECTED;\n			notification.message = \"Exception occurred \" + e.getMessage();\n			notification.policyName = drools.getRule().getName();\n			notification.policyScope = \"com\";\n			notification.policyVersion = \"1\";\n			//\n			//\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e1) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e1.printStackTrace();\n			}\n			//\n			// Retract the event\n			//\n			retract($event);\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\n* is created. We can start the operations for this closed loop.\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\n	then\n		System.out.println(\"rule EVENT.MANAGER is triggered.\");\n		//\n		// Check which event this is.\n		//\n		EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\n		//\n		// We only want the initial ONSET event in memory,\n		// all the other events need to be retracted to support\n		// cleanup and avoid the other rules being fired for this event.\n		//\n		if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\n			System.out.println(\"Retracting \"+eventStatus+\" Event.\");\n			retract($event);\n			return;\n		}\n		//\n		// Now the event in memory is first onset event\n		//\n		try {\n			//\n			// Pull the known AAI field from the Event\n			//\n			// generic-vnf is needed for vFirewall case\n			// vserver-name is needed for vLoadBalancer case\n			//\n			String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\n			String vserver = $event.AAI.get(\"vserver.vserver-name\");\n			//\n			// Check if we are implementing a simple pattern match.\n			//\n			if ($params.getAaiPatternMatch() == 1) {\n				//\n				// Yes\n				//\n				//Basic naming characteristics:\n				//VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\n				//Example: \n				//VF Name (9 characters):    cscf0001v\n				//VM Name(13 characters): cscf0001vm001\n				//VFC name(19 characters): cscf0001vm001cfg001\n				//\n				// zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \n				// replaced with\n				// zdfw1fwl01pgn02 or zdfw1fwl01pgn01\n				//\n				int index = genericVNF.lastIndexOf(\"fwl\");\n				if (index == -1) {\n					System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\n				} else {\n					genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\n				}\n				//\n				// Construct an APPC request\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"ModifyConfig\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// insert operationWrapper into memory\n				//\n				insert(operationWrapper);\n				//\n				Request request = new Request();\n				request.CommonHeader = new CommonHeader();\n				request.CommonHeader.RequestID = $event.requestID;\n				request.Action = operation.operation;\n				request.Payload = new HashMap<String, Object>();\n				//\n				// Fill in the payload\n				//\n				request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n				//\n				PGRequest pgRequest = new PGRequest();\n				pgRequest.pgStreams = new PGStreams();\n				\n				PGStream pgStream;\n				for(int i = 0; i < 5; i++){\n					pgStream = new PGStream();\n					pgStream.streamId = \"fw_udp\"+(i+1);\n					pgStream.isEnabled = \"true\";\n					pgRequest.pgStreams.pgStream.add(pgStream);\n				}\n				request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n				\n				if (request != null) {\n					//\n					// Insert request into memory\n					//\n					insert(request);\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					// message and history ??\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"com\";\n					notification.policyVersion = \"1\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Now send the operation request\n					//\n					if (request instanceof Request) {\n						try {\n							System.out.println(\"APPC request sent:\");\n							System.out.println(Serialization.gsonPretty.toJson(request));\n							PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n						} catch (Exception e) {\n							e.printStackTrace();\n							System.out.println(\"Can\'t deliver request: \" + request);\n						}\n					}\n				} else {\n					//\n					// what happens if it is null\n					//\n				}\n				//\n			} else {\n				//\n				// create AAI named-query request with UUID started with \"F199\"\n				//\n				AAINQF199Request aainqf199request = new AAINQF199Request();\n				AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\n				AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\n				AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\n				//\n				// queryParameters\n				//\n				aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \n				aainqf199queryparam.namedQuery = aainqf199namedquery;\n				aainqf199request.queryParameters = aainqf199queryparam;\n				//\n				// instanceFilters\n				//\n				Map aainqf199instancefiltermap = new HashMap();\n				Map aainqf199instancefiltermapitem = new HashMap();\n				aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \n				aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\n				aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\n				aainqf199request.instanceFilters = aainqf199instancefilter;\n				//\n				// print aainqf199request for debug\n				//\n				System.out.println(\"AAI Request sent:\");\n				System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\n				//\n				// Create AAINQF199RequestWrapper\n				//\n				AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\n				//\n				// insert aainqf199request into memory\n				//\n				insert(aainqf199RequestWrapper);\n			}\n			//\n		} catch (Exception e) {\n		 e.printStackTrace();\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n	then\n		System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\n		//\n		// send the request\n		//\n		AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\n													   $aainqf199RequestWrapper.aainqf199request, $event.requestID);\n		//\n		// Check AAI response\n		//\n		if (aainqf199response == null) {\n			System.err.println(\"Failed to get AAI response\");\n			//\n			// Fail and retract everything\n			//\n			retract($event);\n			retract($manager);\n			retract($aainqf199RequestWrapper);\n		} else {\n			//\n			// Create AAINQF199ResponseWrapper\n			//\n			AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\n			//\n			// insert aainqf199ResponseWrapper to memeory\n			//\n			insert(aainqf199ResponseWrapper);\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE\"\n	when \n		$params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n		$aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\n	then\n		System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\n		//\n		// Extract related fields out of AAINQF199RESPONSE\n		//\n		String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \n		       vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\n		       serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\n		       vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \n		       vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\n		try {\n			//\n			// vnfItem\n			//\n			vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\n			vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\n			vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\n			vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\n			vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\n			vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n			vnfItemModelVersion = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\n			vnfItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// serviceItem\n			//\n			serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\n			serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\n			serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n			serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\n			serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\n			serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// Find the index for base vf module and non-base vf module\n			//\n			int baseIndex = -1;\n			int nonBaseIndex = -1;\n			List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;\n			for (AAINQF199InventoryResponseItem m : inventoryItems) {\n				if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {\n					baseIndex = inventoryItems.indexOf(m);\n				} else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {\n					nonBaseIndex = inventoryItems.indexOf(m);\n				}\n				//\n				if (baseIndex != -1 && nonBaseIndex != -1) {\n					break;\n				}\n			}\n			//\n			// Report the error if either base vf module or non-base vf module is not found\n			//\n			if (baseIndex == -1 || nonBaseIndex == -1) {\n				System.err.println(\"Either base or non-base vf module is not found from AAI response.\");\n				retract($aainqf199RequestWrapper);\n				retract($aainqf199ResponseWrapper);\n				retract($manager);\n				retract($event);\n				return;\n			}\n			//\n			// This comes from the base module\n			//\n			vfModuleItemVfModuleName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;\n			vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\n			//\n			// vfModuleItem - NOT the base module\n			//\n			vfModuleItemPersonaModelId = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;\n			vfModuleItemPersonaModelVersion = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;\n			vfModuleItemModelName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;\n			vfModuleItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// tenantItem\n			//\n			tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\n			//\n			// cloudRegionItem\n			//\n			cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\n			//\n		} catch (Exception e) {\n			e.printStackTrace();\n			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n			notification.notification = ControlLoopNotificationType.REJECTED;\n			notification.message = \"Exception occurred \" + e.getMessage();\n			notification.policyName = drools.getRule().getName();\n			notification.policyScope = \"com\";\n			notification.policyVersion = \"1\";\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e1) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e1.printStackTrace();\n			}\n			//\n			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n			notification.message = \"Invalid named-query response from AAI\";\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e1) {\n                System.out.println(\"Can\'t deliver notification: \" + notification);\n                e1.printStackTrace();\n            }\n			//\n			// Retract everything\n			//\n			retract($aainqf199RequestWrapper);\n			retract($aainqf199ResponseWrapper);\n			retract($manager);\n			retract($event);\n			return;\n		}	\n		//\n		// Extracted fields should not be null\n		//\n		if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\n		    (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\n		    (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\n		    (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\n		    (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\n		    (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\n		    (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\n		    (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\n		    (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\n			//\n			System.err.println(\"some fields are missing from AAI response.\");\n			//\n			// Fail and retract everything\n			//\n			retract($aainqf199RequestWrapper);\n			retract($aainqf199ResponseWrapper);\n			retract($manager);\n			retract($event);\n			return;\n		}\n		//\n		// We don\'t need them any more\n		//\n		retract($aainqf199ResponseWrapper);\n		retract($aainqf199RequestWrapper);  \n		//\n		// check the actor of this closed loop\n		//\n		switch ($params.getActor()) {\n			case \"APPC\":\n			{\n				//\n				// Construct an APPC request\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"ModifyConfig\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// insert operationWrapper into memory\n				//\n				insert(operationWrapper);\n				//\n				Request request = new Request();\n				request.CommonHeader = new CommonHeader();\n				request.CommonHeader.RequestID = $event.requestID;\n				request.Action = operation.operation;\n				request.Payload = new HashMap<String, Object>();\n				//\n				// Fill in the payload\n				// Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\n				//\n				String genericVNF = \"zdfw1fwl01pgn02\";\n				request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n				//\n				PGRequest pgRequest = new PGRequest();\n				pgRequest.pgStreams = new PGStreams();\n				\n				PGStream pgStream;\n				for(int i = 0; i < 5; i++){\n					pgStream = new PGStream();\n					pgStream.streamId = \"fw_udp\"+(i+1);\n					pgStream.isEnabled = \"true\";\n					pgRequest.pgStreams.pgStream.add(pgStream);\n				}\n				request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n				\n				if (request != null) {\n					//\n					// Insert request into memory\n					//\n					insert(request);\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					// message and history ??\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"com\";\n					notification.policyVersion = \"1\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Now send the operation request\n					//\n					if (request instanceof Request) {\n						try {\n							System.out.println(\"APPC request sent:\");\n							System.out.println(Serialization.gsonPretty.toJson(request));\n							PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n						} catch (Exception e) {\n							e.printStackTrace();\n							System.out.println(\"Can\'t deliver request: \" + request);\n						}\n					}\n				} else {\n					//\n					// what happens if it is null\n					//\n				}\n			}\n			break;\n			case \"MSO\":\n			{\n				//\n				// Construct an operation\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"createModuleInstance\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// Construct an MSO request\n				//\n				MSORequest request = new MSORequest();\n				request.requestDetails = new MSORequestDetails();\n				request.requestDetails.modelInfo = new MSOModelInfo();\n				request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\n				request.requestDetails.requestInfo = new MSORequestInfo();\n				request.requestDetails.requestParameters = new MSORequestParameters();\n				request.requestDetails.requestParameters.userParams = null;\n				//\n				// cloudConfiguration\n				//\n				request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\n				request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\n				//\n				// modelInfo\n				//\n				request.requestDetails.modelInfo.modelType = \"vfModule\";\n				request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\n				request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\n				request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\n				request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\n				//\n				// requestInfo\n				//\n				request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\n				request.requestDetails.requestInfo.source = \"POLICY\";\n				request.requestDetails.requestInfo.suppressRollback = false;\n				//\n				// relatedInstanceList\n				//\n				MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\n				MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\n				relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\n				relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\n				//\n				relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\n				relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\n				//\n				relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\n				relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\n				//	\n				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\n				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\n				//\n				// print MSO request for debug\n				//\n				System.out.println(\"MSO request sent:\");\n				System.out.println(Serialization.gsonPretty.toJson(request));\n				//\n				//\n				//\n				if (request != null) {\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"com\";\n					notification.policyVersion = \"1\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\n					//\n					String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\n					//\n					// Call MSO\n					//\n					MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\n					//\n					if (response != null) {\n						//\n						// Assign requestId\n						//\n						request.requestId = $event.requestID.toString();						\n						response.request.requestId = $event.requestID.toString();\n						//\n						// Insert facts\n						//\n						insert(operationWrapper);\n						insert(request);\n						insert(response);\n					} else {\n						//\n						// MSO request not even accepted\n						//\n						notification.message = operationWrapper.operation.toMessage();\n						operationWrapper.operation.message = operationWrapper.operation.toMessage();\n						operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n						$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n						notification.history.add(operationWrapper.operation);\n						notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n						//\n						// Let interested parties know\n						//\n						try {\n							System.out.println(Serialization.gsonPretty.toJson(notification));\n							PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n						} catch (Exception e) {\n							System.out.println(\"Can\'t deliver notification: \" + notification);\n							e.printStackTrace();\n						}\n	                    notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        try {\n                        	System.out.println(Serialization.gsonPretty.toJson(notification));\n                        	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                        } catch (Exception e) {\n                        	System.out.println(\"Can\'t deliver notification: \" + notification);\n                        	e.printStackTrace();\n                        }\n						//\n						// Retract everything\n						//\n						retract($event);\n						retract($manager);\n					}\n				} else {\n					System.err.println(\"constructed MSO request is invalid.\");\n				}\n			}\n			break; \n		} \nend\n		\n/*\n*\n* This rule responds to APPC Response Events\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.APPC.RESPONSE\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n		$request : Request( getCommonHeader().RequestID == $event.requestID )\n		$response : Response( getCommonHeader().RequestID == $event.requestID )	\n	then\n		System.out.println(\"rule APPC.RESPONSE is triggered.\");\n		if ($response.Status == null) {\n			$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n			$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n		} \n		//\n		// Get the Response Code\n		//\n		ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\n		if (code == null) {\n			$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n			$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n		}\n		//\n		// Construct notification\n		//\n		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n		notification.from = \"policy\";\n		notification.policyName = drools.getRule().getName();\n		notification.policyScope = \"com\";\n		notification.policyVersion = \"1\";\n		notification.message = $operationWrapper.operation.toMessage();\n		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n		//\n		// Ok, let\'s figure out what APP-C\'s response is\n		//\n		switch (code) {\n			case ACCEPT:\n				$operationWrapper.operation.outcome = \"PROCESSING\";\n				break;\n			case ERROR:\n			case REJECT:\n				$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n				$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n				break;\n			case SUCCESS:\n				$operationWrapper.operation.outcome = \"SUCCESS\";\n				$manager.setControlLoopResult(\"SUCCESS\");\n				break;\n			case FAILURE:\n				$operationWrapper.operation.outcome = \"FAILURE\";\n				$manager.setControlLoopResult(\"FAILURE\");\n				break;\n		}\n		if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n\n			//\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		} else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\n			retract($response);\n		} else {\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n			//\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		}\n		\nend		\n\n/*\n*\n* This rule is used to clean up APPC response\n*\n*/		\nrule \"BRMSParamvFWDemoPolicy.APPC.RESPONSE.CLEANUP\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n        $response : Response($id : getCommonHeader().RequestID )\n		not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \n	then\n		System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\n		retract($response);\nend\n\n/*\n*\n* This rule responds to MSO Response Events\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.MSO.RESPONSE\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n		$request : MSORequest( requestId == $event.requestID.toString() )\n		$response : MSOResponse( request.requestId == $event.requestID.toString() )	\n	then\n		System.out.println(\"rule MSO.RESPONSE is triggered.\");\n		//\n		// Construct notification\n		//\n		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n		notification.from = \"policy\";\n		notification.policyName = drools.getRule().getName();\n		notification.policyScope = \"com\";\n		notification.policyVersion = \"1\";\n		notification.message = $operationWrapper.operation.toMessage();\n		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n		//\n		// The operation can either be succeeded or failed\n		// \n		if($response.request.requestStatus.requestState.equals(\"COMPLETE\")) {\n			$operationWrapper.operation.outcome = \"SUCCESS\";\n			$manager.setControlLoopResult(\"SUCCESS\");\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n			notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n            //\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		} else {\n			$operationWrapper.operation.outcome = \"FAILURE\";\n			$manager.setControlLoopResult(\"FAILURE\");\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n            //\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		}\n		\nend	\nrule \"com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.Params\" \n	salience 1000 \n	when\n	then\n		Params params = new Params();\n		params.setAaiPatternMatch(1);\n		params.setAppcTopic(\"APPC-CL\");\n		params.setAaiURL(\"null\");\n		params.setMsoPassword(\"null\");\n		params.setClosedLoopControlName(\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\n		params.setMsoURL(\"null\");\n		params.setAaiUsername(\"null\");\n		params.setActor(\"APPC\");\n		params.setMsoUsername(\"null\");\n		params.setAaiNamedQueryUUID(\"null\");\n		params.setAaiPassword(\"null\");\n		params.setNotificationTopic(\"POLICY-CL-MGT\");\n		insert(params);\nend\r\n','OTHER','com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt','doACPolicyPut','2017-03-14 19:58:19',0,'','doACPolicyPut','2017-03-14 19:58:19',1),(3203,'/* Autogenerated Code Please Don\'t change/remove this comment section. This is for the UI purpose. \n	 <$%BRMSParamTemplate=ControlLoopDemo__closedLoopControlName%$> \n */ \n\r\n\r\n/*-\n * ============LICENSE_START=======================================================\n * archetype-closed-loop-demo-rules\n * ================================================================================\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * \n *      http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============LICENSE_END=========================================================\n */\n\npackage org.onap.policy.controlloop;\n\nimport java.util.List;\nimport java.util.LinkedList;\nimport java.util.Map;\nimport java.util.HashMap;\nimport java.util.UUID;\n\nimport org.onap.policy.controlloop.VirtualControlLoopEvent;\nimport org.onap.policy.controlloop.ControlLoopEventStatus;\nimport org.onap.policy.controlloop.VirtualControlLoopNotification;\nimport org.onap.policy.controlloop.ControlLoopNotificationType;\nimport org.onap.policy.controlloop.ControlLoopOperation;\nimport org.onap.policy.controlloop.ControlLoopOperationWrapper;\nimport org.onap.policy.template.demo.ControlLoopException;\n\nimport org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;\nimport org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Manager;\nimport org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;\nimport org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Request;\nimport org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Response;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Tenant;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VfModule;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VServer;\nimport org.onap.policy.aai.util.Serialization;\n\nimport org.onap.policy.appc.CommonHeader;\nimport org.onap.policy.appc.Request;\nimport org.onap.policy.appc.Response;\nimport org.onap.policy.appc.ResponseCode;\nimport org.onap.policy.appc.ResponseStatus;\nimport org.onap.policy.appc.ResponseValue;\n\nimport org.onap.policy.template.demo.EventManager;\nimport org.onap.policy.vnf.trafficgenerator.PGRequest;\nimport org.onap.policy.vnf.trafficgenerator.PGStream;\nimport org.onap.policy.vnf.trafficgenerator.PGStreams;\n\nimport org.onap.policy.mso.MSOManager;\nimport org.onap.policy.mso.MSORequest;\nimport org.onap.policy.mso.MSORequestStatus;\nimport org.onap.policy.mso.MSORequestDetails;\nimport org.onap.policy.mso.MSOModelInfo;\nimport org.onap.policy.mso.MSOCloudConfiguration;\nimport org.onap.policy.mso.MSORequestInfo;\nimport org.onap.policy.mso.MSORequestParameters;\nimport org.onap.policy.mso.MSORelatedInstanceListElement;\nimport org.onap.policy.mso.MSORelatedInstance;\nimport org.onap.policy.mso.MSOResponse;\n\nimport org.onap.policy.drools.system.PolicyEngine;\n\n//\n// These parameters are required to build the runtime policy\n//\ndeclare Params\n    closedLoopControlName : String\n    actor : String\n    aaiURL : String\n    aaiUsername : String\n    aaiPassword : String\n    msoURL : String\n    msoUsername : String\n    msoPassword : String\n    aaiNamedQueryUUID : String\n    aaiPatternMatch : int \n    notificationTopic : String\n    appcTopic : String\nend\n\n/*\n*\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\n* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)\n*\n*\n*rule \"BRMSParamvLBDemoPolicy.SETUP\"\n*	when\n*	then\n*		System.out.println(\"rule SETUP is triggered.\");\n*		Params params = new Params();\n*		params.setClosedLoopControlName(\"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\n*		params.setActor(\"MSO\");\n*		params.setAaiURL(\"https://aai.api.simpledemo.openecomp.org:8443\");\n*		params.setAaiUsername(\"POLICY\");\n*		params.setAaiPassword(\"POLICY\");\n*		params.setMsoURL(\"http://vm1.mso.simpledemo.openecomp.org:8080/onap/mso/infra\");\n*		params.setMsoUsername(\"InfraPortalClient\");\n*		params.setMsoPassword(\"password1$\");\n*		params.setAaiNamedQueryUUID(\"f199cb88-5e69-4b1f-93e0-6f257877d066\");\n*		params.setAaiPatternMatch(0);\n*		params.setNotificationTopic(\"POLICY-CL-MGT\");\n*		params.setAppcTopic(\"APPC-CL\");\n*		//\n*		// This stays in memory as long as the rule is alive and running\n*		//\n*		insert(params);\n*end\n*/\n/*\n*\n* This rule responds to DCAE Events\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.EVENT\"\n	when\n        $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\n	then\n		System.out.println(\"rule EVENT is triggered.\");\n		try {\n			// \n			// Check the requestID in the event to make sure it is not null before we create the EventManager. \n			// The EventManager will do extra syntax checking as well check if the closed loop is disabled/\n			//\n			if ($event.requestID == null) {\n				VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n				notification.notification = ControlLoopNotificationType.REJECTED;\n				notification.from = \"policy\";\n				notification.message = \"Missing requestID from DCAE event\";\n				notification.policyName = drools.getRule().getName();\n				notification.policyScope = \"com\";\n				notification.policyVersion = \"1\";\n				//\n				// Let interested parties know\n				//\n				try {\n					System.out.println(Serialization.gsonPretty.toJson(notification));\n					PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n				} catch (Exception e) {\n					e.printStackTrace();\n					System.out.println(\"Can\'t deliver notification: \" + notification);\n				}\n				//\n				// Retract it from memory\n				//\n				retract($event);\n				System.out.println(\"Event with requestID=null has been retracted.\");\n			} else {\n				//\n				// Create an EventManager\n				//\n				EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\n				//\n				// Determine if EventManager can actively process the event (i.e. syntax)\n				//\n				VirtualControlLoopNotification notification = manager.activate($event);\n				notification.from = \"policy\"; \n				notification.policyName = drools.getRule().getName();\n				notification.policyScope = \"com\";\n				notification.policyVersion = \"1\";\n				//\n				// Are we actively pursuing this event?\n				//\n				if (notification.notification == ControlLoopNotificationType.ACTIVE) {\n					//\n					// Insert Event Manager into memory, this will now kick off processing.\n					//\n					insert(manager);\n					//\n					// Let interested parties know\n					//\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						e.printStackTrace();\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n					}		\n				} else {\n					//\n					// Let interested parties know\n					//\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						e.printStackTrace();\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n					}\n					//\n					// Retract it from memory\n					//\n					retract($event);\n				}\n				//\n				// Now that the manager is inserted into Drools working memory, we\'ll wait for\n				// another rule to fire in order to continue processing. This way we can also\n				// then screen for additional ONSET and ABATED events for this same RequestIDs \n				// and for different RequestIDs but with the same closedLoopControlName and target.\n				//\n			}\n		//\n		} catch (Exception e) {\n			e.printStackTrace();\n			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n			notification.notification = ControlLoopNotificationType.REJECTED;\n			notification.message = \"Exception occurred \" + e.getMessage();\n			notification.policyName = drools.getRule().getName();\n			notification.policyScope = \"com\";\n			notification.policyVersion = \"1\";\n			//\n			//\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e1) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e1.printStackTrace();\n			}\n			//\n			// Retract the event\n			//\n			retract($event);\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\n* is created. We can start the operations for this closed loop.\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\n	then\n		System.out.println(\"rule EVENT.MANAGER is triggered.\");\n		//\n		// Check which event this is.\n		//\n		EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\n		//\n		// We only want the initial ONSET event in memory,\n		// all the other events need to be retracted to support\n		// cleanup and avoid the other rules being fired for this event.\n		//\n		if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\n			System.out.println(\"Retracting \"+eventStatus+\" Event.\");\n			retract($event);\n			return;\n		}\n		//\n		// Now the event in memory is first onset event\n		//\n		try {\n			//\n			// Pull the known AAI field from the Event\n			//\n			// generic-vnf is needed for vFirewall case\n			// vserver-name is needed for vLoadBalancer case\n			//\n			String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\n			String vserver = $event.AAI.get(\"vserver.vserver-name\");\n			//\n			// Check if we are implementing a simple pattern match.\n			//\n			if ($params.getAaiPatternMatch() == 1) {\n				//\n				// Yes\n				//\n				//Basic naming characteristics:\n				//VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\n				//Example: \n				//VF Name (9 characters):    cscf0001v\n				//VM Name(13 characters): cscf0001vm001\n				//VFC name(19 characters): cscf0001vm001cfg001\n				//\n				// zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \n				// replaced with\n				// zdfw1fwl01pgn02 or zdfw1fwl01pgn01\n				//\n				int index = genericVNF.lastIndexOf(\"fwl\");\n				if (index == -1) {\n					System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\n				} else {\n					genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\n				}\n				//\n				// Construct an APPC request\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"ModifyConfig\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// insert operationWrapper into memory\n				//\n				insert(operationWrapper);\n				//\n				Request request = new Request();\n				request.CommonHeader = new CommonHeader();\n				request.CommonHeader.RequestID = $event.requestID;\n				request.Action = operation.operation;\n				request.Payload = new HashMap<String, Object>();\n				//\n				// Fill in the payload\n				//\n				request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n				//\n				PGRequest pgRequest = new PGRequest();\n				pgRequest.pgStreams = new PGStreams();\n				\n				PGStream pgStream;\n				for(int i = 0; i < 5; i++){\n					pgStream = new PGStream();\n					pgStream.streamId = \"fw_udp\"+(i+1);\n					pgStream.isEnabled = \"true\";\n					pgRequest.pgStreams.pgStream.add(pgStream);\n				}\n				request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n				\n				if (request != null) {\n					//\n					// Insert request into memory\n					//\n					insert(request);\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					// message and history ??\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"com\";\n					notification.policyVersion = \"1\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Now send the operation request\n					//\n					if (request instanceof Request) {\n						try {\n							System.out.println(\"APPC request sent:\");\n							System.out.println(Serialization.gsonPretty.toJson(request));\n							PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n						} catch (Exception e) {\n							e.printStackTrace();\n							System.out.println(\"Can\'t deliver request: \" + request);\n						}\n					}\n				} else {\n					//\n					// what happens if it is null\n					//\n				}\n				//\n			} else {\n				//\n				// create AAI named-query request with UUID started with \"F199\"\n				//\n				AAINQF199Request aainqf199request = new AAINQF199Request();\n				AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\n				AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\n				AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\n				//\n				// queryParameters\n				//\n				aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \n				aainqf199queryparam.namedQuery = aainqf199namedquery;\n				aainqf199request.queryParameters = aainqf199queryparam;\n				//\n				// instanceFilters\n				//\n				Map aainqf199instancefiltermap = new HashMap();\n				Map aainqf199instancefiltermapitem = new HashMap();\n				aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \n				aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\n				aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\n				aainqf199request.instanceFilters = aainqf199instancefilter;\n				//\n				// print aainqf199request for debug\n				//\n				System.out.println(\"AAI Request sent:\");\n				System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\n				//\n				// Create AAINQF199RequestWrapper\n				//\n				AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\n				//\n				// insert aainqf199request into memory\n				//\n				insert(aainqf199RequestWrapper);\n			}\n			//\n		} catch (Exception e) {\n		 e.printStackTrace();\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n	then\n		System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\n		//\n		// send the request\n		//\n		AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\n													   $aainqf199RequestWrapper.aainqf199request, $event.requestID);\n		//\n		// Check AAI response\n		//\n		if (aainqf199response == null) {\n			System.err.println(\"Failed to get AAI response\");\n			//\n			// Fail and retract everything\n			//\n			retract($event);\n			retract($manager);\n			retract($aainqf199RequestWrapper);\n		} else {\n			//\n			// Create AAINQF199ResponseWrapper\n			//\n			AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\n			//\n			// insert aainqf199ResponseWrapper to memeory\n			//\n			insert(aainqf199ResponseWrapper);\n		}\nend\n\n/*\n*\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE\"\n	when \n		$params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n		$aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\n	then\n		System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\n		//\n		// Extract related fields out of AAINQF199RESPONSE\n		//\n		String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \n		       vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\n		       serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\n		       vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \n		       vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\n		try {\n			//\n			// vnfItem\n			//\n			vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\n			vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\n			vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\n			vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\n			vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\n			vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n			vnfItemModelVersion = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\n			vnfItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// serviceItem\n			//\n			serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\n			serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\n			serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n			serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\n			serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\n			serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// Find the index for base vf module and non-base vf module\n			//\n			int baseIndex = -1;\n			int nonBaseIndex = -1;\n			List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;\n			for (AAINQF199InventoryResponseItem m : inventoryItems) {\n				if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {\n					baseIndex = inventoryItems.indexOf(m);\n				} else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {\n					nonBaseIndex = inventoryItems.indexOf(m);\n				}\n				//\n				if (baseIndex != -1 && nonBaseIndex != -1) {\n					break;\n				}\n			}\n			//\n			// Report the error if either base vf module or non-base vf module is not found\n			//\n			if (baseIndex == -1 || nonBaseIndex == -1) {\n				System.err.println(\"Either base or non-base vf module is not found from AAI response.\");\n				retract($aainqf199RequestWrapper);\n				retract($aainqf199ResponseWrapper);\n				retract($manager);\n				retract($event);\n				return;\n			}\n			//\n			// This comes from the base module\n			//\n			vfModuleItemVfModuleName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;\n			vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\n			//\n			// vfModuleItem - NOT the base module\n			//\n			vfModuleItemPersonaModelId = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;\n			vfModuleItemPersonaModelVersion = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;\n			vfModuleItemModelName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;\n			vfModuleItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;\n			//\n			// tenantItem\n			//\n			tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\n			//\n			// cloudRegionItem\n			//\n			cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\n			//\n		} catch (Exception e) {\n			e.printStackTrace();\n			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n			notification.notification = ControlLoopNotificationType.REJECTED;\n			notification.message = \"Exception occurred \" + e.getMessage();\n			notification.policyName = drools.getRule().getName();\n			notification.policyScope = \"com\";\n			notification.policyVersion = \"1\";\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e1) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e1.printStackTrace();\n			}\n			//\n			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n			notification.message = \"Invalid named-query response from AAI\";\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e1) {\n                System.out.println(\"Can\'t deliver notification: \" + notification);\n                e1.printStackTrace();\n            }\n			//\n			// Retract everything\n			//\n			retract($aainqf199RequestWrapper);\n			retract($aainqf199ResponseWrapper);\n			retract($manager);\n			retract($event);\n			return;\n		}	\n		//\n		// Extracted fields should not be null\n		//\n		if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\n		    (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\n		    (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\n		    (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\n		    (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\n		    (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\n		    (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\n		    (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\n		    (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\n			//\n			System.err.println(\"some fields are missing from AAI response.\");\n			//\n			// Fail and retract everything\n			//\n			retract($aainqf199RequestWrapper);\n			retract($aainqf199ResponseWrapper);\n			retract($manager);\n			retract($event);\n			return;\n		}\n		//\n		// We don\'t need them any more\n		//\n		retract($aainqf199ResponseWrapper);\n		retract($aainqf199RequestWrapper);  \n		//\n		// check the actor of this closed loop\n		//\n		switch ($params.getActor()) {\n			case \"APPC\":\n			{\n				//\n				// Construct an APPC request\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"ModifyConfig\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// insert operationWrapper into memory\n				//\n				insert(operationWrapper);\n				//\n				Request request = new Request();\n				request.CommonHeader = new CommonHeader();\n				request.CommonHeader.RequestID = $event.requestID;\n				request.Action = operation.operation;\n				request.Payload = new HashMap<String, Object>();\n				//\n				// Fill in the payload\n				// Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\n				//\n				String genericVNF = \"zdfw1fwl01pgn02\";\n				request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n				//\n				PGRequest pgRequest = new PGRequest();\n				pgRequest.pgStreams = new PGStreams();\n				\n				PGStream pgStream;\n				for(int i = 0; i < 5; i++){\n					pgStream = new PGStream();\n					pgStream.streamId = \"fw_udp\"+(i+1);\n					pgStream.isEnabled = \"true\";\n					pgRequest.pgStreams.pgStream.add(pgStream);\n				}\n				request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n				\n				if (request != null) {\n					//\n					// Insert request into memory\n					//\n					insert(request);\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					// message and history ??\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"com\";\n					notification.policyVersion = \"1\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Now send the operation request\n					//\n					if (request instanceof Request) {\n						try {\n							System.out.println(\"APPC request sent:\");\n							System.out.println(Serialization.gsonPretty.toJson(request));\n							PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n						} catch (Exception e) {\n							e.printStackTrace();\n							System.out.println(\"Can\'t deliver request: \" + request);\n						}\n					}\n				} else {\n					//\n					// what happens if it is null\n					//\n				}\n			}\n			break;\n			case \"MSO\":\n			{\n				//\n				// Construct an operation\n				//\n				ControlLoopOperation operation = new ControlLoopOperation();\n				operation.actor = $params.getActor();\n				operation.operation = \"createModuleInstance\";\n				operation.target = $event.target;\n				//\n				// Create operationWrapper\n				//\n				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n				//\n				// Construct an MSO request\n				//\n				MSORequest request = new MSORequest();\n				request.requestDetails = new MSORequestDetails();\n				request.requestDetails.modelInfo = new MSOModelInfo();\n				request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\n				request.requestDetails.requestInfo = new MSORequestInfo();\n				request.requestDetails.requestParameters = new MSORequestParameters();\n				request.requestDetails.requestParameters.userParams = null;\n				//\n				// cloudConfiguration\n				//\n				request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\n				request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\n				//\n				// modelInfo\n				//\n				request.requestDetails.modelInfo.modelType = \"vfModule\";\n				request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\n				request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\n				request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\n				request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\n				//\n				// requestInfo\n				//\n				request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\n				request.requestDetails.requestInfo.source = \"POLICY\";\n				request.requestDetails.requestInfo.suppressRollback = false;\n				//\n				// relatedInstanceList\n				//\n				MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\n				MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\n				relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\n				relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\n				//\n				relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\n				relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\n				relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\n				//\n				relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\n				relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\n				relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\n				//	\n				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\n				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\n				//\n				// print MSO request for debug\n				//\n				System.out.println(\"MSO request sent:\");\n				System.out.println(Serialization.gsonPretty.toJson(request));\n				//\n				//\n				//\n				if (request != null) {\n					//\n					// Tell interested parties we are performing this Operation\n					//\n					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n					notification.notification = ControlLoopNotificationType.OPERATION;\n					notification.from = \"policy\";\n					notification.policyName = drools.getRule().getName();\n					notification.policyScope = \"com\";\n					notification.policyVersion = \"1\";\n					try {\n						System.out.println(Serialization.gsonPretty.toJson(notification));\n						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n					} catch (Exception e) {\n						System.out.println(\"Can\'t deliver notification: \" + notification);\n						e.printStackTrace();\n					}\n					//\n					// Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\n					//\n					String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\n					//\n					// Call MSO\n					//\n					MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\n					//\n					if (response != null) {\n						//\n						// Assign requestId\n						//\n						request.requestId = $event.requestID.toString();						\n						response.request.requestId = $event.requestID.toString();\n						//\n						// Insert facts\n						//\n						insert(operationWrapper);\n						insert(request);\n						insert(response);\n					} else {\n						//\n						// MSO request not even accepted\n						//\n						notification.message = operationWrapper.operation.toMessage();\n						operationWrapper.operation.message = operationWrapper.operation.toMessage();\n						operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n						$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n						notification.history.add(operationWrapper.operation);\n						notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n						//\n						// Let interested parties know\n						//\n						try {\n							System.out.println(Serialization.gsonPretty.toJson(notification));\n							PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n						} catch (Exception e) {\n							System.out.println(\"Can\'t deliver notification: \" + notification);\n							e.printStackTrace();\n						}\n	                    notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        try {\n                        	System.out.println(Serialization.gsonPretty.toJson(notification));\n                        	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                        } catch (Exception e) {\n                        	System.out.println(\"Can\'t deliver notification: \" + notification);\n                        	e.printStackTrace();\n                        }\n						//\n						// Retract everything\n						//\n						retract($event);\n						retract($manager);\n					}\n				} else {\n					System.err.println(\"constructed MSO request is invalid.\");\n				}\n			}\n			break; \n		} \nend\n		\n/*\n*\n* This rule responds to APPC Response Events\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.APPC.RESPONSE\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n		$request : Request( getCommonHeader().RequestID == $event.requestID )\n		$response : Response( getCommonHeader().RequestID == $event.requestID )	\n	then\n		System.out.println(\"rule APPC.RESPONSE is triggered.\");\n		if ($response.Status == null) {\n			$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n			$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n		} \n		//\n		// Get the Response Code\n		//\n		ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\n		if (code == null) {\n			$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n			$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n		}\n		//\n		// Construct notification\n		//\n		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n		notification.from = \"policy\";\n		notification.policyName = drools.getRule().getName();\n		notification.policyScope = \"com\";\n		notification.policyVersion = \"1\";\n		notification.message = $operationWrapper.operation.toMessage();\n		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n		//\n		// Ok, let\'s figure out what APP-C\'s response is\n		//\n		switch (code) {\n			case ACCEPT:\n				$operationWrapper.operation.outcome = \"PROCESSING\";\n				break;\n			case ERROR:\n			case REJECT:\n				$operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n				$manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n				break;\n			case SUCCESS:\n				$operationWrapper.operation.outcome = \"SUCCESS\";\n				$manager.setControlLoopResult(\"SUCCESS\");\n				break;\n			case FAILURE:\n				$operationWrapper.operation.outcome = \"FAILURE\";\n				$manager.setControlLoopResult(\"FAILURE\");\n				break;\n		}\n		if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n\n			//\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		} else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\n			retract($response);\n		} else {\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n			//\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		}\n		\nend		\n\n/*\n*\n* This rule is used to clean up APPC response\n*\n*/		\nrule \"BRMSParamvLBDemoPolicy.APPC.RESPONSE.CLEANUP\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n        $response : Response($id : getCommonHeader().RequestID )\n		not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \n	then\n		System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\n		retract($response);\nend\n\n/*\n*\n* This rule responds to MSO Response Events\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.MSO.RESPONSE\"\n	when\n		$params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n		$request : MSORequest( requestId == $event.requestID.toString() )\n		$response : MSOResponse( request.requestId == $event.requestID.toString() )	\n	then\n		System.out.println(\"rule MSO.RESPONSE is triggered.\");\n		//\n		// Construct notification\n		//\n		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n		notification.from = \"policy\";\n		notification.policyName = drools.getRule().getName();\n		notification.policyScope = \"com\";\n		notification.policyVersion = \"1\";\n		notification.message = $operationWrapper.operation.toMessage();\n		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n		//\n		// The operation can either be succeeded or failed\n		// \n		if($response.request.requestStatus.requestState.equals(\"COMPLETE\")) {\n			$operationWrapper.operation.outcome = \"SUCCESS\";\n			$manager.setControlLoopResult(\"SUCCESS\");\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n			notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n            //\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		} else {\n			$operationWrapper.operation.outcome = \"FAILURE\";\n			$manager.setControlLoopResult(\"FAILURE\");\n			notification.history.add($operationWrapper.operation);\n			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n			//\n			// Let interested parties know\n			//\n			try {\n				System.out.println(Serialization.gsonPretty.toJson(notification));\n				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n			} catch (Exception e) {\n				System.out.println(\"Can\'t deliver notification: \" + notification);\n				e.printStackTrace();\n			}\n			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n            	System.out.println(Serialization.gsonPretty.toJson(notification));\n            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n            	System.out.println(\"Can\'t deliver notification: \" + notification);\n            	e.printStackTrace();\n            }\n            //\n			// We are going to retract these objects from memory\n			//\n			System.out.println(\"Retracting everything\");\n			retract($operationWrapper);\n			retract($request);\n			retract($response);\n			retract($event);\n			retract($manager);\n		}\n		\nend	\nrule \"com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.Params\" \n	salience 1000 \n	when\n	then\n		Params params = new Params();\n		params.setAaiPatternMatch(0);\n		params.setAppcTopic(\"APPC-CL\");\n		params.setAaiURL(\"https://aai.api.simpledemo.openecomp.org:8443\");\n		params.setMsoPassword(\"password1$\");\n		params.setClosedLoopControlName(\"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\n		params.setAaiUsername(\"POLICY\");\n		params.setMsoURL(\"http://vm1.mso.simpledemo.openecomp.org:8080/onap/mso/infra\");\n		params.setActor(\"MSO\");\n		params.setMsoUsername(\"InfraPortalClient\");\n		params.setAaiNamedQueryUUID(\"f199cb88-5e69-4b1f-93e0-6f257877d066\");\n		params.setAaiPassword(\"POLICY\");\n		params.setNotificationTopic(\"POLICY-CL-MGT\");\n		insert(params);\nend\r\n','OTHER','com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt','doACPolicyPut','2017-03-14 20:00:56',0,'','doACPolicyPut','2017-03-14 20:00:56',1);
-
-INSERT INTO `policyentity` VALUES (3202,'doACPolicyPut','2017-03-14 19:58:19',0,'BRMSParam vFW Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:','doACPolicyPut','2017-03-14 19:58:19','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:256f4712-a965-4817-a851-a71bdeb9fb49\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>BRMSParam vFW Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"PolicyName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DROOLS</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ONAPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">BRMS_PARAM_RULE</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ConfigName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskType\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskLevel\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"guard\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"TTLDate\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n        </AnyOf>\n    </Target>\n    <Rule RuleId=\"urn:com:xacml:rule:id:8cdb88aa-448b-4ed1-bce5-6a037651e73c\" Effect=\"Permit\">\n        <Target>\n            <AnyOf>\n                <AllOf>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">ACCESS</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:action\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Config</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                </AllOf>\n            </AnyOf>\n        </Target>\n        <AdviceExpressions>\n            <AdviceExpression AdviceId=\"BRMSPARAMID\" AppliesTo=\"Permit\">\n                <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Configuration</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"URLID\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URL/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"PolicyName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"VersionNumber\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ONAPName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DROOLS</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ConfigName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">BRMS_PARAM_RULE</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"key:controller\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">vFW</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskType\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskLevel\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"guard\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"TTLDate\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                </AttributeAssignmentExpression>\n            </AdviceExpression>\n        </AdviceExpressions>\n    </Rule>\n</Policy>\n','Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml',0,'com',1,NULL,3201),(3204,'doACPolicyPut','2017-03-14 20:00:56',0,'BRMSParam vLB Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:','doACPolicyPut','2017-03-14 20:00:56','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:ace93d23-7a21-450a-87b4-5ff11e01d4b1\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>BRMSParam vLB Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"PolicyName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DROOLS</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ONAPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">BRMS_PARAM_RULE</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ConfigName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskType\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskLevel\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"guard\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"TTLDate\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n        </AnyOf>\n    </Target>\n    <Rule RuleId=\"urn:com:xacml:rule:id:9d472f3a-bab1-4bee-8bfc-0ee1b4e11ad6\" Effect=\"Permit\">\n        <Target>\n            <AnyOf>\n                <AllOf>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">ACCESS</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:action\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Config</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                </AllOf>\n            </AnyOf>\n        </Target>\n        <AdviceExpressions>\n            <AdviceExpression AdviceId=\"BRMSPARAMID\" AppliesTo=\"Permit\">\n                <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Configuration</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"URLID\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URL/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"PolicyName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"VersionNumber\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ONAPName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DROOLS</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ConfigName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">BRMS_PARAM_RULE</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"key:controller\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">vDNS</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskType\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskLevel\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"guard\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"TTLDate\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                </AttributeAssignmentExpression>\n            </AdviceExpression>\n        </AdviceExpressions>\n    </Rule>\n</Policy>\n','Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml',0,'com',1,NULL,3203);
-
-INSERT INTO `policyversion` VALUES (1,'com/Config_BRMS_Param_BRMSParamvFWDemoPolicy',1,1,'2017-03-03 17:16:37','demo','2017-03-03 17:16:37','demo'),(2,'com/Config_BRMS_Param_BRMSParamvLBDemoPolicy',1,1,'2017-03-03 17:20:03','demo','2017-03-03 17:20:03','demo');
-
-INSERT INTO `policyversion` VALUES (3,'com/Config_MS_vFirewall',1,1,'2017-03-03 17:26:26','demo','2017-03-03 17:26:26','demo'),(4,'com/Config_MS_vLoadBalancer',1,1,'2017-03-03 17:28:13','demo','2017-03-03 17:28:13','demo');
-
 insert into sequence (seq_name, seq_count) values ('SEQ_GEN', 3050); 
 
 set foreign_key_checks=1; 
diff --git a/packages/base/src/files/install/mysql/data/171001_upgrade_script.sql b/packages/base/src/files/install/mysql/data/171001_upgrade_script.sql
index c6f6303..8c61c91 100644
--- a/packages/base/src/files/install/mysql/data/171001_upgrade_script.sql
+++ b/packages/base/src/files/install/mysql/data/171001_upgrade_script.sql
@@ -26,4 +26,6 @@
   `workstep` varchar(250) DEFAULT NULL,
   `treatments` varchar(1024) DEFAULT NULL,
   PRIMARY KEY (`id`)
-);
\ No newline at end of file
+);
+
+INSERT INTO `onap_sdk`.`microservicemodels` (`id`, `modelName`, `DESCRIPTION`, `Dependency`, `imported_by`, `attributes`, `ref_attributes`, `sub_attributes`, `version`, `enumValues`, `annotation`) VALUES ('1', 'tca_policy', 'MicroService TOSCA model', '[]', 'demo', '', 'tca_policy=tca_policy:MANY-false,', '{\"thresholds\":{\"severity\":\"string:defaultValue-null:required-null:MANY-false\",\"fieldPath\":\"string:defaultValue-null:required-null:MANY-false\",\"thresholdValue\":\"integer:defaultValue-null:required-null:MANY-false\",\"closedLoopEventStatus\":\"string:defaultValue-null:required-null:MANY-false\",\"closedLoopControlName\":\"string:defaultValue-null:required-null:MANY-false\",\"version\":\"string:defaultValue-null:required-null:MANY-false\",\"direction\":\"string:defaultValue-null:required-null:MANY-false\"},\"tca_policy\":{\"domain\":\"string:defaultValue-null:required-null:MANY-false\",\"metricsPerEventName\":\"metricsPerEventName:MANY-true\"},\"metricsPerEventName\":{\"policyVersion\":\"string:defaultValue-null:required-null:MANY-false\",\"thresholds\":\"thresholds:MANY-true\",\"policyName\":\"string:defaultValue-null:required-null:MANY-false\",\"controlLoopSchemaType\":\"string:defaultValue-null:required-null:MANY-false\",\"policyScope\":\"string:defaultValue-null:required-null:MANY-false\",\"eventName\":\"string:defaultValue-null:required-null:MANY-false\"}}', '1.1.0', '', '');
diff --git a/packages/base/src/files/install/servers/brmsgw/config.properties b/packages/base/src/files/install/servers/brmsgw/config.properties
index 9e95ed7..f56e87c 100644
--- a/packages/base/src/files/install/servers/brmsgw/config.properties
+++ b/packages/base/src/files/install/servers/brmsgw/config.properties
@@ -54,14 +54,12 @@
 policyKeyID = controller
 
 ## GroupNames can be comma separated values. 
-groupNames = default, vFW , vDNS
+groupNames = default, amsterdam
 
 default.groupID = ${{groupID}}
 default.artifactID = ${{artifactID}}
-vFW.groupID= ${{VFW_GROUP_ID}}
-vFW.artifactID= ${{VFW_ARTIFACT_ID}}
-vDNS.groupID= ${{VDNS_GROUP_ID}}
-vDNS.artifactID= ${{VDNS_ARTIFACT_ID}}
+amsterdam.groupID= ${{AMSTERDAM_GROUP_ID}}
+amsterdam.artifactID= ${{AMSTERDAM_ARTIFACT_ID}}
 
 #Integrity Monitor values
 #database driver for Integrity Monitor
diff --git a/packages/base/src/files/install/servers/brmsgw/dependency.json b/packages/base/src/files/install/servers/brmsgw/dependency.json
index 9c25c74..ffd368e 100644
--- a/packages/base/src/files/install/servers/brmsgw/dependency.json
+++ b/packages/base/src/files/install/servers/brmsgw/dependency.json
@@ -28,6 +28,75 @@
 			"groupId": "org.onap.policy.drools-applications",
 			"artifactId": "trafficgenerator",
 			"version": "${{BRMS_DEPENDENCY_VERSION}}"
-		}]
-	}
+		}],
+        "amsterdam": [{
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "events",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appclcm",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "vfc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "so",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "aai",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "sdc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "trafficgenerator",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "eventmanager",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "guard",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actorServiceProvider",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.appc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.appclcm",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.so",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.vfc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "policy-yaml",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "com.att.research.xacml",
+            "artifactId": "xacml-pdp",
+            "version": "1.0.0"
+        }]
+    }
 }
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml b/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml
deleted file mode 100755
index e57f8fa..0000000
--- a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:256f4712-a965-4817-a851-a71bdeb9fb49" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>BRMSParam vFW Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:8cdb88aa-448b-4ed1-bce5-6a037651e73c" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="BRMSPARAMID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="key:controller" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">vFW</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml b/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml
deleted file mode 100755
index 7b60d8e..0000000
--- a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:ace93d23-7a21-450a-87b4-5ff11e01d4b1" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>BRMSParam vLB Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:9d472f3a-bab1-4bee-8bfc-0ee1b4e11ad6" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="BRMSPARAMID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="key:controller" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">vDNS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vFirewall.1.xml b/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vFirewall.1.xml
deleted file mode 100644
index 3b81613..0000000
--- a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vFirewall.1.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:34928b05-b0f6-4974-8458-f4d34a2a1764" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>Micro Service vFirewall Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vFirewall.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="service" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="uuid" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="location" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:063161de-0534-4989-bd01-42f784daf21e" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="MSID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_MS_vFirewall.1.json</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vFirewall.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:service" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:uuid" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:Location" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="Priority" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vLoadBalancer.1.xml b/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vLoadBalancer.1.xml
deleted file mode 100644
index d48bf9e..0000000
--- a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vLoadBalancer.1.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:c220802a-70ee-4ca8-9f1e-f8a515650381" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>Micro Service vLoadBalancer Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="service" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="uuid" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="location" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:fca27dab-6c09-4541-8136-328abaec2656" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="MSID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_MS_vLoadBalancer.1.json</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:service" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:uuid" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:Location" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="Priority" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/onap/WEB-INF/classes/portal.properties b/packages/base/src/files/install/servers/onap/WEB-INF/classes/portal.properties
index 6b5ba61..4c95afb 100644
--- a/packages/base/src/files/install/servers/onap/WEB-INF/classes/portal.properties
+++ b/packages/base/src/files/install/servers/onap/WEB-INF/classes/portal.properties
@@ -28,11 +28,6 @@
 max.idle.time = 5
 user.attribute.name = user_attribute
 
-# CSP settings
-csp_cookie_name          = attESSec
-csp_gate_keeper_prod_key = PROD
-testing=testing
-
 #Use REST API instead of UEB to fetch the functional menu data
 use_rest_for_functional_menu=true
 
@@ -44,11 +39,11 @@
 portal.api.impl.class = org.openecomp.portalapp.service.OnBoardingApiServiceImpl
 
 # CSP Global Log On for single sign on
-onap_redirect_url = ${{ONAP_REDIRECT_URL}}
+ecomp_redirect_url = ${{ONAP_REDIRECT_URL}}
 
 # URL of the ONAP Portal REST API
 # onap.homer.com is a development machine
-onap_rest_url = ${{ONAP_REST_URL}}
+ecomp_rest_url = ${{ONAP_REST_URL}}
 
 # Applications do not need to run a UEB listener in 1610.  
 ueb_listeners_enable = false
@@ -60,7 +55,7 @@
 # UEB servers
 ueb_url_list = ${{ONAP_UEB_URL_LIST}}
 # ONAP Portal listens on this UEB topic
-onap_portal_inbox_name = ${{ONAP_PORTAL_INBOX_NAME}}
+ecomp_portal_inbox_name = ${{ONAP_PORTAL_INBOX_NAME}}
 # Replace these 3 default values with the ones for your specific App,
 # as shown on the on-boarding page on the ONAP Portal web application.
 ueb_app_key = ${{ONAP_UEB_APP_KEY}}
diff --git a/packages/base/src/files/install/servers/onap/WEB-INF/conf/system.properties b/packages/base/src/files/install/servers/onap/WEB-INF/conf/system.properties
index 387a4e2..bb33c3f 100644
--- a/packages/base/src/files/install/servers/onap/WEB-INF/conf/system.properties
+++ b/packages/base/src/files/install/servers/onap/WEB-INF/conf/system.properties
@@ -65,7 +65,7 @@
 my_login_feed_output_dir      = /tmp/MyLogins
 
 # ONAP Portal Shared Context REST API URL
-onap_shared_context_rest_url= ${{ONAP_SHARED_CONTEXT_REST_URL}}
+ecomp_shared_context_rest_url= ${{ONAP_SHARED_CONTEXT_REST_URL}}
 
 # Link shown in Help menu
 contact_us_link = 
diff --git a/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml b/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml
deleted file mode 100644
index e27f163..0000000
--- a/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:0f246245-4e4e-4fb4-87f2-c95ebc0b6c30" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>vFW Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:d4281b8e-698f-4860-b96f-aa85f70710a6" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="BRMSPARAMID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="key:controller" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">vFW</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml b/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml
deleted file mode 100644
index 54bcbaa..0000000
--- a/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:a5230f4f-23c0-47ed-a039-61c47f87d4ed" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>vLB Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:7df3cfcd-0e50-4569-b9b8-abf5022e8e1c" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="BRMSPARAMID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="key:controller" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">vDNS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_MS_vFirewall.1.xml b/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_MS_vFirewall.1.xml
deleted file mode 100644
index ca01be5..0000000
--- a/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_MS_vFirewall.1.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:74c4f8d3-293e-475e-bdda-ad0812873733" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vFirewall.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="service" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="uuid" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="location" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:2f26c8c8-ee97-4e68-a5b0-2af7d72015e1" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="MSID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_MS_vFirewall.1.json</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vFirewall.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:service" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:uuid" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:Location" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="Priority" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_MS_vLoadBalancer.1.xml b/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_MS_vLoadBalancer.1.xml
deleted file mode 100644
index 663f4f3..0000000
--- a/packages/base/src/files/install/servers/pap/bin/pdps/default/com.Config_MS_vLoadBalancer.1.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:36f42684-7ba5-40dc-9824-1a3c16b4eb50" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="service" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="uuid" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="location" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:848c1e8b-facd-407b-bda8-dd1863c403a5" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="MSID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_MS_vLoadBalancer.1.json</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:service" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:uuid" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:Location" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="Priority" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/bin/pdps/default/xacml.pip.properties b/packages/base/src/files/install/servers/pap/bin/pdps/default/xacml.pip.properties
deleted file mode 100644
index 846848f..0000000
--- a/packages/base/src/files/install/servers/pap/bin/pdps/default/xacml.pip.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-#Tue Feb 07 10:35:08 EST 2017
-AAF.description=AAFEngine to communicate with AAF to take decisions
-AAF.classname=org.onap.policy.xacml.std.pip.engines.aaf.AAFEngine
-AAF.name=AAFEngine
-xacml.pip.engines=AAF
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/bin/pdps/default/xacml.policy.properties b/packages/base/src/files/install/servers/pap/bin/pdps/default/xacml.policy.properties
deleted file mode 100644
index bddd54f..0000000
--- a/packages/base/src/files/install/servers/pap/bin/pdps/default/xacml.policy.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-#Tue Feb 07 10:35:08 EST 2017
-com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml.name=Config_BRMS_Param_BRMSParamvFWDemoPolicy
-com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml.name=Config_BRMS_Param_BRMSParamvLBDemoPolicy
-com.Config_MS_vFirewall.1.xml.name=Config_MS_vFirewall
-com.Config_MS_vLoadBalancer.1.xml.name=Config_MS_vLoadBalancer
-xacml.referencedPolicies=
-xacml.rootPolicies=com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml,com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml,com.Config_MS_vLoadBalancer.1.xml,com.Config_MS_vFirewall.1.xml
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt b/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt
deleted file mode 100755
index 6ff244e..0000000
--- a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt
+++ /dev/null
@@ -1,1145 +0,0 @@
-/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. 
-	 <$%BRMSParamTemplate=ControlLoopDemo__closedLoopControlName%$> 
- */ 
-
-
-/*-
- * ============LICENSE_START=======================================================
- * archetype-closed-loop-demo-rules
- * ================================================================================
- * Copyright (C) 2017 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=========================================================
- */
-
-package org.onap.policy.controlloop;
-
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.UUID;
-
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopOperation;
-import org.onap.policy.controlloop.ControlLoopOperationWrapper;
-import org.onap.policy.template.demo.ControlLoopException;
-
-import org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;
-import org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;
-import org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;
-import org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;
-import org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;
-import org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;
-import org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;
-import org.onap.policy.aai.AAINQF199.AAINQF199Manager;
-import org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;
-import org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;
-import org.onap.policy.aai.AAINQF199.AAINQF199Request;
-import org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;
-import org.onap.policy.aai.AAINQF199.AAINQF199Response;
-import org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
-import org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;
-import org.onap.policy.aai.AAINQF199.AAINQF199Tenant;
-import org.onap.policy.aai.AAINQF199.AAINQF199VfModule;
-import org.onap.policy.aai.AAINQF199.AAINQF199VServer;
-import org.onap.policy.aai.util.Serialization;
-
-import org.onap.policy.appc.CommonHeader;
-import org.onap.policy.appc.Request;
-import org.onap.policy.appc.Response;
-import org.onap.policy.appc.ResponseCode;
-import org.onap.policy.appc.ResponseStatus;
-import org.onap.policy.appc.ResponseValue;
-
-import org.onap.policy.template.demo.EventManager;
-import org.onap.policy.vnf.trafficgenerator.PGRequest;
-import org.onap.policy.vnf.trafficgenerator.PGStream;
-import org.onap.policy.vnf.trafficgenerator.PGStreams;
-
-import org.onap.policy.mso.MSOManager;
-import org.onap.policy.mso.MSORequest;
-import org.onap.policy.mso.MSORequestStatus;
-import org.onap.policy.mso.MSORequestDetails;
-import org.onap.policy.mso.MSOModelInfo;
-import org.onap.policy.mso.MSOCloudConfiguration;
-import org.onap.policy.mso.MSORequestInfo;
-import org.onap.policy.mso.MSORequestParameters;
-import org.onap.policy.mso.MSORelatedInstanceListElement;
-import org.onap.policy.mso.MSORelatedInstance;
-import org.onap.policy.mso.MSOResponse;
-
-import org.onap.policy.drools.system.PolicyEngine;
-
-//
-// These parameters are required to build the runtime policy
-//
-declare Params
-    closedLoopControlName : String
-    actor : String
-    aaiURL : String
-    aaiUsername : String
-    aaiPassword : String
-    msoURL : String
-    msoUsername : String
-    msoPassword : String
-    aaiNamedQueryUUID : String
-    aaiPatternMatch : int 
-    notificationTopic : String
-    appcTopic : String
-end
-
-/*
-*
-* Called once and only once to insert the parameters into working memory for this Closed Loop policy.
-* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)
-*
-*
-*rule "BRMSParamvFWDemoPolicy.SETUP"
-*	when
-*	then
-*		System.out.println("rule SETUP is triggered.");
-*		Params params = new Params();
-*		params.setClosedLoopControlName("CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8");
-*		params.setActor("APPC");
-*		params.setAaiURL("null");
-*		params.setAaiUsername("null");
-*		params.setAaiPassword("null");
-*		params.setMsoURL("null");
-*		params.setMsoUsername("null");
-*		params.setMsoPassword("null");
-*		params.setAaiNamedQueryUUID("null");
-*		params.setAaiPatternMatch(1);
-*		params.setNotificationTopic("POLICY-CL-MGT");
-*		params.setAppcTopic("APPC-CL");
-*		//
-*		// This stays in memory as long as the rule is alive and running
-*		//
-*		insert(params);
-*end
-*/
-/*
-*
-* This rule responds to DCAE Events
-*
-*/
-rule "BRMSParamvFWDemoPolicy.EVENT"
-	when
-        $params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))
-	then
-		System.out.println("rule EVENT is triggered.");
-		try {
-			// 
-			// Check the requestID in the event to make sure it is not null before we create the EventManager. 
-			// The EventManager will do extra syntax checking as well check if the closed loop is disabled/
-			//
-			if ($event.requestID == null) {
-				VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-				notification.notification = ControlLoopNotificationType.REJECTED;
-				notification.from = "policy";
-				notification.message = "Missing requestID from DCAE event";
-				notification.policyName = drools.getRule().getName();
-				notification.policyScope = "com";
-				notification.policyVersion = "1";
-				//
-				// Let interested parties know
-				//
-				try {
-					System.out.println(Serialization.gsonPretty.toJson(notification));
-					PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-				} catch (Exception e) {
-					e.printStackTrace();
-					System.out.println("Can't deliver notification: " + notification);
-				}
-				//
-				// Retract it from memory
-				//
-				retract($event);
-				System.out.println("Event with requestID=null has been retracted.");
-			} else {
-				//
-				// Create an EventManager
-				//
-				EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);
-				//
-				// Determine if EventManager can actively process the event (i.e. syntax)
-				//
-				VirtualControlLoopNotification notification = manager.activate($event);
-				notification.from = "policy"; 
-				notification.policyName = drools.getRule().getName();
-				notification.policyScope = "com";
-				notification.policyVersion = "1";
-				//
-				// Are we actively pursuing this event?
-				//
-				if (notification.notification == ControlLoopNotificationType.ACTIVE) {
-					//
-					// Insert Event Manager into memory, this will now kick off processing.
-					//
-					insert(manager);
-					//
-					// Let interested parties know
-					//
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						e.printStackTrace();
-						System.out.println("Can't deliver notification: " + notification);
-					}		
-				} else {
-					//
-					// Let interested parties know
-					//
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						e.printStackTrace();
-						System.out.println("Can't deliver notification: " + notification);
-					}
-					//
-					// Retract it from memory
-					//
-					retract($event);
-				}
-				//
-				// Now that the manager is inserted into Drools working memory, we'll wait for
-				// another rule to fire in order to continue processing. This way we can also
-				// then screen for additional ONSET and ABATED events for this same RequestIDs 
-				// and for different RequestIDs but with the same closedLoopControlName and target.
-				//
-			}
-		//
-		} catch (Exception e) {
-			e.printStackTrace();
-			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-			notification.notification = ControlLoopNotificationType.REJECTED;
-			notification.message = "Exception occurred " + e.getMessage();
-			notification.policyName = drools.getRule().getName();
-			notification.policyScope = "com";
-			notification.policyVersion = "1";
-			//
-			//
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e1) {
-				System.out.println("Can't deliver notification: " + notification);
-				e1.printStackTrace();
-			}
-			//
-			// Retract the event
-			//
-			retract($event);
-		}
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager
-* is created. We can start the operations for this closed loop.
-*
-*/
-rule "BRMSParamvFWDemoPolicy.EVENT.MANAGER"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)
-	then
-		System.out.println("rule EVENT.MANAGER is triggered.");
-		//
-		// Check which event this is.
-		//
-		EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);
-		//
-		// We only want the initial ONSET event in memory,
-		// all the other events need to be retracted to support
-		// cleanup and avoid the other rules being fired for this event.
-		//
-		if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {
-			System.out.println("Retracting "+eventStatus+" Event.");
-			retract($event);
-			return;
-		}
-		//
-		// Now the event in memory is first onset event
-		//
-		try {
-			//
-			// Pull the known AAI field from the Event
-			//
-			// generic-vnf is needed for vFirewall case
-			// vserver-name is needed for vLoadBalancer case
-			//
-			String genericVNF = $event.AAI.get("generic-vnf.vnf-id");
-			String vserver = $event.AAI.get("vserver.vserver-name");
-			//
-			// Check if we are implementing a simple pattern match.
-			//
-			if ($params.getAaiPatternMatch() == 1) {
-				//
-				// Yes
-				//
-				//Basic naming characteristics:
-				//VF Name (9 char)+VM name (13 char total)+VFC (19 char total)
-				//Example: 
-				//VF Name (9 characters):    cscf0001v
-				//VM Name(13 characters): cscf0001vm001
-				//VFC name(19 characters): cscf0001vm001cfg001
-				//
-				// zdfw1fwl01fwl02 or zdfw1fwl01fwl01  
-				// replaced with
-				// zdfw1fwl01pgn02 or zdfw1fwl01pgn01
-				//
-				int index = genericVNF.lastIndexOf("fwl");
-				if (index == -1) {
-					System.err.println("The generic-vnf.vnf-id from DCAE Event is not valid.");
-				} else {
-					genericVNF = genericVNF.substring(0, index) + "pgn" + genericVNF.substring(index+"fwl".length());
-				}
-				//
-				// Construct an APPC request
-				//
-				ControlLoopOperation operation = new ControlLoopOperation();
-				operation.actor = $params.getActor();
-				operation.operation = "ModifyConfig";
-				operation.target = $event.target;
-				//
-				// Create operationWrapper
-				//
-				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-				//
-				// insert operationWrapper into memory
-				//
-				insert(operationWrapper);
-				//
-				Request request = new Request();
-				request.CommonHeader = new CommonHeader();
-				request.CommonHeader.RequestID = $event.requestID;
-				request.Action = operation.operation;
-				request.Payload = new HashMap<String, Object>();
-				//
-				// Fill in the payload
-				//
-				request.Payload.put("generic-vnf.vnf-id", genericVNF);
-				//
-				PGRequest pgRequest = new PGRequest();
-				pgRequest.pgStreams = new PGStreams();
-				
-				PGStream pgStream;
-				for(int i = 0; i < 5; i++){
-					pgStream = new PGStream();
-					pgStream.streamId = "fw_udp"+(i+1);
-					pgStream.isEnabled = "true";
-					pgRequest.pgStreams.pgStream.add(pgStream);
-				}
-				request.Payload.put("pg-streams", pgRequest.pgStreams);
-				
-				if (request != null) {
-					//
-					// Insert request into memory
-					//
-					insert(request);
-					//
-					// Tell interested parties we are performing this Operation
-					//
-					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-					notification.notification = ControlLoopNotificationType.OPERATION;
-					// message and history ??
-					notification.from = "policy";
-					notification.policyName = drools.getRule().getName();
-					notification.policyScope = "com";
-					notification.policyVersion = "1";
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						System.out.println("Can't deliver notification: " + notification);
-						e.printStackTrace();
-					}
-					//
-					// Now send the operation request
-					//
-					if (request instanceof Request) {
-						try {
-							System.out.println("APPC request sent:");
-							System.out.println(Serialization.gsonPretty.toJson(request));
-							PolicyEngine.manager.deliver($params.getAppcTopic(), request);
-						} catch (Exception e) {
-							e.printStackTrace();
-							System.out.println("Can't deliver request: " + request);
-						}
-					}
-				} else {
-					//
-					// what happens if it is null
-					//
-				}
-				//
-			} else {
-				//
-				// create AAI named-query request with UUID started with "F199"
-				//
-				AAINQF199Request aainqf199request = new AAINQF199Request();
-				AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();
-				AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();
-				AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();
-				//
-				// queryParameters
-				//
-				aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); 
-				aainqf199queryparam.namedQuery = aainqf199namedquery;
-				aainqf199request.queryParameters = aainqf199queryparam;
-				//
-				// instanceFilters
-				//
-				Map aainqf199instancefiltermap = new HashMap();
-				Map aainqf199instancefiltermapitem = new HashMap();
-				aainqf199instancefiltermapitem.put("vserver-name", vserver); 
-				aainqf199instancefiltermap.put("vserver", aainqf199instancefiltermapitem);
-				aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);
-				aainqf199request.instanceFilters = aainqf199instancefilter;
-				//
-				// print aainqf199request for debug
-				//
-				System.out.println("AAI Request sent:");
-				System.out.println(Serialization.gsonPretty.toJson(aainqf199request));
-				//
-				// Create AAINQF199RequestWrapper
-				//
-				AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);
-				//
-				// insert aainqf199request into memory
-				//
-				insert(aainqf199RequestWrapper);
-			}
-			//
-		} catch (Exception e) {
-		 e.printStackTrace();
-		}
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager
-* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.
-*
-*/
-rule "BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
-	then
-		System.out.println("rule EVENT.MANAGER.AAINQF199REQUEST is triggered.");
-		//
-		// send the request
-		//
-		AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),
-													   $aainqf199RequestWrapper.aainqf199request, $event.requestID);
-		//
-		// Check AAI response
-		//
-		if (aainqf199response == null) {
-			System.err.println("Failed to get AAI response");
-			//
-			// Fail and retract everything
-			//
-			retract($event);
-			retract($manager);
-			retract($aainqf199RequestWrapper);
-		} else {
-			//
-			// Create AAINQF199ResponseWrapper
-			//
-			AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);
-			//
-			// insert aainqf199ResponseWrapper to memeory
-			//
-			insert(aainqf199ResponseWrapper);
-		}
-end
-
-/*
-*
-* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.
-*
-*/
-rule "BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE"
-	when 
-		$params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
-		$aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)
-	then
-		System.out.println("rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.");
-		//
-		// Extract related fields out of AAINQF199RESPONSE
-		//
-		String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, 
-		       vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,
-		       serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,
-		       vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, 
-		       vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;
-		try {
-			//
-			// vnfItem
-			//
-			vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;
-			vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;
-			vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1);
-			vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;
-			vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;
-			vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
-			vnfItemModelVersion = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;
-			vnfItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
-			//
-			// serviceItem
-			//
-			serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;
-			serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;
-			serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
-			serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;
-			serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;
-			serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
-			//
-			// Find the index for base vf module and non-base vf module
-			//
-			int baseIndex = -1;
-			int nonBaseIndex = -1;
-			List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;
-			for (AAINQF199InventoryResponseItem m : inventoryItems) {
-				if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {
-					baseIndex = inventoryItems.indexOf(m);
-				} else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {
-					nonBaseIndex = inventoryItems.indexOf(m);
-				}
-				//
-				if (baseIndex != -1 && nonBaseIndex != -1) {
-					break;
-				}
-			}
-			//
-			// Report the error if either base vf module or non-base vf module is not found
-			//
-			if (baseIndex == -1 || nonBaseIndex == -1) {
-				System.err.println("Either base or non-base vf module is not found from AAI response.");
-				retract($aainqf199RequestWrapper);
-				retract($aainqf199ResponseWrapper);
-				retract($manager);
-				retract($event);
-				return;
-			}
-			//
-			// This comes from the base module
-			//
-			vfModuleItemVfModuleName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;
-			vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace("Vfmodule", "vDNS");
-			//
-			// vfModuleItem - NOT the base module
-			//
-			vfModuleItemPersonaModelId = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;
-			vfModuleItemPersonaModelVersion = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;
-			vfModuleItemModelName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;
-			vfModuleItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;
-			//
-			// tenantItem
-			//
-			tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;
-			//
-			// cloudRegionItem
-			//
-			cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;
-			//
-		} catch (Exception e) {
-			e.printStackTrace();
-			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-			notification.notification = ControlLoopNotificationType.REJECTED;
-			notification.message = "Exception occurred " + e.getMessage();
-			notification.policyName = drools.getRule().getName();
-			notification.policyScope = "com";
-			notification.policyVersion = "1";
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e1) {
-				System.out.println("Can't deliver notification: " + notification);
-				e1.printStackTrace();
-			}
-			//
-			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-			notification.message = "Invalid named-query response from AAI";
-            //
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e1) {
-                System.out.println("Can't deliver notification: " + notification);
-                e1.printStackTrace();
-            }
-			//
-			// Retract everything
-			//
-			retract($aainqf199RequestWrapper);
-			retract($aainqf199ResponseWrapper);
-			retract($manager);
-			retract($event);
-			return;
-		}	
-		//
-		// Extracted fields should not be null
-		//
-		if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||
-		    (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||
-		    (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||
-		    (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||
-		    (serviceItemModelType == null) || (serviceItemModelVersion == null) ||
-		    (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||
-		    (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||
-		    (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||
-		    (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {
-			//
-			System.err.println("some fields are missing from AAI response.");
-			//
-			// Fail and retract everything
-			//
-			retract($aainqf199RequestWrapper);
-			retract($aainqf199ResponseWrapper);
-			retract($manager);
-			retract($event);
-			return;
-		}
-		//
-		// We don't need them any more
-		//
-		retract($aainqf199ResponseWrapper);
-		retract($aainqf199RequestWrapper);  
-		//
-		// check the actor of this closed loop
-		//
-		switch ($params.getActor()) {
-			case "APPC":
-			{
-				//
-				// Construct an APPC request
-				//
-				ControlLoopOperation operation = new ControlLoopOperation();
-				operation.actor = $params.getActor();
-				operation.operation = "ModifyConfig";
-				operation.target = $event.target;
-				//
-				// Create operationWrapper
-				//
-				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-				//
-				// insert operationWrapper into memory
-				//
-				insert(operationWrapper);
-				//
-				Request request = new Request();
-				request.CommonHeader = new CommonHeader();
-				request.CommonHeader.RequestID = $event.requestID;
-				request.Action = operation.operation;
-				request.Payload = new HashMap<String, Object>();
-				//
-				// Fill in the payload
-				// Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case
-				//
-				String genericVNF = "zdfw1fwl01pgn02";
-				request.Payload.put("generic-vnf.vnf-id", genericVNF);
-				//
-				PGRequest pgRequest = new PGRequest();
-				pgRequest.pgStreams = new PGStreams();
-				
-				PGStream pgStream;
-				for(int i = 0; i < 5; i++){
-					pgStream = new PGStream();
-					pgStream.streamId = "fw_udp"+(i+1);
-					pgStream.isEnabled = "true";
-					pgRequest.pgStreams.pgStream.add(pgStream);
-				}
-				request.Payload.put("pg-streams", pgRequest.pgStreams);
-				
-				if (request != null) {
-					//
-					// Insert request into memory
-					//
-					insert(request);
-					//
-					// Tell interested parties we are performing this Operation
-					//
-					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-					notification.notification = ControlLoopNotificationType.OPERATION;
-					// message and history ??
-					notification.from = "policy";
-					notification.policyName = drools.getRule().getName();
-					notification.policyScope = "com";
-					notification.policyVersion = "1";
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						System.out.println("Can't deliver notification: " + notification);
-						e.printStackTrace();
-					}
-					//
-					// Now send the operation request
-					//
-					if (request instanceof Request) {
-						try {
-							System.out.println("APPC request sent:");
-							System.out.println(Serialization.gsonPretty.toJson(request));
-							PolicyEngine.manager.deliver($params.getAppcTopic(), request);
-						} catch (Exception e) {
-							e.printStackTrace();
-							System.out.println("Can't deliver request: " + request);
-						}
-					}
-				} else {
-					//
-					// what happens if it is null
-					//
-				}
-			}
-			break;
-			case "MSO":
-			{
-				//
-				// Construct an operation
-				//
-				ControlLoopOperation operation = new ControlLoopOperation();
-				operation.actor = $params.getActor();
-				operation.operation = "createModuleInstance";
-				operation.target = $event.target;
-				//
-				// Create operationWrapper
-				//
-				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-				//
-				// Construct an MSO request
-				//
-				MSORequest request = new MSORequest();
-				request.requestDetails = new MSORequestDetails();
-				request.requestDetails.modelInfo = new MSOModelInfo();
-				request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();
-				request.requestDetails.requestInfo = new MSORequestInfo();
-				request.requestDetails.requestParameters = new MSORequestParameters();
-				request.requestDetails.requestParameters.userParams = null;
-				//
-				// cloudConfiguration
-				//
-				request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;
-				request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;
-				//
-				// modelInfo
-				//
-				request.requestDetails.modelInfo.modelType = "vfModule";
-				request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;
-				request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;
-				request.requestDetails.modelInfo.modelName = vfModuleItemModelName;
-				request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;
-				//
-				// requestInfo
-				//
-				request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;
-				request.requestDetails.requestInfo.source = "POLICY";
-				request.requestDetails.requestInfo.suppressRollback = false;
-				//
-				// relatedInstanceList
-				//
-				MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();
-				MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();
-				relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();
-				relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();
-				//
-				relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;
-				relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;
-				//
-				relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;
-				relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
-				//	
-				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
-				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
-				//
-				// print MSO request for debug
-				//
-				System.out.println("MSO request sent:");
-				System.out.println(Serialization.gsonPretty.toJson(request));
-				//
-				//
-				//
-				if (request != null) {
-					//
-					// Tell interested parties we are performing this Operation
-					//
-					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-					notification.notification = ControlLoopNotificationType.OPERATION;
-					notification.from = "policy";
-					notification.policyName = drools.getRule().getName();
-					notification.policyScope = "com";
-					notification.policyVersion = "1";
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						System.out.println("Can't deliver notification: " + notification);
-						e.printStackTrace();
-					}
-					//
-					// Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL
-					//
-					String MSOUrl = $params.getMsoURL() + "/serviceInstances/v2/" + serviceItemServiceInstanceId + "/vnfs/" + vnfItemVnfId + "/vfModules";
-					//
-					// Call MSO
-					//
-					MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);
-					//
-					if (response != null) {
-						//
-						// Assign requestId
-						//
-						request.requestId = $event.requestID.toString();						
-						response.request.requestId = $event.requestID.toString();
-						//
-						// Insert facts
-						//
-						insert(operationWrapper);
-						insert(request);
-						insert(response);
-					} else {
-						//
-						// MSO request not even accepted
-						//
-						notification.message = operationWrapper.operation.toMessage();
-						operationWrapper.operation.message = operationWrapper.operation.toMessage();
-						operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-						$manager.setControlLoopResult("FAILURE_EXCEPTION");
-						notification.history.add(operationWrapper.operation);
-						notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-						//
-						// Let interested parties know
-						//
-						try {
-							System.out.println(Serialization.gsonPretty.toJson(notification));
-							PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-						} catch (Exception e) {
-							System.out.println("Can't deliver notification: " + notification);
-							e.printStackTrace();
-						}
-	                    notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-                        try {
-                        	System.out.println(Serialization.gsonPretty.toJson(notification));
-                        	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                        } catch (Exception e) {
-                        	System.out.println("Can't deliver notification: " + notification);
-                        	e.printStackTrace();
-                        }
-						//
-						// Retract everything
-						//
-						retract($event);
-						retract($manager);
-					}
-				} else {
-					System.err.println("constructed MSO request is invalid.");
-				}
-			}
-			break; 
-		} 
-end
-		
-/*
-*
-* This rule responds to APPC Response Events
-*
-*/
-rule "BRMSParamvFWDemoPolicy.APPC.RESPONSE"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
-		$request : Request( getCommonHeader().RequestID == $event.requestID )
-		$response : Response( getCommonHeader().RequestID == $event.requestID )	
-	then
-		System.out.println("rule APPC.RESPONSE is triggered.");
-		if ($response.Status == null) {
-			$operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-			$manager.setControlLoopResult("FAILURE_EXCEPTION");
-		} 
-		//
-		// Get the Response Code
-		//
-		ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);
-		if (code == null) {
-			$operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-			$manager.setControlLoopResult("FAILURE_EXCEPTION");
-		}
-		//
-		// Construct notification
-		//
-		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-		notification.from = "policy";
-		notification.policyName = drools.getRule().getName();
-		notification.policyScope = "com";
-		notification.policyVersion = "1";
-		notification.message = $operationWrapper.operation.toMessage();
-		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();
-		//
-		// Ok, let's figure out what APP-C's response is
-		//
-		switch (code) {
-			case ACCEPT:
-				$operationWrapper.operation.outcome = "PROCESSING";
-				break;
-			case ERROR:
-			case REJECT:
-				$operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-				$manager.setControlLoopResult("FAILURE_EXCEPTION");
-				break;
-			case SUCCESS:
-				$operationWrapper.operation.outcome = "SUCCESS";
-				$manager.setControlLoopResult("SUCCESS");
-				break;
-			case FAILURE:
-				$operationWrapper.operation.outcome = "FAILURE";
-				$manager.setControlLoopResult("FAILURE");
-				break;
-		}
-		if ($operationWrapper.operation.outcome.equals("SUCCESS")) {
-			notification.history.add($operationWrapper.operation);
-			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
-			//
-			// Let interested parties know
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e) {
-				System.out.println("Can't deliver notification: " + notification);
-				e.printStackTrace();
-			}
-            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-            	System.out.println("Can't deliver notification: " + notification);
-            	e.printStackTrace();
-            }
-
-			//
-			// We are going to retract these objects from memory
-			//
-			System.out.println("Retracting everything");
-			retract($operationWrapper);
-			retract($request);
-			retract($response);
-			retract($event);
-			retract($manager);
-		} else if ($operationWrapper.operation.outcome.equals("PROCESSING")) {
-			retract($response);
-		} else {
-			notification.history.add($operationWrapper.operation);
-			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-			//
-			// Let interested parties know
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e) {
-				System.out.println("Can't deliver notification: " + notification);
-				e.printStackTrace();
-			}
-            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-            //
-            // Let interested parties know
-            //
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-            	System.out.println("Can't deliver notification: " + notification);
-            	e.printStackTrace();
-            }
-			//
-			// We are going to retract these objects from memory
-			//
-			System.out.println("Retracting everything");
-			retract($operationWrapper);
-			retract($request);
-			retract($response);
-			retract($event);
-			retract($manager);
-		}
-		
-end		
-
-/*
-*
-* This rule is used to clean up APPC response
-*
-*/		
-rule "BRMSParamvFWDemoPolicy.APPC.RESPONSE.CLEANUP"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-        $response : Response($id : getCommonHeader().RequestID )
-		not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) 
-	then
-		System.out.println("rule APPC.RESPONSE.CLEANUP is triggered.");
-		retract($response);
-end
-
-/*
-*
-* This rule responds to MSO Response Events
-*
-*/
-rule "BRMSParamvFWDemoPolicy.MSO.RESPONSE"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
-		$request : MSORequest( requestId == $event.requestID.toString() )
-		$response : MSOResponse( request.requestId == $event.requestID.toString() )	
-	then
-		System.out.println("rule MSO.RESPONSE is triggered.");
-		//
-		// Construct notification
-		//
-		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-		notification.from = "policy";
-		notification.policyName = drools.getRule().getName();
-		notification.policyScope = "com";
-		notification.policyVersion = "1";
-		notification.message = $operationWrapper.operation.toMessage();
-		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();
-		//
-		// The operation can either be succeeded or failed
-		// 
-		if($response.request.requestStatus.requestState.equals("COMPLETE")) {
-			$operationWrapper.operation.outcome = "SUCCESS";
-			$manager.setControlLoopResult("SUCCESS");
-			notification.history.add($operationWrapper.operation);
-			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
-			//
-			// Let interested parties know
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e) {
-				System.out.println("Can't deliver notification: " + notification);
-				e.printStackTrace();
-			}
-			notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
-            //
-            // Let interested parties know
-            //
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-            	System.out.println("Can't deliver notification: " + notification);
-            	e.printStackTrace();
-            }
-            //
-			// We are going to retract these objects from memory
-			//
-			System.out.println("Retracting everything");
-			retract($operationWrapper);
-			retract($request);
-			retract($response);
-			retract($event);
-			retract($manager);
-		} else {
-			$operationWrapper.operation.outcome = "FAILURE";
-			$manager.setControlLoopResult("FAILURE");
-			notification.history.add($operationWrapper.operation);
-			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-			//
-			// Let interested parties know
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e) {
-				System.out.println("Can't deliver notification: " + notification);
-				e.printStackTrace();
-			}
-			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-            //
-            // Let interested parties know
-            //
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-            	System.out.println("Can't deliver notification: " + notification);
-            	e.printStackTrace();
-            }
-            //
-			// We are going to retract these objects from memory
-			//
-			System.out.println("Retracting everything");
-			retract($operationWrapper);
-			retract($request);
-			retract($response);
-			retract($event);
-			retract($manager);
-		}
-		
-end	
-rule "com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.Params" 
-	salience 1000 
-	when
-	then
-		Params params = new Params();
-		params.setAaiPatternMatch(1);
-		params.setAppcTopic("APPC-CL");
-		params.setAaiURL("null");
-		params.setMsoPassword("null");
-		params.setClosedLoopControlName("CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8");
-		params.setMsoURL("null");
-		params.setAaiUsername("null");
-		params.setActor("APPC");
-		params.setMsoUsername("null");
-		params.setAaiNamedQueryUUID("null");
-		params.setAaiPassword("null");
-		params.setNotificationTopic("POLICY-CL-MGT");
-		insert(params);
-end
diff --git a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt b/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt
deleted file mode 100755
index f9accdd..0000000
--- a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt
+++ /dev/null
@@ -1,1145 +0,0 @@
-/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. 
-	 <$%BRMSParamTemplate=ControlLoopDemo__closedLoopControlName%$> 
- */ 
-
-
-/*-
- * ============LICENSE_START=======================================================
- * archetype-closed-loop-demo-rules
- * ================================================================================
- * Copyright (C) 2017 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=========================================================
- */
-
-package org.onap.policy.controlloop;
-
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.UUID;
-
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopOperation;
-import org.onap.policy.controlloop.ControlLoopOperationWrapper;
-import org.onap.policy.template.demo.ControlLoopException;
-
-import org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;
-import org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;
-import org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;
-import org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;
-import org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;
-import org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;
-import org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;
-import org.onap.policy.aai.AAINQF199.AAINQF199Manager;
-import org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;
-import org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;
-import org.onap.policy.aai.AAINQF199.AAINQF199Request;
-import org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;
-import org.onap.policy.aai.AAINQF199.AAINQF199Response;
-import org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
-import org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;
-import org.onap.policy.aai.AAINQF199.AAINQF199Tenant;
-import org.onap.policy.aai.AAINQF199.AAINQF199VfModule;
-import org.onap.policy.aai.AAINQF199.AAINQF199VServer;
-import org.onap.policy.aai.util.Serialization;
-
-import org.onap.policy.appc.CommonHeader;
-import org.onap.policy.appc.Request;
-import org.onap.policy.appc.Response;
-import org.onap.policy.appc.ResponseCode;
-import org.onap.policy.appc.ResponseStatus;
-import org.onap.policy.appc.ResponseValue;
-
-import org.onap.policy.template.demo.EventManager;
-import org.onap.policy.vnf.trafficgenerator.PGRequest;
-import org.onap.policy.vnf.trafficgenerator.PGStream;
-import org.onap.policy.vnf.trafficgenerator.PGStreams;
-
-import org.onap.policy.mso.MSOManager;
-import org.onap.policy.mso.MSORequest;
-import org.onap.policy.mso.MSORequestStatus;
-import org.onap.policy.mso.MSORequestDetails;
-import org.onap.policy.mso.MSOModelInfo;
-import org.onap.policy.mso.MSOCloudConfiguration;
-import org.onap.policy.mso.MSORequestInfo;
-import org.onap.policy.mso.MSORequestParameters;
-import org.onap.policy.mso.MSORelatedInstanceListElement;
-import org.onap.policy.mso.MSORelatedInstance;
-import org.onap.policy.mso.MSOResponse;
-
-import org.onap.policy.drools.system.PolicyEngine;
-
-//
-// These parameters are required to build the runtime policy
-//
-declare Params
-    closedLoopControlName : String
-    actor : String
-    aaiURL : String
-    aaiUsername : String
-    aaiPassword : String
-    msoURL : String
-    msoUsername : String
-    msoPassword : String
-    aaiNamedQueryUUID : String
-    aaiPatternMatch : int 
-    notificationTopic : String
-    appcTopic : String
-end
-
-/*
-*
-* Called once and only once to insert the parameters into working memory for this Closed Loop policy.
-* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)
-*
-*
-*rule "BRMSParamvLBDemoPolicy.SETUP"
-*	when
-*	then
-*		System.out.println("rule SETUP is triggered.");
-*		Params params = new Params();
-*		params.setClosedLoopControlName("CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8");
-*		params.setActor("MSO");
-*		params.setAaiURL("https://aai.api.simpledemo.openecomp.org:8443");
-*		params.setAaiUsername("POLICY");
-*		params.setAaiPassword("POLICY");
-*		params.setMsoURL("http://vm1.mso.simpledemo.openecomp.org:8080/onap/mso/infra");
-*		params.setMsoUsername("InfraPortalClient");
-*		params.setMsoPassword("password1$");
-*		params.setAaiNamedQueryUUID("f199cb88-5e69-4b1f-93e0-6f257877d066");
-*		params.setAaiPatternMatch(0);
-*		params.setNotificationTopic("POLICY-CL-MGT");
-*		params.setAppcTopic("APPC-CL");
-*		//
-*		// This stays in memory as long as the rule is alive and running
-*		//
-*		insert(params);
-*end
-*/
-/*
-*
-* This rule responds to DCAE Events
-*
-*/
-rule "BRMSParamvLBDemoPolicy.EVENT"
-	when
-        $params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))
-	then
-		System.out.println("rule EVENT is triggered.");
-		try {
-			// 
-			// Check the requestID in the event to make sure it is not null before we create the EventManager. 
-			// The EventManager will do extra syntax checking as well check if the closed loop is disabled/
-			//
-			if ($event.requestID == null) {
-				VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-				notification.notification = ControlLoopNotificationType.REJECTED;
-				notification.from = "policy";
-				notification.message = "Missing requestID from DCAE event";
-				notification.policyName = drools.getRule().getName();
-				notification.policyScope = "com";
-				notification.policyVersion = "1";
-				//
-				// Let interested parties know
-				//
-				try {
-					System.out.println(Serialization.gsonPretty.toJson(notification));
-					PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-				} catch (Exception e) {
-					e.printStackTrace();
-					System.out.println("Can't deliver notification: " + notification);
-				}
-				//
-				// Retract it from memory
-				//
-				retract($event);
-				System.out.println("Event with requestID=null has been retracted.");
-			} else {
-				//
-				// Create an EventManager
-				//
-				EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);
-				//
-				// Determine if EventManager can actively process the event (i.e. syntax)
-				//
-				VirtualControlLoopNotification notification = manager.activate($event);
-				notification.from = "policy"; 
-				notification.policyName = drools.getRule().getName();
-				notification.policyScope = "com";
-				notification.policyVersion = "1";
-				//
-				// Are we actively pursuing this event?
-				//
-				if (notification.notification == ControlLoopNotificationType.ACTIVE) {
-					//
-					// Insert Event Manager into memory, this will now kick off processing.
-					//
-					insert(manager);
-					//
-					// Let interested parties know
-					//
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						e.printStackTrace();
-						System.out.println("Can't deliver notification: " + notification);
-					}		
-				} else {
-					//
-					// Let interested parties know
-					//
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						e.printStackTrace();
-						System.out.println("Can't deliver notification: " + notification);
-					}
-					//
-					// Retract it from memory
-					//
-					retract($event);
-				}
-				//
-				// Now that the manager is inserted into Drools working memory, we'll wait for
-				// another rule to fire in order to continue processing. This way we can also
-				// then screen for additional ONSET and ABATED events for this same RequestIDs 
-				// and for different RequestIDs but with the same closedLoopControlName and target.
-				//
-			}
-		//
-		} catch (Exception e) {
-			e.printStackTrace();
-			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-			notification.notification = ControlLoopNotificationType.REJECTED;
-			notification.message = "Exception occurred " + e.getMessage();
-			notification.policyName = drools.getRule().getName();
-			notification.policyScope = "com";
-			notification.policyVersion = "1";
-			//
-			//
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e1) {
-				System.out.println("Can't deliver notification: " + notification);
-				e1.printStackTrace();
-			}
-			//
-			// Retract the event
-			//
-			retract($event);
-		}
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager
-* is created. We can start the operations for this closed loop.
-*
-*/
-rule "BRMSParamvLBDemoPolicy.EVENT.MANAGER"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)
-	then
-		System.out.println("rule EVENT.MANAGER is triggered.");
-		//
-		// Check which event this is.
-		//
-		EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);
-		//
-		// We only want the initial ONSET event in memory,
-		// all the other events need to be retracted to support
-		// cleanup and avoid the other rules being fired for this event.
-		//
-		if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {
-			System.out.println("Retracting "+eventStatus+" Event.");
-			retract($event);
-			return;
-		}
-		//
-		// Now the event in memory is first onset event
-		//
-		try {
-			//
-			// Pull the known AAI field from the Event
-			//
-			// generic-vnf is needed for vFirewall case
-			// vserver-name is needed for vLoadBalancer case
-			//
-			String genericVNF = $event.AAI.get("generic-vnf.vnf-id");
-			String vserver = $event.AAI.get("vserver.vserver-name");
-			//
-			// Check if we are implementing a simple pattern match.
-			//
-			if ($params.getAaiPatternMatch() == 1) {
-				//
-				// Yes
-				//
-				//Basic naming characteristics:
-				//VF Name (9 char)+VM name (13 char total)+VFC (19 char total)
-				//Example: 
-				//VF Name (9 characters):    cscf0001v
-				//VM Name(13 characters): cscf0001vm001
-				//VFC name(19 characters): cscf0001vm001cfg001
-				//
-				// zdfw1fwl01fwl02 or zdfw1fwl01fwl01  
-				// replaced with
-				// zdfw1fwl01pgn02 or zdfw1fwl01pgn01
-				//
-				int index = genericVNF.lastIndexOf("fwl");
-				if (index == -1) {
-					System.err.println("The generic-vnf.vnf-id from DCAE Event is not valid.");
-				} else {
-					genericVNF = genericVNF.substring(0, index) + "pgn" + genericVNF.substring(index+"fwl".length());
-				}
-				//
-				// Construct an APPC request
-				//
-				ControlLoopOperation operation = new ControlLoopOperation();
-				operation.actor = $params.getActor();
-				operation.operation = "ModifyConfig";
-				operation.target = $event.target;
-				//
-				// Create operationWrapper
-				//
-				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-				//
-				// insert operationWrapper into memory
-				//
-				insert(operationWrapper);
-				//
-				Request request = new Request();
-				request.CommonHeader = new CommonHeader();
-				request.CommonHeader.RequestID = $event.requestID;
-				request.Action = operation.operation;
-				request.Payload = new HashMap<String, Object>();
-				//
-				// Fill in the payload
-				//
-				request.Payload.put("generic-vnf.vnf-id", genericVNF);
-				//
-				PGRequest pgRequest = new PGRequest();
-				pgRequest.pgStreams = new PGStreams();
-				
-				PGStream pgStream;
-				for(int i = 0; i < 5; i++){
-					pgStream = new PGStream();
-					pgStream.streamId = "fw_udp"+(i+1);
-					pgStream.isEnabled = "true";
-					pgRequest.pgStreams.pgStream.add(pgStream);
-				}
-				request.Payload.put("pg-streams", pgRequest.pgStreams);
-				
-				if (request != null) {
-					//
-					// Insert request into memory
-					//
-					insert(request);
-					//
-					// Tell interested parties we are performing this Operation
-					//
-					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-					notification.notification = ControlLoopNotificationType.OPERATION;
-					// message and history ??
-					notification.from = "policy";
-					notification.policyName = drools.getRule().getName();
-					notification.policyScope = "com";
-					notification.policyVersion = "1";
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						System.out.println("Can't deliver notification: " + notification);
-						e.printStackTrace();
-					}
-					//
-					// Now send the operation request
-					//
-					if (request instanceof Request) {
-						try {
-							System.out.println("APPC request sent:");
-							System.out.println(Serialization.gsonPretty.toJson(request));
-							PolicyEngine.manager.deliver($params.getAppcTopic(), request);
-						} catch (Exception e) {
-							e.printStackTrace();
-							System.out.println("Can't deliver request: " + request);
-						}
-					}
-				} else {
-					//
-					// what happens if it is null
-					//
-				}
-				//
-			} else {
-				//
-				// create AAI named-query request with UUID started with "F199"
-				//
-				AAINQF199Request aainqf199request = new AAINQF199Request();
-				AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();
-				AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();
-				AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();
-				//
-				// queryParameters
-				//
-				aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); 
-				aainqf199queryparam.namedQuery = aainqf199namedquery;
-				aainqf199request.queryParameters = aainqf199queryparam;
-				//
-				// instanceFilters
-				//
-				Map aainqf199instancefiltermap = new HashMap();
-				Map aainqf199instancefiltermapitem = new HashMap();
-				aainqf199instancefiltermapitem.put("vserver-name", vserver); 
-				aainqf199instancefiltermap.put("vserver", aainqf199instancefiltermapitem);
-				aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);
-				aainqf199request.instanceFilters = aainqf199instancefilter;
-				//
-				// print aainqf199request for debug
-				//
-				System.out.println("AAI Request sent:");
-				System.out.println(Serialization.gsonPretty.toJson(aainqf199request));
-				//
-				// Create AAINQF199RequestWrapper
-				//
-				AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);
-				//
-				// insert aainqf199request into memory
-				//
-				insert(aainqf199RequestWrapper);
-			}
-			//
-		} catch (Exception e) {
-		 e.printStackTrace();
-		}
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager
-* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.
-*
-*/
-rule "BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
-	then
-		System.out.println("rule EVENT.MANAGER.AAINQF199REQUEST is triggered.");
-		//
-		// send the request
-		//
-		AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),
-													   $aainqf199RequestWrapper.aainqf199request, $event.requestID);
-		//
-		// Check AAI response
-		//
-		if (aainqf199response == null) {
-			System.err.println("Failed to get AAI response");
-			//
-			// Fail and retract everything
-			//
-			retract($event);
-			retract($manager);
-			retract($aainqf199RequestWrapper);
-		} else {
-			//
-			// Create AAINQF199ResponseWrapper
-			//
-			AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);
-			//
-			// insert aainqf199ResponseWrapper to memeory
-			//
-			insert(aainqf199ResponseWrapper);
-		}
-end
-
-/*
-*
-* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.
-*
-*/
-rule "BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE"
-	when 
-		$params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-		$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
-		$aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)
-	then
-		System.out.println("rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.");
-		//
-		// Extract related fields out of AAINQF199RESPONSE
-		//
-		String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, 
-		       vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,
-		       serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,
-		       vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, 
-		       vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;
-		try {
-			//
-			// vnfItem
-			//
-			vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;
-			vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;
-			vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1);
-			vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;
-			vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;
-			vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
-			vnfItemModelVersion = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;
-			vnfItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
-			//
-			// serviceItem
-			//
-			serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;
-			serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;
-			serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
-			serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;
-			serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;
-			serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
-			//
-			// Find the index for base vf module and non-base vf module
-			//
-			int baseIndex = -1;
-			int nonBaseIndex = -1;
-			List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;
-			for (AAINQF199InventoryResponseItem m : inventoryItems) {
-				if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {
-					baseIndex = inventoryItems.indexOf(m);
-				} else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {
-					nonBaseIndex = inventoryItems.indexOf(m);
-				}
-				//
-				if (baseIndex != -1 && nonBaseIndex != -1) {
-					break;
-				}
-			}
-			//
-			// Report the error if either base vf module or non-base vf module is not found
-			//
-			if (baseIndex == -1 || nonBaseIndex == -1) {
-				System.err.println("Either base or non-base vf module is not found from AAI response.");
-				retract($aainqf199RequestWrapper);
-				retract($aainqf199ResponseWrapper);
-				retract($manager);
-				retract($event);
-				return;
-			}
-			//
-			// This comes from the base module
-			//
-			vfModuleItemVfModuleName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;
-			vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace("Vfmodule", "vDNS");
-			//
-			// vfModuleItem - NOT the base module
-			//
-			vfModuleItemPersonaModelId = 		$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;
-			vfModuleItemPersonaModelVersion = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;
-			vfModuleItemModelName = 			$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;
-			vfModuleItemModelNameVersionId = 	$aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;
-			//
-			// tenantItem
-			//
-			tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;
-			//
-			// cloudRegionItem
-			//
-			cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;
-			//
-		} catch (Exception e) {
-			e.printStackTrace();
-			VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-			notification.notification = ControlLoopNotificationType.REJECTED;
-			notification.message = "Exception occurred " + e.getMessage();
-			notification.policyName = drools.getRule().getName();
-			notification.policyScope = "com";
-			notification.policyVersion = "1";
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e1) {
-				System.out.println("Can't deliver notification: " + notification);
-				e1.printStackTrace();
-			}
-			//
-			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-			notification.message = "Invalid named-query response from AAI";
-            //
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e1) {
-                System.out.println("Can't deliver notification: " + notification);
-                e1.printStackTrace();
-            }
-			//
-			// Retract everything
-			//
-			retract($aainqf199RequestWrapper);
-			retract($aainqf199ResponseWrapper);
-			retract($manager);
-			retract($event);
-			return;
-		}	
-		//
-		// Extracted fields should not be null
-		//
-		if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||
-		    (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||
-		    (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||
-		    (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||
-		    (serviceItemModelType == null) || (serviceItemModelVersion == null) ||
-		    (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||
-		    (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||
-		    (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||
-		    (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {
-			//
-			System.err.println("some fields are missing from AAI response.");
-			//
-			// Fail and retract everything
-			//
-			retract($aainqf199RequestWrapper);
-			retract($aainqf199ResponseWrapper);
-			retract($manager);
-			retract($event);
-			return;
-		}
-		//
-		// We don't need them any more
-		//
-		retract($aainqf199ResponseWrapper);
-		retract($aainqf199RequestWrapper);  
-		//
-		// check the actor of this closed loop
-		//
-		switch ($params.getActor()) {
-			case "APPC":
-			{
-				//
-				// Construct an APPC request
-				//
-				ControlLoopOperation operation = new ControlLoopOperation();
-				operation.actor = $params.getActor();
-				operation.operation = "ModifyConfig";
-				operation.target = $event.target;
-				//
-				// Create operationWrapper
-				//
-				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-				//
-				// insert operationWrapper into memory
-				//
-				insert(operationWrapper);
-				//
-				Request request = new Request();
-				request.CommonHeader = new CommonHeader();
-				request.CommonHeader.RequestID = $event.requestID;
-				request.Action = operation.operation;
-				request.Payload = new HashMap<String, Object>();
-				//
-				// Fill in the payload
-				// Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case
-				//
-				String genericVNF = "zdfw1fwl01pgn02";
-				request.Payload.put("generic-vnf.vnf-id", genericVNF);
-				//
-				PGRequest pgRequest = new PGRequest();
-				pgRequest.pgStreams = new PGStreams();
-				
-				PGStream pgStream;
-				for(int i = 0; i < 5; i++){
-					pgStream = new PGStream();
-					pgStream.streamId = "fw_udp"+(i+1);
-					pgStream.isEnabled = "true";
-					pgRequest.pgStreams.pgStream.add(pgStream);
-				}
-				request.Payload.put("pg-streams", pgRequest.pgStreams);
-				
-				if (request != null) {
-					//
-					// Insert request into memory
-					//
-					insert(request);
-					//
-					// Tell interested parties we are performing this Operation
-					//
-					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-					notification.notification = ControlLoopNotificationType.OPERATION;
-					// message and history ??
-					notification.from = "policy";
-					notification.policyName = drools.getRule().getName();
-					notification.policyScope = "com";
-					notification.policyVersion = "1";
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						System.out.println("Can't deliver notification: " + notification);
-						e.printStackTrace();
-					}
-					//
-					// Now send the operation request
-					//
-					if (request instanceof Request) {
-						try {
-							System.out.println("APPC request sent:");
-							System.out.println(Serialization.gsonPretty.toJson(request));
-							PolicyEngine.manager.deliver($params.getAppcTopic(), request);
-						} catch (Exception e) {
-							e.printStackTrace();
-							System.out.println("Can't deliver request: " + request);
-						}
-					}
-				} else {
-					//
-					// what happens if it is null
-					//
-				}
-			}
-			break;
-			case "MSO":
-			{
-				//
-				// Construct an operation
-				//
-				ControlLoopOperation operation = new ControlLoopOperation();
-				operation.actor = $params.getActor();
-				operation.operation = "createModuleInstance";
-				operation.target = $event.target;
-				//
-				// Create operationWrapper
-				//
-				ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-				//
-				// Construct an MSO request
-				//
-				MSORequest request = new MSORequest();
-				request.requestDetails = new MSORequestDetails();
-				request.requestDetails.modelInfo = new MSOModelInfo();
-				request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();
-				request.requestDetails.requestInfo = new MSORequestInfo();
-				request.requestDetails.requestParameters = new MSORequestParameters();
-				request.requestDetails.requestParameters.userParams = null;
-				//
-				// cloudConfiguration
-				//
-				request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;
-				request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;
-				//
-				// modelInfo
-				//
-				request.requestDetails.modelInfo.modelType = "vfModule";
-				request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;
-				request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;
-				request.requestDetails.modelInfo.modelName = vfModuleItemModelName;
-				request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;
-				//
-				// requestInfo
-				//
-				request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;
-				request.requestDetails.requestInfo.source = "POLICY";
-				request.requestDetails.requestInfo.suppressRollback = false;
-				//
-				// relatedInstanceList
-				//
-				MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();
-				MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();
-				relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();
-				relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();
-				//
-				relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;
-				relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;
-				relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;
-				//
-				relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;
-				relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;
-				relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
-				//	
-				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
-				request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
-				//
-				// print MSO request for debug
-				//
-				System.out.println("MSO request sent:");
-				System.out.println(Serialization.gsonPretty.toJson(request));
-				//
-				//
-				//
-				if (request != null) {
-					//
-					// Tell interested parties we are performing this Operation
-					//
-					VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-					notification.notification = ControlLoopNotificationType.OPERATION;
-					notification.from = "policy";
-					notification.policyName = drools.getRule().getName();
-					notification.policyScope = "com";
-					notification.policyVersion = "1";
-					try {
-						System.out.println(Serialization.gsonPretty.toJson(notification));
-						PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-					} catch (Exception e) {
-						System.out.println("Can't deliver notification: " + notification);
-						e.printStackTrace();
-					}
-					//
-					// Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL
-					//
-					String MSOUrl = $params.getMsoURL() + "/serviceInstances/v2/" + serviceItemServiceInstanceId + "/vnfs/" + vnfItemVnfId + "/vfModules";
-					//
-					// Call MSO
-					//
-					MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);
-					//
-					if (response != null) {
-						//
-						// Assign requestId
-						//
-						request.requestId = $event.requestID.toString();						
-						response.request.requestId = $event.requestID.toString();
-						//
-						// Insert facts
-						//
-						insert(operationWrapper);
-						insert(request);
-						insert(response);
-					} else {
-						//
-						// MSO request not even accepted
-						//
-						notification.message = operationWrapper.operation.toMessage();
-						operationWrapper.operation.message = operationWrapper.operation.toMessage();
-						operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-						$manager.setControlLoopResult("FAILURE_EXCEPTION");
-						notification.history.add(operationWrapper.operation);
-						notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-						//
-						// Let interested parties know
-						//
-						try {
-							System.out.println(Serialization.gsonPretty.toJson(notification));
-							PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-						} catch (Exception e) {
-							System.out.println("Can't deliver notification: " + notification);
-							e.printStackTrace();
-						}
-	                    notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-                        try {
-                        	System.out.println(Serialization.gsonPretty.toJson(notification));
-                        	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                        } catch (Exception e) {
-                        	System.out.println("Can't deliver notification: " + notification);
-                        	e.printStackTrace();
-                        }
-						//
-						// Retract everything
-						//
-						retract($event);
-						retract($manager);
-					}
-				} else {
-					System.err.println("constructed MSO request is invalid.");
-				}
-			}
-			break; 
-		} 
-end
-		
-/*
-*
-* This rule responds to APPC Response Events
-*
-*/
-rule "BRMSParamvLBDemoPolicy.APPC.RESPONSE"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
-		$request : Request( getCommonHeader().RequestID == $event.requestID )
-		$response : Response( getCommonHeader().RequestID == $event.requestID )	
-	then
-		System.out.println("rule APPC.RESPONSE is triggered.");
-		if ($response.Status == null) {
-			$operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-			$manager.setControlLoopResult("FAILURE_EXCEPTION");
-		} 
-		//
-		// Get the Response Code
-		//
-		ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);
-		if (code == null) {
-			$operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-			$manager.setControlLoopResult("FAILURE_EXCEPTION");
-		}
-		//
-		// Construct notification
-		//
-		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-		notification.from = "policy";
-		notification.policyName = drools.getRule().getName();
-		notification.policyScope = "com";
-		notification.policyVersion = "1";
-		notification.message = $operationWrapper.operation.toMessage();
-		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();
-		//
-		// Ok, let's figure out what APP-C's response is
-		//
-		switch (code) {
-			case ACCEPT:
-				$operationWrapper.operation.outcome = "PROCESSING";
-				break;
-			case ERROR:
-			case REJECT:
-				$operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-				$manager.setControlLoopResult("FAILURE_EXCEPTION");
-				break;
-			case SUCCESS:
-				$operationWrapper.operation.outcome = "SUCCESS";
-				$manager.setControlLoopResult("SUCCESS");
-				break;
-			case FAILURE:
-				$operationWrapper.operation.outcome = "FAILURE";
-				$manager.setControlLoopResult("FAILURE");
-				break;
-		}
-		if ($operationWrapper.operation.outcome.equals("SUCCESS")) {
-			notification.history.add($operationWrapper.operation);
-			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
-			//
-			// Let interested parties know
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e) {
-				System.out.println("Can't deliver notification: " + notification);
-				e.printStackTrace();
-			}
-            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-            	System.out.println("Can't deliver notification: " + notification);
-            	e.printStackTrace();
-            }
-
-			//
-			// We are going to retract these objects from memory
-			//
-			System.out.println("Retracting everything");
-			retract($operationWrapper);
-			retract($request);
-			retract($response);
-			retract($event);
-			retract($manager);
-		} else if ($operationWrapper.operation.outcome.equals("PROCESSING")) {
-			retract($response);
-		} else {
-			notification.history.add($operationWrapper.operation);
-			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-			//
-			// Let interested parties know
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e) {
-				System.out.println("Can't deliver notification: " + notification);
-				e.printStackTrace();
-			}
-            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-            //
-            // Let interested parties know
-            //
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-            	System.out.println("Can't deliver notification: " + notification);
-            	e.printStackTrace();
-            }
-			//
-			// We are going to retract these objects from memory
-			//
-			System.out.println("Retracting everything");
-			retract($operationWrapper);
-			retract($request);
-			retract($response);
-			retract($event);
-			retract($manager);
-		}
-		
-end		
-
-/*
-*
-* This rule is used to clean up APPC response
-*
-*/		
-rule "BRMSParamvLBDemoPolicy.APPC.RESPONSE.CLEANUP"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-        $response : Response($id : getCommonHeader().RequestID )
-		not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) 
-	then
-		System.out.println("rule APPC.RESPONSE.CLEANUP is triggered.");
-		retract($response);
-end
-
-/*
-*
-* This rule responds to MSO Response Events
-*
-*/
-rule "BRMSParamvLBDemoPolicy.MSO.RESPONSE"
-	when
-		$params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-		$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-		$manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-		$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
-		$request : MSORequest( requestId == $event.requestID.toString() )
-		$response : MSOResponse( request.requestId == $event.requestID.toString() )	
-	then
-		System.out.println("rule MSO.RESPONSE is triggered.");
-		//
-		// Construct notification
-		//
-		VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-		notification.from = "policy";
-		notification.policyName = drools.getRule().getName();
-		notification.policyScope = "com";
-		notification.policyVersion = "1";
-		notification.message = $operationWrapper.operation.toMessage();
-		$operationWrapper.operation.message = $operationWrapper.operation.toMessage();
-		//
-		// The operation can either be succeeded or failed
-		// 
-		if($response.request.requestStatus.requestState.equals("COMPLETE")) {
-			$operationWrapper.operation.outcome = "SUCCESS";
-			$manager.setControlLoopResult("SUCCESS");
-			notification.history.add($operationWrapper.operation);
-			notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
-			//
-			// Let interested parties know
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e) {
-				System.out.println("Can't deliver notification: " + notification);
-				e.printStackTrace();
-			}
-			notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
-            //
-            // Let interested parties know
-            //
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-            	System.out.println("Can't deliver notification: " + notification);
-            	e.printStackTrace();
-            }
-            //
-			// We are going to retract these objects from memory
-			//
-			System.out.println("Retracting everything");
-			retract($operationWrapper);
-			retract($request);
-			retract($response);
-			retract($event);
-			retract($manager);
-		} else {
-			$operationWrapper.operation.outcome = "FAILURE";
-			$manager.setControlLoopResult("FAILURE");
-			notification.history.add($operationWrapper.operation);
-			notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-			//
-			// Let interested parties know
-			//
-			try {
-				System.out.println(Serialization.gsonPretty.toJson(notification));
-				PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-			} catch (Exception e) {
-				System.out.println("Can't deliver notification: " + notification);
-				e.printStackTrace();
-			}
-			notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-            //
-            // Let interested parties know
-            //
-            try {
-            	System.out.println(Serialization.gsonPretty.toJson(notification));
-            	PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-            	System.out.println("Can't deliver notification: " + notification);
-            	e.printStackTrace();
-            }
-            //
-			// We are going to retract these objects from memory
-			//
-			System.out.println("Retracting everything");
-			retract($operationWrapper);
-			retract($request);
-			retract($response);
-			retract($event);
-			retract($manager);
-		}
-		
-end	
-rule "com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.Params" 
-	salience 1000 
-	when
-	then
-		Params params = new Params();
-		params.setAaiPatternMatch(0);
-		params.setAppcTopic("APPC-CL");
-		params.setAaiURL("https://aai.api.simpledemo.openecomp.org:8443");
-		params.setMsoPassword("password1$");
-		params.setClosedLoopControlName("CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8");
-		params.setAaiUsername("POLICY");
-		params.setMsoURL("http://vm1.mso.simpledemo.openecomp.org:8080/onap/mso/infra");
-		params.setActor("MSO");
-		params.setMsoUsername("InfraPortalClient");
-		params.setAaiNamedQueryUUID("f199cb88-5e69-4b1f-93e0-6f257877d066");
-		params.setAaiPassword("POLICY");
-		params.setNotificationTopic("POLICY-CL-MGT");
-		insert(params);
-end
diff --git a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vFirewall.1.json b/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vFirewall.1.json
deleted file mode 100644
index 6b128f1..0000000
--- a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vFirewall.1.json
+++ /dev/null
@@ -1 +0,0 @@
-{"service":"TcaMetrics","location":"SampleServiceLocation","uuid":"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall","policyName":"vFirewall","description":"Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:","configName":"SampleConfigName","templateVersion":"OpenSource.version.1","version":"1.0.0.5","priority":"1","policyScope":"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop","content":{"thresholds":[{"severity":"MAJOR","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn","thresholdValue":"300","closedLoopControlName":"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8","version":"1.0.2","direction":"LESS_OR_EQUAL"},{"severity":"CRITICAL","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn","thresholdValue":"700","closedLoopControlName":"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8","version":"1.0.2","direction":"GREATER_OR_EQUAL"}],"functionalRole":"vFirewall","name":"0"}}
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vLoadBalancer.1.json b/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vLoadBalancer.1.json
deleted file mode 100644
index e4fe39e..0000000
--- a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vLoadBalancer.1.json
+++ /dev/null
@@ -1 +0,0 @@
-{"service":"TcaMetrics","location":"SampleServiceLocation","uuid":"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer","policyName":"vLoadBalancer","description":"Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:","configName":"SampleConfigName","templateVersion":"OpenSource.version.1","version":"1.0.0.5","priority":"1","policyScope":"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop","content":{"thresholds":[{"severity":"MAJOR","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn","thresholdValue":"200","closedLoopControlName":"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8","version":"1.0.2","direction":"GREATER_OR_EQUAL"}],"functionalRole":"vLoadBalancer","name":"0"}}
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties b/packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties
index c9a73f6..fe5277d 100644
--- a/packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties
+++ b/packages/base/src/files/install/servers/pdp/bin/xacml.pdp.properties
@@ -107,7 +107,7 @@
 # pass PAP
 xacml.rest.pap.password=${{PDP_PAP_PDP_HTTP_PASSWORD}}
 # Delay for Notifications Don't change this. Value in milliSec.  
-xacml.rest.notification.delay=30  
+xacml.rest.notification.delay=30
 # Client interval to ping notification service. 
 CLIENT_INTERVAL=15000
 # Request Buffer Size. 
diff --git a/packages/base/src/files/m2/settings.xml b/packages/base/src/files/m2/settings.xml
index 50bda75..3c51ac3 100644
--- a/packages/base/src/files/m2/settings.xml
+++ b/packages/base/src/files/m2/settings.xml
@@ -44,7 +44,41 @@
             <updatePolicy>always</updatePolicy>
          </snapshots>
         </repository>
-	
+	    <repository>
+	       <id>onap-releases</id>
+	       <name>onap-releases</name>
+	       <url>https://nexus.onap.org/content/repositories/releases/</url>
+	       <releases>
+              <enabled>true</enabled>
+           </releases>
+           <snapshots>
+              <enabled>false</enabled>
+           </snapshots>
+        </repository>
+	    <repository>
+	       <id>onap-staging</id>
+		   <name>onap-staging</name>
+		   <url>https://nexus.onap.org/content/repositories/staging/</url>
+		   <releases>
+		      <enabled>true</enabled>
+              <updatePolicy>always</updatePolicy>
+           </releases>
+           <snapshots>
+              <enabled>false</enabled>
+           </snapshots>
+	    </repository>
+	    <repository>
+		   <id>onap-snapshots</id>
+		   <name>onap-snapshots</name>
+		   <url>https://nexus.onap.org/content/repositories/snapshots/</url>
+		   <releases>
+		      <enabled>false</enabled>
+		   </releases>
+           <snapshots>
+              <enabled>true</enabled>
+              <updatePolicy>always</updatePolicy>
+           </snapshots>
+	    </repository>
         <repository>
           <id>${{releaseRepositoryID}}</id>
           <url>${{releaseRepositoryURL}}</url>
diff --git a/packages/install/src/files/base.conf b/packages/install/src/files/base.conf
index 92c6d90..cd08d4a 100644
--- a/packages/install/src/files/base.conf
+++ b/packages/install/src/files/base.conf
@@ -2,9 +2,9 @@
 POLICY_HOME=/opt/app/policy
 KEYSTORE_PASSWD=PolicyR0ck$
 
-JDBC_DRIVER=com.mysql.jdbc.Driver
-JDBC_URL=jdbc:mysql://localhost:3306/xacml
-JDBC_LOG_URL=jdbc:mysql://localhost:3306/log
+JDBC_DRIVER=org.mariadb.jdbc.Driver
+JDBC_URL=jdbc:mariadb://localhost:3306/onap_sdk
+JDBC_LOG_URL=jdbc:mariadb://localhost:3306/log
 JDBC_USER=policy_user
 JDBC_PASSWORD=
 
diff --git a/packages/install/src/files/brmsgw.conf b/packages/install/src/files/brmsgw.conf
index 36cf414..2c91ff4 100644
--- a/packages/install/src/files/brmsgw.conf
+++ b/packages/install/src/files/brmsgw.conf
@@ -28,10 +28,8 @@
 
 groupID=org.onap.policy-engine
 artifactID=drlPDPGroup
-VFW_GROUP_ID=org.onap.policy-engine.drools.vFW
-VFW_ARTIFACT_ID=policy-vFW-rules
-VDNS_GROUP_ID=org.onap.policy-engine.drools.vDNS
-VDNS_ARTIFACT_ID=policy-vDNS-rules
+AMSTERDAM_GROUP_ID=org.onap.policy-engine.drools.amsterdam
+AMSTERDAM_ARTIFACT_ID=policy-amsterdam-rules
 
 # the java property is RESOURCE_NAME (uppercase), but the conf parameter is lowercase
 resource_name=brmsgw_1
diff --git a/pom.xml b/pom.xml
index 96cc501..c615114 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>org.onap.oparent</groupId>
 		<artifactId>oparent</artifactId>
-		<version>1.0.0-SNAPSHOT</version>
+		<version>0.1.1</version>
 		<relativePath/>
 	</parent>