diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java
index 83a82f9..aa41429 100644
--- a/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java
+++ b/ONAP-REST/src/test/java/org/onap/policy/rest/util/MSModelUtilsTest.java
@@ -22,6 +22,7 @@
 import static org.junit.Assert.*;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -30,10 +31,12 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.junit.Test;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.rest.util.MSModelUtils.MODEL_TYPE;
 
 public class MSModelUtilsTest {
-	
+	private static Logger logger = FlexLogger.getLogger(MSModelUtilsTest.class);	
 	@Test
 	public void testMSModelUtils(){
 		HashMap<String, MSAttributeObject> classMap = new HashMap<>();
@@ -49,4 +52,84 @@
 		String subAttribute = utils.createSubAttributes(dependency, classMap, "StandardDeviationThreshold");
 		assertTrue(subAttribute != null);
 	}
-}
+	
+	
+	/**
+	 * Run the void stringBetweenDots(String, String) method test
+	 */
+	
+	 @Test
+	public void testStringBetweenDots() {
+
+		//expect: uniqueKeys should contain a string value 
+		 MSModelUtils controllerA = new MSModelUtils();
+		String str = "testing\\.byCorrectWay\\.OfDATA";
+		assertEquals(1, controllerA.stringBetweenDots(str));
+		
+		//expect: uniqueKeys should not contain a string value 
+		str = "testing\byWrongtWay.\\OfDATA";
+		MSModelUtils controllerB = new MSModelUtils();
+	    assertEquals(0, controllerB.stringBetweenDots(str));
+	}
+
+	/**
+	 * Run the Map<String,String> load(String) method test
+	 */
+	
+	@Test
+	public void testLoad() {
+		
+		boolean isLocalTesting = true;
+		MSModelUtils controller = new MSModelUtils();
+		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);
+		}
+		
+		MSModelUtils controller = new MSModelUtils();
+        if(isLocalTesting){
+			try {
+			    controller.parseTosca(fileName);
+			}catch (Exception e) {
+				fail("parseTosca caused error: " + e);
+			}
+        }
+		logger.debug("testParseTosca: exit");
+	}
+
+}
\ No newline at end of file
diff --git a/POLICY-SDK-APP/src/test/resources/policy_tosca_tca_v1707.yml b/ONAP-REST/src/test/resources/policy_tosca_tca-v1707.yml
similarity index 100%
copy from POLICY-SDK-APP/src/test/resources/policy_tosca_tca_v1707.yml
copy to ONAP-REST/src/test/resources/policy_tosca_tca-v1707.yml
diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java
index 4ae1344..a45bfed 100644
--- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java
+++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateOptimizationController.java
@@ -97,10 +97,6 @@
 		return commonClassDao;
 	}
 
-	public static void setCommonClassDao(CommonClassDao commonClassDao) {
-		CreateOptimizationController.commonClassDao = commonClassDao;
-	}
-
 	private OptimizationModels newModel;
 	private String newFile;
 	private String directory;
@@ -130,6 +126,10 @@
 	
 	@Autowired
 	private CreateOptimizationController(CommonClassDao commonClassDao){
+		setCommonClassDao(commonClassDao);
+	}
+	
+	public static void setCommonClassDao(CommonClassDao commonClassDao) {
 		CreateOptimizationController.commonClassDao = commonClassDao;
 	}
 
