Support Policies during Import Service
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / ServiceImportBusinessLogic.java
index dd55ae8..34460f4 100644 (file)
@@ -67,6 +67,7 @@ import org.openecomp.sdc.be.components.validation.component.ComponentValidator;
 import org.openecomp.sdc.be.config.BeEcompErrorManager;
 import org.openecomp.sdc.be.config.ConfigurationManager;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
 import org.openecomp.sdc.be.datamodel.utils.ArtifactUtils;
 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
 import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition;
@@ -97,6 +98,7 @@ import org.openecomp.sdc.be.model.LifecycleStateEnum;
 import org.openecomp.sdc.be.model.NodeTypeInfo;
 import org.openecomp.sdc.be.model.Operation;
 import org.openecomp.sdc.be.model.ParsedToscaYamlInfo;
+import org.openecomp.sdc.be.model.PolicyDefinition;
 import org.openecomp.sdc.be.model.PropertyDefinition;
 import org.openecomp.sdc.be.model.RelationshipImpl;
 import org.openecomp.sdc.be.model.RelationshipInfo;
@@ -119,6 +121,7 @@ import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade
 import org.openecomp.sdc.be.model.jsonjanusgraph.utils.ModelConverter;
 import org.openecomp.sdc.be.model.operations.StorageException;
 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
+import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
 import org.openecomp.sdc.be.model.operations.api.IGroupInstanceOperation;
 import org.openecomp.sdc.be.model.operations.api.IGroupOperation;
 import org.openecomp.sdc.be.model.operations.api.IGroupTypeOperation;
@@ -135,7 +138,6 @@ import org.openecomp.sdc.common.kpi.api.ASDCKpiApi;
 import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.openecomp.sdc.common.util.ValidationUtils;
 import org.openecomp.sdc.exception.ResponseFormat;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.yaml.snakeyaml.Yaml;
 
 @Getter
