diff --git a/adapters/mso-requests-db-adapter/src/main/resources/db/migration/V4.14__Add_Flow_Status_To_Infra_Active_Requests.sql b/adapters/mso-requests-db-adapter/src/main/resources/db/migration/V4.14__Add_Flow_Status_To_Infra_Active_Requests.sql
new file mode 100644
index 0000000..db34ab9
--- /dev/null
+++ b/adapters/mso-requests-db-adapter/src/main/resources/db/migration/V4.14__Add_Flow_Status_To_Infra_Active_Requests.sql
@@ -0,0 +1,7 @@
+use requestdb;
+
+ALTER TABLE infra_active_requests ADD FLOW_STATUS LONGTEXT; 
+ALTER TABLE archived_infra_requests ADD FLOW_STATUS LONGTEXT; 
+
+ALTER TABLE infra_active_requests ADD RETRY_STATUS_MESSAGE LONGTEXT; 
+ALTER TABLE archived_infra_requests ADD RETRY_STATUS_MESSAGE LONGTEXT; 
\ No newline at end of file
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java
index 32540eb..ba9426d 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java
@@ -31,6 +31,8 @@
 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
 import org.onap.so.db.catalog.beans.macro.RainyDayHandlerStatus;
 import org.onap.so.db.catalog.client.CatalogDbClient;
+import org.onap.so.db.request.beans.InfraActiveRequests;
+import org.onap.so.db.request.client.RequestsDbClient;
 import org.onap.so.logger.MsoLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
@@ -44,6 +46,8 @@
 	
 	@Autowired
 	private CatalogDbClient catalogDbClient;
+	@Autowired
+	private RequestsDbClient requestDbclient;
 	private static final String ASTERISK = "*";
 	
 	@Autowired
@@ -68,6 +72,7 @@
 			ExecuteBuildingBlock ebb = (ExecuteBuildingBlock) execution.getVariable("buildingBlock");
 			String bbName = ebb.getBuildingBlock().getBpmnFlowName();
 			GeneralBuildingBlock gBBInput = (GeneralBuildingBlock) execution.getVariable("gBBInput");
+			String requestId = (String) execution.getVariable("mso-request-id");
 			Map<ResourceKey, String> lookupKeyMap = (Map<ResourceKey, String>) execution.getVariable("lookupKeyMap");
 			String serviceType = ASTERISK;
 			boolean aLaCarte = (boolean) execution.getVariable("aLaCarte");
@@ -122,6 +127,16 @@
 					handlingCode = rainyDayHandlerStatus.getSecondaryPolicy();
 				}
 			}
+			if(!primaryPolicy){
+				try{
+					InfraActiveRequests request = requestDbclient.getInfraActiveRequestbyRequestId(requestId);
+					request.setRetryStatusMessage("Retries have been exhausted.");
+					requestDbclient.updateInfraActiveRequests(request);
+				} catch(Exception ex){
+					msoLogger.debug(ex.toString());
+					msoLogger.error("Failed to update Request Db Infra Active Requests with Retry Status");
+				}
+			}
 			if(handlingCode.equals("RollbackToAssigned")&&!aLaCarte){
 				handlingCode = "Rollback";
 			}
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/WorkflowActionBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/WorkflowActionBB.bpmn
index 2c134a9..07460a4 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/WorkflowActionBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/WorkflowActionBB.bpmn
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
   <bpmn:process id="WorkflowActionBB" name="WorkflowActionBB" isExecutable="true">
     <bpmn:startEvent id="Start_WorkflowActionBB" name="start">
       <bpmn:outgoing>SequenceFlow_15s0okp</bpmn:outgoing>
@@ -20,6 +20,7 @@
         <camunda:in source="aLaCarte" target="aLaCarte" />
         <camunda:in source="orchestrationStatusValidationResult" target="orchestrationStatusValidationResult" />
         <camunda:out source="orchestrationStatusValidationResult" target="orchestrationStatusValidationResult" />
+        <camunda:out source="RetryDuration" target="RetryDuration" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_0mew9im</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_07h9d4y</bpmn:outgoing>
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/HomingV2.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/HomingV2.java
index 612051f..55f8987 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/HomingV2.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/HomingV2.java
@@ -1,18 +1,23 @@
-/*
- * Copyright (C) 2018 Bell Canada.
- *
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) Copyright (C) 2018 Bell Canada.
+ * ================================================================================
  * 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.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ * ============LICENSE_END=========================================================
  */
