[MSO-8] Second step of the rebase for MSO

Second rebase containing additional features for MSO + total reworking
of the BPMN structure + Notification flow can now be added at the end of
some BPMN flows

Change-Id: I7e937c7a0ba1593ca85e164a093f79c7e38b6ce0
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
diff --git a/mso-api-handlers/mso-api-handler-infra/WebContent/WEB-INF/web.xml b/mso-api-handlers/mso-api-handler-infra/WebContent/WEB-INF/web.xml
index e34740d..fa80b9e 100644
--- a/mso-api-handlers/mso-api-handler-infra/WebContent/WEB-INF/web.xml
+++ b/mso-api-handlers/mso-api-handler-infra/WebContent/WEB-INF/web.xml
@@ -2,20 +2,20 @@
 

 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

   <display-name>MSO API Handler Infra</display-name>

- 

- 

+

+

    <context-param>

 	<param-name>resteasy.jndi.resources</param-name>

 	<param-value>java:module/MsoPropertiesFactory</param-value>

    </context-param>

- 

+

    <!-- enable the Asynchronous Job Service -->

     <context-param>

         <param-name>resteasy.async.job.service.enabled</param-name>

         <param-value>true</param-value>

     </context-param>

 

-    <!-- The next context parameters are all optional.  

+    <!-- The next context parameters are all optional.

          Their default values are shown as example param-values -->

 

     <!-- How many jobs results can be held in memory at once? -->

@@ -45,8 +45,8 @@
     <param-name>resteasy.scan</param-name>

     <param-value>true</param-value>

   </context-param>

- 

-  <!--  

+

+  <!--

   <context-param>

     <param-name>resteasy.servlet.mapping.prefix</param-name>

     <param-value>/v1</param-value>

@@ -56,17 +56,17 @@
   	<param-name>log.configuration</param-name>

   	<param-value>logback.apihandler-infra.xml</param-value>

   </context-param>

-  

+

   <context-param>

   	<param-name>mso.configuration</param-name>

   	<param-value>MSO_PROP_APIHANDLER_INFRA=mso.apihandler-infra.properties,MSO_PROP_TOPOLOGY=topology.properties</param-value>

   </context-param>

-  

+

   <context-param>

     <param-name>resteasy.resources</param-name>

     <param-value>org.openecomp.mso.logger.MsoLoggingServlet</param-value>

   </context-param>

-  

+

   <listener>

     <listener-class>

 			org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap

@@ -105,6 +105,19 @@
             <role-name>SiteControl-Client</role-name>

         </auth-constraint>

     </security-constraint>

+    <security-constraint>

+        <web-resource-collection>

+            <web-resource-name>MSO internal Requests</web-resource-name>

+            <description>Internal Requests</description>