@@ -143,9 +145,9 @@ import org.yaml.snakeyaml.Yaml;
 @org.springframework.stereotype.Component("serviceImportBusinessLogic")
 public class ServiceImportBusinessLogic {
 
+    protected static final String CREATE_RESOURCE = "Create Resource";
     private static final String INITIAL_VERSION = "0.1";
-    private static final String CREATE_RESOURCE = "Create Resource";
-    private static final String IN_RESOURCE = "  in resource {} ";
+    private static final String IN_RESOURCE = " in resource {} ";
     private static final String COMPONENT_INSTANCE_WITH_NAME = "component instance with name ";
     private static final String COMPONENT_INSTANCE_WITH_NAME_IN_RESOURCE = "component instance with name {}  in resource {} ";
     private static final String CERTIFICATION_ON_IMPORT = "certification on import";
@@ -154,30 +156,25 @@ public class ServiceImportBusinessLogic {
     private static final String CREATE_RESOURCE_VALIDATE_CAPABILITY_TYPES = "Create Resource - validateCapabilityTypesCreate";
     private static final String CATEGORY_IS_EMPTY = "Resource category is empty";
     private static final Logger log = Logger.getLogger(ServiceImportBusinessLogic.class);
+
+    private final ComponentsUtils componentsUtils;
+    private final ToscaOperationFacade toscaOperationFacade;
     private final UiComponentDataConverter uiComponentDataConverter;
     private final ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
-    @Autowired
-    protected ComponentsUtils componentsUtils;
-    @Autowired
-    protected ToscaOperationFacade toscaOperationFacade;
-    @Autowired
-    private ServiceBusinessLogic serviceBusinessLogic;
-    @Autowired
-    private CsarBusinessLogic csarBusinessLogic;
-    @Autowired
-    private CsarArtifactsAndGroupsBusinessLogic csarArtifactsAndGroupsBusinessLogic;
-    @Autowired
-    private LifecycleBusinessLogic lifecycleBusinessLogic;
-    @Autowired
-    private CompositionBusinessLogic compositionBusinessLogic;
-    @Autowired
-    private ResourceDataMergeBusinessLogic resourceDataMergeBusinessLogic;
-    @Autowired
-    private ServiceImportParseLogic serviceImportParseLogic;
-    @Autowired
-    private ComponentNodeFilterBusinessLogic componentNodeFilterBusinessLogic;
-
-    @Autowired
+    private final ServiceBusinessLogic serviceBusinessLogic;
+    private final CsarBusinessLogic csarBusinessLogic;
+    private final CsarArtifactsAndGroupsBusinessLogic csarArtifactsAndGroupsBusinessLogic;
+    private final LifecycleBusinessLogic lifecycleBusinessLogic;
+    private final CompositionBusinessLogic compositionBusinessLogic;
+    private final ResourceDataMergeBusinessLogic resourceDataMergeBusinessLogic;
+    private final ServiceImportParseLogic serviceImportParseLogic;
+    private final ComponentNodeFilterBusinessLogic componentNodeFilterBusinessLogic;
+    private final GroupBusinessLogic groupBusinessLogic;
+    private final PolicyBusinessLogic policyBusinessLogic;
+    private final JanusGraphDao janusGraphDao;
+    private final ArtifactsBusinessLogic artifactsBusinessLogic;
+    private final IGraphLockOperation graphLockOperation;
+
     public ServiceImportBusinessLogic(IElementOperation elementDao, IGroupOperation groupOperation, IGroupInstanceOperation groupInstanceOperation,
                                       IGroupTypeOperation groupTypeOperation, GroupBusinessLogic groupBusinessLogic,
                                       InterfaceOperation interfaceOperation, InterfaceLifecycleOperation interfaceLifecycleTypeOperation,
@@ -189,17 +186,33 @@ public class ServiceImportBusinessLogic {
                                       ComponentContactIdValidator componentContactIdValidator, ComponentNameValidator componentNameValidator,
                                       ComponentTagsValidator componentTagsValidator, ComponentValidator componentValidator,
                                       ComponentIconValidator componentIconValidator, ComponentProjectCodeValidator componentProjectCodeValidator,
-                                      ComponentDescriptionValidator componentDescriptionValidator) {
+                                      ComponentDescriptionValidator componentDescriptionValidator, final ComponentsUtils componentsUtils,
+                                      final ToscaOperationFacade toscaOperationFacade, final ServiceBusinessLogic serviceBusinessLogic,
+                                      final CsarBusinessLogic csarBusinessLogic,
+                                      final CsarArtifactsAndGroupsBusinessLogic csarArtifactsAndGroupsBusinessLogic,
+                                      final LifecycleBusinessLogic lifecycleBusinessLogic, final CompositionBusinessLogic compositionBusinessLogic,
+                                      final ResourceDataMergeBusinessLogic resourceDataMergeBusinessLogic,
+                                      final ServiceImportParseLogic serviceImportParseLogic,
+                                      final ComponentNodeFilterBusinessLogic componentNodeFilterBusinessLogic,
+                                      final PolicyBusinessLogic policyBusinessLogic, final JanusGraphDao janusGraphDao,
+                                      final IGraphLockOperation graphLockOperation) {
         this.componentInstanceBusinessLogic = componentInstanceBusinessLogic;
         this.uiComponentDataConverter = uiComponentDataConverter;
-    }
-
-    public ServiceBusinessLogic getServiceBusinessLogic() {
-        return serviceBusinessLogic;
-    }
-
-    public void setServiceBusinessLogic(ServiceBusinessLogic serviceBusinessLogic) {
+        this.componentsUtils = componentsUtils;
+        this.toscaOperationFacade = toscaOperationFacade;
         this.serviceBusinessLogic = serviceBusinessLogic;
+        this.csarBusinessLogic = csarBusinessLogic;
+        this.csarArtifactsAndGroupsBusinessLogic = csarArtifactsAndGroupsBusinessLogic;
+        this.lifecycleBusinessLogic = lifecycleBusinessLogic;
+        this.compositionBusinessLogic = compositionBusinessLogic;
+        this.resourceDataMergeBusinessLogic = resourceDataMergeBusinessLogic;
+        this.serviceImportParseLogic = serviceImportParseLogic;
+        this.componentNodeFilterBusinessLogic = componentNodeFilterBusinessLogic;
+        this.groupBusinessLogic = groupBusinessLogic;
+        this.policyBusinessLogic = policyBusinessLogic;
+        this.janusGraphDao = janusGraphDao;
+        this.artifactsBusinessLogic = artifactsBusinessLogic;
+        this.graphLockOperation = graphLockOperation;
     }
 
     public Service createService(Service service, AuditingActionEnum auditingAction, User user, Map<String, byte[]> csarUIPayload,
@@ -211,7 +224,10 @@ public class ServiceImportBusinessLogic {
         service.setConformanceLevel(ConfigurationManager.getConfigurationManager().getConfiguration().getToscaConformanceLevel());
         service.setDistributionStatus(DistributionStatusEnum.DISTRIBUTION_NOT_APPROVED);
         try {
-            serviceBusinessLogic.validateServiceBeforeCreate(service, user, auditingAction);
+            final var serviceBeforeCreate = serviceBusinessLogic.validateServiceBeforeCreate(service, user, auditingAction);
+            if (serviceBeforeCreate.isRight()) {
+                throw new ComponentException(ActionStatus.GENERAL_ERROR);
+            }
             log.debug("enter createService,validateServiceBeforeCreate success");
             String csarUUID = payloadName == null ? service.getCsarUUID() : payloadName;
             log.debug("enter createService,get csarUUID:{}", csarUUID);
@@ -318,8 +334,8 @@ public class ServiceImportBusinessLogic {
             service = createRIAndRelationsFromYaml(yamlName, service, uploadComponentInstanceInfoMap, topologyTemplateYaml,
                 nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo, nodeTypesArtifactsToCreate, nodeName);
             log.trace("************* Finished to create nodes, RI and Relation  from yaml {}", yamlName);
-            Either<Map<String, GroupDefinition>, ResponseFormat> validateUpdateVfGroupNamesRes = serviceBusinessLogic.groupBusinessLogic
-                .validateUpdateVfGroupNames(parsedToscaYamlInfo.getGroups(), service.getSystemName());
+            Either<Map<String, GroupDefinition>, ResponseFormat> validateUpdateVfGroupNamesRes
+                = groupBusinessLogic.validateUpdateVfGroupNames(parsedToscaYamlInfo.getGroups(), service.getSystemName());
             if (validateUpdateVfGroupNamesRes.isRight()) {
                 serviceImportParseLogic.rollback(inTransaction, service, createdArtifacts, nodeTypesNewCreatedArtifacts);
                 throw new ComponentException(validateUpdateVfGroupNamesRes.right().value());
@@ -337,6 +353,13 @@ public class ServiceImportBusinessLogic {
                 throw new ComponentException(createGroupsOnResource.right().value());
             }
             service = createGroupsOnResource.left().value();
+
+            Either<Service, ResponseFormat> createPoliciesOnResource = createPoliciesOnResource(service, parsedToscaYamlInfo.getPolicies());
+            if (createPoliciesOnResource.isRight()) {
+                serviceImportParseLogic.rollback(inTransaction, service, createdArtifacts, nodeTypesNewCreatedArtifacts);
+                throw new ComponentException(createPoliciesOnResource.right().value());
+            }
+            service = createPoliciesOnResource.left().value();
             log.trace("************* Going to add artifacts from yaml {}", yamlName);
             NodeTypeInfoToUpdateArtifacts nodeTypeInfoToUpdateArtifacts = new NodeTypeInfoToUpdateArtifacts(nodeName, nodeTypesArtifactsToCreate);
             Either<Service, ResponseFormat> createArtifactsEither = createOrUpdateArtifacts(ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE,
@@ -353,10 +376,10 @@ public class ServiceImportBusinessLogic {
             throw e;
         } finally {
             if (!inTransaction) {
-                serviceBusinessLogic.janusGraphDao.commit();
+                janusGraphDao.commit();
             }
             if (shouldLock) {
-                serviceBusinessLogic.graphLockOperation.unlockComponentByName(service.getSystemName(), service.getUniqueId(), NodeTypeEnum.Resource);
+                graphLockOperation.unlockComponentByName(service.getSystemName(), service.getUniqueId(), NodeTypeEnum.Resource);
             }
         }
     }
@@ -445,11 +468,11 @@ public class ServiceImportBusinessLogic {
             Constants.VF_LICENSE_DESCRIPTION, vfLicenseModelId, artifactOperation, null, true, shouldLock, inTransaction);
     }
 
-    protected Either<Resource, ResponseFormat> getResourceResponseFormatEither(Resource resource, CsarInfo csarInfo,
-                                                                               List<ArtifactDefinition> createdArtifacts,
-                                                                               ArtifactOperationInfo artifactOperation, boolean shouldLock,
-                                                                               boolean inTransaction,
-                                                                               Either<ImmutablePair<String, String>, ResponseFormat> artifacsMetaCsarStatus) {
+    private Either<Resource, ResponseFormat> getResourceResponseFormatEither(Resource resource, CsarInfo csarInfo,
+                                                                             List<ArtifactDefinition> createdArtifacts,
+                                                                             ArtifactOperationInfo artifactOperation, boolean shouldLock,
+                                                                             boolean inTransaction,
+                                                                             Either<ImmutablePair<String, String>, ResponseFormat> artifacsMetaCsarStatus) {
         try {
             String artifactsFileName = artifacsMetaCsarStatus.left().value().getKey();
             String artifactsContents = artifacsMetaCsarStatus.left().value().getValue();
@@ -561,7 +584,7 @@ public class ServiceImportBusinessLogic {
         if (operation.getArtifactOperationEnum() == ArtifactsBusinessLogic.ArtifactOperationEnum.UPDATE
             || operation.getArtifactOperationEnum() == ArtifactsBusinessLogic.ArtifactOperationEnum.DELETE) {
             if (serviceImportParseLogic.isArtifactDeletionRequired(artifactId, artifactFileBytes, isFromCsar)) {
-                Either<ArtifactDefinition, ResponseFormat> handleDelete = serviceBusinessLogic.artifactsBusinessLogic
+                Either<ArtifactDefinition, ResponseFormat> handleDelete = artifactsBusinessLogic
                     .handleDelete(component.getUniqueId(), artifactId, csarInfo.getModifier(), component, shouldLock, inTransaction);
                 if (handleDelete.isRight()) {
                     result = Either.right(handleDelete.right().value());
@@ -589,10 +612,10 @@ public class ServiceImportBusinessLogic {
         return result;
     }
 
-    public Either<List<ArtifactDefinition>, ResponseFormat> handleNodeTypeArtifacts(Resource nodeTypeResource,
-                                                                                    Map<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> nodeTypeArtifactsToHandle,
-                                                                                    List<ArtifactDefinition> createdArtifacts, User user,
-                                                                                    boolean inTransaction, boolean ignoreLifecycleState) {
+    private Either<List<ArtifactDefinition>, ResponseFormat> handleNodeTypeArtifacts(Resource nodeTypeResource,
+                                                                                     Map<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> nodeTypeArtifactsToHandle,
+                                                                                     List<ArtifactDefinition> createdArtifacts, User user,
+                                                                                     boolean inTransaction, boolean ignoreLifecycleState) {
         List<ArtifactDefinition> handleNodeTypeArtifactsRequestRes;
         Either<List<ArtifactDefinition>, ResponseFormat> handleNodeTypeArtifactsRes = null;
         Either<Resource, ResponseFormat> changeStateResponse;
@@ -610,7 +633,7 @@ public class ServiceImportBusinessLogic {
                 List<ArtifactDefinition> curArtifactsToHandle = curOperationEntry.getValue();
                 if (curArtifactsToHandle != null && !curArtifactsToHandle.isEmpty()) {
                     log.debug("************* Going to {} artifact to vfc {}", curOperation.name(), nodeTypeResource.getName());
-                    handleNodeTypeArtifactsRequestRes = serviceBusinessLogic.artifactsBusinessLogic
+                    handleNodeTypeArtifactsRequestRes = artifactsBusinessLogic
                         .handleArtifactsRequestForInnerVfcComponent(curArtifactsToHandle, nodeTypeResource, user, createdArtifacts,
                             new ArtifactOperationInfo(false, ignoreLifecycleState, curOperation), false, inTransaction);
                     if (ArtifactsBusinessLogic.ArtifactOperationEnum.isCreateOrLink(curOperation)) {
@@ -630,7 +653,7 @@ public class ServiceImportBusinessLogic {
         return handleNodeTypeArtifactsRes;
     }
 
-    protected Either<Resource, ResponseFormat> checkoutResource(Resource resource, User user, boolean inTransaction) {
+    private Either<Resource, ResponseFormat> checkoutResource(Resource resource, User user, boolean inTransaction) {
         Either<Resource, ResponseFormat> checkoutResourceRes;
         try {
             if (!resource.getComponentMetadataDefinition().getMetadataDataDefinition().getState()
@@ -768,7 +791,7 @@ public class ServiceImportBusinessLogic {
         return organizeVfCsarArtifactsByArtifactOperation(artifactPathAndNameList, existingArtifacts, component, user);
     }
 
-    protected boolean isNonMetaArtifact(ArtifactDefinition artifact) {
+    private boolean isNonMetaArtifact(ArtifactDefinition artifact) {
         boolean result = true;
         if (artifact.getMandatory() || artifact.getArtifactName() == null || !isValidArtifactType(artifact)) {
             result = false;
@@ -777,12 +800,10 @@ public class ServiceImportBusinessLogic {
     }
 
     private boolean isValidArtifactType(ArtifactDefinition artifact) {
-        boolean result = true;
-        if (artifact.getArtifactType() == null || ArtifactTypeEnum.findType(artifact.getArtifactType()).equals(ArtifactTypeEnum.VENDOR_LICENSE)
-            || ArtifactTypeEnum.findType(artifact.getArtifactType()).equals(ArtifactTypeEnum.VF_LICENSE)) {
-            result = false;
-        }
-        return result;
+        final String artifactType = artifact.getArtifactType();
+        return artifactType != null
+            && !ArtifactTypeEnum.VENDOR_LICENSE.getType().equals(ArtifactTypeEnum.findType(artifactType))
+            && !ArtifactTypeEnum.VF_LICENSE.getType().equals(ArtifactTypeEnum.findType(artifactType));
     }
 
     protected Either<EnumMap<ArtifactsBusinessLogic.ArtifactOperationEnum, List<CsarUtils.NonMetaArtifactInfo>>, ResponseFormat> organizeVfCsarArtifactsByArtifactOperation(
@@ -815,12 +836,11 @@ public class ServiceImportBusinessLogic {
                             ResponseFormat responseFormat = ResponseFormatManager.getInstance()
                                 .getResponseFormat(ActionStatus.ARTIFACT_ALREADY_EXIST_IN_DIFFERENT_TYPE_IN_CSAR, currNewArtifact.getArtifactName(),
                                     currNewArtifact.getArtifactType(), foundArtifact.getArtifactType());
-                            AuditingActionEnum auditingAction = serviceBusinessLogic.artifactsBusinessLogic
-                                .detectAuditingType(new ArtifactOperationInfo(false, false, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE),
-                                    foundArtifact.getArtifactChecksum());
-                            serviceBusinessLogic.artifactsBusinessLogic
-                                .handleAuditing(auditingAction, component, component.getUniqueId(), user, null, null, foundArtifact.getUniqueId(),
-                                    responseFormat, component.getComponentType(), null);
+                            AuditingActionEnum auditingAction = artifactsBusinessLogic.detectAuditingType(
+                                new ArtifactOperationInfo(false, false, ArtifactsBusinessLogic.ArtifactOperationEnum.CREATE),
+                                foundArtifact.getArtifactChecksum());
+                            artifactsBusinessLogic.handleAuditing(auditingAction, component, component.getUniqueId(), user, null, null,
+                                foundArtifact.getUniqueId(), responseFormat, component.getComponentType(), null);
                             responseWrapper.setInnerElement(responseFormat);
                             break;
                         }
@@ -863,14 +883,6 @@ public class ServiceImportBusinessLogic {
         return nodeTypeArtifactsToHandleRes;
     }
 
-    public ComponentsUtils getComponentsUtils() {
-        return this.componentsUtils;
-    }
-
-    public void setComponentsUtils(ComponentsUtils componentsUtils) {
-        this.componentsUtils = componentsUtils;
-    }
-
     protected Either<List<CsarUtils.NonMetaArtifactInfo>, String> getValidArtifactNames(CsarInfo csarInfo,
                                                                                         Map<String, Set<List<String>>> collectedWarningMessages) {
         List<CsarUtils.NonMetaArtifactInfo> artifactPathAndNameList = csarInfo.getCsar().entrySet().stream()
@@ -891,14 +903,27 @@ public class ServiceImportBusinessLogic {
             List<GroupDefinition> groupsAsList = updateGroupsMembersUsingResource(groups, service);
             serviceImportParseLogic.handleGroupsProperties(service, groups);
             serviceImportParseLogic.fillGroupsFinalFields(groupsAsList);
-            Either<List<GroupDefinition>, ResponseFormat> createGroups = serviceBusinessLogic.groupBusinessLogic
-                .createGroups(service, groupsAsList, true);
+            Either<List<GroupDefinition>, ResponseFormat> createGroups = groupBusinessLogic.createGroups(service, groupsAsList, true);
             if (createGroups.isRight()) {
                 return Either.right(createGroups.right().value());
             }
         } else {
             return Either.left(service);
         }
+        return getServiceResponseFormatEither(service);
+    }
+
+    private Either<Service, ResponseFormat> createPoliciesOnResource(Service service,
+                                                                     Map<String, PolicyDefinition> policies) {
+        if (MapUtils.isNotEmpty(policies)) {
+            policyBusinessLogic.createPolicies(service, policies);
+        } else {
+            return Either.left(service);
+        }
+        return getServiceResponseFormatEither(service);
+    }
+
+    private Either<Service, ResponseFormat> getServiceResponseFormatEither(Service service) {
         Either<Service, StorageOperationStatus> updatedResource = toscaOperationFacade.getToscaElement(service.getUniqueId());
         if (updatedResource.isRight()) {
             ResponseFormat responseFormat = componentsUtils
@@ -1232,11 +1257,11 @@ public class ServiceImportBusinessLogic {
         return result;
     }
 
-    public Map<String, Resource> createResourcesFromYamlNodeTypesList(String yamlName, Resource resource, Map<String, Object> mappedToscaTemplate,
-                                                                      boolean needLock,
-                                                                      Map<String, EnumMap<ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle,
-                                                                      List<ArtifactDefinition> nodeTypesNewCreatedArtifacts,
-                                                                      Map<String, NodeTypeInfo> nodeTypesInfo, CsarInfo csarInfo) {
+    private Map<String, Resource> createResourcesFromYamlNodeTypesList(String yamlName, Resource resource, Map<String, Object> mappedToscaTemplate,
+                                                                       boolean needLock,
+                                                                       Map<String, EnumMap<ArtifactOperationEnum, List<ArtifactDefinition>>> nodeTypesArtifactsToHandle,
+                                                                       List<ArtifactDefinition> nodeTypesNewCreatedArtifacts,
+                                                                       Map<String, NodeTypeInfo> nodeTypesInfo, CsarInfo csarInfo) {
         Either<String, ImportUtils.ResultStatusEnum> toscaVersion = findFirstToscaStringElement(mappedToscaTemplate,
             TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION);
         if (toscaVersion.isRight()) {
@@ -1304,7 +1329,7 @@ public class ServiceImportBusinessLogic {
         log.debug("************* Going to create all nodes {}", yamlName);
         handleServiceNodeTypes(yamlName, service, topologyTemplateYaml, false, nodeTypesArtifactsToCreate, nodeTypesNewCreatedArtifacts,
             nodeTypesInfo, csarInfo, nodeName);
-        if (!MapUtils.isEmpty(uploadComponentInstanceInfoMap)) {
+        if (MapUtils.isNotEmpty(uploadComponentInstanceInfoMap)) {
             log.debug("************* Going to create all resource instances {}", yamlName);
             service = createServiceInstances(yamlName, service, uploadComponentInstanceInfoMap, csarInfo.getCreatedNodes());
             log.debug("************* Going to create all relations {}", yamlName);
@@ -1364,7 +1389,6 @@ public class ServiceImportBusinessLogic {
         service = getResourceAfterCreateRelations(service);
         addRelationsToRI(yamlName, service, uploadResInstancesMap, componentInstancesList, relations);
         serviceImportParseLogic.associateResourceInstances(yamlName, service, relations);
-        handleSubstitutionMappings(service, uploadResInstancesMap);
         log.debug("************* in create relations, getResource start");
         Either<Service, StorageOperationStatus> eitherGetResource = toscaOperationFacade.getToscaElement(service.getUniqueId());
         log.debug("************* in create relations, getResource end");
@@ -1574,7 +1598,7 @@ public class ServiceImportBusinessLogic {
             originResource.getCapabilities().forEach((k, v) -> serviceImportParseLogic.addCapabilities(originCapabilities, k, v));
             uploadComponentInstanceInfo.getCapabilities().values()
                 .forEach(l -> serviceImportParseLogic.addCapabilitiesProperties(newPropertiesMap, l));
-            updateCapabilityPropertiesValues(allDataTypes, originCapabilities, newPropertiesMap, originResource.getModel());
+            updateCapabilityPropertiesValues(allDataTypes, originCapabilities, newPropertiesMap);
         } else {
             originCapabilities = originResource.getCapabilities();
         }
@@ -1583,7 +1607,7 @@ public class ServiceImportBusinessLogic {
 
     protected void updateCapabilityPropertiesValues(Map<String, DataTypeDefinition> allDataTypes,
                                                     Map<String, List<CapabilityDefinition>> originCapabilities,
-                                                    Map<String, Map<String, UploadPropInfo>> newPropertiesMap, String model) {
+                                                    Map<String, Map<String, UploadPropInfo>> newPropertiesMap) {
         originCapabilities.values().stream().flatMap(Collection::stream).filter(c -> newPropertiesMap.containsKey(c.getName()))
             .forEach(c -> updatePropertyValues(c.getProperties(), newPropertiesMap.get(c.getName()), allDataTypes));
     }
@@ -1630,25 +1654,6 @@ public class ServiceImportBusinessLogic {
         return originResource;
     }
 
-    protected void handleSubstitutionMappings(Service service, Map<String, UploadComponentInstanceInfo> uploadResInstancesMap) {
-        if (false) {
-            Either<Resource, StorageOperationStatus> getResourceRes = toscaOperationFacade.getToscaFullElement(service.getUniqueId());
-            if (getResourceRes.isRight()) {
-                ResponseFormat responseFormat = componentsUtils
-                    .getResponseFormatByComponent(componentsUtils.convertFromStorageResponse(getResourceRes.right().value()), service,
-                        ComponentTypeEnum.SERVICE);
-                throw new ComponentException(responseFormat);
-            }
-            getResourceRes = updateCalculatedCapReqWithSubstitutionMappings(getResourceRes.left().value(), uploadResInstancesMap);
-            if (getResourceRes.isRight()) {
-                ResponseFormat responseFormat = componentsUtils
-                    .getResponseFormatByComponent(componentsUtils.convertFromStorageResponse(getResourceRes.right().value()), service,
-                        ComponentTypeEnum.SERVICE);
-                throw new ComponentException(responseFormat);
-            }
-        }
-    }
-
     protected Either<Resource, StorageOperationStatus> updateCalculatedCapReqWithSubstitutionMappings(Resource resource,
                                                                                                       Map<String, UploadComponentInstanceInfo> uploadResInstancesMap) {
         Either<Resource, StorageOperationStatus> updateRes = null;
@@ -1818,15 +1823,15 @@ public class ServiceImportBusinessLogic {
                     log.debug("try to find aviable Capability  req name is {} ", validReq.getName());
                     CapabilityDefinition aviableCapForRel = serviceImportParseLogic
                         .findAvailableCapabilityByTypeOrName(validReq, currentCapCompInstance, uploadRegInfo);
-                    reqAndRelationshipPair.setCapability(aviableCapForRel.getName());
-                    reqAndRelationshipPair.setCapabilityUid(aviableCapForRel.getUniqueId());
-                    reqAndRelationshipPair.setCapabilityOwnerId(aviableCapForRel.getOwnerId());
                     if (aviableCapForRel == null) {
                         BeEcompErrorManager.getInstance().logInternalDataError(
                             "aviable capability was not found. req name is " + validReq.getName() + " component instance is " + currentCapCompInstance
                                 .getUniqueId(), service.getUniqueId(), BeEcompErrorManager.ErrorSeverity.ERROR);
                         return componentsUtils.getResponseFormat(ActionStatus.NOT_TOPOLOGY_TOSCA_TEMPLATE, yamlName);
                     }
+                    reqAndRelationshipPair.setCapability(aviableCapForRel.getName());
+                    reqAndRelationshipPair.setCapabilityUid(aviableCapForRel.getUniqueId());
+                    reqAndRelationshipPair.setCapabilityOwnerId(aviableCapForRel.getOwnerId());
                     CapabilityRequirementRelationship capReqRel = new CapabilityRequirementRelationship();
                     capReqRel.setRelation(reqAndRelationshipPair);
                     reqAndRelationshipPairList.add(capReqRel);
@@ -2144,8 +2149,8 @@ public class ServiceImportBusinessLogic {
                 .auditResource(responseFormat, csarInfo.getModifier(), preparedResource == null ? oldRresource : preparedResource, actionEnum);
             throw e;
         }
-        Either<Map<String, GroupDefinition>, ResponseFormat> validateUpdateVfGroupNamesRes = serviceBusinessLogic.groupBusinessLogic
-            .validateUpdateVfGroupNames(uploadComponentInstanceInfoMap.getGroups(), preparedResource.getSystemName());
+        Either<Map<String, GroupDefinition>, ResponseFormat> validateUpdateVfGroupNamesRes = groupBusinessLogic.validateUpdateVfGroupNames(
+            uploadComponentInstanceInfoMap.getGroups(), preparedResource.getSystemName());
         if (validateUpdateVfGroupNamesRes.isRight()) {
             throw new ComponentException(validateUpdateVfGroupNamesRes.right().value());
         }
@@ -2237,8 +2242,8 @@ public class ServiceImportBusinessLogic {
                 nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo, nodeTypesArtifactsToCreate, nodeName);
             log.trace("************* Finished to create nodes, RI and Relation  from yaml {}", yamlName);
             // validate update vf module group names
-            Either<Map<String, GroupDefinition>, ResponseFormat> validateUpdateVfGroupNamesRes = serviceBusinessLogic.groupBusinessLogic
-                .validateUpdateVfGroupNames(parsedToscaYamlInfo.getGroups(), resource.getSystemName());
+            Either<Map<String, GroupDefinition>, ResponseFormat> validateUpdateVfGroupNamesRes = groupBusinessLogic.validateUpdateVfGroupNames(
+                parsedToscaYamlInfo.getGroups(), resource.getSystemName());
             if (validateUpdateVfGroupNamesRes.isRight()) {
                 serviceImportParseLogic.rollback(inTransaction, resource, createdArtifacts, nodeTypesNewCreatedArtifacts);
                 throw new ComponentException(validateUpdateVfGroupNamesRes.right().value());
@@ -2274,11 +2279,10 @@ public class ServiceImportBusinessLogic {
             throw e;
         } finally {
             if (!inTransaction) {
-                serviceBusinessLogic.janusGraphDao.commit();
+                janusGraphDao.commit();
             }
             if (shouldLock) {
-                serviceBusinessLogic.graphLockOperation
-                    .unlockComponentByName(resource.getSystemName(), resource.getUniqueId(), NodeTypeEnum.Resource);
+                graphLockOperation.unlockComponentByName(resource.getSystemName(), resource.getUniqueId(), NodeTypeEnum.Resource);
             }
         }
     }
@@ -2288,8 +2292,7 @@ public class ServiceImportBusinessLogic {
             List<GroupDefinition> groupsAsList = updateGroupsMembersUsingResource(groups, resource);
             serviceImportParseLogic.handleGroupsProperties(resource, groups);
             serviceImportParseLogic.fillGroupsFinalFields(groupsAsList);
-            Either<List<GroupDefinition>, ResponseFormat> createGroups = serviceBusinessLogic.groupBusinessLogic
-                .createGroups(resource, groupsAsList, true);
+            Either<List<GroupDefinition>, ResponseFormat> createGroups = groupBusinessLogic.createGroups(resource, groupsAsList, true);
             if (createGroups.isRight()) {
                 return Either.right(createGroups.right().value());
             }
@@ -2407,13 +2410,13 @@ public class ServiceImportBusinessLogic {
         } finally {
             if (resourcePair == null) {
                 BeEcompErrorManager.getInstance().logBeSystemError("Change LifecycleState - Certify");
-                serviceBusinessLogic.janusGraphDao.rollback();
+                janusGraphDao.rollback();
             } else if (!inTransaction) {
-                serviceBusinessLogic.janusGraphDao.commit();
+                janusGraphDao.commit();
             }
             if (needLock) {
                 log.debug("unlock resource {}", lockedResourceId);
-                serviceBusinessLogic.graphLockOperation.unlockComponent(lockedResourceId, NodeTypeEnum.Resource);
+                graphLockOperation.unlockComponent(lockedResourceId, NodeTypeEnum.Resource);
             }
         }
     }
@@ -2491,23 +2494,24 @@ public class ServiceImportBusinessLogic {
         Resource vfcCreated = null;
         while (nodesNameValueIter.hasNext()) {
             Map.Entry<String, Object> nodeType = nodesNameValueIter.next();
+            String nodeTypeKey = nodeType.getKey();
             Map<ArtifactsBusinessLogic.ArtifactOperationEnum, List<ArtifactDefinition>> nodeTypeArtifactsToHandle =
-                nodeTypesArtifactsToHandle == null || nodeTypesArtifactsToHandle.isEmpty() ? null : nodeTypesArtifactsToHandle.get(nodeType.getKey());
-            if (nodeTypesInfo.containsKey(nodeType.getKey())) {
+                nodeTypesArtifactsToHandle == null || nodeTypesArtifactsToHandle.isEmpty() ? null : nodeTypesArtifactsToHandle.get(nodeTypeKey);
+            if (nodeTypesInfo.containsKey(nodeTypeKey)) {
                 vfcCreated = handleNestedVfc(service, nodeTypesArtifactsToHandle, nodeTypesNewCreatedArtifacts, nodeTypesInfo, csarInfo,
-                    nodeType.getKey());
-                log.trace("************* Finished to handle nested vfc {}", nodeType.getKey());
+                    nodeTypeKey);
+                log.trace("************* Finished to handle nested vfc {}", nodeTypeKey);
             } else if (csarInfo.getCreatedNodesToscaResourceNames() != null && !csarInfo.getCreatedNodesToscaResourceNames()
-                .containsKey(nodeType.getKey())) {
+                .containsKey(nodeTypeKey)) {
                 ImmutablePair<Resource, ActionStatus> resourceCreated = serviceImportParseLogic
                     .createNodeTypeResourceFromYaml(yamlName, nodeType, csarInfo.getModifier(), mapToConvert, service, needLock,
                         nodeTypeArtifactsToHandle, nodeTypesNewCreatedArtifacts, true, csarInfo, true);
-                log.debug("************* Finished to create node {}", nodeType.getKey());
+                log.debug("************* Finished to create node {}", nodeTypeKey);
                 vfcCreated = resourceCreated.getLeft();
-                csarInfo.getCreatedNodesToscaResourceNames().put(nodeType.getKey(), vfcCreated.getName());
+                csarInfo.getCreatedNodesToscaResourceNames().put(nodeTypeKey, vfcCreated.getName());
             }
             if (vfcCreated != null) {
-                csarInfo.getCreatedNodes().put(nodeType.getKey(), vfcCreated);
+                csarInfo.getCreatedNodes().put(nodeTypeKey, vfcCreated);
             }
             mapToConvert.remove(TypeUtils.ToscaTagNamesEnum.NODE_TYPES.getElementName());
         }