Deploy activities to SDC from Catalog

Deploy activities to SDC from Catalog

Change-Id: I1c91b79a060889f14cf0b653b3ed1a60e934c8bf
Issue-ID: SO-1725
Signed-off-by: Kuleshov, Elena <evn@att.com>
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/activity/DeployActivitySpecs.java b/asdc-controller/src/main/java/org/onap/so/asdc/activity/DeployActivitySpecs.java
index 46d0f78..87008f1 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/activity/DeployActivitySpecs.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/activity/DeployActivitySpecs.java
@@ -20,14 +20,18 @@
 
 package org.onap.so.asdc.activity;
 
-import javax.annotation.PostConstruct;
 import java.util.ArrayList;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 import org.onap.so.asdc.activity.beans.ActivitySpec;
-import org.onap.so.db.catalog.client.CatalogDbClient;
+import org.onap.so.asdc.activity.beans.Input;
+import org.onap.so.asdc.activity.beans.Output;
+import org.onap.so.db.catalog.beans.ActivitySpecActivitySpecCategories;
+import org.onap.so.db.catalog.beans.ActivitySpecActivitySpecParameters;
+import org.onap.so.db.catalog.beans.ActivitySpecParameters;
+import org.onap.so.db.catalog.data.repository.ActivitySpecRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -39,17 +43,24 @@
     @Autowired
     private Environment env;
 
+    @Autowired
+    private ActivitySpecRepository activitySpecRepository;
+
     private static final String SDC_ENDPOINT = "mso.asdc.config.activity.endpoint";
+    private static final String DIRECTION_INPUT = "input";
+    private static final String DIRECTION_OUTPUT = "output";
 
     protected static final Logger logger = LoggerFactory.getLogger(DeployActivitySpecs.class);
 
+
     public void deployActivities() throws Exception {
-        String hostname = this.env.getProperty(SDC_ENDPOINT);
-        List<ActivitySpec> activitySpecs = new ArrayList<ActivitySpec>();
-
-        // Initialize activitySpecs from Catalog DB
-
-        for (ActivitySpec activitySpec : activitySpecs) {
+        String hostname = env.getProperty(SDC_ENDPOINT);
+        if (hostname == null || hostname.isEmpty()) {
+            return;
+        }
+        List<org.onap.so.db.catalog.beans.ActivitySpec> activitySpecsFromCatalog = activitySpecRepository.findAll();
+        for (org.onap.so.db.catalog.beans.ActivitySpec activitySpecFromCatalog : activitySpecsFromCatalog) {
+            ActivitySpec activitySpec = mapActivitySpecFromCatalogToSdc(activitySpecFromCatalog);
             String activitySpecId = activitySpecsActions.createActivitySpec(hostname, activitySpec);
             if (activitySpecId != null) {
                 logger.info("{} {}", "Successfully created activitySpec", activitySpec.getName());
@@ -64,4 +75,62 @@
             }
         }
     }
+
+    public ActivitySpec mapActivitySpecFromCatalogToSdc(
+            org.onap.so.db.catalog.beans.ActivitySpec activitySpecFromCatalog) {
+        ActivitySpec activitySpec = new ActivitySpec();
+        activitySpec.setName(activitySpecFromCatalog.getName());
+        activitySpec.setDescription(activitySpecFromCatalog.getDescription());
+        mapCategoryList(activitySpecFromCatalog.getActivitySpecActivitySpecCategories(), activitySpec);
+        mapInputsAndOutputs(activitySpecFromCatalog.getActivitySpecActivitySpecParameters(), activitySpec);
+        return activitySpec;
+    }
+
+    private void mapCategoryList(List<ActivitySpecActivitySpecCategories> activitySpecActivitySpecCategories,
+            ActivitySpec activitySpec) {
+        if (activitySpecActivitySpecCategories == null || activitySpecActivitySpecCategories.size() == 0) {
+            return;
+        }
+        List<String> categoryList = new ArrayList<String>();
+        for (ActivitySpecActivitySpecCategories activitySpecCat : activitySpecActivitySpecCategories) {
+            if (activitySpecCat != null) {
+                if (activitySpecCat.getActivitySpecCategories() != null) {
+                    categoryList.add(activitySpecCat.getActivitySpecCategories().getName());
+                }
+            }
+        }
+        activitySpec.setCategoryList(categoryList);
+    }
+
+    private void mapInputsAndOutputs(List<ActivitySpecActivitySpecParameters> activitySpecActivitySpecParameters,
+            ActivitySpec activitySpec) {
+        if (activitySpecActivitySpecParameters == null || activitySpecActivitySpecParameters.size() == 0) {
+            return;
+        }
+        List<Input> inputs = new ArrayList<Input>();
+        List<Output> outputs = new ArrayList<Output>();
+        for (ActivitySpecActivitySpecParameters activitySpecParam : activitySpecActivitySpecParameters) {
+            if (activitySpecParam != null) {
+                if (activitySpecParam.getActivitySpecParameters() != null) {
+                    ActivitySpecParameters activitySpecParameters = activitySpecParam.getActivitySpecParameters();
+                    if (activitySpecParameters != null) {
+                        if (activitySpecParameters.getDirection().equals(DIRECTION_INPUT)) {
+                            Input input = new Input();
+                            input.setName(activitySpecParameters.getName());
+                            input.setType(activitySpecParameters.getType());
+                            inputs.add(input);
+                        } else if (activitySpecParameters.getDirection().equals(DIRECTION_OUTPUT)) {
+                            Output output = new Output();
+                            output.setName(activitySpecParameters.getName());
+                            output.setType(activitySpecParameters.getType());
+                            outputs.add(output);
+                        }
+                    }
+                }
+            }
+        }
+        activitySpec.setInputs(inputs);
+        activitySpec.setOutputs(outputs);
+        return;
+    }
 }