+
 package org.onap.so.bpmn.buildingblock;
 
 import java.util.Map;
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
index 505c61d..66e2694 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
@@ -109,7 +109,7 @@
 		String statusMessage = this.getStatusMessage(completedBB.getBuildingBlock().getBpmnFlowName(), 
 				nextBB.getBuildingBlock().getBpmnFlowName(), completedBBs, remainingBBs);
 		Long percentProgress = this.getPercentProgress(completedBBs, totalBBs);
-		request.setStatusMessage(statusMessage);
+		request.setFlowStatus(statusMessage);
 		request.setProgress(percentProgress);
 		request.setLastModifiedBy("CamundaBPMN");
 		return request;
@@ -203,9 +203,18 @@
 
 	public void checkRetryStatus(DelegateExecution execution) {
 		String handlingCode = (String) execution.getVariable("handlingCode");
+		String requestId = (String) execution.getVariable(G_REQUEST_ID);
+		String retryDuration = (String) execution.getVariable("RetryDuration");
 		int retryCount = (int) execution.getVariable(RETRY_COUNT);
 		if (handlingCode.equals("Retry")){
 			updateRequestErrorStatusMessage(execution);
+			try{
+				InfraActiveRequests request = requestDbclient.getInfraActiveRequestbyRequestId(requestId);
+				request.setRetryStatusMessage("Retry " + retryCount+1 + "/5 will be started in " + retryDuration);
+				requestDbclient.updateInfraActiveRequests(request); 
+			} catch(Exception ex){
+				logger.warn("Failed to update Request Db Infra Active Requests with Retry Status",ex);
+			}
 			if(retryCount<5){
 				int currSequence = (int) execution.getVariable("gCurrentSequence");
 				execution.setVariable("gCurrentSequence", currSequence-1);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/AllIntegrationTestSuites.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/AllIntegrationTestSuites.java
index 8a57d5d..23fcddf 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/AllIntegrationTestSuites.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/AllIntegrationTestSuites.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.so;
 
 import org.junit.runner.RunWith;
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/IntegrationTestSuite.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/IntegrationTestSuite.java
index ab999a9..0eddeb1 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/IntegrationTestSuite.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/IntegrationTestSuite.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.so;
 
 import org.junit.runner.RunWith;
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/UnitTestSuite.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/UnitTestSuite.java
index 5ac9f22..82ad658 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/UnitTestSuite.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/UnitTestSuite.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.so;
 
 
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java
index b0a80eb..fc269cd 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java
@@ -25,6 +25,7 @@
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.isA;
 import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
@@ -42,6 +43,7 @@
 import org.onap.so.bpmn.BaseTaskTest;
 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
+import org.onap.so.db.request.beans.InfraActiveRequests;
 
 public class WorkflowActionBBTasksTest extends BaseTaskTest {
 
@@ -258,19 +260,27 @@
 	
 	@Test
 	public void checkRetryStatusTest(){
+		String reqId = "reqId123";
+		execution.setVariable("mso-request-id", reqId);
 		doNothing().when(workflowActionBBTasks).updateRequestErrorStatusMessage(isA(DelegateExecution.class));
 		execution.setVariable("handlingCode","Retry");
 		execution.setVariable("retryCount", 1);
 		execution.setVariable("gCurrentSequence",1);
+		InfraActiveRequests req = new InfraActiveRequests();
+		doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
 		workflowActionBBTasks.checkRetryStatus(execution);
 		assertEquals(0,execution.getVariable("gCurrentSequence"));
 	}
 	
 	@Test
 	public void checkRetryStatusNoRetryTest(){
+		String reqId = "reqId123";
+		execution.setVariable("mso-request-id", reqId);
 		execution.setVariable("retryCount", 3);
 		execution.setVariable("handlingCode","Success");
 		execution.setVariable("gCurrentSequence",1);
+		InfraActiveRequests req = new InfraActiveRequests();
+		doReturn(req).when(requestsDbClient).getInfraActiveRequestbyRequestId(reqId);
 		workflowActionBBTasks.checkRetryStatus(execution);
 		assertEquals(0,execution.getVariable("retryCount"));
 	}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksUpdateReqDbTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksUpdateReqDbTest.java
index 1e2558b..0f106ad 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksUpdateReqDbTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksUpdateReqDbTest.java
@@ -1,3 +1,23 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.so.bpmn.infrastructure.workflow.tasks;
 
 import static org.junit.Assert.assertEquals;
@@ -68,7 +88,7 @@
 		InfraActiveRequests mockedRequest = new InfraActiveRequests();
 		doReturn(mockedRequest).when(requestsDbClient).getInfraActiveRequestbyRequestId(isA(String.class));
 		InfraActiveRequests actual = workflowActionBBTasks.getUpdatedRequest(execution, currentSequence);
-		assertEquals(expectedStatusMessage, actual.getStatusMessage());
+		assertEquals(expectedStatusMessage, actual.getFlowStatus());
 		assertEquals(expectedLong, actual.getProgress());
 	}
 }
diff --git a/common/src/main/java/org/onap/so/serviceinstancebeans/RequestStatus.java b/common/src/main/java/org/onap/so/serviceinstancebeans/RequestStatus.java
index 9619a94..527aa03 100644
--- a/common/src/main/java/org/onap/so/serviceinstancebeans/RequestStatus.java
+++ b/common/src/main/java/org/onap/so/serviceinstancebeans/RequestStatus.java
@@ -29,7 +29,6 @@
 
     protected String requestState;
     protected String statusMessage;
-    protected String rollbackStatusMessage;
     protected Integer percentProgress;
     protected String finishTime;
 
@@ -46,12 +45,6 @@
 	public void setStatusMessage(String statusMessage) {
 		this.statusMessage = statusMessage;
 	}
-	public String getRollbackStatusMessage() {
-		return rollbackStatusMessage;
-	}
-	public void setRollbackStatusMessage(String rollbackStatusMessage) {
-		this.rollbackStatusMessage = rollbackStatusMessage;
-	}
 	public Integer getPercentProgress() {
 		return percentProgress;
 	}
@@ -67,7 +60,6 @@
 	@Override
 	public String toString() {
 		return new ToStringBuilder(this).append("requestState", requestState).append("statusMessage", statusMessage)
-				.append("rollbackStatusMessage", rollbackStatusMessage).append("percentProgress", percentProgress)
-				.append("finishTime", finishTime).toString();
+				.append("percentProgress", percentProgress).append("finishTime", finishTime).toString();
 	}
 }
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/OrchestrationRequests.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/OrchestrationRequests.java
index 0c0b70b..9c280cb 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/OrchestrationRequests.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/OrchestrationRequests.java
@@ -271,6 +271,9 @@
        request.setRequestScope(iar.getRequestScope());
        request.setRequestType(iar.getRequestAction());
        String rollbackStatusMessage = iar.getRollbackStatusMessage();
+       String flowStatusMessage = iar.getFlowStatus();
+       String retryStatusMessage = iar.getRetryStatusMessage();
+       
 
        InstanceReferences ir = new InstanceReferences();
        if(iar.getNetworkId() != null)
@@ -324,12 +327,32 @@
 	       String startTimeStamp = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(iar.getStartTime()) + " GMT";
 	       request.setStartTime(startTimeStamp);
        }
