Support setting interfaces on instances
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / jsonjanusgraph / operations / NodeTemplateOperation.java
index 3f3e541..0b29675 100644 (file)
@@ -23,6 +23,7 @@ package org.openecomp.sdc.be.model.jsonjanusgraph.operations;
 import fj.data.Either;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -33,12 +34,11 @@ import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
-import java.util.function.BiConsumer;
 import java.util.function.BiPredicate;
 import java.util.stream.Collectors;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -46,6 +46,7 @@ import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.janusgraph.core.JanusGraphVertex;
 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.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
 import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
@@ -82,12 +83,31 @@ import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
 import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
 import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
-import org.openecomp.sdc.be.model.*;
+import org.openecomp.sdc.be.model.ArtifactDefinition;
+import org.openecomp.sdc.be.model.CapabilityDefinition;
+import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
+import org.openecomp.sdc.be.model.Component;
+import org.openecomp.sdc.be.model.ComponentInstance;
+import org.openecomp.sdc.be.model.ComponentInstanceAttribute;
+import org.openecomp.sdc.be.model.ComponentInstanceInput;
+import org.openecomp.sdc.be.model.ComponentInstanceOutput;
+import org.openecomp.sdc.be.model.ComponentInstanceProperty;
+import org.openecomp.sdc.be.model.ComponentParametersView;
+import org.openecomp.sdc.be.model.GroupDefinition;
+import org.openecomp.sdc.be.model.GroupInstance;
+import org.openecomp.sdc.be.model.InputDefinition;
+import org.openecomp.sdc.be.model.PropertyDefinition;
+import org.openecomp.sdc.be.model.RelationshipImpl;
+import org.openecomp.sdc.be.model.RelationshipInfo;
+import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
+import org.openecomp.sdc.be.model.RequirementDefinition;
+import org.openecomp.sdc.be.model.User;
 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.NodeType;
 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.TopologyTemplate;
 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElement;
 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.ToscaElementTypeEnum;
 import org.openecomp.sdc.be.model.jsonjanusgraph.enums.JsonConstantKeysEnum;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.exception.OperationException;
 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.StorageOperationStatus;
@@ -98,7 +118,9 @@ import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
 import org.openecomp.sdc.common.jsongraph.util.CommonUtility;
 import org.openecomp.sdc.common.jsongraph.util.CommonUtility.LogLevelEnum;
+import org.openecomp.sdc.common.log.elements.ErrorLogOptionalData;
 import org.openecomp.sdc.common.log.elements.LoggerSupportability;
+import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
 import org.openecomp.sdc.common.log.enums.LogLevel;
 import org.openecomp.sdc.common.log.enums.LoggerSupportabilityActions;
 import org.openecomp.sdc.common.log.enums.StatusCode;
@@ -107,19 +129,21 @@ import org.openecomp.sdc.common.util.ValidationUtils;
 
 @org.springframework.stereotype.Component("node-template-operation")
 public class NodeTemplateOperation extends BaseOperation {
+
+    public static final Integer NON_HEAT_TIMEOUT = 0;
+    static final String HEAT_ENV_NAME = "heatEnv";
+    static final String HEAT_VF_ENV_NAME = "VfHeatEnv";
+    static final String HEAT_ENV_SUFFIX = "env";
     private static final String FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR = "Failed to fetch container vertex {} error {}";
-    private static final String FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE = "Failed to update topology template {} with new component instance {}. ";
+    private static final String FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE =
+        "Failed to update topology template {} with new component instance {}. ";
     private static final String ARTIFACT_PLACEHOLDER_TYPE = "type";
     private static final String ARTIFACT_PLACEHOLDER_DISPLAY_NAME = "displayName";
     private static final Object ARTIFACT_PLACEHOLDER_DESCRIPTION = "description";
-    static final String HEAT_ENV_NAME = "heatEnv";
-    static final String HEAT_VF_ENV_NAME = "VfHeatEnv";
-    static final String HEAT_ENV_SUFFIX = "env";
+    private static final Logger log = Logger.getLogger(NodeTemplateOperation.class.getName());
+    private static final LoggerSupportability loggerSupportability = LoggerSupportability.getLogger(NodeTemplateOperation.class.getName());
     private static Integer defaultHeatTimeout;
-    public static final Integer NON_HEAT_TIMEOUT = 0;
 
-    private static final Logger log = Logger.getLogger(NodeTemplateOperation.class.getName());
-    private static final LoggerSupportability loggerSupportability=LoggerSupportability.getLogger(NodeTemplateOperation.class.getName());
     public NodeTemplateOperation() {
         defaultHeatTimeout = ConfigurationManager.getConfigurationManager().getConfiguration().getHeatArtifactDeploymentTimeout().getDefaultMinutes();
         if ((defaultHeatTimeout == null) || (defaultHeatTimeout < 1)) {
@@ -131,15 +155,23 @@ public class NodeTemplateOperation extends BaseOperation {
         return defaultHeatTimeout;
     }
 
-    Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addComponentInstanceToTopologyTemplate(TopologyTemplate container, ToscaElement originToscaElement, String instanceNumberSuffix, ComponentInstance componentInstance,
-                                                                                                                          boolean allowDeleted, User user) {
+    public static String createCapPropertyKey(String key, String instanceId) {
+        StringBuilder sb = new StringBuilder(instanceId);
+        sb.append(ModelConverter.CAP_PROP_DELIM).append(instanceId).append(ModelConverter.CAP_PROP_DELIM).append(key);
+        return sb.toString();
+    }
 
+    Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addComponentInstanceToTopologyTemplate(TopologyTemplate container,
+                                                                                                                   ToscaElement originToscaElement,
+                                                                                                                   String instanceNumberSuffix,
+                                                                                                                   ComponentInstance componentInstance,
+                                                                                                                   boolean allowDeleted, User user) {
         Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> result = null;
         Either<TopologyTemplate, StorageOperationStatus> addComponentInstanceRes = null;
-        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Going to create component instance {} in component {}", componentInstance, container.getUniqueId());
+        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Going to create component instance {} in component {}", componentInstance,
+            container.getUniqueId());
         ComponentInstanceDataDefinition componentInstanceData = null;
         Either<String, StorageOperationStatus> newInstanceNameRes = null;
-
         Either<GraphVertex, JanusGraphOperationStatus> metadataVertex = janusGraphDao
             .getVertexById(container.getUniqueId(), JsonParseFlagEnum.ParseJson);
         if (metadataVertex.isRight()) {
@@ -149,19 +181,17 @@ public class NodeTemplateOperation extends BaseOperation {
             }
             result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
         }
-
         if (result == null) {
-
             newInstanceNameRes = buildValidateInstanceName(container, originToscaElement, componentInstance, instanceNumberSuffix);
             if (newInstanceNameRes.isRight()) {
                 result = Either.right(newInstanceNameRes.right().value());
             }
         }
         if (result == null) {
-            componentInstanceData = buildComponentInstanceDataDefinition(componentInstance, container.getUniqueId(), newInstanceNameRes.left().value(), true, originToscaElement);
-
-            addComponentInstanceRes = addComponentInstanceToTopologyTemplate(container, originToscaElement, componentInstanceData, metadataVertex.left().value(), allowDeleted, user);
-
+            componentInstanceData = buildComponentInstanceDataDefinition(componentInstance, container.getUniqueId(),
+                newInstanceNameRes.left().value(), true, originToscaElement);
+            addComponentInstanceRes = addComponentInstanceToTopologyTemplate(container, originToscaElement, componentInstanceData,
+                metadataVertex.left().value(), allowDeleted);
             if (addComponentInstanceRes.isRight()) {
                 StorageOperationStatus status = addComponentInstanceRes.right().value();
                 if (status == StorageOperationStatus.NOT_FOUND) {
@@ -173,26 +203,23 @@ public class NodeTemplateOperation extends BaseOperation {
             if (componentInstance.getOriginType() == OriginTypeEnum.ServiceProxy
                 || componentInstance.getOriginType() == OriginTypeEnum.ServiceSubstitution) {
                 result = addCapAndReqToProxyServiceInstance(updatedContainer, componentInstance, componentInstanceData);
-                if(result.isRight()) {
+                if (result.isRight()) {
                     return result;
                 }
-
                 result = addServiceInstancePropertiesToProxyServiceInstance(updatedContainer, componentInstance);
-                if(result.isRight()) {
-                  return result;
+                if (result.isRight()) {
+                    return result;
                 }
-
                 result = addServiceInstanceInputsToProxyServiceInstance(updatedContainer, componentInstance);
-                if(result.isRight()) {
+                if (result.isRight()) {
                     return result;
                 }
             }
             if (componentInstance.getOriginType() == OriginTypeEnum.ServiceProxy
-                || componentInstance.getOriginType() == OriginTypeEnum.ServiceSubstitution
-                || componentInstance.getOriginType() == OriginTypeEnum.VF
+                || componentInstance.getOriginType() == OriginTypeEnum.ServiceSubstitution || componentInstance.getOriginType() == OriginTypeEnum.VF
                 || componentInstance.getOriginType() == OriginTypeEnum.VFC) {
                 result = addComponentInstanceInterfacesToTopologyTemplate(updatedContainer, componentInstance);
-                if(result.isRight()) {
+                if (result.isRight()) {
                     return result;
                 }
             }
@@ -203,107 +230,125 @@ public class NodeTemplateOperation extends BaseOperation {
         return result;
     }
 
-    private Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addCapAndReqToProxyServiceInstance(TopologyTemplate updatedContainer, ComponentInstance componentInstance,
-                                                                                                                       ComponentInstanceDataDefinition componentInstanceData) {
+    private Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addCapAndReqToProxyServiceInstance(
+        TopologyTemplate updatedContainer, ComponentInstance componentInstance, ComponentInstanceDataDefinition componentInstanceData) {
         Map<String, MapListCapabilityDataDefinition> calcCap = updatedContainer.getCalculatedCapabilities();
         Map<String, MapListRequirementDataDefinition> calcReg = updatedContainer.getCalculatedRequirements();
         Map<String, MapCapabilityProperty> calcCapProp = updatedContainer.getCalculatedCapabilitiesProperties();
-
         Map<String, List<CapabilityDefinition>> additionalCap = componentInstance.getCapabilities();
         Map<String, List<RequirementDefinition>> additionalReq = componentInstance.getRequirements();
-
-        MapListCapabilityDataDefinition allCalculatedCap = calcCap == null || !calcCap.containsKey(componentInstanceData.getUniqueId()) ? new MapListCapabilityDataDefinition() : calcCap.get(componentInstanceData.getUniqueId());
+        MapListCapabilityDataDefinition allCalculatedCap =
+            calcCap == null || !calcCap.containsKey(componentInstanceData.getUniqueId()) ? new MapListCapabilityDataDefinition()
+                : calcCap.get(componentInstanceData.getUniqueId());
         /******** capability ****************************/
-        StorageOperationStatus status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_CAPABILITIES, VertexTypeEnum.CALCULATED_CAPABILITIES, componentInstanceData.getUniqueId());
+        StorageOperationStatus status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(),
+            EdgeLabelEnum.CALCULATED_CAPABILITIES, componentInstanceData.getUniqueId());
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated capabilty  for instance {} in container {}. error {] ", componentInstanceData.getUniqueId(), updatedContainer.getUniqueId(), status);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated capabilty  for instance {} in container {}. error {] ",
+                componentInstanceData.getUniqueId(), updatedContainer.getUniqueId(), status);
             return Either.right(status);
         }
 
         if (additionalCap != null && !additionalCap.isEmpty()) {
 
             Map<String, ListCapabilityDataDefinition> serverCap = additionalCap.entrySet().stream()
-                    .collect(Collectors.toMap(Map.Entry::getKey, en -> new ListCapabilityDataDefinition(en.getValue().stream().map(CapabilityDataDefinition::new).collect(Collectors.toList()))));
+                .collect(Collectors.toMap(Map.Entry::getKey,
+                    en -> new ListCapabilityDataDefinition(en.getValue().stream().map(CapabilityDataDefinition::new).collect(Collectors.toList()))));
 
             serverCap.entrySet().forEach(entryPerType -> entryPerType.getValue().getListToscaDataDefinition().forEach(cap -> {
                 cap.addToPath(componentInstance.getUniqueId());
                 allCalculatedCap.add(entryPerType.getKey(), cap);
             }));
 
-            addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_CAPABILITIES, VertexTypeEnum.CALCULATED_CAPABILITIES, allCalculatedCap, componentInstance.getUniqueId());
+            addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_CAPABILITIES,
+                VertexTypeEnum.CALCULATED_CAPABILITIES, allCalculatedCap, componentInstance.getUniqueId());
 
             /******** capability property ****************************/
-            status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, VertexTypeEnum.CALCULATED_CAP_PROPERTIES, componentInstanceData.getUniqueId());
+            status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
+                componentInstanceData.getUniqueId());
             if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated capabilty properties for instance {} in container {}. error {] ", componentInstanceData.getUniqueId(), updatedContainer.getUniqueId(), status);
+                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
+                    "Failed to remove calculated capabilty properties for instance {} in container {}. error {] ",
+                    componentInstanceData.getUniqueId(), updatedContainer.getUniqueId(), status);
                 return Either.right(status);
             }
-
-            MapCapabilityProperty allCalculatedCapProp = calcCapProp == null || !calcCapProp.containsKey(componentInstanceData.getUniqueId()) ? new MapCapabilityProperty() : calcCapProp.get(componentInstanceData.getUniqueId());
-
-            additionalCap.forEach(new BiConsumer<String, List<CapabilityDefinition>>() {
-                @Override
-                public void accept(String s, List<CapabilityDefinition> caps) {
-                    if (caps != null && !caps.isEmpty()) {
-                        MapPropertiesDataDefinition dataToCreate;
-                        for (CapabilityDefinition cap : caps) {
-                            dataToCreate = new MapPropertiesDataDefinition();
-                            List<ComponentInstanceProperty> capPrps = cap.getProperties();
-                            if (capPrps != null) {
-                                for (ComponentInstanceProperty cip : capPrps) {
-                                    dataToCreate.put(cip.getName(), new PropertyDataDefinition(cip));
-                                }
-                                StringBuilder sb = new StringBuilder(componentInstance.getUniqueId());
-                                sb.append(ModelConverter.CAP_PROP_DELIM);
-                                sb.append(cap.getOwnerId());
-                                sb.append(ModelConverter.CAP_PROP_DELIM).append(s).append(ModelConverter.CAP_PROP_DELIM).append(cap.getName());
-                                allCalculatedCapProp.put(sb.toString(), dataToCreate);
+            MapCapabilityProperty allCalculatedCapProp =
+                calcCapProp == null || !calcCapProp.containsKey(componentInstanceData.getUniqueId()) ? new MapCapabilityProperty()
+                    : calcCapProp.get(componentInstanceData.getUniqueId());
+            additionalCap.forEach((s, caps) -> {
+                if (caps != null && !caps.isEmpty()) {
+                    MapPropertiesDataDefinition dataToCreate;
+                    for (CapabilityDefinition cap : caps) {
+                        dataToCreate = new MapPropertiesDataDefinition();
+                        List<ComponentInstanceProperty> capPrps = cap.getProperties();
+                        if (capPrps != null) {
+                            for (ComponentInstanceProperty cip : capPrps) {
+                                dataToCreate.put(cip.getName(), new PropertyDataDefinition(cip));
                             }
+                            StringBuilder sb = new StringBuilder(componentInstance.getUniqueId());
+                            sb.append(ModelConverter.CAP_PROP_DELIM);
+                            sb.append(cap.getOwnerId());
+                            sb.append(ModelConverter.CAP_PROP_DELIM).append(s).append(ModelConverter.CAP_PROP_DELIM).append(cap.getName());
+                            allCalculatedCapProp.put(sb.toString(), dataToCreate);
                         }
                     }
                 }
             });
-            addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, VertexTypeEnum.CALCULATED_CAP_PROPERTIES, allCalculatedCapProp, componentInstance.getUniqueId());
+            addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
+                VertexTypeEnum.CALCULATED_CAP_PROPERTIES, allCalculatedCapProp, componentInstance.getUniqueId());
         }
-
         /******** Requirements property ****************************/
         if (additionalReq != null && !additionalReq.isEmpty()) {
 
-            MapListRequirementDataDefinition allCalculatedReq = calcReg == null || !calcReg.containsKey(componentInstanceData.getUniqueId()) ? new MapListRequirementDataDefinition() : calcReg.get(componentInstanceData.getUniqueId());
-            status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_REQUIREMENTS, VertexTypeEnum.CALCULATED_REQUIREMENTS, componentInstanceData.getUniqueId());
+            MapListRequirementDataDefinition allCalculatedReq =
+                calcReg == null || !calcReg.containsKey(componentInstanceData.getUniqueId()) ? new MapListRequirementDataDefinition()
+                    : calcReg.get(componentInstanceData.getUniqueId());
+            status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_REQUIREMENTS,
+                componentInstanceData.getUniqueId());
             if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated Requirements for instance {} in container {}. error {] ", componentInstanceData.getUniqueId(), updatedContainer.getUniqueId(), status);
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated Requirements for instance {} in container {}. error {] ",
+                        componentInstanceData.getUniqueId(), updatedContainer.getUniqueId(), status);
                 return Either.right(status);
             }
 
             Map<String, ListRequirementDataDefinition> serverReq = additionalReq.entrySet().stream()
-                    .collect(Collectors.toMap(Map.Entry::getKey, en -> new ListRequirementDataDefinition(en.getValue().stream().map(RequirementDataDefinition::new).collect(Collectors.toList()))));
+                .collect(Collectors.toMap(Map.Entry::getKey, en -> new ListRequirementDataDefinition(
+                    en.getValue().stream().map(RequirementDataDefinition::new).collect(Collectors.toList()))));
 
             serverReq.entrySet().forEach(entryPerType -> entryPerType.getValue().getListToscaDataDefinition().forEach(cap -> {
                 cap.addToPath(componentInstance.getUniqueId());
                 allCalculatedReq.add(entryPerType.getKey(), cap);
             }));
 
-            addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_REQUIREMENTS, VertexTypeEnum.CALCULATED_REQUIREMENTS, allCalculatedReq, componentInstance.getUniqueId());
+            addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_REQUIREMENTS,
+                VertexTypeEnum.CALCULATED_REQUIREMENTS, allCalculatedReq, componentInstance.getUniqueId());
 
         }
 
-        Either<ToscaElement, StorageOperationStatus> updatedComponentInstanceRes = topologyTemplateOperation.getToscaElement(updatedContainer.getUniqueId());
+        Either<ToscaElement, StorageOperationStatus> updatedComponentInstanceRes = topologyTemplateOperation
+            .getToscaElement(updatedContainer.getUniqueId());
         if (updatedComponentInstanceRes.isRight()) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch updated topology template {} with new component instance {}. ", updatedContainer.getName(), componentInstance.getName());
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch updated topology template {} with new component instance {}. ",
+                updatedContainer.getName(), componentInstance.getName());
             Either.right(updatedComponentInstanceRes.right().value());
         }
         return Either.left(new ImmutablePair<>((TopologyTemplate) updatedComponentInstanceRes.left().value(), componentInstanceData.getUniqueId()));
     }
 