+            <url-pattern>/logging/*</url-pattern>

+            <url-pattern>/properties/*</url-pattern>

+            <http-method>POST</http-method>

+            <http-method>GET</http-method>

+        </web-resource-collection>

+        <auth-constraint>

+            <role-name>MSO-Client</role-name>

+        </auth-constraint>

+    </security-constraint>

    <security-constraint>

  	 <web-resource-collection>

       <web-resource-name>HTTPBasicAuth</web-resource-name>

@@ -117,7 +130,7 @@
        <role-name>InfraPortal-Client</role-name>

      </auth-constraint>

   </security-constraint>

- 

+

   <login-config>

   	<auth-method>BASIC</auth-method>

     <realm-name>ApplicationRealm</realm-name>

@@ -128,14 +141,17 @@
     <security-role>

         <role-name>SiteControl-Client</role-name>

     </security-role>

+    <security-role>

+        <role-name>MSO-Client</role-name>

+    </security-role>

 

     <filter>

 		<filter-name>LogFilter</filter-name>

-		<filter-class>org.openecomp.mso.logger.LogFilter</filter-class>	

+		<filter-class>org.openecomp.mso.logger.LogFilter</filter-class>

   </filter>

     <filter-mapping>

 		<filter-name>LogFilter</filter-name>

 		<url-pattern>/*</url-pattern>

 	</filter-mapping>

-  

+

 </web-app>

diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/Constants.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/Constants.java
index 12cfdb0..b3c8a95 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/Constants.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/Constants.java
@@ -1,50 +1,50 @@
-/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.apihandlerinfra;
-
-
-public class Constants {
-
-	public static final String VNF_TYPES_PATH = "/{version: v1|v2|v3}/vnf-types";
-	public static final String NETWORK_TYPES_PATH = "/{version: v1|v2|v3}/network-types";
-	public static final String VF_MODULE_MODEL_NAMES_PATH = "/{version: v2|v3}/vf-module-model-names";
-	public static final String REQUEST_ID_PATH = "/{request-id}";
-
-	public static final String STATUS_SUCCESS = "SUCCESS";
-
-	public static final String MODIFIED_BY_APIHANDLER = "APIH";
-
-	public static final String SCHEMA_VERSION_V1 = "v1";
-	public static final String SCHEMA_VERSION_V2 = "v2";
-	public static final String SCHEMA_VERSION_V3 = "v3";
-
-	public static final long PROGRESS_REQUEST_COMPLETED = 100L;
-	public static final long PROGRESS_REQUEST_RECEIVED = 0L;
-	public static final long PROGRESS_REQUEST_IN_PROGRESS = 20L;
-
-	public static final String VNF_TYPE_WILDCARD = "*";
-
-	public static final String VOLUME_GROUP_COMPONENT_TYPE = "VOLUME_GROUP";
-
-	public static final String VALID_INSTANCE_NAME_FORMAT = "^[a-zA-Z][a-zA-Z0-9._-]*$";
-
-	public static final String A_LA_CARTE = "aLaCarte";
+/*-

+ * ============LICENSE_START=======================================================

+ * OPENECOMP - MSO

+ * ================================================================================

+ * 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.mso.apihandlerinfra;

+

+

+public class Constants {

+

+	public static final String VNF_TYPES_PATH = "/{version: v1|v2|v3}/vnf-types";

+	public static final String NETWORK_TYPES_PATH = "/{version: v1|v2|v3}/network-types";

+	public static final String VF_MODULE_MODEL_NAMES_PATH = "/{version: v2|v3}/vf-module-model-names";

+	public static final String REQUEST_ID_PATH = "/{request-id}";

+

+	public static final String STATUS_SUCCESS = "SUCCESS";

+

+	public static final String MODIFIED_BY_APIHANDLER = "APIH";

+

+	public static final String SCHEMA_VERSION_V1 = "v1";

+	public static final String SCHEMA_VERSION_V2 = "v2";

+	public static final String SCHEMA_VERSION_V3 = "v3";

+

+	public static final long PROGRESS_REQUEST_COMPLETED = 100L;

+	public static final long PROGRESS_REQUEST_RECEIVED = 0L;

+	public static final long PROGRESS_REQUEST_IN_PROGRESS = 20L;

+

+	public static final String VNF_TYPE_WILDCARD = "*";

+

+	public static final String VOLUME_GROUP_COMPONENT_TYPE = "VOLUME_GROUP";

+

+	public static final String VALID_INSTANCE_NAME_FORMAT = "^[a-zA-Z][a-zA-Z0-9._-]*$";

+

+	public static final String A_LA_CARTE = "aLaCarte";

 }
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/ServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/ServiceInstances.java
index 3410cf4..317859d 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/ServiceInstances.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/ServiceInstances.java
@@ -85,7 +85,7 @@
 	@Path("/{serviceInstanceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response deleteServiceInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId, @PathParam("version") String version) {
+	public Response deleteServiceInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId) {
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		Response response = serviceInstances(request, Action.deleteInstance, instanceIdMap, version);
@@ -96,8 +96,8 @@
 	@Path("/{serviceInstanceId}/vnfs")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response createVnfInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId, @PathParam("version") String version) {
-
+	public Response createVnfInstance(String request,  @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId) {
+        msoLogger.debug ("version is: " + version);
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		Response response = serviceInstances(request, Action.createInstance, instanceIdMap, version);
 
@@ -108,9 +108,8 @@
 	@Path("/{serviceInstanceId}/vnfs/{vnfInstanceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response deleteVnfInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
-													  @PathParam("vnfInstanceId") String vnfInstanceId,
-                                                      @PathParam("version") String version) {
+	public Response deleteVnfInstance(String request,  @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
+													  @PathParam("vnfInstanceId") String vnfInstanceId) {
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		instanceIdMap.put("vnfInstanceId", vnfInstanceId);
@@ -123,10 +122,9 @@
 	@Path("/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response createVfModuleInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
-														   @PathParam("vnfInstanceId") String vnfInstanceId,
-                                                           @PathParam("version") String version) {
-
+	public Response createVfModuleInstance(String request,  @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
+														   @PathParam("vnfInstanceId") String vnfInstanceId) {
+        msoLogger.debug ("version is: " + version);
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		instanceIdMap.put("vnfInstanceId", vnfInstanceId);
 		Response response = serviceInstances(request, Action.createInstance, instanceIdMap, version);
@@ -138,10 +136,9 @@
 	@Path("/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response updateVfModuleInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
+	public Response updateVfModuleInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
 														   @PathParam("vnfInstanceId") String vnfInstanceId,
-														   @PathParam("vfmoduleInstanceId") String vfmoduleInstanceId,
-                                                           @PathParam("version") String version) {
+														   @PathParam("vfmoduleInstanceId") String vfmoduleInstanceId) {
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		instanceIdMap.put("vnfInstanceId", vnfInstanceId);
@@ -155,10 +152,9 @@
 	@Path("/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfmoduleInstanceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response deleteVfModuleInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
+	public Response deleteVfModuleInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
 																		@PathParam("vnfInstanceId") String vnfInstanceId,
-																		@PathParam("vfmoduleInstanceId") String vfmoduleInstanceId,
-                                                                        @PathParam("version") String version) {
+																		@PathParam("vfmoduleInstanceId") String vfmoduleInstanceId) {
 
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
@@ -174,9 +170,8 @@
 	@Path("/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response createVolumeGroupInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
-			                                                               @PathParam("vnfInstanceId") String vnfInstanceId,
-                                                                           @PathParam("version") String version) {
+	public Response createVolumeGroupInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
+			                                                               @PathParam("vnfInstanceId") String vnfInstanceId) {
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		instanceIdMap.put("vnfInstanceId", vnfInstanceId);
@@ -189,10 +184,9 @@
 	@Path("/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volumeGroupInstanceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response updateVolumeGroupInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
+	public Response updateVolumeGroupInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
 																		   @PathParam("vnfInstanceId") String vnfInstanceId,
-																		   @PathParam("volumeGroupInstanceId") String volumeGroupInstanceId,
-                                                                           @PathParam("version") String version) {
+																		   @PathParam("volumeGroupInstanceId") String volumeGroupInstanceId) {
 
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
@@ -207,10 +201,9 @@
 	@Path("/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volumeGroupInstanceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response deleteVolumeGroupInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
+	public Response deleteVolumeGroupInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
 																		   @PathParam("vnfInstanceId") String vnfInstanceId,
-																		   @PathParam("volumeGroupInstanceId") String volumeGroupInstanceId,
-                                                                           @PathParam("version") String version) {
+																		   @PathParam("volumeGroupInstanceId") String volumeGroupInstanceId) {
 
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
@@ -225,7 +218,7 @@
 	@Path("/{serviceInstanceId}/networks")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response createNetworkInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId, @PathParam("version") String version) {
+	public Response createNetworkInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId) {
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		Response response = serviceInstances(request, Action.createInstance, instanceIdMap, version);
@@ -237,9 +230,8 @@
 	@Path("/{serviceInstanceId}/networks/{networkInstanceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response updateNetworkInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
-																	   @PathParam("networkInstanceId") String networkInstanceId,
-                                                                       @PathParam("version") String version) {
+	public Response updateNetworkInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
+																	   @PathParam("networkInstanceId") String networkInstanceId) {
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		instanceIdMap.put("networkInstanceId", networkInstanceId);
@@ -252,9 +244,8 @@
 	@Path("/{serviceInstanceId}/networks/{networkInstanceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
-	public Response deleteNetworkInstance(String request, @PathParam("serviceInstanceId") String serviceInstanceId,
-																	   @PathParam("networkInstanceId") String networkInstanceId,
-                                                                       @PathParam("version") String version) {
+	public Response deleteNetworkInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
+																	   @PathParam("networkInstanceId") String networkInstanceId) {
 
 		instanceIdMap.put("serviceInstanceId", serviceInstanceId);
 		instanceIdMap.put("networkInstanceId", networkInstanceId);
@@ -367,11 +358,44 @@
 
 	   serviceResponse.setRequestReferences(referencesResponse);
 
-       try (CatalogDatabase db = new CatalogDatabase()){
+        CatalogDatabase db = null;
+        try {
+            db = new CatalogDatabase ();
+        } catch (Exception e) {
+            msoLogger.error (MessageEnum.APIH_DB_ACCESS_EXC, MSO_PROP_APIHANDLER_INFRA, "", "", MsoLogger.ErrorCode.AvailabilityError, "Exception while communciate with Catalog DB", e);
+            msoRequest.setStatus (org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+            Response response = msoRequest.buildServiceErrorResponse (HttpStatus.SC_NOT_FOUND,
+                    MsoException.ServiceException,
+                    "No communication to catalog DB " + e.getMessage (),
+                    ErrorNumbers.SVC_NO_SERVER_RESOURCES,
+                    null);
+            alarmLogger.sendAlarm ("MsoDatabaseAccessError",
+                    MsoAlarmLogger.CRITICAL,
+                    Messages.errors.get (ErrorNumbers.NO_COMMUNICATION_TO_CATALOG_DB));
+            msoRequest.createRequestRecord (Status.FAILED,action);
+            msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, "Exception while communciate with DB");
+            msoLogger.debug ("End of the transaction, the final response is: " + (String) response.getEntity ());
+            return response;
+        }
+
+
 
            RecipeLookupResult recipeLookupResult = null;
            try {
                recipeLookupResult = getServiceInstanceOrchestrationURI (db, msoRequest, action);
+           } catch (ValidationException e) {
+               msoLogger.debug ("Validation failed: ", e);
+               Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_REQUEST, MsoException.ServiceException,
+                       "Error validating request.  " + e.getMessage(),
+                       ErrorNumbers.SVC_BAD_PARAMETER, null);
+               if (msoRequest.getRequestId () != null) {
+                   msoLogger.debug ("Logging failed message to the database");
+                   msoRequest.createRequestRecord (Status.FAILED, action);
+               }
+               msoLogger.error (MessageEnum.APIH_REQUEST_VALIDATION_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "", MsoLogger.ErrorCode.SchemaError, requestJSON, e);
+               msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError, "Validation of the input request failed");
+               msoLogger.debug ("End of the transaction, the final response is: " + (String) response.getEntity ());
+               return response;
            } catch (Exception e) {
                msoLogger.error (MessageEnum.APIH_DB_ACCESS_EXC, MSO_PROP_APIHANDLER_INFRA, "", "", MsoLogger.ErrorCode.DataError, "Exception while querying Catalog DB", e);
                msoRequest.setStatus (org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
@@ -594,22 +618,6 @@
 
            //return Response.status (HttpStatus.SC_ACCEPTED).entity (serviceResponse).build ();
            // return serviceResponse;
-       } catch (Exception e) {
-           msoLogger.error (MessageEnum.APIH_DB_ACCESS_EXC, MSO_PROP_APIHANDLER_INFRA, "", "", MsoLogger.ErrorCode.AvailabilityError, "Exception while communciate with Catalog DB", e);
-           msoRequest.setStatus (org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
-           Response response = msoRequest.buildServiceErrorResponse (HttpStatus.SC_NOT_FOUND,
-					  											  MsoException.ServiceException,
-					                                              "No communication to catalog DB " + e.getMessage (),
-                                                                  ErrorNumbers.SVC_NO_SERVER_RESOURCES,
-                                                                  null);
-           alarmLogger.sendAlarm ("MsoDatabaseAccessError",
-                                  MsoAlarmLogger.CRITICAL,
-                                  Messages.errors.get (ErrorNumbers.NO_COMMUNICATION_TO_CATALOG_DB));
-           msoRequest.createRequestRecord (Status.FAILED,action);
-           msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, "Exception while communciate with DB");
-           msoLogger.debug ("End of the transaction, the final response is: " + (String) response.getEntity ());
-           return response;
-       }
 	}
 
     private RecipeLookupResult getServiceInstanceOrchestrationURI (CatalogDatabase db, MsoRequest msoRequest, Action action) throws Exception {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/CloudConfiguration.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/CloudConfiguration.java
index 777c945..c877751 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/CloudConfiguration.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/CloudConfiguration.java
@@ -1,96 +1,96 @@
-/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.apihandlerinfra.serviceinstancebeans;
-
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)
-public class CloudConfiguration {
-
-    protected String aicNodeClli;
-    protected String tenantId;
-    protected String lcpCloudRegionId;
-
-    /**
-     * Gets the value of the aicNodeClli property.
-     *
-     * @return
-     *     possible object is
-     *     {@link String }
-     *
-     */
-    public String getAicNodeClli() {
-        return aicNodeClli;
-    }
-
-    /**
-     * Sets the value of the aicNodeClli property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *
-     */
-    public void setAicNodeClli(String value) {
-        this.aicNodeClli = value;
-    }
-
-    /**
-     * Gets the value of the tenantId property.
-     *
-     * @return
-     *     possible object is
-     *     {@link String }
-     *
-     */
-    public String getTenantId() {
-        return tenantId;
-    }
-
-    /**
-     * Sets the value of the tenantId property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *
-     */
-    public void setTenantId(String value) {
-        this.tenantId = value;
-    }
-
-
-	public String getLcpCloudRegionId() {
-		return lcpCloudRegionId;
-	}
-
-	public void setLcpCloudRegionId(String lcpCloudRegionId) {
-		this.lcpCloudRegionId = lcpCloudRegionId;
-	}
-
-	@Override
-	public String toString() {
-		return "CloudConfiguration [aicNodeClli=" + aicNodeClli + ", tenantId="
-				+ tenantId + ", lcpCloudRegionId=" + lcpCloudRegionId + "]";
-	}
-
-
-}
+/*-

+ * ============LICENSE_START=======================================================

+ * OPENECOMP - MSO

+ * ================================================================================

+ * 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.mso.apihandlerinfra.serviceinstancebeans;

+

+import org.codehaus.jackson.map.annotate.JsonSerialize;

+

+@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)

+public class CloudConfiguration {

+

+    protected String aicNodeClli;

+    protected String tenantId;

+    protected String lcpCloudRegionId;

+

+    /**

+     * Gets the value of the aicNodeClli property.

+     *

+     * @return

+     *     possible object is

+     *     {@link String }

+     *

+     */

