aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin, Max (mb388a) <mb388a@us.att.com>2019-06-07 20:28:02 -0400
committerBenjamin, Max (mb388a) <mb388a@us.att.com>2019-06-08 09:58:45 -0400
commit242e71883f59b8ad971f77c9bbdf032527fd77c0 (patch)
tree04c9c5529aa9784b10564c91bc37afb3a734e169
parent8534e7a2ce76697fd22f5909c907f22d302e0099 (diff)
parentd0cd4dc3d204e80a7419c97b6b0ec59273984a99 (diff)
Merge remote-tracking branch 'origin/dublin' into 'origin/master'
Change-Id: Ib8eaae7ee4a404bde568803afaf6c4e183cbbd53 Issue-ID: SO-2004 Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
-rw-r--r--asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java9
-rw-r--r--asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java53
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy2
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HandlePNF.groovy38
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/HandlePNF.bpmn66
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java4
-rw-r--r--docs/release-notes.rst234
7 files changed, 385 insertions, 21 deletions
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java b/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java
index a084ce7177..317296fbed 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/activity/ActivitySpecsActions.java
@@ -68,7 +68,9 @@ public class ActivitySpecsActions {
Response response = httpClient.post(payload);
int statusCode = response.getStatus();
- if (statusCode != HttpStatus.SC_OK) {
+ if (statusCode == HttpStatus.SC_UNPROCESSABLE_ENTITY) {
+ logger.warn(Strings.repeat("{} ", 3), "ActivitySpec", activitySpec.getName(), "already exists in SDC");
+ } else if (statusCode != HttpStatus.SC_OK && statusCode != HttpStatus.SC_CREATED) {
logger.warn(Strings.repeat("{} ", 3), "Error creating activity spec", activitySpec.getName(),
statusCode);
} else {
@@ -110,7 +112,10 @@ public class ActivitySpecsActions {
int statusCode = response.getStatus();
- if (statusCode != HttpStatus.SC_OK) {
+ if (statusCode == HttpStatus.SC_UNPROCESSABLE_ENTITY) {
+ logger.warn(Strings.repeat("{} ", 3), "ActivitySpec with id", activitySpecId,
+ "is already certified in SDC");
+ } else if (statusCode != HttpStatus.SC_OK) {
logger.warn(Strings.repeat("{} ", 3), "Error certifying activity", activitySpecId, statusCode);
} else {
certificationResult = true;
diff --git a/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java b/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java
index 438120924a..7de35b5c13 100644
--- a/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java
+++ b/asdc-controller/src/test/java/org/onap/asdc/activity/ActivitySpecsActionsTest.java
@@ -56,6 +56,44 @@ public class ActivitySpecsActionsTest extends BaseTest {
}
@Test
+ public void CreateActivitySpecReturnsCreated_Test() throws Exception {
+ String HOSTNAME = createURLWithPort("");
+
+ ActivitySpec activitySpec = new ActivitySpec();
+ activitySpec.setName("testActivitySpec");
+ activitySpec.setDescription("Test Activity Spec");
+ ActivitySpecCreateResponse activitySpecCreateResponse = new ActivitySpecCreateResponse();
+ activitySpecCreateResponse.setId("testActivityId");
+ ObjectMapper mapper = new ObjectMapper();
+ String body = mapper.writeValueAsString(activitySpecCreateResponse);
+ wireMockServer.stubFor(post(urlPathMatching("/v1.0/activity-spec"))
+ .willReturn(aResponse().withHeader("Content-Type", "application/json")
+ .withStatus(org.springframework.http.HttpStatus.CREATED.value()).withBody(body)));
+
+ String activitySpecId = activitySpecsActions.createActivitySpec(HOSTNAME, activitySpec);
+ assertEquals("testActivityId", activitySpecId);
+ }
+
+ @Test
+ public void CreateActivitySpecReturnsExists_Test() throws Exception {
+ String HOSTNAME = createURLWithPort("");
+
+ ActivitySpec activitySpec = new ActivitySpec();
+ activitySpec.setName("testActivitySpec");
+ activitySpec.setDescription("Test Activity Spec");
+ ActivitySpecCreateResponse activitySpecCreateResponse = new ActivitySpecCreateResponse();
+ activitySpecCreateResponse.setId("testActivityId");
+ ObjectMapper mapper = new ObjectMapper();
+ String body = mapper.writeValueAsString(activitySpecCreateResponse);
+ wireMockServer.stubFor(post(urlPathMatching("/v1.0/activity-spec"))
+ .willReturn(aResponse().withHeader("Content-Type", "application/json")
+ .withStatus(org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY.value()).withBody(body)));
+
+ String activitySpecId = activitySpecsActions.createActivitySpec(HOSTNAME, activitySpec);
+ assertEquals(null, activitySpecId);
+ }
+
+ @Test
public void CertifyActivitySpec_Test() throws Exception {
String HOSTNAME = createURLWithPort("");
@@ -70,6 +108,21 @@ public class ActivitySpecsActionsTest extends BaseTest {
assertTrue(certificationResult);
}
+ @Test
+ public void CertifyActivitySpecReturnsExists_Test() throws Exception {
+ String HOSTNAME = createURLWithPort("");
+
+ String activitySpecId = "testActivitySpec";
+ String urlPath = "/v1.0/activity-spec/testActivitySpec/versions/latest/actions";
+
+ wireMockServer.stubFor(
+ put(urlPathMatching(urlPath)).willReturn(aResponse().withHeader("Content-Type", "application/json")
+ .withStatus(org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY.value())));
+
+ boolean certificationResult = activitySpecsActions.certifyActivitySpec(HOSTNAME, activitySpecId);
+ assertFalse(certificationResult);
+ }
+
private String createURLWithPort(String uri) {
return "http://localhost:" + wireMockPort + uri;
}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
index ef0dba83df..a9d70ccc4e 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
@@ -356,7 +356,7 @@ public class CreateCustomE2EServiceInstance extends AbstractServiceTaskProcessor
}
if (allActive){
- si.setOrchestrationStatus("Active")
+ si.setOrchestrationStatus("Assigned")
}else {
si.setOrchestrationStatus("Pending")
}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HandlePNF.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HandlePNF.groovy
index f06d71cec4..cbeb1d3d69 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HandlePNF.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HandlePNF.groovy
@@ -22,8 +22,12 @@ package org.onap.so.bpmn.infrastructure.scripts
import org.apache.commons.lang3.StringUtils
import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.recipe.ResourceInput
+import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
import org.onap.so.bpmn.core.json.JsonUtils
import org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames
import org.slf4j.Logger
@@ -34,6 +38,8 @@ public class HandlePNF extends AbstractServiceTaskProcessor{
ExceptionUtil exceptionUtil = new ExceptionUtil()
JsonUtils jsonUtil = new JsonUtils()
+ MsoUtils msoUtils = new MsoUtils()
+ String Prefix="CRESI_"
@Override
void preProcessRequest(DelegateExecution execution) {
@@ -65,7 +71,33 @@ public class HandlePNF extends AbstractServiceTaskProcessor{
void postProcessRequest(DelegateExecution execution) {
logger.debug("start postProcess for HandlePNF")
+ ResourceInput resourceInputObj = ResourceRequestBuilder.getJsonObject(execution.getVariable("resourceInput"), ResourceInput.class)
+ String operType = resourceInputObj.getOperationType()
+ String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
+ String serviceInstanceId = resourceInputObj.getServiceInstanceId()
+ String operationId = resourceInputObj.getOperationId()
+ String progress = "100"
+ String status = "finished"
+ String statusDescription = "SDCN resource creation and activation completed"
+ String body = """
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:ns="http://org.onap.so/requestsdb">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <ns:updateResourceOperationStatus>
+ <operType>${msoUtils.xmlEscape(operType)}</operType>
+ <operationId>${msoUtils.xmlEscape(operationId)}</operationId>
+ <progress>${msoUtils.xmlEscape(progress)}</progress>
+ <resourceTemplateUUID>${msoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID>
+ <serviceId>${msoUtils.xmlEscape(serviceInstanceId)}</serviceId>
+ <status>${msoUtils.xmlEscape(status)}</status>
+ <statusDescription>${msoUtils.xmlEscape(statusDescription)}</statusDescription>
+ </ns:updateResourceOperationStatus>
+ </soapenv:Body>
+ </soapenv:Envelope>""";
+ logger.debug("body: "+body)
+ setProgressUpdateVariables(execution, body)
logger.debug("exit postProcess for HandlePNF")
}
@@ -87,4 +119,10 @@ public class HandlePNF extends AbstractServiceTaskProcessor{
}
logger.debug(" ***** Exit sendSyncResponse *****")
}
+
+ private void setProgressUpdateVariables(DelegateExecution execution, String body) {
+ def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)
+ execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+ execution.setVariable("CVFMI_updateResOperStatusRequest", body)
+ }
}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/HandlePNF.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/HandlePNF.bpmn
index 257a0dee64..43ebf9810e 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/HandlePNF.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/HandlePNF.bpmn
@@ -16,7 +16,7 @@ handlePNF.preProcessRequest(execution)</bpmn:script>
<bpmn:endEvent id="EndEvent_0pigsdfk3" name="end PNF hadler">
<bpmn:incoming>SequenceFlow_02fi1yn</bpmn:incoming>
</bpmn:endEvent>
- <bpmn:sequenceFlow id="SequenceFlow_1la8oih" sourceRef="PostProcessPNFDiscovery" targetRef="Task_1r8h7of" />
+ <bpmn:sequenceFlow id="SequenceFlow_1la8oih" sourceRef="PostProcessPNFDiscovery" targetRef="Task_1kxmpj3" />
<bpmn:callActivity id="Task_0657l04" name="invoke pnf handler" calledElement="CreateAndActivatePnfResource">
<bpmn:extensionElements>
<camunda:in source="pnfCorrelationId" target="pnfCorrelationId" />
@@ -27,13 +27,6 @@ handlePNF.preProcessRequest(execution)</bpmn:script>
<bpmn:incoming>SequenceFlow_1apj1fn</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0pujwl4</bpmn:outgoing>
</bpmn:callActivity>
- <bpmn:scriptTask id="PostProcessPNFDiscovery" name="Post Process Request" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_0pujwl4</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1la8oih</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def handlePNF = new HandlePNF()
-handlePNF.postProcessRequest(execution)</bpmn:script>
- </bpmn:scriptTask>
<bpmn:sequenceFlow id="SequenceFlow_12q67gd" sourceRef="Task_13sx2bp_activate" targetRef="Task_0kv28gm" />
<bpmn:sequenceFlow id="SequenceFlow_1apj1fn" sourceRef="Task_0kv28gm" targetRef="Task_0657l04" />
<bpmn:serviceTask id="Task_0kv28gm" name="Generate PNF uuid" camunda:delegateExpression="${GeneratePnfUuidDelegate}">
@@ -42,12 +35,42 @@ handlePNF.postProcessRequest(execution)</bpmn:script>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="SequenceFlow_02fi1yn" sourceRef="Task_1r8h7of" targetRef="EndEvent_0pigsdfk3" />
<bpmn:scriptTask id="Task_1r8h7of" name="Send Sync Response" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1la8oih</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1ud44f8</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_02fi1yn</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def handlePNF = new HandlePNF()
handlePNF.sendSyncResponse(execution)</bpmn:script>
</bpmn:scriptTask>
+ <bpmn:scriptTask id="PostProcessPNFDiscovery" name="Post Process Request" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0pujwl4</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1la8oih</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def handlePNF = new HandlePNF()
+handlePNF.postProcessRequest(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1ud44f8" sourceRef="Task_1kxmpj3" targetRef="Task_1r8h7of" />
+ <bpmn:serviceTask id="Task_1kxmpj3" name="update progress update">
+ <bpmn:extensionElements>
+ <camunda:connector>
+ <camunda:inputOutput>
+ <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+ <camunda:inputParameter name="headers">
+ <camunda:map>
+ <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+ <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry>
+ </camunda:map>
+ </camunda:inputParameter>
+ <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter>
+ <camunda:inputParameter name="method">POST</camunda:inputParameter>
+ <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+ <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+ </camunda:inputOutput>
+ <camunda:connectorId>http-connector</camunda:connectorId>
+ </camunda:connector>
+ </bpmn:extensionElements>
+ <bpmn:incoming>SequenceFlow_1la8oih</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ud44f8</bpmn:outgoing>
+ </bpmn:serviceTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="HandlePNF">
@@ -69,21 +92,18 @@ handlePNF.sendSyncResponse(execution)</bpmn:script>
<di:waypoint x="156" y="324" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_0pigdk3_di" bpmnElement="EndEvent_0pigsdfk3">
- <dc:Bounds x="543" y="306" width="36" height="36" />
+ <dc:Bounds x="626" y="306" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="524" y="349" width="78" height="14" />
+ <dc:Bounds x="607" y="349" width="78" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1la8oih_di" bpmnElement="SequenceFlow_1la8oih">
<di:waypoint x="256" y="324" />
- <di:waypoint x="353" y="324" />
+ <di:waypoint x="303" y="324" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="CallActivity_1sxp6qj_di" bpmnElement="Task_0657l04">
<dc:Bounds x="-19" y="284" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0qqb00i_di" bpmnElement="PostProcessPNFDiscovery">
- <dc:Bounds x="156" y="284" width="100" height="80" />
- </bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_12q67gd_di" bpmnElement="SequenceFlow_12q67gd">
<di:waypoint x="-241" y="324" />
<di:waypoint x="-176" y="324" />
@@ -96,11 +116,21 @@ handlePNF.sendSyncResponse(execution)</bpmn:script>
<dc:Bounds x="-176" y="284" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_02fi1yn_di" bpmnElement="SequenceFlow_02fi1yn">
- <di:waypoint x="453" y="324" />
- <di:waypoint x="543" y="324" />
+ <di:waypoint x="536" y="324" />
+ <di:waypoint x="626" y="324" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ScriptTask_1yqlrg7_di" bpmnElement="Task_1r8h7of">
- <dc:Bounds x="353" y="284" width="100" height="80" />
+ <dc:Bounds x="436" y="284" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_0qqb00i_di" bpmnElement="PostProcessPNFDiscovery">
+ <dc:Bounds x="156" y="284" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ud44f8_di" bpmnElement="SequenceFlow_1ud44f8">
+ <di:waypoint x="403" y="324" />
+ <di:waypoint x="436" y="324" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0fkkgnl_di" bpmnElement="Task_1kxmpj3">
+ <dc:Bounds x="303" y="284" width="100" height="80" />
</bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
index 4958e123fb..ad84b38d7b 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
@@ -1415,6 +1415,10 @@ public class WorkflowAction {
requestAction, resourceName.toString(), aLaCarte, cloudOwner);
}
if (northBoundRequest == null) {
+ northBoundRequest = catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScope(requestAction,
+ resourceName.toString(), aLaCarte);
+ }
+ if (northBoundRequest == null) {
if (aLaCarte) {
buildAndThrowException(execution,
"The request: ALaCarte " + resourceName + " " + requestAction + " is not supported by GR_API.");
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 89e12e35c2..8d5f5727b6 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -8,6 +8,240 @@ Service Orchestrator Release Notes
The SO provides the highest level of service orchestration in the ONAP architecture.
+Version: 1.4.3
+==============
+
+:Release Date: 2019-06-06
+
+Docker Images
+-------------
+
+**Dockers released for SO:**
+
+ - onap/so/api-handler-infra,1.4.3
+ - onap/so/bpmn-infra,1.4.3
+ - onap/so/catalog-db-adapter,1.4.3
+ - onap/so/openstack-adapter,1.4.3
+ - onap/so/request-db-adapter,1.4.3
+ - onap/so/sdc-controller,1.4.3
+ - onap/so/sdnc-adapter,1.4.3
+ - onap/so/so-monitoring,1.4.3
+ - onap/so/vfc-adapter,1.4.3
+
+Release Purpose
+----------------
+
+**New Features**
+
+The main goal of the Dublin release was to:
+ - Support CCVPN extension
+ - Support BroadBand Service Usecase
+ - SO SOL003 plugin support
+ - Improve PNF PnP
+
+
+**Epics**
+
+- [`SO-1508 <https://jira.onap.org/browse/SO-1508>`__\ ] - ETSI Alignment - SO SOL003 plugin support to connect to external VNFMs
+- [`SO-1468 <https://jira.onap.org/browse/SO-1468>`__\ ] - Hardening of HPA in SO and extension of HPA capabilities to existing use-cases
+- [`SO-1394 <https://jira.onap.org/browse/SO-1394>`__\ ] - Extended and enhance the SO generic building block to support pre and post instantiation.
+- [`SO-1393 <https://jira.onap.org/browse/SO-1393>`__\ ] - Support the CCVPN Extension
+- [`SO-1392 <https://jira.onap.org/browse/SO-1392>`__\ ] - Support the BroadBand Service Usecase
+- [`SO-1353 <https://jira.onap.org/browse/SO-1353>`__\ ] - SO to be made independent of Cloud technologies
+- [`SO-1273 <https://jira.onap.org/browse/SO-1273>`__\ ] - PNF PnP Dublin updates & improvements
+- [`SO-1271 <https://jira.onap.org/browse/SO-1271>`__\ ] - PNF PnP Casablanca MR updates
+- [`SO-677 <https://jira.onap.org/browse/SO-677>`__\ ] - Improve the issues and findings of the SO Casablanca Release
+- [`SO-166 <https://jira.onap.org/browse/SO-166>`__\ ] - Non-stop operations required.
+
+**Stories**
+
+- [`SO-1974 <https://jira.onap.org/browse/SO-1974`__ ] - Turn off OpenStack heat stack audit
+- [`SO-1924 <https://jira.onap.org/browse/SO-1924`__ ] - Add VnfConfigUpdate to the list of native CM workflows returned to VID
+- [`SO-1820 <https://jira.onap.org/browse/SO-1820`__ ] - Add Model Version Query
+- [`SO-1806 <https://jira.onap.org/browse/SO-1806`__ ] - Fix issue where null variable causes task to not
+- [`SO-1793 <https://jira.onap.org/browse/SO-1793`__ ] - add status for delete
+- [`SO-1792 <https://jira.onap.org/browse/SO-1792`__ ] - add status message requirement for create vf module event audit
+- [`SO-1791 <https://jira.onap.org/browse/SO-1791`__ ] - Moved base client to new location
+- [`SO-1790 <https://jira.onap.org/browse/SO-1790`__ ] - Enhanced sniro BB to account for sole service proxies to support 1908.
+- [`SO-1765 <https://jira.onap.org/browse/SO-1765`__ ] - Convert Tabs to Spaces
+- [`SO-1760 <https://jira.onap.org/browse/SO-1760`__ ] - Add Query param to pull back nested stack information
+- [`SO-1758 <https://jira.onap.org/browse/SO-1758`__ ] - Fix POM to allow HTTP long polling to work on camunda
+- [`SO-1749 <https://jira.onap.org/browse/SO-1749`__ ] - re add openstack audit of delete functions after refactor
+- [`SO-1748 <https://jira.onap.org/browse/SO-1748`__ ] - Add support to parse cdl inside LOB and platform
+- [`SO-1737 <https://jira.onap.org/browse/SO-1737`__ ] - if audit fails write sub interface data to a ai
+- [`SO-1729 <https://jira.onap.org/browse/SO-1729`__ ] - Monitor Job Status-Delete
+- [`SO-1687 <https://jira.onap.org/browse/SO-1687`__ ] - removed unused test classes and methods
+- [`SO-1678 <https://jira.onap.org/browse/SO-1678`__ ] - removed extra argument from extractByKey method
+- [`SO-1676 <https://jira.onap.org/browse/SO-1676`__ ] - replace all fixed wiremock ports
+- [`SO-1671 <https://jira.onap.org/browse/SO-1671`__ ] - skip_post_instantiation_configuration schema and tosca ingestion
+- [`SO-1657 <https://jira.onap.org/browse/SO-1657`__ ] - Automated testing for the SO Monitoring component
+- [`SO-1648 <https://jira.onap.org/browse/SO-1648`__ ] - Increasing the test coverage of SO-Monitoring UI
+- [`SO-1634 <https://jira.onap.org/browse/SO-1634`__ ] - Notification Handling - Terminate
+- [`SO-1633 <https://jira.onap.org/browse/SO-1633`__ ] - Terminate VNF (with SVNFM interaction)
+- [`SO-1632 <https://jira.onap.org/browse/SO-1632`__ ] - Handle VNF delete and termination (without SVNFM integration)
+- [`SO-1630 <https://jira.onap.org/browse/SO-1630`__ ] - Monitor Job Status-Create
+- [`SO-1629 <https://jira.onap.org/browse/SO-1629`__ ] - Notification Handling - Instantiate
+- [`SO-1628 <https://jira.onap.org/browse/SO-1628`__ ] - Handle Notification Subscription
+- [`SO-1627 <https://jira.onap.org/browse/SO-1627`__ ] - Create relationship between esr-vnfm and generic-vnf in AAI
+- [`SO-1626 <https://jira.onap.org/browse/SO-1626`__ ] - Monitor Node Status
+- [`SO-1625 <https://jira.onap.org/browse/SO-1625`__ ] - Handle Grant Request (Without Homing/OOF)
+- [`SO-1624 <https://jira.onap.org/browse/SO-1624`__ ] - Instantiate VNF (with SVNFM Interaction)
+- [`SO-1623 <https://jira.onap.org/browse/SO-1623`__ ] - Handle Create VNF request in VNFM adapter
+- [`SO-1622 <https://jira.onap.org/browse/SO-1622`__ ] - Check for existing VNF (with SVNFM Interaction)
+- [`SO-1621 <https://jira.onap.org/browse/SO-1621`__ ] - Create placeholder implementation for create VNF (without SVNFM interaction)
+- [`SO-1620 <https://jira.onap.org/browse/SO-1620`__ ] - Create Shell Adapter
+- [`SO-1619 <https://jira.onap.org/browse/SO-1619`__ ] - Create SO VNFM Adapter Northbound Interface using Swagger
+- [`SO-1618 <https://jira.onap.org/browse/SO-1618`__ ] - SVNFM Simulator
+- [`SO-1616 <https://jira.onap.org/browse/SO-1616`__ ] - Add instance group support to SO
+- [`SO-1604 <https://jira.onap.org/browse/SO-1604`__ ] - SO Catalog Enhancement to support CDS Meta Data for VNF/PNF and PNF Tosca Ingestion
+- [`SO-1598 <https://jira.onap.org/browse/SO-1598`__ ] - add equals and hashcode support to dslquerybuilder
+- [`SO-1597 <https://jira.onap.org/browse/SO-1597`__ ] - improvements to audit inventory feature
+- [`SO-1596 <https://jira.onap.org/browse/SO-1596`__ ] - query clients now have more useable result methods
+- [`SO-1590 <https://jira.onap.org/browse/SO-1590`__ ] - skip cloud region validation for 1906
+- [`SO-1589 <https://jira.onap.org/browse/SO-1589`__ ] - flow validators can now be skipped via an annotation
+- [`SO-1582 <https://jira.onap.org/browse/SO-1582`__ ] - vnf spin up gr api vnf s base module fails
+- [`SO-1573 <https://jira.onap.org/browse/SO-1573`__ ] - Abstract for CDS Implementation
+- [`SO-1569 <https://jira.onap.org/browse/SO-1569`__ ] - do not attempt to commit empty transactions
+- [`SO-1538 <https://jira.onap.org/browse/SO-1538`__ ] - Integration Test for SO VNFM Adapter - Perform the functional test to validate VNFM Adapter NBI and SOL003-based SBI
+- [`SO-1534 <https://jira.onap.org/browse/SO-1534`__ ] - Create Pre Building Block validator to check if cloud-region orchestration-disabled is true
+- [`SO-1533 <https://jira.onap.org/browse/SO-1533`__ ] - flowvaldiator will allow more flexible filtering
+- [`SO-1512 <https://jira.onap.org/browse/SO-1512`__ ] - Added Camunda migration scripts and updated camunda springboot version
+- [`SO-1506 <https://jira.onap.org/browse/SO-1506`__ ] - E2E Automation - Extend PNF workflow with post-instantiation configuration
+- [`SO-1501 <https://jira.onap.org/browse/SO-1501`__ ] - add new functionality to aai client
+- [`SO-1495 <https://jira.onap.org/browse/SO-1495`__ ] - made max retries configurable via mso config repo
+- [`SO-1493 <https://jira.onap.org/browse/SO-1493`__ ] - restructure a&ai client
+- [`SO-1487 <https://jira.onap.org/browse/SO-1487`__ ] - added license headers to various java files
+- [`SO-1485 <https://jira.onap.org/browse/SO-1485`__ ] - add DSL endpoint support to A&AI Client
+- [`SO-1483 <https://jira.onap.org/browse/SO-1483`__ ] - SO to support a new GRPC client for container to container communication
+- [`SO-1482 <https://jira.onap.org/browse/SO-1482`__ ] - SO Generic Building Block to support config deploy action for CONFIGURE Step
+- [`SO-1481 <https://jira.onap.org/browse/SO-1481`__ ] - Generic Bulding block for assign shall trigger controller for config assign action
+- [`SO-1477 <https://jira.onap.org/browse/SO-1477`__ ] - AAF support for SO
+- [`SO-1476 <https://jira.onap.org/browse/SO-1476`__ ] - Do not process vf module being created when building an index
+- [`SO-1475 <https://jira.onap.org/browse/SO-1475`__ ] - store raw distribution notification in db
+- [`SO-1474 <https://jira.onap.org/browse/SO-1474`__ ] - Test Issue
+- [`SO-1469 <https://jira.onap.org/browse/SO-1469`__ ] - Refactor OOF Homing to Java
+- [`SO-1462 <https://jira.onap.org/browse/SO-1462`__ ] - Clean up AT&T Acronyms from Unit tests for audit
+- [`SO-1459 <https://jira.onap.org/browse/SO-1459`__ ] - add maven build properties to spring actuator
+- [`SO-1456 <https://jira.onap.org/browse/SO-1456`__ ] - prototype fetching resources from openstack and compare to a ai
+- [`SO-1452 <https://jira.onap.org/browse/SO-1452`__ ] - added list of flows to execution for cockpit
+- [`SO-1451 <https://jira.onap.org/browse/SO-1451`__ ] - Updated the SDC API call with the ECOMP OE from AAI
+- [`SO-1450 <https://jira.onap.org/browse/SO-1450`__ ] - support for secure communications between SO and Multicloud
+- [`SO-1447 <https://jira.onap.org/browse/SO-1447`__ ] - Refine multicloud use of SO cloudsites and identify DB
+- [`SO-1446 <https://jira.onap.org/browse/SO-1446`__ ] - Multicloud API updates for generic clouds
+- [`SO-1445 <https://jira.onap.org/browse/SO-1445`__ ] - Multicloud support for volume groups and networks
+- [`SO-1444 <https://jira.onap.org/browse/SO-1444`__ ] - AAI update after vfmodule creation
+- [`SO-1443 <https://jira.onap.org/browse/SO-1443`__ ] - Prepare user_directives for multicloud API
+- [`SO-1442 <https://jira.onap.org/browse/SO-1442`__ ] - Prepare sdnc_directives for multicloud API
+- [`SO-1441 <https://jira.onap.org/browse/SO-1441`__ ] - Handle distribution of service with generic cloud artifacts
+- [`SO-1436 <https://jira.onap.org/browse/SO-1436`__ ] - removed unnecessary repository from pom.xml
+- [`SO-1432 <https://jira.onap.org/browse/SO-1432`__ ] - duplicate add custom object support to a ai client
+- [`SO-1431 <https://jira.onap.org/browse/SO-1431`__ ] - Test issue 1
+- [`SO-1429 <https://jira.onap.org/browse/SO-1429`__ ] - add custom object support to a ai client
+- [`SO-1427 <https://jira.onap.org/browse/SO-1427`__ ] - Fix to include alloc pool from dhcpStart/end on reqs
+- [`SO-1426 <https://jira.onap.org/browse/SO-1426`__ ] - Upgraded tosca parser to version 1.4.8 and updated imports
+- [`SO-1425 <https://jira.onap.org/browse/SO-1425`__ ] - Re-Factor DMAAP Credentials to use encrypted auth
+- [`SO-1421 <https://jira.onap.org/browse/SO-1421`__ ] - Support for SO->ExtAPI interface/API
+- [`SO-1414 <https://jira.onap.org/browse/SO-1414`__ ] - update all inprogress checks in apih handler
+- [`SO-1413 <https://jira.onap.org/browse/SO-1413`__ ] - replaced org.mockito.Matchers with ArgumentMatchers
+- [`SO-1411 <https://jira.onap.org/browse/SO-1411`__ ] - Test Issue
+- [`SO-1409 <https://jira.onap.org/browse/SO-1409`__ ] - added in validation for number of keys provided
+- [`SO-1405 <https://jira.onap.org/browse/SO-1405`__ ] - apih infra shall ensure data for si matches on macro requests
+- [`SO-1404 <https://jira.onap.org/browse/SO-1404`__ ] - covert sync calls for create and delete network to async
+- [`SO-1395 <https://jira.onap.org/browse/SO-1395`__ ] - E2E Automation - PreInstatition and PostInstatition use cases
+- [`SO-1389 <https://jira.onap.org/browse/SO-1389`__ ] - added mso-request-id when calling SDNCHandler subflow
+- [`SO-1388 <https://jira.onap.org/browse/SO-1388`__ ] - descriptive messages now returned by validator
+- [`SO-1387 <https://jira.onap.org/browse/SO-1387`__ ] - naming ms client fixes
+- [`SO-1385 <https://jira.onap.org/browse/SO-1385`__ ] - removed retired A&AI versions from codebase
+- [`SO-1384 <https://jira.onap.org/browse/SO-1384`__ ] - sdnc handler was not sending workflow exception upwards
+- [`SO-1383 <https://jira.onap.org/browse/SO-1383`__ ] - refactored validator to be more generic
+- [`SO-1381 <https://jira.onap.org/browse/SO-1381`__ ] - Quality of Life logging improvements
+- [`SO-1380 <https://jira.onap.org/browse/SO-1380`__ ] - Service Proxy Consolidation
+- [`SO-1379 <https://jira.onap.org/browse/SO-1379`__ ] - Add validation for vnfs before WorkflowAction starts
+- [`SO-1378 <https://jira.onap.org/browse/SO-1378`__ ] - get subnet sequence number from A&AI
+- [`SO-1377 <https://jira.onap.org/browse/SO-1377`__ ] - Re-enable Actuator for Springboot 2.0
+- [`SO-1376 <https://jira.onap.org/browse/SO-1376`__ ] - Created sniro request pojos for homingV2 flow
+- [`SO-1370 <https://jira.onap.org/browse/SO-1370`__ ] - Preparation for next scale-out after successful instantiation of the current scale-out operation
+- [`SO-1369 <https://jira.onap.org/browse/SO-1369`__ ] - Processing of configuration parameters during instantiation and scale-out
+- [`SO-1368 <https://jira.onap.org/browse/SO-1368`__ ] - VNF Health check during scale-out to be made as a separate workflow
+- [`SO-1367 <https://jira.onap.org/browse/SO-1367`__ ] - Invoke the APP-C service configuration API after E2E Service instantiation
+- [`SO-1366 <https://jira.onap.org/browse/SO-1366`__ ] - SO Workflow need to call configure API during instantiation
+- [`SO-1362 <https://jira.onap.org/browse/SO-1362`__ ] - Changed the MDC sourcing from LoggingInterceptor to JaxRsFilterLogging.
+- [`SO-1346 <https://jira.onap.org/browse/SO-1346`__ ] - Use SLF4J/Logback, instead of Log4J
+- [`SO-1307 <https://jira.onap.org/browse/SO-1307`__ ] - Add Headers
+- [`SO-1295 <https://jira.onap.org/browse/SO-1295`__ ] - Update SDNC client Version in POM
+- [`SO-1293 <https://jira.onap.org/browse/SO-1293`__ ] - Vnf Recreate
+- [`SO-1290 <https://jira.onap.org/browse/SO-1290`__ ] - Update orchestrationrequest response
+- [`SO-1288 <https://jira.onap.org/browse/SO-1288`__ ] - Enhance GRM Clients to use encrypted auth loading
+- [`SO-1287 <https://jira.onap.org/browse/SO-1287`__ ] - Change all SDNC Calls in GR_API
+- [`SO-1284 <https://jira.onap.org/browse/SO-1284`__ ] - Create Relationship between Vnf and Tenant
+- [`SO-1283 <https://jira.onap.org/browse/SO-1283`__ ] - Fix GR_API cloud info retrieval
+- [`SO-1282 <https://jira.onap.org/browse/SO-1282`__ ] - Update Alacarte Logic for Recreate Flow
+- [`SO-1279 <https://jira.onap.org/browse/SO-1279`__ ] - Replaced the VNFC hardcoded Function
+- [`SO-1278 <https://jira.onap.org/browse/SO-1278`__ ] - Move all ecomp.mso properties to org.onap.so
+- [`SO-1276 <https://jira.onap.org/browse/SO-1276`__ ] - Add Cloud_Owner to northbound request table
+- [`SO-1275 <https://jira.onap.org/browse/SO-1275`__ ] - Resolve path issues
+- [`SO-1274 <https://jira.onap.org/browse/SO-1274`__ ] - CreateAndUpdatePNFResource workflow:: Associate PNF instance
+- [`SO-1272 <https://jira.onap.org/browse/SO-1272`__ ] - Use UUID to fill pnf-id in PNF PnP sub-flow
+- [`SO-1270 <https://jira.onap.org/browse/SO-1270`__ ] - Add New A&AI objects
+- [`SO-1269 <https://jira.onap.org/browse/SO-1269`__ ] - Add serviceRole to MSO SNIRO Interface
+- [`SO-1260 <https://jira.onap.org/browse/SO-1260`__ ] - Add support for naming service
+- [`SO-1233 <https://jira.onap.org/browse/SO-1233`__ ] - Added service role to sniro request when not null
+- [`SO-1232 <https://jira.onap.org/browse/SO-1232`__ ] - Switch to SpringAutoDeployment rather than processes.xml
+- [`SO-1229 <https://jira.onap.org/browse/SO-1229`__ ] - Remove all usage of AlarmLogger
+- [`SO-1228 <https://jira.onap.org/browse/SO-1228`__ ] - Limit Number of Occurs for security reasons
+- [`SO-1227 <https://jira.onap.org/browse/SO-1227`__ ] - Remove Swagger UI due to security scan concerns
+- [`SO-1226 <https://jira.onap.org/browse/SO-1226`__ ] - changed assign vnf sdnc to use the async subflow
+- [`SO-1225 <https://jira.onap.org/browse/SO-1225`__ ] - Add Keystone V3 Support
+- [`SO-1207 <https://jira.onap.org/browse/SO-1207`__ ] - accept a la carte create instance group request from vid
+- [`SO-1206 <https://jira.onap.org/browse/SO-1206`__ ] - Added groupInstanceId and groupInstanceName columns
+- [`SO-1205 <https://jira.onap.org/browse/SO-1205`__ ] - separate error status from progression status in req db
+- [`SO-806 <https://jira.onap.org/browse/SO-806`__ ] - SO PNF PnP workflow shall not set "in-maint" AAI flag
+- [`SO-798 <https://jira.onap.org/browse/SO-798`__ ] - Externalize the PNF PnP workflow 鈥?as a Service Instance Deployment workflow 鈥?adding the Controller
+- [`SO-747 <https://jira.onap.org/browse/SO-747`__ ] - POC - Enable SO use of Multicloud Generic VNF Instantiation API
+- [`SO-700 <https://jira.onap.org/browse/SO-700`__ ] - SO should be able to support CCVPN service assurance
+- [`SO-588 <https://jira.onap.org/browse/SO-588`__ ] - Automate robot heatbridge manual step to add VF Module stack resources in AAI
+- [`SO-18 <https://jira.onap.org/browse/SO-18`__ ] - Keystone v3 Support in MSO
+- [`SO-12 <https://jira.onap.org/browse/SO-12`__ ] - Support Ocata apis
+- [`SO-10 <https://jira.onap.org/browse/SO-10`__ ] - Deploy a MSO high availability environment
+- [`SO-7 <https://jira.onap.org/browse/SO-7`__ ] - Move modified openstack library to common functions repos
+- [`SO-6 <https://jira.onap.org/browse/SO-6`__ ] - Document how to change username/password for UIs
+
+
+Security Notes
+--------------
+ SO code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The SO open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=43385708>`_.
+
+Quick Links:
+
+ - `SO project page <https://wiki.onap.org/display/DW/Service+Orchestrator+Project>`_
+ - `Passing Badge information for SO <https://bestpractices.coreinfrastructure.org/en/projects/1702>`_
+ - `Project Vulnerability Review Table for SO <https://wiki.onap.org/pages/viewpage.action?pageId=43385708>`_
+
+
+**Known Issues**
+
+ TBD
+
+**Upgrade Notes**
+
+ N/A
+
+**Deprecation Notes**
+
+ N/A
+
+**Other**
+
+ N/A
+
+Version: 1.4.1
+==============
+
+:Release Date: 2019-04-19
+
+This is the dublin release base version separated from master branch.
+
+
Version: 1.3.7
--------------