Merge "Add New Junit Tests For ONAP-XACML"
diff --git a/BRMSGateway/config.properties b/BRMSGateway/config.properties
index 762f0ff..fa5f919 100644
--- a/BRMSGateway/config.properties
+++ b/BRMSGateway/config.properties
@@ -57,9 +57,9 @@
 
 #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/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..6e8588a 100644
--- a/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
+++ b/BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
@@ -388,11 +388,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 +402,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 +500,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 +514,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 +528,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 +599,6 @@
                 }
                 fos.close();
                 is.close();
-                f = null;
                 LOGGER.info(fileName + " Created..");
             }
         }
@@ -641,7 +640,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 +689,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 +735,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 +761,7 @@
                     if (createFlag) {
                         addNotification(group, "create");
                     } else {
-                        addNotification(group, modifiedGroups.get(group));
+                        addNotification(group, entry.getValue());
                     }
                     flag = true;
                 } else {
@@ -795,7 +795,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 +869,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 +1018,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 +1069,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 +1122,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/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/DecisionPolicy.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/DecisionPolicy.java
index eae3e79..d870ca8 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;
 
@@ -423,7 +424,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 +439,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/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/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..0463585 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, 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, 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, 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 Params\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/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/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-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties b/ONAP-SDK-APP/src/main/webapp/WEB-INF/conf/system.properties
index 304bcbd..991cb8a 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
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/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/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..c94c14d 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
@@ -92,16 +92,6 @@
 	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
 	}
@@ -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);
@@ -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);
@@ -709,7 +699,7 @@
 		
 		List<Object> activePolicies = null;
 		List<Object> scopesList = null;
-		if(jUnit){
+		if(PolicyController.isjUnit()){
 			activePolicies = controller.getDataByQuery(query, null);
 			scopesList = controller.getDataByQuery(scopeNamequery, null);
 		}else{
@@ -1422,7 +1412,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);
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/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/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/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/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/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/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/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/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/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/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>