-
+       String statusMessages = null;
        RequestStatus status = new RequestStatus();
        if(iar.getStatusMessage() != null){
-    	   status.setStatusMessage(iar.getStatusMessage());
+    	  statusMessages = "STATUS: " + iar.getStatusMessage();
        }
-
+       if(flowStatusMessage != null){
+    	   if(statusMessages != null){
+    		   statusMessages = statusMessages + "/";
+    	   }
+    	   statusMessages = statusMessages + "FLOW STATUS: " + flowStatusMessage;
+       }
+       if(retryStatusMessage != null){
+    	   if(statusMessages != null){
+    		   statusMessages = statusMessages + "/";
+    	   }
+    	   statusMessages = statusMessages + "RETRY STATUS: " + retryStatusMessage;
+       }
+       if(rollbackStatusMessage != null){
+    	   if(statusMessages != null){
+    		   statusMessages = statusMessages + "/";
+    	   }
+    	   statusMessages = statusMessages + "ROLLBACK STATUS: " + rollbackStatusMessage;
+       }
+       if(statusMessages != null){
+    	   status.setStatusMessage(statusMessages);
+       }
        if(iar.getEndTime() != null){
     	   String endTimeStamp = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(iar.getEndTime()) + " GMT";
     	   status.setFinishTime(endTimeStamp);
@@ -343,10 +366,6 @@
        if(iar.getProgress() != null){
     	   status.setPercentProgress(iar.getProgress().intValue());
        }
-       
-       if(rollbackStatusMessage != null){
-    	   status.setRollbackStatusMessage(rollbackStatusMessage);
-       }
 
        request.setRequestStatus(status);
 
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateEcompOperationalEnvironmentTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateEcompOperationalEnvironmentTest.java
index 3a6839c..ce1dde8 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateEcompOperationalEnvironmentTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/process/CreateEcompOperationalEnvironmentTest.java
@@ -89,7 +89,7 @@
 						.withBody(mapper.writeValueAsString(iar))
 						.withStatus(HttpStatus.SC_OK)));
 		stubFor(post(urlPathEqualTo("/infraActiveRequests/"))
-				.withRequestBody(containing("{\"requestId\":\"123\",\"clientRequestId\":null,\"action\":null,\"requestStatus\":\"COMPLETE\",\"statusMessage\":\"SUCCESSFUL, operationalEnvironmentId - operationalEnvId; Success Message: SUCCESSFULLY Created ECOMP OperationalEnvironment.\",\"rollbackStatusMessage\":null,\"progress\":100"))
+				.withRequestBody(containing("{\"requestId\":\"123\",\"clientRequestId\":null,\"action\":null,\"requestStatus\":\"COMPLETE\",\"statusMessage\":\"SUCCESSFUL, operationalEnvironmentId - operationalEnvId; Success Message: SUCCESSFULLY Created ECOMP OperationalEnvironment.\",\"rollbackStatusMessage\":null,\"flowStatus\":null,\"retryStatusMessage\":null,\"progress\":100"))
 				.willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 						.withStatus(HttpStatus.SC_OK)));
 		
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/OrchestrationFilterResponse.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/OrchestrationFilterResponse.json
index 2f824d0..051ac16 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/OrchestrationFilterResponse.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/OrchestrationFilterResponse.json
@@ -27,7 +27,7 @@
         },
         "requestStatus": {
           "requestState": "COMPLETE",
-          "statusMessage": "COMPLETED",
+          "statusMessage": "STATUS: COMPLETED",
           "percentProgress": 100,
           "finishTime": "Tue, 02 May 2017 06:33:34 GMT"
         }
