}
 
     protected void populateVolumeGroup(BBInputSetupParameter parameter) throws Exception {
+        String replaceVnfModelCustomizationUUID = null;
         VolumeGroup volumeGroup = null;
         GenericVnf vnf = null;
         String vnfModelCustomizationUUID = null;
             for (RelatedInstanceList relatedInstList : parameter.getRelatedInstanceList()) {
                 RelatedInstance relatedInstance = relatedInstList.getRelatedInstance();
                 if (relatedInstance.getModelInfo().getModelType().equals(ModelType.vnf)) {
-                    vnfModelCustomizationUUID = relatedInstance.getModelInfo().getModelCustomizationUuid();
+                    if (parameter.getIsReplace()) {
+                        replaceVnfModelCustomizationUUID = relatedInstance.getModelInfo().getModelCustomizationId();
+                    } else {
+                        vnfModelCustomizationUUID = relatedInstance.getModelInfo().getModelCustomizationId();
+                    }
                     break;
                 }
             }
                 vnfModelCustomizationUUID =
                         bbInputSetupUtils.getAAIGenericVnf(vnf.getVnfId()).getModelCustomizationId();
                 ModelInfo vnfModelInfo = new ModelInfo();
-                vnfModelInfo.setModelCustomizationUuid(vnfModelCustomizationUUID);
-                mapCatalogVnf(tempVnf, vnfModelInfo, parameter.getService());
+                if (parameter.getIsReplace()) {
+                    vnfModelInfo.setModelCustomizationUuid(replaceVnfModelCustomizationUUID);
+                    mapCatalogVnf(tempVnf, vnfModelInfo, parameter.getServiceModel().getNewService());
+                } else {
+                    vnfModelInfo.setModelCustomizationUuid(vnfModelCustomizationUUID);
+                    mapCatalogVnf(tempVnf, vnfModelInfo, parameter.getServiceModel().getCurrentService());
+                }
                 break;
             }
         }
                         && volumeGroupTemp.getVolumeGroupId()
                                 .equalsIgnoreCase(parameter.getLookupKeyMap().get(ResourceKey.VOLUME_GROUP_ID))) {
                     volumeGroup = volumeGroupTemp;
+                    if (volumeGroup.getModelInfoVfModule() == null) {
+                        throw new Exception(
+                                "ModelInfoVfModule is null for VolumeGroup: " + volumeGroup.getVolumeGroupId());
+                    }
+                    String volumeGroupCustId = volumeGroup.getModelInfoVfModule().getModelCustomizationUUID();
+                    ModelInfo modelInfoVolumeGroup = new ModelInfo();
+                    modelInfoVolumeGroup.setModelCustomizationId(volumeGroupCustId);
+                    if (parameter.getIsReplace() && parameter.getLookupKeyMap().get(ResourceKey.VOLUME_GROUP_ID) != null
+                            && volumeGroupTemp.getVolumeGroupId()
+                                    .equalsIgnoreCase(parameter.getLookupKeyMap().get(ResourceKey.VOLUME_GROUP_ID))) {
+                        mapCatalogVolumeGroup(volumeGroupTemp, modelInfoVolumeGroup,
+                                parameter.getServiceModel().getNewService(), replaceVnfModelCustomizationUUID);
+                    } else {
+                        mapCatalogVolumeGroup(volumeGroupTemp, modelInfoVolumeGroup,
+                                parameter.getServiceModel().getCurrentService(), vnfModelCustomizationUUID);
+                    }
                     break;
                 }
             }
                 volumeGroup = createVolumeGroup(parameter.getLookupKeyMap(), parameter.getResourceId(),
                         parameter.getInstanceName(), generatedVnfType, parameter.getInstanceParams());
                 vnf.getVolumeGroups().add(volumeGroup);
