import org.onap.vid.model.NameCounter;
 import org.onap.vid.model.ResourceInfo;
 import org.onap.vid.model.ServiceInfo;
+import org.onap.vid.model.ServiceInfo.ServiceAction;
 import org.onap.vid.model.serviceInstantiation.BaseResource;
 import org.onap.vid.model.serviceInstantiation.ServiceInstantiation;
 import org.onap.vid.model.serviceInstantiation.VfModule;
             Job job = jobAdapter.createServiceInstantiationJob(jobType, requestPerJob, templateId, userId, request.getTestApi(), optimisticUniqueServiceInstanceName, i);
             UUID jobId = job.getUuid();
 
-            asyncInstantiationRepository.saveServiceInfo(createServiceInfo(userId, requestPerJob, jobId, templateId, createdBulkDate, optimisticUniqueServiceInstanceName, serviceAction));
+            asyncInstantiationRepository.saveServiceInfo(createServiceInfo(
+                userId, requestPerJob, jobId, templateId, createdBulkDate,
+                optimisticUniqueServiceInstanceName, serviceAction,
+                requestSummaryOrNull(requestPerJob)));
             asyncInstantiationRepository.addJobRequest(jobId, requestPerJob);
             auditService.auditVidStatus(jobId, job.getStatus());
             uuids.add(jobId);
         return uuids;
     }
 
-    public Map<String, Long> getSummarizedChildrenMap(ServiceInstantiation serviceInstantiation){
+    Map<String, Long> requestSummaryOrNull(ServiceInstantiation request) {
+        if (!featureManager.isActive(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE)) {
+            return null;
+        }
+
+        if (getAction(request) != ServiceAction.INSTANTIATE) {
+            return null;
+        }
+
+        return summarizedChildrenMap(request);
+    }
+
+    public Map<String, Long> summarizedChildrenMap(ServiceInstantiation serviceInstantiation){
         Stream<String> existingTypesStream =
             allDeepChildResources(serviceInstantiation)
                 .map(this::getModelTypes)
         return isNotEmpty(instanceName) ? getUniqueNameFromDbOnly(instanceName) : instanceName;
     }
 
-    protected ServiceInfo createServiceInfo(String userId, ServiceInstantiation serviceInstantiation, UUID jobId, UUID templateId, Date createdBulkDate, String optimisticUniqueServiceInstanceName, ServiceInfo.ServiceAction serviceAction) {
+    protected ServiceInfo createServiceInfo(String userId, ServiceInstantiation serviceInstantiation, UUID jobId,
+        UUID templateId, Date createdBulkDate, String optimisticUniqueServiceInstanceName,
+        ServiceInfo.ServiceAction serviceAction, Map<String, Long> requestSummary) {
         return new ServiceInfo(
                 userId,
                 serviceInstantiation.isALaCarte(),
                 createdBulkDate,
                 serviceAction,
                 false,
-                null);
+                requestSummary);
     }
 
     @Override
 
     }
 
     @Test(dataProvider = "dataProviderSummarizedMap")
-    public void getSummarizedMap(String pathInResource, Map<String, Long> expectedMap){
+    public void summarizedChildrenMap_givenServiceInstantiation_yieldCorrectMap(String pathInResource, Map<String, Long> expectedMap){
         ServiceInstantiation serviceInstantiation = TestUtils.readJsonResourceFileAsObject(
             pathInResource, ServiceInstantiation.class);
-        Map<String, Long> childrenMap =  asyncInstantiationBL.getSummarizedChildrenMap(serviceInstantiation);
+        Map<String, Long> childrenMap =  asyncInstantiationBL.summarizedChildrenMap(serviceInstantiation);
         assertEquals(childrenMap,expectedMap);
-
     }
 
+    @Test
+    public void requestSummaryOrNull_givenActionWhichIsNotCreate_yieldNullRegardlessOfPayload(){
+        ServiceInstantiation serviceInstantiation = mock(ServiceInstantiation.class);
+
+        when(serviceInstantiation.getAction()).thenReturn(Action.Upgrade);
+        when(featureManager.isActive(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE)).thenReturn(true);
+
+        assertThat(asyncInstantiationBL.requestSummaryOrNull(serviceInstantiation), is(nullValue()));
+    }
 
     @Test
     public void whenPushBulkJob_thenJobRequestIsSaveInJobRequestDb() {
                 UUID.randomUUID(),
                 UUID.randomUUID(),
                 new Date(),
-                "myName", ServiceInfo.ServiceAction.INSTANTIATE);
+                "myName", ServiceInfo.ServiceAction.INSTANTIATE, null);
         assertEquals(SERVICE_MODEL_VERSION_ID, serviceInfo.getServiceModelId());
 
     }
 
     FLAG_2002_VNF_PLATFORM_MULTI_SELECT,
     FLAG_2002_VFM_UPGRADE_ADDITIONAL_OPTIONS,
     FLAG_2002_IDENTIFY_INVARIANT_MACRO_UUID_BY_BACKEND,
