private static final String CREATE_IN_PROGRESS = "CREATE_IN_PROGRESS";
 
-    private static final String DELETE_STACK = "DeleteStack";
-
     protected static final String HEAT_ERROR = "HeatError";
 
     protected static final String CREATE_STACK = "CreateStack";
     @Autowired
     private Environment environment;
 
-    @Autowired
-    RequestsDbClient requestDBClient;
-
     @Autowired
     StackStatusHandler statusHandler;
 
     @Autowired
     NovaClientImpl novaClient;
 
+    @Autowired
+    RequestsDbClient requestDBClient;
+
     private static final Logger logger = LoggerFactory.getLogger(MsoHeatUtils.class);
 
     // Properties names and variables (with default values)
         CreateStackParam createStack = createStackParam(stackName, heatTemplate, stackInputs, timeoutMinutes,
                 environment, nestedTemplates, heatFiles);
         Stack currentStack = queryHeatStack(stackName, cloudSiteId, tenantId);
+        boolean operationPerformed = false;
         if (currentStack != null) {
             logger.debug("Existing Stack found with Status: {} ", currentStack.getStackStatus());
             if (CREATE_COMPLETE.equals(currentStack.getStackStatus())) {
                 currentStack =
                         queryHeatStack(currentStack.getStackName() + "/" + currentStack.getId(), cloudSiteId, tenantId);
             }
+            operationPerformed = true;
         }
-        return new StackInfoMapper(currentStack).map();
+        StackInfo stackInfo = new StackInfoMapper(currentStack).map();
+        stackInfo.setOperationPerformed(operationPerformed);
+        return stackInfo;
     }
 
     /**
     public StackInfo deleteStack(String tenantId, String cloudOwner, String cloudSiteId, String stackName,
             boolean pollForCompletion, int timeoutMinutes) throws MsoException {
         Stack currentStack = queryHeatStack(stackName, cloudSiteId, tenantId);
+        StackInfo stackInfo = null;
         if (currentStack == null || DELETE_COMPLETE.equals(currentStack.getStackStatus())) {
-            return new StackInfo(stackName, HeatStatus.NOTFOUND);
+            stackInfo = new StackInfo(stackName, HeatStatus.NOTFOUND);
+            stackInfo.setOperationPerformed(false);
         } else {
             currentStack = deleteStack(currentStack, timeoutMinutes, cloudSiteId, tenantId);
-            StackInfo stackInfo = new StackInfoMapper(currentStack).map();
+            stackInfo = new StackInfoMapper(currentStack).map();
             stackInfo.setName(stackName);
-            return stackInfo;
+            stackInfo.setOperationPerformed(true);
         }
+        return stackInfo;
     }
 
     /**
         }
     }
 
+    public void updateResourceStatus(String requestId, String resourceStatusMessage) {
+        InfraActiveRequests request = new InfraActiveRequests();
+        request.setRequestId(requestId);
+        request.setResourceStatusMessage(resourceStatusMessage);
+        requestDBClient.patchInfraActiveRequests(request);
+    }
+
 }
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 /*
  * This Java bean class relays Heat stack status information to ActiveVOS processes.
- * 
+ *
  * This bean is returned by all Heat-specific adapter operations (create, query, delete)
  */
 
     private String canonicalName = "";
     private HeatStatus status = HeatStatus.UNKNOWN;
     private String statusMessage = "";
+    private boolean operationPerformed;
     private Map<String, Object> outputs = new HashMap<>();
     private Map<String, Object> parameters = new HashMap<>();
 
         this.parameters = parameters;
     }
 
+    public boolean isOperationPerformed() {
+        return operationPerformed;
+    }
+
+    public void setOperationPerformed(boolean operationPerformed) {
+        this.operationPerformed = operationPerformed;
+    }
+
+
+
 }
 
 
     private static final String NEUTRON_MODE = "NEUTRON";
     private static final String CLOUD_OWNER = "CloudOwner";
     private static final String LOG_DEBUG_MSG = "Got Network definition from Catalog: {}";
+    private static final String NETWORK_EXIST_STATUS_MESSAGE =
+            "The network was found to already exist, thus no new network was created in the cloud via this request";
+    private static final String NETWORK_CREATED_STATUS_MESSAGE =
+            "The new network was successfully created in the cloud";
+    private static final String NETWORK_NOT_EXIST_STATUS_MESSAGE =
+            "The network as not found, thus no network was deleted in the cloud via this request";
+    private static final String NETWORK_DELETED_STATUS_MESSAGE = "The network was successfully deleted in the cloud";
 
     private static final Logger logger = LoggerFactory.getLogger(MsoNetworkAdapterImpl.class);
 
 
             // See if the Network already exists (by name)
             NetworkInfo netInfo = null;