diff --git a/asdc-controller/src/test/java/org/onap/asdc/activity/DeployActivitySpecsTest.java b/asdc-controller/src/test/java/org/onap/asdc/activity/DeployActivitySpecsTest.java
index 86f6a89..aae5e5d 100644
--- a/asdc-controller/src/test/java/org/onap/asdc/activity/DeployActivitySpecsTest.java
+++ b/asdc-controller/src/test/java/org/onap/asdc/activity/DeployActivitySpecsTest.java
@@ -19,20 +19,72 @@
  */
 package org.onap.asdc.activity;
 
+import java.nio.file.Files;
+import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
 import org.junit.Test;
-import org.onap.so.asdc.BaseTest;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.so.asdc.activity.ActivitySpecsActions;
 import org.onap.so.asdc.activity.DeployActivitySpecs;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.onap.so.asdc.activity.beans.ActivitySpec;
+import org.onap.so.asdc.activity.beans.ActivitySpecCreateResponse;
+import org.onap.so.db.catalog.data.repository.ActivitySpecRepository;
+import org.springframework.core.env.Environment;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
 
+@RunWith(MockitoJUnitRunner.class)
+public class DeployActivitySpecsTest {
+    @Mock
+    protected Environment env;
 
-public class DeployActivitySpecsTest extends BaseTest {
+    @Mock
+    protected ActivitySpecRepository activitySpecRepository;
 
-    @Autowired
+    @Mock
+    protected ActivitySpecsActions activitySpecsActions;
+
+    @InjectMocks
     private DeployActivitySpecs deployActivitySpecs;
 
     @Test
-    public void DeployActivitySpecs_Test() throws Exception {
-        // Mock catalog DB results
+    public void deployActivitySpecs_Test() throws Exception {
+        boolean deploymentSuccessful = true;
+        ActivitySpecCreateResponse activitySpecCreateResponse = new ActivitySpecCreateResponse();
+        activitySpecCreateResponse.setId("testActivityId");
+        ObjectMapper mapper = new ObjectMapper();
+        org.onap.so.db.catalog.beans.ActivitySpec catalogActivitySpec = mapper.readValue(
+                new String(Files.readAllBytes(Paths.get("src/test/resources/ActivitySpecFromCatalog.json"))),
+                org.onap.so.db.catalog.beans.ActivitySpec.class);
+        List<org.onap.so.db.catalog.beans.ActivitySpec> catalogActivitySpecList =
+                new ArrayList<org.onap.so.db.catalog.beans.ActivitySpec>();
+        catalogActivitySpecList.add(catalogActivitySpec);
+        when(env.getProperty("mso.asdc.config.activity.endpoint")).thenReturn("testEndpoint");
+        when(activitySpecRepository.findAll()).thenReturn(catalogActivitySpecList);
+        doReturn("testActivityId").when(activitySpecsActions).createActivitySpec(Mockito.any(), Mockito.any());
+        doReturn(true).when(activitySpecsActions).certifyActivitySpec(Mockito.any(), Mockito.any());
         deployActivitySpecs.deployActivities();
+        assertTrue(deploymentSuccessful);
+    }
+
+    @Test
+    public void mapActivitySpecFromCatalogToSdc_Test() throws Exception {
+        ObjectMapper mapper = new ObjectMapper();
+        org.onap.so.db.catalog.beans.ActivitySpec catalogActivitySpec = mapper.readValue(
+                new String(Files.readAllBytes(Paths.get("src/test/resources/ActivitySpecFromCatalog.json"))),
+                org.onap.so.db.catalog.beans.ActivitySpec.class);
+        ActivitySpec activitySpec = deployActivitySpecs.mapActivitySpecFromCatalogToSdc(catalogActivitySpec);
+        ActivitySpec expected = mapper.readValue(
+                new String(Files.readAllBytes(Paths.get("src/test/resources/ActivitySpec.json"))), ActivitySpec.class);
+        assertThat(expected, sameBeanAs(activitySpec));
     }
 }
diff --git a/asdc-controller/src/test/resources/ActivitySpec.json b/asdc-controller/src/test/resources/ActivitySpec.json
new file mode 100644
index 0000000..66e1b13
--- /dev/null
+++ b/asdc-controller/src/test/resources/ActivitySpec.json
@@ -0,0 +1,23 @@
+{
+  "name": "VNFQuiesceTrafficActivity",
+  "description": "Activity to QuiesceTraffic on VNF",
+  "categoryList": [
+    "VNF"
+  ],
+  "inputs": [
+    {
+      "name": "parameter1",
+      "type": "string"
+    },
+    {
+      "name": "parameter2",
+      "type": "string"
+    }
+  ],
+  "outputs": [
+    {
+      "name": "parameter3",
+      "type": "string"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/ActivitySpecFromCatalog.json b/asdc-controller/src/test/resources/ActivitySpecFromCatalog.json
new file mode 100644
index 0000000..0864a2c
--- /dev/null
+++ b/asdc-controller/src/test/resources/ActivitySpecFromCatalog.json
@@ -0,0 +1,41 @@
+{  
+    "name": "VNFQuiesceTrafficActivity",
+    "description": "Activity to QuiesceTraffic on VNF",
+    "version": null,
+    "created": null,
+    "workflowActivitySpecSequence": null,
+    "activitySpecActivitySpecCategories": [
+    	{
+   			"activitySpecCategories": {
+    			"name": "VNF"
+    		}
+    	}
+    ],
+    "activitySpecActivitySpecParameters": [
+      {        
+        "activitySpecParameters": {
+          "name": "parameter1",
+          "type": "string",
+          "direction": "input",
+          "description": "Parameter 1"          
+        }
+      },
+      {        
+        "activitySpecParameters": {
+          "name": "parameter2",
+          "type": "string",
+          "direction": "input",
+          "description": "Parameter 2"          
+        }
+      },
+      {        
+        "activitySpecParameters": {
+          "name": "parameter3",
+          "type": "string",
+          "direction": "output",
+          "description": "Parameter 3"          
+        }
+      }      
+   ]
+  
+}
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/ActivitySpecList.json b/asdc-controller/src/test/resources/ActivitySpecList.json
new file mode 100644
index 0000000..c3530a2
--- /dev/null
+++ b/asdc-controller/src/test/resources/ActivitySpecList.json
@@ -0,0 +1,398 @@
+{
+  "activitySpecList": [
+    {
+      "activitySpec": {
+        "name": "VNFQuiesceTrafficActivity",
+        "description": "Activity to QuiesceTraffic on VNF",
+        "version": null,
+        "created": null,
+        "workflowActivitySpecSequence": null,
+        "activitySpecActivitySpecCategories": null,
+        "activitySpecUserParameters": [
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "operations_timeout",
+              "payloadLocation": "userParams",
+              "label": "Operations Timeout",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "existing_software_version",
+              "payloadLocation": "userParams",
+              "label": "Existing Software Version",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "cloudOwner",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Cloud Owner",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 7,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "tenantId",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Tenant/Project ID",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 36,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "new_software_version",
+              "payloadLocation": "userParams",
+              "label": "New Software Version",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "lcpCloudRegionId",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Cloud Region ID",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 7,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          }
+        ],
+        "activitySpecActivitySpecParameters": null,
+        "id": null
+      },
+      "workflow": null,
+      "id": null
+    },
+    {
+      "activitySpecId": null,
+      "workflowId": null,
+      "activitySpec": {
+        "name": "VNFHealthCheckActivity",
+        "description": "Activity to HealthCheck VNF",
+        "version": null,
+        "created": null,
+        "workflowActivitySpecSequence": null,
+        "activitySpecActivitySpecCategories": null,
+        "activitySpecUserParameters": [
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "operations_timeout",
+              "payloadLocation": "userParams",
+              "label": "Operations Timeout",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "existing_software_version",
+              "payloadLocation": "userParams",
+              "label": "Existing Software Version",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "cloudOwner",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Cloud Owner",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 7,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "tenantId",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Tenant/Project ID",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 36,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "new_software_version",
+              "payloadLocation": "userParams",
+              "label": "New Software Version",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "lcpCloudRegionId",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Cloud Region ID",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 7,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          }
+        ],
+        "activitySpecActivitySpecParameters": null,
+        "id": null
+      },
+      "workflow": null,
+      "id": null
+    },
+    {
+      "activitySpecId": null,
+      "workflowId": null,
+      "activitySpec": {
+        "name": "FlowCompleteActivity",
+        "description": "Activity to Complete the BPMN Flow",
+        "version": null,
+        "created": null,
+        "workflowActivitySpecSequence": null,
+        "activitySpecActivitySpecCategories": null,
+        "activitySpecUserParameters": [
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "operations_timeout",
+              "payloadLocation": "userParams",
+              "label": "Operations Timeout",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "existing_software_version",
+              "payloadLocation": "userParams",
+              "label": "Existing Software Version",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "cloudOwner",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Cloud Owner",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 7,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "tenantId",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Tenant/Project ID",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 36,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "new_software_version",
+              "payloadLocation": "userParams",
+              "label": "New Software Version",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 50,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          },
+          {
+            "activitySpecId": null,
+            "userParametersId": null,
+            "activitySpec": null,
+            "userParameters": {
+              "name": "lcpCloudRegionId",
+              "payloadLocation": "cloudConfiguration",
+              "label": "Cloud Region ID",
+              "type": "text",
+              "description": null,
+              "isRequried": true,
+              "maxLength": 7,
+              "allowableChars": "someRegEx",
+              "created": null,
+              "activitySpecUserParameters": null,
+              "id": null
+            },
+            "id": null
+          }
+        ],
+        "activitySpecActivitySpecParameters": null,
+        "id": null
+      },
+      "workflow": null,
+      "id": null
+    }
+  ]
+}
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/data.sql b/asdc-controller/src/test/resources/data.sql
index 7cd972c..47e6c4c 100644
--- a/asdc-controller/src/test/resources/data.sql
+++ b/asdc-controller/src/test/resources/data.sql
@@ -22,6 +22,196 @@
 INSERT INTO temp_network_heat_template_lookup(NETWORK_RESOURCE_MODEL_NAME, HEAT_TEMPLATE_ARTIFACT_UUID, AIC_VERSION_MIN, AIC_VERSION_MAX) VALUES
 ('SRIOV_PROVIDER_NETWORK', 'ff874603-4222-11e7-9252-005056850d2e', '3.0', NULL);
 
+insert into vnf_resource(orchestration_mode, description, creation_timestamp, model_uuid, aic_version_min, aic_version_max, model_invariant_uuid, model_version, model_name, tosca_node_type, heat_template_artifact_uuid) values
+('HEAT', '1607 vSAMP10a - inherent network', '2017-04-14 21:46:28', 'ff2ae348-214a-11e7-93ae-92361f002671', '', '', '2fff5b20-214b-11e7-93ae-92361f002671', '1.0', 'vSAMP10a', 'VF', null);
+
+insert into workflow(artifact_uuid, artifact_name, name, operation_name, version, description, body, resource_target, source) values
+('5b0c4322-643d-4c9f-b184-4516049e99b1', 'testingWorkflow', 'testingWorkflow', 'create', 1, 'Test Workflow', null, 'vnf', 'sdc');
+
+insert into vnf_resource_to_workflow(vnf_resource_model_uuid, workflow_id) values
+('ff2ae348-214a-11e7-93ae-92361f002671', '1');
+
+insert into activity_spec(name, description, version) values
+('testActivity1', 'Test Activity 1', 1.0);
+
+insert into workflow_activity_spec_sequence(workflow_id, activity_spec_id, seq_no) values
+(1, 1, 1);
+
+INSERT INTO activity_spec (NAME, DESCRIPTION, VERSION) 
+VALUES 
+('VNFSetInMaintFlagActivity','Activity to Set InMaint Flag in A&AI',1.0),
+('VNFCheckPserversLockedFlagActivity','Activity Check Pservers Locked Flag VNF',1.0),
+('VNFCheckInMaintFlagActivity','Activity CheckIn Maint Flag on VNF',1.0),
+('VNFCheckClosedLoopDisabledFlagActivity','Activity Check Closed Loop Disabled Flag on VNF',1.0),
+('VNFSetClosedLoopDisabledFlagActivity','Activity Set Closed Loop Disabled Flag on VNF',1.0),
+('VNFUnsetClosedLoopDisabledFlagActivity','Activity Unset Closed Loop Disabled Flag on VNF',1.0),
+('VNFLockActivity','Activity Lock on VNF',1.0),
+('VNFUnlockActivity','Activity UnLock on VNF',1.0),
+('VNFStopActivity','Activity Stop on VNF',1.0),
+('VNFStartActivity','Activity Start on VNF',1.0),
+('VNFSnapShotActivity','Activity Snap Shot on VNF',1.0),
+('FlowCompleteActivity','Activity Complete on VNF',1.0),
+('PauseForManualTaskActivity','Activity Pause For Manual Task on VNF',1.0),
+('DistributeTrafficActivity','Activity Distribute Traffic on VNF',1.0),
+('DistributeTrafficCheckActivity','Activity Distribute Traffic Check on VNF',1.0),
+('VNFHealthCheckActivity','Activity Health Check on VNF',1.0),
+('VNFQuiesceTrafficActivity','Activity Quiesce Traffic on VNF',1.0),
+('VNFResumeTrafficActivity','Activity Resume Traffic on VNF',1.0),
+('VNFUnsetInMaintFlagActivity','Activity Unset InMaint Flag on VNF',1.0),
+('VNFUpgradeBackupActivity','Activity Upgrade Backup on VNF',1.0),
+('VNFUpgradePostCheckActivity','Activity Upgrade Post Check on VNF',1.0),
+('VNFUpgradePreCheckActivity','Activity Upgrade PreCheck on VNF',1.0),
+('VNFUpgradeSoftwareActivity','Activity UpgradeS oftware on VNF',1.0),
+('VnfInPlaceSoftwareUpdate','Activity InPlace Software Update on VNF',1.0);
+
+INSERT INTO activity_spec_categories (NAME)
+VALUES ('VNF');
+
+INSERT INTO activity_spec_to_activity_spec_categories(ACTIVITY_SPEC_ID, ACTIVITY_SPEC_CATEGORIES_ID) 
+VALUES
+((select ID from activity_spec where NAME='VNFSetInMaintFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFCheckPserversLockedFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFCheckInMaintFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFCheckClosedLoopDisabledFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFSetClosedLoopDisabledFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFUnsetClosedLoopDisabledFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFLockActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFUnlockActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFStopActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFStartActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFSnapShotActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='FlowCompleteActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='PauseForManualTaskActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='DistributeTrafficActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='DistributeTrafficCheckActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFHealthCheckActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFQuiesceTrafficActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFResumeTrafficActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFUnsetInMaintFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFUpgradeBackupActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFUpgradePostCheckActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFUpgradePreCheckActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VNFUpgradeSoftwareActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF')),
+((select ID from activity_spec where NAME='VnfInPlaceSoftwareUpdate' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF'));
+
+INSERT INTO activity_spec_parameters (NAME, TYPE, DIRECTION, DESCRIPTION) 
+VALUES('WorkflowException','WorkflowException','output','Description');
+
+INSERT INTO activity_spec_to_activity_spec_parameters( ACTIVITY_SPEC_ID, ACTIVITY_SPEC_PARAMETERS_ID) 
+VALUES
+((select ID from activity_spec where NAME='VNFSetInMaintFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFCheckPserversLockedFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFCheckInMaintFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFCheckClosedLoopDisabledFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFSetClosedLoopDisabledFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFUnsetClosedLoopDisabledFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFLockActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFUnlockActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFStopActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFStartActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFSnapShotActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='FlowCompleteActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='PauseForManualTaskActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='DistributeTrafficActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='DistributeTrafficCheckActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFHealthCheckActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFQuiesceTrafficActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFResumeTrafficActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFUnsetInMaintFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFUpgradeBackupActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFUpgradePostCheckActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFUpgradePreCheckActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output')),
+((select ID from activity_spec where NAME='VNFUpgradeSoftwareActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='output'));
+
+INSERT INTO `user_parameters`(`NAME`,`PAYLOAD_LOCATION`,`LABEL`,`TYPE`,`DESCRIPTION`,`IS_REQUIRED`,`MAX_LENGTH`,`ALLOWABLE_CHARS`)
+VALUES 
+('cloudOwner','cloudConfiguration','Cloud Owner','text','',1,7,''), 
+('operations_timeout','userParams','Operations Timeout','text','',1,50,''),
+('existing_software_version','userParams','Existing Software Version','text','',1,50,''),
+('tenantId','cloudConfiguration','Tenant/Project ID','text','',1,36,''),
+('new_software_version','userParams','New Software Version','text','',1,50,''),
+('lcpCloudRegionId','cloudConfiguration','Cloud Region ID','text','',1,7,'');
+
+INSERT INTO `activity_spec_to_user_parameters`(`ACTIVITY_SPEC_ID`,`USER_PARAMETERS_ID`)
+VALUES
+((select ID from activity_spec where NAME='VNFStopActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='lcpCloudRegionId')),
+((select ID from activity_spec where NAME='VNFStopActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='tenantId')),
+((select ID from activity_spec where NAME='VNFStartActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='lcpCloudRegionId')),
+((select ID from activity_spec where NAME='VNFStartActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='tenantId')),
+((select ID from activity_spec where NAME='VNFSnapShotActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='lcpCloudRegionId')),
+((select ID from activity_spec where NAME='VNFSnapShotActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='tenantId')),
+((select ID from activity_spec where NAME='VNFQuiesceTrafficActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='operations_timeout')),
+((select ID from activity_spec where NAME='VNFUpgradeBackupActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='existing_software_version')),
+((select ID from activity_spec where NAME='VNFUpgradeBackupActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='new_software_version')),
+((select ID from activity_spec where NAME='VNFUpgradePostCheckActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='existing_software_version')),
+((select ID from activity_spec where NAME='VNFUpgradePostCheckActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='new_software_version')),
+((select ID from activity_spec where NAME='VNFUpgradePreCheckActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='existing_software_version')),
+((select ID from activity_spec where NAME='VNFUpgradePreCheckActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='new_software_version')),
+((select ID from activity_spec where NAME='VNFUpgradeSoftwareActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='existing_software_version')),
+((select ID from activity_spec where NAME='VNFUpgradeSoftwareActivity' and VERSION=1.0),
+(select ID from user_parameters where NAME='new_software_version'));
+
 
 --------START Request DB INSERTS --------
 insert into requestdb.watchdog_distributionid_status(DISTRIBUTION_ID, DISTRIBUTION_ID_STATUS,LOCK_VERSION) values 
@@ -61,4 +251,4 @@
 
 insert into requestdb.watchdog_service_mod_ver_id_lookup(DISTRIBUTION_ID, SERVICE_MODEL_VERSION_ID, DISTRIBUTION_NOTIFICATION, CONSUMER_ID) values
 ('watchdogTestStatusSuccess', '5df8b6de-2083-11e7-93ae-92361f002671', NULL, NULL),
-('watchdogTestStatusNull', '00000000-0000-0000-0000-000000000000', NULL, NULL);
+('watchdogTestStatusNull', '00000000-0000-0000-0000-000000000000', NULL, NULL);
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/schema.sql b/asdc-controller/src/test/resources/schema.sql
index 0b48b2e..dc92631 100644
--- a/asdc-controller/src/test/resources/schema.sql
+++ b/asdc-controller/src/test/resources/schema.sql
@@ -1204,9 +1204,10 @@
 CREATE TABLE IF NOT EXISTS `pnf_resource_customization_to_service` (
   `SERVICE_MODEL_UUID` varchar(200) NOT NULL,
   `RESOURCE_MODEL_CUSTOMIZATION_UUID` varchar(200) NOT NULL,
-  PRIMARY KEY (`SERVICE_MODEL_UUID`,`RESOURCE_MODEL_CUSTOMIZATION_UUID`)
+  PRIMARY KEY (`SERVICE_MODEL_UUID`,`RESOURCE_MODEL_CUSTOMIZATION_UUID`)  
 )ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
+
 CREATE TABLE IF NOT EXISTS `workflow` (
   `ID` int(11) NOT NULL AUTO_INCREMENT,
   `ARTIFACT_UUID` varchar(200) NOT NULL,
@@ -1370,7 +1371,6 @@
 DEFAULT CHARACTER SET = latin1;
 
 
-
 --------START Request DB SCHEMA --------
 CREATE DATABASE requestdb;
 USE requestdb;