Merge "Adding Junit"
diff --git a/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceErrorTest.java b/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceErrorTest.java
new file mode 100644
index 0000000..df69b37
--- /dev/null
+++ b/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceErrorTest.java
@@ -0,0 +1,51 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.adapters.sdncrest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.openecomp.mso.adapters.sdncrest.SDNCErrorCommon;
+import org.openecomp.mso.adapters.sdncrest.SDNCServiceError;
+
+public class SDNCServiceErrorTest {
+
+	@Mock
+	SDNCErrorCommon sec;
+	
+	@InjectMocks
+	SDNCServiceError ssc;
+	
+	@Before
+	public void init(){
+	    MockitoAnnotations.initMocks(this);
+	 }
+	
+	@Test
+	public void testSDNCServiceError() {
+		
+		ssc= new SDNCServiceError("id", "200",
+				"msg", "indicator");
+		assert(ssc!=null);		
+	}
+}
diff --git a/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceRequestTest.java b/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceRequestTest.java
new file mode 100644
index 0000000..c63f1b8
--- /dev/null
+++ b/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceRequestTest.java
@@ -0,0 +1,79 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.adapters.sdncrest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.openecomp.mso.adapters.sdncrest.SDNCRequestCommon;
+import org.openecomp.mso.adapters.sdncrest.ServiceInformation;
+import org.openecomp.mso.adapters.sdncrest.RequestInformation;
+
+public class SDNCServiceRequestTest {
+
+	@Mock
+	SDNCRequestCommon src;
+	
+	@Mock
+	ServiceInformation si;
+	
+	@Mock
+	RequestInformation ri;
+	
+	@InjectMocks
+	SDNCServiceRequest ssr;
+	
+	@Before
+	public void init(){
+	    MockitoAnnotations.initMocks(this);
+	 }
+	
+	@Test
+	public void test() {
+		ssr= new SDNCServiceRequest("url", "timeout",
+				"sdncRequestId", "sdncService", "sdncOperation",
+				ri,
+				si, "sdncServiceDataType",
+				"sndcServiceData");
+		
+	ssr.setSDNCService("sdncService");
+	ssr.setSDNCServiceData("sndcServiceData");
+	ssr.setSDNCServiceDataType("sdncServiceDataType");
+	ssr.setBPTimeout("timeout");
+	ssr.setBPNotificationUrl("url");
+	ssr.setRequestInformation(ri);
+	ssr.setServiceInformation(si);
+	ssr.setSDNCOperation("sdncOperation");
+	ssr.setSDNCRequestId("sdncRequestId");
+	assert(ssr.getSDNCService().equals("sdncService"));
+	assert(ssr.getSDNCServiceData().equals("sndcServiceData"));
+	assert(ssr.getSDNCServiceDataType().equals("sdncServiceDataType"));
+	assert(ssr.getBPTimeout().equals("timeout"));
+	assert(ssr.getBPNotificationUrl().equals("url"));
+	assert(ssr.getRequestInformation().equals(ri));
+	assert(ssr.getServiceInformation().equals(si));
+	assert(ssr.getSDNCOperation().equals("sdncOperation"));
+	assert(ssr.getSDNCRequestId().equals("sdncRequestId"));	
+	}
+
+}
diff --git a/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceResponseTest.java b/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceResponseTest.java
new file mode 100644
index 0000000..9c4e98a
--- /dev/null
+++ b/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/SDNCServiceResponseTest.java
@@ -0,0 +1,58 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.adapters.sdncrest;
+
+import static org.junit.Assert.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.openecomp.mso.adapters.sdncrest.SDNCResponseCommon;
+
+public class SDNCServiceResponseTest {
+
+	@Mock
+	SDNCResponseCommon src;
+	
+	@InjectMocks
+	SDNCServiceResponse ssr;
+	
+	@Before
+	public void init(){
+	    MockitoAnnotations.initMocks(this);
+	 }
+	
+	@Test
+	public void test() {
+		ssr=new SDNCServiceResponse("sdncRequestId", "200",
+				"msg", "indicator");
+		Map<String, String> mp = new HashMap<>();
+		mp.put("name", "value");
+		ssr.setParams(mp);
+		assert(ssr.getParams().equals(mp));
+		assertNotNull(ssr);
+	}
+}
diff --git a/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/ServiceInformationTest.java b/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/ServiceInformationTest.java
new file mode 100644
index 0000000..2b87bbf
--- /dev/null
+++ b/adapters/mso-adapters-rest-interface/src/test/java/org/openecomp/mso/adapters/sdncrest/ServiceInformationTest.java
@@ -0,0 +1,42 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.adapters.sdncrest;
+
+import org.junit.Test;
+
+public class ServiceInformationTest {
+
+	
+	
+	@Test
+	public void test() {
+		ServiceInformation si= new ServiceInformation("id","service","GlobalId","name");
+		
+		si.setServiceInstanceId("id");
+		si.setServiceType("service");
+		si.setSubscriberGlobalId("GlobalId");
+		si.setSubscriberName("name");
+		assert(si.getServiceInstanceId().equals("id"));
+		assert(si.getServiceType().equals("service"));
+		assert(si.getSubscriberGlobalId().equals("GlobalId"));
+		assert(si.getSubscriberName().equals("name"));
+	}
+}
diff --git a/adapters/mso-sdnc-adapter/src/test/java/org/openecomp/mso/adapters/sdnc/impl/SDNCResponseTest.java b/adapters/mso-sdnc-adapter/src/test/java/org/openecomp/mso/adapters/sdnc/impl/SDNCResponseTest.java
new file mode 100644
index 0000000..f8867ae
--- /dev/null
+++ b/adapters/mso-sdnc-adapter/src/test/java/org/openecomp/mso/adapters/sdnc/impl/SDNCResponseTest.java
@@ -0,0 +1,49 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.adapters.sdnc.impl;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class SDNCResponseTest {
+    
+   private SDNCResponse sdncresponse = new SDNCResponse(null, 0, null);
+    
+   @Test
+    public void testSDNCResponse() 
+   {
+       sdncresponse.setReqId("reqId");
+       sdncresponse.setRespCode(0);
+       sdncresponse.setRespMsg("respMsg");
+       sdncresponse.setSdncRespXml("sdncRespXml");
+       assertEquals(sdncresponse.getReqId(), "reqId");
+       assertEquals(sdncresponse.getRespCode(), 0);
+       assertEquals(sdncresponse.getRespMsg(), "respMsg");
+       assertEquals(sdncresponse.getSdncRespXml(),"sdncRespXml");         
+    }
+   
+   @Test
+   public void testtoString()
+   {
+       assert(sdncresponse.toString()!=null);
+   }
+}
+   
\ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/exceptions/ApplicationException.java b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/exceptions/ApplicationException.java
index 30d42ae..039c160 100644
--- a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/exceptions/ApplicationException.java
+++ b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/exceptions/ApplicationException.java
@@ -20,7 +20,7 @@
 
 package org.openecomp.mso.adapters.vfc.exceptions;
 