-            }
-            if (volumeGroup != null) {
-                mapCatalogVolumeGroup(volumeGroup, parameter.getModelInfo(), parameter.getService(),
-                        vnfModelCustomizationUUID);
+                if (parameter.getIsReplace()) {
+                    mapCatalogVolumeGroup(volumeGroup, parameter.getModelInfo(),
+                            parameter.getServiceModel().getNewService(), replaceVnfModelCustomizationUUID);
+                } else {
+                    mapCatalogVolumeGroup(volumeGroup, parameter.getModelInfo(),
+                            parameter.getServiceModel().getCurrentService(), vnfModelCustomizationUUID);
+                }
             }
         } else {
             logger.debug("Related VNF instance Id not found: {}",
                 parameter.setInstanceName(vfModules.getVolumeGroupInstanceName());
                 parameter.setVnfType(vnfType);
                 parameter.setInstanceParams(vfModules.getInstanceParams());
+                ServiceModel serviceModel = new ServiceModel();
+                serviceModel.setCurrentService(service);
+                parameter.setServiceModel(serviceModel);
                 this.populateVolumeGroup(parameter);
             } else {
                 parameter.setResourceId(lookupKeyMap.get(ResourceKey.VF_MODULE_ID));
 
         verify(SPY_bbInputSetup, times(1)).populateGenericVnf(parameter);
         assertEquals("VnfId populated", true,
                 lookupKeyMap.get(ResourceKey.GENERIC_VNF_ID).equalsIgnoreCase(resourceId));
-
         doReturn(ModelType.volumeGroup).when(modelInfo).getModelType();
         resourceId = "volumeGroupId";
         parameter.setResourceId(resourceId);
         ModelInfo mi = new ModelInfo();
         mi.setModelType(ModelType.vnf);
         mi.setModelCustomizationUuid("vnfModelCustomizationUUID");
+        mi.setModelCustomizationId("vnfModelCustomizationUUID");
         ri.setModelInfo(mi);
         ril.setRelatedInstance(ri);
         requestDetails.setRelatedInstanceList(new RelatedInstanceList[] {ril});
 
         ModelInfo modelInfo = new ModelInfo();
-        modelInfo.setModelType(ModelType.volumeGroup);
+        modelInfo.setModelCustomizationId("volumeGroupCustId");
 
         RequestInfo reqInfo = new RequestInfo();
         reqInfo.setInstanceName("volumeGroupName");
         VolumeGroup vg = new VolumeGroup();
         vg.setVolumeGroupName("volumeGroupName");
         vg.setVolumeGroupId("volumeGroupId");
+        vg.setModelInfoVfModule(new ModelInfoVfModule());
+        vg.getModelInfoVfModule().setModelCustomizationUUID("volumeGroupCustId");
         vnf.getVolumeGroups().add(vg);
         serviceInstance.getVnfs().add(vnf);
 
         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
         lookupKeyMap.put(ResourceKey.GENERIC_VNF_ID, "genericVnfId");
 
+        ServiceModel serviceModel = new ServiceModel();
+        serviceModel.setCurrentService(service);
         String bbName = AssignFlows.VOLUME_GROUP.toString();
         String resourceId = "123";
         doNothing().when(SPY_bbInputSetup).mapCatalogVolumeGroup(isA(VolumeGroup.class), eq(modelInfo), eq(service),
         BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
                 .setModelInfo(modelInfo).setService(service).setBbName(bbName).setServiceInstance(serviceInstance)
                 .setLookupKeyMap(lookupKeyMap).setResourceId(resourceId).setRequestDetails(requestDetails)
-                .setInstanceName(reqInfo.getInstanceName()).build();
+                .setInstanceName(reqInfo.getInstanceName()).setServiceModel(serviceModel).build();
         SPY_bbInputSetup.populateVolumeGroup(parameter);
-        verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(vg, modelInfo, service, "vnfModelCustomizationUUID");
+        verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(eq(vg), isA(ModelInfo.class), eq(service),
+                eq("vnfModelCustomizationUUID"));
         vnf.getVolumeGroups().clear();
         SPY_bbInputSetup.populateVolumeGroup(parameter);
         verify(SPY_bbInputSetup, times(1)).mapCatalogVolumeGroup(vnf.getVolumeGroups().get(0), modelInfo, service,