+    public String getAicNodeClli() {

+        return aicNodeClli;

+    }

+

+    /**

+     * Sets the value of the aicNodeClli property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *

+     */

+    public void setAicNodeClli(String value) {

+        this.aicNodeClli = value;

+    }

+

+    /**

+     * Gets the value of the tenantId property.

+     *

+     * @return

+     *     possible object is

+     *     {@link String }

+     *

+     */

+    public String getTenantId() {

+        return tenantId;

+    }

+

+    /**

+     * Sets the value of the tenantId property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *

+     */

+    public void setTenantId(String value) {

+        this.tenantId = value;

+    }

+

+

+	public String getLcpCloudRegionId() {

+		return lcpCloudRegionId;

+	}

+

+	public void setLcpCloudRegionId(String lcpCloudRegionId) {

+		this.lcpCloudRegionId = lcpCloudRegionId;

+	}

+

+	@Override

+	public String toString() {

+		return "CloudConfiguration [aicNodeClli=" + aicNodeClli + ", tenantId="

+				+ tenantId + ", lcpCloudRegionId=" + lcpCloudRegionId + "]";

+	}

+

+

+}

diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/ModelInfo.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/ModelInfo.java
index f542d63..5f1ea28 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/ModelInfo.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/ModelInfo.java
@@ -1,117 +1,117 @@
-/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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=========================================================
- */
-
-//
-// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.7
-// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
-// Any modifications to this file will be lost upon recompilation of the source schema.
-// Generated on: 2016.03.30 at 02:48:23 PM CDT
-//
-
-
-package org.openecomp.mso.apihandlerinfra.serviceinstancebeans;
-
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-import org.openecomp.mso.apihandlerinfra.ModelType;
-
-@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)
-public class ModelInfo {
-
-    protected String modelCustomizationName;
-    protected String modelInvariantId;
-	protected ModelType modelType;
-	//v2
-    protected String modelNameVersionId;
-    protected String modelName;
-    protected String modelVersion;
-    protected String modelCustomizationUuid;
-    //v3
-    protected String modelVersionId;
-    protected String modelCustomizationId;
-
-
-	public String getModelCustomizationName() {
-		return modelCustomizationName;
-	}
-	public void setModelCustomizationName(String modelCustomizationName) {
-		this.modelCustomizationName = modelCustomizationName;
-	}
-	public String getModelNameVersionId() {
-		return modelNameVersionId;
-	}
-	public void setModelNameVersionId(String modelNameVersionId) {
-		this.modelNameVersionId = modelNameVersionId;
-	}
-	public String getModelName() {
-		return modelName;
-	}
-	public void setModelName(String modelName) {
-		this.modelName = modelName;
-	}
-	public String getModelVersion() {
-		return modelVersion;
-	}
-	public void setModelVersion(String modelVersion) {
-		this.modelVersion = modelVersion;
-	}
-	public ModelType getModelType() {
-		return modelType;
-	}
-	public void setModelType(ModelType modelType) {
-		this.modelType = modelType;
-	}
-	public String getModelInvariantId() {
-		return modelInvariantId;
-	}
-	public void setModelInvariantId(String modelInvariantId) {
-		this.modelInvariantId = modelInvariantId;
-	}
-	public String getModelCustomizationUuid() {
-		return modelCustomizationUuid;
-	}
-	public void setModelCustomizationUuid(String modelCustomizationUuid) {
-		this.modelCustomizationUuid = modelCustomizationUuid;
-	}
-	public String getModelVersionId() {
-		return modelVersionId;
-	}
-	public void setModelVersionId(String modelVersionId) {
-		this.modelVersionId = modelVersionId;
-	}
-	public String getModelCustomizationId() {
-		return modelCustomizationId;
-	}
-	public void setModelCustomizationId(String modelCustomizationId) {
-		this.modelCustomizationId = modelCustomizationId;
-	}
-	@Override
-	public String toString() {
-		return "ModelInfo [modelCustomizationName=" + modelCustomizationName
-				+ ", modelInvariantId=" + modelInvariantId + ", modelType="
-				+ modelType + ", modelNameVersionId=" + modelNameVersionId
-				+ ", modelName=" + modelName + ", modelVersion=" + modelVersion
-				+ ", modelCustomizationUuid=" + modelCustomizationUuid
-				+ ", modelVersionId=" + modelVersionId
-				+ ", modelCustomizationId=" + modelCustomizationId + "]";
-	}
-
-
+/*-

+ * ============LICENSE_START=======================================================

+ * OPENECOMP - MSO

+ * ================================================================================

+ * 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=========================================================

+ */

+

+//

+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.7

+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>

+// Any modifications to this file will be lost upon recompilation of the source schema.

+// Generated on: 2016.03.30 at 02:48:23 PM CDT

+//

+

+

+package org.openecomp.mso.apihandlerinfra.serviceinstancebeans;

+

+import org.codehaus.jackson.map.annotate.JsonSerialize;

+

+import org.openecomp.mso.apihandlerinfra.ModelType;

+

+@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)

