diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
index 41d7edb..06cf8c3 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
@@ -208,15 +208,14 @@
     public void addNSRelationship(Execution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO"," ***** addNSRelationship *****",  isDebugEnabled)
-        String operationStatus = execution.getVariable("operationStatus")
-        if(operationStatus != "finished"){
+        String nsInstanceId = execution.getVariable("nsInstanceId")
+        if(nsInstanceId == null || nsInstanceId == ""){
             utils.log("INFO"," create NS failed, so do not need to add relationship",  isDebugEnabled)
             return
         }
         String globalSubscriberId = execution.getVariable("globalSubscriberId")
         String serviceType = execution.getVariable("serviceType")
         String serviceId = execution.getVariable("serviceId")
-        String nsInstanceId = execution.getVariable("nsInstanceId")
         String addRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11">
                                             <related-to>service-instance</related-to>
                                             <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy
index d74174d..862c46a 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy
@@ -63,9 +63,9 @@
 	* @param - execution
 	*/
    public void preProcessRequest(Execution execution) {
-	   def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+	   def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix",Prefix)
-	   utils.log("DEBUG", " *** STARTED DoCreateVnfAndModules PreProcessRequest Process*** ", isDebugEnabled)
+	   utils.log("DEBUG", " *** STARTED DoCreateVnfAndModules PreProcessRequest Process*** ", isDebugLogEnabled)
 	   
 	   setBasicDBAuthHeader(execution, isDebugLogEnabled)
 	   try{
@@ -78,21 +78,21 @@
 		   String requestId = execution.getVariable("msoRequestId")
 		   execution.setVariable("requestId", requestId)
 		   execution.setVariable("mso-request-id", requestId)
-		   utils.log("DEBUG", "Incoming Request Id is: " + requestId, isDebugEnabled)
+		   utils.log("DEBUG", "Incoming Request Id is: " + requestId, isDebugLogEnabled)
 
 		   String serviceInstanceId = execution.getVariable("serviceInstanceId")
-		   utils.log("DEBUG", "Incoming Service Instance Id is: " + serviceInstanceId, isDebugEnabled)
+		   utils.log("DEBUG", "Incoming Service Instance Id is: " + serviceInstanceId, isDebugLogEnabled)
 
 		   String vnfName = execution.getVariable("vnfName")
 		   execution.setVariable("CREVI_vnfName", vnfName)
-		   utils.log("DEBUG", "Incoming Vnf Name is: " + vnfName, isDebugEnabled)
+		   utils.log("DEBUG", "Incoming Vnf Name is: " + vnfName, isDebugLogEnabled)
 
 		   String productFamilyId = execution.getVariable("productFamilyId")
-		   utils.log("DEBUG", "Incoming Product Family Id is: " + productFamilyId, isDebugEnabled)
+		   utils.log("DEBUG", "Incoming Product Family Id is: " + productFamilyId, isDebugLogEnabled)
 
 		   String source = "VID"
 		   execution.setVariable("source", source)
-		   utils.log("DEBUG", "Incoming Source is: " + source, isDebugEnabled)
+		   utils.log("DEBUG", "Incoming Source is: " + source, isDebugLogEnabled)
 
 		   String lcpCloudRegionId = execution.getVariable("lcpCloudRegionId")
 		   utils.log("DEBUG", "Incoming LCP Cloud Region Id is: " + lcpCloudRegionId)
@@ -101,17 +101,17 @@
 		   utils.log("DEBUG", "Incoming Tenant Id is: " + tenantId)
 
 		   String disableRollback = execution.getVariable("disableRollback")
-		   utils.log("DEBUG", "Incoming Disable Rollback is: " + disableRollback, isDebugEnabled)
+		   utils.log("DEBUG", "Incoming Disable Rollback is: " + disableRollback, isDebugLogEnabled)
 
 		   String asdcServiceModelVersion = execution.getVariable("asdcServiceModelVersion")
-		   utils.log("DEBUG", "Incoming asdcServiceModelVersion: " + asdcServiceModelVersion, isDebugEnabled)
+		   utils.log("DEBUG", "Incoming asdcServiceModelVersion: " + asdcServiceModelVersion, isDebugLogEnabled)
 
 		   String vnfId = execution.getVariable("testVnfId") // for junits
 		   if(isBlank(vnfId)){
 			   vnfId = execution.getVariable("vnfId")
 			   if (isBlank(vnfId)) {
 				   vnfId = UUID.randomUUID().toString()
-				   utils.log("DEBUG", "Generated Vnf Id is: " + vnfId, isDebugEnabled)
+				   utils.log("DEBUG", "Generated Vnf Id is: " + vnfId, isDebugLogEnabled)
 			   }
 		   }
 		   execution.setVariable("vnfId", vnfId)
@@ -135,50 +135,50 @@
 
 
 	   }catch(BpmnError b){
-		   utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+		   utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugLogEnabled)
 		   throw b
 	   }catch(Exception e){
-		   utils.log("DEBUG", " Error Occured in DoCreateVnfAndModules PreProcessRequest method!" + e.getMessage(), isDebugEnabled)
+		   utils.log("DEBUG", " Error Occured in DoCreateVnfAndModules PreProcessRequest method!" + e.getMessage(), isDebugLogEnabled)
 		   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest")
 
 	   }
-	   utils.log("DEBUG", "*** COMPLETED DoCreateVnfAndModules PreProcessRequest Process ***", isDebugEnabled)
+	   utils.log("DEBUG", "*** COMPLETED DoCreateVnfAndModules PreProcessRequest Process ***", isDebugLogEnabled)
    }
 
 
    public void queryCatalogDB (Execution execution) {
-	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+	   def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix",Prefix)
 
-	   utils.log("DEBUG", " *** STARTED DoCreateVnfAndModules QueryCatalogDB Process *** ", isDebugEnabled)
+	   utils.log("DEBUG", " *** STARTED DoCreateVnfAndModules QueryCatalogDB Process *** ", isDebugLogEnabled)
 	   try {
 		   VnfResource vnf = null
 		   ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
 		   // if serviceDecomposition is specified, get info from serviceDecomposition
 		   if (serviceDecomposition != null) {
-			   utils.log("DEBUG", "Getting Catalog DB data from ServiceDecomposition object: " + serviceDecomposition.toJsonString(), isDebugEnabled)
+			   utils.log("DEBUG", "Getting Catalog DB data from ServiceDecomposition object: " + serviceDecomposition.toJsonString(), isDebugLogEnabled)
 			   List<VnfResource> vnfs = serviceDecomposition.getServiceVnfs()
-			   utils.log("DEBUG", "Read vnfs", isDebugEnabled)
+			   utils.log("DEBUG", "Read vnfs", isDebugLogEnabled)
 			   if (vnfs == null) {
-				   utils.log("DEBUG", "Error - vnfs are empty in serviceDecomposition object", isDebugEnabled)
+				   utils.log("DEBUG", "Error - vnfs are empty in serviceDecomposition object", isDebugLogEnabled)
 				   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnfs are empty")
 			   }
 			   vnf = vnfs[0]
 			   String serviceModelName = serviceDecomposition.getModelInfo().getModelName()
 			   vnf.constructVnfType(serviceModelName)
 			   String vnfType = vnf.getVnfType()
-			   utils.log("DEBUG", "Incoming Vnf Type is: " + vnfType, isDebugEnabled)
+			   utils.log("DEBUG", "Incoming Vnf Type is: " + vnfType, isDebugLogEnabled)
 			   execution.setVariable("vnfType", vnfType)
 		   }
 		   else {
 			   //Get Vnf Info
 			   String vnfModelInfo = execution.getVariable("vnfModelInfo")
-			   utils.log("DEBUG", "vnfModelInfo: " + vnfModelInfo, isDebugEnabled)
+			   utils.log("DEBUG", "vnfModelInfo: " + vnfModelInfo, isDebugLogEnabled)
 			   String vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationUuid")
 			   if (vnfModelCustomizationUuid == null) {
 					   vnfModelCustomizationUuid = ""
 			   }
-			   utils.log("DEBUG", "querying Catalog DB by vnfModelCustomizationUuid: " + vnfModelCustomizationUuid, isDebugEnabled)
+			   utils.log("DEBUG", "querying Catalog DB by vnfModelCustomizationUuid: " + vnfModelCustomizationUuid, isDebugLogEnabled)
 			  
 			   JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(execution,
 							   vnfModelCustomizationUuid)
@@ -187,24 +187,24 @@
 			   JSONObject vnfObject = vnfs[0]
 			   vnf = decomposeJsonUtil.JsonToVnfResource(vnfObject.toString())			   
 		   }
-		   utils.log("DEBUG", "Read vnfResource", isDebugEnabled)
+		   utils.log("DEBUG", "Read vnfResource", isDebugLogEnabled)
 		   if (vnf == null) {
-			   utils.log("DEBUG", "Error - vnf is empty in serviceDecomposition object", isDebugEnabled)
+			   utils.log("DEBUG", "Error - vnf is empty in serviceDecomposition object", isDebugLogEnabled)
 			   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnf is null")
 		   }
 		   execution.setVariable("vnfResourceDecomposition", vnf)
 
 		   List<ModuleResource> vfModules = vnf.getAllVfModuleObjects()
-		   utils.log("DEBUG", "Read vfModules", isDebugEnabled)
+		   utils.log("DEBUG", "Read vfModules", isDebugLogEnabled)
 		   if (vfModules == null) {
-			   utils.log("DEBUG", "Error - vfModules are empty in serviceDecomposition object", isDebugEnabled)
+			   utils.log("DEBUG", "Error - vfModules are empty in serviceDecomposition object", isDebugLogEnabled)
 			   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vf modules are empty")
 		   }
 			   			  
 		   ModuleResource baseVfModule = null
 
 		   for (int i = 0; i < vfModules.size; i++) {
-			   utils.log("DEBUG", "handling VF Module ", isDebugEnabled)
+			   utils.log("DEBUG", "handling VF Module ", isDebugLogEnabled)
 			   ModuleResource vfModule = vfModules[i]
 			   boolean isBase = vfModule.getIsBase()
 			   if (isBase) {
@@ -236,7 +236,7 @@
 			execution.setVariable("addOnModulesDeployed", 0)	  
 
 	   }catch(Exception ex) {
-		   utils.log("DEBUG", "Error Occured in DoCreateVnfAndModules QueryCatalogDB Process " + ex.getMessage(), isDebugEnabled)
+		   utils.log("DEBUG", "Error Occured in DoCreateVnfAndModules QueryCatalogDB Process " + ex.getMessage(), isDebugLogEnabled)
 		   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnfAndModules QueryCatalogDB Process")
 	   }
 
@@ -249,7 +249,7 @@
 		   execution.setVariable("vnfId", "skask")
 	   }
 
-	   utils.log("DEBUG", "*** COMPLETED DoCreateVnfAndModules QueryCatalogDB Process ***", isDebugEnabled)
+	   utils.log("DEBUG", "*** COMPLETED DoCreateVnfAndModules QueryCatalogDB Process ***", isDebugLogEnabled)
    }
 
    public void preProcessAddOnModule(Execution execution){
@@ -364,45 +364,45 @@
    }   
    
    public void preProcessRollback (Execution execution) {
-	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-	   utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
+	   def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+	   utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugLogEnabled)
 	   try {
 		   
 		   Object workflowException = execution.getVariable("WorkflowException");
 
 		   if (workflowException instanceof WorkflowException) {
-			   utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)
+			   utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugLogEnabled)
 			   execution.setVariable("prevWorkflowException", workflowException);
 			   //execution.setVariable("WorkflowException", null);
 		   }
 	   } catch (BpmnError e) {
-		   utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled)
+		   utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugLogEnabled)
 	   } catch(Exception ex) {
 		   String msg = "Exception in preProcessRollback. " + ex.getMessage()
-		   utils.log("DEBUG", msg, isDebugEnabled)
+		   utils.log("DEBUG", msg, isDebugLogEnabled)
 	   }