@@ -61,8 +61,7 @@
         },
         "requestStatus": {
           "requestState": "COMPLETE",
-          "statusMessage": "Vf Module has been deleted successfully.",
-          "rollbackStatusMessage": "Rollback has been completed successfully.",
+          "statusMessage": "STATUS: Vf Module has been deleted successfully./FLOW STATUS: Building blocks 1 of 3 completed./ROLLBACK STATUS: Rollback has been completed successfully.",
           "percentProgress": 100,
           "finishTime": "Thu, 22 Dec 2016 08:30:28 GMT"
         }
@@ -96,7 +95,7 @@
         },
         "requestStatus": {
           "requestState": "PENDING",
-          "statusMessage": "Vf Module deletion pending.",
+          "statusMessage": "STATUS: Vf Module deletion pending.",
           "percentProgress": 0,
           "finishTime": "Thu, 22 Dec 2016 08:30:28 GMT"
         }
@@ -180,7 +179,7 @@
         },
         "requestStatus": {
           "requestState": "UNLOCKED",
-          "statusMessage": "Vf Module deletion pending.",
+          "statusMessage": "STATUS: Vf Module deletion pending.",
           "percentProgress": 0,
           "finishTime": "Thu, 22 Dec 2016 08:30:28 GMT"
         }
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/OrchestrationList.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/OrchestrationList.json
index 6f928e4..d24b48b 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/OrchestrationList.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/OrchestrationList.json
@@ -26,7 +26,7 @@
             },
             "requestStatus":{
                "requestState":"COMPLETE",
-               "statusMessage":"Vf Module has been deleted successfully.",
+               "statusMessage":"STATUS: Vf Module has been deleted successfully.",
                "percentProgress":100
             }
          }
@@ -57,8 +57,7 @@
             },
             "requestStatus":{
                "requestState":"PENDING",
-               "statusMessage":"Vf Module deletion pending.",
-               "rollbackStatusMessage": "Rollback has been completed successfully.",
+               "statusMessage":"STATUS: Vf Module deletion pending./FLOW STATUS: Building blocks 1 of 3 completed./RETRY STATUS: Retry 2/5 will be started in 8 min./ROLLBACK STATUS: Rollback has been completed successfully.",
                "percentProgress":0
             }
          }
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/getOrchestrationRequest.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/getOrchestrationRequest.json
index 231b929..97132fa 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/getOrchestrationRequest.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/getOrchestrationRequest.json
@@ -43,6 +43,8 @@
   "operationalEnvId": null,
   "operationalEnvName": null,
   "rollbackStatusMessage": "Rollback has been completed successfully.",