+public class ModelInfo {

+

+    protected String modelCustomizationName;

+    protected String modelInvariantId;

+	protected ModelType modelType;

+	//v2

+    protected String modelNameVersionId;

+    protected String modelName;

+    protected String modelVersion;

+    protected String modelCustomizationUuid;

+    //v3

+    protected String modelVersionId;

+    protected String modelCustomizationId;

+

+

+	public String getModelCustomizationName() {

+		return modelCustomizationName;

+	}

+	public void setModelCustomizationName(String modelCustomizationName) {

+		this.modelCustomizationName = modelCustomizationName;

+	}

+	public String getModelNameVersionId() {

+		return modelNameVersionId;

+	}

+	public void setModelNameVersionId(String modelNameVersionId) {

+		this.modelNameVersionId = modelNameVersionId;

+	}

+	public String getModelName() {

+		return modelName;

+	}

+	public void setModelName(String modelName) {

+		this.modelName = modelName;

+	}

+	public String getModelVersion() {

+		return modelVersion;

+	}

+	public void setModelVersion(String modelVersion) {

+		this.modelVersion = modelVersion;

+	}

+	public ModelType getModelType() {

+		return modelType;

+	}

+	public void setModelType(ModelType modelType) {

+		this.modelType = modelType;

+	}

+	public String getModelInvariantId() {

+		return modelInvariantId;

+	}

+	public void setModelInvariantId(String modelInvariantId) {

+		this.modelInvariantId = modelInvariantId;

+	}

+	public String getModelCustomizationUuid() {

+		return modelCustomizationUuid;

+	}

+	public void setModelCustomizationUuid(String modelCustomizationUuid) {

+		this.modelCustomizationUuid = modelCustomizationUuid;

+	}

+	public String getModelVersionId() {

+		return modelVersionId;

+	}

+	public void setModelVersionId(String modelVersionId) {

+		this.modelVersionId = modelVersionId;

+	}

+	public String getModelCustomizationId() {

+		return modelCustomizationId;

+	}

+	public void setModelCustomizationId(String modelCustomizationId) {

+		this.modelCustomizationId = modelCustomizationId;

+	}

+	@Override

+	public String toString() {

+		return "ModelInfo [modelCustomizationName=" + modelCustomizationName

+				+ ", modelInvariantId=" + modelInvariantId + ", modelType="

+				+ modelType + ", modelNameVersionId=" + modelNameVersionId

+				+ ", modelName=" + modelName + ", modelVersion=" + modelVersion

+				+ ", modelCustomizationUuid=" + modelCustomizationUuid

+				+ ", modelVersionId=" + modelVersionId

+				+ ", modelCustomizationId=" + modelCustomizationId + "]";

+	}

+

+

 }
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RelatedInstanceList.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RelatedInstanceList.java
index b60d4b6..2ae5dc8 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RelatedInstanceList.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RelatedInstanceList.java
@@ -1,42 +1,42 @@
-/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.apihandlerinfra.serviceinstancebeans;
-
-public class RelatedInstanceList {
-
-	protected RelatedInstance relatedInstance;
-
-	public RelatedInstance getRelatedInstance() {
-		return relatedInstance;
-	}
-
-	public void setRelatedInstance(RelatedInstance relatedInstance) {
-		this.relatedInstance = relatedInstance;
-	}
-
-	@Override
-	public String toString() {
-		return "RelatedInstanceList [relatedInstance=" + relatedInstance + "]";
-	}
-
-
-
-}
+/*-

+ * ============LICENSE_START=======================================================

+ * OPENECOMP - MSO

+ * ================================================================================

+ * 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.mso.apihandlerinfra.serviceinstancebeans;

+

+public class RelatedInstanceList {

+

+	protected RelatedInstance relatedInstance;

+

+	public RelatedInstance getRelatedInstance() {

+		return relatedInstance;

+	}

+

+	public void setRelatedInstance(RelatedInstance relatedInstance) {

+		this.relatedInstance = relatedInstance;

+	}

+

+	@Override

+	public String toString() {

+		return "RelatedInstanceList [relatedInstance=" + relatedInstance + "]";

+	}

+

+

+

+}

diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RequestDetails.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RequestDetails.java
index bb1fa3b..512b061 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RequestDetails.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RequestDetails.java
@@ -1,176 +1,176 @@
-/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.apihandlerinfra.serviceinstancebeans;
-
-import java.util.Arrays;
-
-import org.codehaus.jackson.map.annotate.JsonRootName;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-@JsonRootName(value = "requestDetails")
-@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)
-public class RequestDetails {
-
-    protected ModelInfo modelInfo;
-    protected RequestInfo requestInfo;
-    protected RelatedInstanceList[] relatedInstanceList;
-    protected SubscriberInfo subscriberInfo;
-    protected CloudConfiguration cloudConfiguration;
-    protected RequestParameters requestParameters;
-
-    /**
-     * Gets the value of the serviceInfo property.
-     *
-     * @return
-     *     possible object is
-     *     {@link ModelInfo }
-     *
-     */
-    public ModelInfo getModelInfo() {
-        return modelInfo;
-    }
-
-    /**
-     * Sets the value of the serviceInfo property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link ModelInfo }
-     *
-     */
-    public void setModelInfo(ModelInfo value) {
-        this.modelInfo = value;
-    }
-
-    /**
-     * Gets the value of the requestInfo property.
-     *
-     * @return
-     *     possible object is
-     *     {@link RequestInfo }
-     *
-     */
-    public RequestInfo getRequestInfo() {
-        return requestInfo;
-    }
-
-    /**
-     * Sets the value of the requestInfo property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link RequestInfo }
-     *
-     */
-    public void setRequestInfo(RequestInfo value) {
-        this.requestInfo = value;
-    }
-
-    /**
-     * Gets the value of the subscriberInfo property.
-     *
-     * @return
-     *     possible object is
-     *     {@link SubscriberInfo }
-     *
-     */
-    public SubscriberInfo getSubscriberInfo() {
-        return subscriberInfo;
-    }
-
-    /**
-     * Sets the value of the subscriberInfo property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link SubscriberInfo }
-     *
-     */
-    public void setSubscriberInfo(SubscriberInfo value) {
-        this.subscriberInfo = value;
-    }
-
-    /**
-     * Gets the value of the cloudConfiguration property.
-     *
-     * @return
-     *     possible object is
-     *     {@link CloudConfiguration }
-     *
-     */
-    public CloudConfiguration getCloudConfiguration() {
-        return cloudConfiguration;
-    }
-
-    /**
-     * Sets the value of the cloudConfiguration property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link CloudConfiguration }
-     *
-     */
-    public void setCloudConfiguration(CloudConfiguration value) {
-        this.cloudConfiguration = value;
-    }
-
-    /**
-     * Gets the value of the requestParameters property.
-     *
-     * @return
-     *     possible object is
-     *     {@link RequestParameters }
-     *
-     */
-    public RequestParameters getRequestParameters() {
-        return requestParameters;
-    }
-
-    /**
-     * Sets the value of the requestParameters property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link RequestParameters }
-     *
-     */
-    public void setRequestParameters(RequestParameters value) {
-        this.requestParameters = value;
-    }
-
-	public RelatedInstanceList[] getRelatedInstanceList() {
-		return relatedInstanceList;
-	}
-
-	public void setRelatedInstanceList(RelatedInstanceList[] relatedInstanceList) {
-		this.relatedInstanceList = relatedInstanceList;
-	}
-
-	@Override
-	public String toString() {
-		return "RequestDetails [modelInfo=" + modelInfo + ", requestInfo="
-				+ requestInfo + ", relatedInstanceList="
-				+ Arrays.toString(relatedInstanceList) + ", subscriberInfo="
-				+ subscriberInfo + ", cloudConfiguration=" + cloudConfiguration
-				+ ", requestParameters=" + requestParameters + "]";
-	}
-
-}
+/*-

+ * ============LICENSE_START=======================================================

+ * OPENECOMP - MSO

+ * ================================================================================

+ * 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.mso.apihandlerinfra.serviceinstancebeans;

+

+import java.util.Arrays;

+

+import org.codehaus.jackson.map.annotate.JsonRootName;

+import org.codehaus.jackson.map.annotate.JsonSerialize;

+

+@JsonRootName(value = "requestDetails")

+@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)

+public class RequestDetails {

+

+    protected ModelInfo modelInfo;

+    protected RequestInfo requestInfo;

+    protected RelatedInstanceList[] relatedInstanceList;

+    protected SubscriberInfo subscriberInfo;

+    protected CloudConfiguration cloudConfiguration;

+    protected RequestParameters requestParameters;

+

+    /**

+     * Gets the value of the serviceInfo property.

+     *

+     * @return

+     *     possible object is

+     *     {@link ModelInfo }

+     *

+     */