-import javax.ws.rs.core.Response;;
+import javax.ws.rs.core.Response;
 
 public class ApplicationException extends Exception {
 
diff --git a/bpmn/MSOCommonBPMN/pom.xml b/bpmn/MSOCommonBPMN/pom.xml
index 71626f5..e4e1fd6 100644
--- a/bpmn/MSOCommonBPMN/pom.xml
+++ b/bpmn/MSOCommonBPMN/pom.xml
@@ -302,6 +302,11 @@
 			<version>${spring.version}</version>
 		</dependency>
 		<dependency>
+			<groupId>org.openecomp.sdc.sdc-tosca</groupId>
+			<artifactId>sdc-tosca</artifactId>
+			<version>1.1.32</version>
+		</dependency>
+		<dependency>
 			<groupId>com.github.tomakehurst</groupId>
 			<artifactId>wiremock</artifactId>
 			<version>1.56</version>
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/resource/ResourceRequestBuilder.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/resource/ResourceRequestBuilder.java
new file mode 100644
index 0000000..78eb2f6
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/resource/ResourceRequestBuilder.java
@@ -0,0 +1,131 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * 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.bpmn.common.resource;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import org.jboss.resteasy.client.jaxrs.ResteasyClient;
+import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
+import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
+import org.openecomp.mso.logger.MsoLogger;
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
+import org.openecomp.sdc.toscaparser.api.NodeTemplate;
+import org.openecomp.sdc.toscaparser.api.Property;
+import org.openecomp.sdc.toscaparser.api.functions.GetInput;
+import org.openecomp.sdc.toscaparser.api.parameters.Input;
+
+import javax.ws.rs.core.Response;
+import java.io.File;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+public class ResourceRequestBuilder {
+
+    public static String CUSTOMIZATION_UUID = "customizationUUID";
+    public static String SERVICE_URL_TOSCA_CSAR = "http://localhost:8080/ecomp/mso/catalog/v3/serviceToscaCsar?serviceModelUuid=";
+
+    private static MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA);
+
+    public static Map<String, Object> buildResouceRequest(String serviceUuid,
+                                              String resourceCustomizationUuid,
+                                              Map<String, Object> serviceInputs) throws SdcToscaParserException {
+
+        Map<String, Object> resouceRequest = new HashMap<>();
+
+        String csarpath = null;
+        try {
+            csarpath = getCsarFromUuid(serviceUuid);
+        } catch (Exception e) {
+            LOGGER.debug("csar file is not available for service uuid:" + serviceUuid, e);
+            return resouceRequest;
+        }
+
+        SdcToscaParserFactory toscaParser = SdcToscaParserFactory.getInstance();
+        ISdcCsarHelper iSdcCsarHelper = toscaParser.getSdcCsarHelper(csarpath);
+
+        List<Input> serInput = iSdcCsarHelper.getServiceInputs();
+        Optional<NodeTemplate> nodeTemplateOpt = iSdcCsarHelper.getServiceNodeTemplates().stream()
+                .filter(e -> e.getMetaData().getValue(CUSTOMIZATION_UUID).equals(resourceCustomizationUuid))
+                .findFirst();
+
+        if (nodeTemplateOpt.isPresent()) {
+            NodeTemplate nodeTemplate = nodeTemplateOpt.get();
+            LinkedHashMap<String, Property> resourceProperties = nodeTemplate.getProperties();
+
+            for (String key: resourceProperties.keySet()) {
+                Property property = resourceProperties.get(key);
+
+                Object value = getValue(property.getValue(), serviceInputs, serInput);
+                resouceRequest.put(key, value);
+            }
+        }
+        return resouceRequest;
+    }
+
+    private static Object getValue(Object value, Map<String, Object> serviceInputs,
+                                   List<Input> servInputs) {
+        if (value instanceof Map) {
+            Map<String, Object> valueMap = new HashMap<>();
+
+            Map<String, Object> propertyMap = (Map<String, Object>) value;
+
+            for (String key: propertyMap.keySet()) {
+                valueMap.put(key, getValue(propertyMap.get(key), serviceInputs, servInputs));
+            }
+            return valueMap; // return if the value is nested hashmap
+        } else if (value instanceof GetInput) {
+            String inputName = ((GetInput) value).getInputName();
+
+            if (serviceInputs.get(inputName) != null) {
+                value = serviceInputs.get(inputName);
+            } else {
+                for (Input input: servInputs) {
+                    if (input.getName().equals(inputName)) {
+                        return input.getDefault();  // return default value
+                    }
+                }
+            }
+        }
+        return value; // return property value
+    }
+
+    private static String getCsarFromUuid(String uuid) throws Exception {
+
+        ResteasyClient client = new ResteasyClientBuilder().build();
+        ResteasyWebTarget target = client.target(SERVICE_URL_TOSCA_CSAR + uuid);
+        Response response = target.request().get();
+        String value = response.readEntity(String.class);
+
+        HashMap<String,String> map = new Gson().fromJson(value, new TypeToken<HashMap<String, String>>(){}.getType());
+
+        File csarFile = new File(System.getProperty("mso.config.path") + "ASDC/" + map.get("name"));
+
+        if (!csarFile.exists()) {
+            throw new Exception("csar file does not exist.");
+        }
+
+        return csarFile.getAbsolutePath();
+    }
+}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/RestClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/RestClient.java
index 74b1c3f..1436d83 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/RestClient.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/RestClient.java
@@ -157,14 +157,9 @@
 		}
 		client.register(this.getMapper());
 		Optional<ClientResponseFilter> responseFilter = this.addResponseFilter();