+    FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE,
     FLAG_2004_TEMP_BUTTON_TO_INSTANTIATION_STATUS_FILTER,
     FLAG_2002_UNLIMITED_MAX,
     ;
 
 package org.onap.vid.api;
 
+import static java.util.Arrays.stream;
 import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.arrayWithSize;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.ImmutableMap;
 import java.io.IOException;
 import java.util.Map.Entry;
 import java.util.function.Predicate;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpMethod;
 import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 import vid.automation.test.Constants.Users;
+import vid.automation.test.infra.FeatureTogglingTest;
+import vid.automation.test.infra.Features;
 import vid.automation.test.model.User;
 import vid.automation.test.services.AsyncJobsService;
 import vid.automation.test.services.SimulatorApi.RegistrationStrategy;
         return new UserCredentials(user.credentials.userId, user.credentials.password, Users.SILVIA_ROBBINS_TYLER_SILVIA, "", "");
     }
 
+    @BeforeMethod
+    public void setUp() {
+        registerExpectationFromPreset(new PresetAAIGetSubscribersGet(), RegistrationStrategy.CLEAR_THEN_SET);
+    }
+
     @AfterMethod
     protected void dropAllFromNameCounter() {
         AsyncJobsService asyncJobsService = new AsyncJobsService();
             fileAsJsonNode("asyncInstantiation/templates__instance_template.json"));
     }
 
-    private JsonNode fileAsJsonNode(String fileName) throws IOException {
+    @Test
+    @FeatureTogglingTest(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE)
+    public void templateTopology_givenDeploy_getServiceInfoHoldsRequestSummary() throws IOException {
+        ObjectNode request =
+            fileAsJsonNode(CREATE_BULK_OF_MACRO_REQUEST)
+                .put("bulkSize", 1)
+                .put("pause", false);
+
+        postAsyncInstanceRequest(request);
+
+        assertThat(fetchRequestSummary(request.at("/modelInfo/modelVersionId").asText()),
+            jsonEquals(ImmutableMap.of(
+                "vnf", 1L,
+                "vfModule", 2L,
+                "volumeGroup", 1L
+            )));
+    }
+
+    private JsonNode fetchRequestSummary(String serviceModelId) {
+        return stream(restTemplate.getForObject(getTemplateInfoUrl(serviceModelId), JsonNode[].class))
+            .map(it -> it.at("/requestSummary"))
+            .findFirst()
+            .orElseGet(() -> {
+                throw new AssertionError(getTemplateInfoUrl(serviceModelId) + " returned zero results");
+            });
+    }
+
+    private ObjectNode fileAsJsonNode(String fileName) throws IOException {
         return objectMapper.readValue(
             convertRequest(objectMapper, fileName),
-            JsonNode.class);
+            ObjectNode.class);
     }
 
     public void templateTopology_givenDeploy_templateTopologyIsEquivalentToBody(JsonNode body) {
     }
 
     public void templateTopology_givenDeploy_templateTopologyIsEquivalent(JsonNode body, JsonNode expectedTemplateTopology) {
-        registerExpectationFromPreset(new PresetAAIGetSubscribersGet(), RegistrationStrategy.CLEAR_THEN_SET);
-
         String uuid1 = postAsyncInstanceRequest(body);
         JsonNode templateTopology1 = restTemplate.getForObject(templateTopologyUri(uuid1), JsonNode.class);