[Policy-17] Removed the sql scripts from sdk app

Change-Id: I5b017aad569014c7f12eab35e1dbd1c215f90ebe
Signed-off-by: Ravindra Bakkamanthala <rb7147@att.com>
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/CheckPDP.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/CheckPDP.java
index 4f026ff..ca5aff1 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/CheckPDP.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/CheckPDP.java
@@ -25,7 +25,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -37,22 +36,22 @@
 import java.util.List;
 import java.util.Properties;
 
-import org.openecomp.policy.rest.XACMLRestProperties;
-
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
-import com.att.research.xacml.util.XACMLProperties;
-
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger; 
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
 import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.XACMLRestProperties;
+import org.openecomp.policy.xacml.api.XACMLErrorConstants;
+
+import com.att.research.xacml.util.XACMLProperties;
 
 public class CheckPDP {
 	private static Path pdpPath = null;
-	private static Properties pdpProp = null;
 	private static Long oldModified = null;
-	private static Long newModified = null;
 	private static HashMap<String, String> pdpMap = null;
 	private static final Logger LOGGER = FlexLogger.getLogger(CheckPDP.class);
-
+	
+	private CheckPDP(){
+		//default constructor
+	}
 	public static boolean validateID(String id) {
 		// ReadFile
 		try {
@@ -62,41 +61,37 @@
 			return false;
 		}
 		// Check ID
-		if (pdpMap.containsKey(id)) {
-			return true;
-		}
-		return false;
+		return (pdpMap.containsKey(id))? true: false;
 	}
 
-	private static void readFile() throws Exception {
+	private static void readFile(){
 		String pdpFile = null;
+		Long newModified = null;
 		try{
 			pdpFile = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_IDFILE);	
 		}catch (Exception e){
-			LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Cannot read the PDP ID File");
+			LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Cannot read the PDP ID File" + e);
 			return;
 		}
 		if (pdpFile == null) {
 			LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PDP File name not Valid : " + pdpFile);
-			throw new Exception(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"PDP File name not Valid : " + pdpFile);
 		}
 		if (pdpPath == null) {
 			pdpPath = Paths.get(pdpFile);
-			if (Files.notExists(pdpPath)) {
+			if (!pdpPath.toFile().exists()) {
 				LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "File doesn't exist in the specified Path : "	+ pdpPath.toString());
-				throw new Exception(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"File doesn't exist in the specified Path : "+ pdpPath.toString());
+
 			} 
 			if (pdpPath.toString().endsWith(".properties")) {
 				readProps();
 			} else {
 				LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Not a .properties file " + pdpFile);
-				throw new Exception(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Not a .properties file");
 			}
 		}
 		// Check if File is updated recently
 		else {
 			newModified = pdpPath.toFile().lastModified();
-			if (newModified != oldModified) {
+			if (!newModified.equals(oldModified)) {
 				// File has been updated.
 				readProps();
 			}
@@ -104,51 +99,52 @@
 	}
 
 	@SuppressWarnings({ "unchecked", "rawtypes" })
-	private static void readProps() throws Exception {
-		InputStream in;
+	private static void readProps() {
+		Properties pdpProp = null;
 		pdpProp = new Properties();
 		try {
-			in = new FileInputStream(pdpPath.toFile());
+			InputStream in = new FileInputStream(pdpPath.toFile());
 			oldModified = pdpPath.toFile().lastModified();
 			pdpProp.load(in);
+			// Read the Properties and Load the PDPs and encoding.
+			pdpMap = new HashMap<>();
+			// Check the Keys for PDP_URLs
+			Collection<Object> unsorted = pdpProp.keySet();
+			List<String> sorted = new ArrayList(unsorted);
+			Collections.sort(sorted);
+			for (String propKey : sorted) {
+				loadPDPProperties(propKey, pdpProp);
+			}
+			if (pdpMap == null || pdpMap.isEmpty()) {
+				LOGGER.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Cannot Proceed without PDP_URLs");
+			}
+			in.close();
 		} catch (IOException e) {
 			LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
-			throw new Exception("Cannot Load the Properties file", e);
 		}
-		// Read the Properties and Load the PDPs and encoding.
-		pdpMap = new HashMap<String, String>();
-		// Check the Keys for PDP_URLs
-		Collection<Object> unsorted = pdpProp.keySet();
-		List<String> sorted = new ArrayList(unsorted);
-		Collections.sort(sorted);
-		for (String propKey : sorted) {
-			if (propKey.startsWith("PDP_URL")) {
-				String check_val = pdpProp.getProperty(propKey);
-				if (check_val == null) {
-					throw new Exception("Properties file doesn't have the PDP_URL parameter");
-				}
-				if (check_val.contains(";")) {
-					List<String> pdp_default = new ArrayList<String>(Arrays.asList(check_val.split("\\s*;\\s*")));
-					int pdpCount = 0;
-					while (pdpCount < pdp_default.size()) {
-						String pdpVal = pdp_default.get(pdpCount);
-						readPDPParam(pdpVal);
-						pdpCount++;
-					}
-				} else {
-					readPDPParam(check_val);
+	}
+	
+	private static void loadPDPProperties(String propKey, Properties pdpProp){
+		if (propKey.startsWith("PDP_URL")) {
+			String check_val = pdpProp.getProperty(propKey);
+			if (check_val == null) {
+				LOGGER.error("Properties file doesn't have the PDP_URL parameter");
+			}
+			if (check_val != null && check_val.contains(";")) {
+				List<String> pdp_default = new ArrayList<>(Arrays.asList(check_val.split("\\s*;\\s*")));
+				int pdpCount = 0;
+				while (pdpCount < pdp_default.size()) {
+					String pdpVal = pdp_default.get(pdpCount);
+					readPDPParam(pdpVal);
+					pdpCount++;
 				}
 			}
 		}
-		if (pdpMap == null || pdpMap.isEmpty()) {
-			LOGGER.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Cannot Proceed without PDP_URLs");
-			throw new Exception(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Cannot Proceed without PDP_URLs");
-		}
 	}
 
-	private static void readPDPParam(String pdpVal) throws Exception{
+	private static void readPDPParam(String pdpVal){
 		if(pdpVal.contains(",")){
-			List<String> pdpValues = new ArrayList<String>(Arrays.asList(pdpVal.split("\\s*,\\s*")));
+			List<String> pdpValues = new ArrayList<>(Arrays.asList(pdpVal.split("\\s*,\\s*")));
 			if(pdpValues.size()==3){
 				// 1:2 will be UserID:Password
 				String userID = pdpValues.get(1);
@@ -158,11 +154,9 @@
 				pdpMap.put(pdpValues.get(0), encoder.encodeToString((userID+":"+pass).getBytes(StandardCharsets.UTF_8)));
 			}else{
 				LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS + "No Credentials to send Request: " + pdpValues);
-				throw new Exception(XACMLErrorConstants.ERROR_PERMISSIONS + "No enough Credentials to send Request. " + pdpValues);
 			}
 		}else{
 			LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS + "No Credentials to send Request: " + pdpVal);
-			throw new Exception(XACMLErrorConstants.ERROR_PERMISSIONS +"No enough Credentials to send Request.");
 		}
 	}
 	
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyManagerServlet.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyManagerServlet.java
index a3f4ada..fdf4326 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyManagerServlet.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyManagerServlet.java
@@ -95,6 +95,15 @@
 		LIST, RENAME, COPY, DELETE, EDITFILE, ADDFOLDER, DESCRIBEPOLICYFILE, VIEWPOLICY, ADDSUBSCOPE, SWITCHVERSION, EXPORT, SEARCHLIST
 	}
 
+	private PolicyController policyController;
+	public PolicyController getPolicyController() {
+		return policyController;
+	}
+
+	public void setPolicyController(PolicyController policyController) {
+		this.policyController = policyController;
+	}
+
 	private static String CONTENTTYPE = "application/json";
 	private static String SUPERADMIN = "super-admin";
 	private static String SUPEREDITOR = "super-editor";
@@ -106,6 +115,7 @@
 	
 	private static Path closedLoopJsonLocation;
 	private static JsonArray policyNames;
+	private String testUserId = null;
 	
 	public static JsonArray getPolicyNames() {
 		return policyNames;
@@ -139,11 +149,11 @@
 		closedLoopJsonLocation = Paths.get(XACMLProperties
 				.getProperty(XACMLRestProperties.PROP_ADMIN_CLOSEDLOOP));
 		FileInputStream inputStream = null;
+		JsonReader jsonReader = null;
 		String location = closedLoopJsonLocation.toString();
 		try {
 			inputStream = new FileInputStream(location);
-			if (location.endsWith("json")) {
-				JsonReader jsonReader = null;
+			if (location.endsWith("json")) {	
 				jsonReader = Json.createReader(inputStream);
 				policyNames = jsonReader.readArray();
 				serviceTypeNamesList = new ArrayList<>();
@@ -152,13 +162,17 @@
 					String name = policyName.getJsonString("serviceTypePolicyName").getString();
 					serviceTypeNamesList.add(name);
 				}
-				jsonReader.close();
 			}
 		} catch (FileNotFoundException e) {
 			LOGGER.error("Exception Occured while initializing the JSONConfig file"+e);
 		}finally{
 			try {
-				inputStream.close();
+				if(inputStream != null){
+					inputStream.close();
+				}
+				if(jsonReader != null){
+					jsonReader.close();
+				}
 			} catch (IOException e) {
 				LOGGER.error("Exception Occured while closing the File InputStream"+e);
 			}
@@ -208,9 +222,10 @@
 					// Process form file field (input type="file").
 					files.put(item.getName(), item.getInputStream());
 					if(item.getName().endsWith(".xls")){
+						OutputStream outputStream = null;
 						try{
 							File file = new File(item.getName());
-							OutputStream outputStream = new FileOutputStream(file);
+							outputStream = new FileOutputStream(file);
 							IOUtils.copy(item.getInputStream(), outputStream);
 							outputStream.close();
 							newFile = file.toString();
@@ -218,6 +233,10 @@
 							importController.importRepositoryFile(newFile, request);
 						}catch(Exception e){
 							LOGGER.error("Upload error : " + e);
+						}finally{
+							if(outputStream != null){
+								outputStream.close();
+							}
 						}
 					}
 				}
@@ -307,13 +326,13 @@
 		if(params.has("policyList")){
 			policyList = (JSONArray) params.get("policyList");
 		}
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		List<JSONObject> resultList = new ArrayList<>();
 		try {
 			//Get the Login Id of the User from Request
 			String userId =  UserUtils.getUserSession(request).getOrgUserId();
 			//Check if the Role and Scope Size are Null get the values from db. 
-			List<Object> userRoles = PolicyController.getRoles(userId);
+			List<Object> userRoles = controller.getRoles(userId);
 			roles = new ArrayList<>();
 			scopes = new HashSet<>();
 			for(Object role: userRoles){
@@ -412,7 +431,7 @@
 		}
 
 		String activePolicy = null;
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		if(params.toString().contains("activeVersion")){
 			String activeVersion = params.getString("activeVersion");
 			String highestVersion = params.get("highestVersion").toString();
@@ -477,6 +496,7 @@
 			path = path.replace("/", ".");
 		}else{
 			path = path.replace("/", ".");
+			policyName = path;
 		}
 		if(path.contains("Config_")){
 			path = path.replace(".Config_", ":Config_");
@@ -485,16 +505,17 @@
 		}else if(path.contains("Decision_")){
 			path = path.replace(".Decision_", ":Decision_");
 		}
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		String[] split = path.split(":");
 		String query = "FROM PolicyEntity where policyName = '"+split[1]+"' and scope ='"+split[0]+"'";
 		List<Object> queryData = controller.getDataByQuery(query);
 		if(!queryData.isEmpty()){
 			PolicyEntity entity = (PolicyEntity) queryData.get(0);
 			File temp = null;
+			BufferedWriter bw = null;
 			try {
 				temp = File.createTempFile(policyName, ".tmp");
-				BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
+				bw = new BufferedWriter(new FileWriter(temp));
 				bw.write(entity.getPolicyData());
 				bw.close();
 				object = HumanPolicyComponent.DescribePolicy(temp);
@@ -504,6 +525,13 @@
 				if(temp != null){
 					temp.delete();
 				}
+				if(bw != null){
+					try {
+						bw.close();
+					} catch (IOException e) {
+						LOGGER.error("Exception Occured while Closing the File Writer"+e);
+					}
+				}
 			}
 		}else{
 			return error("Error Occured while Describing the Policy");
@@ -517,10 +545,12 @@
 		Set<String> scopes = null;
 		List<String> roles = null;
 		try {
+			PolicyController controller = getPolicyControllerInstance();
 			//Get the Login Id of the User from Request
-			String userId =  UserUtils.getUserSession(request).getOrgUserId();
+			String testUserID = getTestUserId();
+			String userId =  testUserID != null ? testUserID : UserUtils.getUserSession(request).getOrgUserId();
 			//Check if the Role and Scope Size are Null get the values from db. 
-			List<Object> userRoles = PolicyController.getRoles(userId);
+			List<Object> userRoles = controller.getRoles(userId);
 			roles = new ArrayList<>();
 			scopes = new HashSet<>();
 			for(Object role: userRoles){
@@ -604,22 +634,22 @@
 		}else{
 			scopeNamequery = "from PolicyEditorScopes where SCOPENAME like'" +scopeName+"'";
 		}
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		List<Object> scopesList = controller.getDataByQuery(scopeNamequery);
 		return  scopesList;
 	}
 
 	//Get Active Policy List based on Scope Selection form Policy Version table
 	private void activePolicyList(String scopeName, List<JSONObject> resultList, List<String> roles, Set<String> scopes, boolean onlyFolders){
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		if(scopeName.contains("/")){
 			scopeName = scopeName.replace("/", File.separator);
 		}
 		if(scopeName.contains("\\")){
 			scopeName = scopeName.replace("\\", "\\\\\\\\");
 		}
-		String query = "from PolicyVersion where POLICY_NAME like'" +scopeName+"%'";
-		String scopeNamequery = "from PolicyEditorScopes where SCOPENAME like'" +scopeName+"%'";
+		String query = "from PolicyVersion where POLICY_NAME like '" +scopeName+"%'";
+		String scopeNamequery = "from PolicyEditorScopes where SCOPENAME like '" +scopeName+"%'";
 		List<Object> activePolicies = controller.getDataByQuery(query);
 		List<Object> scopesList = controller.getDataByQuery(scopeNamequery);
 		for(Object list : scopesList){
@@ -686,7 +716,7 @@
 	}
 
 	private String getUserName(String loginId){
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		UserInfo userInfo = (UserInfo) controller.getEntityItem(UserInfo.class, "userLoginId", loginId);
 		if(userInfo == null){
 			return SUPERADMIN;
@@ -721,7 +751,7 @@
 					scopeName = scopeName.replace("\\", "\\\\\\\\");
 					newScopeName = newScopeName.replace("\\", "\\\\\\\\");
 				}
-				PolicyController controller = new PolicyController();
+				PolicyController controller = getPolicyControllerInstance();
 				String query = "from PolicyVersion where POLICY_NAME like'" +scopeName+"%'";
 				String scopeNamequery = "from PolicyEditorScopes where SCOPENAME like'" +scopeName+"%'";
 				List<Object> activePolicies = controller.getDataByQuery(query);
@@ -784,7 +814,7 @@
 	private JSONObject policyRename(String oldPath, String newPath, String userId) throws ServletException {
 		try {
 			PolicyEntity entity = null;
-			PolicyController controller = new PolicyController();
+			PolicyController controller = getPolicyControllerInstance();
 
 			String policyVersionName = newPath.replace(".xml", "");
 			String policyName = policyVersionName.substring(0, policyVersionName.lastIndexOf(".")).replace("/", File.separator);
@@ -861,7 +891,7 @@
 		try {
 			ConfigurationDataEntity configEntity = entity.getConfigurationData();
 			ActionBodyEntity actionEntity = entity.getActionBodyEntity();
-			PolicyController controller = new PolicyController();
+			PolicyController controller = getPolicyControllerInstance();
 
 			String oldPolicyNameWithoutExtension = removeoldPolicyExtension;
 			String newPolicyNameWithoutExtension = removenewPolicyExtension;
@@ -878,9 +908,9 @@
 				configEntity.setConfigurationName(configEntity.getConfigurationName().replace(oldScope +"."+oldPolicyNameWithoutExtension, newScope+"."+newPolicyNameWithoutExtension));
 				controller.updateData(configEntity);
 				String newConfigurationName = configEntity.getConfigurationName();
-				File file = new File(PolicyController.configHome + File.separator + oldConfigurationName);
+				File file = new File(PolicyController.getConfigHome() + File.separator + oldConfigurationName);
 				if(file.exists()){
-					File renamefile = new File(PolicyController.configHome + File.separator + newConfigurationName);
+					File renamefile = new File(PolicyController.getConfigHome() + File.separator + newConfigurationName);
 					file.renameTo(renamefile);
 				}
 			}else if(newpolicyName.contains("Action_")){
@@ -888,9 +918,9 @@
 				actionEntity.setActionBody(actionEntity.getActionBody().replace(oldScope +"."+oldPolicyNameWithoutExtension, newScope+"."+newPolicyNameWithoutExtension));
 				controller.updateData(actionEntity);
 				String newConfigurationName = actionEntity.getActionBodyName();
-				File file = new File(PolicyController.actionHome + File.separator + oldConfigurationName);
+				File file = new File(PolicyController.getActionHome() + File.separator + oldConfigurationName);
 				if(file.exists()){
-					File renamefile = new File(PolicyController.actionHome + File.separator + newConfigurationName);
+					File renamefile = new File(PolicyController.getActionHome() + File.separator + newConfigurationName);
 					file.renameTo(renamefile);
 				}
 			}
@@ -916,7 +946,7 @@
 
 	private JSONObject cloneRecord(String newpolicyName, String oldScope, String removeoldPolicyExtension, String newScope, String removenewPolicyExtension, PolicyEntity entity, String userId) throws ServletException{
 		String queryEntityName = null;
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		PolicyEntity cloneEntity = new PolicyEntity();
 		cloneEntity.setPolicyName(newpolicyName);
 		removeoldPolicyExtension = removeoldPolicyExtension.replace(".xml", "");
@@ -994,7 +1024,7 @@
 			}
 			String[] oldPolicySplit = oldPolicyCheck.split(":");
 
-			PolicyController controller = new PolicyController();
+			PolicyController controller = getPolicyControllerInstance();
 
 			PolicyEntity entity = null;
 			boolean success = false;
@@ -1063,7 +1093,7 @@
 
 	//Delete Policy or Scope Functionality
 	private JSONObject delete(JSONObject params, HttpServletRequest request) throws ServletException {
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		PolicyRestController restController = new PolicyRestController();
 		PolicyEntity policyEntity = null;
 		String policyNamewithoutExtension;
@@ -1272,7 +1302,7 @@
 	private JSONObject editFile(JSONObject params) throws ServletException {
 		// get content
 		try {
-			PolicyController controller = new PolicyController();
+			PolicyController controller = getPolicyControllerInstance();
 			String mode = params.getString("mode");
 			String path = params.getString("path");
 			LOGGER.debug("editFile path: {}"+ path);
@@ -1333,7 +1363,7 @@
 
 	//Add Scopes
 	private JSONObject addFolder(JSONObject params, HttpServletRequest request) throws ServletException {
-		PolicyController controller = new PolicyController();
+		PolicyController controller = getPolicyControllerInstance();
 		String name = "";
 		try {
 			String userId = UserUtils.getUserSession(request).getOrgUserId();
@@ -1413,4 +1443,16 @@
 			throw new ServletException(e);
 		}
 	}
+	
+	private PolicyController getPolicyControllerInstance(){
+		return policyController != null ? getPolicyController() : new PolicyController();
+	}
+
+	public String getTestUserId() {
+		return testUserId;
+	}
+
+	public void setTestUserId(String testUserId) {
+		this.testUserId = testUserId;
+	}
 }
\ No newline at end of file
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyNotificationMail.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyNotificationMail.java
index 5d8460b..9bd6e4f 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyNotificationMail.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyNotificationMail.java
@@ -46,15 +46,15 @@
 
 @Configurable
 public class PolicyNotificationMail{
-	private static Logger LOGGER	= FlexLogger.getLogger(PolicyNotificationMail.class);
+	private static Logger policyLogger	= FlexLogger.getLogger(PolicyNotificationMail.class);
 	
 	@Bean
 	public JavaMailSenderImpl javaMailSenderImpl(){
 		JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
-		mailSender.setHost(PolicyController.smtpHost);
-		mailSender.setPort(Integer.parseInt(PolicyController.smtpPort));
-		mailSender.setUsername(PolicyController.smtpUsername);
-		mailSender.setPassword(PolicyController.smtpPassword);
+		mailSender.setHost(PolicyController.getSmtpHost());
+		mailSender.setPort(Integer.parseInt(PolicyController.getSmtpPort()));
+		mailSender.setUsername(PolicyController.getSmtpUsername());
+		mailSender.setPassword(PolicyController.getSmtpPassword());
 		Properties prop = mailSender.getJavaMailProperties();
 		prop.put("mail.transport.protocol", "smtp");
 		prop.put("mail.smtp.auth", "true");
@@ -64,7 +64,7 @@
 	}
 
 	public void sendMail(PolicyVersion entityItem, String policyName, String mode, CommonClassDao policyNotificationDao) throws MessagingException {  
-		String from = PolicyController.smtpUsername;
+		String from = PolicyController.getSmtpUsername();
 		String to = "";
 		String subject = "";
 		String message = "";
@@ -72,37 +72,37 @@
 		Date date = new Date();
 		if("EditPolicy".equalsIgnoreCase(mode)){
 			subject = "Policy has been Updated : "+entityItem.getPolicyName();
-			message = "The Policy Which you are watching in  " + PolicyController.smtpApplicationName + " has been Updated" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n' + "Active Version  : " +entityItem.getActiveVersion() 
+			message = "The Policy Which you are watching in  " + PolicyController.getSmtpApplicationName() + " has been Updated" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n' + "Active Version  : " +entityItem.getActiveVersion() 
 					 + '\n'  + '\n' + "Modified By : " +entityItem.getModifiedBy() + '\n' + "Modified Time  : " +dateFormat.format(date) + '\n' + '\n' + '\n' + '\n' + "Policy Notification System  (please don't respond to this email)";
 		}
 		if("Rename".equalsIgnoreCase(mode)){
 			subject = "Policy has been Renamed : "+entityItem.getPolicyName();
-			message = "The Policy Which you are watching in  " + PolicyController.smtpApplicationName + " has been Renamed" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n' + "Active Version  : " +entityItem.getActiveVersion() 
+			message = "The Policy Which you are watching in  " + PolicyController.getSmtpApplicationName() + " has been Renamed" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n' + "Active Version  : " +entityItem.getActiveVersion() 
 					 + '\n'  + '\n' + "Renamed By : " +entityItem.getModifiedBy() + '\n' + "Renamed Time  : " +dateFormat.format(date) + '\n' + '\n' + '\n' + '\n' + "Policy Notification System  (please don't respond to this email)";
 		}
 		if("DeleteAll".equalsIgnoreCase(mode)){
 			subject = "Policy has been Deleted : "+entityItem.getPolicyName();
-			message = "The Policy Which you are watching in  " + PolicyController.smtpApplicationName + " has been Deleted with All Versions" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n'  
+			message = "The Policy Which you are watching in  " + PolicyController.getSmtpApplicationName() + " has been Deleted with All Versions" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n'  
 					 + '\n'  + '\n' + "Deleted By : " +entityItem.getModifiedBy() + '\n' + "Deleted Time  : " +dateFormat.format(date) + '\n' + '\n' + '\n' + '\n' + "Policy Notification System  (please don't respond to this email)";
 		}
 		if("DeleteOne".equalsIgnoreCase(mode)){
 			subject = "Policy has been Deleted : "+entityItem.getPolicyName();
-			message = "The Policy Which you are watching in  " + PolicyController.smtpApplicationName + " has been Deleted" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n'  +"Policy Version : " +entityItem.getActiveVersion()
+			message = "The Policy Which you are watching in  " + PolicyController.getSmtpApplicationName() + " has been Deleted" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n'  +"Policy Version : " +entityItem.getActiveVersion()
 					 + '\n'  + '\n' + "Deleted By : " +entityItem.getModifiedBy() + '\n' + "Deleted Time  : " +dateFormat.format(date) + '\n' + '\n' + '\n' + '\n' + "Policy Notification System  (please don't respond to this email)";
 		}
 		if("DeleteScope".equalsIgnoreCase(mode)){
 			subject = "Scope has been Deleted : "+entityItem.getPolicyName();
-			message = "The Scope Which you are watching in  " + PolicyController.smtpApplicationName + " has been Deleted" + '\n'  + '\n'  + '\n'+ "Scope + Scope Name  : "  + policyName + '\n'  
+			message = "The Scope Which you are watching in  " + PolicyController.getSmtpApplicationName() + " has been Deleted" + '\n'  + '\n'  + '\n'+ "Scope + Scope Name  : "  + policyName + '\n'  
 					 + '\n'  + '\n' + "Deleted By : " +entityItem.getModifiedBy() + '\n' + "Deleted Time  : " +dateFormat.format(date) + '\n' + '\n' + '\n' + '\n' + "Policy Notification System  (please don't respond to this email)";
 		}
 		if("SwitchVersion".equalsIgnoreCase(mode)){
 			subject = "Policy has been SwitchedVersion : "+entityItem.getPolicyName();
-			message = "The Policy Which you are watching in  " + PolicyController.smtpApplicationName + " has been SwitchedVersion" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n' + "Active Version  : " +entityItem.getActiveVersion() 
+			message = "The Policy Which you are watching in  " + PolicyController.getSmtpApplicationName() + " has been SwitchedVersion" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n' + "Active Version  : " +entityItem.getActiveVersion() 
 					 + '\n'  + '\n' + "Switched By : " +entityItem.getModifiedBy() + '\n' + "Switched Time  : " +dateFormat.format(date) + '\n' + '\n' + '\n' + '\n' + "Policy Notification System  (please don't respond to this email)";
 		}
 		if("Move".equalsIgnoreCase(mode)){
 			subject = "Policy has been Moved to Other Scope : "+entityItem.getPolicyName();
-			message = "The Policy Which you are watching in  " + PolicyController.smtpApplicationName + " has been Moved to Other Scope" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n' + "Active Version  : " +entityItem.getActiveVersion() 
+			message = "The Policy Which you are watching in  " + PolicyController.getSmtpApplicationName() + " has been Moved to Other Scope" + '\n'  + '\n'  + '\n'+ "Scope + Policy Name  : "  + policyName + '\n' + "Active Version  : " +entityItem.getActiveVersion() 
 					 + '\n'  + '\n' + "Moved By : " +entityItem.getModifiedBy() + '\n' + "Moved Time  : " +dateFormat.format(date) + '\n' + '\n' + '\n' + '\n' + "Policy Notification System  (please don't respond to this email)";
 		}
 		String policyFileName = entityItem.getPolicyName();
@@ -120,29 +120,21 @@
 		boolean sendFlag = false;
 		List<Object> watchList = policyNotificationDao.getDataByQuery(query);
 		if(watchList != null){
-			if(watchList.size() > 0){
+			if(watchList.isEmpty()){
 				for(Object watch : watchList){
 					WatchPolicyNotificationTable list = (WatchPolicyNotificationTable) watch;
 					String watchPolicyName = list.getPolicyName();
-					if(watchPolicyName.contains("Config_")){
+					if(watchPolicyName.contains("Config_") || watchPolicyName.contains("Action_") || watchPolicyName.contains("Decision_")){
 						if(watchPolicyName.equals(checkPolicyName)){
 							sendFlag = true;
+						}else{
+							sendFlag = false;
 						}
-					}else if(watchPolicyName.contains("Action_")){
-						if(watchPolicyName.equals(checkPolicyName)){
-							sendFlag = true;
-						}
-					}else if(watchPolicyName.contains("Decision_")){
-						if(watchPolicyName.equals(checkPolicyName)){
-							sendFlag = true;
-						}
-					}else{
-						sendFlag = true;
 					}
 					if(sendFlag){
 						AnnotationConfigApplicationContext ctx = null;
 						try {
-							to = list.getLoginIds()+"@"+PolicyController.smtpEmailExtension;
+							to = list.getLoginIds()+"@"+PolicyController.getSmtpApplicationName();
 							to = to.trim();
 							ctx = new AnnotationConfigApplicationContext();
 							ctx.register(PolicyNotificationMail.class);
@@ -156,9 +148,11 @@
 							mailMsg.setText(message);
 							mailSender.send(mimeMessage);
 						} catch (Exception e) {
-							LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+"Exception Occured in Policy Notification" +e);
+							policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+"Exception Occured in Policy Notification" +e);
 						}finally{
-							ctx.close();
+							if(ctx != null){
+								ctx.close();
+							}
 						}
 					}
 				}
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyRestController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyRestController.java
index 4f0710b..582dd6c 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyRestController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/PolicyRestController.java
@@ -77,9 +77,10 @@
 @RequestMapping("/")
 public class PolicyRestController extends RestrictedBaseController{
 
-	private static final Logger LOGGER	= FlexLogger.getLogger(PolicyRestController.class);
+	private static final Logger policyLogger = FlexLogger.getLogger(PolicyRestController.class);
 	
-	private String boundary = null;
+	private static final String modal = "model";
+	private static final String importDictionary = "import_dictionary";
 	
 	@Autowired
 	CommonClassDao commonClassDao;
@@ -92,38 +93,38 @@
 		mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 		JsonNode root = mapper.readTree(request.getReader());
 		
-		PolicyRestAdapter policyData = (PolicyRestAdapter)mapper.readValue(root.get("policyData").get("policy").toString(), PolicyRestAdapter.class);
+		PolicyRestAdapter policyData = mapper.readValue(root.get(PolicyController.getPolicydata()).get("policy").toString(), PolicyRestAdapter.class);
 	
-		if(root.get("policyData").get("model").get("type").toString().replace("\"", "").equals("file")){
-			policyData.isEditPolicy = true;
+		if("file".equals(root.get(PolicyController.getPolicydata()).get(modal).get("type").toString().replace("\"", ""))){
+			policyData.setEditPolicy(true);
 		}
-		if(root.get("policyData").get("model").get("path").size() != 0){
+		if(root.get(PolicyController.getPolicydata()).get(modal).get("path").size() != 0){
 			String dirName = "";
-			for(int i = 0; i < root.get("policyData").get("model").get("path").size(); i++){
-				dirName = dirName.replace("\"", "") + root.get("policyData").get("model").get("path").get(i).toString().replace("\"", "") + File.separator;
+			for(int i = 0; i < root.get(PolicyController.getPolicydata()).get(modal).get("path").size(); i++){
+				dirName = dirName.replace("\"", "") + root.get(PolicyController.getPolicydata()).get(modal).get("path").get(i).toString().replace("\"", "") + File.separator;
 			}
-			if(policyData.isEditPolicy){
+			if(policyData.isEditPolicy()){
 				policyData.setDomainDir(dirName.substring(0, dirName.lastIndexOf(File.separator)));
 			}else{
-				policyData.setDomainDir(dirName + root.get("policyData").get("model").get("name").toString().replace("\"", ""));
+				policyData.setDomainDir(dirName + root.get(PolicyController.getPolicydata()).get(modal).get("name").toString().replace("\"", ""));
 			}
 		}else{
-			String domain = root.get("policyData").get("model").get("name").toString();
+			String domain = root.get(PolicyController.getPolicydata()).get("model").get("name").toString();
 			if(domain.contains("/")){
-				domain = domain.substring(0, domain.lastIndexOf("/")).replace("/", File.separator);
+				domain = domain.substring(0, domain.lastIndexOf('/')).replace("/", File.separator);
 			}
 			domain = domain.replace("\"", "");
 			policyData.setDomainDir(domain);
 		}
 		
 		if(policyData.getConfigPolicyType() != null){
-			if(policyData.getConfigPolicyType().equalsIgnoreCase("ClosedLoop_Fault")){
+			if("ClosedLoop_Fault".equalsIgnoreCase(policyData.getConfigPolicyType())){
 				CreateClosedLoopFaultController faultController = new CreateClosedLoopFaultController();
 				policyData = faultController.setDataToPolicyRestAdapter(policyData, root);
-			}else if(policyData.getConfigPolicyType().equalsIgnoreCase("Firewall Config")){
+			}else if("Firewall Config".equalsIgnoreCase(policyData.getConfigPolicyType())){
 				CreateFirewallController fwController = new CreateFirewallController();
 				policyData = fwController.setDataToPolicyRestAdapter(policyData);
-			}else if(policyData.getConfigPolicyType().equalsIgnoreCase("Micro Service")){
+			}else if("Micro Service".equalsIgnoreCase(policyData.getConfigPolicyType())){
 				CreateDcaeMicroServiceController msController = new CreateDcaeMicroServiceController();
 				policyData = msController.setDataToPolicyRestAdapter(policyData, root);
 			}
@@ -134,34 +135,34 @@
 		String result;
 		String body = PolicyUtils.objectToJsonString(policyData);
 		String uri = request.getRequestURI();
-		ResponseEntity<?> responseEntity = sendToPAP(body, uri, request, HttpMethod.POST);
-		if(responseEntity.getBody().equals(HttpServletResponse.SC_CONFLICT)){
+		ResponseEntity<?> responseEntity = sendToPAP(body, uri, HttpMethod.POST);
+		if(responseEntity != null && responseEntity.getBody().equals(HttpServletResponse.SC_CONFLICT)){
 			result = "PolicyExists";
-		}else{
+		}else if(responseEntity != null){
 			result =  responseEntity.getBody().toString();
-			String policyName = responseEntity.getHeaders().get("policyName").get(0).toString();
-			if(policyData.isEditPolicy){
-				if(result.equalsIgnoreCase("success")){
-					PolicyNotificationMail email = new PolicyNotificationMail();
-					String mode = "EditPolicy";
-					String watchPolicyName = policyName.replace(".xml", "");
-					String version = watchPolicyName.substring(watchPolicyName.lastIndexOf(".")+1);
-					watchPolicyName = watchPolicyName.substring(0, watchPolicyName.lastIndexOf(".")).replace(".", File.separator);
-					String policyVersionName = watchPolicyName.replace(".", File.separator);
-					watchPolicyName = watchPolicyName + "." + version + ".xml";
-					PolicyVersion entityItem = new PolicyVersion();
-					entityItem.setPolicyName(policyVersionName);
-					entityItem.setActiveVersion(Integer.parseInt(version));
-					entityItem.setModifiedBy(userId);
-					email.sendMail(entityItem, watchPolicyName, mode, commonClassDao);
-				}
+			String policyName = responseEntity.getHeaders().get("policyName").get(0);
+			if(policyData.isEditPolicy() && "success".equalsIgnoreCase(result)){
+				PolicyNotificationMail email = new PolicyNotificationMail();
+				String mode = "EditPolicy";
+				String watchPolicyName = policyName.replace(".xml", "");
+				String version = watchPolicyName.substring(watchPolicyName.lastIndexOf('.')+1);
+				watchPolicyName = watchPolicyName.substring(0, watchPolicyName.lastIndexOf('.')).replace(".", File.separator);
+				String policyVersionName = watchPolicyName.replace(".", File.separator);
+				watchPolicyName = watchPolicyName + "." + version + ".xml";
+				PolicyVersion entityItem = new PolicyVersion();
+				entityItem.setPolicyName(policyVersionName);
+				entityItem.setActiveVersion(Integer.parseInt(version));
+				entityItem.setModifiedBy(userId);
+				email.sendMail(entityItem, watchPolicyName, mode, commonClassDao);
 			}
+		}else{
+			result =  "Response is null from PAP";
 		}
 		
 	
-		response.setCharacterEncoding("UTF-8");
-		response.setContentType("application / json");
-		request.setCharacterEncoding("UTF-8");
+		response.setCharacterEncoding(PolicyController.getCharacterencoding());
+		response.setContentType(PolicyController.getContenttype());
+		request.setCharacterEncoding(PolicyController.getCharacterencoding());
 
 		PrintWriter out = response.getWriter();
 		String responseString = mapper.writeValueAsString(result);
@@ -172,17 +173,16 @@
 	}
 	
 	
-	private ResponseEntity<?> sendToPAP(String body, String requestURI, HttpServletRequest request, HttpMethod method) throws Exception{
-		String papUrl = PolicyController.papUrl;
+	private ResponseEntity<?> sendToPAP(String body, String requestURI, HttpMethod method){
+		String papUrl = PolicyController.getPapUrl();
 		String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID);
 		String papPass = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS);
-		LOGGER.info("User Id is " + papID + "Pass is: " + papPass);
 
 		Base64.Encoder encoder = Base64.getEncoder();
 		String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8));
 		HttpHeaders headers = new HttpHeaders();
 		headers.set("Authorization", "Basic " + encoding);
-		headers.set("Content-Type", "application/json");
+		headers.set("Content-Type", PolicyController.getContenttype());
 
 		RestTemplate restTemplate = new RestTemplate();
 		HttpEntity<?> requestEntity = new HttpEntity<>(body, headers);
@@ -190,55 +190,52 @@
 		HttpClientErrorException exception = null;
 	
 		try{
-			result = ((ResponseEntity<?>) restTemplate.exchange(papUrl + requestURI, method, requestEntity, String.class));
+			result = restTemplate.exchange(papUrl + requestURI, method, requestEntity, String.class);
 		}catch(Exception e){
-			LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl, e);
+			policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl, e);
 			exception = new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage());
-			if(e.getMessage().equals("409 Conflict")){
-				return (ResponseEntity<?>) ResponseEntity.ok(HttpServletResponse.SC_CONFLICT);
+			if("409 Conflict".equals(e.getMessage())){
+				return ResponseEntity.ok(HttpServletResponse.SC_CONFLICT);
 			}
 		}
 		if(exception != null && exception.getStatusCode()!=null){
 			if(exception.getStatusCode().equals(HttpStatus.UNAUTHORIZED)){
 				String message = XACMLErrorConstants.ERROR_PERMISSIONS +":"+exception.getStatusCode()+":" + "ERROR_AUTH_GET_PERM" ;
-				LOGGER.error(message);
-				throw new Exception(message, exception);
+				policyLogger.error(message);
 			}
 			if(exception.getStatusCode().equals(HttpStatus.BAD_REQUEST)){
 				String message = XACMLErrorConstants.ERROR_DATA_ISSUE + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString();
-				LOGGER.error(message);
-				throw new Exception(message, exception);
+				policyLogger.error(message);
 			}
 			if(exception.getStatusCode().equals(HttpStatus.NOT_FOUND)){
 				String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + papUrl + exception;
-				LOGGER.error(message);
-				throw new Exception(message, exception);
+				policyLogger.error(message);
 			}
 			String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString();
-			LOGGER.error(message);
-			throw new Exception(message, exception);
+			policyLogger.error(message);
 		}
 		return result;	
 	}
 	
-	private String callPAP(HttpServletRequest request, HttpServletResponse response, String method, String uri){
-		String papUrl = PolicyController.papUrl;
+	private String callPAP(HttpServletRequest request , String method, String uriValue){
+		String uri = uriValue;
+		String boundary = null;
+		String papUrl = PolicyController.getPapUrl();
 		String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID);
 		String papPass = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS);
-		LOGGER.info("User Id is " + papID + "Pass is: " + papPass);
-
+	
 		Base64.Encoder encoder = Base64.getEncoder();
 		String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8));
 		HttpHeaders headers = new HttpHeaders();
 		headers.set("Authorization", "Basic " + encoding);
-		headers.set("Content-Type", "application/json");
+		headers.set("Content-Type", PolicyController.getContenttype());
 
 
 		HttpURLConnection connection = null;
 		List<FileItem> items;
 		FileItem item = null;
 		File file = null;
-		if(uri.contains("import_dictionary")){
+		if(uri.contains(importDictionary)){
 			try {
 				items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
 				item = items.get(0);
@@ -246,7 +243,7 @@
 				String newFile = file.toString();
 				uri = uri +"&dictionaryName="+newFile;
 			} catch (Exception e2) {
-				LOGGER.error("Exception Occured while calling PAP with import dictionary request"+e2);
+				policyLogger.error("Exception Occured while calling PAP with import dictionary request"+e2);
 			}
 		}
 
@@ -262,15 +259,15 @@
 
 			if(!uri.contains("searchPolicy?action=delete&")){
 				
-				if(!(uri.endsWith("set_BRMSParamData") || uri.contains("import_dictionary"))){
-					connection.setRequestProperty("Content-Type","application/json");
+				if(!(uri.endsWith("set_BRMSParamData") || uri.contains(importDictionary))){
+					connection.setRequestProperty("Content-Type",PolicyController.getContenttype());
 					ObjectMapper mapper = new ObjectMapper();
 					mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 					JsonNode root = null;
 					try {
 						root = mapper.readTree(request.getReader());
 					}catch (Exception e1) {
-						LOGGER.error("Exception Occured while calling PAP"+e1);
+						policyLogger.error("Exception Occured while calling PAP"+e1);
 					}
 
 					ObjectMapper mapper1 = new ObjectMapper();
@@ -285,14 +282,14 @@
 						// send current configuration
 						try (OutputStream os = connection.getOutputStream()) {
 							int count = IOUtils.copy((InputStream) content, os);
-							if (LOGGER.isDebugEnabled()) {
-								LOGGER.debug("copied to output, bytes=" + count);
+							if (policyLogger.isDebugEnabled()) {
+								policyLogger.debug("copied to output, bytes=" + count);
 							}
 						}
 					}
 				}else{
 					if(uri.endsWith("set_BRMSParamData")){
-						connection.setRequestProperty("Content-Type","application/json");
+						connection.setRequestProperty("Content-Type",PolicyController.getContenttype());
 						try (OutputStream os = connection.getOutputStream()) {
 							IOUtils.copy((InputStream) request.getInputStream(), os);
 						}
@@ -319,34 +316,26 @@
 				scanner.useDelimiter("\\A");
 				responseJson =  scanner.hasNext() ? scanner.next() : "";
 				scanner.close();
-				LOGGER.info("JSON response from PAP: " + responseJson);
+				policyLogger.info("JSON response from PAP: " + responseJson);
 				return responseJson;
 			}
 
 		} catch (Exception e) {
-			LOGGER.error("Exception Occured"+e);
+			policyLogger.error("Exception Occured"+e);
 		}finally{
-			if(file != null){
-				if(file.exists()){
-					file.delete();
-				}
+			if(file != null && file.exists() && file.delete()){
+				policyLogger.info("File Deleted Successfully");
 			}
 			if (connection != null) {
 				try {
 					// For some reason trying to get the inputStream from the connection
 					// throws an exception rather than returning null when the InputStream does not exist.
-					InputStream is = null;
-					try {
-						is = connection.getInputStream();
-					} catch (Exception e1) {
-						// ignore this
-					}
+					InputStream is = connection.getInputStream();
 					if (is != null) {
 						is.close();
 					}
-
 				} catch (IOException ex) {
-					LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to close connection: " + ex, ex);
+					policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to close connection: " + ex, ex);
 				}
 				connection.disconnect();
 			}
@@ -357,18 +346,24 @@
 	@RequestMapping(value={"/getDictionary/*"}, method={RequestMethod.GET})
 	public void getDictionaryController(HttpServletRequest request, HttpServletResponse response) throws Exception{
 		String uri = request.getRequestURI().replace("/getDictionary", "");
-		String body = sendToPAP(null, uri, request, HttpMethod.GET).getBody().toString();
+		String body = null;
+		ResponseEntity<?> responseEntity = sendToPAP(null, uri, HttpMethod.GET);
+		if(responseEntity != null){
+			body = responseEntity.getBody().toString();
+		}else{
+			body = "";
+		}
 		response.getWriter().write(body);
 	}
 	
 	@RequestMapping(value={"/saveDictionary/*/*"}, method={RequestMethod.POST})
 	public ModelAndView saveDictionaryController(HttpServletRequest request, HttpServletResponse response) throws Exception{
 		String uri = request.getRequestURI().replace("/saveDictionary", "");
-		if(uri.contains("import_dictionary")){
+		if(uri.contains(importDictionary)){
 			String userId = UserUtils.getUserSession(request).getOrgUserId();
 			uri = uri+ "?userId=" +userId;
 		}
-		String body = callPAP(request, response, "POST", uri.replaceFirst("/", "").trim());
+		String body = callPAP(request, "POST", uri.replaceFirst("/", "").trim());
 		response.getWriter().write(body);
 		return null;
 	}
@@ -376,7 +371,7 @@
 	@RequestMapping(value={"/deleteDictionary/*/*"}, method={RequestMethod.POST})
 	public ModelAndView deletetDictionaryController(HttpServletRequest request, HttpServletResponse response) throws Exception{
 		String uri = request.getRequestURI().replace("/deleteDictionary", "");
-		String body = callPAP(request, response, "POST", uri.replaceFirst("/", "").trim());
+		String body = callPAP(request, "POST", uri.replaceFirst("/", "").trim());
 		response.getWriter().write(body);
 		return null;
 	}
@@ -385,7 +380,7 @@
 	public ModelAndView searchDictionaryController(HttpServletRequest request, HttpServletResponse response) throws Exception{
 		Object resultList = null;
 		String uri = request.getRequestURI();
-		String body = callPAP(request, response, "POST", uri.replaceFirst("/", "").trim());
+		String body = callPAP(request, "POST", uri.replaceFirst("/", "").trim());
 		if(body.contains("CouldNotConnectException")){
 			List<String> data = new ArrayList<>();
 			data.add("Elastic Search Server is down");
@@ -395,8 +390,8 @@
 			resultList = json.get("policyresult");
 		}
 		
-		response.setCharacterEncoding("UTF-8");
-		response.setContentType("application / json");
+		response.setCharacterEncoding(PolicyController.getCharacterencoding());
+		response.setContentType(PolicyController.getContenttype());
 		PrintWriter out = response.getWriter();
 		JSONObject j = new JSONObject("{result: " + resultList + "}");
 		out.write(j.toString());
@@ -407,7 +402,7 @@
 	public ModelAndView searchPolicy(HttpServletRequest request, HttpServletResponse response) throws Exception{
 		Object resultList = null;
 		String uri = request.getRequestURI()+"?action=search";
-		String body = callPAP(request, response, "POST", uri.replaceFirst("/", "").trim());
+		String body = callPAP(request, "POST", uri.replaceFirst("/", "").trim());
 
 		JSONObject json = new JSONObject(body);
 		try{
@@ -416,6 +411,7 @@
 			List<String> data = new ArrayList<>();
 			data.add("Elastic Search Server is down");
 			resultList = data;
+			policyLogger.error("Exception Occured while searching for Policy in Elastic Database" +e);
 		}
 
 		response.setCharacterEncoding("UTF-8");
@@ -430,7 +426,7 @@
 	
 	public void deleteElasticData(String fileName){
 		String uri = "searchPolicy?action=delete&policyName='"+fileName+"'";
-		callPAP(null, null, "POST", uri.trim());
+		callPAP(null, "POST", uri.trim());
 	}
 
 }
\ No newline at end of file
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/RESTfulPAPEngine.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/RESTfulPAPEngine.java
index 6c970ad..090476a 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/RESTfulPAPEngine.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/admin/RESTfulPAPEngine.java
@@ -69,6 +69,8 @@
  */
 public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAPPolicyEngine {
 	private static final Logger LOGGER	= FlexLogger.getLogger(RESTfulPAPEngine.class);
+	
+	private static final String groupID = "groupId=";
 
 	//
 	// URL of the PAP Servlet that this Admin Console talks to
@@ -113,28 +115,26 @@
 	
 	@Override
 	public EcompPDPGroup getDefaultGroup() throws PAPException {
-		EcompPDPGroup newGroup = (EcompPDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, "groupId=", "default=");
-		return newGroup;
+		return (EcompPDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, groupID, "default=");
 	}
 
 	@Override
 	public void SetDefaultGroup(EcompPDPGroup group) throws PAPException {
-		sendToPAP("POST", null, null, null, "groupId=" + group.getId(), "default=true");
+		sendToPAP("POST", null, null, null, groupID + group.getId(), "default=true");
 	}
 
 	@SuppressWarnings("unchecked")
 	@Override
 	public Set<EcompPDPGroup> getEcompPDPGroups() throws PAPException {
 		Set<EcompPDPGroup> newGroupSet;
-		newGroupSet = (Set<EcompPDPGroup>) this.sendToPAP("GET", null, Set.class, StdPDPGroup.class, "groupId=");
+		newGroupSet = (Set<EcompPDPGroup>) this.sendToPAP("GET", null, Set.class, StdPDPGroup.class, groupID);
 		return Collections.unmodifiableSet(newGroupSet);
 	}
 
 
 	@Override
 	public EcompPDPGroup getGroup(String id) throws PAPException {
-		EcompPDPGroup newGroup = (EcompPDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, "groupId=" + id);
-		return newGroup;
+		return (EcompPDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, groupID + id);
 	}
 
 	@Override
@@ -146,10 +146,10 @@
 			escapedName = URLEncoder.encode(name, "UTF-8");
 			escapedDescription = URLEncoder.encode(description, "UTF-8");
 		} catch (UnsupportedEncodingException e) {
-			throw new PAPException("Unable to send name or description to PAP: " + e.getMessage());
+			throw new PAPException("Unable to send name or description to PAP: " + e.getMessage()  +e);
 		}
 		
-		this.sendToPAP("POST", null, null, null, "groupId=", "groupName="+escapedName, "groupDescription=" + escapedDescription);
+		this.sendToPAP("POST", null, null, null, groupID, "groupName="+escapedName, "groupDescription=" + escapedDescription);
 	}
 	
 	
@@ -178,7 +178,7 @@
 			
 			// now update the group object on the PAP
 			
-			sendToPAP("PUT", group, null, null, "groupId=" + group.getId());
+			sendToPAP("PUT", group, null, null, groupID + group.getId());
 		} catch (Exception e) {
 			String message = "Unable to PUT policy '" + group.getId() + "', e:" + e;
 			LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
@@ -194,7 +194,7 @@
 		if (newGroup != null) {
 			moveToGroupString = "movePDPsToGroupId=" + newGroup.getId();
 		}
-		sendToPAP("DELETE", null, null, null, "groupId=" + group.getId(), moveToGroupString);
+		sendToPAP("DELETE", null, null, null, groupID + group.getId(), moveToGroupString);
 	}
 	
 	@Override
@@ -204,41 +204,39 @@
 
 	
 	public EcompPDPGroup getPDPGroup(String pdpId) throws PAPException {
-		EcompPDPGroup newGroup = (EcompPDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, "groupId=", "pdpId=" + pdpId, "getPDPGroup=");
-		return newGroup;
+		return (EcompPDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, groupID, "pdpId=" + pdpId, "getPDPGroup=");
 	}
 
 	@Override
 	public EcompPDP getPDP(String pdpId) throws PAPException {
-		EcompPDP newPDP = (EcompPDP)sendToPAP("GET", null, null, StdPDP.class, "groupId=", "pdpId=" + pdpId);
-		return newPDP;
+		return (EcompPDP)sendToPAP("GET", null, null, StdPDP.class, groupID, "pdpId=" + pdpId);
 	}
 	
 	@Override
 	public void newPDP(String id, EcompPDPGroup group, String name, String description, int jmxport) throws PAPException,
 			NullPointerException {
 		StdPDP newPDP = new StdPDP(id, name, description, jmxport);
-		sendToPAP("PUT", newPDP, null, null, "groupId=" + group.getId(), "pdpId=" + id);
+		sendToPAP("PUT", newPDP, null, null, groupID + group.getId(), "pdpId=" + id);
 		return;
 	}
 
 	@Override
 	public void movePDP(EcompPDP pdp, EcompPDPGroup newGroup) throws PAPException {
-		sendToPAP("POST", null, null, null, "groupId=" + newGroup.getId(), "pdpId=" + pdp.getId());
+		sendToPAP("POST", null, null, null, groupID + newGroup.getId(), "pdpId=" + pdp.getId());
 		return;
 	}
 
 	@Override
 	public void updatePDP(EcompPDP pdp) throws PAPException {
 		EcompPDPGroup group = getPDPGroup(pdp);
-		sendToPAP("PUT", pdp, null, null, "groupId=" + group.getId(), "pdpId=" + pdp.getId());
+		sendToPAP("PUT", pdp, null, null, groupID + group.getId(), "pdpId=" + pdp.getId());
 		return;
 	}
 	
 	@Override
 	public void removePDP(EcompPDP pdp) throws PAPException {
 		EcompPDPGroup group = getPDPGroup(pdp);
-		sendToPAP("DELETE", null, null, null, "groupId=" + group.getId(), "pdpId=" + pdp.getId());
+		sendToPAP("DELETE", null, null, null, groupID + group.getId(), "pdpId=" + pdp.getId());
 		return;
 	}
 	
@@ -285,7 +283,7 @@
 	public void copyFile(String policyId, EcompPDPGroup group, InputStream policy) throws PAPException {
 		// send the policy file to the PAP Servlet
 		try {
-			sendToPAP("POST", policy, null, null, "groupId=" + group.getId(), "policyId="+policyId);
+			sendToPAP("POST", policy, null, null, groupID + group.getId(), "policyId="+policyId);
 		} catch (Exception e) {
 			String message = "Unable to PUT policy '" + policyId + "', e:" + e;
 			LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e);
@@ -325,8 +323,7 @@
 	 */
 	
 	public PDPStatus getStatus(EcompPDP pdp) throws PAPException {
-		StdPDPStatus status = (StdPDPStatus)sendToPAP("GET", pdp, null, StdPDPStatus.class);
-		return status;
+		return (StdPDPStatus)sendToPAP("GET", pdp, null, StdPDPStatus.class);
 	}
 	
 	
@@ -356,7 +353,6 @@
 		String papID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID);
 		LOGGER.info("User Id is " + papID);
 		String papPass = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS);
-		LOGGER.info("Pass is: " + papPass);
 		Base64.Encoder encoder = Base64.getEncoder();
 		String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8));
 		LOGGER.info("Encoding for the PAP is: " + encoding);
@@ -419,7 +415,6 @@
 		    			}
 		    		} catch (Exception e) {
 		    			LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to write content in '" + method + "'", e);
-		    			throw e;
 		    		}
 				} else {
 					// The content is an object to be encoded in JSON
@@ -504,20 +499,14 @@
 			throw new PAPException("Request/Response threw :" + e);
 		} finally {
 			// cleanup the connection
-				if (connection != null) {
+			if (connection != null) {
 				try {
 					// For some reason trying to get the inputStream from the connection
 					// throws an exception rather than returning null when the InputStream does not exist.
-					InputStream is = null;
-					try {
-						is = connection.getInputStream();
-					} catch (Exception e1) {
-						// ignore this
-					}
+					InputStream is = connection.getInputStream();
 					if (is != null) {
 						is.close();
 					}
-
 				} catch (IOException ex) {
 					LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to close connection: " + ex, ex);
 				}
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/components/HumanPolicyComponent.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/components/HumanPolicyComponent.java
index f788fb6..b67cb26 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/components/HumanPolicyComponent.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/components/HumanPolicyComponent.java
@@ -103,6 +103,10 @@
 	
 	private static File policyFile;
 	
+	private HumanPolicyComponent(){
+		//Default Constructor
+	}
+	
 	public static JSONObject DescribePolicy(final File policyFile) {
 		if (LOGGER.isTraceEnabled()) 
 			LOGGER.trace("ENTER");
@@ -298,7 +302,7 @@
 			AttributeIdentifiers value = entry.getValue();
 			htmlOut.println("<tr>");
 			htmlOut.print("<td><a name=\"" + entry.getKey() + "\"></a>" + value.category + "</td>");
-			htmlOut.print("<td>" + value.type + "</td>");
+			htmlOut.print("<td>" + value.getType() + "</td>");
 			htmlOut.print("<td>" + value.id + "</td>");
 			htmlOut.println("</tr>");
 		}
@@ -654,7 +658,7 @@
 			if (assignmentObject instanceof AttributeValueType) {
 				AttributeValueType avt = (AttributeValueType) assignmentObject;
 				if (attributeIdentifiers != null) {
-					attributeIdentifiers.type = avt.getDataType();
+					attributeIdentifiers.setType(avt.getDataType());
 				}
 				int numContent = avt.getContent().size();
 				int countContent = 0;
@@ -968,12 +972,20 @@
 
 class AttributeIdentifiers {
 	public final String category;
-	public String type;
+	private String type;
 	public final String id;
 	
 	public AttributeIdentifiers(String category, String type, String id) {
 		this.category = category;
-		this.type = type;
+		this.setType(type);
 		this.id = id;
 	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
 }	
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/conf/HibernateSession.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/conf/HibernateSession.java
index 9f7659d..22ecb0e 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/conf/HibernateSession.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/conf/HibernateSession.java
@@ -44,11 +44,11 @@
 	static {
 		try {
 			Properties prop= new Properties();
-			prop.setProperty("hibernate.connection.url", PolicyController.logdbUrl);
-			prop.setProperty("hibernate.connection.username", PolicyController.logdbUserName);
-			prop.setProperty("hibernate.connection.password", PolicyController.logdbPassword);
-			prop.setProperty("dialect", PolicyController.logdbDialect);
-			prop.setProperty("hibernate.connection.driver_class", PolicyController.logdbDriver);	
+			prop.setProperty("hibernate.connection.url", PolicyController.getLogdbUrl());
+			prop.setProperty("hibernate.connection.username", PolicyController.getLogdbUserName());
+			prop.setProperty("hibernate.connection.password", PolicyController.getLogdbPassword());
+			prop.setProperty("dialect", PolicyController.getLogdbDialect());
+			prop.setProperty("hibernate.connection.driver_class", PolicyController.getLogdbDriver());	
 			prop.setProperty("show_sql", "false");	
 			logSessionFactory = new Configuration().addPackage("org.openecomp.policy.*").addProperties(prop)
 				   .addAnnotatedClass(SystemLogDB.class).buildSessionFactory();
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/AdminTabController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/AdminTabController.java
index 6824101..650b587 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/AdminTabController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/AdminTabController.java
@@ -51,9 +51,25 @@
 
 	private static final Logger LOGGER	= FlexLogger.getLogger(AdminTabController.class);
 	
+	private static CommonClassDao commonClassDao;
+	
+	public static CommonClassDao getCommonClassDao() {
+		return commonClassDao;
+	}
+
+	public static void setCommonClassDao(CommonClassDao commonClassDao) {
+		AdminTabController.commonClassDao = commonClassDao;
+	}
+	
 	@Autowired
-	CommonClassDao commonClassDao;
+	private AdminTabController(CommonClassDao commonClassDao){
+		AdminTabController.commonClassDao = commonClassDao;
+	}
 		
+	public AdminTabController() {
+		//default constructor
+	}
+
 	@RequestMapping(value={"/get_LockDownData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
 	public void getAdminTabEntityData(HttpServletRequest request, HttpServletResponse response){
 		try{
@@ -92,6 +108,7 @@
 			return null;
 		}
 		catch (Exception e){
+			LOGGER.error("Exception Occured"+e);
 			response.setCharacterEncoding("UTF-8");
 			request.setCharacterEncoding("UTF-8");
 			PrintWriter out = response.getWriter();
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/AutoPushController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/AutoPushController.java
index 17e8f89..a4387d1 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/AutoPushController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/AutoPushController.java
@@ -83,8 +83,16 @@
 	private PDPGroupContainer container;
 	protected List<EcompPDPGroup> groups = Collections.synchronizedList(new ArrayList<EcompPDPGroup>());
 	
-	private static PDPPolicyContainer policyContainer;
-	Set<PDPPolicy> selectedPolicies;
+	private PDPPolicyContainer policyContainer;
+
+	private PolicyController policyController;
+	public PolicyController getPolicyController() {
+		return policyController;
+	}
+
+	public void setPolicyController(PolicyController policyController) {
+		this.policyController = policyController;
+	}
 
 	private List<Object> data;
 
@@ -92,7 +100,8 @@
 		synchronized(this.groups) { 
 			this.groups.clear();
 			try {
-				this.groups.addAll(PolicyController.getPapEngine().getEcompPDPGroups());
+				PolicyController controller = getPolicyControllerInstance();
+				this.groups.addAll(controller.getPapEngine().getEcompPDPGroups());
 			} catch (PAPException e) {
 				String message = "Unable to retrieve Groups from server: " + e;
 				logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + message);
@@ -101,6 +110,10 @@
 		}
 	}
 
+	private PolicyController getPolicyControllerInstance(){
+		return policyController != null ? getPolicyController() : new PolicyController();
+	}
+	
 	@RequestMapping(value={"/get_AutoPushPoliciesContainerData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
 	public void getPolicyGroupContainerData(HttpServletRequest request, HttpServletResponse response){
 		try{
@@ -110,7 +123,8 @@
 			String userId = UserUtils.getUserSession(request).getOrgUserId();
 			Map<String, Object> model = new HashMap<>();
 			ObjectMapper mapper = new ObjectMapper();
-			List<Object> userRoles = PolicyController.getRoles(userId);
+			PolicyController controller = policyController != null ? getPolicyController() : new PolicyController();
+			List<Object> userRoles = controller.getRoles(userId);
 			roles = new ArrayList<>();
 			scopes = new HashSet<>();
 			for(Object role: userRoles){
@@ -163,12 +177,13 @@
 		try {
 			ArrayList<Object> selectedPDPS = new ArrayList<>();
 			ArrayList<String> selectedPoliciesInUI = new ArrayList<>();
-			this.groups.addAll(PolicyController.getPapEngine().getEcompPDPGroups());
+			PolicyController controller = getPolicyControllerInstance();
+			this.groups.addAll(controller.getPapEngine().getEcompPDPGroups());
 			ObjectMapper mapper = new ObjectMapper();
-			this.container = new PDPGroupContainer(PolicyController.getPapEngine());
+			this.container = new PDPGroupContainer(controller.getPapEngine());
 			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 			JsonNode root = mapper.readTree(request.getReader());
-			AutoPushTabAdapter adapter = (AutoPushTabAdapter) mapper.readValue(root.get("pushTabData").toString(), AutoPushTabAdapter.class);
+			AutoPushTabAdapter adapter = mapper.readValue(root.get("pushTabData").toString(), AutoPushTabAdapter.class);
 			for (Object pdpGroupId :  adapter.getPdpDatas()) {
 				LinkedHashMap<?, ?> selectedPDP = (LinkedHashMap<?, ?>)pdpGroupId;
 				for(EcompPDPGroup pdpGroup : this.groups){
@@ -220,10 +235,8 @@
 					}else if(dbCheckName.contains("Decision_")){
 						dbCheckName = dbCheckName.replace(".Decision_", ":Decision_");
 					}
-					PolicyController controller = new PolicyController();
 					String[] split = dbCheckName.split(":");
 					String query = "FROM PolicyEntity where policyName = '"+split[1]+"' and scope ='"+split[0]+"'";
-					System.out.println(query);
 					List<Object> queryData = controller.getDataByQuery(query);
 					PolicyEntity policyEntity = (PolicyEntity) queryData.get(0);
 					File temp = new File(name);
@@ -237,7 +250,6 @@
 						selectedPolicy = new StdPDPPolicy(name, true, id, selectedURI);
 					} catch (IOException e) {
 						logger.error("Unable to create policy '" + name + "': "+ e.getMessage());
-						//AdminNotification.warn("Unable to create policy '" + id + "': " + e.getMessage());
 					}
 					StdPDPGroup selectedGroup = (StdPDPGroup) pdpDestinationGroupId;
 					if (selectedPolicy != null) {
@@ -249,7 +261,7 @@
 						}
 						// copy policy to PAP
 						try {
-							PolicyController.getPapEngine().copyPolicy(selectedPolicy, (StdPDPGroup) pdpDestinationGroupId);
+							controller.getPapEngine().copyPolicy(selectedPolicy, (StdPDPGroup) pdpDestinationGroupId);
 						} catch (PAPException e) {
 							logger.error("Exception Occured"+e);
 							return null;
@@ -317,7 +329,8 @@
 	@RequestMapping(value={"/auto_Push/remove_GroupPolicies.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
 	public ModelAndView removePDPGroup(HttpServletRequest request, HttpServletResponse response) throws Exception {
 		try {
-			this.container = new PDPGroupContainer(PolicyController.getPapEngine());
+			PolicyController controller = getPolicyControllerInstance();
+			this.container = new PDPGroupContainer(controller.getPapEngine());
 			ObjectMapper mapper = new ObjectMapper();
 			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 			JsonNode root = mapper.readTree(request.getReader());  
@@ -327,10 +340,10 @@
 			if(removePolicyData.size() > 0){
 				for(int i = 0 ; i < removePolicyData.size(); i++){
 					String data = removePolicyData.get(i).toString();
-					AutoPushController.policyContainer.removeItem(data);
+					this.policyContainer.removeItem(data);
 				}
 				Set<PDPPolicy> changedPolicies = new HashSet<>();
-				changedPolicies.addAll((Collection<PDPPolicy>) AutoPushController.policyContainer.getItemIds());
+				changedPolicies.addAll((Collection<PDPPolicy>) this.policyContainer.getItemIds());
 				StdPDPGroup updatedGroupObject = new StdPDPGroup(group.getId(), group.isDefaultGroup(), group.getName(), group.getDescription(),null);
 				updatedGroupObject.setPolicies(changedPolicies);
 				updatedGroupObject.setEcompPdps(group.getEcompPdps());
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/CreateBRMSParamController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/CreateBRMSParamController.java
index daab6e3..68dff19 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/CreateBRMSParamController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/CreateBRMSParamController.java
@@ -70,7 +70,7 @@
 @Controller
 @RequestMapping("/")
 public class CreateBRMSParamController extends RestrictedBaseController {
-	private static final Logger logger = FlexLogger.getLogger(CreateBRMSParamController.class);
+	private static final Logger policyLogger = FlexLogger.getLogger(CreateBRMSParamController.class);
 
 	private static CommonClassDao commonClassDao;
 
@@ -80,10 +80,12 @@
 	}
 
 	public CreateBRMSParamController(){}
-	protected PolicyRestAdapter policyAdapter = null;
-	private ArrayList<Object> attributeList;
+	protected PolicyRestAdapter policyAdapter = null; 
 
 	private HashMap<String, String> dynamicLayoutMap;
+	
+	private static String brmsTemplateVlaue = "<$%BRMSParamTemplate=";
+	private static String String = "String";
 
 
 	@RequestMapping(value={"/policyController/getBRMSTemplateData.htm"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
@@ -92,11 +94,11 @@
 		ObjectMapper mapper = new ObjectMapper();
 		mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 		JsonNode root = mapper.readTree(request.getReader());
-		String rule = findRule(root.get("policyData").toString().replaceAll("^\"|\"$", ""));
+		String rule = findRule(root.get(PolicyController.getPolicydata()).toString().replaceAll("^\"|\"$", ""));
 		generateUI(rule);
-		response.setCharacterEncoding("UTF-8");
-		response.setContentType("application / json");
-		request.setCharacterEncoding("UTF-8");
+		response.setCharacterEncoding(PolicyController.getCharacterencoding());
+		response.setContentType(PolicyController.getContenttype());
+		request.setCharacterEncoding(PolicyController.getCharacterencoding());
 
 		PrintWriter out = response.getWriter();
 		String responseString = mapper.writeValueAsString(dynamicLayoutMap);
@@ -119,7 +121,7 @@
 	protected void generateUI(String rule) {
 		if(rule!=null){
 			try {
-				String params = "";
+				StringBuilder params = new StringBuilder("");
 				Boolean flag = false;
 				Boolean comment = false;
 				String lines[] = rule.split("\n");
@@ -142,6 +144,7 @@
 								line = line.split("\\/\\*")[0]
 										+ line.split("\\*\\/")[1].replace("*/", "");
 							} catch (Exception e) {
+								policyLogger.info("Just for Logging"+e);
 								line = line.split("\\/\\*")[0];
 							}
 						} else {
@@ -153,6 +156,7 @@
 						try {
 							line = line.split("\\*\\/")[1].replace("*/", "");
 						} catch (Exception e) {
+							policyLogger.info("Just for Logging"+e);
 							line = "";
 						}
 					}
@@ -160,38 +164,38 @@
 						continue;
 					}
 					if (flag) {
-						params = params + line;
+						params.append(line);
 					}
 					if (line.contains("declare Params")) {
-						params = params + line;
+						params.append(line);
 						flag = true;
 					}
 					if (line.contains("end") && flag) {
 						break;
 					}
 				}
-				params = params.replace("declare Params", "").replace("end", "")
-						.replaceAll("\\s+", "");
-				String[] components = params.split(":");
+				params = new StringBuilder(params.toString().replace("declare Params", "").replace("end", "").replaceAll("\\s+", ""));
+				String[] components = params.toString().split(":");
 				String caption = "";
 				for (int i = 0; i < components.length; i++) {
 					String type = "";
 					if (i == 0) {
 						caption = components[i];
 					}
-					if(caption.equals("")){
+					if("".equals(caption)){
 						break;
 					}
 					String nextComponent = "";
 					try {
 						nextComponent = components[i + 1];
 					} catch (Exception e) {
+						policyLogger.info("Just for Logging"+e);
 						nextComponent = components[i];
 					}
-					if (nextComponent.startsWith("String")) {
+					if (nextComponent.startsWith(String)) {
 						type = "String";
 						createField(caption, type);
-						caption = nextComponent.replace("String", "");
+						caption = nextComponent.replace(String, "");
 					} else if (nextComponent.startsWith("int")) {
 						type = "int";
 						createField(caption, type);
@@ -199,7 +203,7 @@
 					}
 				}
 			} catch (Exception e) {
-				logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
+				policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
 			}
 		}
 	}
@@ -208,10 +212,11 @@
 		dynamicLayoutMap.put(caption, type);
 	}
 
-
-	@SuppressWarnings("unchecked")
+	/*
+	 * When the User Click Edit or View Policy the following method will get invoked for setting the data to PolicyRestAdapter.
+	 * Which is used to bind the data in GUI
+	 */
 	public void prePopulateBRMSParamPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) {
-		attributeList = new ArrayList<>();
 		dynamicLayoutMap = new HashMap<>();
 		if (policyAdapter.getPolicyData() instanceof PolicyType) {
 			PolicyType policy = (PolicyType) policyAdapter.getPolicyData();
@@ -219,101 +224,116 @@
 			// policy name value is the policy name without any prefix and
 			// Extensions.
 			String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("BRMS_Param_") + 11);
-			if (logger.isDebugEnabled()) {
-				logger.debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName());
+			if (policyLogger.isDebugEnabled()) {
+				policyLogger.debug("Prepopulating form data for BRMS RAW Policy selected:" + policyAdapter.getPolicyName());
 			}
 			policyAdapter.setPolicyName(policyNameValue);
 			String description = "";
 			try{
 				description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:"));
 			}catch(Exception e){
+				policyLogger.info("Just for Logging"+e);
 				description = policy.getDescription();
 			}
 			policyAdapter.setPolicyDescription(description);
-			// Set Attributes. 
-			AdviceExpressionsType expressionTypes = ((RuleType)policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions();
-			for( AdviceExpressionType adviceExpression: expressionTypes.getAdviceExpression()){
-				for(AttributeAssignmentExpressionType attributeAssignment: adviceExpression.getAttributeAssignmentExpression()){
-					if(attributeAssignment.getAttributeId().startsWith("key:")){
-						Map<String, String> attribute = new HashMap<>();
-						String key = attributeAssignment.getAttributeId().replace("key:", "");
-						attribute.put("key", key);
-						JAXBElement<AttributeValueType> attributevalue = (JAXBElement<AttributeValueType>) attributeAssignment.getExpression();
-						String value = (String) attributevalue.getValue().getContent().get(0);
-						attribute.put("value", value);
-						attributeList.add(attribute);
-                    }else if(attributeAssignment.getAttributeId().startsWith("dependencies:")){
-                        ArrayList<String> dependencies = new ArrayList<String>(Arrays.asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(",")));
-                        if(dependencies.contains("")){
-                            dependencies.remove("");
-                        }
-                        policyAdapter.setBrmsDependency(dependencies);
-                    }else if(attributeAssignment.getAttributeId().startsWith("controller:")){
-                        policyAdapter.setBrmsController(attributeAssignment.getAttributeId().replace("controller:", ""));
-					}
-				}
-				policyAdapter.setAttributes(attributeList);
-			}
+			setDataAdapterFromAdviceExpressions(policy, policyAdapter);
 			paramUIGenerate(policyAdapter, entity);
 			// Get the target data under policy.
 			policyAdapter.setDynamicLayoutMap(dynamicLayoutMap);
 			if(policyAdapter.getDynamicLayoutMap().size() > 0){
 				LinkedHashMap<String,String> drlRule = new LinkedHashMap<>();
 				for(Object keyValue: policyAdapter.getDynamicLayoutMap().keySet()){
-					drlRule.put(keyValue.toString(), policyAdapter.getDynamicLayoutMap().get(keyValue).toString());
+					drlRule.put(keyValue.toString(), policyAdapter.getDynamicLayoutMap().get(keyValue));
 				}
 				policyAdapter.setRuleData(drlRule);
 			}	
 			TargetType target = policy.getTarget();
 			if (target != null) {
-				// Under target we have AnyOFType
-				List<AnyOfType> anyOfList = target.getAnyOf();
-				if (anyOfList != null) {
-					Iterator<AnyOfType> iterAnyOf = anyOfList.iterator();
-					while (iterAnyOf.hasNext()) {
-						AnyOfType anyOf = iterAnyOf.next();
-						// Under AnyOFType we have AllOFType
-						List<AllOfType> allOfList = anyOf.getAllOf();
-						if (allOfList != null) {
-							Iterator<AllOfType> iterAllOf = allOfList.iterator();
-							while (iterAllOf.hasNext()) {
-								AllOfType allOf = iterAllOf.next();
-								// Under AllOFType we have Match
-								List<MatchType> matchList = allOf.getMatch();
-								if (matchList != null) {
-									Iterator<MatchType> iterMatch = matchList.iterator();
-									while (iterMatch.hasNext()) {
-										MatchType match = iterMatch.next();
-										//
-										// Under the match we have attribute value and
-										// attributeDesignator. So,finally down to the actual attribute.
-										//
-										AttributeValueType attributeValue = match.getAttributeValue();
-										String value = (String) attributeValue.getContent().get(0);
-										AttributeDesignatorType designator = match.getAttributeDesignator();
-										String attributeId = designator.getAttributeId();
-
-										if (attributeId.equals("RiskType")){
-											policyAdapter.setRiskType(value);
-										}
-										if (attributeId.equals("RiskLevel")){
-											policyAdapter.setRiskLevel(value);
-										}
-										if (attributeId.equals("guard")){
-											policyAdapter.setGuard(value);
-										}
-										if (attributeId.equals("TTLDate") && !value.contains("NA")){
-											String newDate = convertDate(value, true);
-											policyAdapter.setTtlDate(newDate);
-										}
-									}
-								}
-							}
+				setDataToAdapterFromTarget(target, policyAdapter);
+			}
+		} 		
+	}
+	
+	private void setDataAdapterFromAdviceExpressions(PolicyType policy, PolicyRestAdapter policyAdapter){
+		ArrayList<Object> attributeList = new ArrayList<>();
+		// Set Attributes. 
+		AdviceExpressionsType expressionTypes = ((RuleType)policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().get(0)).getAdviceExpressions();
+		for( AdviceExpressionType adviceExpression: expressionTypes.getAdviceExpression()){
+			for(AttributeAssignmentExpressionType attributeAssignment: adviceExpression.getAttributeAssignmentExpression()){
+				if(attributeAssignment.getAttributeId().startsWith("key:")){
+					Map<String, String> attribute = new HashMap<>();
+					String key = attributeAssignment.getAttributeId().replace("key:", "");
+					attribute.put("key", key);
+					@SuppressWarnings("unchecked")
+					JAXBElement<AttributeValueType> attributevalue = (JAXBElement<AttributeValueType>) attributeAssignment.getExpression();
+					String value = (String) attributevalue.getValue().getContent().get(0);
+					attribute.put("value", value);
+					attributeList.add(attribute);
+				}else if(attributeAssignment.getAttributeId().startsWith("dependencies:")){
+					ArrayList<String> dependencies = new ArrayList<>(Arrays.asList(attributeAssignment.getAttributeId().replace("dependencies:", "").split(",")));
+					if(dependencies.contains("")){
+						dependencies.remove("");
+					}
+					policyAdapter.setBrmsDependency(dependencies);
+				}else if(attributeAssignment.getAttributeId().startsWith("controller:")){
+					policyAdapter.setBrmsController(attributeAssignment.getAttributeId().replace("controller:", ""));
+				}
+			}
+			policyAdapter.setAttributes(attributeList);
+		}
+	}
+	
+	private void setDataToAdapterFromTarget(TargetType target, PolicyRestAdapter policyAdapter){
+		// Under target we have AnyOFType
+		List<AnyOfType> anyOfList = target.getAnyOf();
+		if (anyOfList != null) {
+			Iterator<AnyOfType> iterAnyOf = anyOfList.iterator();
+			while (iterAnyOf.hasNext()) {
+				AnyOfType anyOf = iterAnyOf.next();
+				// Under AnyOFType we have AllOFType
+				List<AllOfType> allOfList = anyOf.getAllOf();
+				if (allOfList != null) {
+					Iterator<AllOfType> iterAllOf = allOfList.iterator();
+					while (iterAllOf.hasNext()) {
+						AllOfType allOf = iterAllOf.next();
+						// Under AllOFType we have Match
+						List<MatchType> matchList = allOf.getMatch();
+						if (matchList != null) {
+							setDataToAdapterFromMatchList(matchList, policyAdapter);
 						}
 					}
 				}
 			}
-		} 		
+		}
+	}
+	
+	private void setDataToAdapterFromMatchList(List<MatchType> matchList, PolicyRestAdapter policyAdapter){
+		Iterator<MatchType> iterMatch = matchList.iterator();
+		while (iterMatch.hasNext()) {
+			MatchType match = iterMatch.next();
+			//
+			// Under the match we have attribute value and
+			// attributeDesignator. So,finally down to the actual attribute.
+			//
+			AttributeValueType attributeValue = match.getAttributeValue();
+			String value = (String) attributeValue.getContent().get(0);
+			AttributeDesignatorType designator = match.getAttributeDesignator();
+			String attributeId = designator.getAttributeId();
+
+			if ("RiskType".equals(attributeId)){
+				policyAdapter.setRiskType(value);
+			}
+			if ("RiskLevel".equals(attributeId)){
+				policyAdapter.setRiskLevel(value);
+			}
+			if ("guard".equals(attributeId)){
+				policyAdapter.setGuard(value);
+			}
+			if ("TTLDate".equals(attributeId) && !value.contains("NA")){
+				String newDate = convertDate(value, true);
+				policyAdapter.setTtlDate(newDate);
+			}
+		}
 	}
 
 	private String convertDate(String dateTTL, boolean portalType) {
@@ -336,26 +356,24 @@
 		String data = entity.getConfigurationData().getConfigBody();
 		if(data != null){
 			try {	
-				String params = "";
+				StringBuilder params = new StringBuilder("");
 				Boolean flag = false;
 				Boolean comment = false;
 				for (String line : data.split("\n")) {
 					if (line.isEmpty() || line.startsWith("//")) {
 						continue;
 					}
-					if(line.contains("<$%BRMSParamTemplate=")){
+					if(line.contains(brmsTemplateVlaue)){
 						String value = line.substring(line.indexOf("<$%"),line.indexOf("%$>"));
-						value = value.replace("<$%BRMSParamTemplate=", "");
+						value = value.replace(brmsTemplateVlaue, "");
 						policyAdapter.setRuleName(value);
 					}
 					if (line.startsWith("/*")) {
 						comment = true;
 						continue;
 					}
-					if (line.contains("//")) {
-						if(!(line.contains("http://") || line.contains("https://"))){
-							line = line.split("\\/\\/")[0];
-						}
+					if ((line.contains("//"))&&(!(line.contains("http://") || line.contains("https://")))){
+						line = line.split("\\/\\/")[0];
 					}
 					if (line.contains("/*")) {
 						comment = true;
@@ -366,6 +384,7 @@
 										+ line.split("\\*\\/")[1].replace(
 												"*/", "");
 							} catch (Exception e) {
+								policyLogger.info("Just for Logging"+e);
 								line = line.split("\\/\\*")[0];
 							}
 						} else {
@@ -378,6 +397,7 @@
 							line = line.split("\\*\\/")[1]
 									.replace("*/", "");
 						} catch (Exception e) {
+							policyLogger.info("Just for Logging"+e);
 							line = "";
 						}
 					}
@@ -385,26 +405,27 @@
 						continue;
 					}
 					if (flag) {
-						params = params + line;
+						params.append(line);
 					}
 					if (line.contains("rule") && line.contains(".Params\"")) {
-						params = params + line;
+						params.append(line);
 						flag = true;
 					}
 					if (line.contains("end") && flag) {
 						break;
 					}
 				}
-				params = params.substring(params.indexOf(".Params\"")+ 8);
-                params = params.replaceAll("\\s+", "").replace("salience1000whenthenParamsparams=newParams();","")
+				params = new StringBuilder(params.substring(params.indexOf(".Params\"")+ 8));
+				params = new StringBuilder(params.toString().replaceAll("\\s+", "").replace("salience1000whenthenParamsparams=newParams();","")
                         .replace("insert(params);end", "")
-                        .replace("params.set", "");
-				String[] components = params.split(";");
+                        .replace("params.set", ""));
+				String[] components = params.toString().split("\\);");
 				if(components!= null && components.length > 0){
 					for (int i = 0; i < components.length; i++) {
 						String value = null;
+						components[i] = components[i]+")";
 						String caption = components[i].substring(0,
-								components[i].indexOf("("));
+								components[i].indexOf('('));
 						caption = caption.substring(0, 1).toLowerCase() + caption.substring(1);
 						if (components[i].contains("(\"")) {
 							value = components[i]
@@ -413,8 +434,8 @@
 									.replace("(\"", "").replace("\")", "");
 						} else {
 							value = components[i]
-									.substring(components[i].indexOf("("),
-											components[i].indexOf(")"))
+									.substring(components[i].indexOf('('),
+											components[i].indexOf(')'))
 									.replace("(", "").replace(")", "");
 						}
 						dynamicLayoutMap.put(caption, value);
@@ -422,7 +443,7 @@
 					}
 				}
 			} catch (Exception e) {
-				logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage());
+				policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e);
 			} 
 		}
 		
@@ -436,37 +457,37 @@
 			ObjectMapper mapper = new ObjectMapper();
 			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 			JsonNode root = mapper.readTree(request.getReader());
-			PolicyRestAdapter policyData = (PolicyRestAdapter)mapper.readValue(root.get("policyData").get("policy").toString(), PolicyRestAdapter.class);
-			policyData.setDomainDir(root.get("policyData").get("model").get("name").toString().replace("\"", ""));
-			if(root.get("policyData").get("model").get("type").toString().replace("\"", "").equals("file")){
-				policyData.isEditPolicy = true;
+			PolicyRestAdapter policyData = mapper.readValue(root.get(PolicyController.getPolicydata()).get("policy").toString(), PolicyRestAdapter.class);
+			policyData.setDomainDir(root.get(PolicyController.getPolicydata()).get("model").get("name").toString().replace("\"", ""));
+			if(root.get(PolicyController.getPolicydata()).get("model").get("type").toString().replace("\"", "").equals(PolicyController.getFile())){
+				policyData.setEditPolicy(true);
 			}
 
 			String body = "";
 
 			body = "/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. \n\t " +
-					"<$%BRMSParamTemplate=" + policyData.getRuleName() + "%$> \n */ \n";
+					brmsTemplateVlaue + policyData.getRuleName() + "%$> \n */ \n";
 			body = body + findRule((String) policyData.getRuleName()) + "\n";
-			String generatedRule = "rule \""+ policyData.getDomainDir().replace("\\", ".") +".Config_BRMS_Param_" + policyData.getPolicyName()+".Params\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tParams params = new Params();";
+			StringBuilder generatedRule = new StringBuilder();
+			generatedRule.append("rule \""+ policyData.getDomainDir().replace("\\", ".") +".Config_BRMS_Param_" + policyData.getPolicyName()+".Params\" \n\tsalience 1000 \n\twhen\n\tthen\n\t\tParams params = new Params();");
 
 			if(policyData.getRuleData().size() > 0){ 
 				for(Object keyValue: policyData.getRuleData().keySet()){ 
 					String key = keyValue.toString().substring(0, 1).toUpperCase() + keyValue.toString().substring(1); 
-					if (keyValue.equals("String")) { 
-						generatedRule = generatedRule + "\n\t\tparams.set" 
+					if (String.equals(keyValue)) { 
+						generatedRule.append("\n\t\tparams.set" 
 								+ key + "(\"" 
-								+ policyData.getRuleData().get(keyValue).toString() + "\");"; 
+								+ policyData.getRuleData().get(keyValue).toString() + "\");"); 
 					} else { 
-						generatedRule = generatedRule + "\n\t\tparams.set" 
+						generatedRule.append("\n\t\tparams.set" 
 								+ key + "(" 
-								+ policyData.getRuleData().get(keyValue).toString() + ");"; 
+								+ policyData.getRuleData().get(keyValue).toString() + ");"); 
 					} 
 				} 
 			}
-			generatedRule = generatedRule
-					+ "\n\t\tinsert(params);\nend";
-			logger.info("New rule generated with :" + generatedRule);
-			body = body + generatedRule;
+			generatedRule.append("\n\t\tinsert(params);\nend");
+			policyLogger.info("New rule generated with :" + generatedRule.toString());
+			body = body + generatedRule.toString();
 			// Expand the body. 
 			Map<String,String> copyMap=new HashMap<>();
 			copyMap.putAll((Map<? extends String, ? extends String>) policyData.getRuleData());
@@ -499,7 +520,7 @@
 			out.write(j.toString());
 			return null;
 		} catch (Exception e) {
-			logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
+			policyLogger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
 		}
 		return null;	
 	}
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java
index c3daf6d..f3e3131 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/CreateDcaeMicroServiceController.java
@@ -104,6 +104,15 @@
 	private static final Logger LOGGER = FlexLogger.getLogger(CreateDcaeMicroServiceController.class);
 
 	private static CommonClassDao commonClassDao;
+	
+	public static CommonClassDao getCommonClassDao() {
+		return commonClassDao;
+	}
+
+	public static void setCommonClassDao(CommonClassDao commonClassDao) {
+		CreateDcaeMicroServiceController.commonClassDao = commonClassDao;
+	}
+
 	private MicroServiceModels newModel;
 	private String newFile;
 	private String directory;
@@ -238,7 +247,7 @@
 	}
 	
 	// Second index of dot should be returned. 
-	public void stringBetweenDots(String str,String value){
+	public int stringBetweenDots(String str,String value){
 		String stringToSearch=str;
 		String[]ss=stringToSearch.split("\\.");
 		if(ss!=null){
@@ -247,6 +256,8 @@
 				uniqueKeys.add(ss[2]);
 			}
 		}
+		
+		return uniqueKeys.size();
 	}
 	
 	public void stringBetweenDotsForDataFields(String str,String value){
@@ -1338,7 +1349,7 @@
 	
 	private void retreiveDependency(String workingFile, Boolean modelClass) {
 		
-		MSModelUtils utils = new MSModelUtils(PolicyController.msEcompName, PolicyController.msPolicyName);
+		MSModelUtils utils = new MSModelUtils(PolicyController.getMsEcompName(), PolicyController.getMsPolicyName());
 	    HashMap<String, MSAttributeObject> tempMap = new HashMap<>();
 	    
 	    tempMap = utils.processEpackage(workingFile, MODEL_TYPE.XMI);
@@ -1402,23 +1413,31 @@
         return list;
     }
 
+	public Map<String, String> getAttributesListRefMap() {
+		return attributesListRefMap;
+	}
+
+	public Map<String, LinkedList<String>> getArrayTextList() {
+		return arrayTextList;
+	}
+
 }
 
 class DCAEMicroServiceObject {
 
-	public String service;
-	public String location;
-	public String uuid;
-	public String policyName;
-	public String description;
-	public String configName;
-	public String templateVersion;
-	public String version;
-	public String priority;
-	public String policyScope;
-	public String riskType;
-	public String riskLevel; 
-	public String guard = null;
+	private String service;
+	private String location;
+	private String uuid;
+	private String policyName;
+	private String description;
+	private String configName;
+	private String templateVersion;
+	private String version;
+	private String priority;
+	private String policyScope;
+	private String riskType;
+	private String riskLevel; 
+	private String guard = null;
 
 	public String getGuard() {
 		return guard;
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/DashboardController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/DashboardController.java
index 707a65d..56ff637 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/DashboardController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/DashboardController.java
@@ -86,7 +86,18 @@
 	private ArrayList<Object> papStatusData;
 	private ArrayList<Object> policyActivityData;
 	
+	private PolicyController policyController;
+	public PolicyController getPolicyController() {
+		return policyController;
+	}
 
+	public void setPolicyController(PolicyController policyController) {
+		this.policyController = policyController;
+	}
+	
+	private PolicyController getPolicyControllerInstance(){
+		return policyController != null ? getPolicyController() : new PolicyController();
+	}
 	
 	@RequestMapping(value={"/get_DashboardLoggingData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
 	public void getData(HttpServletRequest request, HttpServletResponse response){
@@ -141,7 +152,8 @@
 			Map<String, Object> model = new HashMap<>();
 			ObjectMapper mapper = new ObjectMapper();
 			mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
-			this.pdpConatiner = new PDPGroupContainer(PolicyController.getPapEngine());
+			PolicyController controller = getPolicyControllerInstance();
+			this.pdpConatiner = new PDPGroupContainer(controller.getPapEngine());
 			addPDPToTable();
 			model.put("pdpTableDatas", mapper.writeValueAsString(pdpStatusData));
 			JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
@@ -159,7 +171,8 @@
 			Map<String, Object> model = new HashMap<>();
 			ObjectMapper mapper = new ObjectMapper();
 			mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
-			this.pdpConatiner = new PDPGroupContainer(PolicyController.getPapEngine());
+			PolicyController controller = getPolicyControllerInstance();
+			this.pdpConatiner = new PDPGroupContainer(controller.getPapEngine());
 			addPolicyToTable();
 			model.put("policyActivityTableDatas", mapper.writeValueAsString(policyActivityData));
 			JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
@@ -178,7 +191,8 @@
 		papStatusData = new ArrayList<>();
 		String papStatus = null;
 		try {
-			Set<EcompPDPGroup> groups = PolicyController.getPapEngine().getEcompPDPGroups();
+			PolicyController controller = getPolicyControllerInstance();
+			Set<EcompPDPGroup> groups = controller.getPapEngine().getEcompPDPGroups();
 			if (groups == null) {
 				papStatus = "UNKNOWN";
 				throw new PAPException("PAP not running");		
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PDPController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PDPController.java
index 80820c1..2e9771e 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PDPController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PDPController.java
@@ -60,23 +60,37 @@
 @RequestMapping({"/"})
 public class PDPController extends RestrictedBaseController {
 	private static final  Logger logger = FlexLogger.getLogger(PDPController.class);
-	
+
 	protected List<EcompPDPGroup> groups = Collections.synchronizedList(new ArrayList<EcompPDPGroup>());
 	private PDPGroupContainer container;
-	
+
 	private static String SUPERADMIN = "super-admin";
 	private static String SUPEREDITOR = "super-editor";
 	private static String SUPERGUEST = "super-guest";
-	
+
+	private Set<EcompPDPGroup> groupsData;
+
+	private boolean junit = false;
+
+	private PolicyController policyController;
+	public PolicyController getPolicyController() {
+		return policyController;
+	}
+
+	public void setPolicyController(PolicyController policyController) {
+		this.policyController = policyController;
+	}
+
 	public synchronized void refreshGroups(HttpServletRequest request) {
 		synchronized(this.groups) { 
 			this.groups.clear();
 			try {
+				PolicyController controller = getPolicyControllerInstance();
 				Set<PDPPolicy> filteredPolicies = new HashSet<>();
 				Set<String> scopes = null;
 				List<String> roles = null;
-				String userId = UserUtils.getUserSession(request).getOrgUserId();
-				List<Object> userRoles = PolicyController.getRoles(userId);
+				String userId =  isJunit()  ? "Test" : UserUtils.getUserSession(request).getOrgUserId();
+				List<Object> userRoles = controller.getRoles(userId);
 				roles = new ArrayList<>();
 				scopes = new HashSet<>();
 				for(Object role: userRoles){
@@ -94,12 +108,16 @@
 					}	
 				}
 				if (roles.contains(SUPERADMIN) || roles.contains(SUPEREDITOR) || roles.contains(SUPERGUEST) ) {
-					this.groups.addAll(PolicyController.getPapEngine().getEcompPDPGroups());
+					if(!junit){
+						this.groups.addAll(controller.getPapEngine().getEcompPDPGroups());
+					}else{
+						this.groups.addAll(this.getGroupsData());
+					}	
 				}else{
 					if(!userRoles.isEmpty()){
 						if(!scopes.isEmpty()){
-							this.groups.addAll(PolicyController.getPapEngine().getEcompPDPGroups());
-							List<EcompPDPGroup> tempGroups = new ArrayList<EcompPDPGroup>();
+							this.groups.addAll(controller.getPapEngine().getEcompPDPGroups());
+							List<EcompPDPGroup> tempGroups = new ArrayList<>();
 							if(!groups.isEmpty()){
 								Iterator<EcompPDPGroup> pdpGroup = groups.iterator();
 								while(pdpGroup.hasNext()){
@@ -138,21 +156,7 @@
 			}
 		}
 	}
-	
-	@RequestMapping(value={"/get_PDPGroupContainerData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
-	public void getPDPGroupContainerData(HttpServletRequest request, HttpServletResponse response){
-		try{
-			ObjectMapper mapper = new ObjectMapper();
-			refreshGroups(request);
-			JsonMessage msg = new JsonMessage(mapper.writeValueAsString(groups));
-			JSONObject j = new JSONObject(msg);
-			response.getWriter().write(j.toString());
-		}
-		catch (Exception e){
-			logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while retrieving the PDP Group Container data" + e);
-		}
-	}
-	
+
 	@RequestMapping(value={"/get_PDPGroupData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
 	public void getPDPGroupEntityData(HttpServletRequest request, HttpServletResponse response){
 		try{
@@ -166,164 +170,188 @@
 			logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while retrieving the PDP Group data" + e);
 		}
 	}
-	
+
 	@RequestMapping(value={"/pdp_Group/save_pdp_group"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
-	  public ModelAndView savePDPGroup(HttpServletRequest request, HttpServletResponse response) throws Exception{
-	    try {
-	      ObjectMapper mapper = new ObjectMapper();
-	      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-	      JsonNode root = mapper.readTree(request.getReader());
-	      this.container = new PDPGroupContainer(PolicyController.getPapEngine());
-	      StdPDPGroup pdpGroupData =  mapper.readValue(root.get("pdpGroupData").toString().replace("groupName", "name"), StdPDPGroup.class);
-	      try {
-	    	  if(pdpGroupData.getId() == null){
-	    		  this.container.addNewGroup(pdpGroupData.getName(), pdpGroupData.getDescription());
-	    	  }else{
-	    		  this.container.updateGroup(pdpGroupData);
-	    	  }
-				
+	public ModelAndView savePDPGroup(HttpServletRequest request, HttpServletResponse response) throws Exception{
+		try {
+			ObjectMapper mapper = new ObjectMapper();
+			PolicyController controller = getPolicyControllerInstance();
+			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+			JsonNode root = mapper.readTree(request.getReader());
+			this.container = new PDPGroupContainer(controller.getPapEngine());
+			StdPDPGroup pdpGroupData =  mapper.readValue(root.get("pdpGroupData").toString().replace("groupName", "name"), StdPDPGroup.class);
+			try {
+				if(pdpGroupData.getId() == null){
+					this.container.addNewGroup(pdpGroupData.getName(), pdpGroupData.getDescription());
+				}else{
+					this.container.updateGroup(pdpGroupData);
+				}
+
 			} catch (Exception e) {
 				String message = "Unable to create Group.  Reason:\n" + e.getMessage();
 				logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while creating the PDP Group" + message);
 			}
-	        
-	    
-	      response.setCharacterEncoding("UTF-8");
-	      response.setContentType("application / json");
-	      request.setCharacterEncoding("UTF-8");
-	      
-	      PrintWriter out = response.getWriter();
-	      refreshGroups(request);
-	      JsonMessage msg = new JsonMessage(mapper.writeValueAsString(groups));
-		  JSONObject j = new JSONObject(msg);
-	      out.write(j.toString());
-	      
-	      return null;
-	    }
-	    catch (Exception e){
-	     logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Saving the PDP Group" + e);
-	      response.setCharacterEncoding("UTF-8");
-	      request.setCharacterEncoding("UTF-8");
-	      PrintWriter out = response.getWriter();
-	      out.write(e.getMessage());
-	    }
-	    return null;
-	  }
-	  
-	  @RequestMapping(value={"/pdp_Group/remove_pdp_group"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
-	  public ModelAndView removePDPGroup(HttpServletRequest request, HttpServletResponse response) throws Exception {
-	    try{
-	      ObjectMapper mapper = new ObjectMapper();
-	      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-	      JsonNode root = mapper.readTree(request.getReader());
-	      this.container = new PDPGroupContainer(PolicyController.getPapEngine()); 
-	      StdPDPGroup pdpGroupData =  mapper.readValue(root.get("pdpGroupData").toString(), StdPDPGroup.class);
-	      	if(pdpGroupData.getName().equals("Default")) {
+
+
+			response.setCharacterEncoding("UTF-8");
+			response.setContentType("application / json");
+			request.setCharacterEncoding("UTF-8");
+
+			PrintWriter out = response.getWriter();
+			refreshGroups(request);
+			JsonMessage msg = new JsonMessage(mapper.writeValueAsString(groups));
+			JSONObject j = new JSONObject(msg);
+			out.write(j.toString());
+
+			return null;
+		}
+		catch (Exception e){
+			logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Saving the PDP Group" + e);
+			response.setCharacterEncoding("UTF-8");
+			request.setCharacterEncoding("UTF-8");
+			PrintWriter out = response.getWriter();
+			out.write(e.getMessage());
+		}
+		return null;
+	}
+
+	@RequestMapping(value={"/pdp_Group/remove_pdp_group"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+	public ModelAndView removePDPGroup(HttpServletRequest request, HttpServletResponse response) throws Exception {
+		try{
+			ObjectMapper mapper = new ObjectMapper();
+			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+			JsonNode root = mapper.readTree(request.getReader());
+			PolicyController controller = getPolicyControllerInstance();
+			this.container = new PDPGroupContainer(controller.getPapEngine()); 
+			StdPDPGroup pdpGroupData =  mapper.readValue(root.get("pdpGroupData").toString(), StdPDPGroup.class);
+			if(pdpGroupData.getName().equals("Default")) {
 				throw new UnsupportedOperationException("You can't remove the Default Group.");
 			}else{
 				this.container.removeGroup(pdpGroupData, null);
 			}
-	  
-	      response.setCharacterEncoding("UTF-8");
-	      response.setContentType("application / json");
-	      request.setCharacterEncoding("UTF-8");
-	      
-	      PrintWriter out = response.getWriter();
-	      
-	      refreshGroups(request);
-	      JsonMessage msg = new JsonMessage(mapper.writeValueAsString(groups));
-		  JSONObject j = new JSONObject(msg);
-	      out.write(j.toString());
-	      
-	      return null;
-	    }
-	    catch (Exception e){
-	      logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Removing the PDP Group" + e);
-	      response.setCharacterEncoding("UTF-8");
-	      request.setCharacterEncoding("UTF-8");
-	      PrintWriter out = response.getWriter();
-	      out.write(e.getMessage());
-	    }
-	    return null;
-	  }
-	  
-	  @RequestMapping(value={"/pdp_Group/save_pdpTogroup"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
-	  public ModelAndView savePDPToGroup(HttpServletRequest request, HttpServletResponse response) throws Exception{
-	    try {
-	      ObjectMapper mapper = new ObjectMapper();
-	      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-	      JsonNode root = mapper.readTree(request.getReader());
-	      this.container = new PDPGroupContainer(PolicyController.getPapEngine()); 
-	      String update = root.get("update").toString();
-	      PdpData pdpGroupData = (PdpData)mapper.readValue(root.get("pdpInGroup").toString(), PdpData.class);
-	      StdPDPGroup activeGroupData =  mapper.readValue(root.get("activePDP").toString(), StdPDPGroup.class);
-	      try {
-	    	  
-	    	  if(update.contains("false")){
-	    		  this.container.addNewPDP(pdpGroupData.getId(), activeGroupData, pdpGroupData.getName(), pdpGroupData.getDescription(), pdpGroupData.getJmxPort());
-	    	  }else{
-	    		  this.container.updateGroup(activeGroupData);
-	    	  }
+
+			response.setCharacterEncoding("UTF-8");
+			response.setContentType("application / json");
+			request.setCharacterEncoding("UTF-8");
+
+			PrintWriter out = response.getWriter();
+
+			refreshGroups(request);
+			JsonMessage msg = new JsonMessage(mapper.writeValueAsString(groups));
+			JSONObject j = new JSONObject(msg);
+			out.write(j.toString());
+
+			return null;
+		}
+		catch (Exception e){
+			logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Removing the PDP Group" + e);
+			response.setCharacterEncoding("UTF-8");
+			request.setCharacterEncoding("UTF-8");
+			PrintWriter out = response.getWriter();
+			out.write(e.getMessage());
+		}
+		return null;
+	}
+
+	@RequestMapping(value={"/pdp_Group/save_pdpTogroup"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+	public ModelAndView savePDPToGroup(HttpServletRequest request, HttpServletResponse response) throws Exception{
+		try {
+			ObjectMapper mapper = new ObjectMapper();
+			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+			JsonNode root = mapper.readTree(request.getReader());
+			PolicyController controller = getPolicyControllerInstance();
+			this.container = new PDPGroupContainer(controller.getPapEngine()); 
+			String update = root.get("update").toString();
+			PdpData pdpGroupData = (PdpData)mapper.readValue(root.get("pdpInGroup").toString(), PdpData.class);
+			StdPDPGroup activeGroupData =  mapper.readValue(root.get("activePDP").toString(), StdPDPGroup.class);
+			try {
+
+				if(update.contains("false")){
+					this.container.addNewPDP(pdpGroupData.getId(), activeGroupData, pdpGroupData.getName(), pdpGroupData.getDescription(), pdpGroupData.getJmxPort());
+				}else{
+					this.container.updateGroup(activeGroupData);
+				}
 			} catch (Exception e) {
 				String message = "Unable to create Group.  Reason:\n" + e.getMessage();
-				 logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Creating Pdp in PDP Group" + message);
+				logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Creating Pdp in PDP Group" + message);
 			}
-	        
-	    
-	      response.setCharacterEncoding("UTF-8");
-	      response.setContentType("application / json");
-	      request.setCharacterEncoding("UTF-8");
-	      
-	      PrintWriter out = response.getWriter();
-	      refreshGroups(request);
-	      JsonMessage msg = new JsonMessage(mapper.writeValueAsString(groups));
-		  JSONObject j = new JSONObject(msg);
-	      out.write(j.toString());
-	      
-	      return null;
-	    }
-	    catch (Exception e){
-	      logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Creating Pdp in PDP Group" + e);
-	      response.setCharacterEncoding("UTF-8");
-	      request.setCharacterEncoding("UTF-8");
-	      PrintWriter out = response.getWriter();
-	      out.write(e.getMessage());
-	    }
-	    return null;
-	  }
-	  
-	  @RequestMapping(value={"/pdp_Group/remove_pdpFromGroup"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
-	  public ModelAndView removePDPFromGroup(HttpServletRequest request, HttpServletResponse response) throws Exception {
-	    try{
-	      ObjectMapper mapper = new ObjectMapper();
-	      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-	      JsonNode root = mapper.readTree(request.getReader());
-	      this.container = new PDPGroupContainer(PolicyController.getPapEngine()); 
-	      StdPDP deletePdp =  mapper.readValue(root.get("data").toString(), StdPDP.class);
-	      StdPDPGroup activeGroupData =  mapper.readValue(root.get("activePDP").toString(), StdPDPGroup.class);
-	      	
-	      this.container.removePDP(deletePdp, activeGroupData);
-	      response.setCharacterEncoding("UTF-8");
-	      response.setContentType("application / json");
-	      request.setCharacterEncoding("UTF-8");
-	      
-	      PrintWriter out = response.getWriter();
-	      refreshGroups(request);
-	      String responseString = mapper.writeValueAsString(groups);
-	      JSONObject j = new JSONObject("{pdpEntityDatas: " + responseString + "}");
-	      out.write(j.toString());
-	      
-	      return null;
-	    }
-	    catch (Exception e){
-	      logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Removing Pdp from PDP Group" + e);
-	      response.setCharacterEncoding("UTF-8");
-	      request.setCharacterEncoding("UTF-8");
-	      PrintWriter out = response.getWriter();
-	      out.write(e.getMessage());
-	    }
-	    return null;
-	  }
+
+
+			response.setCharacterEncoding("UTF-8");
+			response.setContentType("application / json");
+			request.setCharacterEncoding("UTF-8");
+
+			PrintWriter out = response.getWriter();
+			refreshGroups(request);
+			JsonMessage msg = new JsonMessage(mapper.writeValueAsString(groups));
+			JSONObject j = new JSONObject(msg);
+			out.write(j.toString());
+
+			return null;
+		}
+		catch (Exception e){
+			logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Creating Pdp in PDP Group" + e);
+			response.setCharacterEncoding("UTF-8");
+			request.setCharacterEncoding("UTF-8");
+			PrintWriter out = response.getWriter();
+			out.write(e.getMessage());
+		}
+		return null;
+	}
+
+	@RequestMapping(value={"/pdp_Group/remove_pdpFromGroup"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
+	public ModelAndView removePDPFromGroup(HttpServletRequest request, HttpServletResponse response) throws Exception {
+		try{
+			ObjectMapper mapper = new ObjectMapper();
+			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+			JsonNode root = mapper.readTree(request.getReader());
+			PolicyController controller = getPolicyControllerInstance();
+			this.container = new PDPGroupContainer(controller.getPapEngine()); 
+			StdPDP deletePdp =  mapper.readValue(root.get("data").toString(), StdPDP.class);
+			StdPDPGroup activeGroupData =  mapper.readValue(root.get("activePDP").toString(), StdPDPGroup.class);
+
+			this.container.removePDP(deletePdp, activeGroupData);
+			response.setCharacterEncoding("UTF-8");
+			response.setContentType("application / json");
+			request.setCharacterEncoding("UTF-8");
+
+			PrintWriter out = response.getWriter();
+			refreshGroups(request);
+			String responseString = mapper.writeValueAsString(groups);
+			JSONObject j = new JSONObject("{pdpEntityDatas: " + responseString + "}");
+			out.write(j.toString());
+
+			return null;
+		}
+		catch (Exception e){
+			logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Error Occured while Removing Pdp from PDP Group" + e);
+			response.setCharacterEncoding("UTF-8");
+			request.setCharacterEncoding("UTF-8");
+			PrintWriter out = response.getWriter();
+			out.write(e.getMessage());
+		}
+		return null;
+	}
+
+	private PolicyController getPolicyControllerInstance(){
+		return policyController != null ? getPolicyController() : new PolicyController();
+	}
+
+	public boolean isJunit() {
+		return junit;
+	}
+
+	public void setJunit(boolean junit) {
+		this.junit = junit;
+	}
+
+	public Set<EcompPDPGroup> getGroupsData() {
+		return groupsData;
+	}
+
+	public void setGroupsData(Set<EcompPDPGroup> groupsData) {
+		this.groupsData = groupsData;
+	}
 }
 
 class PdpData{
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PolicyController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PolicyController.java
index 42e4483..f896874 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PolicyController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PolicyController.java
@@ -72,9 +72,10 @@
 @Controller
 @RequestMapping("/")
 public class PolicyController extends RestrictedBaseController {
-	private static final Logger	LOGGER	= FlexLogger.getLogger(PolicyController.class);
+	private static final Logger	policyLogger	= FlexLogger.getLogger(PolicyController.class);
 
 	private static CommonClassDao commonClassDao;
+	
 	// Our authorization object
 	//
 	XacmlAdminAuthorization authorizer = new XacmlAdminAuthorization();
@@ -83,8 +84,8 @@
 	//
 	private static PAPPolicyEngine papEngine;
 
-	public static String logTableLimit;
-	public static String systemAlertTableLimit;
+	private static String logTableLimit;
+	private static String systemAlertTableLimit;
 	protected static Map<String, String> dropDownMap = new HashMap<>();
 	public static Map<String, String> getDropDownMap() {
 		return dropDownMap;
@@ -102,42 +103,47 @@
 	private static Map<Datatype, List<FunctionDefinition>> mapDatatype2Function = null;
 	private static Map<String, FunctionDefinition> mapID2Function = null;
 
-
+	//Constant variables used across Policy-sdk
+	private static final String policyData = "policyData";
+	private static final String characterEncoding = "UTF-8";
+	private static final String contentType = "application/json";
+	private static final String file = "file";
+	
 	//Smtp Java Mail Properties
-	public static String smtpHost = null;
-	public static String smtpPort = null;
-	public static String smtpUsername = null;
-	public static String smtpPassword = null;
-	public static String smtpApplicationName = null;
-	public static String smtpEmailExtension = null;
+	private static String smtpHost = null;
+	private static String smtpPort = null;
+	private static String smtpUsername = null;
+	private static String smtpPassword = null;
+	private static String smtpApplicationName = null;
+	private static String smtpEmailExtension = null;
 	//log db Properties
-	public static String logdbDriver = null;
-	public static String logdbUrl = null;
-	public static String logdbUserName = null;
-	public static String logdbPassword = null;
-	public static String logdbDialect = null;
+	private static String logdbDriver = null;
+	private static String logdbUrl = null;
+	private static String logdbUserName = null;
+	private static String logdbPassword = null;
+	private static String logdbDialect = null;
 	//Xacml db properties
-	public static String xacmldbUrl = null;
-	public static String xacmldbUserName = null;
-	public static String xacmldbPassword = null;
+	private static String xacmldbUrl = null;
+	private static String xacmldbUserName = null;
+	private static String xacmldbPassword = null;
 
 	//AutoPush feature. 
-	public static String autoPushAvailable;
-	public static String autoPushDSClosedLoop;
-	public static String autoPushDSFirewall;
-	public static String autoPushDSMicroservice;
-	public static String autoPushPDPGroup;
+	private static String autoPushAvailable;
+	private static String autoPushDSClosedLoop;
+	private static String autoPushDSFirewall;
+	private static String autoPushDSMicroservice;
+	private static String autoPushPDPGroup;
 	
 	//papURL
-	public static String papUrl;
+	private static String papUrl;
 	
 	//MicroService Model Properties
-	public static String msEcompName;
-	public static String msPolicyName;
+	private static String msEcompName;
+	private static String msPolicyName;
 	
 	//WebApp directories
-	public static String configHome;
-	public static String actionHome;
+	private static String configHome;
+	private static String actionHome;
 
 	@Autowired
 	private PolicyController(CommonClassDao commonClassDao){
@@ -156,54 +162,54 @@
 			// load a properties file
 			prop.load(input);
 			//pap url
-			papUrl = prop.getProperty("xacml.rest.pap.url"); 
+			setPapUrl(prop.getProperty("xacml.rest.pap.url")); 
 			// get the property values
-			smtpHost = prop.getProperty("ecomp.smtp.host");
-			smtpPort = prop.getProperty("ecomp.smtp.port");
-			smtpUsername = prop.getProperty("ecomp.smtp.userName");
-			smtpPassword = prop.getProperty("ecomp.smtp.password");
-			smtpApplicationName = prop.getProperty("ecomp.application.name");
-			smtpEmailExtension = prop.getProperty("ecomp.smtp.emailExtension");
+			setSmtpHost(prop.getProperty("ecomp.smtp.host"));
+			setSmtpPort(prop.getProperty("ecomp.smtp.port"));
+			setSmtpUsername(prop.getProperty("ecomp.smtp.userName"));
+			setSmtpPassword(prop.getProperty("ecomp.smtp.password"));
+			setSmtpApplicationName(prop.getProperty("ecomp.application.name"));
+			setSmtpEmailExtension(prop.getProperty("ecomp.smtp.emailExtension"));
 			//Log Database Properties
-			logdbDriver = prop.getProperty("xacml.log.db.driver");
-			logdbUrl = prop.getProperty("xacml.log.db.url");
-			logdbUserName = prop.getProperty("xacml.log.db.user");
-			logdbPassword = prop.getProperty("xacml.log.db.password");
-			logdbDialect = prop.getProperty("ecomp.dialect");
+			setLogdbDriver(prop.getProperty("xacml.log.db.driver"));
+			setLogdbUrl(prop.getProperty("xacml.log.db.url"));
+			setLogdbUserName(prop.getProperty("xacml.log.db.user"));
+			setLogdbPassword(prop.getProperty("xacml.log.db.password"));
+			setLogdbDialect(prop.getProperty("ecomp.dialect"));
 			//Xacml Database Properties
-			xacmldbUrl = prop.getProperty("javax.persistence.jdbc.url");
-			xacmldbUserName = prop.getProperty("javax.persistence.jdbc.user");
-			xacmldbPassword = prop.getProperty("javax.persistence.jdbc.password");
+			setXacmldbUrl(prop.getProperty("javax.persistence.jdbc.url"));
+			setXacmldbUserName(prop.getProperty("javax.persistence.jdbc.user"));
+			setXacmldbPassword(prop.getProperty("javax.persistence.jdbc.password"));
 			//AutoPuh
-			autoPushAvailable=prop.getProperty("xacml.automatic.push");
-			autoPushDSClosedLoop=prop.getProperty("xacml.autopush.closedloop");
-			autoPushDSFirewall=prop.getProperty("xacml.autopush.firewall");
-			autoPushDSMicroservice=prop.getProperty("xacml.autopush.microservice");
-			autoPushPDPGroup=prop.getProperty("xacml.autopush.pdpGroup");
+			setAutoPushAvailable(prop.getProperty("xacml.automatic.push"));
+			setAutoPushDSClosedLoop(prop.getProperty("xacml.autopush.closedloop"));
+			setAutoPushDSFirewall(prop.getProperty("xacml.autopush.firewall"));
+			setAutoPushDSMicroservice(prop.getProperty("xacml.autopush.microservice"));
+			setAutoPushPDPGroup(prop.getProperty("xacml.autopush.pdpGroup"));
 			//Micro Service Properties
-			msEcompName=prop.getProperty("xacml.policy.msEcompName");
-			msPolicyName=prop.getProperty("xacml.policy.msPolicyName");
+			setMsEcompName(prop.getProperty("xacml.policy.msEcompName"));
+			setMsPolicyName(prop.getProperty("xacml.policy.msPolicyName"));
 			//WebApp directories
-			configHome = prop.getProperty("xacml.rest.config.webapps") + "Config";
-			actionHome = prop.getProperty("xacml.rest.config.webapps") + "Action";
+			setConfigHome(prop.getProperty("xacml.rest.config.webapps") + "Config");
+			setActionHome(prop.getProperty("xacml.rest.config.webapps") + "Action");
 			//Get the Property Values for Dashboard tab Limit 
 			try{
-				logTableLimit = prop.getProperty("xacml.ecomp.dashboard.logTableLimit");
-				systemAlertTableLimit = prop.getProperty("xacml.ecomp.dashboard.systemAlertTableLimit");
+				setLogTableLimit(prop.getProperty("xacml.ecomp.dashboard.logTableLimit"));
+				setSystemAlertTableLimit(prop.getProperty("xacml.ecomp.dashboard.systemAlertTableLimit"));
 			}catch(Exception e){
-				LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Dashboard tab Property fields are missing" +e);
-				logTableLimit = "5000";
-				systemAlertTableLimit = "2000";
+				policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Dashboard tab Property fields are missing" +e);
+				setLogTableLimit("5000");
+				setSystemAlertTableLimit("2000");
 			}
 			System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "xacml.admin.properties");
 		} catch (IOException ex) {
-			LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Exception Occured while reading the Smtp properties from xacml.admin.properties file" +ex);
+			policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Exception Occured while reading the Smtp properties from xacml.admin.properties file" +ex);
 		} finally {
 			if (input != null) {
 				try {
 					input.close();
 				} catch (IOException e) {
-					LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Exception Occured while Closing the xacml.admin.properties file" +e);
+					policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE+"Exception Occured while Closing the xacml.admin.properties file" +e);
 				}
 			}
 		}
@@ -211,7 +217,7 @@
 		//Initialize the FunctionDefinition table at Server Start up 
 		Map<Datatype, List<FunctionDefinition>> functionMap = getFunctionDatatypeMap();
 		for (Datatype id : functionMap.keySet()) {
-			List<FunctionDefinition> functionDefinations = (List<FunctionDefinition>) functionMap.get(id);
+			List<FunctionDefinition> functionDefinations = functionMap.get(id);
 			for (FunctionDefinition functionDef : functionDefinations) {
 				dropDownMap.put(functionDef.getShortname(),functionDef.getXacmlid());
 			}
@@ -244,7 +250,7 @@
 		for (int i = 0; i < functiondefinitions.size(); i ++) {
 			FunctionDefinition value = (FunctionDefinition) functiondefinitions.get(i);
 			mapID2Function.put(value.getXacmlid(), value);
-			if (mapDatatype2Function.containsKey(value.getDatatypeBean()) == false) {
+			if (!mapDatatype2Function.containsKey(value.getDatatypeBean())) {
 				mapDatatype2Function.put(value.getDatatypeBean(), new ArrayList<FunctionDefinition>());
 			}
 			mapDatatype2Function.get(value.getDatatypeBean()).add(value);
@@ -262,21 +268,20 @@
 			response.getWriter().write(j.toString());
 		}
 		catch (Exception e){
-			LOGGER.equals(XACMLErrorConstants.ERROR_DATA_ISSUE +"Error while retriving the Function Definition data"+e);
+			policyLogger.error(XACMLErrorConstants.ERROR_DATA_ISSUE +"Error while retriving the Function Definition data"+e);
 		}
 	}
 	
 	public PolicyEntity getPolicyEntityData(String scope, String policyName){
 		String key = scope + ":" + policyName;
 		List<Object> data = commonClassDao.getDataById(PolicyEntity.class, "scope:policyName", key);
-		PolicyEntity entity = (PolicyEntity) data.get(0);
-		return entity;
+		return (PolicyEntity) data.get(0);
 	}
 
 	public static Map<String, Roles> getUserRoles(String userId) {
 		Map<String, Roles> scopes = new HashMap<>();
 		List<Object> roles = commonClassDao.getDataById(Roles.class, "loginId", userId);
-		if (roles != null && roles.size() > 0) {
+		if (roles != null && !roles.isEmpty()) {
 			for (Object role : roles) {
 				scopes.put(((Roles) role).getScope(), (Roles) role);
 			}
@@ -284,8 +289,8 @@
 		return scopes;
 	}
 
-	public static  List<String> getRolesOfUser(String userId) {
-		List<String> rolesList = new ArrayList<String>();
+	public List<String> getRolesOfUser(String userId) {
+		List<String> rolesList = new ArrayList<>();
 		List<Object> roles = commonClassDao.getDataById(Roles.class, "loginId", userId);
 		for (Object role: roles) {
 			rolesList.add(((Roles) role).getRole());
@@ -293,7 +298,7 @@
 		return rolesList;
 	}
 
-	public static List<Object> getRoles(String userId) {
+	public List<Object> getRoles(String userId) {
 		return commonClassDao.getDataById(Roles.class, "loginId", userId);
 	}
 
@@ -310,7 +315,7 @@
 			response.getWriter().write(j.toString());
 		}
 		catch (Exception e){
-			LOGGER.error("Exception Occured"+e);
+			policyLogger.error("Exception Occured"+e);
 		}
 	}
 
@@ -325,13 +330,13 @@
 			setPapEngine((PAPPolicyEngine) new RESTfulPAPEngine(myRequestURL));
 			new PDPGroupContainer((PAPPolicyEngine) new RESTfulPAPEngine(myRequestURL));
 		} catch (Exception e) {
-			LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR+"Exception Occured while loading PAP"+e);
+			policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR+"Exception Occured while loading PAP"+e);
 		}	
 		Map<String, Object> model = new HashMap<>();
 		return new ModelAndView("policy_Editor","model", model);
 	}
 
-	public static PAPPolicyEngine getPapEngine() {
+	public PAPPolicyEngine getPapEngine() {
 		return papEngine;
 	}
 
@@ -374,8 +379,7 @@
 	}
 
 	public PolicyVersion getPolicyEntityFromPolicyVersion(String query){
-		PolicyVersion policyVersionEntity = (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", query);
-		return policyVersionEntity;	
+		return (PolicyVersion) commonClassDao.getEntityItem(PolicyVersion.class, "policyName", query);
 	}
 
 	public List<Object> getDataByQuery(String query){
@@ -394,7 +398,7 @@
 		try {
 			email.sendMail(entity, policyName, mode, commonClassDao);
 		} catch (MessagingException e) {
-			LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Excepton Occured while Renaming/Deleting a Policy or Scope" + e);
+			policyLogger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Excepton Occured while Renaming/Deleting a Policy or Scope" + e);
 		}
 	}
 
@@ -428,5 +432,265 @@
 		el.put("highestVersion", entity.getHigherVersion());
 		return el;
 	}
+
+	public static String getLogTableLimit() {
+		return logTableLimit;
+	}
+
+	public static void setLogTableLimit(String logTableLimit) {
+		PolicyController.logTableLimit = logTableLimit;
+	}
+
+	public static String getSystemAlertTableLimit() {
+		return systemAlertTableLimit;
+	}
+
+	public static void setSystemAlertTableLimit(String systemAlertTableLimit) {
+		PolicyController.systemAlertTableLimit = systemAlertTableLimit;
+	}
+	
+	public static CommonClassDao getCommonClassDao() {
+		return commonClassDao;
+	}
+
+	public static void setCommonClassDao(CommonClassDao commonClassDao) {
+		PolicyController.commonClassDao = commonClassDao;
+	}
+
+	public XacmlAdminAuthorization getAuthorizer() {
+		return authorizer;
+	}
+
+	public void setAuthorizer(XacmlAdminAuthorization authorizer) {
+		this.authorizer = authorizer;
+	}
+
+	public static Map<Datatype, List<FunctionDefinition>> getMapDatatype2Function() {
+		return mapDatatype2Function;
+	}
+
+	public static void setMapDatatype2Function(Map<Datatype, List<FunctionDefinition>> mapDatatype2Function) {
+		PolicyController.mapDatatype2Function = mapDatatype2Function;
+	}
+
+	public static Map<String, FunctionDefinition> getMapID2Function() {
+		return mapID2Function;
+	}
+
+	public static void setMapID2Function(Map<String, FunctionDefinition> mapID2Function) {
+		PolicyController.mapID2Function = mapID2Function;
+	}
+
+	public static String getSmtpHost() {
+		return smtpHost;
+	}
+
+	public static void setSmtpHost(String smtpHost) {
+		PolicyController.smtpHost = smtpHost;
+	}
+
+	public static String getSmtpPort() {
+		return smtpPort;
+	}
+
+	public static void setSmtpPort(String smtpPort) {
+		PolicyController.smtpPort = smtpPort;
+	}
+
+	public static String getSmtpUsername() {
+		return smtpUsername;
+	}
+
+	public static void setSmtpUsername(String smtpUsername) {
+		PolicyController.smtpUsername = smtpUsername;
+	}
+
+	public static String getSmtpPassword() {
+		return smtpPassword;
+	}
+
+	public static void setSmtpPassword(String smtpPassword) {
+		PolicyController.smtpPassword = smtpPassword;
+	}
+
+	public static String getSmtpApplicationName() {
+		return smtpApplicationName;
+	}
+
+	public static void setSmtpApplicationName(String smtpApplicationName) {
+		PolicyController.smtpApplicationName = smtpApplicationName;
+	}
+
+	public static String getSmtpEmailExtension() {
+		return smtpEmailExtension;
+	}
+
+	public static void setSmtpEmailExtension(String smtpEmailExtension) {
+		PolicyController.smtpEmailExtension = smtpEmailExtension;
+	}
+
+	public static String getLogdbDriver() {
+		return logdbDriver;
+	}
+
+	public static void setLogdbDriver(String logdbDriver) {
+		PolicyController.logdbDriver = logdbDriver;
+	}
+
+	public static String getLogdbUrl() {
+		return logdbUrl;
+	}
+
+	public static void setLogdbUrl(String logdbUrl) {
+		PolicyController.logdbUrl = logdbUrl;
+	}
+
+	public static String getLogdbUserName() {
+		return logdbUserName;
+	}
+
+	public static void setLogdbUserName(String logdbUserName) {
+		PolicyController.logdbUserName = logdbUserName;
+	}
+
+	public static String getLogdbPassword() {
+		return logdbPassword;
+	}
+
+	public static void setLogdbPassword(String logdbPassword) {
+		PolicyController.logdbPassword = logdbPassword;
+	}
+
+	public static String getLogdbDialect() {
+		return logdbDialect;
+	}
+
+	public static void setLogdbDialect(String logdbDialect) {
+		PolicyController.logdbDialect = logdbDialect;
+	}
+
+	public static String getXacmldbUrl() {
+		return xacmldbUrl;
+	}
+
+	public static void setXacmldbUrl(String xacmldbUrl) {
+		PolicyController.xacmldbUrl = xacmldbUrl;
+	}
+
+	public static String getXacmldbUserName() {
+		return xacmldbUserName;
+	}
+
+	public static void setXacmldbUserName(String xacmldbUserName) {
+		PolicyController.xacmldbUserName = xacmldbUserName;
+	}
+
+	public static String getXacmldbPassword() {
+		return xacmldbPassword;
+	}
+
+	public static void setXacmldbPassword(String xacmldbPassword) {
+		PolicyController.xacmldbPassword = xacmldbPassword;
+	}
+
+	public static String getAutoPushAvailable() {
+		return autoPushAvailable;
+	}
+
+	public static void setAutoPushAvailable(String autoPushAvailable) {
+		PolicyController.autoPushAvailable = autoPushAvailable;
+	}
+
+	public static String getAutoPushDSClosedLoop() {
+		return autoPushDSClosedLoop;
+	}
+
+	public static void setAutoPushDSClosedLoop(String autoPushDSClosedLoop) {
+		PolicyController.autoPushDSClosedLoop = autoPushDSClosedLoop;
+	}
+
+	public static String getAutoPushDSFirewall() {
+		return autoPushDSFirewall;
+	}
+
+	public static void setAutoPushDSFirewall(String autoPushDSFirewall) {
+		PolicyController.autoPushDSFirewall = autoPushDSFirewall;
+	}
+
+	public static String getAutoPushDSMicroservice() {
+		return autoPushDSMicroservice;
+	}
+
+	public static void setAutoPushDSMicroservice(String autoPushDSMicroservice) {
+		PolicyController.autoPushDSMicroservice = autoPushDSMicroservice;
+	}
+
+	public static String getAutoPushPDPGroup() {
+		return autoPushPDPGroup;
+	}
+
+	public static void setAutoPushPDPGroup(String autoPushPDPGroup) {
+		PolicyController.autoPushPDPGroup = autoPushPDPGroup;
+	}
+
+	public static String getPapUrl() {
+		return papUrl;
+	}
+
+	public static void setPapUrl(String papUrl) {
+		PolicyController.papUrl = papUrl;
+	}
+
+	public static String getMsEcompName() {
+		return msEcompName;
+	}
+
+	public static void setMsEcompName(String msEcompName) {
+		PolicyController.msEcompName = msEcompName;
+	}
+
+	public static String getMsPolicyName() {
+		return msPolicyName;
+	}
+
+	public static void setMsPolicyName(String msPolicyName) {
+		PolicyController.msPolicyName = msPolicyName;
+	}
+
+	public static String getConfigHome() {
+		return configHome;
+	}
+
+	public static void setConfigHome(String configHome) {
+		PolicyController.configHome = configHome;
+	}
+
+	public static String getActionHome() {
+		return actionHome;
+	}
+
+	public static void setActionHome(String actionHome) {
+		PolicyController.actionHome = actionHome;
+	}
+
+	public static Object getMapaccess() {
+		return mapAccess;
+	}
+
+	public static String getPolicydata() {
+		return policyData;
+	}
+
+	public static String getCharacterencoding() {
+		return characterEncoding;
+	}
+
+	public static String getContenttype() {
+		return contentType;
+	}
+
+	public static String getFile() {
+		return file;
+	}
 }
 
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PolicyExportAndImportController.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PolicyExportAndImportController.java
index 68a65fc..bf2a148 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PolicyExportAndImportController.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/controller/PolicyExportAndImportController.java
@@ -89,6 +89,15 @@
 	private Workbook workbook;
 
 	private HSSFWorkbook workBook2;
+	
+	private PolicyController policyController;
+	public PolicyController getPolicyController() {
+		return policyController;
+	}
+
+	public void setPolicyController(PolicyController policyController) {
+		this.policyController = policyController;
+	}
 
 	@Autowired
 	private PolicyExportAndImportController(CommonClassDao commonClassDao){
@@ -190,12 +199,12 @@
 		String configName = null;
 		String scope = null;
 		boolean finalColumn = false;
-		PolicyController controller = new PolicyController();
+		PolicyController controller = policyController != null ? getPolicyController() : new PolicyController();
 		String userId = UserUtils.getUserSession(request).getOrgUserId();
 		UserInfo userInfo = (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId", userId);
 
 		//Check if the Role and Scope Size are Null get the values from db. 
-		List<Object> userRoles = PolicyController.getRoles(userId);
+		List<Object> userRoles = controller.getRoles(userId);
 		roles = new ArrayList<>();
 		scopes = new HashSet<>();
 		for(Object role: userRoles){
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/daoImp/SystemLogDbDaoImpl.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/daoImp/SystemLogDbDaoImpl.java
index 927d20f..fbca821 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/daoImp/SystemLogDbDaoImpl.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/daoImp/SystemLogDbDaoImpl.java
@@ -49,7 +49,7 @@
 		Transaction tx = session.beginTransaction();
 		List<SystemLogDB> system = null;
         try {
-        	String sqlWhere = "date > DATE_SUB(curdate(), INTERVAL 5 DAY) ORDER BY date DESC limit "+PolicyController.logTableLimit+"";
+        	String sqlWhere = "date > DATE_SUB(curdate(), INTERVAL 5 DAY) ORDER BY date DESC limit "+PolicyController.getLogTableLimit()+"";
         	Criteria cr = session.createCriteria(SystemLogDB.class);
         	cr.add(Restrictions.sqlRestriction(sqlWhere));
             system = cr.list();
@@ -73,7 +73,7 @@
 		Transaction tx = session.beginTransaction();
 		List<SystemLogDB> system = null;
         try {
-        	String sqlWhere = "date > DATE_SUB(curdate(), INTERVAL 5 DAY) and logtype = 'error' ORDER BY date DESC limit "+PolicyController.systemAlertTableLimit+"";
+        	String sqlWhere = "date > DATE_SUB(curdate(), INTERVAL 5 DAY) and logtype = 'error' ORDER BY date DESC limit "+PolicyController.getSystemAlertTableLimit()+"";
         	Criteria cr = session.createCriteria(SystemLogDB.class);
         	cr.add(Restrictions.sqlRestriction(sqlWhere));
             system = cr.list();
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/model/PDPGroupContainer.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/model/PDPGroupContainer.java
index a0b47bb..d048ded 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/model/PDPGroupContainer.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/model/PDPGroupContainer.java
@@ -52,57 +52,51 @@
     /**
      * String identifier of a file's "Id" property.
      */
-    public static String PROPERTY_ID = "Id";
+	private static String PROPERTY_ID = "Id";
 
    /**
      * String identifier of a file's "name" property.
      */
-    public static String PROPERTY_NAME = "Name";
+	private static String PROPERTY_NAME = "Name";
 
     /**
      * String identifier of a file's "Description" property.
      */
-    public static String PROPERTY_DESCRIPTION = "Description";
+	private static String PROPERTY_DESCRIPTION = "Description";
 
     /**
      * String identifier of a file's "Default" property.
      */
-    public static String PROPERTY_DEFAULT = "Default";
-
-    /**
-     * String identifier of a file's "icon" property.
-     */
-    public static String PROPERTY_ICON = "Icon";
-
+	private static String PROPERTY_DEFAULT = "Default";
     /**
      * String identifier of a file's "Status" property.
      */
-    public static String PROPERTY_STATUS = "Status";
+	private static String PROPERTY_STATUS = "Status";
 
     /**
      * String identifier of a file's "PDPs" property.
      */
-    public static String PROPERTY_PDPS = "PDPs";
+	private static String PROPERTY_PDPS = "PDPs";
 
     /**
      * String identifier of a file's "Policies" property.
      */
-    public static String PROPERTY_POLICIES = "Policies";
+	private static String PROPERTY_POLICIES = "Policies";
 
     /**
      * String identifier of a file's "PIP Configurations" property.
      */
-    public static String PROPERTY_PIPCONFIG = "PIP Configurations";
+	private static String PROPERTY_PIPCONFIG = "PIP Configurations";
     
     /**
      * String identifier of a file's "Selected" property.
      */
-    public static String PROPERTY_SELECTED = "Selected";
+	private static String PROPERTY_SELECTED = "Selected";
 
     /**
      * List of the string identifiers for the available properties.
      */
-    public static Collection<String> PDP_PROPERTIES;
+	private static Collection<String> PDP_PROPERTIES;
 
  	private PAPPolicyEngine papEngine = null;
  	protected List<EcompPDPGroup> groups = Collections.synchronizedList(new ArrayList<EcompPDPGroup>());
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/model/PDPPolicyContainer.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/model/PDPPolicyContainer.java
index 372a416..1cdf7d6 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/model/PDPPolicyContainer.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/model/PDPPolicyContainer.java
@@ -46,32 +46,32 @@
 	 /**
      * String identifier of a file's "Id" property.
      */
-    public static String PROPERTY_ID = "Id";
+	private static String PROPERTY_ID = "Id";
 
    /**
      * String identifier of a file's "name" property.
      */
-    public static String PROPERTY_NAME = "Name";
+	private static String PROPERTY_NAME = "Name";
 
     /**
       * String identifier of a file's "name" property.
       */
-     public static String PROPERTY_VERSION = "Version";
+	private static String PROPERTY_VERSION = "Version";
      
     /**
      * String identifier of a file's "Description" property.
      */
-    public static String PROPERTY_DESCRIPTION = "Description";
+	private static String PROPERTY_DESCRIPTION = "Description";
     
     /**
      * String identifier of a file's "IsRoot" property.
      */
-    public static String PROPERTY_ISROOT = "Root";
+	private static String PROPERTY_ISROOT = "Root";
 
     /**
      * List of the string identifiers for the available properties.
      */
-    public static Collection<String> PDPPOLICY_PROPERTIES;
+	private static Collection<String> PDPPOLICY_PROPERTIES;
  
     private final Object data;
     private List<PDPPolicy> policies;
diff --git a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/utils/ConfigurableRESTUtils.java b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/utils/ConfigurableRESTUtils.java
index 4ebc01c..58d53a1 100644
--- a/POLICY-SDK-APP/src/main/java/org/openecomp/policy/utils/ConfigurableRESTUtils.java
+++ b/POLICY-SDK-APP/src/main/java/org/openecomp/policy/utils/ConfigurableRESTUtils.java
@@ -46,10 +46,10 @@
 		  GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;
 		}
 	
-	public String ERROR_RECEIVED = "ERROR - Unexpected HTTP response: ";
+	private String ERROR_RECEIVED = "ERROR - Unexpected HTTP response: ";
 	
 	public ConfigurableRESTUtils() {
-
+		//Default Constructor
 	}
 	
 	
@@ -144,7 +144,7 @@
 					try {
 						is = connection.getInputStream();
 					} catch (Exception e1) {
-						// ignore this
+						LOGGER.error("Exception Occured"+e1);
 					}
 					if (is != null) {
 						is.close();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/AutoPushController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/AutoPushController.js
index 9eb9033..338c4ca 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/AutoPushController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/controller/AutoPushController.js
@@ -38,7 +38,7 @@
     });
 
     $scope.pdpdata;
-    PolicyAppService.getData('get_PDPGroupContainerData').then(function (data) {
+    PolicyAppService.getData('get_PDPGroupData').then(function (data) {
         var j = data;
         $scope.pdpdata = JSON.parse(j.data);
         console.log($scope.pdpdata);
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/templates/navbar.html b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/templates/navbar.html
index 80ca1c5..dfac651 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/templates/navbar.html
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/templates/navbar.html
@@ -8,7 +8,7 @@
 			</form>
 		</div>
 		<div class="form-group col-sm-5" style="margin-top: 2%"></div>
-		<div class="form-group col-sm-4" style="margin-top: 2%" align="right">
+		<div class="form-group col-sm-4" style="margin-top: 2%" align="right" ng-hide="isDisabled">
 			<div class="btn-group">
   				<button type="button" class="btn btn-primary" ng-show="superAdminId" data-toggle="modal" data-target="#newfolder" ng-click="touch()"><i class="glyphicon glyphicon-plus"></i>Add Scope</button>
   				<button type="button" class="btn btn-primary" ng-show="importPolicyId" data-toggle="modal" data-target="#uploadfile" ng-show="config.allowedActions.upload" ng-click="touch()"> <i class="glyphicon glyphicon-upload"></i>Import</button>
diff --git a/POLICY-SDK-APP/src/test/java/org/openecomp/policy/admin/PolicyManagerServletTest.java b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/admin/PolicyManagerServletTest.java
new file mode 100644
index 0000000..773955d
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/admin/PolicyManagerServletTest.java
@@ -0,0 +1,155 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP 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.openecomp.policy.admin;
+
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.controller.PolicyController;
+import org.openecomp.policy.model.Roles;
+import org.openecomp.policy.rest.jpa.PolicyEditorScopes;
+import org.openecomp.policy.rest.jpa.PolicyEntity;
+import org.openecomp.policy.rest.jpa.PolicyVersion;
+import org.openecomp.policy.rest.jpa.UserInfo;
+
+public class PolicyManagerServletTest extends Mockito{
+	
+	private static Logger logger = FlexLogger.getLogger(PolicyManagerServletTest.class);
+
+	private static List<Object> rolesdata;
+	private static List<Object> policyData;
+	private static List<Object> policyEditorScopes;
+	private static List<Object> policyVersion;
+	
+	@Before
+	public void setUp() throws Exception{
+		logger.info("setUp: Entering");
+		UserInfo userinfo = new UserInfo();
+		userinfo.setUserLoginId("Test");
+		userinfo.setUserName("Test");
+		//Roles Data
+        rolesdata = new ArrayList<>();
+        Roles roles = new Roles();
+        roles.setLoginId("Test");
+        roles.setRole("super-admin");
+        Roles roles1 = new Roles();
+        roles1.setLoginId("Test");
+        roles1.setRole("admin");
+        roles1.setScope("['com','Test']");
+        rolesdata.add(roles);
+        rolesdata.add(roles1);
+        
+        //PolicyEntity Data
+        policyData = new ArrayList<>();
+        String policyContent = "";
+        try {
+			ClassLoader classLoader = getClass().getClassLoader();
+			policyContent = IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml"));
+		} catch (Exception e1) {
+			logger.error("Exception Occured"+e1);
+		}
+        PolicyEntity entity = new PolicyEntity();
+        entity.setPolicyName("Config_SampleTest.1.xml");
+        entity.setPolicyData(policyContent);
+        entity.setScope("com");
+        policyData.add(entity);
+        
+        //PolicyEditorScopes data
+        policyEditorScopes = new ArrayList<>();
+        PolicyEditorScopes scopes = new PolicyEditorScopes();
+        scopes.setScopeName("com");
+        scopes.setUserCreatedBy(userinfo);
+        scopes.setUserModifiedBy(userinfo);
+        PolicyEditorScopes scopes1 = new PolicyEditorScopes();
+        scopes1.setScopeName("com\\Test");
+        scopes1.setUserCreatedBy(userinfo);
+        scopes1.setUserModifiedBy(userinfo);
+        policyEditorScopes.add(scopes);
+        policyEditorScopes.add(scopes1);
+        
+        //PolicyVersion data
+        policyVersion = new ArrayList<>();
+        PolicyVersion policy = new PolicyVersion();
+        policy.setPolicyName("com\\Config_SampleTest1206");
+        policy.setActiveVersion(1);
+        policy.setHigherVersion(1);
+        policy.setCreatedBy("Test");
+        policy.setModifiedBy("Test");
+        policyVersion.add(policy);
+	}
+	
+	@Test
+	public void testDescribePolicy(){
+		PolicyManagerServlet servlet = new PolicyManagerServlet();
+		HttpServletRequest request = mock(HttpServletRequest.class);       
+        HttpServletResponse response = mock(HttpServletResponse.class);  
+        PolicyController controller = mock(PolicyController.class);
+        
+        BufferedReader reader = new BufferedReader(new StringReader("{params: { mode: 'DESCRIBEPOLICYFILE', path: 'com.Config_SampleTest1206.1.xml'}}"));
+        try {
+			when(request.getReader()).thenReturn(reader);
+			when(controller.getDataByQuery("FROM PolicyEntity where policyName = 'Config_SampleTest1206.1.xml' and scope ='com'")).thenReturn(policyData);
+			servlet.setPolicyController(controller);
+			servlet.doPost(request, response);
+		} catch (Exception e1) {
+			logger.error("Exception Occured"+e1);
+		}
+	}
+	
+	
+	@Test
+	public void testPolicyScopeList(){
+		PolicyManagerServlet servlet = new PolicyManagerServlet();
+		HttpServletRequest request = mock(HttpServletRequest.class);       
+        HttpServletResponse response = mock(HttpServletResponse.class); 
+        PolicyController controller = mock(PolicyController.class);
+        List<String> list = new ArrayList<>();
+        list.add("{params: { mode: 'LIST', path: '/', onlyFolders: false}}");
+        list.add("{params: { mode: 'LIST', path: '/com', onlyFolders: false}}");
+        for(int i =0; i < list.size(); i++){
+        	BufferedReader reader = new BufferedReader(new StringReader(list.get(i)));
+            try {
+    			when(request.getReader()).thenReturn(reader);
+    			when(controller.getRoles("Test")).thenReturn(rolesdata);
+    			when(controller.getDataByQuery("from PolicyEditorScopes")).thenReturn(policyEditorScopes);
+    			when(controller.getDataByQuery("from PolicyEditorScopes where SCOPENAME like 'com%'")).thenReturn(policyEditorScopes);
+    			when(controller.getDataByQuery("from PolicyVersion where POLICY_NAME like 'com%'")).thenReturn(policyVersion);
+    			servlet.setPolicyController(controller);
+    			servlet.setTestUserId("Test");
+    			servlet.doPost(request, response);
+    		} catch (Exception e1) {
+    			logger.error("Exception Occured"+e1);
+    		}
+        }
+	}
+	
+
+}
diff --git a/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/AdminTabControllerTest.java b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/AdminTabControllerTest.java
new file mode 100644
index 0000000..43b8a6f
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/AdminTabControllerTest.java
@@ -0,0 +1,74 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP 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.openecomp.policy.controller;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.dao.CommonClassDao;
+import org.openecomp.policy.rest.jpa.GlobalRoleSettings;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+public class AdminTabControllerTest {
+
+	private static Logger logger = FlexLogger.getLogger(AdminTabControllerTest.class);
+	private static CommonClassDao commonClassDao;
+	
+	@Before
+	public void setUp() throws Exception {
+
+		logger.info("setUp: Entering");
+        commonClassDao = mock(CommonClassDao.class);
+        GlobalRoleSettings globalRole = new GlobalRoleSettings();
+        globalRole.setLockdown(true);
+        globalRole.setRole("super-admin");
+        List<Object> globalRoles = new ArrayList<>();
+        globalRoles.add(globalRole);
+        when(commonClassDao.getData(GlobalRoleSettings.class)).thenReturn(globalRoles);
+	} 
+	
+	@Test
+	public void testGetAdminRole(){
+		HttpServletRequest request = mock(HttpServletRequest.class);       
+		MockHttpServletResponse response =  new MockHttpServletResponse();
+		
+		AdminTabController admin = new AdminTabController();
+		AdminTabController.setCommonClassDao(commonClassDao);
+		admin.getAdminTabEntityData(request, response);
+		
+		try {
+			assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("lockdowndata"));
+		} catch (UnsupportedEncodingException e) {
+			logger.error("Exception Occured"+e);
+		}
+	}
+	
+}
diff --git a/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/CreateDcaeMicroServiceControllerTest.java b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/CreateDcaeMicroServiceControllerTest.java
new file mode 100644
index 0000000..ca4f249
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/CreateDcaeMicroServiceControllerTest.java
@@ -0,0 +1,647 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP 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.openecomp.policy.controller;
+
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+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.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.adapter.PolicyRestAdapter;
+import org.openecomp.policy.rest.dao.CommonClassDao;
+import org.openecomp.policy.rest.jpa.ConfigurationDataEntity;
+import org.openecomp.policy.rest.jpa.MicroServiceModels;
+import org.openecomp.policy.rest.jpa.PolicyEntity;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.fge.jackson.JsonLoader;
+
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
+import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
+
+/**
+ * The class <code>CreateDcaeMicroServiceControllerTest</code> contains tests
+ * for the class {@link <code>CreateDcaeMicroServiceController</code>}*
+ *
+ * All JUnits are designed to run in the local development environment
+ * where they have write privileges and can execute time-sensitive
+ * tasks.
+ *
+ * 
+ *
+ */
+
+public class CreateDcaeMicroServiceControllerTest {
+	
+	private static Logger logger = FlexLogger.getLogger(CreateDcaeMicroServiceControllerTest.class);
+	private static CommonClassDao commonClassDao;
+	private String jsonString = null;
+	private String configBodyString = null;
+	private HttpServletRequest request = null;
+	
+	@Before
+	public void setUp() throws Exception {
+
+		logger.info("setUp: Entering");
+        commonClassDao = mock(CommonClassDao.class);
+        List<Object> microServiceModelsData = new ArrayList<Object>();
+        MicroServiceModels testData = new MicroServiceModels();
+        testData.setVersion("OpenEcomp-Junit");        
+        microServiceModelsData.add(testData);
+
+        // mock the getDataById() call
+        when(commonClassDao.getDataById(MicroServiceModels.class, "modelName", "test")).thenReturn(microServiceModelsData);
+        
+		jsonString = "{\"policyData\": {\"error\": \"\",	\"inprocess\": false,\"model\": {\"name\": \"testingdata\", "
+				+ " \"subScopename\": \"\",\"path\": [],\"type\": \"dir\",\"size\": 0,\"date\": \"2017-04-12T21:26:57.000Z\", "
+				+ " \"version\": \"\",\"createdBy\": \"someone\",	\"modifiedBy\": \"someone\",	\"content\": \"\",\"recursive\": false},"
+				+ " \"tempModel\": {\"name\": \"testingdata\",\"subScopename\": \"\"	},"
+				+ " \"policy\": {\"policyType\": \"Config\",\"configPolicyType\": \"Micro Service\",\"policyName\": \"may1501\", "
+				+ "	\"policyDescription\": \"testing input\", \"ecompName\": \"RaviTest\",\"guard\": \"False\",\"riskType\": \"Risk12345\",\"riskLevel\": \"2\","
+				+ "	\"priority\": \"6\",\"serviceType\": \"DkatPolicyBody\",\"version\": \"1707.41.02\",\"ruleGridData\": [	[\"fileId\"]],\"ttlDate\": null}}, "
+				+ "	\"policyJSON\": {\"pmTableName\": \"test\",	\"dmdTopic\": \"1\",\"fileId\": \"56\"} }";
+
+		configBodyString = "{\"service\":\"SniroPolicyEntityTest\",\"policyName\":\"someone\",\"description\":\"test\",\"templateVersion\":\"1607\",\"version\":\"HD\","
+				+ "\"priority\":\"2\",\"content\":{\"lastPolled\":\"1\",\"boolen-test\":\"true\",\"created\":\"test\",\"retiredDate\":\"test\",\"scope\":\"SNIRO_PLACEMENT_VDHV\","
+				+ "\"name\":\"test\",\"lastModified\":\"test\",\"state\":\"CREATED\",\"type\":\"CONFIG\",\"intent\":\"test\",\"target\":\"SNIRO\"}}";
+
+		request = mock(HttpServletRequest.class);        
+        BufferedReader br = new BufferedReader(new StringReader(jsonString));
+        // mock the getReader() call
+        when(request.getReader()).thenReturn(br);   
+        
+        logger.info("setUp: exit");
+	}
+		
+	
+	/**
+	 * Run the PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter,
+	 * JsonNode) method test
+	 */
+	
+	@Test
+	public void testSetDataToPolicyRestAdapter() {
+		
+		logger.debug("testSetDataToPolicyRestAdapter: enter");
+		
+		CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController();
+		CreateDcaeMicroServiceController.setCommonClassDao(commonClassDao);
+	
+		JsonNode root = null;
+		ObjectMapper mapper = new ObjectMapper();
+		mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+		PolicyRestAdapter policyData = null;
+		try {
+			root = JsonLoader.fromString(jsonString);
+			policyData = (PolicyRestAdapter)mapper.readValue(root.get("policyData").get("policy").toString(), PolicyRestAdapter.class);
+		} catch (Exception e) {
+			logger.error("testSetDataToPolicyRestAdapter", e);			
+		} 
+		
+		PolicyRestAdapter result = controller.setDataToPolicyRestAdapter(policyData,	root);
+		assertTrue(result != null && result.getJsonBody() != null && !result.getJsonBody().isEmpty());
+	
+		logger.debug("result.getJsonBody() : " + result.getJsonBody());
+		logger.debug("testSetDataToPolicyRestAdapter: exit");
+	}
+
+	/**
+	 * Run the void stringBetweenDots(String, String) method test
+	 */
+	
+	 @Test
+	public void testStringBetweenDots() {
+
+		logger.debug("testStringBetweenDots: enter");
+		
+		//expect: uniqueKeys should contain a string value 
+		CreateDcaeMicroServiceController controllerA = new CreateDcaeMicroServiceController();
+		String str = "testing\\.byCorrectWay\\.OfDATA";
+		String value = null;
+		assertEquals(1, controllerA.stringBetweenDots(str, value));
+		
+		//expect: uniqueKeys should not contain a string value 
+		str = "testing\byWrongtWay.\\OfDATA";
+		CreateDcaeMicroServiceController controllerB = new CreateDcaeMicroServiceController();
+	    assertEquals(0, controllerB.stringBetweenDots(str, value));
+	    
+		logger.debug("testStringBetweenDots: exit");
+	}
+
+	/**
+	 * Run the Map<String,String> load(String) method test
+	 */
+	
+	@Test
+	public void testLoad() {
+		
+		logger.debug("testLoad: enter");
+		
+		boolean isLocalTesting = true;
+		CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController();
+		String fileName = null;
+		Map<String,String> result = null;
+		try {
+			ClassLoader classLoader = getClass().getClassLoader();
+			fileName = new File(classLoader.getResource("policy_tosca_tca_v1707.yml").getFile()).getAbsolutePath();
+		} catch (Exception e1) {
+			logger.error("Exception Occured while loading file"+e1);
+		}
+		if(isLocalTesting){
+			try {
+				result = controller.load(fileName);
+			} catch (IOException e) {
+				logger.error("testLoad", e);
+				result = null;
+			}
+			
+			assertTrue(result != null && !result.isEmpty());				
+			logger.debug("result : " + result);
+		}
+
+		logger.debug("testLoad: exit");
+	}
+	
+	/**
+	 * Run the void parseTosca(String) method test
+	 */
+	
+	@Test
+	public void testParseTosca() {
+		
+		logger.debug("testParseTosca: enter");
+		boolean isLocalTesting = true;
+		String fileName = null;
+		try {
+			ClassLoader classLoader = getClass().getClassLoader();
+			fileName = new File(classLoader.getResource("policy_tosca_tca_v1707.yml").getFile()).getAbsolutePath();
+		} catch (Exception e1) {
+			logger.error("Exception Occured while loading file"+e1);
+		}
+		
+		CreateDcaeMicroServiceController contoller = new CreateDcaeMicroServiceController();
+        if(isLocalTesting){
+			try {
+			    contoller.parseTosca(fileName);
+			}catch (Exception e) {
+				fail("parseTosca caused error: " + e);
+			}
+        }
+		logger.debug("testParseTosca: exit");
+	}
+
+	/**
+	 * Run the ModelAndView getDCAEMSTemplateData(HttpServletRequest,
+	 * HttpServletResponse) method test
+	 */
+	
+	 @Test
+	public void testGetDCAEMSTemplateData() {
+		
+		logger.debug("testGetDCAEMSTemplateData: enter");
+		
+		CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController();   
+		MockHttpServletResponse response =  new MockHttpServletResponse();
+		String msModelJson = "{\"policyData\":\"DkatPolicyBody\"}";
+		try {	
+			
+	        CreateDcaeMicroServiceController.setCommonClassDao(commonClassDao);
+	        
+	        BufferedReader br = new BufferedReader(new StringReader(msModelJson));
+	        // mock the getReader() call
+	        when(request.getReader()).thenReturn(br); 
+	        
+	        List<Object> microServiceModelsData = new ArrayList<Object>();
+	        MicroServiceModels testData = new MicroServiceModels();
+	        testData.setVersion("1707.4.1.2-Junit");        
+	        microServiceModelsData.add(testData);
+	        // mock the getDataById() call with the same MS model name 
+	        when(commonClassDao.getDataById(MicroServiceModels.class, "modelName", "DkatPolicyBody")).thenReturn(microServiceModelsData);	
+	        
+			controller.getDCAEMSTemplateData(request, response);
+			
+			assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("dcaeModelData"));
+			
+			logger.debug("response: "  + response.getContentAsString());
+			
+		} catch (Exception e) {
+			logger.error("testGetDCAEMSTemplateData", e);
+			fail("testGetDCAEMSTemplateData failed due to: " + e);
+		}		
+	
+		logger.debug("testGetDCAEMSTemplateData: exit");
+	}
+
+	/**
+	 * Run the ModelAndView getModelServiceVersionData(HttpServletRequest,
+	 * HttpServletResponse) method test
+	 */
+	
+	@Test
+	public void testGetModelServiceVersionData() {
+		
+		logger.debug("testGetModelServiceVersionData: enter");
+		
+		CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController();
+		MockHttpServletResponse response =  new MockHttpServletResponse();
+		String msModelJson = "{\"policyData\":\"DkatPolicyBody\"}";
+		try {
+			
+	        CreateDcaeMicroServiceController.setCommonClassDao(commonClassDao);
+	        
+	        BufferedReader br = new BufferedReader(new StringReader(msModelJson));
+	        // mock the getReader() call
+	        when(request.getReader()).thenReturn(br);   
+	        
+	        List<Object> microServiceModelsData = new ArrayList<Object>();
+	        MicroServiceModels testData = new MicroServiceModels();
+	        testData.setVersion("1707.4.1.2-Junit");        
+	        microServiceModelsData.add(testData);
+
+	        // mock the getDataById() call with the same MS model name 
+	        when(commonClassDao.getDataById(MicroServiceModels.class, "modelName", "DkatPolicyBody")).thenReturn(microServiceModelsData);
+			controller.getModelServiceVersionData(request, response);	
+						
+			assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("1707.4.1.2-Junit"));
+			
+			logger.debug("response: "  + response.getContentAsString());
+			
+		} catch (Exception e) {
+			logger.error("testGetModelServiceVersionData", e);
+			fail("testGetModelServiceVersionData failed due to: " + e);
+		}
+
+		logger.debug("testGetModelServiceVersionData: exit");
+	}
+
+	/**
+	 * Run the void getDCAEPriorityValuesData(HttpServletRequest,
+	 * HttpServletResponse) method test
+	 */
+	
+	@Test
+	public void testGetDCAEPriorityValuesData() {
+		
+		logger.debug("testGetDCAEPriorityValuesData: enter");
+		
+		CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController();
+		
+	    MockHttpServletRequest request = new MockHttpServletRequest();
+	    MockHttpServletResponse response = new MockHttpServletResponse();
+        try{
+		   controller.getDCAEPriorityValuesData(request, response);
+		   assertTrue( response.getContentAsString() != null && response.getContentAsString().contains("priorityDatas"));
+		   logger.debug("response: "  + response.getContentAsString());
+        } catch (Exception e) {
+			logger.error("testGetDCAEPriorityValuesData", e);
+			fail("testGetDCAEPriorityValuesData failed due to: " + e);
+		}
+		
+		logger.debug("testGetDCAEPriorityValuesData: exit");
+	}
+
+	/**
+	 * Run the void prePopulateDCAEMSPolicyData(PolicyRestAdapter,
+	 * PolicyEntity) method test
+	 */
+	
+	@Test
+	public void testPrePopulateDCAEMSPolicyData() {
+		
+		logger.debug("testPrePopulateDCAEMSPolicyData: enter");
+		
+	    CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController();
+	    
+	    // populate an entity object for testing
+		PolicyEntity entity = new PolicyEntity();
+		ConfigurationDataEntity configData = new ConfigurationDataEntity();
+		configData.setConfigBody(configBodyString);		
+		entity.setConfigurationData(configData);
+		
+		JsonNode root = null;
+		ObjectMapper mapper = new ObjectMapper();
+		mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+		PolicyRestAdapter restAdapter = null;
+
+		try {
+			root = JsonLoader.fromString(jsonString);
+			restAdapter = (PolicyRestAdapter)mapper.readValue(root.get("policyData").get("policy").toString(), PolicyRestAdapter.class);
+			PolicyType policyType = new PolicyType();
+			TargetType target = new TargetType(); 
+			
+			// create guard attribute 
+			AnyOfType anyOfType = new AnyOfType();			
+			AllOfType alltype = new AllOfType();
+			MatchType matchType = new MatchType();
+			// set value
+			AttributeValueType attributeValue1 = new AttributeValueType();
+			attributeValue1.getContent().add("True");
+			matchType.setAttributeValue(attributeValue1);
+            // set Id
+			AttributeDesignatorType designator = new AttributeDesignatorType();
+			designator.setAttributeId("guard");
+			matchType.setAttributeDesignator(designator);
+			alltype.getMatch().add(matchType);	
+			
+			// add a dummy MatchType object since while (matchList.size()>1 ...)
+			MatchType matchDummy = new MatchType();
+			// set value
+			AttributeValueType dummyValue = new AttributeValueType();
+			dummyValue.getContent().add("dummy");
+			matchDummy.setAttributeValue(dummyValue);
+            // set Id
+			AttributeDesignatorType designatorDummy = new AttributeDesignatorType();
+			designatorDummy.setAttributeId("dummyId");
+			matchDummy.setAttributeDesignator(designatorDummy);
+			
+			alltype.getMatch().add(matchDummy);
+			anyOfType.getAllOf().add(alltype);
+			
+			target.getAnyOf().add(anyOfType);
+			
+			// create RiskType attribute 
+			AnyOfType anyRiskType = new AnyOfType();			
+			AllOfType allRiskType = new AllOfType();
+			MatchType matchRiskType = new MatchType();
+			// set value
+			AttributeValueType riskTypeValue = new AttributeValueType();
+			riskTypeValue.getContent().add("test");
+			matchRiskType.setAttributeValue(riskTypeValue);
+            // set Id
+			AttributeDesignatorType designatorRiskType = new AttributeDesignatorType();
+			designatorRiskType.setAttributeId("RiskType");
+			matchRiskType.setAttributeDesignator(designatorRiskType);
+			allRiskType.getMatch().add(matchRiskType);	
+			
+			// add a dummy MatchType object since while (matchList.size()>1 ...)
+			MatchType matchDummy1 = new MatchType();
+			// set value
+			AttributeValueType dummy1Value = new AttributeValueType();
+			dummy1Value.getContent().add("dummy");
+			matchDummy1.setAttributeValue(dummy1Value);
+            // set Id
+			AttributeDesignatorType designatorDummy1 = new AttributeDesignatorType();
+			designatorDummy1.setAttributeId("dummyId");
+			matchDummy1.setAttributeDesignator(designatorDummy1);
+			
+			allRiskType.getMatch().add(matchDummy1);
+			
+			anyRiskType.getAllOf().add(allRiskType);
+			
+			target.getAnyOf().add(anyRiskType);
+			
+			// create RiskLevel attribute 
+			AnyOfType anyRiskLevel = new AnyOfType();			
+			AllOfType allRiskLevel = new AllOfType();
+			MatchType matchRiskLevel = new MatchType();
+			// set value
+			AttributeValueType riskLevel = new AttributeValueType();
+			riskLevel.getContent().add("3");
+			matchRiskLevel.setAttributeValue(riskLevel);
+            // set Id
+			AttributeDesignatorType designatorRiskLevel = new AttributeDesignatorType();
+			designatorRiskLevel.setAttributeId("RiskLevel");
+			matchRiskLevel.setAttributeDesignator(designatorRiskLevel);
+			allRiskLevel.getMatch().add(matchRiskLevel);
+			
+			// add a dummy MatchType object since while (matchList.size()>1 ...)
+			MatchType matchDummy2 = new MatchType();
+			// set value
+			AttributeValueType dummy2Value = new AttributeValueType();
+			dummy2Value.getContent().add("dummy");
+			matchDummy2.setAttributeValue(dummy2Value);
+            // set Id
+			AttributeDesignatorType designatorDummy2 = new AttributeDesignatorType();
+			designatorDummy2.setAttributeId("dummyId");
+			matchDummy2.setAttributeDesignator(designatorDummy2);
+			
+			allRiskLevel.getMatch().add(matchDummy2);
+			
+			anyRiskLevel.getAllOf().add(allRiskLevel);
+			target.getAnyOf().add(anyRiskLevel);
+			
+			policyType.setTarget(target);
+			
+			restAdapter.setPolicyData(policyType);
+			
+			controller.prePopulateDCAEMSPolicyData(restAdapter, entity);
+			
+			logger.error("restAdapter.getRiskType() : " + restAdapter.getRiskType());
+			logger.error("restAdapter.getRiskLevel() : " + restAdapter.getRiskLevel());
+			logger.error("restAdapter.getGuard() : " + restAdapter.getGuard());
+			
+			assertEquals("True", restAdapter.getGuard());
+			assertEquals("3", restAdapter.getRiskLevel());
+			assertEquals("test", restAdapter.getRiskType());
+			
+		} catch (Exception e) {
+			logger.error("testPrePopulateDCAEMSPolicyData", e);
+			fail("testPrePopulateDCAEMSPolicyData failed due to: " + e);
+		} 
+		
+		logger.debug("testPrePopulateDCAEMSPolicyData: exit");
+		
+	}
+
+	/**
+	 * Run the Map<String,String> convert(String, String) method test
+	 */
+	
+	@Test
+	public void testConvert(){
+		logger.debug("testConvert: enter");
+		
+	    String str = "k1=v1,k2=v2,k3=v3";
+		String split = ",";
+		Map<String,String> result = CreateDcaeMicroServiceController.convert(str, split);		
+		assertTrue(result != null && result.size() == 3);
+		
+		logger.debug("testConvert: exit");
+	}
+	
+	/**
+	 * Run the Map<String,String> convertMap(Map<String,String>,
+	 * Map<String,String>) method test
+	 */
+	
+	@Test
+	public void testConvertMap(){
+		logger.debug("testConvertMap: enter");
+		
+		CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController();
+		Map<String,String> attributesMap = new HashMap<String, String>();
+		Map<String,String> attributesRefMap = new HashMap<String, String>();
+		Map<String,String> attributesListRefMap  = controller.getAttributesListRefMap();
+		Map<String, LinkedList<String>> arrayTextList = controller.getArrayTextList();
+		LinkedList<String> list = new LinkedList<String>();
+		 
+		attributesMap.put("keyOne", "valueOne");
+		attributesMap.put("keyTwo", "valueTwo");
+		attributesMap.put("keyThree", "valueThree");
+		
+		attributesRefMap.put("key4", "value4");
+		attributesRefMap.put("key5", "value5");
+		attributesRefMap.put("key6", "value6");
+		
+		attributesListRefMap.put("key7", "value7");
+		
+		list.add("l1");
+		list.add("l2");
+		arrayTextList.put("key8", list);
+		
+		Map<String,String> result = controller.convertMap(attributesMap, attributesRefMap);
+		
+		assertTrue(result != null && result.size() == 8);
+		
+		assertTrue(arrayTextList.get("key8").toString().contains("[l1, l2]"));
+		
+		logger.debug("testConvertMap: exit");
+	}
+	
+	/**
+	 * Run the void SetMSModelData(HttpServletRequest, HttpServletResponse)
+	 * method test
+	 */
+	
+	//Ignore it for now due to Stream ended unexpectedly 
+	//@Ignore
+	@Test
+	public void testSetMSModelData() {		
+		
+		logger.debug("testSetMSModelData: enter");
+		
+		CreateDcaeMicroServiceController controller = new CreateDcaeMicroServiceController();
+		
+	    MockHttpServletResponse response = new MockHttpServletResponse();
+
+	    HttpServletRequest request = createMock(HttpServletRequest.class);
+	    expect(request.getContentType()).andReturn("multipart/form-data; boundary=----WebKitFormBoundaryWcRUaIbC8kXgjr3p");
+	    expect(request.getMethod()).andReturn("post");
+	    expect(request.getHeader("Content-length")).andReturn("7809");
+	    
+	    expect(request.getContentLength()).andReturn(7809);
+
+	    try {
+	    	// value of fileName needs to be matched to your local directory
+	    	String fileName = "";
+	    	try {
+				ClassLoader classLoader = getClass().getClassLoader();
+				fileName = new File(classLoader.getResource("schedulerPolicies1707.xmi").getFile()).getAbsolutePath();
+			} catch (Exception e1) {
+				logger.error("Exception Occured while loading file"+e1);
+			}
+			expect(request.getInputStream()).andReturn(new MockServletInputStream(fileName));	    
+		    expect(request.getCharacterEncoding()).andReturn("UTF-8");
+		    expect(request.getContentLength()).andReturn(1024);
+		    replay(request);
+
+			controller.SetMSModelData(request, response);
+			
+		} catch (Exception e) {
+			logger.error("testSetMSModelData" + e);
+			e.printStackTrace();
+		}
+	    
+		//assertTrue(false);
+		
+		logger.debug("testSetMSModelData: exit");
+	}
+
+	/**
+	 * 
+	 * @ Get File Stream
+	 *
+	 */
+	private class MockServletInputStream extends ServletInputStream {
+
+		InputStream fis = null;
+		public MockServletInputStream(String fileName) {
+			try {
+				fis = new FileInputStream(fileName);
+			} catch (Exception genExe) {
+				genExe.printStackTrace();
+			}
+		}
+		@Override
+		public int read() throws IOException {
+			if(fis.available() > 0) {
+				return fis.read();
+			}
+			return 0;
+		}
+
+		@Override
+		public int read(byte[] bytes, int len, int size) throws IOException {
+			if(fis.available() > 0) {
+				int length = fis.read(bytes, len, size);
+				return length;
+			}
+			return -1;
+		}
+		@Override
+		public boolean isFinished() {
+			return false;
+		}
+		@Override
+		public boolean isReady() {
+			return false;
+		}
+		@Override
+		public void setReadListener(ReadListener arg0) {
+
+		}
+	}	
+	
+}
\ No newline at end of file
diff --git a/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/PDPControllerTest.java b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/PDPControllerTest.java
new file mode 100644
index 0000000..a27ad4b
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/PDPControllerTest.java
@@ -0,0 +1,98 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP 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.openecomp.policy.controller;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.model.Roles;
+import org.openecomp.policy.xacml.api.pap.EcompPDPGroup;
+import org.openecomp.policy.xacml.std.pap.StdPDPGroup;
+import org.openecomp.policy.xacml.std.pap.StdPDPGroupStatus;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+
+
+public class PDPControllerTest extends Mockito{
+
+	private static Logger logger = FlexLogger.getLogger(PDPControllerTest.class);
+	private Set<EcompPDPGroup> groupsData;
+	private Set<StdPDPGroup> groups;
+	private static List<Object> rolesdata;
+	
+	@Before
+	public void setUp() throws Exception{
+		logger.info("setUp: Entering");
+		rolesdata = new ArrayList<>();
+		Roles roles = new Roles();
+		roles.setLoginId("Test");
+		roles.setRole("super-admin");
+		Roles roles1 = new Roles();
+		roles1.setLoginId("Test");
+		roles1.setRole("admin");
+		roles1.setScope("['com','Test']");
+		rolesdata.add(roles);
+		rolesdata.add(roles1);
+		
+		groups = new HashSet<>();
+		StdPDPGroup group = new StdPDPGroup();
+		group.setId("default");
+		group.setDefault(true);
+		group.setName("default");
+		group.setDescription("The default group where new PDP's are put.");
+		group.setStatus(new StdPDPGroupStatus());
+		groups.add(group);
+		groupsData = new HashSet<>();
+		for (EcompPDPGroup g : this.groups) {
+			groupsData.add(g);
+		}
+	}
+	
+	@Test
+	public void testPDPGroupData(){
+		HttpServletRequest request = mock(HttpServletRequest.class);       
+		MockHttpServletResponse response =  new MockHttpServletResponse();
+        PolicyController controller = mock(PolicyController.class);
+        PDPController pdpController = new PDPController();
+        pdpController.setJunit(true);;
+        pdpController.setPolicyController(controller);
+        pdpController.setGroupsData(groupsData);
+        when(controller.getRoles("Test")).thenReturn(rolesdata);
+        pdpController.getPDPGroupEntityData(request, response);
+        try {
+			assertTrue(response.getContentAsString() != null && response.getContentAsString().contains("data"));
+		} catch (UnsupportedEncodingException e) {
+			logger.error("Exception Occured"+e);
+		}
+	}
+
+}
diff --git a/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/PolicyControllerTest.java b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/PolicyControllerTest.java
new file mode 100644
index 0000000..73f8d75
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/java/org/openecomp/policy/controller/PolicyControllerTest.java
@@ -0,0 +1,66 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ECOMP 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.openecomp.policy.controller;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
+import org.openecomp.policy.common.logging.flexlogger.Logger;
+import org.openecomp.policy.rest.dao.CommonClassDao;
+import org.openecomp.policy.rest.jpa.PolicyEntity;
+
+public class PolicyControllerTest {
+
+	private static Logger logger = FlexLogger.getLogger(PolicyControllerTest.class);
+	private static CommonClassDao commonClassDao;
+	
+	@Before
+	public void setUp() throws Exception{
+		logger.info("setUp: Entering");
+        commonClassDao = mock(CommonClassDao.class);
+        List<Object> data = new ArrayList<>();
+        String policyData = "";
+        try {
+			ClassLoader classLoader = getClass().getClassLoader();
+			policyData = IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml"));
+		} catch (Exception e1) {
+			e1.printStackTrace();
+		}
+        PolicyEntity entity = new PolicyEntity();
+        entity.setPolicyName("Config_SampleTest.1.xml");
+        entity.setPolicyData(policyData);
+        entity.setScope("com");
+        data.add(entity);
+        
+        when(commonClassDao.getDataByQuery("FROM PolicyEntity where policyName = 'Config_SampleTest1206.1.xml' and scope ='com'")).thenReturn(data);
+	}
+	
+	@Test
+	public void dummy(){
+		System.out.println("Dummy");
+	}
+}
diff --git a/POLICY-SDK-APP/src/test/resources/Config_SampleTest1206.1.xml b/POLICY-SDK-APP/src/test/resources/Config_SampleTest1206.1.xml
new file mode 100644
index 0000000..5c32cd4
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/resources/Config_SampleTest1206.1.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:0b67998b-57e2-4e25-9ea9-f9154bf18df1" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
+    <Description>SampleTest1206@CreatedBy:test@CreatedBy:@ModifiedBy:test@ModifiedBy:</Description>
+    <Target>
+        <AnyOf>
+            <AllOf>
+                <Match MatchId="org.openecomp.function.regex-match">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_SampleTest1206.1.xml</AttributeValue>
+                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                </Match>
+            </AllOf>
+            <AllOf>
+                <Match MatchId="org.openecomp.function.regex-match">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">success</AttributeValue>
+                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ECOMPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                </Match>
+                <Match MatchId="org.openecomp.function.regex-match">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">PROD</AttributeValue>
+                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                </Match>
+                <Match MatchId="org.openecomp.function.regex-match">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
+                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                </Match>
+                <Match MatchId="org.openecomp.function.regex-match">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">True</AttributeValue>
+                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                </Match>
+                <Match MatchId="org.openecomp.function.regex-match">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
+                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                </Match>
+                <Match MatchId="org.openecomp.function.regex-match">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleTest1206</AttributeValue>
+                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                </Match>
+            </AllOf>
+        </AnyOf>
+    </Target>
+    <Rule RuleId="urn:com:xacml:rule:id:7e46d503-af54-4ea5-a86c-9eb6dd1f4f43" Effect="Permit">
+        <Target>
+            <AnyOf>
+                <AllOf>
+                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
+                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
+                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                    </Match>
+                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
+                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
+                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
+                    </Match>
+                </AllOf>
+            </AnyOf>
+        </Target>
+        <AdviceExpressions>
+            <AdviceExpression AdviceId="configID" AppliesTo="Permit">
+                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_SampleTest1206.1.txt</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_SampleTest1206.1.xml</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="matching:ECOMPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">success</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleTest1206</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">PROD</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">True</AttributeValue>
+                </AttributeAssignmentExpression>
+                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
+                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
+                </AttributeAssignmentExpression>
+            </AdviceExpression>
+        </AdviceExpressions>
+    </Rule>
+</Policy>
diff --git a/POLICY-SDK-APP/src/test/resources/logback.xml b/POLICY-SDK-APP/src/test/resources/logback.xml
new file mode 100644
index 0000000..b119a4e
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/resources/logback.xml
@@ -0,0 +1,254 @@
+<!--
+  ============LICENSE_START=======================================================
+  ECOMP-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=========================================================
+  -->
+
+<configuration scan="true" scanPeriod="3 seconds" debug="true">
+  <!--<jmxConfigurator /> -->
+  <!-- directory path for all other type logs -->
+  <property name="logDir" value="logs" />
+  
+  <!-- directory path for debugging type logs -->
+  <property name="debugDir" value="logs" />
+  
+  <!--  specify the component name 
+    <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC"  -->
+  <property name="componentName" value="Policy"></property>
+  <property name="subComponentName" value="XACML-PAP-REST"></property>
+  
+  <!--  log file names -->
+  <property name="errorLogName" value="error" />
+  <property name="metricsLogName" value="metrics" />
+  <property name="auditLogName" value="audit" />
+  <property name="debugLogName" value="debug" />
+  
+  
+      <!-- modified time stamp format -->
+ 
+   <!--    A U D I T 
+           <property name="defaultAuditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+           <property name="defaultAuditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{ElapsedTime}|%X{server}|%X{clientIpAddress}|%c||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+   -->
+   <property name="defaultAuditPattern" value="%X{TransactionBeginTimestamp}|%X{TransactionEndTimestamp}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{TransactionElapsedTime}|%X{server}|%X{clientIpAddress}|%c||%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+  
+  
+  
+   <!--    M E T R I C 
+          <property name="defaultMetricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+   -->
+   <property name="defaultMetricPattern" value="%X{MetricBeginTimestamp}|%X{MetricEndTimestamp}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%p|%X{severity}|%X{serverIpAddress}|%X{MetricElapsedTime}|%X{server}|%X{clientIpAddress}|%c||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+  
+  
+     
+   
+   <!--   E R R O R
+          <property name="defaultErrorPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ErrorCategory}|%X{ErrorCode}|%X{ErrorDesciption}|%msg%n" />
+   -->
+   <property name="defaultErrorPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%X{requestId}|%t|%X{serviceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ErrorCategory}|%X{ErrorCode}|%X{ErrorDesciption}|%msg%n" />
+  
+  
+  
+   <!--   D E B U G
+          <property name="debugLoggerPatternOld" value="%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|[%caller{3}]|%msg%n" />
+          <property name="debugLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}||%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" /> -->
+   -->
+   <property name="debugLoggerPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%X{RequestId}|%msg%n" />  
+   
+ 
+   
+   <!--   D E F A U L T 
+          <property name="defaultPatternOld" value="%d{MM/dd-HH:mm:ss.SSS}|%logger|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}|%msg%n" />
+          <property name="defaultPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
+   -->
+   <property name="defaultPattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{server}|%X{clientIpAddress}|%c||%msg%n" />
+   
+ 
+ 
+   <!--   P A T H
+          <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" />
+          <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" />
+
+   -->   
+   <property name="logDirectory" value="${catalina.base}/${logDir}/${componentName}/${subComponentName}" />
+   <property name="debugLogDirectory" value="${catalina.base}/${debugDir}/${componentName}/${subComponentName}" />
+   
+
+ 
+ 
+  <!-- Example evaluator filter applied against console appender -->
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <!-- ============================================================================ -->
+  <!-- EELF Appenders -->
+  <!-- ============================================================================ -->
+
+  <!-- The EELFAppender is used to record events to the general application 
+    log -->
+        
+  <!-- EELF Audit Appender. This appender is used to record audit engine 
+    related logging events. The audit logger and appender are specializations 
+    of the EELF application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+    
+  <appender name="EELFAudit"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${auditLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${auditLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+         <pattern>${defaultAuditPattern}</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFAudit" />
+  </appender>
+
+
+
+
+<appender name="EELFMetrics"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${metricsLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${metricsLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>${defaultMetricPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFMetrics"/>
+  </appender>
+
+
+
+   
+  <appender name="EELFError"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${errorLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${errorLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+     <level>ERROR</level>
+     </filter>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${defaultErrorPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFError"/>
+  </appender>
+
+
+  
+  <appender name="EELFDebug"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${debugLogDirectory}/${debugLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${debugLogDirectory}/${debugLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+     <level>INFO</level>
+     </filter>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${debugLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFDebug" />
+    <includeCallerData>true</includeCallerData>
+  </appender>
+ 
+  
+  <!-- ============================================================================ -->
+  <!--  EELF loggers -->
+  <!-- ============================================================================ -->
+ 
+  <logger name="com.att.eelf.audit" level="info" additivity="false">
+    <appender-ref ref="asyncEELFAudit" />
+  </logger>
+  
+  <logger name="com.att.eelf.metrics" level="info" additivity="false">
+        <appender-ref ref="asyncEELFMetrics" />
+  </logger>
+ 
+    <logger name="com.att.eelf.error" level="error" additivity="false">
+  <appender-ref ref="asyncEELFError" />
+  </logger>
+  
+   <logger name="com.att.eelf.debug" level="info" additivity="false">
+        <appender-ref ref="asyncEELFDebug" />
+  </logger>
+  
+  
+  
+  <root level="INFO">
+        <appender-ref ref="asyncEELFDebug" />
+        <appender-ref ref="asyncEELFError" />
+  </root>
+
+</configuration>
diff --git a/POLICY-SDK-APP/src/test/resources/policy_tosca_tca_v1707.yml b/POLICY-SDK-APP/src/test/resources/policy_tosca_tca_v1707.yml
new file mode 100644
index 0000000..0c30cee
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/resources/policy_tosca_tca_v1707.yml
@@ -0,0 +1,65 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+
+node_types: 
+    # policy root node
+    policy.nodes.Root:
+        derived_from: tosca.nodes.Root
+        properties:
+            policyName:
+                type: string
+                required: true
+            policyVersion:
+                type: string
+                required: true
+            policyScope:
+                type: string
+                required: true
+            policyDescription:
+                type: string
+                required: false
+
+    # virtual policy node for string matcher
+    policy.nodes.tca:
+        derived_from: policy.nodes.Root
+        properties:
+            functionalRole:
+                type: string
+                required: true
+                default: "ClosedLoop_F5-d925ed73-8231-4d02-9545-db4e101f88f8" 
+            policyName:
+                type: string
+                required: true
+                default: "configuration.dcae.microservice.tca.xml"
+            policyVersion:
+                type: string
+                required: true
+                default: "v0.0.1"
+            threshholds:
+                type: list
+                entry_schema:
+                    - type:policy.data.Threshold                    
+            
+data_types:
+    policy.data.Threshold:
+        derived_from: tosca.nodes.Root
+        properties:
+            closedLoopControlName:
+                type: string
+                required: true
+            version:
+                type: string
+                required: true
+                default: "1.0.2"
+            fieldPath:
+                type: string
+                required: true
+            thresholdValue:
+                type: integer
+                required: true
+            direction:
+                type: string
+                required: true
+            severity:
+                type: string
+                required: true
+            
diff --git a/POLICY-SDK-APP/src/test/resources/schedulerPolicies1707.xmi b/POLICY-SDK-APP/src/test/resources/schedulerPolicies1707.xmi
new file mode 100644
index 0000000..22afa23
--- /dev/null
+++ b/POLICY-SDK-APP/src/test/resources/schedulerPolicies1707.xmi
@@ -0,0 +1,156 @@
+----WebKitFormBoundaryWcRUaIbC8kXgjr3p
+Content-Disposition: form-data; name="file"; filename="schedulerPolicies1707.xmi"
+
+<?xml version="1.0" encoding="ASCII"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="scheduler" nsURI="org.ecomp.test.scheduler" nsPrefix="scheduler">
+  <eAnnotations source="http://www.eclipse.org/emf/2011/Xcore">
+    <details key="ecomp" value="http://ecomp.org.com"/>
+    <details key="policy" value="http://ecomp.org.com/policy"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="TimeLimitAndVerticalTopology" eSuperTypes="//SniroPolicyMetaInfo">
+    <eAnnotations source="http://ecomp.org.com/policy">
+      <details key="policyTemplate" value="SNIRO-SCHEDULER"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" unique="false" eType="//TimeLimitNVerticalTopologyType">
+      <eAnnotations source="http://ecomp.org.com/policy">
+        <details key="matching" value="true"/>
+      </eAnnotations>
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="serviceType" unique="false">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+      <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nodeType" unique="false" upperBound="-1" eType="//EntityType">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="conflictScope" unique="false" eType="//ConflictScope">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="timeSchedule" eType="//TimeSchedule" containment="true" resolveProxies="false">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TimeSchedule">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="allowedPeriodicTime" upperBound="-1" eType="//AllowedPeriodicTime" containment="true" resolveProxies="false">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TimeRange">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_time" unique="false">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+      <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_time" unique="false">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+      <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AllowedPeriodicTime">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="day" unique="false" eType="//DayType">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="timeRange" upperBound="-1" eType="//TimeRange" containment="true" resolveProxies="false">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SniroPolicyMetaInfo">
+    <eAnnotations source="http://ecomp.org.com/policy">
+      <details key="policyTemplate" value="SNIRO"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="identity" unique="false">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+      <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="policyScope" eType="//Scope" containment="true" resolveProxies="false">
+      <eAnnotations source="http://ecomp.org.com/policy">
+        <details key="matching" value="true"/>
+      </eAnnotations>
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Scope">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="serviceType" unique="false" upperBound="-1" eType="//ServiceType">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="entityType" unique="false" upperBound="-1" eType="//EntityType">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="aicZone" unique="false" upperBound="-1">
+      <eAnnotations source="http://ecomp.org.com">
+        <details key="type" value="configuration"/>
+      </eAnnotations>
+      <eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="WorkflowType">
+    <eLiterals name="softwareDownload" value="1"/>
+    <eLiterals name="softwareUpgrade" value="2"/>
+    <eLiterals name="configurationChange" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ServiceType">
+    <eLiterals name="networkOnDemand" value="1"/>
+    <eLiterals name="changeManagement" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ConflictScope">
+    <eLiterals name="vnf" value="1"/>
+    <eLiterals name="vnf_pserver" value="2"/>
+    <eLiterals name="vnf_zone" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="EntityType">
+    <eLiterals name="vnf" value="1"/>
+    <eLiterals name="pServer" value="2"/>
+    <eLiterals name="vServer" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="DayType">
+    <eLiterals name="weekday" value="1"/>
+    <eLiterals name="weekend" value="2"/>
+    <eLiterals name="holiday" value="3"/>
+    <eLiterals name="mon" value="4"/>
+    <eLiterals name="tue" value="5"/>
+    <eLiterals name="wed" value="6"/>
+    <eLiterals name="thu" value="7"/>
+    <eLiterals name="fri" value="8"/>
+    <eLiterals name="sat" value="9"/>
+    <eLiterals name="sun" value="10"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TimeLimitNVerticalTopologyType">
+    <eLiterals name="timeLimitAndVerticalTopology"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="UUID" instanceClassName="java.util.UUID"/>
+</ecore:EPackage>
+
+------WebKitFormBoundaryWcRUaIbC8kXgjr3p
+Content-Disposition: form-data; name="file"; filename="schedulerPolicies1707.xmi"
+Content-Type: application/octet-stream
+
+
+------WebKitFormBoundaryWcRUaIbC8kXgjr3p--
\ No newline at end of file