+    public ModelInfo getModelInfo() {

+        return modelInfo;

+    }

+

+    /**

+     * Sets the value of the serviceInfo property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link ModelInfo }

+     *

+     */

+    public void setModelInfo(ModelInfo value) {

+        this.modelInfo = value;

+    }

+

+    /**

+     * Gets the value of the requestInfo property.

+     *

+     * @return

+     *     possible object is

+     *     {@link RequestInfo }

+     *

+     */

+    public RequestInfo getRequestInfo() {

+        return requestInfo;

+    }

+

+    /**

+     * Sets the value of the requestInfo property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link RequestInfo }

+     *

+     */

+    public void setRequestInfo(RequestInfo value) {

+        this.requestInfo = value;

+    }

+

+    /**

+     * Gets the value of the subscriberInfo property.

+     *

+     * @return

+     *     possible object is

+     *     {@link SubscriberInfo }

+     *

+     */

+    public SubscriberInfo getSubscriberInfo() {

+        return subscriberInfo;

+    }

+

+    /**

+     * Sets the value of the subscriberInfo property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link SubscriberInfo }

+     *

+     */

+    public void setSubscriberInfo(SubscriberInfo value) {

+        this.subscriberInfo = value;

+    }

+

+    /**

+     * Gets the value of the cloudConfiguration property.

+     *

+     * @return

+     *     possible object is

+     *     {@link CloudConfiguration }

+     *

+     */