-    private Either<String, StorageOperationStatus> buildValidateInstanceName(TopologyTemplate container, ToscaElement originToscaElement, ComponentInstance componentInstance, String instanceNumberSuffix) {
+    private Either<String, StorageOperationStatus> buildValidateInstanceName(TopologyTemplate container, ToscaElement originToscaElement,
+                                                                             ComponentInstance componentInstance, String instanceNumberSuffix) {
 
         Either<String, StorageOperationStatus> result = null;
         String instanceName = componentInstance.getName();
-        if (StringUtils.isEmpty(instanceName) || instanceName.equalsIgnoreCase(originToscaElement.getName()) || componentInstance.getOriginType() == OriginTypeEnum.ServiceProxy || componentInstance.getOriginType() == OriginTypeEnum.ServiceSubstitution) {
+        if (StringUtils.isEmpty(instanceName) || instanceName.equalsIgnoreCase(originToscaElement.getName())
+            || componentInstance.getOriginType() == OriginTypeEnum.ServiceProxy
+            || componentInstance.getOriginType() == OriginTypeEnum.ServiceSubstitution) {
             instanceName = buildComponentInstanceName(instanceNumberSuffix, instanceName);
         } else if (!isUniqueInstanceName(container, componentInstance.getName())) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to create component instance with name {} on component container {}. The instance with the same name already exists. ", componentInstance.getName(), container.getName());
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
+                "Failed to create component instance with name {} on component container {}. The instance with the same name already exists. ",
+                componentInstance.getName(), container.getName());
             result = Either.right(StorageOperationStatus.ENTITY_ALREADY_EXISTS);
         }
         if (result == null) {
@@ -312,27 +357,28 @@ public class NodeTemplateOperation extends BaseOperation {
         return result;
     }
 
-    private Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addServiceInstancePropertiesToProxyServiceInstance(TopologyTemplate updatedContainer, ComponentInstance componentInstance) {
+    private Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addServiceInstancePropertiesToProxyServiceInstance(
+        TopologyTemplate updatedContainer, ComponentInstance componentInstance) {
 
         List<PropertyDefinition> propertiesList = componentInstance.getProperties();
 
         if (propertiesList != null && !propertiesList.isEmpty()) {
             Map<String, PropertyDataDefinition> propertiesMap = propertiesList.stream().map(PropertyDataDefinition::new)
-                                                                              .collect(Collectors.toMap(
-                                                                                      PropertyDataDefinition::getName, i -> i));
+                .collect(Collectors.toMap(
+                    PropertyDataDefinition::getName, i -> i));
             MapPropertiesDataDefinition instProperties = new MapPropertiesDataDefinition(propertiesMap);
             Map<String, MapPropertiesDataDefinition> instPropertiesMap = new HashMap<>();
             instPropertiesMap.put(componentInstance.getUniqueId(), instProperties);
             updatedContainer.setInstProperties(instPropertiesMap);
             Either<GraphVertex, JanusGraphOperationStatus> getToscaElementRes = janusGraphDao
                 .getVertexById(updatedContainer.getUniqueId(), JsonParseFlagEnum.NoParse);
-           if(getToscaElementRes.isLeft()){
-               deleteToscaDataDeepElementsBlockToToscaElement(getToscaElementRes.left().value(),  EdgeLabelEnum.INST_PROPERTIES,
-                       VertexTypeEnum.INST_PROPERTIES,  componentInstance.getUniqueId());
-           }
-            StorageOperationStatus status = addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(),
-                    EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES, instProperties,
+            if (getToscaElementRes.isLeft()) {
+                deleteToscaDataDeepElementsBlockToToscaElement(getToscaElementRes.left().value(), EdgeLabelEnum.INST_PROPERTIES,
                     componentInstance.getUniqueId());
+            }
+            StorageOperationStatus status = addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(),
+                EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES, instProperties,
+                componentInstance.getUniqueId());
             if (status != StorageOperationStatus.OK) {
                 return Either.right(status);
             }
@@ -342,23 +388,24 @@ public class NodeTemplateOperation extends BaseOperation {
         return Either.left(new ImmutablePair<>(updatedContainer, componentInstance.getUniqueId()));
     }
 
-    private Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addServiceInstanceInputsToProxyServiceInstance(TopologyTemplate updatedContainer, ComponentInstance componentInstance) {
+    private Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addServiceInstanceInputsToProxyServiceInstance(
+        TopologyTemplate updatedContainer, ComponentInstance componentInstance) {
 
         List<InputDefinition> inputsList = componentInstance.getInputs();
 
         if (CollectionUtils.isNotEmpty(inputsList)) {
             Map<String, PropertyDataDefinition> inputsMap = inputsList.stream().map(
-                    PropertyDataDefinition::new).collect(Collectors.toMap(PropertyDataDefinition::getName, i -> i));
+                PropertyDataDefinition::new).collect(Collectors.toMap(PropertyDataDefinition::getName, i -> i));
             MapPropertiesDataDefinition instInputs = new MapPropertiesDataDefinition(inputsMap);
             Map<String, MapPropertiesDataDefinition> instInputsMap = new HashMap<>();
             instInputsMap.put(componentInstance.getUniqueId(), instInputs);
             updatedContainer.setInstInputs(instInputsMap);
 
             StorageOperationStatus status =
-                    addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(),
-                            EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS, instInputs,
-                            componentInstance.getUniqueId());
-            if(status != StorageOperationStatus.OK) {
+                addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(),
+                    EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS, instInputs,
+                    componentInstance.getUniqueId());
+            if (status != StorageOperationStatus.OK) {
                 return Either.right(status);
             }
         }
@@ -366,11 +413,13 @@ public class NodeTemplateOperation extends BaseOperation {
         return Either.left(new ImmutablePair<>(updatedContainer, componentInstance.getUniqueId()));
     }
 
-    private Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addComponentInstanceInterfacesToTopologyTemplate(TopologyTemplate updatedContainer, ComponentInstance componentInstance) {
+    private Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addComponentInstanceInterfacesToTopologyTemplate(
+        TopologyTemplate updatedContainer, ComponentInstance componentInstance) {
         Map<String, Object> interfaces = componentInstance.getInterfaces();
 
-        if(MapUtils.isNotEmpty(interfaces)){
-            Map<String, InterfaceDataDefinition> interfacesMap = interfaces.entrySet().stream().collect(Collectors.toMap(e -> ((InterfaceDataDefinition) e.getValue()).getUniqueId(), e -> (InterfaceDataDefinition) e.getValue()));
+        if (MapUtils.isNotEmpty(interfaces)) {
+            Map<String, InterfaceDataDefinition> interfacesMap = interfaces.entrySet().stream()
+                .collect(Collectors.toMap(e -> ((InterfaceDataDefinition) e.getValue()).getUniqueId(), e -> (InterfaceDataDefinition) e.getValue()));
             MapInterfaceDataDefinition instInterfaces = new MapInterfaceDataDefinition(interfacesMap);
 
             Map<String, MapInterfaceDataDefinition> instInterfacesMap = new HashMap<>();
@@ -378,11 +427,11 @@ public class NodeTemplateOperation extends BaseOperation {
             updatedContainer.setComponentInstInterfaces(instInterfacesMap);
 
             StorageOperationStatus status =
-                    addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(),
-                            EdgeLabelEnum.INST_INTERFACES, VertexTypeEnum.INST_INTERFACES, instInterfaces,
-                            componentInstance.getUniqueId());
+                addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(),
+                    EdgeLabelEnum.INST_INTERFACES, VertexTypeEnum.INST_INTERFACES, instInterfaces,
+                    componentInstance.getUniqueId());
 
-            if(status != StorageOperationStatus.OK) {
+            if (status != StorageOperationStatus.OK) {
                 return Either.right(status);
             }
         }
@@ -391,26 +440,28 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     public Either<TopologyTemplate, StorageOperationStatus> addComponentInstanceToTopologyTemplate(
-            TopologyTemplate container, ToscaElement originToscaElement,
-            ComponentInstanceDataDefinition componentInstance, GraphVertex metadataVertex, boolean allowDeleted,
-            User user) {
+        TopologyTemplate container, ToscaElement originToscaElement,
+        ComponentInstanceDataDefinition componentInstance, GraphVertex metadataVertex, boolean allowDeleted) {
 
         Either<TopologyTemplate, StorageOperationStatus> result = null;
         Either<ToscaElement, StorageOperationStatus> updateContainerComponentRes = null;
         String containerComponentId = container.getUniqueId();
-        CommonUtility.addRecordToLog(log, LogLevelEnum.TRACE, "Going to create component instance {} in component {}", componentInstance, containerComponentId);
+        CommonUtility.addRecordToLog(log, LogLevelEnum.TRACE, "Going to create component instance {} in component {}", componentInstance,
+            containerComponentId);
         String instOriginComponentId = componentInstance.getComponentUid();
         Either<GraphVertex, JanusGraphOperationStatus> updateElement = null;
 
         Boolean isDeleted = (Boolean) originToscaElement.getMetadataValue(JsonPresentationFields.IS_DELETED);
 
         if (!allowDeleted && (isDeleted != null) && isDeleted) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Component {} is already deleted. Cannot add component instance", instOriginComponentId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Component {} is already deleted. Cannot add component instance", instOriginComponentId);
             result = Either.right(StorageOperationStatus.INVALID_ID);
         }
         Boolean isArchived = originToscaElement.isArchived();
         if (isArchived != null && isArchived) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to create instance {}. Origin {} component is archived . ", componentInstance.getName(), originToscaElement.getName());
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to create instance {}. Origin {} component is archived . ",
+                componentInstance.getName(), originToscaElement.getName());
             result = Either.right(StorageOperationStatus.COMPONENT_IS_ARCHIVED);
         }
 
@@ -420,12 +471,15 @@ public class NodeTemplateOperation extends BaseOperation {
             topologyTemplateOperation.fillToscaElementVertexData(metadataVertex, container, JsonParseFlagEnum.ParseAll);
             updateElement = janusGraphDao.updateVertex(metadataVertex);
             if (updateElement.isRight()) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE, container.getName(), componentInstance.getName());
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE, container.getName(),
+                        componentInstance.getName());
                 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(updateElement.right().value()));
             }
         }
         if (result == null) {
-            Either<GraphVertex, StorageOperationStatus> addToscaDataRes = addComponentInstanceToscaDataToContainerComponent(originToscaElement, componentInstance, updateElement.left().value());
+            Either<GraphVertex, StorageOperationStatus> addToscaDataRes = addComponentInstanceToscaDataToContainerComponent(originToscaElement,
+                componentInstance, updateElement.left().value());
             if (addToscaDataRes.isRight()) {
                 result = Either.right(addToscaDataRes.right().value());
             }
@@ -438,7 +492,8 @@ public class NodeTemplateOperation extends BaseOperation {
         if (result == null) {
             updateContainerComponentRes = topologyTemplateOperation.getToscaElement(containerComponentId);
             if (updateContainerComponentRes.isRight()) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch updated topology template {} with new component instance {}. ", container.getName(), componentInstance.getName());
+                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch updated topology template {} with new component instance {}. ",
+                    container.getName(), componentInstance.getName());
                 result = Either.right(updateContainerComponentRes.right().value());
             }
         }
@@ -448,13 +503,16 @@ public class NodeTemplateOperation extends BaseOperation {
         return result;
     }
 
-    public Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> updateComponentInstanceMetadataOfTopologyTemplate(TopologyTemplate container, ToscaElement originToscaElement, ComponentInstance componentInstance) {
+    public Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> updateComponentInstanceMetadataOfTopologyTemplate(
+        TopologyTemplate container, ToscaElement originToscaElement, ComponentInstance componentInstance) {
 
         Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> result = null;
         Either<ToscaElement, StorageOperationStatus> updateContainerComponentRes = null;
 
         String containerComponentId = container.getUniqueId();
-        CommonUtility.addRecordToLog(log, LogLevelEnum.TRACE, "Going to update component instance metadata {} of container component {}", componentInstance, containerComponentId);
+        CommonUtility
+            .addRecordToLog(log, LogLevelEnum.TRACE, "Going to update component instance metadata {} of container component {}", componentInstance,
+                containerComponentId);
         ComponentInstanceDataDefinition componentInstanceData = null;
 
         Either<GraphVertex, JanusGraphOperationStatus> metadataVertex = janusGraphDao
@@ -467,37 +525,45 @@ public class NodeTemplateOperation extends BaseOperation {
             result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
         }
         if (result == null) {
-            componentInstanceData = buildComponentInstanceDataDefinition(componentInstance, container.getUniqueId(), componentInstance.getName(), false, originToscaElement);
+            componentInstanceData = buildComponentInstanceDataDefinition(componentInstance, container.getUniqueId(), componentInstance.getName(),
+                false, originToscaElement);
             container.addComponentInstance(componentInstanceData);
             metadataVertex.left().value().setJsonMetadataField(JsonPresentationFields.LAST_UPDATE_DATE, System.currentTimeMillis());
             topologyTemplateOperation.fillToscaElementVertexData(metadataVertex.left().value(), container, JsonParseFlagEnum.ParseAll);
             Either<GraphVertex, JanusGraphOperationStatus> updateElement = janusGraphDao
                 .updateVertex(metadataVertex.left().value());
             if (updateElement.isRight()) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE, container.getName(), componentInstance.getName());
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE, container.getName(),
+                        componentInstance.getName());
                 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(updateElement.right().value()));
             }
         }
         if (result == null) {
             updateContainerComponentRes = topologyTemplateOperation.getToscaElement(containerComponentId);
             if (updateContainerComponentRes.isRight()) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch updated topology template {} with updated component instance {}. ", container.getName(), componentInstance.getName());
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch updated topology template {} with updated component instance {}. ",
+                        container.getName(), componentInstance.getName());
                 result = Either.right(updateContainerComponentRes.right().value());
             }
         }
         if (result == null) {
-            result = Either.left(new ImmutablePair<>((TopologyTemplate) updateContainerComponentRes.left().value(), componentInstanceData.getUniqueId()));
+            result = Either
+                .left(new ImmutablePair<>((TopologyTemplate) updateContainerComponentRes.left().value(), componentInstanceData.getUniqueId()));
         }
         return result;
     }
 
-    public Either<TopologyTemplate, StorageOperationStatus> updateComponentInstanceMetadataOfTopologyTemplate(TopologyTemplate container, ComponentParametersView filter) {
+    public Either<TopologyTemplate, StorageOperationStatus> updateComponentInstanceMetadataOfTopologyTemplate(TopologyTemplate container,
+                                                                                                              ComponentParametersView filter) {
 
         Either<TopologyTemplate, StorageOperationStatus> result = null;
         Either<ToscaElement, StorageOperationStatus> updateContainerComponentRes = null;
 
         String containerComponentId = container.getUniqueId();
-        CommonUtility.addRecordToLog(log, LogLevelEnum.TRACE, "Going to update component instance metadata  of container component {}", containerComponentId);
+        CommonUtility
+            .addRecordToLog(log, LogLevelEnum.TRACE, "Going to update component instance metadata  of container component {}", containerComponentId);
 
         Either<GraphVertex, JanusGraphOperationStatus> metadataVertex = janusGraphDao
             .getVertexById(container.getUniqueId(), JsonParseFlagEnum.ParseMetadata);
@@ -531,13 +597,16 @@ public class NodeTemplateOperation extends BaseOperation {
         return result;
     }
 
-    public Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> deleteComponentInstanceFromTopologyTemplate(TopologyTemplate container, String componentInstanceId) {
+    public Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> deleteComponentInstanceFromTopologyTemplate(
+        TopologyTemplate container, String componentInstanceId) {
 
         Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> result = null;
         Either<ToscaElement, StorageOperationStatus> updateContainerComponentRes = null;
 
         String containerComponentId = container.getUniqueId();
-        CommonUtility.addRecordToLog(log, LogLevelEnum.TRACE, "Going to update component instance metadata {} of container component {}", componentInstanceId, containerComponentId);
+        CommonUtility
+            .addRecordToLog(log, LogLevelEnum.TRACE, "Going to update component instance metadata {} of container component {}", componentInstanceId,
+                containerComponentId);
 
         Either<GraphVertex, JanusGraphOperationStatus> metadataVertex = janusGraphDao
             .getVertexById(container.getUniqueId(), JsonParseFlagEnum.ParseMetadata);
@@ -555,7 +624,8 @@ public class NodeTemplateOperation extends BaseOperation {
             containerV = metadataVertex.left().value();
             StorageOperationStatus status = removeRelationsOfInstance(container, componentInstanceId, containerV);
             if (status != StorageOperationStatus.OK) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to delete relation for component instance {} in container. error {}", componentInstanceId, container.getUniqueId(), status);
+                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to delete relation for component instance {} in container. error {}",
+                    componentInstanceId, container.getUniqueId(), status);
                 result = Either.right(status);
             }
 
@@ -563,14 +633,18 @@ public class NodeTemplateOperation extends BaseOperation {
             topologyTemplateOperation.fillToscaElementVertexData(containerV, container, JsonParseFlagEnum.ParseAll);
             Either<GraphVertex, JanusGraphOperationStatus> updateElement = janusGraphDao.updateVertex(containerV);
             if (updateElement.isRight()) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE, container.getName(), componentInstanceId);
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE, container.getName(),
+                        componentInstanceId);
                 result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(updateElement.right().value()));
             }
         }
         if (result == null) {
             StorageOperationStatus status = deleteComponentInstanceToscaDataFromContainerComponent(containerV, componentInstanceId);
             if (status != StorageOperationStatus.OK) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to delete data  for instance {} in container {}. error {] ", componentInstanceId, container.getUniqueId(), status);
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to delete data  for instance {} in container {}. error {] ", componentInstanceId,
+                        container.getUniqueId(), status);
                 return Either.right(status);
             }
             ComponentInstance componentInstance = new ComponentInstance(removedComponentInstance);
@@ -580,7 +654,9 @@ public class NodeTemplateOperation extends BaseOperation {
         if (result == null) {
             updateContainerComponentRes = topologyTemplateOperation.getToscaElement(containerComponentId);
             if (updateContainerComponentRes.isRight()) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch updated topology template {} after deleting the component instance {}. ", container.getName(), componentInstanceId);
+                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
+                    "Failed to fetch updated topology template {} after deleting the component instance {}. ", container.getName(),
+                    componentInstanceId);
                 result = Either.right(updateContainerComponentRes.right().value());
             }
         }