-            long queryNetworkStarttime = System.currentTimeMillis();
             try {
                 netInfo = neutron.queryNetwork(networkName, tenantId, cloudSiteId);
             } catch (MsoException me) {
                     logger.warn("{} {} Found Existing network, status={} for Neutron mode ",
                             MessageEnum.RA_NETWORK_ALREADY_EXIST, ErrorCode.DataError.getValue(), netInfo.getStatus());
                 }
+                heat.updateResourceStatus(msoRequest.getRequestId(), NETWORK_EXIST_STATUS_MESSAGE);
                 return;
             }
 
-            long createNetworkStarttime = System.currentTimeMillis();
             try {
                 netInfo = neutron.createNetwork(cloudSiteId, tenantId, neutronNetworkType, networkName,
                         physicalNetworkName, vlans);
                             MessageEnum.RA_NETWORK_ALREADY_EXIST, ErrorCode.DataError.getValue(), heatStack.getStatus(),
                             networkName, cloudSiteId, tenantId);
                 }
+                heat.updateResourceStatus(msoRequest.getRequestId(), NETWORK_EXIST_STATUS_MESSAGE);
                 return;
             }
 
             networkRollback.setNetworkCreated(true);
             networkRollback.setNetworkType(networkType);
 
+            try {
+                heat.updateResourceStatus(msoRequest.getRequestId(), NETWORK_CREATED_STATUS_MESSAGE);
+            } catch (Exception e) {
+                logger.warn("Exception while updating infra active request", e);
+            }
+
             logger.debug("Network {} successfully created via HEAT", networkName);
         }
 
             }
         } else {
             try {
-                heat.deleteStack(tenantId, CLOUD_OWNER, cloudSiteId, networkId, true, timeoutMinutes);
-                networkDeleted.value = true;
+                StackInfo stack = heat.deleteStack(tenantId, CLOUD_OWNER, cloudSiteId, networkId, true, timeoutMinutes);
+                networkDeleted.value = stack.isOperationPerformed();
             } catch (MsoException me) {
                 me.addContext("DeleteNetwork");
                 logger.error("{} {} Delete Network (heat): {} in {}/{} ", MessageEnum.RA_DELETE_NETWORK_EXC,
                 throw new NetworkException(me);
             }
         }
+        try {
+            heat.updateResourceStatus(msoRequest.getRequestId(),
+                    networkDeleted.value ? NETWORK_DELETED_STATUS_MESSAGE : NETWORK_NOT_EXIST_STATUS_MESSAGE);
+        } catch (Exception e) {
+            logger.warn("Exception while updating infra active request", e);
+        }
     }
 
     /**
 
     private static final String USER_ERROR = "USER ERROR";
     private static final String VERSION_MIN = "VersionMin";
     private static final String VERSION_MAX = "VersionMax";
+    private static final String VF_EXIST_STATUS_MESSAGE =
+            "The vf module was found to already exist, thus no new vf module was created in the cloud via this request";
+    private static final String VF_CREATED_STATUS_MESSAGE = "The new vf module was successfully created in the cloud";
+    private static final String VF_NOT_EXIST_STATUS_MESSAGE =
+            "The vf module was not, thus no vf module was deleted in the cloud via this request";
+    private static final String VF_DELETED_STATUS_MESSAGE = "The vf module was successfully deleted in the cloud";
 
     @Autowired
     private VFModuleCustomizationRepository vfModuleCustomRepo;
                     heatStack = msoHeatUtils.createStack(cloudSiteId, cloudOwner, tenantId, vfModuleName, null,
                             template, goldenInputs, true, heatTemplate.getTimeoutMinutes(), newEnvironmentString,
                             nestedTemplatesChecked, heatFilesObjects, backout.booleanValue(), failIfExists);
+
+                    msoHeatUtils.updateResourceStatus(msoRequest.getRequestId(),
+                            heatStack.isOperationPerformed() ? VF_EXIST_STATUS_MESSAGE : VF_CREATED_STATUS_MESSAGE);
                 } else {
                     throw new MsoHeatNotFoundException();
                 }
         }
 
         try {
-            msoHeatUtils.deleteStack(tenantId, cloudOwner, cloudSiteId, vnfName, true, timeoutMinutes);
+            StackInfo stackInfo =
+                    msoHeatUtils.deleteStack(tenantId, cloudOwner, cloudSiteId, vnfName, true, timeoutMinutes);
+            msoHeatUtils.updateResourceStatus(msoRequest.getRequestId(),
+                    stackInfo.isOperationPerformed() ? VF_DELETED_STATUS_MESSAGE : VF_NOT_EXIST_STATUS_MESSAGE);
         } catch (MsoException me) {
             me.addContext(DELETE_VNF);
             // Failed to query the Stack due to an openstack exception.
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.so.adapters.network;
 
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.patch;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static org.junit.Assert.assertEquals;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteNeutronNetwork;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteStack_200;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.util.UriComponentsBuilder;
+import com.github.tomakehurst.wiremock.WireMockServer;
 
 public class MSONetworkAdapterImplTest extends BaseRestTestUtils {
 
     @Test
     public void createNetworkByModelNameAlreadyExistNeutronMode() throws IOException {
 
+        mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
+
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
 
         mockOpenStackGetAllNeutronNetworks_200(wireMockServer, "OpenstackGetNeutronNetworks.json");
     @Test
     public void createNetworkByModelNameHeatMode() throws IOException {
 
+        mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
+
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
 
         mockOpenStackGetStack_404(wireMockServer, "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
     @Test
     public void createNetworkByModelNameAlreadyExistHeatMode() throws IOException {
 
+        mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
+
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
 
         mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
     @Test
     public void deleteNetworkHeatModeSuccess() throws IOException {
 
+        mockUpdateRequestDb(wireMockServer, "5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
+
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
 
         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
     @Test
     public void deleteNetworkNeureonMode() throws IOException {
 
+        mockUpdateRequestDb(wireMockServer, "5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
+
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
 
         mockOpenStackGetNeutronNetwork(wireMockServer, "GetNeutronNetwork.json", NETWORK_ID, HttpStatus.SC_OK);
         String input = new String(Files.readAllBytes(Paths.get(JsonInput)));
         return input;
     }
+
+    public static void mockUpdateRequestDb(WireMockServer wireMockServer, String requestId) throws IOException {
+        wireMockServer.stubFor(patch(urlPathEqualTo("/infraActiveRequests/" + requestId))
+                .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_OK)));
+    }
 }
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
+import static com.github.tomakehurst.wiremock.client.WireMock.patch;
 import static com.github.tomakehurst.wiremock.client.WireMock.post;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static org.onap.so.bpmn.mock.StubOpenStack.getBodyFromFile;
 import org.onap.so.openstack.beans.NetworkRollback;
 import org.onap.so.openstack.beans.Subnet;
 import org.springframework.beans.factory.annotation.Autowired;
+import com.github.tomakehurst.wiremock.WireMockServer;
 
 public class MsoNetworkAdapterAsyncImplTest extends BaseRestTestUtils {
     @Autowired
                 false, new ArrayList<>(), new HashMap<String, String>(), "messageId", new MsoRequest(),
                 "http://localhost:" + wireMockPort + "/notificationUrl");
     }
+
 }
 
 
 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.patch;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static org.mockito.Mockito.when;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStack;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenstackGetWithResponse;
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import org.onap.so.openstack.exceptions.MsoException;
 import org.onap.so.openstack.utils.MsoHeatUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import com.github.tomakehurst.wiremock.WireMockServer;
 import com.github.tomakehurst.wiremock.stubbing.Scenario;
 
 
     public void createVnfTest() throws Exception {
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
         mockOpenStackGetStackVfModule_200(wireMockServer);
+        mockUpdateRequestDb(wireMockServer, "12345");
 
         MsoRequest msoRequest = getMsoRequest();
 
     public void createVnfTest_NullFailIfExists() throws Exception {
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
         mockOpenStackGetStackVfModule_200(wireMockServer);
+        mockUpdateRequestDb(wireMockServer, "12345");
 
         MsoRequest msoRequest = getMsoRequest();
 
                         .inScenario("HeatStatusFailure").whenScenarioStateIs("HeatStackFailed")
                         .willSetStateTo("HeatStackSuccess"));
 
+        mockUpdateRequestDb(wireMockServer, "12345");
+
         MsoRequest msoRequest = getMsoRequest();
 
         Map<String, Object> map = new HashMap<>();
     public void createVnfTest_HeatStatusCreated() throws Exception {
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
         mockOpenStackGetStackVfModule_200(wireMockServer);
+        mockUpdateRequestDb(wireMockServer, "12345");
+
         MsoRequest msoRequest = getMsoRequest();
         Map<String, Object> map = new HashMap<>();
         map.put("key1", "value1");
         return vfModuleCustomization;
     }
 
+    public static void mockUpdateRequestDb(WireMockServer wireMockServer, String requestId) throws IOException {
+        wireMockServer.stubFor(patch(urlPathEqualTo("/infraActiveRequests/" + requestId))
+                .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_OK)));
+    }
+
 
 }
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
+import com.github.tomakehurst.wiremock.WireMockServer;
+import org.apache.http.HttpStatus;
 import org.json.JSONException;
 import org.junit.Ignore;
 import org.junit.Test;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.patch;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 import static org.junit.Assert.assertEquals;
 
         mockOpenStackGetStackVfModule_200(wireMockServer);
 
+        mockUpdateRequestDb(wireMockServer, "62265093-277d-4388-9ba6-449838ade586");
+
         headers.add("Accept", MediaType.APPLICATION_JSON);
         HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
 
 
         mockOpenStackGetStackVfModule_200(wireMockServer);
 
+        mockUpdateRequestDb(wireMockServer, "62265093-277d-4388-9ba6-449838ade586");
+
 
         headers.add("Accept", MediaType.APPLICATION_JSON);
         HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
 
         mockOpenStackDeletePublicUrlStackByNameAndID_204(wireMockServer);
 
+        mockUpdateRequestDb(wireMockServer, "62265093-277d-4388-9ba6-449838ade586");
 
         headers.add("Accept", MediaType.APPLICATION_JSON);
         HttpEntity<DeleteVfModuleRequest> entity = new HttpEntity<DeleteVfModuleRequest>(request, headers);
 
         return request;
     }
+
+    public static void mockUpdateRequestDb(WireMockServer wireMockServer, String requestId) throws IOException {
+        wireMockServer.stubFor(patch(urlPathEqualTo("/infraActiveRequests/" + requestId))
+                .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_OK)));
+    }
 }
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.so.adapters.vnf;
 
+import org.apache.http.HttpStatus;
 import org.junit.Test;
 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
 import org.onap.so.adapters.vnfrest.CreateVolumeGroupResponse;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriBuilder;
 import java.io.IOException;
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.patch;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static org.junit.Assert.assertEquals;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackWithBody_200;
     @Test
     public void testCreateVNFVolumes() throws IOException {
 
+        wireMockServer.stubFor(patch(urlPathEqualTo("/infraActiveRequests/62265093-277d-4388-9ba6-449838ade586"))
+                .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_OK)));
+
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
         mockOpenStackPostStacks_200(wireMockServer);
         mockOpenStackGetStackVfModule_200(wireMockServer);
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.so.adapters.vnf;
 
+import org.apache.http.HttpStatus;
 import org.junit.Test;
 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
 import org.onap.so.adapters.vnfrest.CreateVolumeGroupResponse;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriBuilder;
 import java.io.IOException;
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.patch;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static org.junit.Assert.assertEquals;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackWithBody_200;
         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
         mockOpenStackPostStacks_200(wireMockServer);
         mockOpenStackGetStackVfModule_200(wireMockServer);
+        wireMockServer.stubFor(patch(urlPathEqualTo("/infraActiveRequests/62265093-277d-4388-9ba6-449838ade586"))
+                .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_OK)));
+
         CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
 
         HttpEntity<CreateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
 
 tomcat:
   max-threads: 50
 mso:
+  adapters:
+    requestDb:
+      endpoint: http://localhost:${wiremock.server.port}
   audit:
     lock-time: 240000
   logPath: logs
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                 archivedInfra.setVolumeGroupName(iar.getVolumeGroupName());
                 archivedInfra.setProductFamilyName(iar.getProductFamilyName());
                 archivedInfra.setTenantName(iar.getTenantName());
+                archivedInfra.setResourceStatusMessage(iar.getResourceStatusMessage());
 
                 newArchivedReqs.add(archivedInfra);
                 oldInfraReqs.add(iar);
 
--- /dev/null
+use requestdb;
+
+ALTER TABLE infra_active_requests ADD COLUMN IF NOT EXISTS RESOURCE_STATUS_MESSAGE longtext;
+ALTER TABLE archived_infra_requests ADD COLUMN IF NOT EXISTS RESOURCE_STATUS_MESSAGE longtext;
\ No newline at end of file
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     protected String requestState;
     @JsonProperty("statusMessage")
     protected String statusMessage;
+    @JsonProperty("resourceStatusMessage")
+    protected String resourceStatusMessage;
     @JsonProperty("percentProgress")
     protected Integer percentProgress;
     @JsonProperty("timestamp")
         this.statusMessage = statusMessage;
     }
 
+    public String getResourceStatusMessage() {
+        return resourceStatusMessage;
+    }
+
+    public void setResourceStatusMessage(String resourceStatusMessage) {
+        this.resourceStatusMessage = resourceStatusMessage;
+    }
+
     public Integer getPercentProgress() {
         return percentProgress;
     }
     @Override
     public String toString() {
         return new ToStringBuilder(this).append("requestState", requestState).append("statusMessage", statusMessage)
-                .append("percentProgress", percentProgress).append("timestamp", timeStamp)
-                .append("extSystemErrorSource", extSystemErrorSource)
+                .append("resourceStatusMessage", resourceStatusMessage).append("percentProgress", percentProgress)
+                .append("timestamp", timeStamp).append("extSystemErrorSource", extSystemErrorSource)
                 .append("rollbackExtSystemErrorSource", rollbackExtSystemErrorSource).append("flowStatus", flowStatus)
                 .append("retryStatusMessage", retryStatusMessage).append("rollbackStatusMessage", rollbackStatusMessage)
                 .toString();
 
     private CamundaRequestHandler camundaRequestHandler;
 
     @GET
-    @Path("/{version:[vV][4-7]}/{requestId}")
+    @Path("/{version:[vV][4-8]}/{requestId}")
     @Operation(description = "Find Orchestrated Requests for a given requestId", responses = @ApiResponse(
             content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))))
     @Produces(MediaType.APPLICATION_JSON)
             @PathParam("version") String version, @QueryParam("includeCloudRequest") boolean includeCloudRequest,
             @QueryParam(value = "format") String format) throws ApiException {
 
-        String apiVersion = version.substring(1);
         GetOrchestrationResponse orchestrationResponse = new GetOrchestrationResponse();
 
         InfraActiveRequests infraActiveRequest = null;
             }
         }
 
-        Request request = mapInfraActiveRequestToRequest(infraActiveRequest, includeCloudRequest, format);
+        Request request = mapInfraActiveRequestToRequest(infraActiveRequest, includeCloudRequest, format, version);
 
         if (null != requestProcessingData && !requestProcessingData.isEmpty()) {
             request.setRequestProcessingData(mapRequestProcessingData(requestProcessingData));
         orchestrationResponse.setRequest(request);
 
         return builder.buildResponse(HttpStatus.SC_OK, MDC.get(ONAPLogConstants.MDCs.REQUEST_ID), orchestrationResponse,
-                apiVersion);
+                version);
     }
 
     @GET
-    @Path("/{version:[vV][4-7]}")
+    @Path("/{version:[vV][4-8]}")
     @Operation(description = "Find Orchestrated Requests for a URI Information", responses = @ApiResponse(
             content = @Content(array = @ArraySchema(schema = @Schema(implementation = Response.class)))))
     @Produces(MediaType.APPLICATION_JSON)
 
         for (InfraActiveRequests infraActive : activeRequests) {
             RequestList requestList = new RequestList();
-            Request request = mapInfraActiveRequestToRequest(infraActive, includeCloudRequest, format);
+            Request request = mapInfraActiveRequestToRequest(infraActive, includeCloudRequest, format, version);
 
             if (isRequestProcessingDataRequired(format)) {
                 List<RequestProcessingData> requestProcessingData =
     }
 
     protected Request mapInfraActiveRequestToRequest(InfraActiveRequests iar, boolean includeCloudRequest,
-            String format) throws ApiException {
+            String format, String version) throws ApiException {
         String requestBody = iar.getRequestBody();
         Request request = new Request();
 
             });
         }
 
-        mapRequestStatusAndExtSysErrSrcToRequest(iar, status, format);
+        mapRequestStatusAndExtSysErrSrcToRequest(iar, status, format, version);
 
         request.setRequestStatus(status);
         return request;
     }
 
     protected void mapRequestStatusAndExtSysErrSrcToRequest(InfraActiveRequests iar, RequestStatus status,
-            String format) {
+            String format, String version) {
         String rollbackStatusMessage = iar.getRollbackStatusMessage();
         String flowStatusMessage = iar.getFlowStatus();
         String retryStatusMessage = iar.getRetryStatusMessage();
             if (rollbackStatusMessage != null) {
                 status.setRollbackStatusMessage(rollbackStatusMessage);
             }
+            if (version.matches("v[8-9]|v[1-9][0-9]")) {
+                if (iar.getResourceStatusMessage() != null) {
+                    status.setResourceStatusMessage(iar.getResourceStatusMessage());
+                }
+            }
+
             status.setExtSystemErrorSource(iar.getExtSystemErrorSource());
             status.setRollbackExtSystemErrorSource(iar.getRollbackExtSystemErrorSource());
         } else {
                     statusMessages = "ROLLBACK STATUS: " + rollbackStatusMessage;
                 }
             }
+            if (iar.getResourceStatusMessage() != null) {
+                if (statusMessages != null) {
+                    statusMessages = statusMessages + " " + "RESOURCE STATUS: " + iar.getResourceStatusMessage();
+                } else {
+                    statusMessages = "RESOURCE STATUS: " + iar.getResourceStatusMessage();
+                }
+            }
         }
 
         if (statusMessages != null) {
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
 import static org.mockito.Mockito.doReturn;
 import javax.ws.rs.core.Response;
 import org.apache.commons.lang.StringUtils;
         iar.setFlowStatus(FLOW_STATUS);
         iar.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
         iar.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
+        iar.setResourceStatusMessage("The vf module already exist");
     }
 
     @Test
         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
         RequestStatus requestStatus = new RequestStatus();
         requestStatus.setRequestState(iar.getRequestStatus());
-        requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
-                FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
+        requestStatus.setStatusMessage(
+                String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
+                        FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
+                        "The vf module already exist"));
 
         Request expected = new Request();
         expected.setRequestId(REQUEST_ID);
         iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
 
         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.DETAIL.toString());
+                OrchestrationRequestFormat.DETAIL.toString(), "v7");
         assertThat(result, sameBeanAs(expected));
     }
 
         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
         RequestStatus requestStatus = new RequestStatus();
         requestStatus.setRequestState(iar.getRequestStatus());
-        requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
-                FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
+        requestStatus.setStatusMessage(
+                String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
+                        FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
+                        "The vf module already exist"));
+
         Request expected = new Request();
         expected.setRequestId(REQUEST_ID);
         expected.setInstanceReferences(instanceReferences);
         expected.setRequestScope(SERVICE);
 
         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.DETAIL.toString());
+                OrchestrationRequestFormat.DETAIL.toString(), "v7");
         assertThat(result, sameBeanAs(expected));
     }
 
         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
         RequestStatus requestStatus = new RequestStatus();
         requestStatus.setRequestState(iar.getRequestStatus());
-        requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
-                FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
+        requestStatus.setStatusMessage(
+                String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
+                        FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
+                        "The vf module already exist"));
 
         Request expected = new Request();
         expected.setRequestId(REQUEST_ID);
         includeCloudRequest = false;
 
         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.DETAIL.toString());
+                OrchestrationRequestFormat.DETAIL.toString(), "v7");
         assertThat(actual, sameBeanAs(expected));
     }
 
         includeCloudRequest = false;
 
         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.STATUSDETAIL.toString());
+                OrchestrationRequestFormat.STATUSDETAIL.toString(), "v7");
+        assertThat(actual, sameBeanAs(expected));
+    }
+
+    @Test
+    public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailV8Test() throws ApiException {
+        doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
+        InstanceReferences instanceReferences = new InstanceReferences();
+        instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
+        RequestStatus requestStatus = new RequestStatus();
+        requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
+        requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
+        requestStatus.setRequestState(iar.getRequestStatus());
+        requestStatus.setFlowStatus(FLOW_STATUS);
+        requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
+        requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
+        requestStatus.setResourceStatusMessage("The vf module already exist");
+
+        Request expected = new Request();
+        expected.setRequestId(REQUEST_ID);
+        expected.setInstanceReferences(instanceReferences);
+        expected.setRequestStatus(requestStatus);
+        expected.setRequestScope(SERVICE);
+
+        includeCloudRequest = false;
+
+        Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
+                OrchestrationRequestFormat.STATUSDETAIL.toString(), "v8");
         assertThat(actual, sameBeanAs(expected));
     }
 
         RequestStatus requestStatus = new RequestStatus();
         requestStatus.setRequestState(iar.getRequestStatus());
         requestStatus.setStatusMessage(
-                "FLOW STATUS: FlowStatus RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage");
+                "FLOW STATUS: FlowStatus RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage RESOURCE STATUS: The vf module already exist");
 
         Request expected = new Request();
         expected.setRequestId(REQUEST_ID);
         includeCloudRequest = false;
 
         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.SIMPLENOTASKINFO.toString());
+                OrchestrationRequestFormat.SIMPLENOTASKINFO.toString(), "v7");
         assertThat(expected, sameBeanAs(actual));
     }
 
         RequestStatus requestStatus = new RequestStatus();
         requestStatus.setRequestState(iar.getRequestStatus());
         requestStatus.setStatusMessage(
-                "FLOW STATUS: FlowStatus TASK INFORMATION: TaskName RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage");
+                "FLOW STATUS: FlowStatus TASK INFORMATION: TaskName RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage RESOURCE STATUS: The vf module already exist");
 
         Request expected = new Request();
         expected.setRequestId(REQUEST_ID);
 
         includeCloudRequest = false;
 
-        Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest, null);
+        Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest, null, "v7");
         assertThat(expected, sameBeanAs(actual));
     }
 
         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
         RequestStatus requestStatus = new RequestStatus();
         requestStatus.setRequestState(iar.getRequestStatus());
-        requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
-                FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
+        requestStatus.setStatusMessage(
+                String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
+                        FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
+                        "The vf module already exist"));
 
         Request expected = new Request();
         expected.setRequestId(REQUEST_ID);
         includeCloudRequest = false;
 
         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.DETAIL.toString());
+                OrchestrationRequestFormat.DETAIL.toString(), "v7");
 
         assertThat(actual, sameBeanAs(expected));
     }
 
         includeCloudRequest = false;
         iar.setFlowStatus(null);
+        iar.setResourceStatusMessage(null);
 
         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.DETAIL.toString());
+                OrchestrationRequestFormat.DETAIL.toString(), "v7");
 
         assertThat(actual, sameBeanAs(expected));
     }
         iar.setStatusMessage("Error retrieving cloud region from AAI");
 
         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.DETAIL.toString());
+                OrchestrationRequestFormat.DETAIL.toString(), "v7");
 
         assertTrue(actual.getRequestStatus().getStatusMessage()
                 .contains("Error Source: " + ROLLBACK_EXT_SYSTEM_ERROR_SOURCE));
         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
         RequestStatus requestStatus = new RequestStatus();
         requestStatus.setRequestState(iar.getRequestStatus());
-        requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
-                "Successfully completed all Building Blocks", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
+        requestStatus.setStatusMessage(
+                String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
+                        "Successfully completed all Building Blocks", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
+                        "The vf module already exist"));
 
         Request expected = new Request();
         expected.setRequestId(REQUEST_ID);
         iar.setFlowStatus("Successfully completed all Building Blocks");
 
         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.DETAIL.toString());
+                OrchestrationRequestFormat.DETAIL.toString(), "v7");
 
         assertThat(actual, sameBeanAs(expected));
     }
         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
         RequestStatus requestStatus = new RequestStatus();
         requestStatus.setRequestState(iar.getRequestStatus());
-        requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
-                "All Rollback flows have completed successfully", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
+        requestStatus.setStatusMessage(
+                String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
+                        "All Rollback flows have completed successfully", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
+                        "The vf module already exist"));
 
         Request expected = new Request();
         expected.setRequestId(REQUEST_ID);
         iar.setFlowStatus("All Rollback flows have completed successfully");
 
         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
-                OrchestrationRequestFormat.DETAIL.toString());
+                OrchestrationRequestFormat.DETAIL.toString(), "v7");
 
         assertThat(actual, sameBeanAs(expected));
     }
 
   `ROLLBACK_EXT_SYSTEM_ERROR_SOURCE` varchar(80) DEFAULT NULL,
   `TENANT_NAME` varchar(200) DEFAULT NULL,
   `PRODUCT_FAMILY_NAME` varchar(200) DEFAULT NULL,
+  `RESOURCE_STATUS_MESSAGE` longtext,
   PRIMARY KEY (`REQUEST_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
   `OPERATIONAL_ENV_ID` varchar(45) DEFAULT NULL,
   `OPERATIONAL_ENV_NAME` varchar(200) DEFAULT NULL,
   `REQUEST_URL` varchar(500) DEFAULT NULL,  
+  `RESOURCE_STATUS_MESSAGE` longtext,
   PRIMARY KEY (`REQUEST_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
 
     EXT_SYSTEM_ERROR_SOURCE VARCHAR SELECTIVITY 1,
     ROLLBACK_EXT_SYSTEM_ERROR_SOURCE VARCHAR SELECTIVITY 1,
     TENANT_NAME VARCHAR SELECTIVITY 1,
-    PRODUCT_FAMILY_NAME VARCHAR SELECTIVITY 1
+    PRODUCT_FAMILY_NAME VARCHAR SELECTIVITY 1,
+    RESOURCE_STATUS_MESSAGE VARCHAR SELECTIVITY 36
     
 );          
 
     INSTANCE_GROUP_NAME VARCHAR SELECTIVITY 1,
     REQUEST_URL VARCHAR SELECTIVITY 1,
     TENANT_NAME VARCHAR SELECTIVITY 1,
-    PRODUCT_FAMILY_NAME VARCHAR SELECTIVITY 1
+    PRODUCT_FAMILY_NAME VARCHAR SELECTIVITY 1,
+    RESOURCE_STATUS_MESSAGE VARCHAR SELECTIVITY 36
 );
 
 CREATE TABLE IF NOT EXISTS cloud_api_requests(
 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     private String requestId;
     @Column(name = "REQUEST_STATUS", length = 20)
     private String requestStatus;
+    @Column(name = "RESOURCE_STATUS_MESSAGE", length = 2000)
+    private String resourceStatusMessage;
     @Column(name = "STATUS_MESSAGE", length = 2000)
     private String statusMessage;
     @Column(name = "ROLLBACK_STATUS_MESSAGE", length = 2000)
         this.requestStatus = requestStatus;
     }
 
+    public String getResourceStatusMessage() {
+        return resourceStatusMessage;
+    }
+
+    public void setResourceStatusMessage(String resourceStatusMessage) {
+        this.resourceStatusMessage = resourceStatusMessage;
+    }
+
     public String getStatusMessage() {
         return this.statusMessage;
     }
     @Override
     public String toString() {
         return new ToStringBuilder(this).append("requestId", getRequestId()).append("requestStatus", getRequestStatus())
-                .append("statusMessage", getStatusMessage()).append("rollbackStatusMessage", getRollbackStatusMessage())
-                .append("flowStatus", getFlowStatus()).append("retryStatusMessage", getRetryStatusMessage())
-                .append("progress", getProgress()).append("startTime", getStartTime()).append("endTime", getEndTime())
-                .append("source", getSource()).append("vnfId", getVnfId()).append("vnfName", getVnfName())
-                .append("pnfName", getPnfName()).append("vnfType", getVnfType()).append("serviceType", getServiceType())
+                .append("resourceStatusMessage", getResourceStatusMessage()).append("statusMessage", getStatusMessage())
+                .append("rollbackStatusMessage", getRollbackStatusMessage()).append("flowStatus", getFlowStatus())
+                .append("retryStatusMessage", getRetryStatusMessage()).append("progress", getProgress())
+                .append("startTime", getStartTime()).append("endTime", getEndTime()).append("source", getSource())
+                .append("vnfId", getVnfId()).append("vnfName", getVnfName()).append("pnfName", getPnfName())
+                .append("vnfType", getVnfType()).append("serviceType", getServiceType())
                 .append("tenantId", getTenantId()).append("vnfParams", getVnfParams())
                 .append("vnfOutputs", getVnfOutputs()).append("requestBody", getRequestBody())
                 .append("responseBody", getResponseBody()).append("lastModifiedBy", getLastModifiedBy())
 
         restTemplate.postForLocation(uri, entity);
     }
 
+    // TODO really this should be called save as its doing a put
     public void updateInfraActiveRequests(InfraActiveRequests request) {
         HttpHeaders headers = getHttpHeaders();
         URI uri = getUri(infraActiveRequestURI + request.getRequestId());
         HttpHeaders headers = getHttpHeaders();
         URI uri = getUri(infraActiveRequestURI + request.getRequestId());
         HttpEntity<InfraActiveRequests> entity = new HttpEntity<>(request, headers);
-        restTemplate.exchange(uri, HttpMethod.PATCH, new HttpEntity<InfraActiveRequests>(request, headers),
-                String.class);
+        restTemplate.exchange(uri, HttpMethod.PATCH, entity, String.class);
     }
 
     public InfraActiveRequests getInfraActiveRequests(String requestId, String basicAuth, String host) {