import static com.github.tomakehurst.wiremock.client.WireMock.get;
 import static com.github.tomakehurst.wiremock.client.WireMock.ok;
 import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
 import static com.github.tomakehurst.wiremock.client.WireMock.put;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
+import static org.assertj.core.api.Assertions.fail;
 import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareAssertions.assertThat;
 
+import com.google.protobuf.Struct;
+import com.google.protobuf.Value;
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 import org.camunda.bpm.engine.runtime.Execution;
 import org.camunda.bpm.engine.runtime.ProcessInstance;
 import org.junit.Before;
 import org.junit.Test;
+import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers;
+import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader;
+import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput;
 import org.onap.so.BaseBPMNTest;
 import org.onap.so.GrpcNettyServer;
 import org.onap.so.bpmn.mock.FileUtil;
     private String testBusinessKey;
     private String requestObject;
     private String responseObject;
+    private String msoRequestId;
 
     @Autowired
     private GrpcNettyServer grpcNettyServer;
         /**
          * Create mso-request-id.
          */
-        String msoRequestId = UUID.randomUUID().toString();
+        msoRequestId = UUID.randomUUID().toString();
 
         variables.put("mso-request-id", msoRequestId);
 
     public void workflow_validInput_expectedOuput() {
 
         mockCatalogDb();
+        mockRequestDb();
         mockAai();
         mockDmaapForPnf();
 
 
         if (!execution.isSuspended() && !execution.isEnded()) {
             try {
-
                 runtimeService.signal(execution.getId());
             } catch (Exception e) {
                 logger.info(e.getMessage(), e);
 
         assertThat(pi).isEnded();
 
-        List<String> messagesDelivered = grpcNettyServer.getMessagesDelivered();
-        assertThat(messagesDelivered).containsSequence("config-assign", "config-deploy");
+        List<ExecutionServiceInput> detailedMessages = grpcNettyServer.getDetailedMessages();
+        assertThat(detailedMessages).hasSize(2);
+        try {
+            checkConfigAssign(detailedMessages.get(0));
+            checkConfigDeploy(detailedMessages.get(1));
+        } catch(Exception e){
+            e.printStackTrace();
+            fail("ConfigAssign/deploy request exception", e);
+        }
+    }
+
+    private void checkConfigAssign(ExecutionServiceInput executionServiceInput) {
+        ActionIdentifiers actionIdentifiers = executionServiceInput.getActionIdentifiers();
+
+        /**
+         * the fields of actionIdentifiers should match the one in the response/createVcpeResCustServiceSimplifiedTest_catalogdb.json.
+         */
+        assertThat(actionIdentifiers.getBlueprintName()).matches("test_configuration_restconf");
+        assertThat(actionIdentifiers.getBlueprintVersion()).matches("1.0.0");
+        assertThat(actionIdentifiers.getActionName()).matches("config-assign");
+        assertThat(actionIdentifiers.getMode()).matches("sync");
+
+        CommonHeader commonHeader = executionServiceInput.getCommonHeader();
+        assertThat(commonHeader.getOriginatorId()).matches("SO");
+        assertThat(commonHeader.getRequestId()).matches(msoRequestId);
+
+        Struct payload = executionServiceInput.getPayload();
+        Struct requeststruct = payload.getFieldsOrThrow("config-assign-request").getStructValue();
+
+        assertThat(requeststruct.getFieldsOrThrow("resolution-key").getStringValue()).matches("PNFDemo");
+        Struct propertiesStruct = requeststruct.getFieldsOrThrow("config-assign-properties").getStructValue();
+
+        assertThat(propertiesStruct.getFieldsOrThrow("pnf-name").getStringValue()).matches("PNFDemo");
+        assertThat(propertiesStruct.getFieldsOrThrow("service-model-uuid").getStringValue()).matches("f2daaac6-5017-4e1e-96c8-6a27dfbe1421");
+        assertThat(propertiesStruct.getFieldsOrThrow("pnf-customization-uuid").getStringValue()).matches("68dc9a92-214c-11e7-93ae-92361f002680");
+    }
+
+    private void checkConfigDeploy(ExecutionServiceInput executionServiceInput) {
+        ActionIdentifiers actionIdentifiers = executionServiceInput.getActionIdentifiers();
+
+        /**
+         * the fields of actionIdentifiers should match the one in the response/createVcpeResCustServiceSimplifiedTest_catalogdb.json.
+         */
+        assertThat(actionIdentifiers.getBlueprintName()).matches("test_configuration_restconf");
+        assertThat(actionIdentifiers.getBlueprintVersion()).matches("1.0.0");
+        assertThat(actionIdentifiers.getActionName()).matches("config-deploy");
+        assertThat(actionIdentifiers.getMode()).matches("async");
+
+        CommonHeader commonHeader = executionServiceInput.getCommonHeader();
+        assertThat(commonHeader.getOriginatorId()).matches("SO");
+        assertThat(commonHeader.getRequestId()).matches(msoRequestId);
+
+        Struct payload = executionServiceInput.getPayload();
+        Struct requeststruct = payload.getFieldsOrThrow("config-deploy-request").getStructValue();
+
+        assertThat(requeststruct.getFieldsOrThrow("resolution-key").getStringValue()).matches("PNFDemo");
+        Struct propertiesStruct = requeststruct.getFieldsOrThrow("config-deploy-properties").getStructValue();
+
+        assertThat(propertiesStruct.getFieldsOrThrow("pnf-name").getStringValue()).matches("PNFDemo");
+        assertThat(propertiesStruct.getFieldsOrThrow("service-model-uuid").getStringValue()).matches("f2daaac6-5017-4e1e-96c8-6a27dfbe1421");
+        assertThat(propertiesStruct.getFieldsOrThrow("pnf-customization-uuid").getStringValue()).matches("68dc9a92-214c-11e7-93ae-92361f002680");
+
+        /**
+         * IP addresses match the OAM ip addresses from AAI.
+         */
+        assertThat(propertiesStruct.getFieldsOrThrow("pnf-ipv4-address").getStringValue()).matches("1.1.1.1");
+        assertThat(propertiesStruct.getFieldsOrThrow("pnf-ipv6-address").getStringValue()).matches("::/128");
     }
 
     /**
             + "   \"pnf-id\":\"testtest\",\n"
             + "   \"in-maint\":true,\n"
             + "   \"resource-version\":\"1541720264047\",\n"
-            + "   \"pnf-ipv4-address\":\"1.1.1.1\",\n"
-            + "   \"pnf-ipv6-address\":\"ipv6\"\n"
+            + "   \"ipaddress-v4-oam\":\"1.1.1.1\",\n"
+            + "   \"ipaddress-v6-oam\":\"::/128\"\n"
             + "}";
 
         /**
             "/pnfResourceCustomization/search/findPnfResourceCustomizationByModelUuid?SERVICE_MODEL_UUID=f2daaac6-5017-4e1e-96c8-6a27dfbe1421"))
             .willReturn(okJson(catalogdbClientResponse)));
     }
+
+    private void mockRequestDb() {
+        wireMockServer.stubFor(post(urlEqualTo("/dbadapters/RequestsDbAdapter")).willReturn(ok()));
+    }
+
 }