+    public CloudConfiguration getCloudConfiguration() {

+        return cloudConfiguration;

+    }

+

+    /**

+     * Sets the value of the cloudConfiguration property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link CloudConfiguration }

+     *

+     */

+    public void setCloudConfiguration(CloudConfiguration value) {

+        this.cloudConfiguration = value;

+    }

+

+    /**

+     * Gets the value of the requestParameters property.

+     *

+     * @return

+     *     possible object is

+     *     {@link RequestParameters }

+     *

+     */

+    public RequestParameters getRequestParameters() {

+        return requestParameters;

+    }

+

+    /**

+     * Sets the value of the requestParameters property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link RequestParameters }

+     *

+     */

+    public void setRequestParameters(RequestParameters value) {

+        this.requestParameters = value;

+    }

+

+	public RelatedInstanceList[] getRelatedInstanceList() {

+		return relatedInstanceList;

+	}

+

+	public void setRelatedInstanceList(RelatedInstanceList[] relatedInstanceList) {

+		this.relatedInstanceList = relatedInstanceList;

+	}

+

+	@Override

+	public String toString() {

+		return "RequestDetails [modelInfo=" + modelInfo + ", requestInfo="

+				+ requestInfo + ", relatedInstanceList="

+				+ Arrays.toString(relatedInstanceList) + ", subscriberInfo="

+				+ subscriberInfo + ", cloudConfiguration=" + cloudConfiguration

+				+ ", requestParameters=" + requestParameters + "]";

+	}

+

+}

diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RequestStatus.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RequestStatus.java
index 89e8075..02ad6e2 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RequestStatus.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/RequestStatus.java
@@ -1,60 +1,60 @@
-/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.apihandlerinfra.serviceinstancebeans;
-
-import java.util.Date;
-
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)
-public class RequestStatus {
-
-    protected String requestState;
-    protected String statusMessage;
-    protected Integer percentProgress;
-    protected String finishTime;
-
-
-	public String getRequestState() {
-		return requestState;
-	}
-	public void setRequestState(String requestState) {
-		this.requestState = requestState;
-	}
-	public String getStatusMessage() {
-		return statusMessage;
-	}
-	public void setStatusMessage(String statusMessage) {
-		this.statusMessage = statusMessage;
-	}
-	public Integer getPercentProgress() {
-		return percentProgress;
-	}
-	public void setPercentProgress(Integer percentProgress) {
-		this.percentProgress = percentProgress;
-	}
-	public String getFinishTime() {
-		return finishTime;
-	}
-	public void setFinishTime(String finishTime) {
-		this.finishTime = finishTime;
-	}
+/*-

+ * ============LICENSE_START=======================================================

+ * OPENECOMP - MSO

+ * ================================================================================

+ * 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.mso.apihandlerinfra.serviceinstancebeans;

+

+import java.util.Date;

+

+import org.codehaus.jackson.map.annotate.JsonSerialize;

+

+@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)

+public class RequestStatus {

+

+    protected String requestState;

+    protected String statusMessage;

+    protected Integer percentProgress;

+    protected String finishTime;

+

+

+	public String getRequestState() {

+		return requestState;

+	}

+	public void setRequestState(String requestState) {

+		this.requestState = requestState;

+	}

+	public String getStatusMessage() {

+		return statusMessage;

+	}

+	public void setStatusMessage(String statusMessage) {

+		this.statusMessage = statusMessage;

+	}

+	public Integer getPercentProgress() {

+		return percentProgress;

+	}

+	public void setPercentProgress(Integer percentProgress) {

+		this.percentProgress = percentProgress;

+	}

+	public String getFinishTime() {

+		return finishTime;

+	}

+	public void setFinishTime(String finishTime) {

+		this.finishTime = finishTime;

+	}

 }
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/SubscriberInfo.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/SubscriberInfo.java
index 97fc496..e81f102 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/SubscriberInfo.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/SubscriberInfo.java
@@ -1,85 +1,85 @@
-/*-
- * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
- * ================================================================================
- * 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.mso.apihandlerinfra.serviceinstancebeans;
-
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-
-@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)
-public class SubscriberInfo {
-
-    protected String globalSubscriberId;
-    protected String subscriberName;
-
-    /**
-     * Gets the value of the globalSubscriberId property.
-     *
-     * @return
-     *     possible object is
-     *     {@link String }
-     *
-     */
-    public String getGlobalSubscriberId() {
-        return globalSubscriberId;
-    }
-
-    /**
-     * Sets the value of the globalSubscriberId property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *
-     */
-    public void setGlobalSubscriberId(String value) {
-        this.globalSubscriberId = value;
-    }
-
-    /**
-     * Gets the value of the subscriberName property.
-     *
-     * @return
-     *     possible object is
-     *     {@link String }
-     *
-     */
-    public String getSubscriberName() {
-        return subscriberName;
-    }
-
-    /**
-     * Sets the value of the subscriberName property.
-     *
-     * @param value
-     *     allowed object is
-     *     {@link String }
-     *
-     */
-    public void setSubscriberName(String value) {
-        this.subscriberName = value;
-    }
-
-	@Override
-	public String toString() {
-		return "SubscriberInfo [globalSubscriberId=" + globalSubscriberId
-				+ ", subscriberName=" + subscriberName + "]";
-	}
-
-}
+/*-

+ * ============LICENSE_START=======================================================

+ * OPENECOMP - MSO

+ * ================================================================================

+ * 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.mso.apihandlerinfra.serviceinstancebeans;

+

+import org.codehaus.jackson.map.annotate.JsonSerialize;

+

+@JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)

+public class SubscriberInfo {

+

+    protected String globalSubscriberId;

+    protected String subscriberName;

+

+    /**

+     * Gets the value of the globalSubscriberId property.

+     *

+     * @return

+     *     possible object is

+     *     {@link String }

+     *

+     */

+    public String getGlobalSubscriberId() {

+        return globalSubscriberId;

+    }

+

+    /**

+     * Sets the value of the globalSubscriberId property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *

+     */

+    public void setGlobalSubscriberId(String value) {

+        this.globalSubscriberId = value;

+    }

+

+    /**

+     * Gets the value of the subscriberName property.

+     *

+     * @return

+     *     possible object is

+     *     {@link String }

+     *

+     */

+    public String getSubscriberName() {

+        return subscriberName;

+    }