+  "flowStatus": "Building blocks 1 of 3 completed.",
+  "retryStatusMessage": "Retry 2/5 will be started in 8 min.",
   "requestURI": "00032ab7-na18-42e5-965d-8ea592502018",
   "_links": {
     "self": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/getRequestDetailsFilter.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/getRequestDetailsFilter.json
index a335930..0f71dd4 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/getRequestDetailsFilter.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/OrchestrationRequest/getRequestDetailsFilter.json
@@ -92,7 +92,8 @@
     "operationalEnvId": null,
     "operationalEnvName": null,
     "requestURI": "00032ab7-3fb3-42e5-965d-8ea592502017",
-    "rollbackStatusMessage": "Rollback has been completed successfully."
+    "rollbackStatusMessage": "Rollback has been completed successfully.",
+    "flowStatus":"Building blocks 1 of 3 completed."
   },
   {
     "requestId": "00032ab7-na18-42e5-965d-8ea592502018",
diff --git a/mso-api-handlers/mso-requests-db-repositories/src/test/resources/schema.sql b/mso-api-handlers/mso-requests-db-repositories/src/test/resources/schema.sql
index 8cd8e39..57d765f 100644
--- a/mso-api-handlers/mso-requests-db-repositories/src/test/resources/schema.sql
+++ b/mso-api-handlers/mso-requests-db-repositories/src/test/resources/schema.sql
@@ -52,6 +52,8 @@
     REQUEST_STATUS VARCHAR SELECTIVITY 1,
     STATUS_MESSAGE longtext SELECTIVITY 36,
     ROLLBACK_STATUS_MESSAGE longtext SELECTIVITY 36,
+    FLOW_STATUS longtext SELECTIVITY 36,
+    RETRY_STATUS_MESSAGE longtext SELECTIVITY 36,
     PROGRESS VARCHAR SELECTIVITY 1,
     START_TIME VARCHAR,
     END_TIME VARCHAR,
@@ -110,6 +112,8 @@
     REQUEST_STATUS VARCHAR SELECTIVITY 1,
     STATUS_MESSAGE longtext SELECTIVITY 36,
     ROLLBACK_STATUS_MESSAGE longtext SELECTIVITY 36,
+    FLOW_STATUS longtext SELECTIVITY 36,
+    RETRY_STATUS_MESSAGE longtext SELECTIVITY 36,
     PROGRESS VARCHAR SELECTIVITY 1,
     START_TIME VARCHAR,
     END_TIME VARCHAR,
diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InfraRequests.java b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InfraRequests.java
index 0f41d4f..a3743cc 100644
--- a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InfraRequests.java
+++ b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InfraRequests.java
@@ -59,6 +59,10 @@
     private String statusMessage;
     @Column(name = "ROLLBACK_STATUS_MESSAGE", length = 2000)
     private String rollbackStatusMessage;
+    @Column(name = "FLOW_STATUS", length = 2000)
+    private String flowStatus;
+    @Column(name = "RETRY_STATUS_MESSAGE", length = 2000)
+    private String retryStatusMessage;
     @Column(name = "PROGRESS", precision = 11)
     private Long progress;
 
@@ -194,6 +198,22 @@
     public void setRollbackStatusMessage(String rollbackStatusMessage) {
         this.rollbackStatusMessage = rollbackStatusMessage;
     }
+    
+    public String getFlowStatus() {
+        return this.flowStatus;
+    }
+
+    public void setFlowStatus(String flowStatus) {
+        this.flowStatus = flowStatus;
+    }
+    
+    public String getRetryStatusMessage() {
+        return this.retryStatusMessage;
+    }
+
+    public void setRetryStatusMessage(String retryStatusMessage) {
+        this.retryStatusMessage = retryStatusMessage;
+    }
 
     public Long getProgress() {
         return this.progress;
@@ -553,6 +573,7 @@
         return new ToStringBuilder(this).append("requestId", getRequestId())
                 .append("clientRequestId", getClientRequestId()).append("action", getAction())
                 .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("vnfType", getVnfType()).append("serviceType", getServiceType())