@@ -595,7 +595,7 @@
 	}
 	
 	@RequestMapping(value={"/oof_dictionary/set_ModelData"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
-	public void SetModelData(HttpServletRequest request, HttpServletResponse response) throws IOException, FileUploadException{
+	public void setModelData(HttpServletRequest request, HttpServletResponse response) throws IOException, FileUploadException{
 		modelList = new ArrayList<>();
 		dirDependencyList = new ArrayList<>();
 		classMap = new LinkedHashMap<>();
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/OptimizationPolicyController.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/OptimizationPolicyController.js
index e499c9f..cbd011f 100644
--- a/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/OptimizationPolicyController.js
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/policy-models/Editor/PolicyTemplateController/OptimizationPolicyController.js
@@ -73,7 +73,7 @@
 		console.log("failed");
 	});
 
-	PolicyAppService.getData('get_PriorityValues').then(function (data) {
+	PolicyAppService.getData('get_DCAEPriorityValues').then(function (data) {
 		var j = data;
 		$scope.data = JSON.parse(j.data);
 		console.log($scope.data);
diff --git a/POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateOptimizationControllerTest.java b/POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateOptimizationControllerTest.java
index af573c6..35395a8 100644
--- a/POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateOptimizationControllerTest.java
+++ b/POLICY-SDK-APP/src/test/java/org/onap/policy/controller/CreateOptimizationControllerTest.java
@@ -386,8 +386,10 @@
 	public void testSetModelData() {		
 		
 		logger.debug("testSetModelData: enter");
-
+		
+		CreateOptimizationController controller = new CreateOptimizationController();
 	    HttpServletRequest request = createMock(HttpServletRequest.class);
+		MockHttpServletResponse response =  new MockHttpServletResponse();
 	    expect(request.getContentType()).andReturn("multipart/form-data; boundary=----WebKitFormBoundaryWcRUaIbC8kXgjr3p");
 	    expect(request.getMethod()).andReturn("post");
 	    expect(request.getHeader("Content-length")).andReturn("7809");
@@ -407,12 +409,14 @@
 		    expect(request.getCharacterEncoding()).andReturn("UTF-8");
 		    expect(request.getContentLength()).andReturn(1024);
 		    replay(request);
-			
+		    controller.setModelData(request, response);
+
 		} catch (Exception e) {
 			logger.error("testSetModelData" + e);
 			e.printStackTrace();
 		}
 	    		
+	    
 		logger.debug("testSetModelData: exit");
 	}
 
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
similarity index 100%
rename from POLICY-SDK-APP/src/test/resources/policy_tosca_tca_v1707.yml
rename to POLICY-SDK-APP/src/test/resources/policy_tosca_tca-v1707.yml
diff --git a/packages/base/src/files/install/mysql/data/180601_upgrade_script.sql b/packages/base/src/files/install/mysql/data/180601_upgrade_script.sql
index 070feee..1b1fb76 100644
--- a/packages/base/src/files/install/mysql/data/180601_upgrade_script.sql
+++ b/packages/base/src/files/install/mysql/data/180601_upgrade_script.sql
@@ -51,3 +51,6 @@
 
 ALTER TABLE `onap_sdk`.`microservicemodels` 
 ADD COLUMN `dataOrderInfo` VARCHAR(2000) NULL DEFAULT 'Null' AFTER `enumValues`;
+
+INSERT INTO `onap_sdk`.`optimizationmodels` (`modelname`, `description`, `dependency`, `imported_by`, `attributes`, `ref_attributes`, `sub_attributes`, `version`, `annotation`, `enumValues`, `dataOrderInfo`) VALUES ('hpaPolicy', 'CSIT Tests Model', '[]', 'demo', 'identity=string:defaultValue-null:required-true:MANY-false,resources=string:defaultValue-null:required-true:MANY-false', 'policyScope=MANY-true,policyType=POLICYTYPE:MANY-false,flavorFeatures=flavorFeatures-properties:MANY-true', '{\"flavorProperties-properties\":{\"score\":\"string:defaultValue-null:required-true:MANY-false\",\"featureAttributes\":\"featureAttributes-properties:required-false:MANY-true\",\"mandatory\":\"string:defaultValue-null:required-true:MANY-false\",\"hpaFeature\":\"string:defaultValue-null:required-true:MANY-false\",\"architecture\":\"string:defaultValue-null:required-true:MANY-false\"},\"flavorFeatures-properties\":{\"flavorProperties\":\"flavorProperties-properties:required-false:MANY-true\",\"flavorLabel\":\"string:defaultValue-null:required-true:MANY-false\"},\"featureAttributes-properties\":{\"unit\":\"string:defaultValue-null:required-true:MANY-false\",\"attribute\":\"string:defaultValue-null:required-true:MANY-false\",\"value\":\"string:defaultValue-null:required-true:MANY-false\",\"operator\":\"OPERATOR:required-true:MANY-false\"}}\n', 'CSIT', 'policyScope=matching-true', 'OPERATOR=[<,<equal-sign,>,>equal-sign,equal-sign,!equal-sign,any,all,subset,], POLICYTYPE=[hpaPolicy,]', '\"[resources,identity,policyScope,policyType,flavorFeatures,flavorLabel,flavorProperties,architecture,hpaFeature,mandatory,score,featureAttributes,attribute,operator,unit,value]\"');
+