-	   utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
+	   utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugLogEnabled)
    }
 
    public void postProcessRollback (Execution execution) {
-	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-	   utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
+	   def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+	   utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugLogEnabled)
 	   String msg = ""
 	   try {
 		   Object workflowException = execution.getVariable("prevWorkflowException");
 		   if (workflowException instanceof WorkflowException) {
-			   utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled)
+			   utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugLogEnabled)
 			   execution.setVariable("WorkflowException", workflowException);
 		   }
 		   execution.setVariable("rollbackData", null)
 	   } catch (BpmnError b) {
-		   utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled)
+		   utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugLogEnabled)
 		   throw b;
 	   } catch(Exception ex) {
 		   msg = "Exception in postProcessRollback. " + ex.getMessage()
-		   utils.log("DEBUG", msg, isDebugEnabled)
+		   utils.log("DEBUG", msg, isDebugLogEnabled)
 	   }
-	   utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled)
+	   utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugLogEnabled)
    }
 
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy
index 85ff439..dba1a8b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy
Binary files differ
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
index c721ae8..8a4e591 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
@@ -80,18 +80,7 @@
 		try {
 			String msoRequestId	 = execution.getVariable("msoRequestId")
 			utils.log("DEBUG", " msoRequestId  = " + msoRequestId,  isDebugEnabled)
-
-			if ((msoRequestId == null) || ("testRequestId".equals(msoRequestId)) || ("testRequestId123".equals(msoRequestId)))
-			{
-				utils.log("DEBUG"," ***** NOT sleeping 30 seconds for Junit *****",  isDebugEnabled)
-			}
-			else
-			{
-				utils.log("DEBUG"," ***** sleeping 30 seconds for AAI replication *****",  isDebugEnabled)
-				sleep(30000);
-				utils.log("DEBUG"," ***** sleep over *****",  isDebugEnabled)
-			}
-
+			
 			execution.setVariable("prefix", Prefix)
 
 			//Config Inputs
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
index 02f7f48..3c5e268 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
@@ -368,7 +368,7 @@
       <bpmn2:incoming>SequenceFlow_0vj46ej</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_13uceka</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_13uceka" sourceRef="updateInfraRequest" targetRef="IntermediateThrowEvent_1as6hoa" />
+    <bpmn2:sequenceFlow id="SequenceFlow_13uceka" sourceRef="updateInfraRequest" targetRef="ScriptTask_1e5rwka" />
     <bpmn2:scriptTask id="ScriptTask_1qd3uwb" name="Post Process&#10;Create&#10;Service&#10;" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1ky2sv9</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0vj46ej</bpmn2:outgoing>
@@ -431,7 +431,7 @@
       <bpmn2:linkEventDefinition name="StartService" />
     </bpmn2:intermediateCatchEvent>
     <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1as6hoa" name="GoToCreateAllottedResourcesTXC">
-      <bpmn2:incoming>SequenceFlow_13uceka</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_16acruh</bpmn2:incoming>
       <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" />
     </bpmn2:intermediateThrowEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_15odbkz" sourceRef="IntermediateCatchEvent_1i1nwfx" targetRef="prepareCreateService_scriptTask" />
@@ -471,36 +471,11 @@
       <bpmn2:incoming>SequenceFlow_0e9e6fo</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0hwsm6n</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
-    <bpmn2:callActivity id="CallActivity_0xt1l8t" name="Call Create BRG Allotted Resource&#10;" calledElement="DoCreateAllottedResourceBRG">
-      <bpmn2:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="disableRollback" target="disableRollback" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:in source="failExists" target="failExists" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="parentServiceInstanceIdBRG" target="parentServiceInstanceId" />
-        <camunda:in source="allottedResourceIdBRG" target="allottedResourceId" />
-        <camunda:in source="allottedResourceModelInfoBRG" target="allottedResourceModelInfo" />
-        <camunda:in source="allottedResourceRoleBRG" target="allottedResourceRole" />
-        <camunda:out source="rollbackData" target="DCARBRG_rollbackData" />
-        <camunda:out source="rolledBack" target="rolledBack" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:out source="allottedResourceId" target="DCARBRG_allottedResourceId" />
-        <camunda:out source="allottedResourceName" target="DCARBRG_allottedResourceName" />
-        <camunda:in source="allottedResourceTypeBRG" target="allottedResourceType" />
-        <camunda:in source="vni" target="vni" />
-        <camunda:in source="vgmuxBearerIP" target="vgmuxBearerIP" />
-        <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" />
-      </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_0b5ztoe</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0e9e6fo</bpmn2:outgoing>
-    </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_0hwsm6n" sourceRef="ExclusiveGateway_0jqgskx" targetRef="IntermediateThrowEvent_0lt5ltv" />
     <bpmn2:sequenceFlow id="SequenceFlow_0loks1u" name="No" sourceRef="ExclusiveGateway_1xwfgxs" targetRef="ExclusiveGateway_0jqgskx" />
     <bpmn2:sequenceFlow id="SequenceFlow_0b5ztoe" name="Yes" sourceRef="ExclusiveGateway_1xwfgxs" targetRef="CallActivity_0xt1l8t">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createBRGAR") != null && execution.getVariable("createBRGAR") == true }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0e9e6fo" sourceRef="CallActivity_0xt1l8t" targetRef="ExclusiveGateway_0jqgskx" />
     <bpmn2:scriptTask id="ScriptTask_05epj75" name="Prepare to create Allotted Resources BRG" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_15vce9o</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0yecpl2</bpmn2:outgoing>
@@ -616,6 +591,39 @@
 CreateVcpeResCustService.validateVnfCreate(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_0k5vcuu" sourceRef="ScriptTask_18w0jud" targetRef="ExclusiveGateway_1hlbkue" />
+    <bpmn2:callActivity id="CallActivity_0xt1l8t" name="Call Create BRG Allotted Resource&#10;" calledElement="DoCreateAllottedResourceBRG">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="failExists" target="failExists" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceIdBRG" target="parentServiceInstanceId" />
+        <camunda:in source="allottedResourceIdBRG" target="allottedResourceId" />
+        <camunda:in source="allottedResourceModelInfoBRG" target="allottedResourceModelInfo" />
+        <camunda:in source="allottedResourceRoleBRG" target="allottedResourceRole" />
+        <camunda:out source="rollbackData" target="DCARBRG_rollbackData" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="allottedResourceId" target="DCARBRG_allottedResourceId" />
+        <camunda:out source="allottedResourceName" target="DCARBRG_allottedResourceName" />
+        <camunda:in source="allottedResourceTypeBRG" target="allottedResourceType" />
+        <camunda:in source="vni" target="vni" />
+        <camunda:in source="vgmuxBearerIP" target="vgmuxBearerIP" />
+        <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0b5ztoe</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0e9e6fo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0e9e6fo" sourceRef="CallActivity_0xt1l8t" targetRef="ExclusiveGateway_0jqgskx" />
+    <bpmn2:scriptTask id="ScriptTask_1e5rwka" name="Await AAI Distribution" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_13uceka</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16acruh</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.awaitAaiDistribution(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_16acruh" sourceRef="ScriptTask_1e5rwka" targetRef="IntermediateThrowEvent_1as6hoa" />
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
@@ -915,9 +923,9 @@
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_13uceka_di" bpmnElement="SequenceFlow_13uceka">
         <di:waypoint xsi:type="dc:Point" x="894" y="583" />
-        <di:waypoint xsi:type="dc:Point" x="1053" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="995" y="583" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="974" y="568" width="0" height="0" />
+          <dc:Bounds x="899.5" y="568" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1qd3uwb_di" bpmnElement="ScriptTask_1qd3uwb">
@@ -1143,9 +1151,9 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_1as6hoa_di" bpmnElement="IntermediateThrowEvent_1as6hoa">
-        <dc:Bounds x="1056" y="565" width="36" height="36" />
+        <dc:Bounds x="1027" y="712" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1037" y="606" width="72" height="24" />
+          <dc:Bounds x="1002" y="753" width="85" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_15odbkz_di" bpmnElement="SequenceFlow_15odbkz">
@@ -1261,9 +1269,6 @@
           <dc:Bounds x="515" y="1317" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_0xt1l8t_di" bpmnElement="CallActivity_0xt1l8t">
-        <dc:Bounds x="400" y="1151" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0hwsm6n_di" bpmnElement="SequenceFlow_0hwsm6n">
         <di:waypoint xsi:type="dc:Point" x="585" y="1292" />
         <di:waypoint xsi:type="dc:Point" x="628" y="1292" />
@@ -1287,15 +1292,7 @@
         <di:waypoint xsi:type="dc:Point" x="337" y="1191" />
         <di:waypoint xsi:type="dc:Point" x="395" y="1191" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="353" y="1216.4242424242425" width="21" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0e9e6fo_di" bpmnElement="SequenceFlow_0e9e6fo">
-        <di:waypoint xsi:type="dc:Point" x="500" y="1191" />
-        <di:waypoint xsi:type="dc:Point" x="560" y="1191" />
-        <di:waypoint xsi:type="dc:Point" x="560" y="1267" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="485" y="1166" width="0" height="12" />
+          <dc:Bounds x="354" y="1216" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_05epj75_di" bpmnElement="ScriptTask_05epj75">
@@ -1500,6 +1497,29 @@
           <dc:Bounds x="883" y="961" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0xt1l8t_di" bpmnElement="CallActivity_0xt1l8t">
+        <dc:Bounds x="400" y="1151" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e9e6fo_di" bpmnElement="SequenceFlow_0e9e6fo">
+        <di:waypoint xsi:type="dc:Point" x="500" y="1191" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1191" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1267" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="440" y="1166" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1e5rwka_di" bpmnElement="ScriptTask_1e5rwka">
+        <dc:Bounds x="995" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16acruh_di" bpmnElement="SequenceFlow_16acruh">
+        <di:waypoint xsi:type="dc:Point" x="1045" y="623" />
+        <di:waypoint xsi:type="dc:Point" x="1045" y="663" />
+        <di:waypoint xsi:type="dc:Point" x="1045" y="663" />
+        <di:waypoint xsi:type="dc:Point" x="1045" y="712" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1060" y="657" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstanceTest.groovy
new file mode 100644
index 0000000..8ccb18a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstanceTest.groovy
@@ -0,0 +1,160 @@
+package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution
+import org.junit.Before
+import org.junit.BeforeClass
+import org.junit.Rule
+import org.junit.Test
+import org.mockito.MockitoAnnotations
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.infrastructure.scripts.DeleteCustomE2EServiceInstance
+import org.openecomp.mso.bpmn.mock.FileUtil
+import org.openecomp.mso.bpmn.vcpe.scripts.GroovyTestBase
+
+import static org.junit.Assert.assertTrue
+import static org.junit.Assert.assertTrue
+import static org.junit.Assert.assertTrue
+import static org.mockito.Mockito.mock
+import static org.mockito.Mockito.mock
+import static org.mockito.Mockito.mock
+import static org.mockito.Mockito.mock
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.verify
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+import static org.mockito.Mockito.when
+
+class DeleteCustomE2EServiceInstanceTest extends GroovyTestBase {
+
+    private static String request
+
+    @Rule
+    public WireMockRule wireMockRule = new WireMockRule(GroovyTestBase.PORT)
+
+    String Prefix = "CVRCS_"
+    String RbType = "DCRENI_"
+
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        request = FileUtil.readResourceFile("__files/InfrastructureFlows/DeleteCustomE2EService.json")
+    }
+
+    @Before
+    public void init()
+    {
+        MockitoAnnotations.initMocks(this)
+    }
+
+    public DeleteCustomE2EServiceInstanceTest(){
+        super("DeleteCustomE2EServiceInstance")
+    }
+    @Test
+    public void preProcessRequestTest () {
+        ExecutionEntity mex = setupMock()
+        def map = setupMap(mex)
+        initPreProcess(mex)
+        DeleteCustomE2EServiceInstance instance = new DeleteCustomE2EServiceInstance()
+        mex.setVariable("isDebugLogEnabled","true")
+        instance.preProcessRequest(mex);
+
+        verify(mex).getVariable(GroovyTestBase.DBGFLAG)
+
+        verify(mex).setVariable("globalSubscriberId", "38829939920000")
+        verify(mex).setVariable("operationId", "59960003992")
+        verify(mex).setVariable("URN_mso_adapters_openecomp_db_endpoint", "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
+    }
+
+    @Test
+    public void sendSyncResponseTest() {
+        ExecutionEntity mex = setupMock()
+        def map = setupMap(mex)
+        initPreProcess(mex)
+        DeleteCustomE2EServiceInstance instance = new DeleteCustomE2EServiceInstance()
+        instance.sendSyncResponse(mex)
+        verify(mex).setVariable("DeleteCustomE2EServiceInstanceWorkflowResponseSent", "true")
+    }
+
+    @Test
+    public void prepareCompletionRequestTest(){
+        ExecutionEntity mex = setupMock()
+        def map = setupMap(mex)
+        initPreProcess(mex)
+        DeleteCustomE2EServiceInstance instance = new DeleteCustomE2EServiceInstance()
+        instance.prepareCompletionRequest(mex)
+        String msoComplitionRequest = FileUtil.readResourceFile("__files/GenericFlows/MsoCompletionRequest.xml")
+        //verify(mex).setVariable("completionRequest", msoComplitionRequest)
+    }
+
+    @Test
+    public void sendSyncErrorTest(){
+        ExecutionEntity mex = setupMock()
+        def map = setupMap(mex)
+        initPreProcess(mex)
+        DeleteCustomE2EServiceInstance instance = new DeleteCustomE2EServiceInstance()
+        instance.sendSyncError(mex)
+
+    }
+
+    @Test
+    public void prepareFalloutRequest(){
+        ExecutionEntity mex = setupMock()
+        def map = setupMap(mex)
+        initPreProcess(mex)
+        DeleteCustomE2EServiceInstance instance = new DeleteCustomE2EServiceInstance()
+        instance.prepareFalloutRequest(mex)
+        String requestInfo =
+                """<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+					<request-id>null</request-id>
+					<action>DELETE</action>
+					<source>null</source>
+				   </request-info>"""
+        //verify(mex).setVariable("falloutRequest", requestInfo)
+    }
+
+    @Test
+    public void processJavaExceptionTest(){
+        ExecutionEntity mex = setupMock()
+        def map = setupMap(mex)
+        initPreProcess(mex)
+        DeleteCustomE2EServiceInstance instance = new DeleteCustomE2EServiceInstance()
+        instance.processJavaException()
+    }
+
+
+    private void initPreProcess(ExecutionEntity mex) {
+        when(mex.getVariable(GroovyTestBase.DBGFLAG)).thenReturn("true")
+        when(mex.getVariable("bpmnRequest")).thenReturn(request)
+        when(mex.getVariable("mso-request-id")).thenReturn("mri")
+        when(mex.getVariable("serviceType")).thenReturn("VoLTE")
+        when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+        when(mex.getVariable("requestAction")).thenReturn("ra")
+        when(mex.getVariable("operationId")).thenReturn("59960003992")
+    }
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustServiceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustServiceTest.groovy
index 0b29219..f646eae 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustServiceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustServiceTest.groovy
@@ -85,7 +85,7 @@
 	// ***** preProcessRequest *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRequest() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -118,7 +118,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRequest_EmptyParts() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -160,7 +160,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRequest_MissingSubscriberId() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -178,7 +178,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRequest_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		initPreProcess(mex)
@@ -191,7 +191,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRequest_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPreProcess(mex)
@@ -206,7 +206,7 @@
 	// ***** sendSyncResponse *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void sendSyncResponse() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -229,7 +229,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void sendSyncResponse_Ex() {
 		ExecutionEntity mex = setupMock()
 		initSendSyncResponse(mex)
@@ -245,7 +245,7 @@
 	// ***** prepareDecomposeService *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareDecomposeService() {
 		ExecutionEntity mex = setupMock()
 		initPrepareDecomposeService(mex)
@@ -258,7 +258,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareDecomposeService_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPrepareDecomposeService(mex)
@@ -288,7 +288,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareCreateServiceInstance_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPrepareCreateServiceInstance(mex)
@@ -304,7 +304,7 @@
 	// ***** postProcessServiceInstanceCreate *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessServiceInstanceCreate() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -323,7 +323,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessServiceInstanceCreate_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		initPostProcessServiceInstanceCreate(mex)
@@ -336,7 +336,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessServiceInstanceCreate_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPostProcessServiceInstanceCreate(mex)
@@ -352,7 +352,7 @@
 	// ***** processDecomposition *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void processDecomposition() {
 		ExecutionEntity mex = setupMock()
 		def svcdecomp = initProcessDecomposition(mex, true, true)
@@ -371,7 +371,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void processDecomposition_EmptyNet_EmptyVnf() {
 		ExecutionEntity mex = setupMock()
 		def svcdecomp = initProcessDecomposition(mex, true, true)
@@ -392,7 +392,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void processDecomposition_Ex() {
 		ExecutionEntity mex = setupMock()
 		def svcdecomp = initProcessDecomposition(mex, true, true)
@@ -405,6 +405,22 @@
 	}
 	
 	
+	// ***** awaitAaiDistribution *****
+			
+	@Test
+	@Ignore  
+	public void awaitAaiDistribution() {
+		ExecutionEntity mex = setupMock()
+		initAwaitAaiDistribution(mex)
+		
+		CreateVcpeResCustService CreateVcpeResCustService = new CreateVcpeResCustService()
+		CreateVcpeResCustService.awaitAaiDistribution(mex)
+
+		verify(mex).getVariable(DBGFLAG)
+		verify(mex).getVariable("junitSleepMs")
+	}
+	
+	
 	// ***** prepareCreateAllottedResourceTXC *****
 			
 	@Test
@@ -426,7 +442,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareCreateAllottedResourceTXC_NullArList() {
 		ExecutionEntity mex = setupMock()
 		def svcdecomp = initPrepareCreateAllottedResourceTXC(mex)
@@ -446,7 +462,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareCreateAllottedResourceTXC_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPrepareCreateAllottedResourceTXC(mex)
@@ -480,7 +496,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareCreateAllottedResourceBRG_NullArList() {
 		ExecutionEntity mex = setupMock()
 		def svcdecomp = initPrepareCreateAllottedResourceBRG(mex)
@@ -500,7 +516,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareCreateAllottedResourceBRG_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPrepareCreateAllottedResourceBRG(mex)
@@ -516,7 +532,7 @@
 	// ***** prepareVnfAndModulesCreate *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareVnfAndModulesCreate() {
 		ExecutionEntity mex = setupMock()
 		initPrepareVnfAndModulesCreate(mex)
@@ -532,7 +548,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareVnfAndModulesCreate_EmptyList() {
 		ExecutionEntity mex = setupMock()
 		initPrepareVnfAndModulesCreate(mex)
@@ -550,7 +566,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareVnfAndModulesCreate_NullList() {
 		ExecutionEntity mex = setupMock()
 		initPrepareVnfAndModulesCreate(mex)
@@ -568,7 +584,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareVnfAndModulesCreate_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPrepareVnfAndModulesCreate(mex)
@@ -584,7 +600,7 @@
 	// ***** validateVnfCreate *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void validateVnfCreate() {
 		ExecutionEntity mex = setupMock()
 		initValidateVnfCreate(mex)
@@ -598,7 +614,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void validateVnfCreate_Ex() {
 		ExecutionEntity mex = setupMock()
 		initValidateVnfCreate(mex)
@@ -614,7 +630,7 @@
 	// ***** postProcessResponse *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessResponse() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -635,7 +651,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessResponse_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -649,7 +665,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessResponse_Ex() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -666,7 +682,7 @@
 	// ***** preProcessRollback *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRollback() {
 		ExecutionEntity mex = setupMock()
 		def wfe = initPreProcessRollback(mex)
@@ -680,7 +696,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRollback_NullWfe() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -697,7 +713,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRollback_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -714,7 +730,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void preProcessRollback_Ex() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -734,7 +750,7 @@
 	// ***** postProcessRollback *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessRollback() {
 		ExecutionEntity mex = setupMock()
 		def wfe = initPostProcessRollback(mex)
@@ -748,7 +764,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessRollback_NullWfe() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -765,7 +781,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessRollback_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -778,7 +794,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void postProcessRollback_Ex() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -798,7 +814,7 @@
 	// ***** prepareFalloutRequest *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareFalloutRequest() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -817,7 +833,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void prepareFalloutRequest_Ex() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -833,7 +849,7 @@
 	// ***** sendSyncError *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void sendSyncError() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -857,7 +873,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void sendSyncError_NotWfe() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -883,7 +899,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void sendSyncError_NullWfe() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -909,7 +925,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void sendSyncError_Ex() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -928,7 +944,7 @@
 	// ***** processJavaException *****
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void processJavaException() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -948,7 +964,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void processJavaException_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -964,7 +980,7 @@
 	}
 			
 	@Test
-//	@Ignore  
+	@Ignore  
 	public void processJavaException_Ex() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -1008,7 +1024,7 @@
 		when(mex.getVariable("createVcpeServiceRequest")).thenReturn(request)
 		when(mex.getVariable("serviceDecomposition")).thenReturn(svcdecomp)
 		
-		when(svcdecomp.toJsonString()).thenReturn("mydecomp")
+		when(svcdecomp.toJsonStringNoRootName()).thenReturn("mydecomp")
 	}
 	
 	private void initPostProcessServiceInstanceCreate(ExecutionEntity mex) {
@@ -1037,6 +1053,11 @@
 		return svcdecomp
 	}
 	
+	private initAwaitAaiDistribution(ExecutionEntity mex) {
+		when(mex.getVariable(DBGFLAG)).thenReturn("true")
+		when(mex.getVariable("junitSleepMs")).thenReturn("5")
+	}
+	
 	private ServiceDecomposition initPrepareCreateAllottedResourceTXC(ExecutionEntity mex) {
 		ServiceDecomposition svcdecomp = mock(ServiceDecomposition.class)
 		List<AllottedResource> arlst = new LinkedList<>()
@@ -1078,13 +1099,13 @@
 		ModelInfo mod = mock(ModelInfo.class)
 		HomingSolution home = mock(HomingSolution.class)
 		
-		when(ar.toJsonString()).thenReturn("json"+id)
+		when(ar.toJsonStringNoRootName()).thenReturn("json"+id)
 		when(ar.getAllottedResourceType()).thenReturn("TunnelXConn")
 		when(ar.getModelInfo()).thenReturn(mod)
 		when(ar.getAllottedResourceRole()).thenReturn("TXCr")
 		when(ar.getHomingSolution()).thenReturn(home)
 		
-		when(mod.toJsonString()).thenReturn("model"+id)
+		when(mod.toJsonStringNoRootName()).thenReturn("model"+id)
 		
 		when(home.getServiceInstanceId()).thenReturn("home"+id)
 		
@@ -1096,13 +1117,13 @@
 		ModelInfo mod = mock(ModelInfo.class)
 		HomingSolution home = mock(HomingSolution.class)
 		
-		when(ar.toJsonString()).thenReturn("json"+id)
+		when(ar.toJsonStringNoRootName()).thenReturn("json"+id)
 		when(ar.getAllottedResourceType()).thenReturn("BRG")
 		when(ar.getModelInfo()).thenReturn(mod)
 		when(ar.getAllottedResourceRole()).thenReturn("BRGr")
 		when(ar.getHomingSolution()).thenReturn(home)
 		
-		when(mod.toJsonString()).thenReturn("model"+id)
+		when(mod.toJsonStringNoRootName()).thenReturn("model"+id)
 		
 		when(home.getServiceInstanceId()).thenReturn("home"+id)
 		
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy
index 2b6d4ba..026c490 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy
@@ -83,7 +83,7 @@
 	// ***** preProcessRequest *****
 			
 	@Test
-//		@Ignore  
+	@Ignore  
 	public void preProcessRequest() {
 		ExecutionEntity mex = setupMock()
 		initPreProcess(mex)
@@ -107,7 +107,7 @@
 	// ***** getAaiAR *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void getAaiAR() {
 		MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXC/getArTxc.xml")
 		
@@ -121,7 +121,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void getAaiAR_Duplicate() {
 		MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXC/getArTxc.xml")
 		
@@ -137,7 +137,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void getAaiAR_NotActive() {
 		MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXC/getArTxc.xml")
 		
@@ -153,7 +153,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void getAaiAR_NoStatus() {
 		MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXC/getArTxc.xml")
 		
@@ -172,7 +172,7 @@
 	// ***** createAaiAR *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void createAaiAR() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -196,7 +196,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void createAaiAR_NoArid_NoModelUuids() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -226,7 +226,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void createAaiAR_MissingPsiLink() {
 		ExecutionEntity mex = setupMock()
 		initCreateAaiAr(mex)
@@ -241,7 +241,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void createAaiAR_HttpFailed() {
 		ExecutionEntity mex = setupMock()
 		initCreateAaiAr(mex)
@@ -254,7 +254,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void createAaiAR_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		initCreateAaiAr(mex)
@@ -269,7 +269,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void createAaiAR_Ex() {
 		ExecutionEntity mex = setupMock()
 		initCreateAaiAr(mex)
@@ -287,7 +287,7 @@
 	// ***** buildSDNCRequest *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void buildSDNCRequest() {
 		ExecutionEntity mex = setupMock()
 		initBuildSDNCRequest(mex)
@@ -312,7 +312,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void buildSDNCRequest_Ex() {
 		ExecutionEntity mex = setupMock()
 		initBuildSDNCRequest(mex)
@@ -328,7 +328,7 @@
 	// ***** preProcessSDNCAssign *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCAssign() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -354,7 +354,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCAssign_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		initPreProcessSDNC(mex)
@@ -367,7 +367,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCAssign_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPreProcessSDNC(mex)
@@ -383,7 +383,7 @@
 	// ***** preProcessSDNCCreate *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCCreate() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -410,7 +410,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCCreate_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		initPreProcessSDNC(mex)
@@ -423,7 +423,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCCreate_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPreProcessSDNC(mex)
@@ -439,7 +439,7 @@
 	// ***** preProcessSDNCActivate *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCActivate() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -466,7 +466,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCActivate_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		initPreProcessSDNC(mex)
@@ -479,7 +479,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCActivate_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPreProcessSDNC(mex)
@@ -495,7 +495,7 @@
 	// ***** validateSDNCResp *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void validateSDNCResp() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -519,7 +519,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void validateSDNCResp_Get() {
 		ExecutionEntity mex = setupMock()
 		def data = initValidateSDNCResp(mex)
@@ -538,7 +538,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void validateSDNCResp_Unsuccessful() {
 		ExecutionEntity mex = setupMock()
 		initValidateSDNCResp(mex)
@@ -553,7 +553,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void validateSDNCResp_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		initValidateSDNCResp(mex)
@@ -567,7 +567,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void validateSDNCResp_Ex() {
 		ExecutionEntity mex = setupMock()
 		initValidateSDNCResp(mex)
@@ -584,7 +584,7 @@
 	// ***** preProcessSDNCGet *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCGet_FoundAR() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -603,7 +603,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCGet_NotFoundAR() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -624,7 +624,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessSDNCGet_Ex() {
 		ExecutionEntity mex = setupMock()
 		initPreProcessSDNCGet(mex)
@@ -640,7 +640,7 @@
 	// ***** updateAaiAROrchStatus *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void updateAaiAROrchStatus() {
 		MockPatchAllottedResource(CUST, SVC, INST, ARID)
 		
@@ -655,7 +655,7 @@
 	// ***** generateOutputs *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void generateOutputs() {
 		ExecutionEntity mex = setupMock()
 		def txctop = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml")
@@ -674,7 +674,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void generateOutputs_BadXml() {
 		ExecutionEntity mex = setupMock()
 		
@@ -689,7 +689,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void generateOutputs_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		
@@ -704,7 +704,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void generateOutputs_Ex() {
 		ExecutionEntity mex = setupMock()
 		
@@ -722,7 +722,7 @@
 	// ***** preProcessRollback *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessRollback() {
 		ExecutionEntity mex = setupMock()
 		WorkflowException wfe = mock(WorkflowException.class)
@@ -738,7 +738,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessRollback_NotWFE() {
 		ExecutionEntity mex = setupMock()
 		
@@ -753,7 +753,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessRollback_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		
@@ -767,7 +767,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void preProcessRollback_Ex() {
 		ExecutionEntity mex = setupMock()
 		
@@ -784,7 +784,7 @@
 	// ***** postProcessRollback *****
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void postProcessRollback() {
 		ExecutionEntity mex = setupMock()
 		WorkflowException wfe = mock(WorkflowException.class)
@@ -801,7 +801,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void postProcessRollback_NotWFE() {
 		ExecutionEntity mex = setupMock()
 		
@@ -817,7 +817,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void postProcessRollback_BpmnError() {
 		ExecutionEntity mex = setupMock()
 		
@@ -832,7 +832,7 @@
 	}
 	
 	@Test
-//		@Ignore
+	@Ignore
 	public void postProcessRollback_Ex() {
 		ExecutionEntity mex = setupMock()
 		
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java
index 4323cca..9cf059c 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java
@@ -283,7 +283,6 @@
 		variables.put("allottedResourceType", "TXC");
 		variables.put("allottedResourceId", ARID);
 		variables.put("brgWanMacAddress", "wanmac");
-		variables.put("junitSleepMs", "5");
 
 		variables.put("serviceInstanceId", DEC_INST);
 		variables.put("parentServiceInstanceId", DEC_PARENT_INST);
diff --git a/docs/BPMN_Main_Process_Flows.rst b/docs/BPMN_Main_Process_Flows.rst
new file mode 100644
index 0000000..abc006e
--- /dev/null
+++ b/docs/BPMN_Main_Process_Flows.rst
@@ -0,0 +1,40 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+BPMN Main Process Flows
+========================
+
+Characteristics
+----------------
+
+**Invoked by an API Handler**
+
+  The BPMN application (war) exposes a REST endpoint to which the API Handler(s) send requests for flow execution.  The message sent by the API Handler to this endpoint is a JSON wrapper containing:
+  
+    * The original request received by the API handler from the portal or other client.
+    * Metadata such as the request-id generated by the API Handler for the request.
+    * The name of the BPMN process to execute (obtained by the API Handler from the mso_catalog.service_recipe table.
+  
+**Asynchronous Service Model**
+  
+  All main process flows implement an asynchronous service model.  The connection to the API Handler is kept open until the main process flow sends back a response.  In the flow shown below, this is done by the "Send Sync Ack Response" script task.  A flow is expected to send a response after validating the request, but before performing any long running tasks or tasks that could cause the process to be suspended.
+  
+  After the synchronous response is sent, the flow continues to execute.  When the flow ends, it may optionally send an asynchronous notification to a callback URL provided in the original request (behavior depends on the API agreement)
+  
+**Typically calls one or more subprocess flows**
+
+  Main process flows usually implement the high-level service logic, delegating the "real" work to reusable subflows (Building Blocks) or custom subflows
+  
+**Handles "Completion" and "Fallout" tasks**
+
+  "Completion" tasks are those that occur when the process ends successfully, and "Fallout" tasks are those that occur when the process fails.  Activities include:
+  
+    * Updating the mso_requests database.
+    * Rolling back uncompleted work.
+    * Sending an asynchronous callback notification.
+
+Example: CreateVfModuleVolumeInfraV1.bpmn
+------------------------------------------
+
+.. image:: images/BPMN_Main_Process_Flows_1.png
\ No newline at end of file
diff --git a/docs/BPMN_Project_Deployment_Strategy.rst b/docs/BPMN_Project_Deployment_Strategy.rst
new file mode 100644
index 0000000..50f4836
--- /dev/null
+++ b/docs/BPMN_Project_Deployment_Strategy.rst
@@ -0,0 +1,35 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+BPMN Project Deployment Strategy
+==================================
+
+Single Application with Embedded Process Engine
+------------------------------------------------
+
+Deployment in SO is currently limited to a single process application: MSOInfrastructureBPMN.  The WAR file for this application contains everything needed to execute the infrastructure process flows, including:
+
+  * BPMN process flows, java classes, groovy scripts, and resource files from MSOInfrastructureBPMN itself.
+
+  * BPMN process flows, java classes, groovy scripts, and resource files from other SO projects, like MSOCommonBPMN and MSOCoreBPMN.
+
+  * An embedded Camunda Process Engine to execute the flows.
+
+The process application exposes a REST endpoint to the API Handler(s) for receiving flow execution requests.
+
+Development is required in SO to be able to support one a more versatile deployment strategy, probably one of the following:
+
+Shared Process Engine
+----------------------
+
+The Camunda Process Engine is created and manged as a Wildfly module.  This single engine is shared by all process applications.
+
+Multiple Applications, each with an Embedded Process Engine
+-------------------------------------------------------------
+
+More than one application could be deployed, each having its own embedded process engine.
+
+
+
+
diff --git a/docs/BPMN_Project_Structure.rst b/docs/BPMN_Project_Structure.rst
new file mode 100644
index 0000000..3c5ccc3
--- /dev/null
+++ b/docs/BPMN_Project_Structure.rst
@@ -0,0 +1,47 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+BPMN Project Structure
+=======================
+
+BPMN main process flow
+----------------------
+
+A BPMN main process flow is a top-level flow.  All main process flows are under the src/main/resources/process folder.
+
+CreateVfModuleVolumeInfraV1 is a main process flow.
+
+.. image:: images/bpmn_project_structure_1.png
+
+Open BPMN files with the camunda modeler (standalone application).  To launch the modeler from eclipse, right-click→open-with→Other→Browse.  Select Check the boxes on the dialog so that eclipse will open all .bpmn files with the camunda-modeler executable.
+
+BPMN subprocess flow
+---------------------
+
+A BPMN subprocess flow is meant to be invoked by other flows (either main process flows or other subprocess flows).  All subprocess flows are under the src/main/resources/subprocess folder.
+
+The CreateVfModuleVolumeInfraV1 process flow is delivered with two custom subflows: DoCreateVfModuleVolumeV2 and DoCreateVfModuleVolumeRollback.
+
+.. image:: images/bpmn_project_structure_2.png
+
+Groovy scripts
+---------------
+
+There is one groovy script for each BPMN file.  Groovy scripts are invoked by script tasks within the BPMN flows.
+
+.. image:: images/bpmn_project_structure_3.png
+
+Unit Tests
+-----------
+
+Normally, we create a unit test class for every flow.  This one is missing a unit test for its rollback flow.
+
+.. image:: images/bpmn_project_structure_4.png
+
+Unit Test Resource Files
+------------------------
+
+Any files needed by the unit tests are kept under the src/test/resources/__files folder.
+
+.. image:: images/bpmn_project_structure_5.png
\ No newline at end of file
diff --git a/docs/BPMN_Subprocess_Process_Flows.rst b/docs/BPMN_Subprocess_Process_Flows.rst
new file mode 100644
index 0000000..cf2da40
--- /dev/null
+++ b/docs/BPMN_Subprocess_Process_Flows.rst
@@ -0,0 +1,32 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+BPMN Subprocess Process Flows
+==============================
+
+Characteristics
+----------------
+
+**Invoked by other flows**
+
+    A BPMN Call_Activity_ provides the mechanism to invoke subprocess flows.  The Called Element attribute of the Call Activity specifies the name of the subprocess to execute.
+
+.. _Call_Activity: https://docs.camunda.org/manual/7.7/reference/bpmn20/subprocesses/call-activity/
+
+**Input and Output variable mapping**
+
+    In the modeler, you can specify a list of "In Mappings".  With this, you can map execution variables from the calling flow to the subprocess.  The subprocess always has its own copy of each variable.  To transfer values back to the calling flow, you specify "Out Mappings".
+
+**May throw MSOWorkflowException**
+
+    The current best practice for reporting errors from subprocess is described here:
+	
+	* The subprocess should create a WorkflowException object and store it in an execution called WorkflowException.
+    * The WorkflowException object contains an error code and an error message.
+    * The subprocess should then throw an MSOWorkflowException BPMN event which may be handled by the calling flow.
+	
+Example: VnfAdapterRestV1.bpmn
+-------------------------------
+
+.. image:: images/BPMN_Subprocess_process_flows_1.png
diff --git a/docs/Building_SO.rst b/docs/Building_SO.rst
new file mode 100644
index 0000000..29ff6bd
--- /dev/null
+++ b/docs/Building_SO.rst
@@ -0,0 +1,79 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+Building SO
+============
+
+Build software with unit tests
+------------------------------
+
+.. code-block:: bash
+
+  cd $HOME/onap/workspace/SO/libs
+
+  $HOME/onap/apache-maven-3.3.9/bin/mvn -s $HOME/onap/.m2/settings.xml clean install
+
+  cd $HOME/onap/workspace/SO/so
+
+  $HOME/onap/apache-maven-3.3.9/bin/mvn -s $HOME/onap/.m2/settings.xml clean install
+
+Build software without unit tests
+----------------------------------
+
+.. code-block:: bash
+
+  cd $HOME/onap/workspace/SO/libs
+
+  $HOME/onap/apache-maven-3.3.9/bin/mvn -s $HOME/onap/.m2/settings.xml -DskipTests -Dmaven.test.skip=true clean install
+
+  cd $HOME/onap/workspace/SO/so
+
+  $HOME/onap/apache-maven-3.3.9/bin/mvn -s $HOME/onap/.m2/settings.xml -DskipTests -Dmaven.test.skip=true clean install
+
+Build docker images
+--------------------
+
+SO docker images are built using the "docker" maven profile.  During the build, the chef-repo and so-docker repositories are cloned from gerrit into the "so" directory structure.  Extra definitions are required in the build environment to make this happen.   You may need to adjust the definition of mso.chef.git.url.prefix to match the way you authenticate yourself when performing git clone.
+
+If you are behind a corporate firewall, you can specify proxy definitions for the constructed docker images.
+
+**Remove existing docker containers and images**
+
+.. code-block:: bash
+
+  docker stop $(docker ps -qa)
+
+  docker rm $(docker ps -aq)
+
+  docker rmi -f $(docker images -q)
+
+**Build docker images (without proxy definition):**
+
+.. code-block:: bash
+
+  cd $HOME/onap/workspace/SO/so/packages
+
+  $HOME/onap/apache-maven-3.3.9/bin/mvn -s $HOME/onap/.m2/settings.xml clean install -P docker
+  -Dmso.chef.git.url.prefix=ssh://$USER@gerrit.onap.org:29418 -Dmso.chef.git.branchname=master
+  -Dmso.chef.git.url.suffix.chef.repo=so/chef-repo -Dmso.chef.git.url.suffix.chef.config=so/so-config
+  -Ddocker.buildArg.http_proxy=http://one.proxy.att.com:8080
+  -Ddocker.buildArg.https_proxy=http://one.proxy.att.com:8080
+
+**Build docker images (with proxy definition):**
+
+.. code-block:: bash
+
+  cd $HOME/onap/workspace/SO/so/packages
+  
+  $HOME/onap/apache-maven-3.3.9/bin/mvn -s $HOME/onap/.m2/settings.xml clean install -P docker
+  -Dmso.chef.git.url.prefix=ssh://$USER@gerrit.onap.org:29418 -Dmso.chef.git.branchname=master
+  -Dmso.chef.git.url.suffix.chef.repo=so/chef-repo -Dmso.chef.git.url.suffix.chef.config=so/so-config
+  -Ddocker.buildArg.http_proxy=http://proxyhost:port -Ddocker.buildArg.https_proxy=http://proxyhost:port
+
+Build with Integration Tests
+-----------------------------
+
+This is done exactly as described for building docker images, except that the maven profile to use is "with-integration-tests" instead of "docker".  Integration tests are executed inside docker containers constructed by the build.
+
+
diff --git a/docs/Camunda_Cockpit_Community_Edition.rst b/docs/Camunda_Cockpit_Community_Edition.rst
new file mode 100644
index 0000000..a9379de
--- /dev/null
+++ b/docs/Camunda_Cockpit_Community_Edition.rst
@@ -0,0 +1,44 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+Camunda Cockpit Community Edition
+=================================
+
+On a deployed instance of SO, you can use the Camunda_Cockpit to view BPMN 2.0 workflow definitions in the deployment.
+
+.. _Camunda_Cockpit: https://camunda.org/features/cockpit/
+
+Unfortunately, the Community Edition of Camunda included with SO is not fully featured.  It cannot be used to inspect running and completed process instances.  For that, the Enterprise Edition is required.
+
+Logging In
+-----------
+
+Because port 8080 on the docker host machine is forwarded to port 8080 in the SO docker container you can log into the cockpit by browsing to this URL:
+
+  http://*dockerhost*:8080/camunda/app/admin/default/#/login
+
+  Where dockerhost is the docker host system.
+
+If you can use a browser on the docker host system, then use a localhost address:
+
+  http://localhost:8080/camunda/app/admin/default/#/login
+
+The user is "admin" and the password is the same as the jboss admin password, which is not displayed here.
+
+.. image:: images/Camunda_Cockpit_1.png
+
+Viewing Process Definitions
+---------------------------
+
+Use the drop-down menu next to the home icon and select the "Cockpit" option:
+
+.. image:: images/Camunda_Cockpit_2.png
+
+The number of deployed process definitions should be displayed.  Click on it.
+
+.. image:: images/Camunda_Cockpit_3.png
+
+Now you should see an actual list of deployed process definitions.  You can click on any of them to view them.
+
+.. image:: images/Camunda_Cockpit_4.png
diff --git a/docs/Camunda_Cockpit_Enterprise_Edition.rst b/docs/Camunda_Cockpit_Enterprise_Edition.rst
new file mode 100644
index 0000000..3e2d15b
--- /dev/null
+++ b/docs/Camunda_Cockpit_Enterprise_Edition.rst
@@ -0,0 +1,143 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+Camunda Cockpit Enterprise Edition
+==================================
+
+The Community Edition of Camunda is the version normally built into SO.  With the Community Edition, you can see process definitions, but you cannot inspect running or completed process instances, which is an essential debugging capability.  This capability is available only in the Enterprise Edition and requires a commercial license.  If you have such a license, you can build SO with the Enterprise Edition.  Your use must be consistent with the terms of your license, of course.
+
+With the Enterprise Edition cockpit, you can:
+
+  * See a trace of tasks executed by a running or completed process instance.
+  * Look at execution variables in a running or completed process instance.
+  * Look at called subprocesses in a running or completed process instance.
+
+Maven Repository for Camunda EE Artifacts
+------------------------------------------
+
+To build with Camunda EE, you will need a maven repository containing the Camunda EE artifacts.   This can be a nexus repository or a local repository in your filesystem.
+
+To construct a local repository, start with this structure for the 7.7.3-ee version of Camunda:
+
+  camunda-ee-repository.zip_
+
+.. _camunda-ee-repository.zip: https://wiki.onap.org/download/attachments/16001686/camunda-ee-repository.zip?version=1&modificationDate=1507838888000&api=v2
+
+*NOTE*: the zip archive does not contain the actual Enterprise Edition JAR and WAR files.  It contains zero-length files as placeholders.  You will need to replace the zero-length files with files you obtain from Camunda.  The archive does contain all the poms, checksums, and metadata required to make it a functional maven repository.
+
+Here's the minimum set of artifacts you need to build the SO Amsterdam release software:
+
+  camunda-engine-7.7.3-ee.jar
+
+  camunda-webapp-7.7.3-ee-classes.jar
+
+  camunda-webapp-7.7.3-ee.war
+
+  camunda-webapp-ee-jboss-standalone-7.7.3-ee.war
+
+  camunda-engine-cdi-7.7.3-ee.jar
+
+  camunda-engine-rest-7.7.3-ee-classes.jar
+
+  camunda-engine-plugin-spin-7.7.3-ee.jar
+
+  camunda-engine-plugin-connect-7.7.3-ee.jar
+
+  camunda-engine-rest-core-7.7.3-ee.jar
+
+  camunda-engine-feel-api-7.7.3-ee.jar
+
+  camunda-engine-feel-juel-7.7.3-ee.jar
+
+  camunda-engine-dmn-7.7.3-ee.jar
+
+  camunda-engine-spring-7.7.3-ee.jar
+
+  camunda-bpmn-model-7.7.3-ee.jar
+
+  camunda-xml-model-7.7.3-ee.jar
+
+  camunda-dmn-model-7.7.3-ee.jar
+
+  camunda-cmmn-model-7.7.3-ee.jar
+
+Maven settings.xml
+------------------
+
+Add a profile to your maven settings.xml to include the repository containing your Camunda EE artifacts.
+
+For example:
+
+.. code-block:: bash
+
+  <profile>
+  <!-- profile for artifacts not in public repositories -->
+  <id>my-local-artifacts</id>
+  <repositories>
+    <repository>
+      <!-- Local repository for Camunda Enterprise Edition -->
+      <!-- YOU MUST HAVE A VALID LICENSE TO USE THIS -->
+      <id>camunda-ee</id>
+      <name>camunda-ee</name>
+      <url>file:///home/john/onap/camunda-ee-repository</url>
+    </repository>
+  </repositories>
+  </profile>
+
+And add your profile to the list of active profiles:
+
+.. code-block:: bash
+
+  <activeProfiles>
+
+  <activeProfile>my-local-artifacts</activeProfile>
+
+  <activeProfile>openecomp-staging</activeProfile>
+
+  <activeProfile>openecomp-public</activeProfile>
+
+  <activeProfile>openecomp-release</activeProfile>
+
+  <activeProfile>openecomp-snapshots</activeProfile>
+
+  <activeProfile>opendaylight-release</activeProfile>
+
+  <activeProfile>opendaylight-snapshots</activeProfile>
+
+  </activeProfiles>
+
+Building
+--------
+
+Add these options to the mvn command line when you build "so"
+
+.. code-block:: bash
+
+  -Dcamunda.version=7.7.3-ee -Dcamunda.bpm.webapp.artifact=camunda-webapp-ee-jboss-standalone
+
+Installation
+-------------
+
+The cockpit is part of the SO image.  There are no special installation requirements.  When you log in, you will need to enter your license information.  Alternatively, you can insert your license directly into the camundabpmn database before you log in:
+
+.. code-block:: bash
+
+  INSERT INTO camundabpmn.ACT_GE_PROPERTY VALUES ('camunda-license-key','YOUR-LICENCE-KEY-HERE',1);
+
+Logging In
+-----------
+
+Because port 8080 on the docker host machine is forwarded to port 8080 in the SO docker container you can log into the Enterprise Edition cockpit by browsing to this URL:
+
+  http://*dockerhost*:8080/camunda
+
+  Where dockerhost is the docker host system.
+
+If you can use a browser on the docker host system, then use a localhost address:
+
+  http://localhost:8080/camunda
+
+The user is "admin" and the password is the same as the jboss admin password, which is not displayed here.
+
+.. image:: images/Camunda_Cockpit_Enterprise_1.png
diff --git a/docs/Camunda_Modeler.rst b/docs/Camunda_Modeler.rst
new file mode 100644
index 0000000..e2ff06d
--- /dev/null
+++ b/docs/Camunda_Modeler.rst
@@ -0,0 +1,19 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+Camunda Modeler
+=================
+
+The Camunda_Modeler_ is the editor for BPMN 2.0 process flows.  It is a standalone application.  NOTE: the Camunda eclipse plugin is no longer supported and should not be used.
+
+.. _Camunda_Modeler: https://docs.camunda.org/manual/latest/modeler/camunda-modeler/
+
+.. image:: images/camunda_modeler_1.png
+
+Modeler Templates
+------------------
+
+Some work has already been done in MSO to develop templates_ for "building block" subprocess flows.  When a template is provided for a BPMN element, the modeler displays a custom form for inputting parameters.  This significantly simplifies flow construction and reduces the chance of making mistakes.
+
+.. _templates: https://docs.camunda.org/manual/7.7/modeler/camunda-modeler/element-templates/
\ No newline at end of file
diff --git a/docs/Configure_git_and_gerrit.rst b/docs/Configure_git_and_gerrit.rst
new file mode 100644
index 0000000..ccd0785
--- /dev/null
+++ b/docs/Configure_git_and_gerrit.rst
@@ -0,0 +1,92 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+Configure git and gerrit
+========================
+
+Basics
+------
+The recommended version of git is 2.7.4 or later.  Check the installed version in the Ubuntu VM:
+
+.. code-block:: bash
+
+	git --version
+
+Create an SSH key to user with gerrit.  Use no passphrase.
+
+.. code-block:: bash
+
+	ssh-keygen -t rsa
+	
+Enter your SSH public key (id_rsa) into gerrit:
+	Browse to https://gerrit.onap.org
+	Log in
+	Open the menu next to your name (under the green search button)
+	
+.. image:: images/Configure_git_1.png
+
+	Select "Settings"
+	In the "Settings" sidebar, click "SSH Public Keys"`
+	Click "Add Key..."
+	Paste the entire contents of $HOME/.ssh/id_rsa.pub into the text area and click "Add".
+	
+.. image:: images/Configure_git_2.png
+
+Install the git-review package.
+
+.. code-block:: bash
+
+	sudo apt update
+	sudo apt install git-review
+	
+Create $HOME/.gitconfig (replace highlighted values with your own information):
+	[user]
+	
+        name = FirstName LastName
+		
+        email = you@yourcompany.com
+		
+	[core]
+	
+        autocrlf = false
+		
+	[merge]
+	
+        tool = vimdiff
+		
+	[gitreview]
+	
+        username = YourLinuxFoundationId
+		
+**If you're behind a corporate firewall and your proxy server has SOCKS support...**
+
+You may be able to use the SSH protocol with git, which is preferred versus HTTP.  This method is known to work in the AT&T corporate network.
+Install the socat package, which allows you to tunnel SSH connections through a proxy that supports SOCKS:
+
+.. code-block:: bash
+
+	sudo apt update
+	sudo apt install socat
+	
+Create (or append to) $HOME/.ssh/config (replace highlighted values with your information)
+
+	Host gerrit.onap.org
+	
+	User userid
+	
+	Hostname gerrit.onap.org
+	
+	ProxyCommand socat - PROXY:host:%h:%p,proxyport=port
+	
+	IdentityFile /home/userid/.ssh/id_rsa
+	
+	ServerAliveInterval 10
+
+Verify that you have connectivity to gerrit through the proxy.  Answer "yes" to continue connecting, if prompted.
+
+.. code-block:: bash
+
+	ssh -p 29418 gerrit.onap.org
+	
+.. image:: images/Configure_git_3.png
\ No newline at end of file
diff --git a/docs/Developer_Info.rst b/docs/Developer_Info.rst
new file mode 100644
index 0000000..d077323
--- /dev/null
+++ b/docs/Developer_Info.rst
@@ -0,0 +1,13 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+Developer Information
+======================
+
+.. toctree::
+   :maxdepth: 1
+
+   Install_Configure_SO.rst
+   architecture.rst
+   offered_consumed_apis.rst
\ No newline at end of file
diff --git a/docs/Install_Configure_SO.rst b/docs/Install_Configure_SO.rst
index 5771a10..a1a9bf4 100644
--- a/docs/Install_Configure_SO.rst
+++ b/docs/Install_Configure_SO.rst
@@ -18,79 +18,147 @@
 Create a new VM in VirtualBox for Ubuntu
 ----------------------------------------
 Type: Linux
+
 Version: Ubuntu (64-bit)
+
 At least 2048 MB memory
+
 At least 40 GB VDI
+
 Network: Attached to: NAT
 
 Create a port-forwarding rule for SSH
 -------------------------------------
 Create a port-forwarding rule so that you can use PuTTY (or other SSH client) to connect to the VM.
+
 Go to "Network" settings in VirtualBox, add a port forwarding rule:
+
 Name: SSH
+
 Protocol: TCP
+
 Host IP: 127.0.0.1
+
 Host Port: 1022
+
 Guest IP: <leave blank>
+
 Guest Port: 22
 
+.. image:: images/Configure_ubuntu_SO_1.png
+
+.
+
+.. image:: images/Configure_ubuntu_SO_2.png
+
 Create Shared Folder
 --------------------
 This is oriented to Windows users.  If you're using a MAC or a Linux host computer, the details may be different.  You can share any folder on the host computer with the Ubuntu VM.  On Windows, a practical choice is to share the C:\Users folder, so that your Windows home directory will be accessible from the Ubuntu VM.
+
 Go to "Shared Folders" settings in VirtualBox, add a share:
+
 Folder Path: C:\Users
+
 Folder Name: Users
+
 Auto-mount: <checked>
+
 Read-only: <unchecked>
 
+.. image:: images/Configure_ubuntu_SO_3.png
+
+.
+
+.. image:: images/Configure_ubuntu_SO_4.png
+
 Install Ubuntu in the VM
 ------------------------
 On the "Storage" panel in VirtualBox, click on "[ optical drive ]" and then "Choose Disk Image".  Select your Ubuntu ISO image.
 
+.. image:: images/Configure_ubuntu_SO_5.png
+
 After selecting the ISO image, start the VM.
+
 Follow the prompts to install Ubuntu.
 
 Proxy Configuration (optional)
 ------------------------------
 If you're behind a corporate firewall, configure some proxy settings.  NOTE: your proxy configuration may require username and password credentials, not shown here.
 **Ubuntu system proxy setting:**
+
 	System Settings → Network → Network proxy
+	
 	(Replace "proxyhost" and port with your actual proxy information)
 
+.. image:: images/Configure_ubuntu_SO_6.png
+	
 **apt proxy setting:**
 	Edit /etc/apt/apt.conf and add one line at the top (replace "proxyhost:port" with your actual proxy information):
+	
 		Acquire::http::Proxy "http://proxyhost:port";
+		
 	Reboot the VM.
 	
 Install SSH Server
 ------------------
-sudo apt update
-sudo apt install openssh-server
+
+.. code-block:: bash
+
+    sudo apt update
+    sudo apt install openssh-server
 
 Connect to the VM from your host computer
 -----------------------------------------
 	The PuTTY SSH client is popular.  A connection to localhost:1022 (or whatever port you have forwarded) will go to the VM.
 
+.. image:: images/Configure_ubuntu_SO_7.png
+	
 Install VirtualBox Guest Additions
 ----------------------------------
 On the "Storage" panel in VirtualBox, click on "[ optical drive ]" and then "Choose Disk Image".  Select your VirtualBox Guest Additions ISO image.
 
+.. image:: images/Configure_ubuntu_SO_8.png
+
 In a VM terminal window, mount the cdrom:
+
+.. code-block:: bash
+
 	sudo mkdir -p /media/cdrom
 	sudo mount /dev/cdrom /media/cdrom
+	
 Install necessary dependencies:
-	sudo apt update
-	sudo apt install gcc g++ dkms
+
+.. code-block:: bash
+
+    sudo apt update
+    sudo apt install gcc g++ dkms
+	
 Install the guest additions.  NOTE: look for errors in the command output!  If you see an error that says you are missing kernel headers, the most likely cause is that you are using a VirtualBox version that is too old.  The error message is misleading.
+
+.. code-block:: bash
+
 	cd /media/cdrom
 	sudo ./VBoxLinuxAdditions.run
 
+.. image:: images/Configure_ubuntu_SO_9.png	
+	
 Add yourself to the vboxsf user group (replace "userid" with your user ID):
+	
+.. code-block:: bash	
+	
 	sudo usermod -a -G vboxsf userid
+	
 Reboot the VM.
+
 In a VM terminal window, verify that you can access your home directory on the host computer, which should be mounted under here:
 	/media/sf_Users
 	
 Further Reading
 ----------------------------------------	
-https://wiki.onap.org/display/DW/Development+Environment
\ No newline at end of file
+
+.. toctree::
+   :maxdepth: 1
+
+   Install_Docker.rst
+   Configure_git_and_gerrit.rst
+   Workspace_and_Development_Tools.rst
\ No newline at end of file
diff --git a/docs/Install_Docker.rst b/docs/Install_Docker.rst
new file mode 100644
index 0000000..5712691
--- /dev/null
+++ b/docs/Install_Docker.rst
@@ -0,0 +1,85 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+Install Docker
+===============
+
+Make sure curl is installed on the Ubuntu VM:
+
+.. code-block:: bash
+
+	sudo apt update
+	sudo apt install curl
+
+If you are behind a corporate firewall (replace "proxyhost:port" with your actual proxy information)
+	https_proxy="https://*proxyhost:port*" curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add -
+	
+Otherwise:
+	curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add -
+Expected Response:
+	OK
+Add the docker package repository:
+	sudo apt-add-repository "deb https://apt.dockerproject.org/repo ubuntu-xenial main"
+	
+Install packages:
+
+.. code-block:: bash
+
+    sudo apt update
+    sudo apt-cache policy docker-engine
+	sudo apt install docker-engine
+	sudo apt install docker-compose
+	
+If you are behind a corporate firewall, you will need to configure proxy settings for docker so that images may be obtained from internet repositories.  In the commands shown here, replace *"proxyhost:port"*, *"yourdomain1.com"*, and *"yourdomain2.com"* with appropriate values.
+	
+    Make the docker configuration directory:
+
+.. code-block:: bash
+	
+        sudo mkdir -p /etc/systemd/system/docker.service.d
+	
+    Edit (create) this file:
+
+.. code-block:: bash
+	
+		sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
+	
+    Add these lines:
+
+        [Service]
+        
+		Environment="HTTP_PROXY=https://*proxyhost:port*"
+        
+		Environment="HTTPS_PROXY=https://*proxyhost:port*"
+        
+		Environment="NO_PROXY=localhost,127.0.0.1,.yourdomain1.com,.yourdomain2.com"
+	
+    Restart docker:
+
+.. code-block:: bash
+	
+        sudo systemctl daemon-reload
+        sudo systemctl restart docker
+
+Add yourself to the docker user group (replace "userid" with your user ID):
+
+.. code-block:: bash
+
+    sudo usermod -a -G docker *userid*
+
+Log out and log back in so that the user group change will takeeffect.
+
+Verify that you can connect to docker as yourself (i.e. not as root):
+
+.. code-block:: bash
+
+    docker ps
+
+Verify that you can download and run the hello-world container
+
+.. code-block:: bash
+
+    docker run hello-world
+	
+.. image:: images/Docker_install_1.png
\ No newline at end of file
diff --git "a/docs/UUI-SO API Specification v0.1\0501\051.docx" "b/docs/UUI-SO API Specification v0.1\0501\051.docx"
deleted file mode 100644
index a6dfbd0..0000000
--- "a/docs/UUI-SO API Specification v0.1\0501\051.docx"
+++ /dev/null
Binary files differ
diff --git a/docs/architecture.rst b/docs/architecture.rst
index c9f6838..67cf67f 100644
--- a/docs/architecture.rst
+++ b/docs/architecture.rst
@@ -2,7 +2,7 @@
 .. http://creativecommons.org/licenses/by/4.0
 .. Copyright 2017 Huawei Technologies Co., Ltd.
 
-Service Orchestrator
+ONAP Service Orchestration - Architecture
 ========================================================
 
 SO Architecture
diff --git a/docs/developer_information.rst b/docs/developer_information.rst
new file mode 100644
index 0000000..739a1f2
--- /dev/null
+++ b/docs/developer_information.rst
@@ -0,0 +1,20 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 Huawei Technologies Co., Ltd.
+
+SO Developer Information
+========================
+
+.. toctree::
+   :maxdepth: 1
+   
+   BPMN_Project_Structure.rst
+   Camunda_Modeler.rst
+   BPMN_Main_Process_Flows.rst
+   BPMN_Subprocess_Process_Flows.rst
+   BPMN_Project_Deployment_Strategy.rst
+   Building_SO.rst
+   Working_with_SO_Docker.rst
+   Camunda_Cockpit_Community_Edition.rst
+   Camunda_Cockpit_Enterprise_Edition.rst
+   
\ No newline at end of file
diff --git a/docs/images/BPMN_Main_Process_Flows_1.png b/docs/images/BPMN_Main_Process_Flows_1.png
new file mode 100644
index 0000000..57337d6
--- /dev/null
+++ b/docs/images/BPMN_Main_Process_Flows_1.png
Binary files differ
diff --git a/docs/images/BPMN_Subprocess_process_flows_1.png b/docs/images/BPMN_Subprocess_process_flows_1.png
new file mode 100644
index 0000000..5ec7e7c
--- /dev/null
+++ b/docs/images/BPMN_Subprocess_process_flows_1.png
Binary files differ
diff --git a/docs/images/Camunda_Cockpit_1.png b/docs/images/Camunda_Cockpit_1.png
new file mode 100644
index 0000000..cdcc6f3
--- /dev/null
+++ b/docs/images/Camunda_Cockpit_1.png
Binary files differ
diff --git a/docs/images/Camunda_Cockpit_2.png b/docs/images/Camunda_Cockpit_2.png
new file mode 100644
index 0000000..a696a68
--- /dev/null
+++ b/docs/images/Camunda_Cockpit_2.png
Binary files differ
diff --git a/docs/images/Camunda_Cockpit_3.png b/docs/images/Camunda_Cockpit_3.png
new file mode 100644
index 0000000..a298fe0
--- /dev/null
+++ b/docs/images/Camunda_Cockpit_3.png
Binary files differ
diff --git a/docs/images/Camunda_Cockpit_4.png b/docs/images/Camunda_Cockpit_4.png
new file mode 100644
index 0000000..ff445f3
--- /dev/null
+++ b/docs/images/Camunda_Cockpit_4.png
Binary files differ
diff --git a/docs/images/Camunda_Cockpit_Enterprise_1.png b/docs/images/Camunda_Cockpit_Enterprise_1.png
new file mode 100644
index 0000000..cdcc6f3
--- /dev/null
+++ b/docs/images/Camunda_Cockpit_Enterprise_1.png
Binary files differ
diff --git a/docs/images/Configure_git_1.png b/docs/images/Configure_git_1.png
new file mode 100644
index 0000000..2d4ce85
--- /dev/null
+++ b/docs/images/Configure_git_1.png
Binary files differ
diff --git a/docs/images/Configure_git_2.png b/docs/images/Configure_git_2.png
new file mode 100644
index 0000000..44ceeff
--- /dev/null
+++ b/docs/images/Configure_git_2.png
Binary files differ
diff --git a/docs/images/Configure_git_3.png b/docs/images/Configure_git_3.png
new file mode 100644
index 0000000..f44a0b4
--- /dev/null
+++ b/docs/images/Configure_git_3.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_1.png b/docs/images/Configure_ubuntu_SO_1.png
new file mode 100644
index 0000000..a5a8301
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_1.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_2.png b/docs/images/Configure_ubuntu_SO_2.png
new file mode 100644
index 0000000..d3b215f
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_2.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_3.png b/docs/images/Configure_ubuntu_SO_3.png
new file mode 100644
index 0000000..ef4f21b
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_3.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_4.png b/docs/images/Configure_ubuntu_SO_4.png
new file mode 100644
index 0000000..f857eff
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_4.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_5.png b/docs/images/Configure_ubuntu_SO_5.png
new file mode 100644
index 0000000..01d2016
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_5.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_6.png b/docs/images/Configure_ubuntu_SO_6.png
new file mode 100644
index 0000000..17b9986
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_6.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_7.png b/docs/images/Configure_ubuntu_SO_7.png
new file mode 100644
index 0000000..d233847
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_7.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_8.png b/docs/images/Configure_ubuntu_SO_8.png
new file mode 100644
index 0000000..01d2016
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_8.png
Binary files differ
diff --git a/docs/images/Configure_ubuntu_SO_9.png b/docs/images/Configure_ubuntu_SO_9.png
new file mode 100644
index 0000000..2cc96b3
--- /dev/null
+++ b/docs/images/Configure_ubuntu_SO_9.png
Binary files differ
diff --git a/docs/images/Docker_install_1.png b/docs/images/Docker_install_1.png
new file mode 100644
index 0000000..1e9c177
--- /dev/null
+++ b/docs/images/Docker_install_1.png
Binary files differ
diff --git a/docs/images/SO_R1_1.png b/docs/images/SO_R1_1.png
new file mode 100644
index 0000000..7bf98fc
--- /dev/null
+++ b/docs/images/SO_R1_1.png
Binary files differ
diff --git a/docs/images/Workspace_and_Development_Tools.png b/docs/images/Workspace_and_Development_Tools.png
new file mode 100644
index 0000000..46f8fe4
--- /dev/null
+++ b/docs/images/Workspace_and_Development_Tools.png
Binary files differ
diff --git a/docs/images/Workspace_and_Development_Tools_2.png b/docs/images/Workspace_and_Development_Tools_2.png
new file mode 100644
index 0000000..1f3fff0
--- /dev/null
+++ b/docs/images/Workspace_and_Development_Tools_2.png
Binary files differ
diff --git a/docs/images/Workspace_and_Development_Tools_3.png b/docs/images/Workspace_and_Development_Tools_3.png
new file mode 100644
index 0000000..3d2f35d
--- /dev/null
+++ b/docs/images/Workspace_and_Development_Tools_3.png
Binary files differ
diff --git a/docs/images/Workspace_and_Development_Tools_4.png b/docs/images/Workspace_and_Development_Tools_4.png
new file mode 100644
index 0000000..31a424e
--- /dev/null
+++ b/docs/images/Workspace_and_Development_Tools_4.png
Binary files differ
diff --git a/docs/images/bpmn_project_structure_1.png b/docs/images/bpmn_project_structure_1.png
new file mode 100644
index 0000000..d94b6fb
--- /dev/null
+++ b/docs/images/bpmn_project_structure_1.png
Binary files differ
diff --git a/docs/images/bpmn_project_structure_2.png b/docs/images/bpmn_project_structure_2.png
new file mode 100644
index 0000000..15f6360
--- /dev/null
+++ b/docs/images/bpmn_project_structure_2.png
Binary files differ
diff --git a/docs/images/bpmn_project_structure_3.png b/docs/images/bpmn_project_structure_3.png
new file mode 100644
index 0000000..e9f0d8d
--- /dev/null
+++ b/docs/images/bpmn_project_structure_3.png
Binary files differ
diff --git a/docs/images/bpmn_project_structure_4.png b/docs/images/bpmn_project_structure_4.png
new file mode 100644
index 0000000..c5cbb8b
--- /dev/null
+++ b/docs/images/bpmn_project_structure_4.png
Binary files differ
diff --git a/docs/images/bpmn_project_structure_5.png b/docs/images/bpmn_project_structure_5.png
new file mode 100644
index 0000000..3c3e906
--- /dev/null
+++ b/docs/images/bpmn_project_structure_5.png
Binary files differ
diff --git a/docs/images/camunda_modeler_1.png b/docs/images/camunda_modeler_1.png
new file mode 100644
index 0000000..2316c98
--- /dev/null
+++ b/docs/images/camunda_modeler_1.png
Binary files differ