+

+    /**

+     * Sets the value of the subscriberName property.

+     *

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *

+     */

+    public void setSubscriberName(String value) {

+        this.subscriberName = value;

+    }

+

+	@Override

+	public String toString() {

+		return "SubscriberInfo [globalSubscriberId=" + globalSubscriberId

+				+ ", subscriberName=" + subscriberName + "]";

+	}

+

+}

diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/MsoRequestTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/MsoRequestTest.java
new file mode 100644
index 0000000..dde7ecf
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/MsoRequestTest.java
@@ -0,0 +1,235 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * 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.mso.apihandlerinfra;
+
+import org.openecomp.mso.apihandler.common.ValidationException;
+import org.openecomp.mso.apihandlerinfra.serviceinstancebeans.ServiceInstancesRequest;
+import org.apache.commons.io.IOUtils;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+import static org.junit.Assert.*;
+
+public class MsoRequestTest {
+
+
+
+	@Test
+	public void testParseOrchestration() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+			ObjectMapper mapper = new ObjectMapper();
+			String requestJSON = " {\"requestDetails\": {\"requestInfo\": { \"source\": \"VID\", \"requestorId\": \"zz9999\"}}}";
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parseOrchestration(sir);
+			assertEquals(msoRequest.getRequestInfo().getSource(),"VID");
+			assertEquals(msoRequest.getRequestInfo().getRequestorId(),"zz9999");
+
+	}
+
+	@Test(expected = ValidationException.class)
+	public void testParseOrchestrationFailure() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+			ObjectMapper mapper = new ObjectMapper();
+			String requestJSON = " {\"requestDetails\": {\"requestInfo\": { \"source\": \"VID\"}}}";
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parseOrchestration(sir);
+
+	}
+
+	@Test
+	public void testParseV3VnfCreate() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+		String requestJSON;
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3VnfCreate.json"));
+
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+			ObjectMapper mapper = new ObjectMapper();
+			 HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.createInstance, "v3");
+			assertEquals(msoRequest.getRequestInfo().getSource(),"VID");
+			assertFalse(msoRequest.getALaCarteFlag());
+			assertEquals(msoRequest.getReqVersion(),3);
+			boolean testIsALaCarteSet = msoRequest.getServiceInstancesRequest().getRequestDetails().getRequestParameters().isALaCarteSet();
+			assertFalse(testIsALaCarteSet);
+
+	}
+
+	@Test(expected = ValidationException.class)
+	public void testParseV3VolumeGroupFail() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+		String requestJSON;
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3VolumeGroupBad.json"));
+
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+			ObjectMapper mapper = new ObjectMapper();
+			 HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.updateInstance, "v3");
+
+	}
+
+	@Test
+	public void testParseV3UpdateNetwork() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+		String requestJSON;
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3UpdateNetwork.json"));
+
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+			ObjectMapper mapper = new ObjectMapper();
+			 HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.updateInstance, "v3");
+
+	}
+
+	@Test(expected = ValidationException.class)
+	public void testParseV3UpdateNetworkFail() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+		String requestJSON;
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3UpdateNetworkBad.json"));
+
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+			ObjectMapper mapper = new ObjectMapper();
+			 HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.updateInstance, "v3");
+
+	}
+
+	@Test
+	public void testParseV3DeleteNetwork() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+		String requestJSON;
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3DeleteNetwork.json"));
+
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+			ObjectMapper mapper = new ObjectMapper();
+			 HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.deleteInstance, "v3");
+	}
+
+	@Test
+	public void testParseV3ServiceInstanceDelete() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+		String requestJSON1, requestJSON2;
+		 try {
+			  requestJSON1 = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3DeleteServiceInstance.json"));
+			  requestJSON2 = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3DeleteServiceInstanceALaCarte.json"));
+
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+			ObjectMapper mapper = new ObjectMapper();
+			 HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON1, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.deleteInstance, "v3");
+			boolean testIsALaCarteSet = msoRequest.getServiceInstancesRequest().getRequestDetails().getRequestParameters().isALaCarteSet();
+			assertTrue(testIsALaCarteSet);
+			assertFalse(msoRequest.getALaCarteFlag());
+			sir  = mapper.readValue(requestJSON2, ServiceInstancesRequest.class);
+			msoRequest = new MsoRequest ("12345");
+			msoRequest.parse(sir, instanceIdMap, Action.deleteInstance, "v3");
+			testIsALaCarteSet = msoRequest.getServiceInstancesRequest().getRequestDetails().getRequestParameters().isALaCarteSet();
+			assertTrue(testIsALaCarteSet);
+			assertTrue(msoRequest.getALaCarteFlag());
+
+	}
+
+	@Test(expected = ValidationException.class)
+	public void testParseV3ServiceInstanceCreateFail() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+		String requestJSON2;
+		 try {
+			  requestJSON2 = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3DeleteServiceInstanceALaCarte.json"));
+
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+			ObjectMapper mapper = new ObjectMapper();
+			 HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON2, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.createInstance, "v3");
+
+	}
+
+	@Test(expected = ValidationException.class)
+	public void testParseV3ServiceInstanceDeleteMacroFail() throws JsonParseException, JsonMappingException, IOException, ValidationException{
+		String requestJSON;
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v3DeleteServiceInstanceBad.json"));
+
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+			ObjectMapper mapper = new ObjectMapper();
+			 HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.deleteInstance, "v3");
+
+	}
+
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/logback-test.xml b/mso-api-handlers/mso-api-handler-infra/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..4609de0
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/logback-test.xml
@@ -0,0 +1,28 @@
+<configuration >
+ 
+  
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>%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}|%msg%n</pattern>
+    </encoder>
+  </appender>
+
+
+  <logger name="com.att.ecomp.audit" level="debug" additivity="false">
+    <appender-ref ref="STDOUT" />
+  </logger>
+  
+  <logger name="com.att.eelf.metrics" level="info" additivity="false">
+        <appender-ref ref="STDOUT" />
+  </logger>
+
+  <logger name="com.att.eelf.error" level="debug" additivity="false">
+    <appender-ref ref="STDOUT" />
+  </logger> 
+
+  <root level="debug">
+    <appender-ref ref="STDOUT" />
+  </root>
+ 
+
+</configuration>
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/logging.properties b/mso-api-handlers/mso-api-handler-infra/src/test/resources/logging.properties
new file mode 100644
index 0000000..4941c55
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/logging.properties
@@ -0,0 +1,2 @@
+#register SLF4JBridgeHandler as handler for the j.u.l. root logger
+handlers = org.slf4j.bridge.SLF4JBridgeHandler
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteNetwork.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteNetwork.json
new file mode 100644
index 0000000..98610af
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteNetwork.json
@@ -0,0 +1,15 @@
+{
+  "requestDetails": {
+      "modelInfo": {
+          "modelType": "network"
+      },
+      "cloudConfiguration": {
+          "lcpCloudRegionId": "mdt1",
+          "tenantId": "8b1df54faa3b49078e3416e21370a3ba"
+      },
+      "requestInfo": {
+          "source": "VID",
+          "requestorId": "az2016"
+      }
+  }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstance.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstance.json
new file mode 100644
index 0000000..4d1719f
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstance.json
@@ -0,0 +1,27 @@
+{
+  "requestDetails": {
+      "modelInfo": {
+         "modelType": "service",
+         "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+         "modelName": "Test",
+         "modelVersion": "1.0"
+      },
+      "cloudConfiguration": {
+          "lcpCloudRegionId": "mdt1",
+          "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo": {
+          "source": "VID",
+          "requestorId": "az2016"
+      },
+      "requestParameters": {
+          "aLaCarte": false,
+          "userParams": [
+            {
+              "name": "someUserParam",
+              "value": "someValue"
+            } 
+          ]
+      }
+  }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstanceALaCarte.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstanceALaCarte.json
new file mode 100644
index 0000000..5a93206
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstanceALaCarte.json
@@ -0,0 +1,22 @@
+{
+  "requestDetails": {
+      "modelInfo": {
+         "modelType": "service",
+         "modelName": "Test",
+         "modelVersion": "1.0"
+      },
+      "requestInfo": {
+          "source": "VID",
+          "requestorId": "az2016"
+      },
+      "requestParameters": {
+          "aLaCarte": true,
+          "userParams": [
+            {
+              "name": "someUserParam",
+              "value": "someValue"
+            } 
+          ]
+      }
+  }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstanceBad.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstanceBad.json
new file mode 100644
index 0000000..dcf47d0
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3DeleteServiceInstanceBad.json
@@ -0,0 +1,26 @@
+{
+  "requestDetails": {
+      "modelInfo": {
+         "modelType": "service",
+         "modelName": "Test",
+         "modelVersion": "1.0"
+      },
+      "cloudConfiguration": {
+          "lcpCloudRegionId": "mdt1",
+          "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo": {
+          "source": "VID",
+          "requestorId": "az2016"
+      },
+      "requestParameters": {
+          "aLaCarte": false,
+          "userParams": [
+            {
+              "name": "someUserParam",
+              "value": "someValue"
+            } 
+          ]
+      }
+  }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3UpdateNetwork.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3UpdateNetwork.json
new file mode 100644
index 0000000..2aef2e7
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3UpdateNetwork.json
@@ -0,0 +1,39 @@
+{
+  "requestDetails": {
+      "modelInfo": {
+          "modelType": "network",
+          "modelName": "CONTRAIL30_BASIC",
+          "modelCustomizationName": "CONTRAIL30_BASIC 1",
+          "modelCustomizationId": "b0ed83ec-b7b4-4c70-91c2-63feeaf8609b"
+      },
+      "cloudConfiguration": {
+          "lcpCloudRegionId": "mdt1",
+          "tenantId": "8b1df54faa3b49078e3416e21370a3ba"
+      },
+      "requestInfo": {
+          "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+          "source": "VID",
+          "suppressRollback": true,
+          "requestorId": "az2016"
+      },
+      "relatedInstanceList": [
+         {
+            "relatedInstance": {
+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",
+               "modelInfo": {   
+                  "modelType": "service",
+                  "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+                  "modelVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+                  "modelName": "{parent service model name}",
+                  "modelVersion": "1.0"
+               }
+            }
+         }
+
+      ],
+      "requestParameters": {
+          "userParams": []
+
+      }
+  }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3UpdateNetworkBad.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3UpdateNetworkBad.json
new file mode 100644
index 0000000..956d771
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3UpdateNetworkBad.json
@@ -0,0 +1,38 @@
+{
+  "requestDetails": {
+      "modelInfo": {
+          "modelType": "network",
+          "modelName": "CONTRAIL30_BASIC",
+          "modelCustomizationName": "CONTRAIL30_BASIC 1"
+      },
+      "cloudConfiguration": {
+          "lcpCloudRegionId": "mdt1",
+          "tenantId": "8b1df54faa3b49078e3416e21370a3ba"
+      },
+      "requestInfo": {
+          "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+          "source": "VID",
+          "suppressRollback": true,
+          "requestorId": "az2016"
+      },
+      "relatedInstanceList": [
+         {
+            "relatedInstance": {
+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",
+               "modelInfo": {   
+                  "modelType": "service",
+                  "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+                  "modelVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+                  "modelName": "{parent service model name}",
+                  "modelVersion": "1.0"
+               }
+            }
+         }
+
+      ],
+      "requestParameters": {
+          "userParams": []
+
+      }
+  }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3VnfCreate.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3VnfCreate.json
new file mode 100644
index 0000000..90fc841
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3VnfCreate.json
@@ -0,0 +1,41 @@
+{
+  "requestDetails": {
+      "modelInfo": {
+         "modelType": "vnf",
+         "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+         "modelName": "vSAMP12",
+         "modelVersion": "1.0",
+         "modelCustomizationName": "vSAMP12 1",
+         "modelCustomizationId": "a7f1d08e-b02d-11e6-80f5-76304dec7eb7"
+      },
+      "cloudConfiguration": {
+          "lcpCloudRegionId": "mdt1",
+          "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo": {
+          "instanceName": "MSOTEST103a",
+          "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+          "source": "VID",
+          "suppressRollback": false,
+          "requestorId": "az2016"
+      },
+      "relatedInstanceList": [
+         {
+            "relatedInstance": {
+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",
+               "modelInfo": {   
+                  "modelType": "service",
+                  "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+                  "modelVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+                  "modelName": "aparent",
+                  "modelVersion": "1.0"
+               }
+            }
+         }
+      ],
+      "requestParameters": {
+          "autoBuildVfModules": true
+      }
+  }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3VolumeGroupBad.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3VolumeGroupBad.json
new file mode 100644
index 0000000..526be72
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v3VolumeGroupBad.json
@@ -0,0 +1,27 @@
+{
+  "requestDetails": {
+      "modelInfo": {
+         "modelType": "volumeGroup",
+         "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+         "modelName": "vSAMP12",
+         "modelVersion": "1.0",
+         "modelCustomizationName": "vSAMP12 1",
+         "modelCustomizationId": "a7f1d08e-b02d-11e6-80f5-76304dec7eb7"
+      },
+      "cloudConfiguration": {
+          "lcpCloudRegionId": "mdt1",
+          "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo": {
+          "instanceName": "MSOTEST103a",
+          "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+          "source": "VID",
+          "suppressRollback": false,
+          "requestorId": "az2016"
+      },
+      "requestParameters": {
+          "autoBuildVfModules": true
+      }
+  }
+}