-		if (responseFilter.isPresent()) {
-			client.register(responseFilter.get());
-		}
-		if (!path.isPresent()) {
-			webTarget = client.target(host.toString());
-		} else {
-			webTarget = client.target(UriBuilder.fromUri(host + path.get().toString()));
-		}
+		responseFilter.ifPresent(clientResponseFilter -> client.register(clientResponseFilter));
+		webTarget = path.<WebTarget>map(uri -> client.target(UriBuilder.fromUri(host + uri.toString())))
+			.orElseGet(() -> client.target(host.toString()));
 		this.accept = MediaType.APPLICATION_JSON;
 		this.contentType = MediaType.APPLICATION_JSON;
 	}
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/entities/PolicyServiceType.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/entities/PolicyServiceType.java
index b5ab63c..01f6738 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/entities/PolicyServiceType.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/policy/entities/PolicyServiceType.java
@@ -36,7 +36,7 @@
 	
 	private final String name;
 	
-	private PolicyServiceType(String name) {
+	PolicyServiceType(String name) {
 		this.name = name;
 	}
 	
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/resource/ResourceRequestBuilderTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/resource/ResourceRequestBuilderTest.java
new file mode 100644
index 0000000..262c12e
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/resource/ResourceRequestBuilderTest.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * 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.bpmn.common.resource;
+
+import org.junit.Test;
+
+import java.util.HashMap;
+
+public class ResourceRequestBuilderTest {
+
+    @Test
+    public void buildResouceRequestTest() throws Exception {
+
+        ResourceRequestBuilder.buildResouceRequest("aa4535",
+                "a1074969-944f-4ddc-b687-9550b0c8cd57", new HashMap<>());
+    }
+
+}
\ No newline at end of file
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java
index 653f75c..fbc312e 100644
--- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java
+++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java
@@ -27,7 +27,7 @@
 

 	private String type;

 

-	private InventoryType(String type){

+	InventoryType(String type){

 		this.type = type;

 	}

 

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
new file mode 100644
index 0000000..44eaa34
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
@@ -0,0 +1,269 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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.bpmn.infrastructure.scripts;
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.List;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils
+
+/**
+ * This groovy class supports the <class>UpdateCustomE2EServiceInstance.bpmn</class> process.
+ * AlaCarte flow for 1702 ServiceInstance Update
+ *
+ */
+public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor {
+	String Prefix="UPDSI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+
+	public void preProcessRequest (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		utils.log("INFO", " *** preProcessRequest() *** ", isDebugEnabled)
+
+		try {
+
+			String siRequest = execution.getVariable("bpmnRequest")
+			utils.logAudit(siRequest)
+
+			String requestId = execution.getVariable("mso-request-id")
+			execution.setVariable("msoRequestId", requestId)
+			utils.log("INFO", "Input Request:" + siRequest + " reqId:" + requestId, isDebugEnabled)
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)) {
+				msg = "Input serviceInstanceId' is null"
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+						
+			//subscriberInfo
+			String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "requestDetails.subscriberInfo.globalSubscriberId")
+			if (isBlank(globalSubscriberId)) {
+				msg = "Input globalSubscriberId' is null"
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("globalSubscriberId", globalSubscriberId)
+			}
+
+			//requestInfo
+			execution.setVariable("source", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.source"))
+			execution.setVariable("serviceInstanceName", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.instanceName"))
+			execution.setVariable("disableRollback", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.suppressRollback"))
+			String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId")
+			if (isBlank(productFamilyId))
+			{
+				msg = "Input productFamilyId is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				//exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("productFamilyId", productFamilyId)
+			}
+	         String userParams = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.userParams")      
+             utils.log("INFO", "userParams:" + userParams, isDebugEnabled)
+	         List<String> paramList = jsonUtil.StringArrayToList(execution, userParams)
+	         String uuiRequest = jsonUtil.getJsonValue(paramList.get(0), "UUIRequest")
+			//modelInfo
+			if (isBlank(uuiRequest)) {
+				msg = "Input uuiRequest is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else
+			{
+				execution.setVariable("uuiRequest", uuiRequest)
+			}
+
+			utils.log("INFO", "uuiRequest:\n" + uuiRequest,  isDebugEnabled)
+
+			//requestParameters
+			String serviceType = jsonUtil.getJsonValue(uuiRequest, "service.parameters.serviceType")
+			if (isBlank(serviceType)) {
+				msg = "Input serviceType is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("serviceType", serviceType)
+			}
+			
+			//operationId
+			String operationId = jsonUtil.getJsonValue(siRequest, "operationId")
+		 	if (isBlank(operationId)) {
+		 		operationId = UUID.randomUUID().toString()
+		 	 }   
+			execution.setVariable("operationId", operationId) 
+			execution.setVariable("operationType", "UPDATE")
+			
+			execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void sendSyncResponse (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO", " *** sendSyncResponse *** ", isDebugEnabled)
+
+		try {
+			String operationId = execution.getVariable("operationId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			// RESTResponse for API Handler (APIH) Reply Task
+			String updateServiceRestRequest = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${operationId}"}}""".trim()
+			utils.log("INFO", " sendSyncResponse to APIH:" + "\n" + updateServiceRestRequest, isDebugEnabled)
+			sendWorkflowResponse(execution, 202, updateServiceRestRequest)
+			execution.setVariable("sentSyncResponse", true)
+
+		} catch (Exception ex) {
+			String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO"," ***** Exit sendSyncResopnse *****",  isDebugEnabled)
+	}
+
+
+	public void sendSyncError (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO", " *** sendSyncError *** ", isDebugEnabled)
+
+		try {
+			String errorMessage = ""
+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+				WorkflowException wfe = execution.getVariable("WorkflowException")
+				errorMessage = wfe.getErrorMessage()
+			} else {
+				errorMessage = "Sending Sync Error."
+			}
+
+			String buildworkflowException =
+					"""<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">

+					<aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			utils.logAudit(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+
+		} catch (Exception ex) {
+			utils.log("INFO", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled)
+		}
+
+	}
+
+	public void prepareCompletionRequest (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO", " *** prepareCompletion *** ", isDebugEnabled)
+
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String source = execution.getVariable("source")
+			
+			String msoCompletionRequest =
+					"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"

+								xmlns:ns="http://org.openecomp/mso/request/types/v1">

+						<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">

+							<request-id>${requestId}</request-id>
+							<action>UPDATE</action>
+							<source>${source}</source>
+			   			</request-info>
+						<status-message>Service Instance was updated successfully.</status-message>
+						<serviceInstanceId>${serviceInstanceId}</serviceInstanceId>
+			   			<mso-bpel-name>UpdateGenericALaCarteServiceInstance</mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			execution.setVariable("completionRequest", xmlMsoCompletionRequest)
+			utils.log("INFO", " Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled)
+
+		} catch (Exception ex) {
+			String msg = " Exception in prepareCompletion:" + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO", "*** Exit prepareCompletionRequest ***", isDebugEnabled)
+	}
+
+	public void prepareFalloutRequest(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO", " *** prepareFalloutRequest *** ", isDebugEnabled)
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			utils.log("INFO", " Input Workflow Exception: " + wfex.toString(), isDebugEnabled)
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String requestInfo =
+					"""<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">

+					<request-id>${requestId}</request-id>
+					<action>UPDATE</action>
+					<source>${source}</source>
+				   </request-info>"""
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+			execution.setVariable("falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			utils.log("INFO", "Exception prepareFalloutRequest:" + ex.getMessage(), isDebugEnabled)
+			String errorException = "  Bpmn error encountered in UpdateGenericALaCarteServiceInstance flow. FalloutHandlerRequest,  buildErrorResponse() - " + ex.getMessage()
+			String requestId = execution.getVariable("msoRequestId")
+			String falloutRequest =
+					"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"

+					                             xmlns:ns="http://org.openecomp/mso/request/types/v1"

+					                             xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">

+					   <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">

+					      <request-id>${requestId}</request-id>
+					      <action>UPDATE</action>
+					      <source>UUI</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">

+							<aetgt:ErrorMessage>${errorException}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable("falloutRequest", falloutRequest)
+		}
+		utils.log("INFO", "*** Exit prepareFalloutRequest ***", isDebugEnabled)
+	}	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVFCNSResource.bpmn
similarity index 98%
rename from bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn
rename to bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVFCNSResource.bpmn
index 67b0f96..29dbca4 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVFCNSResource.bpmn
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
-  <bpmn:process id="DoCreateVFCNetworkServiceInstance" name="DoCreateVFCNetworkServiceInstance" isExecutable="true">
+  <bpmn:process id="CreateVFCNSResource" name="CreateVFCNSResource" isExecutable="true">
     <bpmn:startEvent id="createNS_StartEvent" name="createNS_StartEvent">
       <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
     </bpmn:startEvent>
@@ -258,4 +258,4 @@
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn:definitions>
+</bpmn:definitions>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn
new file mode 100644
index 0000000..e7a88be
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:process id="UpdateCustomE2EServiceInstance" name="UpdateCustomE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_00qj6ro" name="Update SI Start Flow">
+      <bpmn:outgoing>SequenceFlow_0s2spoq</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:subProcess id="SubProcess_0ka59nc" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0u3lw39" name="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1dsbjjb</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1yay321</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*

+ExceptionUtil ex = new ExceptionUtil()

+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_0v1ffn4">
+        <bpmn:outgoing>SequenceFlow_1dsbjjb</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0eznq6x">
+        <bpmn:incoming>SequenceFlow_1yay321</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1dsbjjb" name="" sourceRef="StartEvent_0v1ffn4" targetRef="ScriptTask_0u3lw39" />
+      <bpmn:sequenceFlow id="SequenceFlow_1yay321" name="" sourceRef="ScriptTask_0u3lw39" targetRef="EndEvent_0eznq6x" />
+    </bpmn:subProcess>
+    <bpmn:callActivity id="DoUpdateE2EServiceInstance" name="Call DoUpdateE2EServiceInstance&#10;" calledElement="DoUpdateE2EServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="initialStatus" target="initialStatus" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="operationType" target="operationType" />
+        <camunda:in source="URN_mso_adapters_openecomp_db_endpoint" target="URN_mso_adapters_openecomp_db_endpoint" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_19eilro</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_0bpd6c0" name="End">
+      <bpmn:incoming>SequenceFlow_0yayvrf</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1s09c7d" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0s2spoq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0z4faf9</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*

+def csi= new UpdateCustomE2EServiceInstance()

+csi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0ttvn8r" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_14zu6wr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0je30si</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*

+def csi = new UpdateCustomE2EServiceInstance()

+csi.prepareCompletionRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_02fyxz0" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0je30si</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yayvrf</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:subProcess id="SubProcess_0vaws86" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0dug28e">
+        <bpmn:outgoing>SequenceFlow_0e1r62n</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_03wysuk">
+        <bpmn:incoming>SequenceFlow_1ysapam</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0u8o9p2" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0n9pexp</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_01umodj</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*

+def csi = new UpdateCustomE2EServiceInstance()

+csi.prepareFalloutRequest(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:callActivity id="CallActivity_1ang7q8" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_01umodj</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1ysapam</bpmn:outgoing>
+      </bpmn:callActivity>
+      <bpmn:scriptTask id="ScriptTask_1rn6nqi" name="Send Error Response">
+        <bpmn:incoming>SequenceFlow_0e1r62n</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0n9pexp</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*

+def csi = new  UpdateCustomE2EServiceInstance()

+csi.sendSyncError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0e1r62n" sourceRef="StartEvent_0dug28e" targetRef="ScriptTask_1rn6nqi" />
+      <bpmn:sequenceFlow id="SequenceFlow_1ysapam" sourceRef="CallActivity_1ang7q8" targetRef="EndEvent_03wysuk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0n9pexp" sourceRef="ScriptTask_1rn6nqi" targetRef="ScriptTask_0u8o9p2" />
+      <bpmn:sequenceFlow id="SequenceFlow_01umodj" sourceRef="ScriptTask_0u8o9p2" targetRef="CallActivity_1ang7q8" />
+    </bpmn:subProcess>
+    <bpmn:scriptTask id="ScriptTask_0xupxj9" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0z4faf9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_19eilro</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*

+def csi = new  UpdateCustomE2EServiceInstance()

+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0aqn64l" name="Success?">
+      <bpmn:incoming>SequenceFlow_0klbpxx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14zu6wr</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1fueo69</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_07uk5iy">
+      <bpmn:incoming>SequenceFlow_1fueo69</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_0nbdy47" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0s2spoq" sourceRef="StartEvent_00qj6ro" targetRef="ScriptTask_1s09c7d" />
+    <bpmn:sequenceFlow id="SequenceFlow_19eilro" sourceRef="ScriptTask_0xupxj9" targetRef="DoUpdateE2EServiceInstance" />
+    <bpmn:sequenceFlow id="SequenceFlow_0klbpxx" sourceRef="DoUpdateE2EServiceInstance" targetRef="ExclusiveGateway_0aqn64l" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yayvrf" sourceRef="CallActivity_02fyxz0" targetRef="EndEvent_0bpd6c0" />
+    <bpmn:sequenceFlow id="SequenceFlow_0z4faf9" sourceRef="ScriptTask_1s09c7d" targetRef="ScriptTask_0xupxj9" />
+    <bpmn:sequenceFlow id="SequenceFlow_14zu6wr" name="yes" sourceRef="ExclusiveGateway_0aqn64l" targetRef="ScriptTask_0ttvn8r">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0je30si" sourceRef="ScriptTask_0ttvn8r" targetRef="CallActivity_02fyxz0" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fueo69" name="no" sourceRef="ExclusiveGateway_0aqn64l" targetRef="EndEvent_07uk5iy">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+  </bpmn:process>
+  <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateCustomE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro">
+        <dc:Bounds x="-6" y="180" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-24" y="221" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true">
+        <dc:Bounds x="463" y="632" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0rhljy8_di" bpmnElement="DoUpdateE2EServiceInstance">
+        <dc:Bounds x="717" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0bpd6c0_di" bpmnElement="EndEvent_0bpd6c0">
+        <dc:Bounds x="1258" y="286" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1268" y="322" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d">
+        <dc:Bounds x="214" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ttvn8r_di" bpmnElement="ScriptTask_0ttvn8r">
+        <dc:Bounds x="1038" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_02fyxz0_di" bpmnElement="CallActivity_02fyxz0">
+        <dc:Bounds x="1226" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0vaws86_di" bpmnElement="SubProcess_0vaws86" isExpanded="true">
+        <dc:Bounds x="348" y="370" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9">
+        <dc:Bounds x="459" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true">
+        <dc:Bounds x="903" y="173" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="903" y="145" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_07uk5iy_di" bpmnElement="EndEvent_07uk5iy">
+        <dc:Bounds x="910" y="286" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="322" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq">
+        <di:waypoint xsi:type="dc:Point" x="30" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="214" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="77" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19eilro_di" bpmnElement="SequenceFlow_19eilro">
+        <di:waypoint xsi:type="dc:Point" x="559" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="717" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="593" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx">
+        <di:waypoint xsi:type="dc:Point" x="817" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="903" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="815" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yayvrf_di" bpmnElement="SequenceFlow_0yayvrf">
+        <di:waypoint xsi:type="dc:Point" x="1276" y="238" />
+        <di:waypoint xsi:type="dc:Point" x="1276" y="286" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1246" y="262" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0z4faf9_di" bpmnElement="SequenceFlow_0z4faf9">
+        <di:waypoint xsi:type="dc:Point" x="314" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="459" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="341.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14zu6wr_di" bpmnElement="SequenceFlow_14zu6wr">
+        <di:waypoint xsi:type="dc:Point" x="953" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="990" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="990" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1038" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="987" y="195" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0je30si_di" bpmnElement="SequenceFlow_0je30si">
+        <di:waypoint xsi:type="dc:Point" x="1138" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1137" y="183" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fueo69_di" bpmnElement="SequenceFlow_1fueo69">
+        <di:waypoint xsi:type="dc:Point" x="928" y="223" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="286" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901" y="228" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0u3lw39_di" bpmnElement="ScriptTask_0u3lw39">
+        <dc:Bounds x="611" y="687" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0v1ffn4_di" bpmnElement="StartEvent_0v1ffn4">
+        <dc:Bounds x="496" y="709" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="469" y="750" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0eznq6x_di" bpmnElement="EndEvent_0eznq6x">
+        <dc:Bounds x="772" y="709" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="745" y="750" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0dug28e_di" bpmnElement="StartEvent_0dug28e">
+        <dc:Bounds x="363" y="456" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="336" y="497" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_03wysuk_di" bpmnElement="EndEvent_03wysuk">
+        <dc:Bounds x="942" y="456" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="915" y="497" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0u8o9p2_di" bpmnElement="ScriptTask_0u8o9p2">
+        <dc:Bounds x="621" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ang7q8_di" bpmnElement="CallActivity_1ang7q8">
+        <dc:Bounds x="798" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rn6nqi_di" bpmnElement="ScriptTask_1rn6nqi">
+        <dc:Bounds x="443" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dsbjjb_di" bpmnElement="SequenceFlow_1dsbjjb">
+        <di:waypoint xsi:type="dc:Point" x="532" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="611" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="529.5" y="727" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yay321_di" bpmnElement="SequenceFlow_1yay321">
+        <di:waypoint xsi:type="dc:Point" x="711" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="772" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701.5" y="727" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e1r62n_di" bpmnElement="SequenceFlow_0e1r62n">
+        <di:waypoint xsi:type="dc:Point" x="399" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="442" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="391" y="474" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ysapam_di" bpmnElement="SequenceFlow_1ysapam">
+        <di:waypoint xsi:type="dc:Point" x="898" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="942" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="875" y="459" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n9pexp_di" bpmnElement="SequenceFlow_0n9pexp">
+        <di:waypoint xsi:type="dc:Point" x="543" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="570" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="570" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="621" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="540" y="474" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01umodj_di" bpmnElement="SequenceFlow_01umodj">
+        <di:waypoint xsi:type="dc:Point" x="721" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="798" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="715.5" y="459" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java b/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java
index b8c4aed..6588995 100644
--- a/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java
+++ b/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java
@@ -98,11 +98,11 @@
 
     public enum Catalog {
         APIH, BPEL, RA, ASDC, GENERAL
-    };
+    }
 
     public enum StatusCode {
         COMPLETE, ERROR
-    };
+    }
 
     public enum ResponseCode {
         Suc(0), PermissionError(100), DataError(300), DataNotFound(301), BadRequest(302), SchemaError(
@@ -115,10 +115,10 @@
             return this.value;
         }
 
-        private ResponseCode(int value) {
+        ResponseCode(int value) {
             this.value = value;
         }
-    };
+    }
 
     public enum ErrorCode {
         PermissionError(100), AvailabilityError(200), DataError(300), SchemaError(400), BusinessProcesssError(
@@ -130,10 +130,10 @@
             return this.value;
         }
 
-        private ErrorCode(int value) {
+        ErrorCode(int value) {
             this.value = value;
         }
-    };
+    }
 
     private EELFLogger          logger, auditLogger, metricsLogger;
     private static final String CONFIG_FILE = System.getProperty("jboss.home.dir") + "/mso-config/uuid/uuid_"
diff --git a/common/src/main/java/org/openecomp/mso/properties/MsoPropertiesParameters.java b/common/src/main/java/org/openecomp/mso/properties/MsoPropertiesParameters.java
index 488bb35..b89a5d4 100644
--- a/common/src/main/java/org/openecomp/mso/properties/MsoPropertiesParameters.java
+++ b/common/src/main/java/org/openecomp/mso/properties/MsoPropertiesParameters.java
@@ -23,8 +23,8 @@
 
 public class MsoPropertiesParameters {
 	
-	protected enum MsoPropertiesType {JSON_PROP,JAVA_PROP};
-	
+	protected enum MsoPropertiesType {JSON_PROP,JAVA_PROP}
+
 	protected MsoPropertiesType msoPropertiesType;
 	
 	protected int refreshCounter;