@@ -595,27 +671,35 @@ public class NodeTemplateOperation extends BaseOperation {
         if (composition != null) {
             Map<String, RelationshipInstDataDefinition> relations = composition.getRelations();
             if (MapUtils.isNotEmpty(relations)) {
-                Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult = fetchContainerCalculatedCapability(containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
+                Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult =
+                    fetchContainerCalculatedCapability(
+                        containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
                 if (capResult.isRight()) {
                     return capResult.right().value();
 
                 }
                 Map<String, MapListCapabilityDataDefinition> calculatedCapabilty = capResult.left().value().getRight();
 
-                Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult = fetchContainerCalculatedCapability(containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
+                Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult =
+                    fetchContainerCalculatedCapability(
+                        containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
                 if (capFullResult.isRight()) {
                     return capFullResult.right().value();
 
                 }
                 Map<String, MapListCapabilityDataDefinition> fullFilledCapabilty = capFullResult.left().value().getRight();
 
-                Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult = fetchContainerCalculatedRequirement(containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
+                Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult =
+                    fetchContainerCalculatedRequirement(
+                        containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
                 if (reqResult.isRight()) {
                     return reqResult.right().value();
                 }
                 Map<String, MapListRequirementDataDefinition> calculatedRequirement = reqResult.left().value().getRight();
 
-                Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult = fetchContainerCalculatedRequirement(containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
+                Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult =
+                    fetchContainerCalculatedRequirement(
+                        containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
                 if (reqResult.isRight()) {
                     return reqResult.right().value();
                 }
@@ -628,12 +712,16 @@ public class NodeTemplateOperation extends BaseOperation {
                     if (relationToDelete.getFromId().equals(ciToRemove) || relationToDelete.getToId().equals(ciToRemove)) {
                         iterator.remove();
                         if (relationToDelete.getFromId().equals(ciToRemove)) {
-                            updateCalculatedRequirementsAfterDeleteRelation(calculatedRequirement, fullfilledRequirement, ciToRemove, relationToDelete, null);
-                            updateCalculatedCapabiltyAfterDeleteRelation(calculatedCapabilty, fullFilledCapabilty, relationToDelete.getToId(), relationToDelete, null);
+                            updateCalculatedRequirementsAfterDeleteRelation(calculatedRequirement, fullfilledRequirement, ciToRemove,
+                                relationToDelete, null);
+                            updateCalculatedCapabiltyAfterDeleteRelation(calculatedCapabilty, fullFilledCapabilty, relationToDelete.getToId(),
+                                relationToDelete, null);
                         }
                         if (relationToDelete.getToId().equals(ciToRemove)) {
-                            updateCalculatedRequirementsAfterDeleteRelation(calculatedRequirement, fullfilledRequirement, relationToDelete.getFromId(), relationToDelete, null);
-                            updateCalculatedCapabiltyAfterDeleteRelation(calculatedCapabilty, fullFilledCapabilty, ciToRemove, relationToDelete, null);
+                            updateCalculatedRequirementsAfterDeleteRelation(calculatedRequirement, fullfilledRequirement,
+                                relationToDelete.getFromId(), relationToDelete, null);
+                            updateCalculatedCapabiltyAfterDeleteRelation(calculatedCapabilty, fullFilledCapabilty, ciToRemove, relationToDelete,
+                                null);
                         }
                     }
                 }
@@ -644,85 +732,119 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     private StorageOperationStatus deleteComponentInstanceToscaDataFromContainerComponent(GraphVertex containerV, String componentInstanceId) {
-        StorageOperationStatus status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES, VertexTypeEnum.CALCULATED_CAPABILITIES, componentInstanceId);
+        StorageOperationStatus status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated capabilty  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated capabilty  for instance {} in container {}. error {] ",
+                componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, VertexTypeEnum.CALCULATED_CAP_PROPERTIES, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated capabilty properties for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
+                "Failed to remove calculated capabilty properties for instance {} in container {}. error {] ", componentInstanceId,
+                containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS, VertexTypeEnum.CALCULATED_REQUIREMENTS, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated requirement  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated requirement  for instance {} in container {}. error {] ",
+                    componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES, VertexTypeEnum.FULLFILLED_CAPABILITIES, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove fullfilled capabilities  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove fullfilled capabilities  for instance {} in container {}. error {] ",
+                    componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS, VertexTypeEnum.FULLFILLED_REQUIREMENTS, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove fullfilled requirement  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove fullfilled requirement  for instance {} in container {}. error {] ",
+                    componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_ATTRIBUTES, VertexTypeEnum.INST_ATTRIBUTES, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_ATTRIBUTES,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove attributes for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove attributes for instance {} in container {}. error {] ",
+                componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_PROPERTIES,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove properties for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove properties for instance {} in container {}. error {] ",
+                componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_INPUTS,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance inputs  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance inputs  for instance {} in container {}. error {] ",
+                componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_GROUPS, VertexTypeEnum.INST_GROUPS, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_GROUPS,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove fullfilled requirement  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove fullfilled requirement  for instance {} in container {}. error {] ",
+                    componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS, VertexTypeEnum.INST_DEPLOYMENT_ARTIFACTS, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance deployment artifacts  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance deployment artifacts  for instance {} in container {}. error {] ",
+                    componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INSTANCE_ARTIFACTS, VertexTypeEnum.INSTANCE_ARTIFACTS, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INSTANCE_ARTIFACTS,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance artifacts  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance artifacts  for instance {} in container {}. error {] ",
+                componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.EXTERNAL_REFS, VertexTypeEnum.EXTERNAL_REF, componentInstanceId);
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.EXTERNAL_REFS,
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance external refs  for instance {} in container {}. error {] ", componentInstanceId, containerV.getUniqueId(), status);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance external refs  for instance {} in container {}. error {] ",
+                    componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
         status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_INTERFACES,
-                VertexTypeEnum.INST_INTERFACES, componentInstanceId);
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
-                    "Failed to remove service instance interfaces  for instance {} in container {}. " +
-                            "error {] ", componentInstanceId, containerV.getUniqueId(), status);
+                "Failed to remove service instance interfaces  for instance {} in container {}. " +
+                    "error {] ", componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
         return StorageOperationStatus.OK;
     }
 
-    protected Either<GraphVertex, StorageOperationStatus> addComponentInstanceToscaDataToContainerComponent(ToscaElement originToscaElement, ComponentInstanceDataDefinition componentInstance, GraphVertex updatedContainerVertex) {
+    protected Either<GraphVertex, StorageOperationStatus> addComponentInstanceToscaDataToContainerComponent(ToscaElement originToscaElement,
+                                                                                                            ComponentInstanceDataDefinition componentInstance,
+                                                                                                            GraphVertex updatedContainerVertex) {
 
         Either<GraphVertex, StorageOperationStatus> result;
         StorageOperationStatus status;
         if (originToscaElement.getToscaType() == ToscaElementTypeEnum.NODE_TYPE) {
             status = addComponentInstanceToscaDataToNodeTypeContainer((NodeType) originToscaElement, componentInstance, updatedContainerVertex);
         } else {
-            status = addComponentInstanceToscaDataToTopologyTemplateContainer((TopologyTemplate) originToscaElement, componentInstance, updatedContainerVertex);
+            status = addComponentInstanceToscaDataToTopologyTemplateContainer((TopologyTemplate) originToscaElement, componentInstance,
+                updatedContainerVertex);
         }
         if (status == StorageOperationStatus.OK) {
             result = Either.left(updatedContainerVertex);
@@ -732,7 +854,9 @@ public class NodeTemplateOperation extends BaseOperation {
         return result;
     }
 
-    private StorageOperationStatus addComponentInstanceToscaDataToTopologyTemplateContainer(TopologyTemplate originTopologyTemplate, ComponentInstanceDataDefinition componentInstance, GraphVertex updatedContainerVertex) {
+    private StorageOperationStatus addComponentInstanceToscaDataToTopologyTemplateContainer(TopologyTemplate originTopologyTemplate,
+                                                                                            ComponentInstanceDataDefinition componentInstance,
+                                                                                            GraphVertex updatedContainerVertex) {
 
         StorageOperationStatus status;
 
@@ -746,7 +870,8 @@ public class NodeTemplateOperation extends BaseOperation {
         MapPropertiesDataDefinition instInputs = new MapPropertiesDataDefinition(originTopologyTemplate.getInputs());
         MapPropertiesDataDefinition instInputsAsProperties = turnInputsIntoProperties(instInputs);
 
-        status = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS, instInputsAsProperties, componentInstance.getUniqueId());
+        status = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS,
+            instInputsAsProperties, componentInstance.getUniqueId());
         if (status != StorageOperationStatus.OK) {
             return status;
         }
@@ -766,13 +891,13 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     private MapListCapabilityDataDefinition prepareCalculatedCapabiltyForTopologyTemplate(
-            Map<String, ListCapabilityDataDefinition> capabilities,
-            ComponentInstanceDataDefinition componentInstance,
-            MapListCapabilityDataDefinition calculatedCap) {
-            MapListCapabilityDataDefinition allCalculatedCap =
-                    new MapListCapabilityDataDefinition(calculatedCap);
-            populateCapability(capabilities, componentInstance, allCalculatedCap);
-            return allCalculatedCap;
+        Map<String, ListCapabilityDataDefinition> capabilities,
+        ComponentInstanceDataDefinition componentInstance,
+        MapListCapabilityDataDefinition calculatedCap) {
+        MapListCapabilityDataDefinition allCalculatedCap =
+            new MapListCapabilityDataDefinition(calculatedCap);
+        populateCapability(capabilities, componentInstance, allCalculatedCap);
+        return allCalculatedCap;
     }
 
     private void populateCapability(Map<String, ListCapabilityDataDefinition> capabilities,
@@ -780,15 +905,15 @@ public class NodeTemplateOperation extends BaseOperation {
                                     MapListCapabilityDataDefinition allCalculatedCap) {
         capabilities.forEach((key, value) -> {
             List<CapabilityDataDefinition> listCapabilities = value.getListToscaDataDefinition()
-                    .stream().map(CapabilityDataDefinition::new).collect(Collectors.toList());
+                .stream().map(CapabilityDataDefinition::new).collect(Collectors.toList());
             listCapabilities.forEach(cap -> {
                 cap.setSource(componentInstance.getComponentUid());
                 cap.addToPath(componentInstance.getUniqueId());
                 log.debug("enter populateCapability,get Capability OwnerId:{},get componentInstance UniqueId:{}",
-                        cap.getOwnerId(), componentInstance.getUniqueId());
+                    cap.getOwnerId(), componentInstance.getUniqueId());
                 cap.setOwnerId(componentInstance.getUniqueId());
                 log.debug("enter populateCapability,get Capability OwnerName:{},get componentInstance Name:{}",
-                        cap.getOwnerName(), componentInstance.getName());
+                    cap.getOwnerName(), componentInstance.getName());
                 if (cap.getOwnerName() == null || cap.getOwnerName().isEmpty()) {
                     cap.setOwnerName(componentInstance.getName());
                 }
@@ -799,29 +924,28 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     private MapListRequirementDataDefinition prepareCalculatedRequirementForTopologyTemplate(
-            Map<String, ListRequirementDataDefinition> requirements,
-            ComponentInstanceDataDefinition componentInstance,
-            MapListRequirementDataDefinition calculatedReqs) {
-            MapListRequirementDataDefinition allCalculatedReq =
-                    new MapListRequirementDataDefinition(calculatedReqs);
+        Map<String, ListRequirementDataDefinition> requirements,
+        ComponentInstanceDataDefinition componentInstance,
+        MapListRequirementDataDefinition calculatedReqs) {
+        MapListRequirementDataDefinition allCalculatedReq =
+            new MapListRequirementDataDefinition(calculatedReqs);
 
-            populateRequirement(requirements, componentInstance, allCalculatedReq);
-            return allCalculatedReq;
+        populateRequirement(requirements, componentInstance, allCalculatedReq);
+        return allCalculatedReq;
     }
+
     private void populateRequirement(Map<String, ListRequirementDataDefinition> requirements,
                                      ComponentInstanceDataDefinition componentInstance,
                                      MapListRequirementDataDefinition allCalculatedReq) {
         requirements.forEach((key, value) -> {
             List<RequirementDataDefinition> listRequirements = value.getListToscaDataDefinition()
-                    .stream().map(RequirementDataDefinition::new).collect(Collectors.toList());
+                .stream().map(RequirementDataDefinition::new).collect(Collectors.toList());
             listRequirements.forEach(req -> {
                 req.setSource(componentInstance.getComponentUid());
                 req.addToPath(componentInstance.getUniqueId());
                 log.debug("enter populateRequirement,get init Requirements OwnerId:{},get componentInstance UniqueId:{}",
-                        req.getOwnerId(), componentInstance.getUniqueId());
-                if (req.getOwnerId() == null || req.getOwnerId().isEmpty()) {
-                    req.setOwnerId(componentInstance.getUniqueId());
-                }
+                    req.getOwnerId(), componentInstance.getUniqueId());
+                req.setOwnerId(componentInstance.getUniqueId());
                 log.debug("enter populateRequirement,get init Requirements OwnerName:{}", req.getOwnerName());
                 if (req.getOwnerName() == null || req.getOwnerName().isEmpty()) {
                     req.setOwnerName(componentInstance.getName());
@@ -832,58 +956,60 @@ public class NodeTemplateOperation extends BaseOperation {
         });
     }
 
-
-
-    private StorageOperationStatus addCalculatedCapReqFromTopologyTemplate(TopologyTemplate originTopologyTemplate, ComponentInstanceDataDefinition componentInstance, GraphVertex updatedContainerVertex) {
+    private StorageOperationStatus addCalculatedCapReqFromTopologyTemplate(TopologyTemplate originTopologyTemplate,
+                                                                           ComponentInstanceDataDefinition componentInstance,
+                                                                           GraphVertex updatedContainerVertex) {
         Map<String, MapListCapabilityDataDefinition> calculatedCapabilities = originTopologyTemplate.getCalculatedCapabilities();
 
         MapListCapabilityDataDefinition allCalculatedCap = new MapListCapabilityDataDefinition();
         if (calculatedCapabilities != null) {
             calculatedCapabilities.forEach((key1, value1) -> {
-                Map<String, ListCapabilityDataDefinition> mapByType = value1.getMapToscaDataDefinition();
-                mapByType.forEach((key, value) -> value.getListToscaDataDefinition().forEach(cap -> {
-                    cap.addToPath(componentInstance.getUniqueId());
-                    allCalculatedCap.add(key, cap);
-                }));
+                final Map<String, ListCapabilityDataDefinition> mapByType = value1.getMapToscaDataDefinition();
+                mapByType.forEach((key, value) -> value.getListToscaDataDefinition().stream()
+                    .filter(CapabilityDataDefinition::isExternal)
+                    .forEach(cap -> {
+                        cap.addToPath(componentInstance.getUniqueId());
+                        allCalculatedCap.add(key, cap);
+                    }));
             });
         }
         MapListCapabilityDataDefinition allCaps;
         Map<String, ListCapabilityDataDefinition> capabilities = originTopologyTemplate.getCapabilities();
         if (MapUtils.isNotEmpty(capabilities)) {
             allCaps = prepareCalculatedCapabiltyForTopologyTemplate(capabilities, componentInstance,
-                    allCalculatedCap);
+                allCalculatedCap);
         } else {
             allCaps = new MapListCapabilityDataDefinition(allCalculatedCap);
         }
-        if(!allCaps.isEmpty()) {
+        if (!allCaps.isEmpty()) {
             StorageOperationStatus calculatedCapabilitiesResult =
-                    addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex,
-                            EdgeLabelEnum.CALCULATED_CAPABILITIES, VertexTypeEnum.CALCULATED_CAPABILITIES,
-                            allCaps, componentInstance.getUniqueId());
+                addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex,
+                    EdgeLabelEnum.CALCULATED_CAPABILITIES, VertexTypeEnum.CALCULATED_CAPABILITIES,
+                    allCaps, componentInstance.getUniqueId());
             if (calculatedCapabilitiesResult != StorageOperationStatus.OK) {
                 return calculatedCapabilitiesResult;
             }
             MapListCapabilityDataDefinition fullCalculatedCap = new MapListCapabilityDataDefinition();
             calculatedCapabilitiesResult = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex,
-                    EdgeLabelEnum.FULLFILLED_CAPABILITIES, VertexTypeEnum.FULLFILLED_CAPABILITIES,
-                    fullCalculatedCap, componentInstance.getUniqueId());
+                EdgeLabelEnum.FULLFILLED_CAPABILITIES, VertexTypeEnum.FULLFILLED_CAPABILITIES,
+                fullCalculatedCap, componentInstance.getUniqueId());
             if (calculatedCapabilitiesResult != StorageOperationStatus.OK) {
                 return calculatedCapabilitiesResult;
             }
         }
         Map<String, MapListRequirementDataDefinition> calculatedRequirements =
-                originTopologyTemplate.getCalculatedRequirements();
+            originTopologyTemplate.getCalculatedRequirements();
         MapListRequirementDataDefinition allCalculatedReq = new MapListRequirementDataDefinition();
         if (calculatedRequirements != null) {
             calculatedRequirements.forEach((key, value) -> {
                 Map<String, ListRequirementDataDefinition> mapByType =
-                        value.getMapToscaDataDefinition();
+                    value.getMapToscaDataDefinition();
                 mapByType.forEach((key1, value1) -> value1.getListToscaDataDefinition().stream()
-                        .filter(RequirementDataDefinition::isExternal).forEach(req -> {
-                    req.addToPath(componentInstance.getUniqueId());
-                    req.setExternal(false);
-                    allCalculatedReq.add(key1, req);
-                }));
+                    .filter(RequirementDataDefinition::isExternal).forEach(req -> {
+                        req.addToPath(componentInstance.getUniqueId());
+                        req.setExternal(false);
+                        allCalculatedReq.add(key1, req);
+                    }));
             });
 
         }
@@ -892,23 +1018,24 @@ public class NodeTemplateOperation extends BaseOperation {
         Map<String, ListRequirementDataDefinition> requirements = originTopologyTemplate.getRequirements();
         if (MapUtils.isNotEmpty(requirements)) {
             allReqs = prepareCalculatedRequirementForTopologyTemplate(requirements,
-                    componentInstance, allCalculatedReq);
-        } else
+                componentInstance, allCalculatedReq);
+        } else {
             allReqs = new MapListRequirementDataDefinition(allCalculatedReq);
+        }
 
-        if(!allReqs.isEmpty()) {
+        if (!allReqs.isEmpty()) {
             StorageOperationStatus calculatedRequirementResult =
-                    addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex,
-                            EdgeLabelEnum.CALCULATED_REQUIREMENTS, VertexTypeEnum.CALCULATED_REQUIREMENTS,
-                            allReqs, componentInstance.getUniqueId());
+                addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex,
+                    EdgeLabelEnum.CALCULATED_REQUIREMENTS, VertexTypeEnum.CALCULATED_REQUIREMENTS,
+                    allReqs, componentInstance.getUniqueId());
             if (calculatedRequirementResult != StorageOperationStatus.OK) {
                 return calculatedRequirementResult;
             }
             MapListRequirementDataDefinition fullCalculatedReq = new MapListRequirementDataDefinition();
             calculatedRequirementResult = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex,
-                    EdgeLabelEnum.FULLFILLED_REQUIREMENTS, VertexTypeEnum.FULLFILLED_REQUIREMENTS,
-                    fullCalculatedReq,
-                    componentInstance.getUniqueId());
+                EdgeLabelEnum.FULLFILLED_REQUIREMENTS, VertexTypeEnum.FULLFILLED_REQUIREMENTS,
+                fullCalculatedReq,
+                componentInstance.getUniqueId());
             if (calculatedRequirementResult != StorageOperationStatus.OK) {
                 return calculatedRequirementResult;
             }
@@ -925,35 +1052,123 @@ public class NodeTemplateOperation extends BaseOperation {
             }
         }
         Map<String, MapPropertiesDataDefinition> capabilitiesProperties =
-                originTopologyTemplate.getCapabilitiesProperties();
+            originTopologyTemplate.getCapabilitiesProperties();
         Map<String, MapPropertiesDataDefinition> updateKeyMapCapabilitiesProperties;
         if (MapUtils.isNotEmpty(capabilitiesProperties)) {
             updateKeyMapCapabilitiesProperties = capabilitiesProperties.entrySet().stream()
-                    .collect(Collectors.toMap(e -> createCapPropertyKey(e.getKey(),
-                            componentInstance.getUniqueId()), Entry::getValue));
-        }
-        else {
+                .collect(Collectors.toMap(e -> createCapPropertyKey(e.getKey(),
+                    componentInstance.getUniqueId()), Entry::getValue));
+        } else {
             updateKeyMapCapabilitiesProperties = new HashMap<>();
         }
         updateKeyMap.putAll(updateKeyMapCapabilitiesProperties);
         MapCapabilityProperty mapCapabilityProperty = new MapCapabilityProperty(updateKeyMap);
 
-        if(MapUtils.isNotEmpty(capabilitiesProperties) || MapUtils.isNotEmpty(calculatedCapabilitiesProperties )) {
+        if (MapUtils.isNotEmpty(capabilitiesProperties) || MapUtils.isNotEmpty(calculatedCapabilitiesProperties)) {
             StorageOperationStatus calculatedResult =
-                    addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex,
-                            EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
-                            VertexTypeEnum.CALCULATED_CAP_PROPERTIES, mapCapabilityProperty,
-                            componentInstance.getUniqueId());
+                addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex,
+                    EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
+                    VertexTypeEnum.CALCULATED_CAP_PROPERTIES, mapCapabilityProperty,
+                    componentInstance.getUniqueId());
             if (calculatedResult != StorageOperationStatus.OK) {
                 return calculatedResult;
             }
         }
         return StorageOperationStatus.OK;
     }
-    
-    public StorageOperationStatus updateComponentInstanceRequirement(String componentId, String componentInstanceUniqueId, RequirementDataDefinition requirementDataDefinition) {
+
+    public CapabilityDataDefinition updateComponentInstanceCapabilities(final String componentId, final String componentInstanceUniqueId,
+                                                                        final CapabilityDataDefinition capabilityDataDefinition) {
+
+        final GraphVertex containerVertex = findComponentVertex(componentId).orElse(null);
+        if (containerVertex == null) {
+            throw new OperationException(ActionStatus.COMPONENT_NOT_FOUND, componentId);
+        }
+
+        final Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>> capabilityVertexAndDataPair =
+            findCapabilityVertex(containerVertex).orElse(null);
+        if (capabilityVertexAndDataPair == null) {
+            throw new OperationException(ActionStatus.CAPABILITY_OF_INSTANCE_NOT_FOUND_ON_CONTAINER, capabilityDataDefinition.getName(),
+                capabilityDataDefinition.getOwnerName(), componentId);
+        }
+        final GraphVertex capabilitiesVertex = capabilityVertexAndDataPair.getLeft();
+        final Map<String, MapListCapabilityDataDefinition> capabilityDataMap = capabilityVertexAndDataPair.getRight();
+
+        final CapabilityDataDefinition actualCapabilityDataDefinition =
+            findCapability(capabilityDataMap, componentInstanceUniqueId, capabilityDataDefinition.getType(), capabilityDataDefinition.getUniqueId())
+                .orElse(null);
+        if (actualCapabilityDataDefinition == null) {
+            throw new OperationException(ActionStatus.CAPABILITY_OF_INSTANCE_NOT_FOUND_ON_CONTAINER, capabilityDataDefinition.getName(),
+                capabilityDataDefinition.getOwnerName(), componentId);
+        }
+        bindCapabilityDefinition(capabilityDataDefinition, actualCapabilityDataDefinition);
+
+        var storageOperationStatus = updateCapabilityVertex(containerVertex, capabilitiesVertex);
+        if (storageOperationStatus != StorageOperationStatus.OK) {
+            throw new OperationException(ActionStatus.COMPONENT_INSTANCE_CAPABILITY_UPDATE_ERROR, capabilityDataDefinition.getName());
+        }
+        return new CapabilityDataDefinition(actualCapabilityDataDefinition);
+    }
+
+    private void bindCapabilityDefinition(final CapabilityDataDefinition fromCapabilityDefinition,
+                                          final CapabilityDataDefinition capabilityDefinitionToUpdate) {
+        capabilityDefinitionToUpdate.setExternal(fromCapabilityDefinition.isExternal());
+        capabilityDefinitionToUpdate.setExternalName(fromCapabilityDefinition.getExternalName());
+    }
+
+    private Optional<GraphVertex> findComponentVertex(final String componentId) {
+        final Either<GraphVertex, JanusGraphOperationStatus> componentEither = janusGraphDao.getVertexById(componentId, JsonParseFlagEnum.ParseAll);
+        if (componentEither.isRight()) {
+            final JanusGraphOperationStatus error = componentEither.right().value();
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR, componentId, error);
+            if (error == JanusGraphOperationStatus.NOT_FOUND) {
+                return Optional.empty();
+            }
+            log.error(EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, NodeTemplateOperation.class.getName(), (ErrorLogOptionalData) null,
+                FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR, componentId, error);
+            throw new OperationException(ActionStatus.COMPONENT_FIND_ERROR, componentId);
+        }
+        return Optional.ofNullable(componentEither.left().value());
+    }
+
+    private Optional<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>> findCapabilityVertex(final GraphVertex containerVertex) {
+
+        final Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capabilitiesEither =
+            fetchContainerCalculatedCapability(containerVertex, EdgeLabelEnum.CALCULATED_CAPABILITIES);
+        if (capabilitiesEither.isRight()) {
+            final StorageOperationStatus error = capabilitiesEither.right().value();
+            if (error == StorageOperationStatus.NOT_FOUND) {
+                return Optional.empty();
+            }
+            log.error(EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, NodeTemplateOperation.class.getName(), (ErrorLogOptionalData) null,
+                FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR, containerVertex.getUniqueId(), error);
+            throw new OperationException(ActionStatus.COMPONENT_CAPABILITIES_FIND_ERROR, containerVertex.getUniqueId());
+        }
+        return Optional.ofNullable(capabilitiesEither.left().value());
+    }
+
+    private Optional<CapabilityDataDefinition> findCapability(final Map<String, MapListCapabilityDataDefinition> capabilityMap,
+                                                              final String componentInstanceUniqueId,
+                                                              final String capabilityType,
+                                                              final String capabilityUniqueId) {
+        var componentInstanceCapabilitiesMap = capabilityMap.get(componentInstanceUniqueId);
+        if (componentInstanceCapabilitiesMap == null || componentInstanceCapabilitiesMap.isEmpty()) {
+            return Optional.empty();
+        }
+        var listCapabilityDataDefinition = componentInstanceCapabilitiesMap.getMapToscaDataDefinition().get(capabilityType);
+        if (listCapabilityDataDefinition == null || listCapabilityDataDefinition.isEmpty()) {
+            return Optional.empty();
+        }
+
+        return listCapabilityDataDefinition.getListToscaDataDefinition().stream()
+            .filter(e -> e.getUniqueId().equals(capabilityUniqueId))
+            .findFirst();
+    }
+
+    public StorageOperationStatus updateComponentInstanceRequirement(String componentId, String componentInstanceUniqueId,
+                                                                     RequirementDataDefinition requirementDataDefinition) {
         Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao
-                .getVertexById(componentId, JsonParseFlagEnum.ParseAll);
+            .getVertexById(componentId, JsonParseFlagEnum.ParseAll);
         if (containerVEither.isRight()) {
             JanusGraphOperationStatus error = containerVEither.right().value();
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR, componentId, error);
@@ -963,8 +1178,10 @@ public class NodeTemplateOperation extends BaseOperation {
         return updateComponentInstanceRequirement(componentId, componentInstanceUniqueId, requirementDataDefinition, containerV);
     }
 
-    private StorageOperationStatus updateComponentInstanceRequirement(String componentId, String componentInstanceUniqueId, RequirementDataDefinition requirementDataDefinition, GraphVertex containerV) {
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> existingReqs = getCalculatedRequirements(componentId);
+    private StorageOperationStatus updateComponentInstanceRequirement(String componentId, String componentInstanceUniqueId,
+                                                                      RequirementDataDefinition requirementDataDefinition, GraphVertex containerV) {
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> existingReqs = getCalculatedRequirements(
+            componentId);
         if (existingReqs.isRight()) {
             return existingReqs.right().value();
         }
@@ -972,16 +1189,21 @@ public class NodeTemplateOperation extends BaseOperation {
         if (componentInstanceRequirementsMap == null) {
             return StorageOperationStatus.NOT_FOUND;
         }
-        ListRequirementDataDefinition listRequirementDataDefinition = componentInstanceRequirementsMap.getMapToscaDataDefinition().get(requirementDataDefinition.getCapability());
-            
+        ListRequirementDataDefinition listRequirementDataDefinition = componentInstanceRequirementsMap.getMapToscaDataDefinition()
+            .get(requirementDataDefinition.getCapability());
+
         listRequirementDataDefinition.getListToscaDataDefinition().stream()
-                .filter(e -> requirementDataDefinition.getOwnerId().equals(e.getOwnerId()) && requirementDataDefinition.getName().equals(e.getName()))
-                .forEach(r -> r.setExternal(requirementDataDefinition.isExternal()));
+            .filter(e -> requirementDataDefinition.getOwnerId().equals(e.getOwnerId()) && requirementDataDefinition.getName().equals(e.getName()))
+            .forEach(r -> {
+                r.setExternal(requirementDataDefinition.isExternal());
+                r.setExternalName(requirementDataDefinition.getExternalName());
+            });
 
         return updateCalculatedReqOnGraph(componentId, containerV, existingReqs);
     }
-    
-    private Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> getCalculatedRequirements(String componentId) {
+
+    private Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> getCalculatedRequirements(
+        String componentId) {
         Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> result = null;
         Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao
             .getVertexById(componentId, JsonParseFlagEnum.ParseAll);
@@ -996,46 +1218,73 @@ public class NodeTemplateOperation extends BaseOperation {
         }
         return result;
     }
-    
-    private StorageOperationStatus updateCalculatedReqOnGraph(String componentId, GraphVertex containerV, Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult
-            ) {
+
+    private StorageOperationStatus updateCalculatedReqOnGraph(String componentId, GraphVertex containerV,
+                                                              Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult
+    ) {
         containerV.setJsonMetadataField(JsonPresentationFields.LAST_UPDATE_DATE, System.currentTimeMillis());
         Either<GraphVertex, JanusGraphOperationStatus> updateElement = janusGraphDao.updateVertex(containerV);
         if (updateElement.isRight()) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update topology template {} with new relations error {}. ", componentId, updateElement.right().value());
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update topology template {} with new relations error {}. ", componentId,
+                updateElement.right().value());
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(updateElement.right().value());
         }
 
         CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Update calculated requirement for container {}", containerV.getUniqueId());
-        Either<GraphVertex, JanusGraphOperationStatus> status = updateOrCopyOnUpdate(reqResult.left().value().getLeft(), containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
+        Either<GraphVertex, JanusGraphOperationStatus> status = updateOrCopyOnUpdate(reqResult.left().value().getLeft(), containerV,
+            EdgeLabelEnum.CALCULATED_REQUIREMENTS);
         if (status.isRight()) {
             JanusGraphOperationStatus error = status.right().value();
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update calculated requiremnt for container {} error {}", containerV.getUniqueId(), error);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update calculated requiremnt for container {} error {}", containerV.getUniqueId(),
+                    error);
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error);
         }
         return StorageOperationStatus.OK;
     }
-    
+
+    private StorageOperationStatus updateCapabilityVertex(final GraphVertex containerVertex, final GraphVertex capabilitiesVertex) {
+        containerVertex.setJsonMetadataField(JsonPresentationFields.LAST_UPDATE_DATE, System.currentTimeMillis());
+        final Either<GraphVertex, JanusGraphOperationStatus> updateElement = janusGraphDao.updateVertex(containerVertex);
+        if (updateElement.isRight()) {
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update topology template '{}' with new capabilities. Error '{}'.",
+                containerVertex.getUniqueId(), updateElement.right().value());
+            return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(updateElement.right().value());
+        }
+
+        final Either<GraphVertex, JanusGraphOperationStatus> statusEither =
+            updateOrCopyOnUpdate(capabilitiesVertex, containerVertex, EdgeLabelEnum.CALCULATED_CAPABILITIES);
+        if (statusEither.isRight()) {
+            JanusGraphOperationStatus error = statusEither.right().value();
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
+                "Failed to update calculated capability for container {} error {}", containerVertex.getUniqueId(), error);
+            return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error);
+        }
+        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Updated calculated capability for container '{}'", containerVertex.getUniqueId());
+        return StorageOperationStatus.OK;
+    }
+
     private StorageOperationStatus addComponentInstanceToscaDataToNodeTypeContainer(NodeType originNodeType,
-            ComponentInstanceDataDefinition componentInstance, GraphVertex updatedContainerVertex) {
+                                                                                    ComponentInstanceDataDefinition componentInstance,
+                                                                                    GraphVertex updatedContainerVertex) {
 
         StorageOperationStatus status;
 
-        if(MapUtils.isNotEmpty(originNodeType.getProperties())){
+        if (MapUtils.isNotEmpty(originNodeType.getProperties())) {
             MapPropertiesDataDefinition instProperties =
-                    new MapPropertiesDataDefinition(originNodeType.getProperties());
+                new MapPropertiesDataDefinition(originNodeType.getProperties());
             status = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.INST_PROPERTIES,
-                    VertexTypeEnum.INST_PROPERTIES, instProperties, componentInstance.getUniqueId());
+                VertexTypeEnum.INST_PROPERTIES, instProperties, componentInstance.getUniqueId());
             if (status != StorageOperationStatus.OK) {
                 return status;
             }
         }
 
-        if(MapUtils.isNotEmpty(originNodeType.getAttributes())){
+        if (MapUtils.isNotEmpty(originNodeType.getAttributes())) {
             MapAttributesDataDefinition instAttributes =
-                    new MapAttributesDataDefinition(originNodeType.getAttributes());
+                new MapAttributesDataDefinition(originNodeType.getAttributes());
             status = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.INST_ATTRIBUTES,
-                    VertexTypeEnum.INST_ATTRIBUTES, instAttributes, componentInstance.getUniqueId());
+                VertexTypeEnum.INST_ATTRIBUTES, instAttributes, componentInstance.getUniqueId());
             if (status != StorageOperationStatus.OK) {
                 return status;
             }
@@ -1044,14 +1293,16 @@ public class NodeTemplateOperation extends BaseOperation {
         return addCalculatedCapReqFromNodeType(originNodeType, componentInstance, updatedContainerVertex);
     }
 
-    public MapArtifactDataDefinition prepareInstDeploymentArtifactPerInstance(Map<String, ArtifactDataDefinition> deploymentArtifacts, String componentInstanceId, User user, String envType) {
+    public MapArtifactDataDefinition prepareInstDeploymentArtifactPerInstance(Map<String, ArtifactDataDefinition> deploymentArtifacts,
+                                                                              String componentInstanceId, User user, String envType) {
         if (deploymentArtifacts != null && envType.equals(HEAT_VF_ENV_NAME)) {
             Map<String, ArtifactDataDefinition> instDeploymentArtifacts = new HashMap<>();
 
             deploymentArtifacts.entrySet().forEach(e -> {
                 ArtifactDataDefinition artifact = e.getValue();
                 String type = artifact.getArtifactType();
-                if (type.equalsIgnoreCase(ArtifactTypeEnum.HEAT.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_NET.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_VOL.getType())) {
+                if (type.equalsIgnoreCase(ArtifactTypeEnum.HEAT.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_NET.getType()) || type
+                    .equalsIgnoreCase(ArtifactTypeEnum.HEAT_VOL.getType())) {
                     ArtifactDataDefinition artifactEnv = createArtifactPlaceHolderInfo(artifact, componentInstanceId, user, envType);
                     instDeploymentArtifacts.put(artifactEnv.getArtifactLabel(), artifactEnv);
                 }
@@ -1066,8 +1317,10 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     @SuppressWarnings({"unchecked"})
-    private ArtifactDataDefinition createArtifactPlaceHolderInfo(ArtifactDataDefinition artifactHeat, String componentId, User user, String heatEnvType) {
-        Map<String, Object> deploymentResourceArtifacts = ConfigurationManager.getConfigurationManager().getConfiguration().getDeploymentResourceInstanceArtifacts();
+    private ArtifactDataDefinition createArtifactPlaceHolderInfo(ArtifactDataDefinition artifactHeat, String componentId, User user,
+                                                                 String heatEnvType) {
+        Map<String, Object> deploymentResourceArtifacts = ConfigurationManager.getConfigurationManager().getConfiguration()
+            .getDeploymentResourceInstanceArtifacts();
         if (deploymentResourceArtifacts == null) {
             log.debug("no deployment artifacts are configured for generated artifacts");
             return null;
@@ -1136,67 +1389,62 @@ public class NodeTemplateOperation extends BaseOperation {
      * @param updatedContainerVertex
      * @return
      */
-    private StorageOperationStatus addCalculatedCapReqFromNodeType(NodeType originNodeType, ComponentInstanceDataDefinition componentInstance, GraphVertex updatedContainerVertex) {
-
+    private StorageOperationStatus addCalculatedCapReqFromNodeType(NodeType originNodeType, ComponentInstanceDataDefinition componentInstance,
+                                                                   GraphVertex updatedContainerVertex) {
         Map<String, ListCapabilityDataDefinition> capabilities = originNodeType.getCapabilities();
         MapListCapabilityDataDefinition allCalculatedCap = prepareCalculatedCapabiltyForNodeType(capabilities, componentInstance);
         StorageOperationStatus calculatedResult;
         if (allCalculatedCap != null) {
-            calculatedResult = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.CALCULATED_CAPABILITIES, VertexTypeEnum.CALCULATED_CAPABILITIES, allCalculatedCap, componentInstance.getUniqueId());
-
+            calculatedResult = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.CALCULATED_CAPABILITIES,
+                VertexTypeEnum.CALCULATED_CAPABILITIES, allCalculatedCap, componentInstance.getUniqueId());
             if (calculatedResult != StorageOperationStatus.OK) {
                 return calculatedResult;
             }
         }
         Map<String, MapPropertiesDataDefinition> capabiltiesProperties = originNodeType.getCapabilitiesProperties();
         if (capabiltiesProperties != null) {
-            Map<String, MapPropertiesDataDefinition> updateKeyMap = capabiltiesProperties.entrySet().stream().collect(Collectors.toMap(e -> createCapPropertyKey(e.getKey(), componentInstance.getUniqueId()), Entry::getValue));
+            Map<String, MapPropertiesDataDefinition> updateKeyMap = capabiltiesProperties.entrySet().stream()
+                .collect(Collectors.toMap(e -> createCapPropertyKey(e.getKey(), componentInstance.getUniqueId()), Entry::getValue));
             MapCapabilityProperty mapCapabilityProperty = new MapCapabilityProperty(updateKeyMap);
-            calculatedResult = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, VertexTypeEnum.CALCULATED_CAP_PROPERTIES, mapCapabilityProperty, componentInstance.getUniqueId());
+            calculatedResult = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
+                VertexTypeEnum.CALCULATED_CAP_PROPERTIES, mapCapabilityProperty, componentInstance.getUniqueId());
             if (calculatedResult != StorageOperationStatus.OK) {
                 return calculatedResult;
             }
         }
-
         MapListCapabilityDataDefinition fullCalculatedCap = new MapListCapabilityDataDefinition();
-        calculatedResult = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.FULLFILLED_CAPABILITIES, VertexTypeEnum.FULLFILLED_CAPABILITIES, fullCalculatedCap, componentInstance.getUniqueId());
-
+        calculatedResult = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.FULLFILLED_CAPABILITIES,
+            VertexTypeEnum.FULLFILLED_CAPABILITIES, fullCalculatedCap, componentInstance.getUniqueId());
         if (calculatedResult != StorageOperationStatus.OK) {
             return calculatedResult;
         }
-
         Map<String, ListRequirementDataDefinition> requirements = originNodeType.getRequirements();
-
         MapListRequirementDataDefinition allCalculatedReq = prepareCalculatedRequirementForNodeType(requirements, componentInstance);
-
         StorageOperationStatus status;
         if (allCalculatedReq != null) {
-            status = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.CALCULATED_REQUIREMENTS, VertexTypeEnum.CALCULATED_REQUIREMENTS, allCalculatedReq, componentInstance.getUniqueId());
+            status = addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.CALCULATED_REQUIREMENTS,
+                VertexTypeEnum.CALCULATED_REQUIREMENTS, allCalculatedReq, componentInstance.getUniqueId());
             if (status != StorageOperationStatus.OK) {
                 return status;
             }
         }
         MapListRequirementDataDefinition fullCalculatedReq = new MapListRequirementDataDefinition();
-        return addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.FULLFILLED_REQUIREMENTS, VertexTypeEnum.FULLFILLED_REQUIREMENTS, fullCalculatedReq, componentInstance.getUniqueId());
-    }
-
-    public static String createCapPropertyKey(String key, String instanceId) {
-        StringBuffer sb = new StringBuffer(instanceId);
-        sb.append(ModelConverter.CAP_PROP_DELIM).append(instanceId).append(ModelConverter.CAP_PROP_DELIM).append(key);
-        return sb.toString();
+        return addToscaDataDeepElementsBlockToToscaElement(updatedContainerVertex, EdgeLabelEnum.FULLFILLED_REQUIREMENTS,
+            VertexTypeEnum.FULLFILLED_REQUIREMENTS, fullCalculatedReq, componentInstance.getUniqueId());
     }
 
     /**
-     * Prepares a map of capabilities lists Produces a deep copy of the received map of capabilities Sets values to the specific fields according to received component instance
+     * Prepares a map of capabilities lists Produces a deep copy of the received map of capabilities Sets values to the specific fields according to
+     * received component instance
      *
      * @param capabilities
      * @param componentInstance
      * @return
      */
-    public MapListCapabilityDataDefinition prepareCalculatedCapabiltyForNodeType(Map<String, ListCapabilityDataDefinition> capabilities, ComponentInstanceDataDefinition componentInstance) {
+    public MapListCapabilityDataDefinition prepareCalculatedCapabiltyForNodeType(Map<String, ListCapabilityDataDefinition> capabilities,
+                                                                                 ComponentInstanceDataDefinition componentInstance) {
         if (capabilities != null) {
             MapListCapabilityDataDefinition allCalculatedCap = new MapListCapabilityDataDefinition();
-
             populateCapability(capabilities, componentInstance, allCalculatedCap);
             return allCalculatedCap;
         }
@@ -1204,39 +1452,46 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     /**
-     * Prepares a map of requirements lists Produces a deep copy of the received map of requirements Sets values to the specific fields according to received component instance
+     * Prepares a map of requirements lists Produces a deep copy of the received map of requirements Sets values to the specific fields according to
+     * received component instance
      *
      * @param requirements
      * @param componentInstance
      * @return
      */
-    public MapListRequirementDataDefinition prepareCalculatedRequirementForNodeType(Map<String, ListRequirementDataDefinition> requirements, ComponentInstanceDataDefinition componentInstance) {
+    public MapListRequirementDataDefinition prepareCalculatedRequirementForNodeType(Map<String, ListRequirementDataDefinition> requirements,
+                                                                                    ComponentInstanceDataDefinition componentInstance) {
         if (requirements != null) {
             MapListRequirementDataDefinition allCalculatedReq = new MapListRequirementDataDefinition();
-
             populateRequirement(requirements, componentInstance, allCalculatedReq);
             return allCalculatedReq;
         }
         return null;
     }
 
-    public StorageOperationStatus addGroupInstancesToComponentInstance(Component containerComponent, ComponentInstanceDataDefinition componentInstance, List<GroupDefinition> groups, Map<String, List<ArtifactDefinition>> groupInstancesArtifacts) {
-
+    public StorageOperationStatus addGroupInstancesToComponentInstance(Component containerComponent,
+                                                                       ComponentInstanceDataDefinition componentInstance,
+                                                                       List<GroupDefinition> groups,
+                                                                       Map<String, List<ArtifactDefinition>> groupInstancesArtifacts) {
         StorageOperationStatus result = null;
         Map<String, GroupInstanceDataDefinition> groupInstanceToCreate = new HashMap<>();
         if (groupInstancesArtifacts != null && CollectionUtils.isNotEmpty(groups)) {
             for (Map.Entry<String, List<ArtifactDefinition>> groupArtifacts : groupInstancesArtifacts.entrySet()) {
                 Optional<GroupDefinition> groupOptional = groups.stream().filter(g -> g.getUniqueId().equals(groupArtifacts.getKey())).findFirst();
                 if (groupOptional.isPresent()) {
-                    GroupInstanceDataDefinition groupInstance = buildGroupInstanceDataDefinition((GroupDataDefinition) groupOptional.get(), (ComponentInstanceDataDefinition) componentInstance, null);
-                    groupInstance.setGroupInstanceArtifacts(groupArtifacts.getValue().stream().map(ArtifactDataDefinition::getUniqueId).collect(Collectors.toList()));
-                    groupInstance.setGroupInstanceArtifactsUuid(groupArtifacts.getValue().stream().map(ArtifactDataDefinition::getArtifactUUID).collect(Collectors.toList()));
+                    GroupInstanceDataDefinition groupInstance = buildGroupInstanceDataDefinition((GroupDataDefinition) groupOptional.get(),
+                        (ComponentInstanceDataDefinition) componentInstance);
+                    groupInstance.setGroupInstanceArtifacts(
+                        groupArtifacts.getValue().stream().map(ArtifactDataDefinition::getUniqueId).collect(Collectors.toList()));
+                    groupInstance.setGroupInstanceArtifactsUuid(
+                        groupArtifacts.getValue().stream().map(ArtifactDataDefinition::getArtifactUUID).collect(Collectors.toList()));
                     groupInstanceToCreate.put(groupInstance.getName(), groupInstance);
                 }
             }
         }
         if (MapUtils.isNotEmpty(groupInstanceToCreate)) {
-            result = addToscaDataDeepElementsBlockToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_GROUPS, VertexTypeEnum.INST_GROUPS, new MapDataDefinition<>(groupInstanceToCreate), componentInstance.getUniqueId());
+            result = addToscaDataDeepElementsBlockToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_GROUPS,
+                VertexTypeEnum.INST_GROUPS, new MapDataDefinition<>(groupInstanceToCreate), componentInstance.getUniqueId());
         }
         if (result == null) {
             result = StorageOperationStatus.OK;
@@ -1244,14 +1499,14 @@ public class NodeTemplateOperation extends BaseOperation {
         return result;
     }
 
-    private ComponentInstanceDataDefinition buildComponentInstanceDataDefinition(ComponentInstance resourceInstance, String containerComponentId, String instanceNewName, boolean generateUid, ToscaElement originToscaElement) {
+    private ComponentInstanceDataDefinition buildComponentInstanceDataDefinition(ComponentInstance resourceInstance, String containerComponentId,
+                                                                                 String instanceNewName, boolean generateUid,
+                                                                                 ToscaElement originToscaElement) {
         String ciOriginComponentUid = resourceInstance.getComponentUid();
-
-        if (!ValidationUtils.validateStringNotEmpty(resourceInstance.getCustomizationUUID())) {
+        if (StringUtils.isEmpty(resourceInstance.getCustomizationUUID())) {
             resourceInstance.setCustomizationUUID(generateCustomizationUUID());
         }
         ComponentInstanceDataDefinition dataDefinition = new ComponentInstanceDataDefinition(resourceInstance);
-
         Long creationDate = resourceInstance.getCreationTime();
         Long modificationTime;
         if (creationDate == null) {
@@ -1267,49 +1522,62 @@ public class NodeTemplateOperation extends BaseOperation {
             dataDefinition.setName(instanceNewName);
             resourceInstance.setName(instanceNewName);
         }
-        if (StringUtils.isNotEmpty(dataDefinition.getName()))
+        if (StringUtils.isNotEmpty(dataDefinition.getName())) {
             dataDefinition.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(dataDefinition.getName()));
+        }
         dataDefinition.setIcon(resourceInstance.getIcon());
         if (generateUid) {
-            dataDefinition.setUniqueId(UniqueIdBuilder.buildResourceInstanceUniuqeId(containerComponentId, ciOriginComponentUid, dataDefinition.getNormalizedName()));
+            dataDefinition.setUniqueId(
+                UniqueIdBuilder.buildResourceInstanceUniqueId(containerComponentId, ciOriginComponentUid, dataDefinition.getNormalizedName()));
             resourceInstance.setUniqueId(dataDefinition.getUniqueId());
         }
-        if (StringUtils.isEmpty(dataDefinition.getComponentVersion()) && originToscaElement != null)
+        if (StringUtils.isEmpty(dataDefinition.getComponentVersion()) && originToscaElement != null) {
             dataDefinition.setComponentVersion((String) originToscaElement.getMetadataValue(JsonPresentationFields.VERSION));
-        if (StringUtils.isEmpty(dataDefinition.getComponentName()) && originToscaElement != null)
+        }
+        if (StringUtils.isEmpty(dataDefinition.getComponentName()) && originToscaElement != null) {
             dataDefinition.setComponentName((String) originToscaElement.getMetadataValue(JsonPresentationFields.NAME));
-        if (originToscaElement != null && dataDefinition.getToscaComponentName() == null)
+        }
+        if (originToscaElement != null && dataDefinition.getToscaComponentName() == null) {
             dataDefinition.setToscaComponentName((String) originToscaElement.getMetadataValue(JsonPresentationFields.TOSCA_RESOURCE_NAME));
+        }
         if (dataDefinition.getOriginType() == null && originToscaElement != null) {
             ResourceTypeEnum resourceType = originToscaElement.getResourceType();
             OriginTypeEnum originType = OriginTypeEnum.findByValue(resourceType.name());
             dataDefinition.setOriginType(originType);
         }
-        if (dataDefinition.getOriginType() == OriginTypeEnum.ServiceProxy)
+        if (dataDefinition.getOriginType() == OriginTypeEnum.ServiceProxy) {
             dataDefinition.setIsProxy(true);
-
+        }
         return dataDefinition;
     }
 
     private Boolean isUniqueInstanceName(TopologyTemplate container, String instanceName) {
         Boolean isUniqueName = true;
         try {
-            isUniqueName = !container.getComponentInstances().values().stream().anyMatch(ci -> ci.getName() != null && ci.getName().equals(instanceName));
-
+            isUniqueName = container.getComponentInstances().values().stream()
+                .noneMatch(ci -> ci.getName() != null && ci.getName().equals(instanceName));
         } catch (Exception e) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Exception occured during fetching component instance with name {} from component container {}. {} ", instanceName, container.getName(), e.getMessage());
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
+                "Exception occured during fetching component instance with name {} from component container {}. {} ", instanceName,
+                container.getName(), e.getMessage());
         }
         return isUniqueName;
     }
 
     private String buildComponentInstanceName(String instanceSuffixNumber, String instanceName) {
-        return instanceName + " " + (instanceSuffixNumber == null ? 0 : instanceSuffixNumber);
+        String delimiter = ConfigurationManager.getConfigurationManager().getConfiguration().getComponentInstanceCounterDelimiter();
+        if (delimiter == null) {
+            delimiter = " ";
+        }
+        return instanceName + delimiter + (instanceSuffixNumber == null ? 0 : instanceSuffixNumber);
     }
 
-    public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(Component component, String componentId, RequirementCapabilityRelDef relation) {
+    public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String componentId,
+                                                                                                  RequirementCapabilityRelDef relation) {
         List<RequirementCapabilityRelDef> relations = new ArrayList<>();
         relations.add(relation);
-        Either<List<RequirementCapabilityRelDef>, StorageOperationStatus> associateResourceInstances = associateResourceInstances(component, componentId, relations);
+        Either<List<RequirementCapabilityRelDef>, StorageOperationStatus> associateResourceInstances = associateResourceInstances(
+            componentId, relations);
         if (associateResourceInstances.isRight()) {
             return Either.right(associateResourceInstances.right().value());
         }
@@ -1317,45 +1585,45 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     @SuppressWarnings({"unchecked"})
-    public <T extends ToscaDataDefinition> Either<List<RequirementCapabilityRelDef>, StorageOperationStatus> associateResourceInstances(Component component, String componentId, List<RequirementCapabilityRelDef> relations) {
-
-        Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao
-            .getVertexById(componentId, JsonParseFlagEnum.ParseAll);
+    public <T extends ToscaDataDefinition> Either<List<RequirementCapabilityRelDef>, StorageOperationStatus> associateResourceInstances(
+        String componentId, List<RequirementCapabilityRelDef> relations) {
+        Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao.getVertexById(componentId, JsonParseFlagEnum.ParseAll);
         if (containerVEither.isRight()) {
             JanusGraphOperationStatus error = containerVEither.right().value();
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR, componentId, error);
             return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error));
         }
         GraphVertex containerV = containerVEither.left().value();
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult = fetchContainerCalculatedCapability(containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult =
+            fetchContainerCalculatedCapability(
+                containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
         if (capResult.isRight()) {
             return Either.right(capResult.right().value());
-
         }
         Map<String, MapListCapabilityDataDefinition> calculatedCapabilty = capResult.left().value().getRight();
-
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult = fetchContainerCalculatedCapability(containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult =
+            fetchContainerCalculatedCapability(
+                containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
         if (capResult.isRight()) {
             return Either.right(capResult.right().value());
-
         }
         Map<String, MapListCapabilityDataDefinition> fullFilledCapabilty = capFullResult.left().value().getRight();
-
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult = fetchContainerCalculatedRequirement(containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult =
+            fetchContainerCalculatedRequirement(
+                containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
         if (reqResult.isRight()) {
             return Either.right(reqResult.right().value());
         }
         Map<String, MapListRequirementDataDefinition> calculatedRequirement = reqResult.left().value().getRight();
-
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult = fetchContainerCalculatedRequirement(containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult =
+            fetchContainerCalculatedRequirement(
+                containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
         if (reqResult.isRight()) {
             return Either.right(reqResult.right().value());
         }
         Map<String, MapListRequirementDataDefinition> fullfilledRequirement = reqFullResult.left().value().getRight();
-
         Map<String, CompositionDataDefinition> jsonComposition = (Map<String, CompositionDataDefinition>) containerV.getJson();
         CompositionDataDefinition compositionDataDefinition = jsonComposition.get(JsonConstantKeysEnum.COMPOSITION.getValue());
-
         StorageOperationStatus status;
         List<RequirementCapabilityRelDef> relationsList = new ArrayList<>();
         for (RequirementCapabilityRelDef relation : relations) {
@@ -1364,31 +1632,35 @@ public class NodeTemplateOperation extends BaseOperation {
             String toNode = relation.getToNode();
             List<CapabilityRequirementRelationship> relationships = relation.getRelationships();
             if (relationships == null || relationships.isEmpty()) {
-                BeEcompErrorManager.getInstance().logBeFailedAddingResourceInstanceError("AssociateResourceInstances - missing relationship", fromNode, componentId);
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No requirement definition sent in order to set the relation between {} to {}", fromNode, toNode);
-                loggerSupportability.log(LogLevel.INFO,LoggerSupportabilityActions.CREATE_RELATION.getName(),"componentId: "+componentId+" No requirement definition sent in order to set the relation between: "+fromNode+" to: "+toNode);
+                BeEcompErrorManager.getInstance()
+                    .logBeFailedAddingResourceInstanceError("AssociateResourceInstances - missing relationship", fromNode, componentId);
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, "No requirement definition sent in order to set the relation between {} to {}", fromNode,
+                        toNode);
+                loggerSupportability.log(LogLevel.INFO, LoggerSupportabilityActions.CREATE_RELATION.getName(),
+                    "componentId: " + componentId + " No requirement definition sent in order to set the relation between: " + fromNode + " to: "
+                        + toNode);
                 return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(JanusGraphOperationStatus.ILLEGAL_ARGUMENT));
             }
-
             for (final CapabilityRequirementRelationship relationship : relationships) {
                 final String requirement = relationship.getRelation().getRequirement();
-
-                Either<Map<JsonPresentationFields, T>, StorageOperationStatus> associateRes = connectInstancesInContainer(fromNode, toNode, relationship.getRelation(), relation.isOriginUI(), calculatedCapabilty, calculatedRequirement,
-                        fullFilledCapabilty, fullfilledRequirement, compositionDataDefinition, containerV.getUniqueId());
-
-
+                Either<Map<JsonPresentationFields, T>, StorageOperationStatus> associateRes = connectInstancesInContainer(fromNode, toNode,
+                    relationship.getRelation(), relation.isOriginUI(), calculatedCapabilty, calculatedRequirement, fullFilledCapabilty,
+                    fullfilledRequirement, compositionDataDefinition, containerV.getUniqueId());
                 if (associateRes.isRight()) {
                     status = associateRes.right().value();
-                    BeEcompErrorManager.getInstance().logBeFailedAddingResourceInstanceError("AssociateResourceInstances - missing relationship", fromNode, componentId);
-                    loggerSupportability.log(LogLevel.INFO,LoggerSupportabilityActions.CREATE_RELATIONS.name(),
-                        StatusCode.ERROR,"missing relationship: "+fromNode,"ComopnentId: "+componentId);
-                    CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to associate resource instance {} to resource instance {}. status is {}", fromNode, toNode, status);
+                    BeEcompErrorManager.getInstance()
+                        .logBeFailedAddingResourceInstanceError("AssociateResourceInstances - missing relationship", fromNode, componentId);
+                    loggerSupportability.log(LogLevel.INFO, LoggerSupportabilityActions.CREATE_RELATIONS.name(), StatusCode.ERROR,
+                        "missing relationship: " + fromNode, "ComopnentId: " + componentId);
+                    CommonUtility
+                        .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to associate resource instance {} to resource instance {}. status is {}",
+                            fromNode, toNode, status);
                     return Either.right(status);
                 }
-
                 final Map<JsonPresentationFields, T> relationshipFieldsMap = associateRes.left().value();
-                final RelationshipInstDataDefinition relationshipInstData =
-                    (RelationshipInstDataDefinition) relationshipFieldsMap.get(JsonPresentationFields.RELATIONSHIP);
+                final RelationshipInstDataDefinition relationshipInstData = (RelationshipInstDataDefinition) relationshipFieldsMap
+                    .get(JsonPresentationFields.RELATIONSHIP);
                 createRelationshipInterfaces(relationship.getOperations()).ifPresent(relationshipInstData::setInterfaces);
                 RelationshipImpl relationshipImplResult = new RelationshipImpl();
                 relationshipImplResult.setType(relationshipInstData.getType());
@@ -1406,15 +1678,18 @@ public class NodeTemplateOperation extends BaseOperation {
                 capReqRel.setRequirement((RequirementDataDefinition) relationshipFieldsMap.get(JsonPresentationFields.REQUIREMENT));
                 capReqRel.setOperations(relationship.getOperations());
                 relationshipsResult.add(capReqRel);
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "update customization UUID for from CI {} and to CI {}", relation.getFromNode(), relation.getToNode());
+                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "update customization UUID for from CI {} and to CI {}", relation.getFromNode(),
+                    relation.getToNode());
                 status = updateCustomizationUUID(relation.getFromNode(), compositionDataDefinition);
                 if (status != StorageOperationStatus.OK) {
-                    loggerSupportability.log(LogLevel.INFO,LoggerSupportabilityActions.CREATE_RELATIONS.name(),StatusCode.ERROR,"ERROR while update customization UUID for from CI "+relation.getFromNode()+" and to CI: "+relation.getToNode());
+                    loggerSupportability.log(LogLevel.INFO, LoggerSupportabilityActions.CREATE_RELATIONS.name(), StatusCode.ERROR,
+                        "ERROR while update customization UUID for from CI " + relation.getFromNode() + " and to CI: " + relation.getToNode());
                     return Either.right(status);
                 }
                 status = updateCustomizationUUID(relation.getToNode(), compositionDataDefinition);
                 if (status != StorageOperationStatus.OK) {
-                    loggerSupportability.log(LogLevel.INFO,LoggerSupportabilityActions.CREATE_RELATIONS.name(),StatusCode.ERROR,"ERROR while update customization UUID for from CI "+relation.getFromNode()+" and to CI: "+relation.getToNode());
+                    loggerSupportability.log(LogLevel.INFO, LoggerSupportabilityActions.CREATE_RELATIONS.name(), StatusCode.ERROR,
+                        "ERROR while update customization UUID for from CI " + relation.getFromNode() + " and to CI: " + relation.getToNode());
                     return Either.right(status);
                 }
             }
@@ -1429,9 +1704,7 @@ public class NodeTemplateOperation extends BaseOperation {
         return Either.left(relationsList);
     }
 
-    private Optional<ListDataDefinition<InterfaceDataDefinition>> createRelationshipInterfaces(
-        final List<OperationUi> operationList) {
-
+    private Optional<ListDataDefinition<InterfaceDataDefinition>> createRelationshipInterfaces(final List<OperationUi> operationList) {
         if (CollectionUtils.isEmpty(operationList)) {
             return Optional.empty();
         }
@@ -1448,8 +1721,8 @@ public class NodeTemplateOperation extends BaseOperation {
         final InterfaceDataDefinition interfaceDataDefinition = new InterfaceDataDefinition();
         interfaceDataDefinition.setType(interfaceType);
         if (CollectionUtils.isNotEmpty(operationList)) {
-            final Map<String, OperationDataDefinition> operationMap =
-                operationList.stream().collect(Collectors.toMap(OperationUi::getOperationType, this::createOperation));
+            final Map<String, OperationDataDefinition> operationMap = operationList.stream()
+                .collect(Collectors.toMap(OperationUi::getOperationType, this::createOperation));
             interfaceDataDefinition.setOperations(operationMap);
         }
         return interfaceDataDefinition;
@@ -1459,9 +1732,9 @@ public class NodeTemplateOperation extends BaseOperation {
         final OperationDataDefinition operationDataDefinition = new OperationDataDefinition();
         operationDataDefinition.setName(operation.getOperationType());
         operationDataDefinition.setUniqueId(UUID.randomUUID().toString());
-        final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
-        implementation.setArtifactName(operation.getImplementation());
-        operationDataDefinition.setImplementation(implementation);
+        final ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
+        artifactDataDefinition.setArtifactName((String) operation.getImplementation());
+        operationDataDefinition.setImplementation(artifactDataDefinition);
         if (CollectionUtils.isNotEmpty(operation.getInputs())) {
             final ListDataDefinition<OperationInputDefinition> inputs = new ListDataDefinition<>();
             operation.getInputs().forEach(input -> {
@@ -1473,17 +1746,19 @@ public class NodeTemplateOperation extends BaseOperation {
             });
             operationDataDefinition.setInputs(inputs);
         }
-
         return operationDataDefinition;
     }
 
-    private StorageOperationStatus updateAllAndCalculatedCapReqOnGraph(String componentId, GraphVertex containerV, Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult,
-                                                                       Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult, Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult,
+    private StorageOperationStatus updateAllAndCalculatedCapReqOnGraph(String componentId, GraphVertex containerV,
+                                                                       Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult,
+                                                                       Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult,
+                                                                       Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult,
                                                                        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult) {
         containerV.setJsonMetadataField(JsonPresentationFields.LAST_UPDATE_DATE, System.currentTimeMillis());
         Either<GraphVertex, JanusGraphOperationStatus> updateElement = janusGraphDao.updateVertex(containerV);
         if (updateElement.isRight()) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update topology template {} with new relations error {}. ", componentId, updateElement.right().value());
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update topology template {} with new relations error {}. ", componentId,
+                updateElement.right().value());
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(updateElement.right().value());
         }
         // update cap/req jsons, fulfilled cap/req jsons!!!!!
@@ -1492,55 +1767,56 @@ public class NodeTemplateOperation extends BaseOperation {
         status = updateOrCopyOnUpdate(capResult.left().value().getLeft(), containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
         if (status.isRight()) {
             JanusGraphOperationStatus error = status.right().value();
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update calculated capabilty for container {} error {}", containerV.getUniqueId(), error);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update calculated capabilty for container {} error {}", containerV.getUniqueId(),
+                    error);
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error);
         }
-
         CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Update calculated requirement for container {}", containerV.getUniqueId());
         status = updateOrCopyOnUpdate(reqResult.left().value().getLeft(), containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
         if (status.isRight()) {
             JanusGraphOperationStatus error = status.right().value();
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update calculated requiremnt for container {} error {}", containerV.getUniqueId(), error);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update calculated requiremnt for container {} error {}", containerV.getUniqueId(),
+                    error);
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error);
         }
-
         CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Update fullfilled capabilty for container {}", containerV.getUniqueId());
         status = updateOrCopyOnUpdate(capFullResult.left().value().getLeft(), containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
         if (status.isRight()) {
             JanusGraphOperationStatus error = status.right().value();
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update fullfilled capabilty for container {} error {}", containerV.getUniqueId(), error);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update fullfilled capabilty for container {} error {}", containerV.getUniqueId(),
+                    error);
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error);
         }
-
         CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Update fullfilled requirement for container {}", containerV.getUniqueId());
         status = updateOrCopyOnUpdate(reqFullResult.left().value().getLeft(), containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
         if (status.isRight()) {
             JanusGraphOperationStatus error = status.right().value();
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update fullfilled requirement for container {} error {}", containerV.getUniqueId(), error);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update fullfilled requirement for container {} error {}",
+                containerV.getUniqueId(), error);
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error);
         }
         return StorageOperationStatus.OK;
     }
 
     @SuppressWarnings({"unchecked"})
-    public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String componentId, RequirementCapabilityRelDef requirementDef) {
+    public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String componentId,
+                                                                                                   RequirementCapabilityRelDef requirementDef) {
         if (requirementDef.getRelationships() == null) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No relation pair in request [ {} ]", requirementDef);
             return Either.right(StorageOperationStatus.BAD_REQUEST);
         }
-
         String fromResInstanceUid = requirementDef.getFromNode();
         String toResInstanceUid = requirementDef.getToNode();
-
-        Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao
-            .getVertexById(componentId, JsonParseFlagEnum.ParseAll);
+        Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao.getVertexById(componentId, JsonParseFlagEnum.ParseAll);
         if (containerVEither.isRight()) {
             JanusGraphOperationStatus error = containerVEither.right().value();
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR, componentId, error);
             return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error));
         }
         GraphVertex containerV = containerVEither.left().value();
-
         // DE191707 - validations
         Map<String, CompositionDataDefinition> jsonComposition = (Map<String, CompositionDataDefinition>) containerV.getJson();
         CompositionDataDefinition compositionDataDefinition = jsonComposition.get(JsonConstantKeysEnum.COMPOSITION.getValue());
@@ -1549,60 +1825,64 @@ public class NodeTemplateOperation extends BaseOperation {
         if (ciFrom == null) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "FROM instance {} isn't under container {}", fromResInstanceUid, componentId);
             return Either.right(StorageOperationStatus.NOT_FOUND);
-
         }
         ComponentInstanceDataDefinition ciTo = componentInstances.get(toResInstanceUid);
         if (ciFrom == ciTo) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "TO instance {} isn't under container {}", toResInstanceUid, componentId);
             return Either.right(StorageOperationStatus.NOT_FOUND);
-
         }
         Map<String, RelationshipInstDataDefinition> relations = compositionDataDefinition.getRelations();
-
         List<CapabilityRequirementRelationship> relationPairList = requirementDef.getRelationships();
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult = fetchContainerCalculatedCapability(containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult =
+            fetchContainerCalculatedCapability(
+                containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
         if (capResult.isRight()) {
             return Either.right(capResult.right().value());
         }
         Map<String, MapListCapabilityDataDefinition> calculatedCapability = capResult.left().value().getRight();
-
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult = fetchContainerCalculatedCapability(containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult =
+            fetchContainerCalculatedCapability(
+                containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
         if (capResult.isRight()) {
             return Either.right(capResult.right().value());
-
         }
         Map<String, MapListCapabilityDataDefinition> fulfilledCapability = capFullResult.left().value().getRight();
-
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult = fetchContainerCalculatedRequirement(containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult =
+            fetchContainerCalculatedRequirement(
+                containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
         if (reqResult.isRight()) {
             return Either.right(reqResult.right().value());
         }
         Map<String, MapListRequirementDataDefinition> calculatedRequirement = reqResult.left().value().getRight();
-
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult = fetchContainerCalculatedRequirement(containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult =
+            fetchContainerCalculatedRequirement(
+                containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
         if (reqResult.isRight()) {
             return Either.right(reqResult.right().value());
         }
         Map<String, MapListRequirementDataDefinition> fulfilledRequirement = reqFullResult.left().value().getRight();
-
         for (CapabilityRequirementRelationship relationPair : relationPairList) {
             Iterator<Entry<String, RelationshipInstDataDefinition>> iterator = relations.entrySet().iterator();
             boolean isDeleted = false;
             while (iterator.hasNext()) {
                 Entry<String, RelationshipInstDataDefinition> entryInJson = iterator.next();
                 RelationshipInstDataDefinition relationInJson = entryInJson.getValue();
-                if (relationInJson.getFromId().equals(fromResInstanceUid) && relationInJson.getToId().equals(toResInstanceUid) && relationInJson.getUniqueId().equals(relationPair.getRelation().getId())) {
+                if (relationInJson.getFromId().equals(fromResInstanceUid) && relationInJson.getToId().equals(toResInstanceUid) && relationInJson
+                    .getUniqueId().equals(relationPair.getRelation().getId())) {
                     if (relationPair.getRelation().equalsTo(relationInJson)) {
-                        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Remove relation from {} to {} capability {} capOwnerId {} reqOwnerId {} ", toResInstanceUid, componentId, relationInJson.getType(), relationInJson.getCapabilityOwnerId(),
+                        CommonUtility
+                            .addRecordToLog(log, LogLevelEnum.DEBUG, "Remove relation from {} to {} capability {} capOwnerId {} reqOwnerId {} ",
+                                toResInstanceUid, componentId, relationInJson.getType(), relationInJson.getCapabilityOwnerId(),
                                 relationInJson.getRequirementOwnerId());
                         iterator.remove();
-
                         // update calculated cap/req
-                        StorageOperationStatus status = updateCalculatedCapabiltyAfterDeleteRelation(calculatedCapability, fulfilledCapability, toResInstanceUid, relationInJson, relationPair);
+                        StorageOperationStatus status = updateCalculatedCapabiltyAfterDeleteRelation(calculatedCapability, fulfilledCapability,
+                            toResInstanceUid, relationInJson, relationPair);
                         if (status != StorageOperationStatus.OK) {
                             return Either.right(status);
                         }
-                        status = updateCalculatedRequirementsAfterDeleteRelation(calculatedRequirement, fulfilledRequirement, fromResInstanceUid, relationInJson, relationPair);
+                        status = updateCalculatedRequirementsAfterDeleteRelation(calculatedRequirement, fulfilledRequirement, fromResInstanceUid,
+                            relationInJson, relationPair);
                         if (status != StorageOperationStatus.OK) {
                             return Either.right(status);
                         }
@@ -1611,8 +1891,9 @@ public class NodeTemplateOperation extends BaseOperation {
                 }
             }
             if (!isDeleted) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No relation to delete from {} to {} capabilty {} capOwnerId {} reqOwnerId {} ", toResInstanceUid, componentId, relationPair.getCapability(),
-                        relationPair.getRelation().getCapabilityOwnerId(), relationPair.getRelation().getRequirementOwnerId());
+                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No relation to delete from {} to {} capabilty {} capOwnerId {} reqOwnerId {} ",
+                    toResInstanceUid, componentId, relationPair.getCapability(), relationPair.getRelation().getCapabilityOwnerId(),
+                    relationPair.getRelation().getRequirementOwnerId());
                 return Either.right(StorageOperationStatus.NOT_FOUND);
             }
         }
@@ -1624,14 +1905,13 @@ public class NodeTemplateOperation extends BaseOperation {
         if (status != StorageOperationStatus.OK) {
             return Either.right(status);
         }
-
         // update jsons
+
         // update metadata of container and composition json
         status = updateAllAndCalculatedCapReqOnGraph(componentId, containerV, capResult, capFullResult, reqResult, reqFullResult);
         if (status != StorageOperationStatus.OK) {
             return Either.right(status);
         }
-
         return Either.left(requirementDef);
     }
 
@@ -1644,16 +1924,15 @@ public class NodeTemplateOperation extends BaseOperation {
      * @param predicate
      * @return
      */
-    public Either<RequirementDataDefinition, StorageOperationStatus> getFulfilledRequirementByRelation(String componentId, String instanceId, RequirementCapabilityRelDef foundRelation,
+    public Either<RequirementDataDefinition, StorageOperationStatus> getFulfilledRequirementByRelation(String componentId, String instanceId,
+                                                                                                       RequirementCapabilityRelDef foundRelation,
                                                                                                        BiPredicate<RelationshipInfo, RequirementDataDefinition> predicate) {
-
         Either<RequirementDataDefinition, StorageOperationStatus> result = null;
         Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult = null;
         MapListRequirementDataDefinition reqMapOfLists = null;
         Optional<RequirementDataDefinition> foundRequirement;
         RelationshipInfo relationshipInfo = foundRelation.resolveSingleRelationship().getRelation();
-        Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao
-            .getVertexById(componentId, JsonParseFlagEnum.ParseAll);
+        Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao.getVertexById(componentId, JsonParseFlagEnum.ParseAll);
         if (containerVEither.isRight()) {
             JanusGraphOperationStatus error = containerVEither.right().value();
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR, componentId, error);
@@ -1675,7 +1954,8 @@ public class NodeTemplateOperation extends BaseOperation {
         }
         if (result == null && reqMapOfLists != null) {
             for (ListRequirementDataDefinition requirements : reqMapOfLists.getMapToscaDataDefinition().values()) {
-                foundRequirement = requirements.getListToscaDataDefinition().stream().filter(req -> predicate.test(relationshipInfo, req)).findFirst();
+                foundRequirement = requirements.getListToscaDataDefinition().stream().filter(req -> predicate.test(relationshipInfo, req))
+                    .findFirst();
                 if (foundRequirement.isPresent()) {
                     result = Either.left(foundRequirement.get());
                 }
@@ -1693,17 +1973,15 @@ public class NodeTemplateOperation extends BaseOperation {
      * @param predicate
      * @return
      */
-    public Either<CapabilityDataDefinition, StorageOperationStatus> getFulfilledCapabilityByRelation(String componentId, String instanceId, RequirementCapabilityRelDef foundRelation,
+    public Either<CapabilityDataDefinition, StorageOperationStatus> getFulfilledCapabilityByRelation(String componentId, String instanceId,
+                                                                                                     RequirementCapabilityRelDef foundRelation,
                                                                                                      BiPredicate<RelationshipInfo, CapabilityDataDefinition> predicate) {
-
         Either<CapabilityDataDefinition, StorageOperationStatus> result = null;
         Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult = null;
         MapListCapabilityDataDefinition capMapOfLists = null;
         Optional<CapabilityDataDefinition> foundRequirement;
-
         RelationshipInfo relationshipInfo = foundRelation.resolveSingleRelationship().getRelation();
-        Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao
-            .getVertexById(componentId, JsonParseFlagEnum.ParseAll);
+        Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao.getVertexById(componentId, JsonParseFlagEnum.ParseAll);
         if (containerVEither.isRight()) {
             JanusGraphOperationStatus error = containerVEither.right().value();
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR, componentId, error);
@@ -1725,7 +2003,8 @@ public class NodeTemplateOperation extends BaseOperation {
         }
         if (result == null && capMapOfLists != null) {
             for (ListCapabilityDataDefinition capabilities : capMapOfLists.getMapToscaDataDefinition().values()) {
-                foundRequirement = capabilities.getListToscaDataDefinition().stream().filter(cap -> predicate.test(relationshipInfo, cap)).findFirst();
+                foundRequirement = capabilities.getListToscaDataDefinition().stream().filter(cap -> predicate.test(relationshipInfo, cap))
+                    .findFirst();
                 if (foundRequirement.isPresent()) {
                     result = Either.left(foundRequirement.get());
                 }
@@ -1734,22 +2013,23 @@ public class NodeTemplateOperation extends BaseOperation {
         return result;
     }
 
-    private StorageOperationStatus updateCalculatedRequirementsAfterDeleteRelation(Map<String, MapListRequirementDataDefinition> calculatedRequirement, Map<String, MapListRequirementDataDefinition> fullFilledRequirement, String fromResInstanceUid,
-                                                                                   RelationshipInstDataDefinition relation, CapabilityRequirementRelationship relationship) {
+    private StorageOperationStatus updateCalculatedRequirementsAfterDeleteRelation(
+        Map<String, MapListRequirementDataDefinition> calculatedRequirement, Map<String, MapListRequirementDataDefinition> fullFilledRequirement,
+        String fromResInstanceUid, RelationshipInstDataDefinition relation, CapabilityRequirementRelationship relationship) {
         StorageOperationStatus status;
         String hereIsTheKey = null;
         MapListRequirementDataDefinition reqByInstance = calculatedRequirement.get(fromResInstanceUid);
         if (reqByInstance == null || reqByInstance.findKeyByItemUidMatch(relation.getRequirementId()) == null) {
             // move from fulfilled
-            status = moveFromFullFilledRequirement(calculatedRequirement, fullFilledRequirement, fromResInstanceUid, relation, hereIsTheKey, relationship);
+            status = moveFromFullFilledRequirement(calculatedRequirement, fullFilledRequirement, fromResInstanceUid, relation, hereIsTheKey,
+                relationship);
         } else {
             hereIsTheKey = reqByInstance.findKeyByItemUidMatch(relation.getRequirementId());
             ListRequirementDataDefinition reqByType = reqByInstance.findByKey(hereIsTheKey);
-            Optional<RequirementDataDefinition> requirementOptional = reqByType.getListToscaDataDefinition().stream()
-                    .filter(req -> req.getOwnerId().equals(relation.getRequirementOwnerId()) && req.getName().equals(relation.getRequirement()) && req.getUniqueId().equals(relation.getRequirementId())).findFirst();
-
+            Optional<RequirementDataDefinition> requirementOptional = reqByType.getListToscaDataDefinition().stream().filter(
+                req -> req.getOwnerId().equals(relation.getRequirementOwnerId()) && req.getName().equals(relation.getRequirement()) && req
+                    .getUniqueId().equals(relation.getRequirementId())).findFirst();
             if (requirementOptional.isPresent()) {
-
                 RequirementDataDefinition requirement = requirementOptional.get();
                 String leftOccurrences = requirement.getLeftOccurrences();
                 if (leftOccurrences != null && !leftOccurrences.equals(RequirementDataDefinition.MAX_OCCURRENCES)) {
@@ -1763,14 +2043,17 @@ public class NodeTemplateOperation extends BaseOperation {
                 status = StorageOperationStatus.OK;
             } else {
                 // move from fulfilled
-                status = moveFromFullFilledRequirement(calculatedRequirement, fullFilledRequirement, fromResInstanceUid, relation, hereIsTheKey, relationship);
+                status = moveFromFullFilledRequirement(calculatedRequirement, fullFilledRequirement, fromResInstanceUid, relation, hereIsTheKey,
+                    relationship);
             }
         }
         return status;
     }
 
-    private StorageOperationStatus updateCalculatedCapabiltyAfterDeleteRelation(Map<String, MapListCapabilityDataDefinition> calculatedCapability, Map<String, MapListCapabilityDataDefinition> fullFilledCapability, String toResInstanceUid,
-                                                                                RelationshipInstDataDefinition relation, CapabilityRequirementRelationship relationship) {
+    private StorageOperationStatus updateCalculatedCapabiltyAfterDeleteRelation(Map<String, MapListCapabilityDataDefinition> calculatedCapability,
+                                                                                Map<String, MapListCapabilityDataDefinition> fullFilledCapability,
+                                                                                String toResInstanceUid, RelationshipInstDataDefinition relation,
+                                                                                CapabilityRequirementRelationship relationship) {
         StorageOperationStatus status;
         String hereIsTheKey = null;
         MapListCapabilityDataDefinition capByInstance = calculatedCapability.get(toResInstanceUid);
@@ -1780,11 +2063,10 @@ public class NodeTemplateOperation extends BaseOperation {
         } else {
             hereIsTheKey = capByInstance.findKeyByItemUidMatch(relation.getCapabilityId());
             ListCapabilityDataDefinition capByType = capByInstance.findByKey(hereIsTheKey);
-            Optional<CapabilityDataDefinition> capabilityOptional = capByType.getListToscaDataDefinition().stream().filter(cap -> cap.getOwnerId().equals(relation.getCapabilityOwnerId()) && cap.getUniqueId().equals(relation.getCapabilityId()))
-                    .findFirst();
-
+            Optional<CapabilityDataDefinition> capabilityOptional = capByType.getListToscaDataDefinition().stream()
+                .filter(cap -> cap.getOwnerId().equals(relation.getCapabilityOwnerId()) && cap.getUniqueId().equals(relation.getCapabilityId()))
+                .findFirst();
             if (capabilityOptional.isPresent()) {
-
                 CapabilityDataDefinition capability = capabilityOptional.get();
                 String leftOccurrences = capability.getLeftOccurrences();
                 if (leftOccurrences != null && !leftOccurrences.equals(CapabilityDataDefinition.MAX_OCCURRENCES)) {
@@ -1798,23 +2080,29 @@ public class NodeTemplateOperation extends BaseOperation {
                 status = StorageOperationStatus.OK;
             } else {
                 // move from fulfilled
-                status = moveFromFullFilledCapabilty(calculatedCapability, fullFilledCapability, toResInstanceUid, relation, hereIsTheKey, relationship);
+                status = moveFromFullFilledCapabilty(calculatedCapability, fullFilledCapability, toResInstanceUid, relation, hereIsTheKey,
+                    relationship);
             }
         }
         return status;
     }
 
-    private StorageOperationStatus moveFromFullFilledCapabilty(Map<String, MapListCapabilityDataDefinition> calculatedCapability, Map<String, MapListCapabilityDataDefinition> fullFilledCapability, String toResInstanceUid,
-                                                               RelationshipInstDataDefinition relation, String hereIsTheKey, CapabilityRequirementRelationship relationship) {
+    private StorageOperationStatus moveFromFullFilledCapabilty(Map<String, MapListCapabilityDataDefinition> calculatedCapability,
+                                                               Map<String, MapListCapabilityDataDefinition> fullFilledCapability,
+                                                               String toResInstanceUid, RelationshipInstDataDefinition relation, String hereIsTheKey,
+                                                               CapabilityRequirementRelationship relationship) {
         MapListCapabilityDataDefinition capByInstance = fullFilledCapability.get(toResInstanceUid);
         if (capByInstance == null) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No capability in fulfilled list for instance {} ", toResInstanceUid);
             return StorageOperationStatus.GENERAL_ERROR;
         }
-        if (null == hereIsTheKey)
+        if (null == hereIsTheKey) {
             hereIsTheKey = capByInstance.findKeyByItemUidMatch(relation.getCapabilityId());
+        }
         if (null == hereIsTheKey) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No capability with id {} in fulfilled list for instance {} ", relation.getCapabilityId(), toResInstanceUid);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "No capability with id {} in fulfilled list for instance {} ", relation.getCapabilityId(),
+                    toResInstanceUid);
             return StorageOperationStatus.GENERAL_ERROR;
         }
         ListCapabilityDataDefinition capByType = capByInstance.findByKey(hereIsTheKey);
@@ -1830,7 +2118,6 @@ public class NodeTemplateOperation extends BaseOperation {
                 Integer leftIntValue = Integer.parseInt(leftOccurrences);
                 ++leftIntValue;
                 cap.setLeftOccurrences(String.valueOf(leftIntValue));
-
                 MapListCapabilityDataDefinition mapListCapaDataDef = calculatedCapability.get(toResInstanceUid);
                 if (mapListCapaDataDef == null) {
                     mapListCapaDataDef = new MapListCapabilityDataDefinition();
@@ -1841,29 +2128,37 @@ public class NodeTemplateOperation extends BaseOperation {
                     mapListCapaDataDef.put(hereIsTheKey, findByKey);
                 }
                 findByKey.add(cap);
-                if (relationship != null)
+                if (relationship != null) {
                     relationship.setCapability(cap);
+                }
                 break;
             }
         }
         if (!found) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No capability type {} with ownerId {} in fulfilled list for instance {} ", hereIsTheKey, relation.getCapabilityOwnerId(), toResInstanceUid);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "No capability type {} with ownerId {} in fulfilled list for instance {} ", hereIsTheKey,
+                    relation.getCapabilityOwnerId(), toResInstanceUid);
             return StorageOperationStatus.GENERAL_ERROR;
         }
         return StorageOperationStatus.OK;
     }
 
-    private StorageOperationStatus moveFromFullFilledRequirement(Map<String, MapListRequirementDataDefinition> calculatedRequirement, Map<String, MapListRequirementDataDefinition> fullFilledRequirement, String fromResInstanceUid,
-                                                                 RelationshipInstDataDefinition relation, String hereIsTheKey, CapabilityRequirementRelationship relationship) {
+    private StorageOperationStatus moveFromFullFilledRequirement(Map<String, MapListRequirementDataDefinition> calculatedRequirement,
+                                                                 Map<String, MapListRequirementDataDefinition> fullFilledRequirement,
+                                                                 String fromResInstanceUid, RelationshipInstDataDefinition relation,
+                                                                 String hereIsTheKey, CapabilityRequirementRelationship relationship) {
         MapListRequirementDataDefinition reqByInstance = fullFilledRequirement.get(fromResInstanceUid);
         if (reqByInstance == null) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No requirement in fullfilled list for instance {} ", fromResInstanceUid);
             return StorageOperationStatus.GENERAL_ERROR;
         }
-        if (null == hereIsTheKey)
+        if (null == hereIsTheKey) {
             hereIsTheKey = reqByInstance.findKeyByItemUidMatch(relation.getRequirementId());
+        }
         if (null == hereIsTheKey) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No requirement with id {} in fulfilled list for instance {} ", relation.getRequirementId(), fromResInstanceUid);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "No requirement with id {} in fulfilled list for instance {} ", relation.getRequirementId(),
+                    fromResInstanceUid);
             return StorageOperationStatus.GENERAL_ERROR;
         }
         ListRequirementDataDefinition reqByType = reqByInstance.findByKey(hereIsTheKey);
@@ -1871,7 +2166,8 @@ public class NodeTemplateOperation extends BaseOperation {
         boolean found = false;
         while (iterator.hasNext()) {
             RequirementDataDefinition req = iterator.next();
-            if (req.getOwnerId().equals(relation.getRequirementOwnerId()) && req.getName().equals(relation.getRequirement()) && req.getUniqueId().equals(relation.getRequirementId())) {
+            if (req.getOwnerId().equals(relation.getRequirementOwnerId()) && req.getName().equals(relation.getRequirement()) && req.getUniqueId()
+                .equals(relation.getRequirementId())) {
                 found = true;
                 iterator.remove();
                 // return to calculated list
@@ -1879,7 +2175,6 @@ public class NodeTemplateOperation extends BaseOperation {
                 Integer leftIntValue = Integer.parseInt(leftOccurrences);
                 ++leftIntValue;
                 req.setLeftOccurrences(String.valueOf(leftIntValue));
-
                 MapListRequirementDataDefinition mapListReqDataDef = calculatedRequirement.get(fromResInstanceUid);
                 if (mapListReqDataDef == null) {
                     mapListReqDataDef = new MapListRequirementDataDefinition();
@@ -1890,40 +2185,43 @@ public class NodeTemplateOperation extends BaseOperation {
                     mapListReqDataDef.put(hereIsTheKey, findByKey);
                 }
                 findByKey.add(req);
-                if (relationship != null)
+                if (relationship != null) {
                     relationship.setRequirement(req);
+                }
                 break;
             }
         }
         if (!found) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No requirement type {} with ownerId {} in fulfilled list for instance {} ", hereIsTheKey, relation.getRequirementOwnerId(), fromResInstanceUid);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "No requirement type {} with ownerId {} in fulfilled list for instance {} ", hereIsTheKey,
+                    relation.getRequirementOwnerId(), fromResInstanceUid);
             return StorageOperationStatus.GENERAL_ERROR;
         }
         return StorageOperationStatus.OK;
-
     }
 
     public StorageOperationStatus updateCustomizationUUID(String componentInstanceId, CompositionDataDefinition compositionDataDefinition) {
         ComponentInstanceDataDefinition componentInstance = compositionDataDefinition.getComponentInstances().get(componentInstanceId);
-
         if (componentInstance == null) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch component instance by id {} from map of instances ", componentInstanceId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch component instance by id {} from map of instances ", componentInstanceId);
             return StorageOperationStatus.NOT_FOUND;
         }
         UUID uuid = UUID.randomUUID();
         componentInstance.setCustomizationUUID(uuid.toString());
-
         return StorageOperationStatus.OK;
     }
 
-    public <T extends ToscaDataDefinition> Either<Map<JsonPresentationFields, T>, StorageOperationStatus> connectInstancesInContainer(String fromResInstanceUid, String toResInstanceUid, RelationshipInfo relationPair, boolean originUI,
-                                                                                                                                      Map<String, MapListCapabilityDataDefinition> calculatedCapabilty, Map<String, MapListRequirementDataDefinition> calculatedRequirement, Map<String, MapListCapabilityDataDefinition> fullfilledCapabilty,
-                                                                                                                                      Map<String, MapListRequirementDataDefinition> fullfilledRequirement, CompositionDataDefinition compositionDataDefinition, String containerId) {
+    public <T extends ToscaDataDefinition> Either<Map<JsonPresentationFields, T>, StorageOperationStatus> connectInstancesInContainer(
+        String fromResInstanceUid, String toResInstanceUid, RelationshipInfo relationPair, boolean originUI,
+        Map<String, MapListCapabilityDataDefinition> calculatedCapabilty, Map<String, MapListRequirementDataDefinition> calculatedRequirement,
+        Map<String, MapListCapabilityDataDefinition> fullfilledCapabilty, Map<String, MapListRequirementDataDefinition> fullfilledRequirement,
+        CompositionDataDefinition compositionDataDefinition, String containerId) {
         String requirement = relationPair.getRequirement();
         Map<String, ComponentInstanceDataDefinition> componentInstances = compositionDataDefinition.getComponentInstances();
-
-        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Going to associate resource instance {} to resource instance {} under component {}. Requirement is {}.", fromResInstanceUid, toResInstanceUid, containerId, requirement);
-
+        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
+            "Going to associate resource instance {} to resource instance {} under component {}. Requirement is {}.", fromResInstanceUid,
+            toResInstanceUid, containerId, requirement);
         ComponentInstanceDataDefinition fromResourceInstData = componentInstances.get(fromResInstanceUid);
         if (fromResourceInstData == null) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to find from resource instance {}.", fromResInstanceUid);
@@ -1934,39 +2232,48 @@ public class NodeTemplateOperation extends BaseOperation {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to find to resource instance {}.", toResInstanceUid);
             return Either.right(StorageOperationStatus.NOT_FOUND);
         }
-
-        Either<Map<JsonPresentationFields, T>, StorageOperationStatus> reqVsCap = connectRequirementVsCapability(fromResourceInstData, toResourceInstData, relationPair, originUI, calculatedCapabilty, calculatedRequirement, fullfilledCapabilty,
-                fullfilledRequirement, containerId);
+        Either<Map<JsonPresentationFields, T>, StorageOperationStatus> reqVsCap = connectRequirementVsCapability(fromResourceInstData,
+            toResourceInstData, relationPair, originUI, calculatedCapabilty, calculatedRequirement, fullfilledCapabilty, fullfilledRequirement,
+            containerId);
         if (reqVsCap.isRight()) {
             StorageOperationStatus status = reqVsCap.right().value();
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to connect requirement {} between resource instance {} to resource instance {}. status is {}", requirement, fromResInstanceUid, toResInstanceUid, status);
+            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
+                "Failed to connect requirement {} between resource instance {} to resource instance {}. status is {}", requirement,
+                fromResInstanceUid, toResInstanceUid, status);
             return Either.right(status);
         }
         Map<JsonPresentationFields, T> relationship = reqVsCap.left().value();
-
         // add to json new relations
-        compositionDataDefinition.addRelation(((RelationshipInstDataDefinition) relationship.get(JsonPresentationFields.RELATIONSHIP)).getUniqueId(), (RelationshipInstDataDefinition) relationship.get(JsonPresentationFields.RELATIONSHIP));
-
+        compositionDataDefinition.addRelation(((RelationshipInstDataDefinition) relationship.get(JsonPresentationFields.RELATIONSHIP)).getUniqueId(),
+            (RelationshipInstDataDefinition) relationship.get(JsonPresentationFields.RELATIONSHIP));
         return Either.left(relationship);
     }
 
-    private Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> fetchContainerCalculatedCapability(GraphVertex containerV, EdgeLabelEnum capLabel) {
-
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, JanusGraphOperationStatus> calculatedCapabiltyEither = getDataAndVertexFromGraph(containerV, capLabel);
+    private Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> fetchContainerCalculatedCapability(
+        GraphVertex containerV, EdgeLabelEnum capLabel) {
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, JanusGraphOperationStatus> calculatedCapabiltyEither =
+            getDataAndVertexFromGraph(
+                containerV, capLabel);
         if (calculatedCapabiltyEither.isRight()) {
             JanusGraphOperationStatus error = calculatedCapabiltyEither.right().value();
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated capabilties for container {}.", containerV.getUniqueId(), error);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated capabilties for container {}.", containerV.getUniqueId(), error);
             return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error));
         }
         Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>> calculatedCapabilty = calculatedCapabiltyEither.left().value();
         return Either.left(calculatedCapabilty);
     }
 
-    private Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> fetchContainerCalculatedRequirement(GraphVertex containerV, EdgeLabelEnum reqLabel) {
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, JanusGraphOperationStatus> calculatedRequirementEither = getDataAndVertexFromGraph(containerV, reqLabel);
+    private Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> fetchContainerCalculatedRequirement(
+        GraphVertex containerV, EdgeLabelEnum reqLabel) {
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, JanusGraphOperationStatus> calculatedRequirementEither =
+            getDataAndVertexFromGraph(
+                containerV, reqLabel);
         if (calculatedRequirementEither.isRight()) {
             JanusGraphOperationStatus error = calculatedRequirementEither.right().value();
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated requirements for container {}.", containerV.getUniqueId(), error);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated requirements for container {}.", containerV.getUniqueId(),
+                    error);
             return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error));
         }
         Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>> calculatedRequirement = calculatedRequirementEither.left().value();
@@ -1974,23 +2281,27 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     @SuppressWarnings("unchecked")
-    private <T extends ToscaDataDefinition> Either<Map<JsonPresentationFields, T>, StorageOperationStatus> connectRequirementVsCapability(ComponentInstanceDataDefinition fromResInstance, ComponentInstanceDataDefinition toResInstance,
-                                                                                                                                          RelationshipInfo relationPair, boolean originUI, Map<String, MapListCapabilityDataDefinition> calculatedCapabilty, Map<String, MapListRequirementDataDefinition> calculatedRequirement,
-                                                                                                                                          Map<String, MapListCapabilityDataDefinition> fullfilledCapabilty, Map<String, MapListRequirementDataDefinition> fullfilledRequirement, String containerId) {
+    private <T extends ToscaDataDefinition> Either<Map<JsonPresentationFields, T>, StorageOperationStatus> connectRequirementVsCapability(
+        ComponentInstanceDataDefinition fromResInstance, ComponentInstanceDataDefinition toResInstance, RelationshipInfo relationPair,
+        boolean originUI, Map<String, MapListCapabilityDataDefinition> calculatedCapabilty,
+        Map<String, MapListRequirementDataDefinition> calculatedRequirement, Map<String, MapListCapabilityDataDefinition> fullfilledCapabilty,
+        Map<String, MapListRequirementDataDefinition> fullfilledRequirement, String containerId) {
         String type = relationPair.getRelationship().getType();
         // capability
-
         String toInstId = toResInstance.getUniqueId();
         MapListCapabilityDataDefinition mapListCapabilityDataDefinition = calculatedCapabilty.get(toInstId);
         Map<JsonPresentationFields, T> capReqRelationship = new EnumMap<>(JsonPresentationFields.class);
-
         if (mapListCapabilityDataDefinition == null) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated capabilities for instance {} in container {}.", toInstId, containerId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated capabilities for instance {} in container {}.", toInstId,
+                    containerId);
             return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
         }
         ListCapabilityDataDefinition listCapabilityDataDefinition = mapListCapabilityDataDefinition.getMapToscaDataDefinition().get(type);
         if (listCapabilityDataDefinition == null) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated capabilities for type {} for instance {} in container {}.", type, toInstId, containerId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated capabilities for type {} for instance {} in container {}.", type,
+                    toInstId, containerId);
             return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
         }
         CapabilityDataDefinition capabilityForRelation = null;
@@ -2015,7 +2326,6 @@ public class NodeTemplateOperation extends BaseOperation {
                                 mapListCapabiltyFullFilledInst = new MapListCapabilityDataDefinition();
                                 fullfilledCapabilty.put(toInstId, mapListCapabiltyFullFilledInst);
                             }
-
                             ListCapabilityDataDefinition listCapabilityFull = mapListCapabiltyFullFilledInst.findByKey(type);
                             if (listCapabilityFull == null) {
                                 listCapabilityFull = new ListCapabilityDataDefinition();
@@ -2025,30 +2335,35 @@ public class NodeTemplateOperation extends BaseOperation {
                         }
                         break;
                     } else {
-                        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No left occurrences capabilty {} to {} in container {}.", capabilityForRelation.getType(), toInstId, containerId);
+                        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No left occurrences capabilty {} to {} in container {}.",
+                            capabilityForRelation.getType(), toInstId, containerId);
                         return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
                     }
                 }
             }
         }
         if (capabilityForRelation == null) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch capabilty for type {} for instance {} in container {}.", type, toInstId, containerId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch capabilty for type {} for instance {} in container {}.", type, toInstId,
+                    containerId);
             return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
         }
-
         // requirements
         String fromInstId = fromResInstance.getUniqueId();
         MapListRequirementDataDefinition mapListRequirementDataDefinition = calculatedRequirement.get(fromInstId);
         if (mapListRequirementDataDefinition == null) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated requirements for instance {} in container {}.", fromInstId, containerId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated requirements for instance {} in container {}.", fromInstId,
+                    containerId);
             return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
         }
         ListRequirementDataDefinition listRequirementDataDefinition = mapListRequirementDataDefinition.getMapToscaDataDefinition().get(type);
         if (listRequirementDataDefinition == null) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated requirements for type {} for instance {} in container {}.", type, fromInstId, containerId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch calculated requirements for type {} for instance {} in container {}.", type,
+                    fromInstId, containerId);
             return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
         }
-
         RequirementDataDefinition requirementForRelation = null;
         Iterator<RequirementDataDefinition> iteratorReq = listRequirementDataDefinition.getListToscaDataDefinition().iterator();
         while (iteratorReq.hasNext()) {
@@ -2071,7 +2386,6 @@ public class NodeTemplateOperation extends BaseOperation {
                                 mapListRequirementFullFilledInst = new MapListRequirementDataDefinition();
                                 fullfilledRequirement.put(fromInstId, mapListRequirementFullFilledInst);
                             }
-
                             ListRequirementDataDefinition listRequirementFull = mapListRequirementFullFilledInst.findByKey(type);
                             if (listRequirementFull == null) {
                                 listRequirementFull = new ListRequirementDataDefinition();
@@ -2081,34 +2395,37 @@ public class NodeTemplateOperation extends BaseOperation {
                         }
                         break;
                     } else {
-                        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No left occurrences requirement {} from {} to {} in container {}.", requirementForRelation.getCapability(), fromInstId, toInstId, containerId);
+                        CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No left occurrences requirement {} from {} to {} in container {}.",
+                            requirementForRelation.getCapability(), fromInstId, toInstId, containerId);
                         return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
                     }
                 }
             }
         }
         if (requirementForRelation == null) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch requirement for type {} for instance {} in container {}.", type, toInstId, containerId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to fetch requirement for type {} for instance {} in container {}.", type, toInstId,
+                    containerId);
             return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
         }
         if (!capabilityForRelation.getType().equals(requirementForRelation.getCapability())) {
-            CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "No macth for capability from type {} and requirement {} from {} to {} in container {}.", capabilityForRelation.getType(), requirementForRelation.getCapability(), fromInstId, toInstId,
-                    containerId);
+            CommonUtility
+                .addRecordToLog(log, LogLevelEnum.DEBUG, "No macth for capability from type {} and requirement {} from {} to {} in container {}.",
+                    capabilityForRelation.getType(), requirementForRelation.getCapability(), fromInstId, toInstId, containerId);
             return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
         }
-
         RelationshipInstDataDefinition relationshipTypeData = buildRelationshipInstData(fromInstId, toInstId, relationPair, originUI);
-        if (requirementForRelation.getRelationship() != null)
+        if (requirementForRelation.getRelationship() != null) {
             relationshipTypeData.setType(requirementForRelation.getRelationship());
+        }
         capReqRelationship.put(JsonPresentationFields.RELATIONSHIP, (T) relationshipTypeData);
         return Either.left(capReqRelationship);
     }
 
-    private RelationshipInstDataDefinition buildRelationshipInstData(String fromResInstanceUid, String toInstId, RelationshipInfo relationPair, boolean originUI) {
-
+    private RelationshipInstDataDefinition buildRelationshipInstData(String fromResInstanceUid, String toInstId, RelationshipInfo relationPair,
+                                                                     boolean originUI) {
         RelationshipInstDataDefinition relationshipInstData = new RelationshipInstDataDefinition();
-        relationshipInstData.setUniqueId(UniqueIdBuilder.buildRelationsipInstInstanceUid(fromResInstanceUid, toInstId));
-
+        relationshipInstData.setUniqueId(UniqueIdBuilder.buildRelationshipInstInstanceUid());
         relationshipInstData.setType(relationPair.getRelationship().getType());
         Long creationDate = System.currentTimeMillis();
         relationshipInstData.setCreationTime(creationDate);
@@ -2122,25 +2439,24 @@ public class NodeTemplateOperation extends BaseOperation {
         relationshipInstData.setRequirement(relationPair.getRequirement());
         relationshipInstData.setCapability(relationPair.getCapability());
         relationshipInstData.setOriginUI(originUI);
-
         return relationshipInstData;
     }
 
-    public <T extends Component> Map<String, ComponentInstanceDataDefinition> associateComponentInstancesToComponent(Component containerComponent, Map<ComponentInstance, T> componentInstanceTMap, GraphVertex containerVertex, boolean allowDeleted, boolean isUpdateCsar) {
-
+    public <T extends Component> Map<String, ComponentInstanceDataDefinition> associateComponentInstancesToComponent(Component containerComponent,
+                                                                                                                     Map<ComponentInstance, T> componentInstanceTMap,
+                                                                                                                     GraphVertex containerVertex,
+                                                                                                                     boolean allowDeleted,
+                                                                                                                     boolean isUpdateCsar) {
         String containerId = containerComponent.getUniqueId();
         Map<String, ComponentInstanceDataDefinition> instancesJsonData;
         Either<GraphVertex, JanusGraphOperationStatus> updateElement = null;
         if (!validateInstanceNames(componentInstanceTMap)) {
             throw new StorageException(StorageOperationStatus.INCONSISTENCY);
         }
-        if (!allowDeleted) {
-            if (!validateDeletedResources(componentInstanceTMap)) {
-                throw new StorageException(StorageOperationStatus.INCONSISTENCY);
-            }
+        if (!allowDeleted && !validateDeletedResources(componentInstanceTMap)) {
+            throw new StorageException(StorageOperationStatus.INCONSISTENCY);
         }
         instancesJsonData = convertToComponentInstanceDataDefinition(componentInstanceTMap, containerId, isUpdateCsar);
-
         if (MapUtils.isNotEmpty(instancesJsonData)) {
             containerVertex.setJsonMetadataField(JsonPresentationFields.LAST_UPDATE_DATE, System.currentTimeMillis());
             Map<String, CompositionDataDefinition> compositions = new HashMap<>();
@@ -2150,7 +2466,8 @@ public class NodeTemplateOperation extends BaseOperation {
             containerVertex.setJson(compositions);
             updateElement = janusGraphDao.updateVertex(containerVertex);
             if (updateElement.isRight()) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update topology template {} with new component instances. ", containerComponent.getName());
+                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update topology template {} with new component instances. ",
+                    containerComponent.getName());
                 throw new StorageException(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(updateElement.right().value()));
             }
         }
@@ -2161,11 +2478,12 @@ public class NodeTemplateOperation extends BaseOperation {
         return instancesJsonData;
     }
 
-    private <T extends Component> Map<String, ComponentInstanceDataDefinition> convertToComponentInstanceDataDefinition(Map<ComponentInstance, T> componentInstanceTMap, String containerId, boolean isUpdateCsar) {
-
+    private <T extends Component> Map<String, ComponentInstanceDataDefinition> convertToComponentInstanceDataDefinition(
+        Map<ComponentInstance, T> componentInstanceTMap, String containerId, boolean isUpdateCsar) {
         Map<String, ComponentInstanceDataDefinition> instances = new HashMap<>();
         for (Entry<ComponentInstance, T> entry : componentInstanceTMap.entrySet()) {
-            ComponentInstanceDataDefinition instance = buildComponentInstanceDataDefinition(entry.getKey(), containerId, null, !isUpdateCsar || entry.getKey().isCreatedFromCsar(), ModelConverter.convertToToscaElement(entry.getValue()));
+            ComponentInstanceDataDefinition instance = buildComponentInstanceDataDefinition(entry.getKey(), containerId, null,
+                !isUpdateCsar || entry.getKey().isCreatedFromCsar(), ModelConverter.convertToToscaElement(entry.getValue()));
             instances.put(instance.getUniqueId(), instance);
         }
         return instances;
@@ -2175,7 +2493,8 @@ public class NodeTemplateOperation extends BaseOperation {
         boolean result = true;
         for (Component component : resourcesInstancesMap.values()) {
             if (component.getIsDeleted() != null && component.getIsDeleted()) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Component {} is already deleted. Cannot add component instance. ", component.getName());
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, "Component {} is already deleted. Cannot add component instance. ", component.getName());
                 result = false;
                 break;
             }
@@ -2188,14 +2507,14 @@ public class NodeTemplateOperation extends BaseOperation {
         Set<String> names = new HashSet<>();
         for (ComponentInstance instance : resourcesInstancesMap.keySet()) {
             if (StringUtils.isEmpty(instance.getName())) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
-                    "Component instance {} name is empty. Cannot add component instance. ", instance.getUniqueId());
+                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Component instance {} name is empty. Cannot add component instance. ",
+                    instance.getUniqueId());
                 result = false;
                 break;
             } else if (names.contains(instance.getName())) {
-                CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
-                    "Component instance with the name {} already exsists. Cannot add component instance. ",
-                    instance.getName());
+                CommonUtility
+                    .addRecordToLog(log, LogLevelEnum.DEBUG, "Component instance with the name {} already exsists. Cannot add component instance. ",
+                        instance.getName());
                 result = false;
                 break;
             } else {
@@ -2205,17 +2524,22 @@ public class NodeTemplateOperation extends BaseOperation {
         return result;
     }
 
-    public StorageOperationStatus addDeploymentArtifactsToInstance(String toscaElementId, String instanceId, Map<String, ArtifactDataDefinition> instDeplArtifacts) {
-        return addArtifactsToInstance(toscaElementId, instanceId, instDeplArtifacts, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS, VertexTypeEnum.INST_DEPLOYMENT_ARTIFACTS);
+    public StorageOperationStatus addDeploymentArtifactsToInstance(String toscaElementId, String instanceId,
+                                                                   Map<String, ArtifactDataDefinition> instDeplArtifacts) {
+        return addArtifactsToInstance(toscaElementId, instanceId, instDeplArtifacts, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS,
+            VertexTypeEnum.INST_DEPLOYMENT_ARTIFACTS);
     }
 
-    public StorageOperationStatus addInformationalArtifactsToInstance(String toscaElementId, String instanceId, Map<String, ArtifactDataDefinition> instDeplArtifacts) {
-        return addArtifactsToInstance(toscaElementId, instanceId, instDeplArtifacts, EdgeLabelEnum.INSTANCE_ARTIFACTS, VertexTypeEnum.INSTANCE_ARTIFACTS);
+    public StorageOperationStatus addInformationalArtifactsToInstance(String toscaElementId, String instanceId,
+                                                                      Map<String, ArtifactDataDefinition> instDeplArtifacts) {
+        return addArtifactsToInstance(toscaElementId, instanceId, instDeplArtifacts, EdgeLabelEnum.INSTANCE_ARTIFACTS,
+            VertexTypeEnum.INSTANCE_ARTIFACTS);
     }
 
-    public StorageOperationStatus addArtifactsToInstance(String toscaElementId, String instanceId, Map<String, ArtifactDataDefinition> instDeplArtifacts, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexType) {
-        Either<GraphVertex, JanusGraphOperationStatus> metadataVertex = janusGraphDao
-            .getVertexById(toscaElementId, JsonParseFlagEnum.NoParse);
+    public StorageOperationStatus addArtifactsToInstance(String toscaElementId, String instanceId,
+                                                         Map<String, ArtifactDataDefinition> instDeplArtifacts, EdgeLabelEnum edgeLabel,
+                                                         VertexTypeEnum vertexType) {
+        Either<GraphVertex, JanusGraphOperationStatus> metadataVertex = janusGraphDao.getVertexById(toscaElementId, JsonParseFlagEnum.NoParse);
         if (metadataVertex.isRight()) {
             JanusGraphOperationStatus status = metadataVertex.right().value();
             if (status == JanusGraphOperationStatus.NOT_FOUND) {
@@ -2225,13 +2549,11 @@ public class NodeTemplateOperation extends BaseOperation {
         }
         MapArtifactDataDefinition instArtifacts = new MapArtifactDataDefinition(instDeplArtifacts);
         return addToscaDataDeepElementsBlockToToscaElement(metadataVertex.left().value(), edgeLabel, vertexType, instArtifacts, instanceId);
-
     }
 
     @SuppressWarnings({"unchecked"})
     public StorageOperationStatus generateCustomizationUUIDOnInstance(String componentId, String instanceId) {
-        Either<GraphVertex, JanusGraphOperationStatus> metadataVertex = janusGraphDao
-            .getVertexById(componentId, JsonParseFlagEnum.ParseAll);
+        Either<GraphVertex, JanusGraphOperationStatus> metadataVertex = janusGraphDao.getVertexById(componentId, JsonParseFlagEnum.ParseAll);
         if (metadataVertex.isRight()) {
             JanusGraphOperationStatus status = metadataVertex.right().value();
             if (status == JanusGraphOperationStatus.NOT_FOUND) {
@@ -2257,7 +2579,8 @@ public class NodeTemplateOperation extends BaseOperation {
 
     public StorageOperationStatus generateCustomizationUUIDOnInstanceGroup(String componentId, String instanceId, List<String> groupInstances) {
         if (groupInstances != null) {
-            Either<Map<String, MapGroupsDataDefinition>, JanusGraphOperationStatus> dataFromGraph = getDataFromGraph(componentId, EdgeLabelEnum.INST_GROUPS);
+            Either<Map<String, MapGroupsDataDefinition>, JanusGraphOperationStatus> dataFromGraph = getDataFromGraph(componentId,
+                EdgeLabelEnum.INST_GROUPS);
             if (dataFromGraph.isRight()) {
                 return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(dataFromGraph.right().value());
             }
@@ -2275,95 +2598,141 @@ public class NodeTemplateOperation extends BaseOperation {
                 UUID uuid = UUID.randomUUID();
                 groupInst.setCustomizationUUID(uuid.toString());
             }
-
         }
         return StorageOperationStatus.OK;
     }
 
-    public StorageOperationStatus addGroupInstancesToComponentInstance(Component containerComponent, ComponentInstance componentInstance, List<GroupInstance> groupInstances) {
-
+    public StorageOperationStatus addGroupInstancesToComponentInstance(Component containerComponent, ComponentInstance componentInstance,
+                                                                       List<GroupInstance> groupInstances) {
         return addToscaDataDeepElementsBlockToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_GROUPS, VertexTypeEnum.INST_GROUPS,
-                new MapDataDefinition<>(groupInstances.stream().collect(Collectors.toMap(GroupInstanceDataDefinition::getName, gi -> gi))), componentInstance.getUniqueId());
+            new MapDataDefinition<>(groupInstances.stream().collect(Collectors.toMap(GroupInstanceDataDefinition::getName, gi -> gi))),
+            componentInstance.getUniqueId());
     }
 
-    public StorageOperationStatus addDeploymentArtifactsToComponentInstance(Component containerComponent, ComponentInstance componentInstance, Map<String, ArtifactDefinition> deploymentArtifacts) {
-
-        return addToscaDataDeepElementsBlockToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS, VertexTypeEnum.INST_DEPLOYMENT_ARTIFACTS, new MapDataDefinition<>(deploymentArtifacts),
-                componentInstance.getUniqueId());
+    public StorageOperationStatus addDeploymentArtifactsToComponentInstance(Component containerComponent, ComponentInstance componentInstance,
+                                                                            Map<String, ArtifactDefinition> deploymentArtifacts) {
+        return addToscaDataDeepElementsBlockToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS,
+            VertexTypeEnum.INST_DEPLOYMENT_ARTIFACTS, new MapDataDefinition<>(deploymentArtifacts), componentInstance.getUniqueId());
     }
 
-    public StorageOperationStatus updateComponentInstanceProperty(Component containerComponent, String componentInstanceId, ComponentInstanceProperty property) {
-
+    public StorageOperationStatus updateComponentInstanceProperty(Component containerComponent, String componentInstanceId,
+                                                                  ComponentInstanceProperty property) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
-        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES, property, pathKeys, JsonPresentationFields.NAME);
+        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_PROPERTIES,
+            VertexTypeEnum.INST_PROPERTIES, property, pathKeys, JsonPresentationFields.NAME);
     }
 
-    public StorageOperationStatus updateComponentInstanceCapabilityProperty(Component containerComponent, String componentInstanceId, String capabilityPropertyKey, ComponentInstanceProperty property) {
+    public StorageOperationStatus updateComponentInstanceCapabilityProperty(Component containerComponent, String componentInstanceId,
+                                                                            String capabilityPropertyKey, ComponentInstanceProperty property) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
         pathKeys.add(capabilityPropertyKey);
-        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, VertexTypeEnum.CALCULATED_CAP_PROPERTIES, property, pathKeys, JsonPresentationFields.NAME);
+        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
+            VertexTypeEnum.CALCULATED_CAP_PROPERTIES, property, pathKeys, JsonPresentationFields.NAME);
     }
 
-    public StorageOperationStatus overrideComponentCapabilitiesProperties(Component containerComponent, Map<String, MapCapabilityProperty> capabilityPropertyMap) {
+    public StorageOperationStatus overrideComponentCapabilitiesProperties(Component containerComponent,
+                                                                          Map<String, MapCapabilityProperty> capabilityPropertyMap) {
         return overrideToscaDataOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.CALCULATED_CAP_PROPERTIES, capabilityPropertyMap);
     }
 
-    public StorageOperationStatus addComponentInstanceProperty(Component containerComponent, String componentInstanceId, ComponentInstanceProperty property) {
+    public StorageOperationStatus addComponentInstanceProperty(Component containerComponent, String componentInstanceId,
+                                                               ComponentInstanceProperty property) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
-        return addToscaDataDeepElementToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES, property, pathKeys, JsonPresentationFields.NAME);
+        return addToscaDataDeepElementToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES,
+            property, pathKeys, JsonPresentationFields.NAME);
     }
 
-    public StorageOperationStatus updateComponentInstanceProperties(Component containerComponent, String componentInstanceId, List<ComponentInstanceProperty> properties) {
+    public StorageOperationStatus updateComponentInstanceProperties(Component containerComponent, String componentInstanceId,
+                                                                    List<ComponentInstanceProperty> properties) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
-        return updateToscaDataDeepElementsOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES, properties, pathKeys, JsonPresentationFields.NAME);
+        return updateToscaDataDeepElementsOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_PROPERTIES,
+            VertexTypeEnum.INST_PROPERTIES, properties, pathKeys, JsonPresentationFields.NAME);
+    }
+
+    public StorageOperationStatus updateComponentInstanceAttributes(final Component containerComponent, final String componentInstanceId,
+                                                                    final List<ComponentInstanceAttribute> attributes) {
+        final List<String> pathKeys = Arrays.asList(componentInstanceId);
+        return updateToscaDataDeepElementsOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_ATTRIBUTES,
+            VertexTypeEnum.INST_ATTRIBUTES, attributes, pathKeys, JsonPresentationFields.NAME);
+    }
+
+    public StorageOperationStatus updateComponentInstanceAttribute(final Component containerComponent, final String componentInstanceId,
+                                                                   final ComponentInstanceAttribute attribute) {
+        final List<String> pathKeys = Arrays.asList(componentInstanceId);
+        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_ATTRIBUTES,
+            VertexTypeEnum.INST_ATTRIBUTES, attribute, pathKeys, JsonPresentationFields.NAME);
     }
 
-    public StorageOperationStatus updateComponentInstanceAttribute(Component containerComponent, String componentInstanceId, ComponentInstanceAttribute property){
+    public StorageOperationStatus addComponentInstanceAttribute(Component containerComponent, String componentInstanceId,
+                                                                ComponentInstanceAttribute attribute) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
-        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_ATTRIBUTES, VertexTypeEnum.INST_ATTRIBUTES, property, pathKeys, JsonPresentationFields.NAME);
+        return addToscaDataDeepElementToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_ATTRIBUTES, VertexTypeEnum.INST_ATTRIBUTES,
+            attribute, pathKeys, JsonPresentationFields.NAME);
     }
 
-    public StorageOperationStatus addComponentInstanceAttribute(Component containerComponent, String componentInstanceId, ComponentInstanceAttribute attribute){
+    public StorageOperationStatus updateComponentInstanceInput(Component containerComponent, String componentInstanceId,
+                                                               ComponentInstanceInput property) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
-        return addToscaDataDeepElementToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_ATTRIBUTES, VertexTypeEnum.INST_ATTRIBUTES, attribute, pathKeys, JsonPresentationFields.NAME);
+        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS,
+            property, pathKeys, JsonPresentationFields.NAME);
     }
 
-    public StorageOperationStatus updateComponentInstanceInput(Component containerComponent, String componentInstanceId, ComponentInstanceInput property) {
+    public StorageOperationStatus updateComponentInstanceOutput(Component containerComponent, String componentInstanceId,
+                                                                ComponentInstanceOutput property) {
+        List<String> pathKeys = new ArrayList<>();
+        pathKeys.add(componentInstanceId);
+        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_OUTPUTS, VertexTypeEnum.INST_OUTPUTS,
+            property, pathKeys, JsonPresentationFields.NAME);
+    }
 
+    public StorageOperationStatus updateComponentInstanceInputs(Component containerComponent, String componentInstanceId,
+                                                                List<ComponentInstanceInput> properties) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
-        return updateToscaDataDeepElementOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS, property, pathKeys, JsonPresentationFields.NAME);
+        return updateToscaDataDeepElementsOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS,
+            properties, pathKeys, JsonPresentationFields.NAME);
     }
 
-    public StorageOperationStatus updateComponentInstanceInputs(Component containerComponent, String componentInstanceId, List<ComponentInstanceInput> properties) {
+    public StorageOperationStatus updateComponentInstanceOutputs(Component containerComponent, String componentInstanceId,
+                                                                 List<ComponentInstanceOutput> properties) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
-        return updateToscaDataDeepElementsOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS, properties, pathKeys, JsonPresentationFields.NAME);
+        return updateToscaDataDeepElementsOfToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_OUTPUTS, VertexTypeEnum.INST_OUTPUTS,
+            properties, pathKeys, JsonPresentationFields.NAME);
     }
 
-    public StorageOperationStatus addComponentInstanceInput(Component containerComponent, String componentInstanceId, ComponentInstanceInput property) {
+    public StorageOperationStatus addComponentInstanceInput(Component containerComponent, String componentInstanceId,
+                                                            ComponentInstanceInput property) {
         List<String> pathKeys = new ArrayList<>();
         pathKeys.add(componentInstanceId);
-        return addToscaDataDeepElementToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS, property, pathKeys, JsonPresentationFields.NAME);
+        return addToscaDataDeepElementToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS,
+            property, pathKeys, JsonPresentationFields.NAME);
+    }
+
+    public StorageOperationStatus addComponentInstanceOutput(Component containerComponent, String componentInstanceId,
+                                                             ComponentInstanceOutput property) {
+        List<String> pathKeys = new ArrayList<>() {
+        };
+        pathKeys.add(componentInstanceId);
+        return addToscaDataDeepElementToToscaElement(containerComponent.getUniqueId(), EdgeLabelEnum.INST_OUTPUTS, VertexTypeEnum.INST_OUTPUTS,
+            property, pathKeys, JsonPresentationFields.NAME);
     }
 
     public StorageOperationStatus createInstanceEdge(GraphVertex metadataVertex, ComponentInstanceDataDefinition componentInstance) {
         String instUniqueId = componentInstance.getUniqueId();
-
         // create edge between container and origin ( in case of proxy this edge will be to ProxyService node type)
-        StorageOperationStatus result = createOrUpdateInstanceEdge(metadataVertex, EdgeLabelEnum.INSTANCE_OF, componentInstance.getComponentUid(), instUniqueId).either(v -> StorageOperationStatus.OK,
-                 DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
-
+        StorageOperationStatus result = createOrUpdateInstanceEdge(metadataVertex, EdgeLabelEnum.INSTANCE_OF, componentInstance.getComponentUid(),
+            instUniqueId).either(v -> StorageOperationStatus.OK, DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
         if (result == StorageOperationStatus.OK && componentInstance.getIsProxy()) {
             // create edge between container and service origin
             result = createOrUpdateInstanceEdge(metadataVertex, EdgeLabelEnum.PROXY_OF, componentInstance.getSourceModelUid(), instUniqueId)
-                        .either(v -> StorageOperationStatus.OK, DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
+                .either(v -> StorageOperationStatus.OK, DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
         }
         return result;
     }
@@ -2375,16 +2744,13 @@ public class NodeTemplateOperation extends BaseOperation {
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(vertexById.right().value());
         }
         GraphVertex metadataVertex = vertexById.left().value();
-
         EnumMap<GraphPropertyEnum, Object> props = new EnumMap<>(GraphPropertyEnum.class);
         props.put(GraphPropertyEnum.UUID, serviceUUID);
         props.put(GraphPropertyEnum.IS_HIGHEST_VERSION, true);
-
         EnumMap<GraphPropertyEnum, Object> hasNot = new EnumMap<>(GraphPropertyEnum.class);
         hasNot.put(GraphPropertyEnum.IS_DELETED, true);
-
         Either<List<GraphVertex>, JanusGraphOperationStatus> byCriteria = janusGraphDao
-            .getByCriteria(VertexTypeEnum.TOPOLOGY_TEMPLATE, props,hasNot, JsonParseFlagEnum.ParseMetadata );
+            .getByCriteria(VertexTypeEnum.TOPOLOGY_TEMPLATE, props, hasNot, JsonParseFlagEnum.ParseMetadata);
         if (byCriteria.isRight()) {
             log.debug("Failed to fetch vertex by criteria {} error {}", props, byCriteria.right().value());
             return DaoStatusConverter.convertJanusGraphStatusToStorageStatus(byCriteria.right().value());
@@ -2394,49 +2760,43 @@ public class NodeTemplateOperation extends BaseOperation {
         if (vertecies != null) {
             GraphVertex serviceVertex = vertecies.get(0);
             //remove previous edges
-
             log.debug("Try to create or update edge between resource {} and service {} ", metadataVertex, serviceVertex.getUniqueId());
             // create edge between container and service reference
-            result = createOrUpdateInstanceEdge(metadataVertex, EdgeLabelEnum.ALLOTTED_OF, serviceVertex.getUniqueId(), instanceId).either(v -> StorageOperationStatus.OK,
-                    DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
+            result = createOrUpdateInstanceEdge(metadataVertex, EdgeLabelEnum.ALLOTTED_OF, serviceVertex.getUniqueId(), instanceId)
+                .either(v -> StorageOperationStatus.OK, DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
         }
         return result;
     }
 
-
     public StorageOperationStatus removeInstanceEdge(GraphVertex metadataVertex, ComponentInstanceDataDefinition componentInstance) {
         String instUniqueId = componentInstance.getUniqueId();
-
         // create edge between container and origin ( in case of proxy this edge will be to ProxyService node type)
-        StorageOperationStatus result = removeOrUpdateInstanceEdge(metadataVertex, EdgeLabelEnum.INSTANCE_OF, componentInstance.getComponentUid(), instUniqueId)
-                .either(v -> StorageOperationStatus.OK,
-                DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
-
+        StorageOperationStatus result = removeOrUpdateInstanceEdge(metadataVertex, EdgeLabelEnum.INSTANCE_OF, componentInstance.getComponentUid(),
+            instUniqueId).either(v -> StorageOperationStatus.OK, DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
         if (componentInstance.getIsProxy()) {
             // create edge between container and service origin
             result = removeOrUpdateInstanceEdge(metadataVertex, EdgeLabelEnum.PROXY_OF, componentInstance.getSourceModelUid(), instUniqueId)
-                    .either(v -> StorageOperationStatus.OK, DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
+                .either(v -> StorageOperationStatus.OK, DaoStatusConverter::convertJanusGraphStatusToStorageStatus);
         }
         return result;
     }
 
-    private Either<GraphVertex, JanusGraphOperationStatus> createOrUpdateInstanceEdge(GraphVertex metadataVertex, EdgeLabelEnum edgeLabel, String componentUid, String instUniqueId) {
+    private Either<GraphVertex, JanusGraphOperationStatus> createOrUpdateInstanceEdge(GraphVertex metadataVertex, EdgeLabelEnum edgeLabel,
+                                                                                      String componentUid, String instUniqueId) {
         Map<GraphPropertyEnum, Object> properties = new EnumMap<>(GraphPropertyEnum.class);
         properties.put(GraphPropertyEnum.UNIQUE_ID, componentUid);
-
-        return janusGraphDao.getEdgeByChildrenVertexProperties(metadataVertex, edgeLabel, properties)
-                .left()
-                .bind(v -> addInstanceToPropertyOnEdge(instUniqueId, v, metadataVertex))
-                .right()
-                .bind(s -> createInstanceEdge(metadataVertex, edgeLabel, componentUid, instUniqueId, s));
+        return janusGraphDao.getEdgeByChildrenVertexProperties(metadataVertex, edgeLabel, properties).left()
+            .bind(v -> addInstanceToPropertyOnEdge(instUniqueId, v, metadataVertex)).right()
+            .bind(s -> createInstanceEdge(metadataVertex, edgeLabel, componentUid, instUniqueId, s));
     }
 
-    private Either<GraphVertex, JanusGraphOperationStatus> removeOrUpdateInstanceEdge(GraphVertex metadataVertex, EdgeLabelEnum edgeLabel, String componentUid, String instUniqueId) {
+    private Either<GraphVertex, JanusGraphOperationStatus> removeOrUpdateInstanceEdge(GraphVertex metadataVertex, EdgeLabelEnum edgeLabel,
+                                                                                      String componentUid, String instUniqueId) {
         Map<GraphPropertyEnum, Object> properties = new EnumMap<>(GraphPropertyEnum.class);
         properties.put(GraphPropertyEnum.UNIQUE_ID, componentUid);
-
-        return janusGraphDao.getEdgeByChildrenVertexProperties(metadataVertex, edgeLabel, properties).left().bind(v -> removeInstanceFromPropertyOnEdge(instUniqueId, v, metadataVertex)).right()
-                .map(err -> removeInstanceEdgeLogError(metadataVertex, edgeLabel, componentUid, err));
+        return janusGraphDao.getEdgeByChildrenVertexProperties(metadataVertex, edgeLabel, properties).left()
+            .bind(v -> removeInstanceFromPropertyOnEdge(instUniqueId, v, metadataVertex)).right()
+            .map(err -> removeInstanceEdgeLogError(metadataVertex, edgeLabel, componentUid, err));
     }
 
     private Either<GraphVertex, JanusGraphOperationStatus> addInstanceToPropertyOnEdge(String instUniqueId, Edge edge, GraphVertex metadataVertex) {
@@ -2455,12 +2815,13 @@ public class NodeTemplateOperation extends BaseOperation {
             edge.property(EdgePropertyEnum.INSTANCES.getProperty(), jsonArr);
         } catch (IOException e) {
             log.debug("Failed to convert INSTANCES edge property to json for container {}", metadataVertex.getUniqueId(), e);
-           return Either.right(JanusGraphOperationStatus.GENERAL_ERROR);
+            return Either.right(JanusGraphOperationStatus.GENERAL_ERROR);
         }
         return Either.left(metadataVertex);
     }
 
-    private Either<GraphVertex, JanusGraphOperationStatus> removeInstanceFromPropertyOnEdge(String instUniqueId, Edge edge, GraphVertex metadataVertex) {
+    private Either<GraphVertex, JanusGraphOperationStatus> removeInstanceFromPropertyOnEdge(String instUniqueId, Edge edge,
+                                                                                            GraphVertex metadataVertex) {
         // edge exist need to add instance id to list on edge's property
         List<String> property = (List<String>) janusGraphDao.getProperty(edge, EdgePropertyEnum.INSTANCES);
         if (property == null) {
@@ -2479,13 +2840,15 @@ public class NodeTemplateOperation extends BaseOperation {
                 edge.property(EdgePropertyEnum.INSTANCES.getProperty(), jsonArr);
             } catch (IOException e) {
                 log.debug("Failed to convert INSTANCES edge property to json for container {}", metadataVertex.getUniqueId(), e);
-               return Either.right(JanusGraphOperationStatus.GENERAL_ERROR);
+                return Either.right(JanusGraphOperationStatus.GENERAL_ERROR);
             }
         }
         return Either.left(metadataVertex);
     }
 
-    private Either<GraphVertex, JanusGraphOperationStatus> createInstanceEdge(GraphVertex metadataVertex, EdgeLabelEnum edgeLabel, String componentUid, String instUniqueId, JanusGraphOperationStatus retrieveEdgeStatus) {
+    private Either<GraphVertex, JanusGraphOperationStatus> createInstanceEdge(GraphVertex metadataVertex, EdgeLabelEnum edgeLabel,
+                                                                              String componentUid, String instUniqueId,
+                                                                              JanusGraphOperationStatus retrieveEdgeStatus) {
         if (retrieveEdgeStatus == JanusGraphOperationStatus.NOT_FOUND) {
             // create new edge
             Either<GraphVertex, JanusGraphOperationStatus> vertexById = janusGraphDao.getVertexById(componentUid);
@@ -2497,11 +2860,9 @@ public class NodeTemplateOperation extends BaseOperation {
             List<String> instList = new ArrayList<>();
             instList.add(instUniqueId);
             edgeProps.put(EdgePropertyEnum.INSTANCES, instList);
-
-            log.debug("Create new edge {} between {} and {} and properties {} ", edgeLabel, metadataVertex.getUniqueId(), originVertex.getUniqueId(), edgeProps);
-            JanusGraphOperationStatus
-                edgeResult = janusGraphDao
-                .createEdge(metadataVertex, originVertex, edgeLabel, edgeProps);
+            log.debug("Create new edge {} between {} and {} and properties {} ", edgeLabel, metadataVertex.getUniqueId(), originVertex.getUniqueId(),
+                edgeProps);
+            JanusGraphOperationStatus edgeResult = janusGraphDao.createEdge(metadataVertex, originVertex, edgeLabel, edgeProps);
             return edgeResult == JanusGraphOperationStatus.OK ? Either.left(metadataVertex) : Either.right(edgeResult);
         }
         // error
@@ -2509,7 +2870,8 @@ public class NodeTemplateOperation extends BaseOperation {
         return Either.right(retrieveEdgeStatus);
     }
 
-    private JanusGraphOperationStatus removeInstanceEdgeLogError(GraphVertex metadataVertex, EdgeLabelEnum edgeLabel, String componentUid, JanusGraphOperationStatus retrieveEdgeStatus) {
+    private JanusGraphOperationStatus removeInstanceEdgeLogError(GraphVertex metadataVertex, EdgeLabelEnum edgeLabel, String componentUid,
+                                                                 JanusGraphOperationStatus retrieveEdgeStatus) {
         if (retrieveEdgeStatus == JanusGraphOperationStatus.NOT_FOUND) {
             log.debug("No edge {} to remove between container {} and origin {}", edgeLabel, metadataVertex.getUniqueId(), componentUid);
         } else {