Improve test coverage
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / operations / impl / PropertyOperation.java
index 86e5b1b..f626c1d 100644 (file)
 
 package org.openecomp.sdc.be.model.operations.impl;
 
+import com.fasterxml.jackson.core.ObjectCodec;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.Maps;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import org.janusgraph.core.JanusGraph;
+import org.janusgraph.core.JanusGraphVertex;
+import org.janusgraph.core.JanusGraphVertexProperty;
+import fj.data.Either;
 import java.io.IOException;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -35,10 +52,13 @@ import java.util.function.Consumer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
-
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.openecomp.sdc.be.config.BeEcompErrorManager;
 import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity;
 import org.openecomp.sdc.be.dao.graph.GraphElementFactory;
@@ -46,10 +66,11 @@ import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
 import org.openecomp.sdc.be.dao.graph.datatype.GraphElementTypeEnum;
 import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
 import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
 import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
 import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
-import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
+import org.openecomp.sdc.be.dao.janusgraph.HealingJanusGraphGenericDao;
 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.PropertyRule;
 import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
@@ -78,81 +99,32 @@ import org.openecomp.sdc.be.resources.data.PropertyData;
 import org.openecomp.sdc.be.resources.data.PropertyValueData;
 import org.openecomp.sdc.be.resources.data.ResourceMetadataData;
 import org.openecomp.sdc.be.resources.data.UniqueIdData;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.openecomp.sdc.common.log.wrappers.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import com.fasterxml.jackson.core.ObjectCodec;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParseException;
-import com.google.gson.JsonParser;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
 
 @Component("property-operation")
 public class PropertyOperation extends AbstractOperation implements IPropertyOperation {
-
-       private TitanGenericDao titanGenericDao;
+       private static final String FAILED_TO_FETCH_PROPERTIES_OF_DATA_TYPE = "Failed to fetch properties of data type {}";
+       private static final String DATA_TYPE_CANNOT_BE_FOUND_IN_GRAPH_STATUS_IS = "Data type {} cannot be found in graph. status is {}";
+       private static final String GOING_TO_EXECUTE_COMMIT_ON_GRAPH = "Going to execute commit on graph.";
+       private static final String GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH = "Going to execute rollback on graph.";
+       private static final String FAILED_TO_ASSOCIATE_RESOURCE_TO_PROPERTY_IN_GRAPH_STATUS_IS = "Failed to associate resource {} to property {} in graph. status is {}";
+       private static final String AFTER_ADDING_PROPERTY_TO_GRAPH = "After adding property to graph {}";
+       private static final String BEFORE_ADDING_PROPERTY_TO_GRAPH = "Before adding property to graph {}";
+       private static final String THE_VALUE_OF_PROPERTY_FROM_TYPE_IS_INVALID = "The value {} of property from type {} is invalid";
        private DerivedFromOperation derivedFromOperation;
-       
-       public static void main(String[] args) {
-
-               List<Pattern> buildFunctionPatterns = buildFunctionPatterns();
+    private static final String PROPERTY = "Property";
+    private static final String UPDATE_DATA_TYPE = "UpdateDataType";
 
-               for (Pattern pattern : buildFunctionPatterns) {
-
-                       String[] strs = { "str_replace", "{ str_replace:", " {str_replace:", " {   str_replace:", "{str_replace:" };
-                       for (String str : strs) {
-                               Matcher m = pattern.matcher(str);
-                               System.out.println(pattern.pattern() + " " + str + " " + m.find());
-                       }
-               }
-
-       }
-
-       public PropertyOperation(TitanGenericDao titanGenericDao, DerivedFromOperation derivedFromOperation) {
-               this.titanGenericDao = titanGenericDao;
+       @Autowired
+       public PropertyOperation(HealingJanusGraphGenericDao janusGraphGenericDao, DerivedFromOperation derivedFromOperation) {
+               this.janusGraphGenericDao = janusGraphGenericDao;
                this.derivedFromOperation = derivedFromOperation;
        }
 
-       private static Logger log = LoggerFactory.getLogger(PropertyOperation.class.getName());
-
-       private static List<Pattern> functionPatterns = null;
-
-       static {
-
-               functionPatterns = buildFunctionPatterns();
-       }
-
-       /**
-        * The value of functions is in a json format. Build pattern for each function name
-        * 
-        * { str_replace: .... } {str_replace: .... } {str_replace: .... } { str_replace: .... }
-        * 
-        * @return
-        */
-       private static List<Pattern> buildFunctionPatterns() {
-
-               List<Pattern> functionPatterns = new ArrayList<>();
-
-               String[] functions = { "get_input", "get_property" };
-
-               for (String function : functions) {
-                       Pattern pattern = Pattern.compile("^[ ]*\\{[ ]*" + function + ":");
-                       functionPatterns.add(pattern);
-               }
-
-               return functionPatterns;
-       }
+       private static Logger log = Logger.getLogger(PropertyOperation.class.getName());
 
        public PropertyDefinition convertPropertyDataToPropertyDefinition(PropertyData propertyDataResult, String propertyName, String resourceId) {
                log.debug("The object returned after create property is {}", propertyDataResult);
@@ -160,7 +132,6 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                PropertyDefinition propertyDefResult = new PropertyDefinition(propertyDataResult.getPropertyDataDefinition());
                propertyDefResult.setConstraints(convertConstraints(propertyDataResult.getConstraints()));
                propertyDefResult.setName(propertyName);
-//             propertyDefResult.setParentUniqueId(resourceId);
 
                return propertyDefResult;
        }
@@ -196,6 +167,8 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        public static class PropertyConstraintDeserialiser implements JsonDeserializer<PropertyConstraint> {
 
+               private static final String THE_VALUE_OF_GREATER_THAN_CONSTRAINT_IS_NULL = "The value of GreaterThanConstraint is null";
+
                @Override
                public PropertyConstraint deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
 
@@ -223,7 +196,13 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                                                } else {
                                                                        InRangeConstraint rangeConstraint = new InRangeConstraint();
                                                                        String minValue = rangeArray.get(0).getAsString();
-                                                                       String maxValue = rangeArray.get(1).getAsString();
+                                                                       String maxValue;
+                                                                       JsonElement maxElement = rangeArray.get(1);
+                                                                       if(maxElement.isJsonNull()){
+                                        maxValue = String.valueOf(maxElement.getAsJsonNull());
+                                    } else {
+                                        maxValue = maxElement.getAsString();
+                                    }
                                                                        rangeConstraint.setRangeMinValue(minValue);
                                                                        rangeConstraint.setRangeMaxValue(maxValue);
                                                                        propertyConstraint = rangeConstraint;
@@ -231,7 +210,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                                        }
 
                                                } else {
-                                                       log.warn("The value of GreaterThanConstraint is null");
+                                                       log.warn(THE_VALUE_OF_GREATER_THAN_CONSTRAINT_IS_NULL);
                                                }
                                                break;
                                        case GREATER_THAN:
@@ -241,7 +220,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                                        propertyConstraint = new GreaterThanConstraint(asString);
                                                        break;
                                                } else {
-                                                       log.warn("The value of GreaterThanConstraint is null");
+                                                       log.warn(THE_VALUE_OF_GREATER_THAN_CONSTRAINT_IS_NULL);
                                                }
                                                break;
 
@@ -272,31 +251,26 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                                        log.debug("Before adding value to LessOrEqualConstraint object. value = {}", asString);
                                                        propertyConstraint = new LessOrEqualConstraint(asString);
                                                } else {
-                                                       log.warn("The value of GreaterThanConstraint is null");
+                                                       log.warn(THE_VALUE_OF_GREATER_THAN_CONSTRAINT_IS_NULL);
                                                }
                                                break;
 
                                        case VALID_VALUES:
 
                                                if (value != null) {
-                                                       if (value instanceof JsonArray) {
-                                                               JsonArray rangeArray = (JsonArray) value;
-                                                               if (rangeArray.size() == 0) {
-                                                                       log.error("The valid values constraint content is invalid. value = {}", value);
-                                                               } else {
-                                                                       ValidValuesConstraint vvConstraint = new ValidValuesConstraint();
-                                                                       List<String> validValues = new ArrayList<String>();
-                                                                       for (JsonElement jsonElement : rangeArray) {
-                                                                               String item = jsonElement.getAsString();
-                                                                               validValues.add(item);
-                                                                       }
-                                                                       vvConstraint.setValidValues(validValues);
-                                                                       propertyConstraint = vvConstraint;
+                                                       JsonArray rangeArray = (JsonArray) value;
+                                                       if (rangeArray.size() == 0) {
+                                                               log.error("The valid values constraint content is invalid. value = {}", value);
+                                                       } else {
+                                                               ValidValuesConstraint vvConstraint = new ValidValuesConstraint();
+                                                               List<String> validValues = new ArrayList<>();
+                                                               for (JsonElement jsonElement : rangeArray) {
+                                                                       String item = jsonElement.getAsString();
+                                                                       validValues.add(item);
                                                                }
+                                                               vvConstraint.setValidValues(validValues);
+                                                               propertyConstraint = vvConstraint;
                                                        }
-
-                                               } else {
-                                                       log.warn("The value of ValidValuesConstraint is null");
                                                }
                                                break;
 
@@ -321,66 +295,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        }
 
-       public TitanOperationStatus addPropertiesToGraph(Map<String, PropertyDefinition> properties, String resourceId, Map<String, DataTypeDefinition> dataTypes) {
-
-               ResourceMetadataData resourceData = new ResourceMetadataData();
-               resourceData.getMetadataDataDefinition().setUniqueId(resourceId);
-
-               if (properties != null) {
-                       for (Entry<String, PropertyDefinition> entry : properties.entrySet()) {
-
-                               String propertyName = entry.getKey();
-                               PropertyDefinition propertyDefinition = entry.getValue();
-
-                               StorageOperationStatus validateAndUpdateProperty = validateAndUpdateProperty(propertyDefinition, dataTypes);
-                               if (validateAndUpdateProperty != StorageOperationStatus.OK) {
-                                       log.error("Property {} is invalid. Status is {}", propertyDefinition, validateAndUpdateProperty);
-                                       return TitanOperationStatus.ILLEGAL_ARGUMENT;
-                               }
-
-                               Either<PropertyData, TitanOperationStatus> addPropertyToGraph = addPropertyToGraph(propertyName, propertyDefinition, resourceId);
-
-                               if (addPropertyToGraph.isRight()) {
-                                       return addPropertyToGraph.right().value();
-                               }
-                       }
-               }
-
-               return TitanOperationStatus.OK;
-
-       }
-
-       public TitanOperationStatus addPropertiesToGraph(TitanVertex metadataVertex, Map<String, PropertyDefinition> properties, Map<String, DataTypeDefinition> dataTypes, String resourceId) {
-
-               if (properties != null) {
-                       for (Entry<String, PropertyDefinition> entry : properties.entrySet()) {
-
-                               String propertyName = entry.getKey();
-                               PropertyDefinition propertyDefinition = entry.getValue();
-
-                               StorageOperationStatus validateAndUpdateProperty = validateAndUpdateProperty(propertyDefinition, dataTypes);
-                               if (validateAndUpdateProperty != StorageOperationStatus.OK) {
-                                       log.error("Property {} is invalid. Status is {}", propertyDefinition, validateAndUpdateProperty);
-                                       return TitanOperationStatus.ILLEGAL_ARGUMENT;
-                               }
-
-                               TitanOperationStatus addPropertyToGraph = addPropertyToGraphByVertex(metadataVertex, propertyName, propertyDefinition, resourceId);
-
-                               if (!addPropertyToGraph.equals(TitanOperationStatus.OK)) {
-                                       return addPropertyToGraph;
-                               }
-                       }
-               }
-
-               return TitanOperationStatus.OK;
-
-       }
 
        public Either<PropertyData, StorageOperationStatus> addProperty(String propertyName, PropertyDefinition propertyDefinition, String resourceId) {
 
-               Either<PropertyData, TitanOperationStatus> either = addPropertyToGraph(propertyName, propertyDefinition, resourceId);
+               Either<PropertyData, JanusGraphOperationStatus> either = addPropertyToGraph(propertyName, propertyDefinition, resourceId);
                if (either.isRight()) {
-                       StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value());
+                       StorageOperationStatus storageStatus = DaoStatusConverter.convertJanusGraphStatusToStorageStatus(either.right().value());
                        return Either.right(storageStatus);
                }
                return Either.left(either.left().value());
@@ -408,14 +328,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                return StorageOperationStatus.INVALID_TYPE;
                        }
 
-                       StorageOperationStatus status = validateAndUpdateComplexValue(propertyDefinition, propertyType, value, dataTypeDefinition, dataTypes);
-
-                       return status;
+            return validateAndUpdateComplexValue(propertyDefinition, propertyType, value, dataTypeDefinition, dataTypes);
 
                }
                String innerType = null;
 
-               Either<String, TitanOperationStatus> checkInnerType = getInnerType(type, () -> propertyDefinition.getSchema());
+               Either<String, JanusGraphOperationStatus> checkInnerType = getInnerType(type, propertyDefinition::getSchema);
                if (checkInnerType.isRight()) {
                        return StorageOperationStatus.INVALID_TYPE;
                }
@@ -424,8 +342,8 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                log.trace("After validating property type {}", propertyType);
 
                boolean isValidProperty = isValidValue(type, value, innerType, dataTypes);
-               if (false == isValidProperty) {
-                       log.info("The value {} of property from type {} is invalid", value, type);
+               if (!isValidProperty) {
+                       log.info(THE_VALUE_OF_PROPERTY_FROM_TYPE_IS_INVALID, value, type);
                        return StorageOperationStatus.INVALID_VALUE;
                }
 
@@ -434,14 +352,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                if (isEmptyValue(value)) {
                        log.debug("Default value was not sent for property {}. Set default value to {}", propertyDefinition.getName(), EMPTY_VALUE);
                        propertyDefinition.setDefaultValue(EMPTY_VALUE);
-               } else if (false == isEmptyValue(value)) {
+               } else if (!isEmptyValue(value)) {
                        String convertedValue = converter.convert(value, innerType, dataTypes);
                        propertyDefinition.setDefaultValue(convertedValue);
                }
                return StorageOperationStatus.OK;
        }
 
-       public Either<PropertyData, TitanOperationStatus> addPropertyToGraph(String propertyName, PropertyDefinition propertyDefinition, String resourceId) {
+       public Either<PropertyData, JanusGraphOperationStatus> addPropertyToGraph(String propertyName, PropertyDefinition propertyDefinition, String resourceId) {
 
                ResourceMetadataData resourceData = new ResourceMetadataData();
                resourceData.getMetadataDataDefinition().setUniqueId(resourceId);
@@ -451,21 +369,23 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                propertyDefinition.setUniqueId(UniqueIdBuilder.buildComponentPropertyUniqueId(resourceId, propertyName));
                PropertyData propertyData = new PropertyData(propertyDefinition, convertConstraintsToString(constraints));
 
-               log.debug("Before adding property to graph {}", propertyData);
-               Either<PropertyData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyData, PropertyData.class);
-               log.debug("After adding property to graph {}", propertyData);
+               log.debug(BEFORE_ADDING_PROPERTY_TO_GRAPH, propertyData);
+               Either<PropertyData, JanusGraphOperationStatus> createNodeResult = janusGraphGenericDao
+                               .createNode(propertyData, PropertyData.class);
+               log.debug(AFTER_ADDING_PROPERTY_TO_GRAPH, propertyData);
                if (createNodeResult.isRight()) {
-                       TitanOperationStatus operationStatus = createNodeResult.right().value();
+                       JanusGraphOperationStatus operationStatus = createNodeResult.right().value();
                        log.error("Failed to add property {} to graph. status is {}", propertyName, operationStatus);
                        return Either.right(operationStatus);
                }
 
-               Map<String, Object> props = new HashMap<String, Object>();
+               Map<String, Object> props = new HashMap<>();
                props.put(GraphPropertiesDictionary.NAME.getProperty(), propertyName);
-               Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceData, propertyData, GraphEdgeLabels.PROPERTY, props);
+               Either<GraphRelation, JanusGraphOperationStatus> createRelResult = janusGraphGenericDao
+                               .createRelation(resourceData, propertyData, GraphEdgeLabels.PROPERTY, props);
                if (createRelResult.isRight()) {
-                       TitanOperationStatus operationStatus = createNodeResult.right().value();
-                       log.error("Failed to associate resource {} to property {} in graph. status is {}", resourceId, propertyName, operationStatus);
+                       JanusGraphOperationStatus operationStatus = createNodeResult.right().value();
+                       log.error(FAILED_TO_ASSOCIATE_RESOURCE_TO_PROPERTY_IN_GRAPH_STATUS_IS, resourceId, propertyName, operationStatus);
                        return Either.right(operationStatus);
                }
 
@@ -473,28 +393,30 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        }
 
-       public TitanOperationStatus addPropertyToGraphByVertex(TitanVertex metadataVertex, String propertyName, PropertyDefinition propertyDefinition, String resourceId) {
+       public JanusGraphOperationStatus addPropertyToGraphByVertex(JanusGraphVertex metadataVertex, String propertyName, PropertyDefinition propertyDefinition, String resourceId) {
 
                List<PropertyConstraint> constraints = propertyDefinition.getConstraints();
 
                propertyDefinition.setUniqueId(UniqueIdBuilder.buildComponentPropertyUniqueId(resourceId, propertyName));
                PropertyData propertyData = new PropertyData(propertyDefinition, convertConstraintsToString(constraints));
 
-               log.debug("Before adding property to graph {}", propertyData);
-               Either<TitanVertex, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyData);
-               log.debug("After adding property to graph {}", propertyData);
+               log.debug(BEFORE_ADDING_PROPERTY_TO_GRAPH, propertyData);
+               Either<JanusGraphVertex, JanusGraphOperationStatus> createNodeResult = janusGraphGenericDao.createNode(propertyData);
+               log.debug(AFTER_ADDING_PROPERTY_TO_GRAPH, propertyData);
                if (createNodeResult.isRight()) {
-                       TitanOperationStatus operationStatus = createNodeResult.right().value();
+                       JanusGraphOperationStatus operationStatus = createNodeResult.right().value();
                        log.error("Failed to add property {} to graph. status is ", propertyName, operationStatus);
                        return operationStatus;
                }
 
-               Map<String, Object> props = new HashMap<String, Object>();
+               Map<String, Object> props = new HashMap<>();
                props.put(GraphPropertiesDictionary.NAME.getProperty(), propertyName);
-               TitanVertex propertyVertex = createNodeResult.left().value();
-               TitanOperationStatus createRelResult = titanGenericDao.createEdge(metadataVertex, propertyVertex, GraphEdgeLabels.PROPERTY, props);
-               if (!createRelResult.equals(TitanOperationStatus.OK)) {
-                       log.error("Failed to associate resource {} to property {} in graph. status is {}", resourceId, propertyName, createRelResult);
+               JanusGraphVertex propertyVertex = createNodeResult.left().value();
+               JanusGraphOperationStatus
+                               createRelResult = janusGraphGenericDao
+                               .createEdge(metadataVertex, propertyVertex, GraphEdgeLabels.PROPERTY, props);
+               if (!createRelResult.equals(JanusGraphOperationStatus.OK)) {
+                       log.error(FAILED_TO_ASSOCIATE_RESOURCE_TO_PROPERTY_IN_GRAPH_STATUS_IS, resourceId, propertyName, createRelResult);
                        return createRelResult;
                }
 
@@ -502,27 +424,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        }
 
-       public TitanGenericDao getTitanGenericDao() {
-               return titanGenericDao;
-       }
-
-       // public Either<PropertyData, StorageOperationStatus>
-       // deletePropertyFromGraphFromBl(String propertyId) {
-       //
-       // }
-
-       public Either<PropertyData, StorageOperationStatus> deleteProperty(String propertyId) {
-               Either<PropertyData, TitanOperationStatus> either = deletePropertyFromGraph(propertyId);
-               if (either.isRight()) {
-                       StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value());
-                       return Either.right(storageStatus);
-               }
-               return Either.left(either.left().value());
+       public JanusGraphGenericDao getJanusGraphGenericDao() {
+               return janusGraphGenericDao;
        }
 
-       public Either<PropertyData, TitanOperationStatus> deletePropertyFromGraph(String propertyId) {
+       public Either<PropertyData, JanusGraphOperationStatus> deletePropertyFromGraph(String propertyId) {
                log.debug("Before deleting property from graph {}", propertyId);
-               return titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class);
+               return janusGraphGenericDao
+                               .deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class);
        }
 
        public Either<PropertyData, StorageOperationStatus> updateProperty(String propertyId, PropertyDefinition newPropertyDefinition, Map<String, DataTypeDefinition> dataTypes) {
@@ -532,20 +441,21 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        return Either.right(validateAndUpdateProperty);
                }
 
-               Either<PropertyData, TitanOperationStatus> either = updatePropertyFromGraph(propertyId, newPropertyDefinition);
+               Either<PropertyData, JanusGraphOperationStatus> either = updatePropertyFromGraph(propertyId, newPropertyDefinition);
                if (either.isRight()) {
-                       StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value());
+                       StorageOperationStatus storageStatus = DaoStatusConverter.convertJanusGraphStatusToStorageStatus(either.right().value());
                        return Either.right(storageStatus);
                }
                return Either.left(either.left().value());
        }
 
-       public Either<PropertyData, TitanOperationStatus> updatePropertyFromGraph(String propertyId, PropertyDefinition propertyDefinition) {
+       public Either<PropertyData, JanusGraphOperationStatus> updatePropertyFromGraph(String propertyId, PropertyDefinition propertyDefinition) {
                if (log.isDebugEnabled())
                        log.debug("Before updating property on graph {}", propertyId);
 
                // get the original property data
-               Either<PropertyData, TitanOperationStatus> statusProperty = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class);
+               Either<PropertyData, JanusGraphOperationStatus> statusProperty = janusGraphGenericDao
+                               .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class);
                if (statusProperty.isRight()) {
                        log.debug("Problem while get property with id {}. Reason - {}", propertyId, statusProperty.right().value().name());
                        return Either.right(statusProperty.right().value());
@@ -581,19 +491,19 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                }
                orgPropertyDataDefinition.setSchema(newPropertyDataDefinition.getSchema());
 
-               return titanGenericDao.updateNode(orgPropertyData, PropertyData.class);
+               return janusGraphGenericDao.updateNode(orgPropertyData, PropertyData.class);
        }
 
        /**
         * FOR TEST ONLY
         * 
-        * @param titanGenericDao
+        * @param janusGraphGenericDao
         */
-       public void setTitanGenericDao(TitanGenericDao titanGenericDao) {
-               this.titanGenericDao = titanGenericDao;
+       public void setJanusGraphGenericDao(HealingJanusGraphGenericDao janusGraphGenericDao) {
+               this.janusGraphGenericDao = janusGraphGenericDao;
        }
 
-       public Either<PropertyData, TitanOperationStatus> addPropertyToNodeType(String propertyName, PropertyDefinition propertyDefinition, NodeTypeEnum nodeType, String uniqueId) {
+       public Either<PropertyData, JanusGraphOperationStatus> addPropertyToNodeType(String propertyName, PropertyDefinition propertyDefinition, NodeTypeEnum nodeType, String uniqueId) {
 
                List<PropertyConstraint> constraints = propertyDefinition.getConstraints();
 
@@ -601,25 +511,27 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                PropertyData propertyData = new PropertyData(propertyDefinition, convertConstraintsToString(constraints));
 
                if (log.isDebugEnabled())
-                       log.debug("Before adding property to graph {}", propertyData);
-               Either<PropertyData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyData, PropertyData.class);
+                       log.debug(BEFORE_ADDING_PROPERTY_TO_GRAPH, propertyData);
+               Either<PropertyData, JanusGraphOperationStatus> createNodeResult = janusGraphGenericDao
+                               .createNode(propertyData, PropertyData.class);
                if (log.isDebugEnabled())
-                       log.debug("After adding property to graph {}", propertyData);
+                       log.debug(AFTER_ADDING_PROPERTY_TO_GRAPH, propertyData);
                if (createNodeResult.isRight()) {
-                       TitanOperationStatus operationStatus = createNodeResult.right().value();
+                       JanusGraphOperationStatus operationStatus = createNodeResult.right().value();
                        log.error("Failed to add property {} to graph. status is {}", propertyName, operationStatus);
                        return Either.right(operationStatus);
                }
 
-               Map<String, Object> props = new HashMap<String, Object>();
+               Map<String, Object> props = new HashMap<>();
                props.put(GraphPropertiesDictionary.NAME.getProperty(), propertyName);
 
                UniqueIdData uniqueIdData = new UniqueIdData(nodeType, uniqueId);
                log.debug("Before associating {} to property {}", uniqueIdData, propertyName);
-               Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(uniqueIdData, propertyData, GraphEdgeLabels.PROPERTY, props);
+               Either<GraphRelation, JanusGraphOperationStatus> createRelResult = janusGraphGenericDao
+                               .createRelation(uniqueIdData, propertyData, GraphEdgeLabels.PROPERTY, props);
                if (createRelResult.isRight()) {
-                       TitanOperationStatus operationStatus = createNodeResult.right().value();
-                       log.error("Failed to associate resource {} to property {} in graph. status is {}", uniqueId, propertyName, operationStatus);
+                       JanusGraphOperationStatus operationStatus = createNodeResult.right().value();
+                       log.error(FAILED_TO_ASSOCIATE_RESOURCE_TO_PROPERTY_IN_GRAPH_STATUS_IS, uniqueId, propertyName, operationStatus);
                        return Either.right(operationStatus);
                }
 
@@ -627,15 +539,16 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        }
 
-       public Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfNode(NodeTypeEnum nodeType, String uniqueId) {
+       public Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> findPropertiesOfNode(NodeTypeEnum nodeType, String uniqueId) {
 
-               Map<String, PropertyDefinition> resourceProps = new HashMap<String, PropertyDefinition>();
+               Map<String, PropertyDefinition> resourceProps = new HashMap<>();
 
-               Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.PROPERTY, NodeTypeEnum.Property,
+               Either<List<ImmutablePair<PropertyData, GraphEdge>>, JanusGraphOperationStatus> childrenNodes = janusGraphGenericDao
+                               .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.PROPERTY, NodeTypeEnum.Property,
                                PropertyData.class);
 
                if (childrenNodes.isRight()) {
-                       TitanOperationStatus operationStatus = childrenNodes.right().value();
+                       JanusGraphOperationStatus operationStatus = childrenNodes.right().value();
                        return Either.right(operationStatus);
                }
 
@@ -662,31 +575,165 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                 .right()
                 .bind(err -> err == StorageOperationStatus.OK ? Either.left(Collections.emptyMap()) : Either.right(err));
     }
+    
+    public Either<Map<String, PropertyData>, JanusGraphOperationStatus> mergePropertiesAssociatedToNode(NodeTypeEnum nodeType, String uniqueId, Map<String, PropertyDefinition> newProperties) {
+        Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> oldPropertiesRes = findPropertiesOfNode(nodeType, uniqueId);
+        
+        Map<String, PropertyDefinition> reallyNewProperties;
+        Map<String, PropertyData> unchangedPropsData;
+        
+        if (oldPropertiesRes.isRight()) {
+            JanusGraphOperationStatus err  = oldPropertiesRes.right().value();
+            if (err == JanusGraphOperationStatus.NOT_FOUND) {
+                reallyNewProperties = newProperties;
+                unchangedPropsData = Collections.emptyMap();
+            }
+            else {
+                return Either.right(err);
+            }
+        }
+        else {
+            Map<String, PropertyDefinition> oldProperties = oldPropertiesRes.left().value();
+            reallyNewProperties = collectReallyNewProperties(newProperties, oldProperties);
+            
+            for(Entry<String, PropertyDefinition> oldEntry: oldProperties.entrySet()) {
+                String key = oldEntry.getKey();
+                PropertyDefinition newPropDef = newProperties != null? newProperties.get(key): null;
+                PropertyDefinition oldPropDef = oldEntry.getValue();
+
+                JanusGraphOperationStatus status = updateOldProperty(newPropDef, oldPropDef);
+                if (status != JanusGraphOperationStatus.OK) {
+                    return Either.right(status);
+                }
+            }
+            unchangedPropsData = oldProperties.entrySet().stream()
+                                        .collect(Collectors.toMap(Entry::getKey, e-> new PropertyData(e.getValue(), null)));
+        }
+            
+            
+        // add other properties
+        return addPropertiesToElementType(nodeType, uniqueId, reallyNewProperties, unchangedPropsData);
+    }
+
+    /**
+     * @param newProperties
+     * @param oldProperties
+     * @return
+     */
+    private Map<String, PropertyDefinition> collectReallyNewProperties(Map<String, PropertyDefinition> newProperties, Map<String, PropertyDefinition> oldProperties) {
+        return newProperties != null? newProperties.entrySet().stream()
+                                        .filter(entry -> !oldProperties.containsKey(entry.getKey()))
+                                        .collect(Collectors.toMap(Entry::getKey, Entry::getValue) ): null;
+    }
+
+    /**
+     * @param newPropDef
+     * @param oldPropDef
+     */
+    private JanusGraphOperationStatus updateOldProperty(PropertyDefinition newPropDef, PropertyDefinition oldPropDef) {
+        if (!isUpdateAllowed(newPropDef, oldPropDef)) {
+            return JanusGraphOperationStatus.MATCH_NOT_FOUND;
+        }
+        
+        if (isUpdateRequired(newPropDef, oldPropDef)) {
+            modifyOldPropByNewOne(newPropDef, oldPropDef);
+            
+            List<PropertyConstraint> constraints = oldPropDef.getConstraints();
+            PropertyData node = new PropertyData(oldPropDef, convertConstraintsToString(constraints));
+            Either<PropertyData, JanusGraphOperationStatus> updateResult = janusGraphGenericDao
+                                                               .updateNode(node, PropertyData.class);
+            
+            if (updateResult.isRight()) {
+                return updateResult.right().value();
+            }
+        }
+        
+        return JanusGraphOperationStatus.OK;
+    }
+
+    /**
+     * @param newPropDef
+     * @param oldPropDef
+     */
+    private boolean isUpdateAllowed(PropertyDefinition newPropDef, PropertyDefinition oldPropDef) {
+        if (newPropDef == null) {
+            log.error("#mergePropertiesAssociatedToNode - Failed due attempt to delete the property with id {}", oldPropDef.getUniqueId());
+            return false;
+        }
+        
+        // If the property type is missing it's something that we could want to fix 
+        if ( oldPropDef.getType() != null && !oldPropDef.getType().equals(newPropDef.getType())) {
+            log.error("#mergePropertiesAssociatedToNode - Failed due attempt to change type of the property with id {}", oldPropDef.getUniqueId());
+            return false;
+        }
+        
+        return true;
+    }
+
+    /**
+     * Update only fields which modification is permitted.
+     * @param newPropDef
+     * @param oldPropDef
+     */
+    private void modifyOldPropByNewOne(PropertyDefinition newPropDef, PropertyDefinition oldPropDef) {
+        oldPropDef.setDefaultValue(newPropDef.getDefaultValue());
+        oldPropDef.setDescription(newPropDef.getDescription());
+        oldPropDef.setRequired(newPropDef.isRequired());
+
+        // Type is updated to fix possible null type issue in janusGraph DB
+        oldPropDef.setType(newPropDef.getType());
+    }
+
+
+    private boolean isUpdateRequired(PropertyDefinition newPropDef, PropertyDefinition oldPropDef) {
+        return !StringUtils.equals(oldPropDef.getDefaultValue(), newPropDef.getDefaultValue()) ||
+            !StringUtils.equals(oldPropDef.getDescription(), newPropDef.getDescription()) ||
+            oldPropDef.isRequired() != newPropDef.isRequired();
+    }
+
+    /**
+     * Adds newProperties and returns in case of success (left part of Either) 
+     * map of all properties i. e. added ones and contained in unchangedPropsData
+     * @param nodeType
+     * @param uniqueId
+     * @param newProperties
+     * @param unchangedPropsData
+     * @return
+     */
+    private Either<Map<String, PropertyData>, JanusGraphOperationStatus> addPropertiesToElementType(NodeTypeEnum nodeType, String uniqueId, Map<String, PropertyDefinition> newProperties, Map<String, PropertyData> unchangedPropsData) {
+        return addPropertiesToElementType(uniqueId, nodeType, newProperties)
+                .left()
+                .map(m -> { 
+                    m.putAll(unchangedPropsData);
+                    return m;
+                 });
+    }
+
 
        public Either<Map<String, PropertyDefinition>, StorageOperationStatus> deleteAllPropertiesAssociatedToNode(NodeTypeEnum nodeType, String uniqueId) {
 
-               Either<Map<String, PropertyDefinition>, TitanOperationStatus> propertiesOfNodeRes = findPropertiesOfNode(nodeType, uniqueId);
+               Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> propertiesOfNodeRes = findPropertiesOfNode(nodeType, uniqueId);
 
                if (propertiesOfNodeRes.isRight()) {
-                       TitanOperationStatus status = propertiesOfNodeRes.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
+                       JanusGraphOperationStatus status = propertiesOfNodeRes.right().value();
+                       if (status == JanusGraphOperationStatus.NOT_FOUND) {
                                return Either.right(StorageOperationStatus.OK);
                        }
-                       return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
+                       return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
                }
 
                Map<String, PropertyDefinition> value = propertiesOfNodeRes.left().value();
                for (PropertyDefinition propertyDefinition : value.values()) {
 
                        String propertyUid = propertyDefinition.getUniqueId();
-                       Either<PropertyData, TitanOperationStatus> deletePropertyRes = deletePropertyFromGraph(propertyUid);
+                       Either<PropertyData, JanusGraphOperationStatus> deletePropertyRes = deletePropertyFromGraph(propertyUid);
                        if (deletePropertyRes.isRight()) {
                                log.error("Failed to delete property with id {}", propertyUid);
-                               TitanOperationStatus status = deletePropertyRes.right().value();
-                               if (status == TitanOperationStatus.NOT_FOUND) {
-                                       status = TitanOperationStatus.INVALID_ID;
+                               JanusGraphOperationStatus status = deletePropertyRes.right().value();
+                               if (status == JanusGraphOperationStatus.NOT_FOUND) {
+                                       status = JanusGraphOperationStatus.INVALID_ID;
                                }
-                               return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
+                               return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
                        }
 
                }
@@ -695,50 +742,6 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                return Either.left(value);
        }
 
-       /**
-        * 
-        * 
-        * @param nodeType
-        * @param uniqueId
-        * @param properties
-        * @return
-        */
-       protected TitanOperationStatus findPropertiesOfNode(NodeTypeEnum nodeType, String uniqueId, List<PropertyDefinition> properties) {
-
-               Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.PROPERTY, NodeTypeEnum.Property,
-                               PropertyData.class);
-
-               if (childrenNodes.isRight()) {
-                       TitanOperationStatus status = childrenNodes.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
-                               status = TitanOperationStatus.OK;
-                       }
-                       return status;
-               }
-
-               List<ImmutablePair<PropertyData, GraphEdge>> values = childrenNodes.left().value();
-               if (values != null) {
-
-                       for (ImmutablePair<PropertyData, GraphEdge> immutablePair : values) {
-                               GraphEdge edge = immutablePair.getValue();
-                               String propertyName = (String) edge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty());
-                               if (log.isDebugEnabled())
-                                       log.debug("Property {} is associated to node {}", propertyName, uniqueId);
-                               PropertyData propertyData = immutablePair.getKey();
-                               PropertyDefinition propertyDefinition = this.convertPropertyDataToPropertyDefinition(propertyData, propertyName, uniqueId);
-                               //Adds parent property to List if it hasn't been overrided in one of the children
-                               if(!properties.stream().filter(p -> p.getName().equals(propertyDefinition.getName())).findAny().isPresent()){
-                                       properties.add(propertyDefinition);
-                               }
-
-                               if (log.isTraceEnabled())
-                                       log.trace("findPropertiesOfNode - property {} associated to node {}", propertyDefinition, uniqueId);
-                       }
-
-               }
-
-               return TitanOperationStatus.OK;
-       }
 /**
  * Checks existence of a property with the same name belonging to the same resource
  * or existence of property with the same name and different type (including derived from hierarchy)
@@ -763,73 +766,10 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                return result;
        }
 
-       /**
-        * add property to resource instance
-        * 
-        * @param innerType
-        *            TODO // * @param resourceInstanceProperty // * @param resourceInstanceId // * @param index
-        * 
-        * @return
-        */
-       /*
-        * public Either<PropertyValueData, TitanOperationStatus> addPropertyToResourceInstance( ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index) {
-        * 
-        * Either<ComponentInstanceData, TitanOperationStatus> findResInstanceRes = titanGenericDao .getNode(UniqueIdBuilder .getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, ComponentInstanceData.class);
-        * 
-        * if (findResInstanceRes.isRight()) { TitanOperationStatus status = findResInstanceRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } return Either.right(status); }
-        * 
-        * String propertyId = resourceInstanceProperty.getUniqueId(); Either<PropertyData, TitanOperationStatus> findPropertyDefRes = titanGenericDao .getNode(UniqueIdBuilder .getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class);
-        * 
-        * if (findPropertyDefRes.isRight()) { TitanOperationStatus status = findPropertyDefRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } return Either.right(status); }
-        * 
-        * String valueUniqueUid = resourceInstanceProperty.getValueUniqueUid(); if (valueUniqueUid == null) {
-        * 
-        * PropertyData propertyData = findPropertyDefRes.left().value(); ComponentInstanceData resourceInstanceData = findResInstanceRes.left().value();
-        * 
-        * ImmutablePair<TitanOperationStatus, String> isPropertyValueExists = findPropertyValue(resourceInstanceId, propertyId); if (isPropertyValueExists.getLeft() == TitanOperationStatus.ALREADY_EXIST) { log.debug("The property " + propertyId +
-        * " already added to the resource instance " + resourceInstanceId); resourceInstanceProperty.setValueUniqueUid(isPropertyValueExists.getRight ()); Either<PropertyValueData, TitanOperationStatus> updatePropertyOfResourceInstance =
-        * updatePropertyOfResourceInstance(resourceInstanceProperty, resourceInstanceId); if (updatePropertyOfResourceInstance.isRight()) { BeEcompErrorManager.getInstance().logInternalFlowError( "UpdatePropertyValueOnComponentInstance",
-        * "Failed to update property value on instance. Status is " + updatePropertyOfResourceInstance.right().value(), ErrorSeverity.ERROR); return Either.right(updatePropertyOfResourceInstance.right().value()); } return
-        * Either.left(updatePropertyOfResourceInstance.left().value()); }
-        * 
-        * if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) { 
-        * log.debug("After finding property value of {} on componenet instance {}", propertyId, resourceInstanceId); 
-        * return Either.right(isPropertyValueExists.getLeft()); }
-        * 
-        * String propertyType = propertyData.getPropertyDataDefinition().getType(); String value = resourceInstanceProperty.getValue(); Either<Object, Boolean> isValid = validateAndUpdatePropertyValue(propertyType, value);
-        * 
-        * String newValue = value; if (isValid.isRight()) { Boolean res = isValid.right().value(); if (res == false) { return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } } else { Object object = isValid.left().value(); if (object != null) {
-        * newValue = object.toString(); } }
-        * 
-        * String uniqueId = UniqueIdBuilder.buildResourceInstancePropertyValueUid( resourceInstanceData.getUniqueId(), index); PropertyValueData propertyValueData = new PropertyValueData(); propertyValueData.setUniqueId(uniqueId);
-        * propertyValueData.setValue(newValue);
-        * 
-        * ImmutablePair<String, Boolean> pair = validateAndUpdateRules(propertyType, resourceInstanceProperty.getRules()); if (pair.getRight() != null && pair.getRight() == false) { BeEcompErrorManager.getInstance().
-        * logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProperty.getName(), propertyType); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } addRulesToNewPropertyValue(propertyValueData,
-        * resourceInstanceProperty, resourceInstanceId);
-        * 
-        * log.debug("Before adding property value to graph {}", propertyValueData); 
-        * Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao .createNode(propertyValueData, PropertyValueData.class);
-        * log.debug("After adding property value to graph {}", propertyValueData);
-        * 
-        * Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao .createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null);
-        * 
-        * if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right() .value(); //TODO: change logger log.error("Failed to associate property value " + uniqueId + " to property " + propertyId +
-        * " in graph. status is " + operationStatus); return Either.right(operationStatus); }
-        * 
-        * createRelResult = titanGenericDao .createRelation(resourceInstanceData, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null);
-        * 
-        * if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right() .value(); //TODO: change logger log.error("Failed to associate resource instance " + resourceInstanceId + " property value " + uniqueId +
-        * " in graph. status is " + operationStatus); return Either.right(operationStatus); }
-        * 
-        * return Either.left(createNodeResult.left().value()); } else { log.error("property value already exists."); return Either.right(TitanOperationStatus.ALREADY_EXIST); }
-        * 
-        * }
-        */
        public ImmutablePair<String, Boolean> validateAndUpdateRules(String propertyType, List<PropertyRule> rules, String innerType, Map<String, DataTypeDefinition> dataTypes, boolean isValidate) {
 
-               if (rules == null || rules.isEmpty() == true) {
-                       return new ImmutablePair<String, Boolean>(null, true);
+               if (rules == null || rules.isEmpty()) {
+                       return new ImmutablePair<>(null, true);
                }
 
                for (PropertyRule rule : rules) {
@@ -837,8 +777,8 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        Either<Object, Boolean> updateResult = validateAndUpdatePropertyValue(propertyType, value, isValidate, innerType, dataTypes);
                        if (updateResult.isRight()) {
                                Boolean status = updateResult.right().value();
-                               if (status == false) {
-                                       return new ImmutablePair<String, Boolean>(value, status);
+                               if (!status) {
+                                       return new ImmutablePair<>(value, status);
                                }
                        } else {
                                String newValue = null;
@@ -850,7 +790,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        }
                }
 
-               return new ImmutablePair<String, Boolean>(null, true);
+               return new ImmutablePair<>(null, true);
        }
 
        public void addRulesToNewPropertyValue(PropertyValueData propertyValueData, ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId) {
@@ -873,7 +813,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                // graph.
                // Update could be done on one level only, thus we can use this
                // operation to avoid migration.
-               if (path == null || path.isEmpty() == true) {
+               if (path == null || path.isEmpty()) {
                        path = new ArrayList<>();
                        path.add(resourceInstanceId);
                }
@@ -892,15 +832,15 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                return rules;
        }
 
-       public ImmutablePair<TitanOperationStatus, String> findPropertyValue(String resourceInstanceId, String propertyId) {
+       public ImmutablePair<JanusGraphOperationStatus, String> findPropertyValue(String resourceInstanceId, String propertyId) {
 
                log.debug("Going to check whether the property {} already added to resource instance {}", propertyId, resourceInstanceId);
 
-               Either<List<ComponentInstanceProperty>, TitanOperationStatus> getAllRes = this.getAllPropertiesOfResourceInstanceOnlyPropertyDefId(resourceInstanceId);
+               Either<List<ComponentInstanceProperty>, JanusGraphOperationStatus> getAllRes = this.getAllPropertiesOfResourceInstanceOnlyPropertyDefId(resourceInstanceId);
                if (getAllRes.isRight()) {
-                       TitanOperationStatus status = getAllRes.right().value();
+                       JanusGraphOperationStatus status = getAllRes.right().value();
                        log.trace("After fetching all properties of resource instance {}. Status is {}", resourceInstanceId, status);
-                       return new ImmutablePair<TitanOperationStatus, String>(status, null);
+                       return new ImmutablePair<>(status, null);
                }
 
                List<ComponentInstanceProperty> list = getAllRes.left().value();
@@ -911,63 +851,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                log.trace("Go over property {} under resource instance {}. valueUniqueId = {}", propertyUniqueId, resourceInstanceId, valueUniqueUid);
                                if (propertyId.equals(propertyUniqueId) && valueUniqueUid != null) {
                                        log.debug("The property {} already created under resource instance {}", propertyId, resourceInstanceId);
-                                       return new ImmutablePair<TitanOperationStatus, String>(TitanOperationStatus.ALREADY_EXIST, valueUniqueUid);
+                                       return new ImmutablePair<>(JanusGraphOperationStatus.ALREADY_EXIST, valueUniqueUid);
                                }
                        }
                }
 
-               return new ImmutablePair<TitanOperationStatus, String>(TitanOperationStatus.NOT_FOUND, null);
+               return new ImmutablePair<>(JanusGraphOperationStatus.NOT_FOUND, null);
        }
 
-       /**
-        * update value of property on resource instance
-        * 
-        * @param resourceInstanceProperty
-        * @param resourceInstanceId
-        * @return
-        */
-       /*
-        * public Either<PropertyValueData, TitanOperationStatus> updatePropertyOfResourceInstance( ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId) {
-        * 
-        * /// #RULES SUPPORT /// Ignore rules received from client till support resourceInstanceProperty.setRules(null); /// /// Either<ComponentInstanceData, TitanOperationStatus> findResInstanceRes = titanGenericDao .getNode(UniqueIdBuilder
-        * .getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, ComponentInstanceData.class);
-        * 
-        * if (findResInstanceRes.isRight()) { TitanOperationStatus status = findResInstanceRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } return Either.right(status); }
-        * 
-        * String propertyId = resourceInstanceProperty.getUniqueId(); Either<PropertyData, TitanOperationStatus> findPropertyDefRes = titanGenericDao .getNode(UniqueIdBuilder .getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class);
-        * 
-        * if (findPropertyDefRes.isRight()) { TitanOperationStatus status = findPropertyDefRes.right().value(); return Either.right(status); }
-        * 
-        * String valueUniqueUid = resourceInstanceProperty.getValueUniqueUid(); if (valueUniqueUid == null) { return Either.right(TitanOperationStatus.INVALID_ID); } else { Either<PropertyValueData, TitanOperationStatus> findPropertyValueRes =
-        * titanGenericDao .getNode(UniqueIdBuilder .getKeyByNodeType(NodeTypeEnum.PropertyValue), valueUniqueUid, PropertyValueData.class); if (findPropertyValueRes.isRight()) { TitanOperationStatus status = findPropertyValueRes.right().value(); if
-        * (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } return Either.right(status); }
-        * 
-        * String value = resourceInstanceProperty.getValue();
-        * 
-        * Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> child = titanGenericDao.getChild(UniqueIdBuilder .getKeyByNodeType(NodeTypeEnum.PropertyValue), valueUniqueUid, GraphEdgeLabels.PROPERTY_IMPL, NodeTypeEnum.Property,
-        * PropertyData.class);
-        * 
-        * if (child.isRight()) { TitanOperationStatus status = child.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } return Either.right(status); }
-        * 
-        * PropertyData propertyData = child.left().value().left; String propertyType = propertyData.getPropertyDataDefinition().getType();
-        * 
-        * log.debug("The type of the property {} is {}", propertyData.getUniqueId(), propertyType);
-        * 
-        * Either<Object, Boolean> isValid = validateAndUpdatePropertyValue(propertyType, value);
-        * 
-        * String newValue = value; if (isValid.isRight()) { Boolean res = isValid.right().value(); if (res == false) { return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } } else { Object object = isValid.left().value(); if (object != null) {
-        * newValue = object.toString(); } } PropertyValueData propertyValueData = findPropertyValueRes.left().value(); log.debug("Going to update property value from " + propertyValueData.getValue() + " to " + newValue);
-        * propertyValueData.setValue(newValue);
-        * 
-        * ImmutablePair<String, Boolean> pair = validateAndUpdateRules(propertyType, resourceInstanceProperty.getRules()); if (pair.getRight() != null && pair.getRight() == false) { BeEcompErrorManager.getInstance().
-        * logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProperty.getName(), propertyType); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } updateRulesInPropertyValue(propertyValueData,
-        * resourceInstanceProperty, resourceInstanceId);
-        * 
-        * Either<PropertyValueData, TitanOperationStatus> updateRes = titanGenericDao.updateNode(propertyValueData, PropertyValueData.class); if (updateRes.isRight()) { TitanOperationStatus status = updateRes.right().value(); return
-        * Either.right(status); } else { return Either.left(updateRes.left().value()); } }
-        * 
-        * }
-        */
 
        public void updateRulesInPropertyValue(PropertyValueData propertyValueData, ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId) {
 
@@ -998,7 +889,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                List<PropertyRule> mergedRules = new ArrayList<>();
 
-               if (newRules == null || newRules.isEmpty() == true) {
+               if (newRules == null || newRules.isEmpty()) {
                        return currentRules;
                }
 
@@ -1021,7 +912,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        private PropertyRule findRuleInList(PropertyRule rule, List<PropertyRule> rules) {
 
-               if (rules == null || rules.isEmpty() == true || rule.getRule() == null || rule.getRule().isEmpty() == true) {
+               if (rules == null || rules.isEmpty() || rule.getRule() == null || rule.getRule().isEmpty()) {
                        return null;
                }
 
@@ -1031,7 +922,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                continue;
                        }
                        boolean equals = propertyRule.compareRule(rule);
-                       if (equals == true) {
+                       if (equals) {
                                foundRule = propertyRule;
                                break;
                        }
@@ -1046,87 +937,49 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
         * @param resourceInstanceUid
         * @return
         */
-       public Either<List<ComponentInstanceProperty>, TitanOperationStatus> getAllPropertiesOfResourceInstanceOnlyPropertyDefId(String resourceInstanceUid) {
+       public Either<List<ComponentInstanceProperty>, JanusGraphOperationStatus> getAllPropertiesOfResourceInstanceOnlyPropertyDefId(String resourceInstanceUid) {
 
                return getAllPropertiesOfResourceInstanceOnlyPropertyDefId(resourceInstanceUid, NodeTypeEnum.ResourceInstance);
 
        }
 
-       /*
-        * public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance( ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index, boolean inTransaction) {
-        * 
-        * /// #RULES SUPPORT /// Ignore rules received from client till support resourceInstanceProperty.setRules(null); /// ///
-        * 
-        * Either<ComponentInstanceProperty, StorageOperationStatus> result = null;
-        * 
-        * try {
-        * 
-        * Either<PropertyValueData, TitanOperationStatus> eitherStatus = this .addPropertyToResourceInstance(resourceInstanceProperty, resourceInstanceId, index);
-        * 
-        * if (eitherStatus.isRight()) { log.error( "Failed to add property value {} to resource instance {} in Graph. status is {}" , resourceInstanceProperty, resourceInstanceId, eitherStatus.right().value().name()); result =
-        * Either.right(DaoStatusConverter .convertTitanStatusToStorageStatus(eitherStatus.right() .value())); return result; } else { PropertyValueData propertyValueData = eitherStatus.left() .value();
-        * 
-        * ComponentInstanceProperty propertyValueResult = buildResourceInstanceProperty( propertyValueData, resourceInstanceProperty);
-        * 
-        * log.debug("The returned ResourceInstanceProperty is  {}", propertyValueResult); result = Either.left(propertyValueResult); return result; } }
-        * 
-        * finally { if (false == inTransaction) { if (result == null || result.isRight()) { log.error("Going to execute rollback on graph."); titanGenericDao.rollback(); } else { log.debug("Going to execute commit on graph."); titanGenericDao.commit();
-        * } } }
-        * 
-        * }
-        * 
-        * public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInResourceInstance( ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean inTransaction) {
-        * 
-        * Either<ComponentInstanceProperty, StorageOperationStatus> result = null;
-        * 
-        * try { //TODO: verify validUniqueId exists Either<PropertyValueData, TitanOperationStatus> eitherStatus = this .updatePropertyOfResourceInstance(resourceInstanceProperty, resourceInstanceId);
-        * 
-        * if (eitherStatus.isRight()) { log.error( "Failed to add property value {} to resource instance {} in Graph. status is {}" , resourceInstanceProperty, resourceInstanceId, eitherStatus.right().value().name()); result =
-        * Either.right(DaoStatusConverter .convertTitanStatusToStorageStatus(eitherStatus.right() .value())); return result; } else { PropertyValueData propertyValueData = eitherStatus.left() .value();
-        * 
-        * ComponentInstanceProperty propertyValueResult = buildResourceInstanceProperty( propertyValueData, resourceInstanceProperty);
-        * 
-        * log.debug("The returned ResourceInstanceProperty is  {}", propertyValueResult); result = Either.left(propertyValueResult); return result; } }
-        * 
-        * finally { if (false == inTransaction) { if (result == null || result.isRight()) { log.error("Going to execute rollback on graph."); titanGenericDao.rollback(); } else { log.debug("Going to execute commit on graph."); titanGenericDao.commit();
-        * } } }
-        * 
-        * }
-        */
-
-       public Either<PropertyValueData, TitanOperationStatus> removePropertyOfResourceInstance(String propertyValueUid, String resourceInstanceId) {
+       public Either<PropertyValueData, JanusGraphOperationStatus> removePropertyOfResourceInstance(String propertyValueUid, String resourceInstanceId) {
 
-               Either<ComponentInstanceData, TitanOperationStatus> findResInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, ComponentInstanceData.class);
+               Either<ComponentInstanceData, JanusGraphOperationStatus> findResInstanceRes = janusGraphGenericDao
+                               .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, ComponentInstanceData.class);
 
                if (findResInstanceRes.isRight()) {
-                       TitanOperationStatus status = findResInstanceRes.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
-                               status = TitanOperationStatus.INVALID_ID;
+                       JanusGraphOperationStatus status = findResInstanceRes.right().value();
+                       if (status == JanusGraphOperationStatus.NOT_FOUND) {
+                               status = JanusGraphOperationStatus.INVALID_ID;
                        }
                        return Either.right(status);
                }
 
-               Either<PropertyValueData, TitanOperationStatus> findPropertyDefRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), propertyValueUid, PropertyValueData.class);
+               Either<PropertyValueData, JanusGraphOperationStatus> findPropertyDefRes = janusGraphGenericDao
+                               .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), propertyValueUid, PropertyValueData.class);
 
                if (findPropertyDefRes.isRight()) {
-                       TitanOperationStatus status = findPropertyDefRes.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
-                               status = TitanOperationStatus.INVALID_ID;
+                       JanusGraphOperationStatus status = findPropertyDefRes.right().value();
+                       if (status == JanusGraphOperationStatus.NOT_FOUND) {
+                               status = JanusGraphOperationStatus.INVALID_ID;
                        }
                        return Either.right(status);
                }
 
-               Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.getRelation(findResInstanceRes.left().value(), findPropertyDefRes.left().value(), GraphEdgeLabels.PROPERTY_VALUE);
+               Either<GraphRelation, JanusGraphOperationStatus> relation = janusGraphGenericDao
+                               .getRelation(findResInstanceRes.left().value(), findPropertyDefRes.left().value(), GraphEdgeLabels.PROPERTY_VALUE);
                if (relation.isRight()) {
                        // TODO: add error in case of error
-                       TitanOperationStatus status = relation.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
-                               status = TitanOperationStatus.INVALID_ID;
+                       JanusGraphOperationStatus status = relation.right().value();
+                       if (status == JanusGraphOperationStatus.NOT_FOUND) {
+                               status = JanusGraphOperationStatus.INVALID_ID;
                        }
                        return Either.right(status);
                }
 
-               Either<PropertyValueData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(findPropertyDefRes.left().value(), PropertyValueData.class);
+               Either<PropertyValueData, JanusGraphOperationStatus> deleteNode = janusGraphGenericDao
+                               .deleteNode(findPropertyDefRes.left().value(), PropertyValueData.class);
                if (deleteNode.isRight()) {
                        return Either.right(deleteNode.right().value());
                }
@@ -1141,11 +994,11 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                try {
 
-                       Either<PropertyValueData, TitanOperationStatus> eitherStatus = this.removePropertyOfResourceInstance(propertyValueUid, resourceInstanceId);
+                       Either<PropertyValueData, JanusGraphOperationStatus> eitherStatus = this.removePropertyOfResourceInstance(propertyValueUid, resourceInstanceId);
 
                        if (eitherStatus.isRight()) {
                                log.error("Failed to remove property value {} from resource instance {} in Graph. status is {}", propertyValueUid, resourceInstanceId, eitherStatus.right().value().name());
-                               result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value()));
+                               result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(eitherStatus.right().value()));
                                return result;
                        } else {
                                PropertyValueData propertyValueData = eitherStatus.left().value();
@@ -1161,13 +1014,13 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                }
 
                finally {
-                       if (false == inTransaction) {
+                       if (!inTransaction) {
                                if (result == null || result.isRight()) {
-                                       log.error("Going to execute rollback on graph.");
-                                       titanGenericDao.rollback();
+                                       log.error(GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH);
+                                       janusGraphGenericDao.rollback();
                                } else {
-                                       log.debug("Going to execute commit on graph.");
-                                       titanGenericDao.commit();
+                                       log.debug(GOING_TO_EXECUTE_COMMIT_ON_GRAPH);
+                                       janusGraphGenericDao.commit();
                                }
                        }
                }
@@ -1200,7 +1053,6 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                if (propertyDefinition == null) {
                        return false;
                }
-               boolean isValid = false;
                String innerType = null;
                String propertyType = propertyDefinition.getType();
                ToscaPropertyType type = getType(propertyType);
@@ -1217,18 +1069,17 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                }
                String value = propertyDefinition.getDefaultValue();
                if (type != null) {
-                       isValid = isValidValue(type, value, innerType, dataTypes);
+                       return isValidValue(type, value, innerType, dataTypes);
                } else {
                        log.trace("The given type {} is not a pre defined one.", propertyType);
 
                        DataTypeDefinition foundDt = dataTypes.get(propertyType);
                        if (foundDt != null) {
-                               isValid = isValidComplexValue(foundDt, value, dataTypes);
+                               return isValidComplexValue(foundDt, value, dataTypes);
                        } else {
-                               isValid = false;
+                               return false;
                        }
                }
-               return isValid;
        }
 
        public boolean isPropertyTypeValid(IComplexDefaultValue property) {
@@ -1239,7 +1090,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                if (ToscaPropertyType.isValidType(property.getType()) == null) {
 
-                       Either<Boolean, TitanOperationStatus> definedInDataTypes = isDefinedInDataTypes(property.getType());
+                       Either<Boolean, JanusGraphOperationStatus> definedInDataTypes = isDefinedInDataTypes(property.getType());
 
                        if (definedInDataTypes.isRight()) {
                                return false;
@@ -1256,7 +1107,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
        public ImmutablePair<String, Boolean> isPropertyInnerTypeValid(IComplexDefaultValue property, Map<String, DataTypeDefinition> dataTypes) {
 
                if (property == null) {
-                       return new ImmutablePair<String, Boolean>(null, false);
+                       return new ImmutablePair<>(null, false);
                }
 
                SchemaDefinition schema;
@@ -1274,22 +1125,16 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        DataTypeDefinition dataTypeDefinition = dataTypes.get(innerType);
                        if (dataTypeDefinition == null) {
                                log.debug("The inner type {} is not a data type.", innerType);
-                               return new ImmutablePair<String, Boolean>(innerType, false);
+                               return new ImmutablePair<>(innerType, false);
                        } else {
                                log.debug("The inner type {} is a data type. Data type definition is {}", innerType, dataTypeDefinition);
                        }
                }
 
-               return new ImmutablePair<String, Boolean>(innerType, true);
+               return new ImmutablePair<>(innerType, true);
        }
 
        private boolean isValidComplexValue(DataTypeDefinition foundDt, String value, Map<String, DataTypeDefinition> dataTypes) {
-               /*
-                * Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypesRes = getAllDataTypes(); if (allDataTypesRes.isRight()) { TitanOperationStatus status = allDataTypesRes.right().value();
-                * return false; }
-                * 
-                * Map<String, DataTypeDefinition> allDataTypes = allDataTypesRes.left().value();
-                */
                ImmutablePair<JsonElement, Boolean> validateAndUpdate = dataTypeValidatorConverter.validateAndUpdate(value, foundDt, dataTypes);
 
                log.trace("The result after validating complex value of type {} is {}", foundDt.getName(), validateAndUpdate);
@@ -1298,44 +1143,50 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        }
 
-       public Either<List<ComponentInstanceProperty>, TitanOperationStatus> getAllPropertiesOfResourceInstanceOnlyPropertyDefId(String resourceInstanceUid, NodeTypeEnum instanceNodeType) {
+       public Either<List<ComponentInstanceProperty>, JanusGraphOperationStatus> getAllPropertiesOfResourceInstanceOnlyPropertyDefId(String resourceInstanceUid, NodeTypeEnum instanceNodeType) {
 
-               Either<TitanVertex, TitanOperationStatus> findResInstanceRes = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), resourceInstanceUid);
+               Either<JanusGraphVertex, JanusGraphOperationStatus> findResInstanceRes = janusGraphGenericDao
+                               .getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), resourceInstanceUid);
 
                if (findResInstanceRes.isRight()) {
-                       TitanOperationStatus status = findResInstanceRes.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
-                               status = TitanOperationStatus.INVALID_ID;
+                       JanusGraphOperationStatus status = findResInstanceRes.right().value();
+                       if (status == JanusGraphOperationStatus.NOT_FOUND) {
+                               status = JanusGraphOperationStatus.INVALID_ID;
                        }
                        return Either.right(status);
                }
 
-               Either<List<ImmutablePair<TitanVertex, Edge>>, TitanOperationStatus> propertyImplNodes = titanGenericDao.getChildrenVertecies(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), resourceInstanceUid, GraphEdgeLabels.PROPERTY_VALUE);
+               Either<List<ImmutablePair<JanusGraphVertex, Edge>>, JanusGraphOperationStatus> propertyImplNodes = janusGraphGenericDao
+                               .getChildrenVertecies(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), resourceInstanceUid, GraphEdgeLabels.PROPERTY_VALUE);
 
                if (propertyImplNodes.isRight()) {
-                       TitanOperationStatus status = propertyImplNodes.right().value();
+                       JanusGraphOperationStatus status = propertyImplNodes.right().value();
                        return Either.right(status);
                }
 
-               List<ImmutablePair<TitanVertex, Edge>> list = propertyImplNodes.left().value();
-               if (list == null || true == list.isEmpty()) {
-                       return Either.right(TitanOperationStatus.NOT_FOUND);
+               List<ImmutablePair<JanusGraphVertex, Edge>> list = propertyImplNodes.left().value();
+               if (list == null || list.isEmpty()) {
+                       return Either.right(JanusGraphOperationStatus.NOT_FOUND);
                }
 
                List<ComponentInstanceProperty> result = new ArrayList<>();
-               for (ImmutablePair<TitanVertex, Edge> propertyValue : list) {
-                       TitanVertex propertyValueDataVertex = propertyValue.getLeft();
-                       String propertyValueUid = (String) titanGenericDao.getProperty(propertyValueDataVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
-                       String value = (String) titanGenericDao.getProperty(propertyValueDataVertex, GraphPropertiesDictionary.VALUE.getProperty());
-
-                       ImmutablePair<TitanVertex, Edge> propertyDefPair = titanGenericDao.getChildVertex(propertyValueDataVertex, GraphEdgeLabels.PROPERTY_IMPL);
+               for (ImmutablePair<JanusGraphVertex, Edge> propertyValue : list) {
+                       JanusGraphVertex propertyValueDataVertex = propertyValue.getLeft();
+                       String propertyValueUid = (String) janusGraphGenericDao
+                                       .getProperty(propertyValueDataVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+                       String value = (String) janusGraphGenericDao
+                                       .getProperty(propertyValueDataVertex, GraphPropertiesDictionary.VALUE.getProperty());
+
+                       ImmutablePair<JanusGraphVertex, Edge> propertyDefPair = janusGraphGenericDao
+                                       .getChildVertex(propertyValueDataVertex, GraphEdgeLabels.PROPERTY_IMPL);
                        if (propertyDefPair == null) {
-                               return Either.right(TitanOperationStatus.NOT_FOUND);
+                               return Either.right(JanusGraphOperationStatus.NOT_FOUND);
                        }
 
-                       Map<String, Object> properties = titanGenericDao.getProperties(propertyValueDataVertex);
+                       Map<String, Object> properties = janusGraphGenericDao.getProperties(propertyValueDataVertex);
                        PropertyValueData propertyValueData = GraphElementFactory.createElement(NodeTypeEnum.PropertyValue.getName(), GraphElementTypeEnum.Node, properties, PropertyValueData.class);
-                       String propertyUniqueId = (String) titanGenericDao.getProperty(propertyDefPair.left, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+                       String propertyUniqueId = (String) janusGraphGenericDao
+                                       .getProperty(propertyDefPair.left, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
 
                        ComponentInstanceProperty resourceInstanceProperty = new ComponentInstanceProperty();
                        // set property original unique id
@@ -1364,7 +1215,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
         * @param defaultValue
         * @return
         */
-       public Either<String, TitanOperationStatus> findDefaultValueFromSecondPosition(List<String> pathOfComponentInstances, String propertyUniqueId, String defaultValue) {
+       public Either<String, JanusGraphOperationStatus> findDefaultValueFromSecondPosition(List<String> pathOfComponentInstances, String propertyUniqueId, String defaultValue) {
 
                log.trace("In find default value: path= {} propertyUniqId={} defaultValue= {}", pathOfComponentInstances, propertyUniqueId, defaultValue);
 
@@ -1377,13 +1228,13 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                for (int i = 1; i < pathOfComponentInstances.size(); i++) {
                        String compInstanceId = pathOfComponentInstances.get(i);
 
-                       Either<List<ComponentInstanceProperty>, TitanOperationStatus> propertyValuesResult = this.getAllPropertiesOfResourceInstanceOnlyPropertyDefId(compInstanceId, NodeTypeEnum.ResourceInstance);
+                       Either<List<ComponentInstanceProperty>, JanusGraphOperationStatus> propertyValuesResult = this.getAllPropertiesOfResourceInstanceOnlyPropertyDefId(compInstanceId, NodeTypeEnum.ResourceInstance);
 
                        log.trace("After fetching properties values of component instance {}. {}", compInstanceId, propertyValuesResult);
 
                        if (propertyValuesResult.isRight()) {
-                               TitanOperationStatus status = propertyValuesResult.right().value();
-                               if (status != TitanOperationStatus.NOT_FOUND) {
+                               JanusGraphOperationStatus status = propertyValuesResult.right().value();
+                               if (status != JanusGraphOperationStatus.NOT_FOUND) {
                                        return Either.right(status);
                                } else {
                                        continue;
@@ -1458,7 +1309,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                List<String> rule = new ArrayList<>();
                rule.add(componentInstanceId);
                for (int i = 0; i < size - 1; i++) {
-                       rule.add(PropertyRule.RULE_ANY_MATCH);
+                       rule.add(PropertyRule.getRuleAnyMatch());
                }
                PropertyRule propertyRule = new PropertyRule(rule, value);
                rules.add(propertyRule);
@@ -1486,12 +1337,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                        continue;
                                }
                                // check that the rule starts with correct component instance id
-                               if (false == checkFirstItem(firstCompInstance, rule.getFirstToken())) {
+                               if (!checkFirstItem(firstCompInstance, rule.getFirstToken())) {
                                        continue;
                                }
 
                                String secondToken = rule.getToken(2);
-                               if (secondToken != null && (secondToken.equals(PropertyRule.FORCE_ALL) || secondToken.equals(PropertyRule.ALL))) {
+                               if (secondToken != null && (secondToken.equals(PropertyRule.getForceAll()) || secondToken.equals(PropertyRule.getALL()))) {
                                        propertyRule = rule;
                                        break;
                                }
@@ -1593,7 +1444,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
         * @param dataTypeDefinition
         * @return
         */
-       private Either<DataTypeData, TitanOperationStatus> addDataTypeToGraph(DataTypeDefinition dataTypeDefinition) {
+       private Either<DataTypeData, JanusGraphOperationStatus> addDataTypeToGraph(DataTypeDefinition dataTypeDefinition) {
 
                log.debug("Got data type {}", dataTypeDefinition);
 
@@ -1602,11 +1453,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                DataTypeData dataTypeData = buildDataTypeData(dataTypeDefinition, dtUniqueId);
 
                log.debug("Before adding data type to graph. dataTypeData = {}", dataTypeData);
-               Either<DataTypeData, TitanOperationStatus> createDataTypeResult = titanGenericDao.createNode(dataTypeData, DataTypeData.class);
+               Either<DataTypeData, JanusGraphOperationStatus> createDataTypeResult = janusGraphGenericDao
+                               .createNode(dataTypeData, DataTypeData.class);
                log.debug("After adding data type to graph. status is = {}", createDataTypeResult);
 
                if (createDataTypeResult.isRight()) {
-                       TitanOperationStatus operationStatus = createDataTypeResult.right().value();
+                       JanusGraphOperationStatus operationStatus = createDataTypeResult.right().value();
                        log.debug("Failed to data type {} to graph. status is {}", dataTypeDefinition.getName(), operationStatus);
                        BeEcompErrorManager.getInstance().logBeFailedAddingNodeTypeError("AddDataType", NodeTypeEnum.DataType.getName());
                        return Either.right(operationStatus);
@@ -1614,7 +1466,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                DataTypeData resultCTD = createDataTypeResult.left().value();
                List<PropertyDefinition> properties = dataTypeDefinition.getProperties();
-               Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToDataType = addPropertiesToDataType(resultCTD.getUniqueId(), properties);
+               Either<Map<String, PropertyData>, JanusGraphOperationStatus> addPropertiesToDataType = addPropertiesToDataType(resultCTD.getUniqueId(), properties);
                if (addPropertiesToDataType.isRight()) {
                        log.debug("Failed add properties {} to data type {}", properties, dataTypeDefinition.getName());
                        return Either.right(addPropertiesToDataType.right().value());
@@ -1627,7 +1479,8 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                        String deriveFromUid = UniqueIdBuilder.buildDataTypeUid(derivedFrom);
                        UniqueIdData to = new UniqueIdData(NodeTypeEnum.DataType, deriveFromUid);
-                       Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(from, to, GraphEdgeLabels.DERIVED_FROM, null);
+                       Either<GraphRelation, JanusGraphOperationStatus> createRelation = janusGraphGenericDao
+                                       .createRelation(from, to, GraphEdgeLabels.DERIVED_FROM, null);
                        log.debug("After create relation between capability type {} to its parent {}. status is {}", dtUniqueId, derivedFrom, createRelation);
                        if (createRelation.isRight()) {
                                return Either.right(createRelation.right().value());
@@ -1662,29 +1515,29 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
         * @param properties
         * @return
         */
-       private Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToDataType(String uniqueId, List<PropertyDefinition> properties) {
+       private Either<Map<String, PropertyData>, JanusGraphOperationStatus> addPropertiesToDataType(String uniqueId, List<PropertyDefinition> properties) {
 
-               Map<String, PropertyData> propertiesData = new HashMap<String, PropertyData>();
+               Map<String, PropertyData> propertiesData = new HashMap<>();
 
-               if (properties != null && false == properties.isEmpty()) {
+               if (properties != null && !properties.isEmpty()) {
                        for (PropertyDefinition propertyDefinition : properties) {
                                String propertyName = propertyDefinition.getName();
 
                                String propertyType = propertyDefinition.getType();
-                               Either<Boolean, TitanOperationStatus> validPropertyType = isValidPropertyType(propertyType);
+                               Either<Boolean, JanusGraphOperationStatus> validPropertyType = isValidPropertyType(propertyType);
                                if (validPropertyType.isRight()) {
                                        log.debug("Data type {} contains invalid property type {}", uniqueId, propertyType);
                                        return Either.right(validPropertyType.right().value());
                                }
                                Boolean isValid = validPropertyType.left().value();
-                               if (isValid == null || isValid.booleanValue() == false) {
+                               if (isValid == null || !isValid.booleanValue()) {
                                        log.debug("Data type {} contains invalid property type {}", uniqueId, propertyType);
-                                       return Either.right(TitanOperationStatus.INVALID_TYPE);
+                                       return Either.right(JanusGraphOperationStatus.INVALID_TYPE);
                                }
 
-                               Either<PropertyData, TitanOperationStatus> addPropertyToNodeType = this.addPropertyToNodeType(propertyName, propertyDefinition, NodeTypeEnum.DataType, uniqueId);
+                               Either<PropertyData, JanusGraphOperationStatus> addPropertyToNodeType = this.addPropertyToNodeType(propertyName, propertyDefinition, NodeTypeEnum.DataType, uniqueId);
                                if (addPropertyToNodeType.isRight()) {
-                                       TitanOperationStatus operationStatus = addPropertyToNodeType.right().value();
+                                       JanusGraphOperationStatus operationStatus = addPropertyToNodeType.right().value();
                                        log.debug("Failed to associate data type {} to property {} in graph. status is {}", uniqueId, propertyName, operationStatus);
                                        BeEcompErrorManager.getInstance().logInternalFlowError("AddPropertyToDataType", "Failed to associate property to data type. Status is " + operationStatus, ErrorSeverity.ERROR);
                                        return Either.right(operationStatus);
@@ -1697,9 +1550,10 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        long modificationTime = System.currentTimeMillis();
                        dataTypeData.getDataTypeDataDefinition().setModificationTime(modificationTime);
 
-                       Either<DataTypeData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(dataTypeData, DataTypeData.class);
+                       Either<DataTypeData, JanusGraphOperationStatus> updateNode = janusGraphGenericDao
+                                       .updateNode(dataTypeData, DataTypeData.class);
                        if (updateNode.isRight()) {
-                               TitanOperationStatus operationStatus = updateNode.right().value();
+                               JanusGraphOperationStatus operationStatus = updateNode.right().value();
                                log.debug("Failed to update modification time data type {} from graph. status is {}", uniqueId, operationStatus);
                                BeEcompErrorManager.getInstance().logInternalFlowError("AddPropertyToDataType", "Failed to fetch data type. Status is " + operationStatus, ErrorSeverity.ERROR);
                                return Either.right(operationStatus);
@@ -1719,35 +1573,38 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
         * @param uniqueId
         * @return
         */
-       public Either<DataTypeDefinition, TitanOperationStatus> getDataTypeByUid(String uniqueId) {
+       public Either<DataTypeDefinition, JanusGraphOperationStatus> getDataTypeByUid(String uniqueId) {
 
-               Either<DataTypeDefinition, TitanOperationStatus> result = null;
+               Either<DataTypeDefinition, JanusGraphOperationStatus> result = null;
 
-               Either<DataTypeData, TitanOperationStatus> dataTypesRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, DataTypeData.class);
+               Either<DataTypeData, JanusGraphOperationStatus> dataTypesRes = janusGraphGenericDao
+                               .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, DataTypeData.class);
 
                if (dataTypesRes.isRight()) {
-                       TitanOperationStatus status = dataTypesRes.right().value();
-                       log.debug("Data type {} cannot be found in graph. status is {}", uniqueId, status);
+                       JanusGraphOperationStatus status = dataTypesRes.right().value();
+                       log.debug(DATA_TYPE_CANNOT_BE_FOUND_IN_GRAPH_STATUS_IS, uniqueId, status);
                        return Either.right(status);
                }
 
                DataTypeData ctData = dataTypesRes.left().value();
                DataTypeDefinition dataTypeDefinition = new DataTypeDefinition(ctData.getDataTypeDataDefinition());
 
-               TitanOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition);
-               if (propertiesStatus != TitanOperationStatus.OK) {
-                       log.error("Failed to fetch properties of data type {}", uniqueId);
+               JanusGraphOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition);
+               if (propertiesStatus != JanusGraphOperationStatus.OK) {
+                       log.error(FAILED_TO_FETCH_PROPERTIES_OF_DATA_TYPE, uniqueId);
                        return Either.right(propertiesStatus);
                }
 
-               Either<ImmutablePair<DataTypeData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.DataType,
+               Either<ImmutablePair<DataTypeData, GraphEdge>, JanusGraphOperationStatus> parentNode = janusGraphGenericDao
+                               .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.DataType,
                                DataTypeData.class);
                log.debug("After retrieving DERIVED_FROM node of {}. status is {}", uniqueId, parentNode);
                if (parentNode.isRight()) {
-                       TitanOperationStatus titanOperationStatus = parentNode.right().value();
-                       if (titanOperationStatus != TitanOperationStatus.NOT_FOUND) {
-                               log.error("Failed to find the parent data type of data type {}. status is {}", uniqueId, titanOperationStatus);
-                               result = Either.right(titanOperationStatus);
+                       JanusGraphOperationStatus janusGraphOperationStatus = parentNode.right().value();
+                       if (janusGraphOperationStatus != JanusGraphOperationStatus.NOT_FOUND) {
+                               log.error("Failed to find the parent data type of data type {}. status is {}", uniqueId,
+                                               janusGraphOperationStatus);
+                               result = Either.right(janusGraphOperationStatus);
                                return result;
                        }
                } else {
@@ -1756,7 +1613,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        DataTypeData parentCT = immutablePair.getKey();
 
                        String parentUniqueId = parentCT.getUniqueId();
-                       Either<DataTypeDefinition, TitanOperationStatus> dataTypeByUid = getDataTypeByUid(parentUniqueId);
+                       Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeByUid = getDataTypeByUid(parentUniqueId);
 
                        if (dataTypeByUid.isRight()) {
                                return Either.right(dataTypeByUid.right().value());
@@ -1772,20 +1629,21 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                return result;
        }
 
-       private TitanOperationStatus fillProperties(String uniqueId, DataTypeDefinition dataTypeDefinition) {
+       private JanusGraphOperationStatus fillProperties(String uniqueId, DataTypeDefinition dataTypeDefinition) {
 
-               Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfNode = this.findPropertiesOfNode(NodeTypeEnum.DataType, uniqueId);
+               Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> findPropertiesOfNode = this.findPropertiesOfNode(NodeTypeEnum.DataType, uniqueId);
                if (findPropertiesOfNode.isRight()) {
-                       TitanOperationStatus titanOperationStatus = findPropertiesOfNode.right().value();
-                       log.debug("After looking for properties of vertex {}. status is {}", uniqueId, titanOperationStatus);
-                       if (TitanOperationStatus.NOT_FOUND.equals(titanOperationStatus)) {
-                               return TitanOperationStatus.OK;
+                       JanusGraphOperationStatus janusGraphOperationStatus = findPropertiesOfNode.right().value();
+                       log.debug("After looking for properties of vertex {}. status is {}", uniqueId,
+                                       janusGraphOperationStatus);
+                       if (JanusGraphOperationStatus.NOT_FOUND.equals(janusGraphOperationStatus)) {
+                               return JanusGraphOperationStatus.OK;
                        } else {
-                               return titanOperationStatus;
+                               return janusGraphOperationStatus;
                        }
                } else {
                        Map<String, PropertyDefinition> properties = findPropertiesOfNode.left().value();
-                       if (properties != null && properties.isEmpty() == false) {
+                       if (properties != null && !properties.isEmpty()) {
                                List<PropertyDefinition> listOfProps = new ArrayList<>();
 
                                for (Entry<String, PropertyDefinition> entry : properties.entrySet()) {
@@ -1797,7 +1655,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                }
                                dataTypeDefinition.setProperties(listOfProps);
                        }
-                       return TitanOperationStatus.OK;
+                       return JanusGraphOperationStatus.OK;
                }
        }
 
@@ -1807,12 +1665,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                try {
 
-                       Either<DataTypeData, TitanOperationStatus> eitherStatus = addDataTypeToGraph(dataTypeDefinition);
+                       Either<DataTypeData, JanusGraphOperationStatus> eitherStatus = addDataTypeToGraph(dataTypeDefinition);
 
                        if (eitherStatus.isRight()) {
                                log.debug("Failed to add data type {} to Graph. status is {}", dataTypeDefinition, eitherStatus.right().value().name());
                                BeEcompErrorManager.getInstance().logBeFailedAddingNodeTypeError("AddDataType", "DataType");
-                               result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value()));
+                               result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(eitherStatus.right().value()));
                                return result;
                        } else {
                                DataTypeData capabilityTypeData = eitherStatus.left().value();
@@ -1823,13 +1681,13 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                return result;
                        }
                } finally {
-                       if (false == inTransaction) {
+                       if (!inTransaction) {
                                if (result == null || result.isRight()) {
-                                       log.error("Going to execute rollback on graph.");
-                                       titanGenericDao.rollback();
+                                       log.error(GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH);
+                                       janusGraphGenericDao.rollback();
                                } else {
-                                       log.debug("Going to execute commit on graph.");
-                                       titanGenericDao.commit();
+                                       log.debug(GOING_TO_EXECUTE_COMMIT_ON_GRAPH);
+                                       janusGraphGenericDao.commit();
                                }
                        }
                }
@@ -1848,14 +1706,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                try {
 
                        String dtUid = UniqueIdBuilder.buildDataTypeUid(name);
-                       Either<DataTypeDefinition, TitanOperationStatus> ctResult = this.getDataTypeByUid(dtUid);
+                       Either<DataTypeDefinition, JanusGraphOperationStatus> ctResult = this.getDataTypeByUid(dtUid);
 
                        if (ctResult.isRight()) {
-                               TitanOperationStatus status = ctResult.right().value();
-                               if (status != TitanOperationStatus.NOT_FOUND) {
+                               JanusGraphOperationStatus status = ctResult.right().value();
+                               if (status != JanusGraphOperationStatus.NOT_FOUND) {
                                        log.error("Failed to retrieve information on capability type {} status is {}", name, status);
                                }
-                               result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(ctResult.right().value()));
+                               result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(ctResult.right().value()));
                                return result;
                        }
 
@@ -1863,13 +1721,13 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                        return result;
                } finally {
-                       if (false == inTransaction) {
+                       if (!inTransaction) {
                                if (result == null || result.isRight()) {
-                                       log.error("Going to execute rollback on graph.");
-                                       titanGenericDao.rollback();
+                                       log.error(GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH);
+                                       janusGraphGenericDao.rollback();
                                } else {
-                                       log.debug("Going to execute commit on graph.");
-                                       titanGenericDao.commit();
+                                       log.debug(GOING_TO_EXECUTE_COMMIT_ON_GRAPH);
+                                       janusGraphGenericDao.commit();
                                }
                        }
                }
@@ -1892,14 +1750,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                try {
 
                        String uid = UniqueIdBuilder.buildDataTypeUid(name);
-                       Either<DataTypeDefinition, TitanOperationStatus> ctResult = this.getDataTypeByUidWithoutDerivedDataTypes(uid);
+                       Either<DataTypeDefinition, JanusGraphOperationStatus> ctResult = this.getDataTypeByUidWithoutDerivedDataTypes(uid);
 
                        if (ctResult.isRight()) {
-                               TitanOperationStatus status = ctResult.right().value();
-                               if (status != TitanOperationStatus.NOT_FOUND) {
+                               JanusGraphOperationStatus status = ctResult.right().value();
+                               if (status != JanusGraphOperationStatus.NOT_FOUND) {
                                        log.error("Failed to retrieve information on capability type {} status is {}", name, status);
                                }
-                               result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(ctResult.right().value()));
+                               result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(ctResult.right().value()));
                                return result;
                        }
 
@@ -1907,35 +1765,36 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                        return result;
                } finally {
-                       if (false == inTransaction) {
+                       if (!inTransaction) {
                                if (result == null || result.isRight()) {
-                                       log.error("Going to execute rollback on graph.");
-                                       titanGenericDao.rollback();
+                                       log.error(GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH);
+                                       janusGraphGenericDao.rollback();
                                } else {
-                                       log.debug("Going to execute commit on graph.");
-                                       titanGenericDao.commit();
+                                       log.debug(GOING_TO_EXECUTE_COMMIT_ON_GRAPH);
+                                       janusGraphGenericDao.commit();
                                }
                        }
                }
 
        }
 
-       public Either<DataTypeDefinition, TitanOperationStatus> getDataTypeByUidWithoutDerivedDataTypes(String uniqueId) {
+       public Either<DataTypeDefinition, JanusGraphOperationStatus> getDataTypeByUidWithoutDerivedDataTypes(String uniqueId) {
 
-               Either<DataTypeData, TitanOperationStatus> dataTypesRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, DataTypeData.class);
+               Either<DataTypeData, JanusGraphOperationStatus> dataTypesRes = janusGraphGenericDao
+                               .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, DataTypeData.class);
 
                if (dataTypesRes.isRight()) {
-                       TitanOperationStatus status = dataTypesRes.right().value();
-                       log.debug("Data type {} cannot be found in graph. status is {}", uniqueId, status);
+                       JanusGraphOperationStatus status = dataTypesRes.right().value();
+                       log.debug(DATA_TYPE_CANNOT_BE_FOUND_IN_GRAPH_STATUS_IS, uniqueId, status);
                        return Either.right(status);
                }
 
                DataTypeData ctData = dataTypesRes.left().value();
                DataTypeDefinition dataTypeDefinition = new DataTypeDefinition(ctData.getDataTypeDataDefinition());
 
-               TitanOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition);
-               if (propertiesStatus != TitanOperationStatus.OK) {
-                       log.error("Failed to fetch properties of data type {}", uniqueId);
+               JanusGraphOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition);
+               if (propertiesStatus != JanusGraphOperationStatus.OK) {
+                       log.error(FAILED_TO_FETCH_PROPERTIES_OF_DATA_TYPE, uniqueId);
                        return Either.right(propertiesStatus);
                }
 
@@ -1952,12 +1811,10 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
        protected DataTypeDefinition convertDTDataToDTDefinition(DataTypeData dataTypeData) {
                log.debug("The object returned after create data type is {}", dataTypeData);
 
-               DataTypeDefinition dataTypeDefResult = new DataTypeDefinition(dataTypeData.getDataTypeDataDefinition());
-
-               return dataTypeDefResult;
+        return new DataTypeDefinition(dataTypeData.getDataTypeDataDefinition());
        }
 
-       private Either<Boolean, TitanOperationStatus> isValidPropertyType(String propertyType) {
+       private Either<Boolean, JanusGraphOperationStatus> isValidPropertyType(String propertyType) {
 
                if (propertyType == null || propertyType.isEmpty()) {
                        return Either.left(false);
@@ -1965,20 +1822,19 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                ToscaPropertyType toscaPropertyType = ToscaPropertyType.isValidType(propertyType);
                if (toscaPropertyType == null) {
-                       Either<Boolean, TitanOperationStatus> definedInDataTypes = isDefinedInDataTypes(propertyType);
-                       return definedInDataTypes;
+            return isDefinedInDataTypes(propertyType);
                } else {
                        return Either.left(true);
                }
        }
 
-       public Either<Boolean, TitanOperationStatus> isDefinedInDataTypes(String propertyType) {
+       public Either<Boolean, JanusGraphOperationStatus> isDefinedInDataTypes(String propertyType) {
 
                String dataTypeUid = UniqueIdBuilder.buildDataTypeUid(propertyType);
-               Either<DataTypeDefinition, TitanOperationStatus> dataTypeByUid = getDataTypeByUid(dataTypeUid);
+               Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeByUid = getDataTypeByUid(dataTypeUid);
                if (dataTypeByUid.isRight()) {
-                       TitanOperationStatus status = dataTypeByUid.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
+                       JanusGraphOperationStatus status = dataTypeByUid.right().value();
+                       if (status == JanusGraphOperationStatus.NOT_FOUND) {
                                return Either.left(false);
                        }
                        return Either.right(status);
@@ -1988,15 +1844,16 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        }
 
-       public Either<Map<String, DataTypeDefinition>, TitanOperationStatus> getAllDataTypes() {
+       public Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> getAllDataTypes() {
 
                Map<String, DataTypeDefinition> dataTypes = new HashMap<>();
-               Either<Map<String, DataTypeDefinition>, TitanOperationStatus> result = Either.left(dataTypes);
+               Either<Map<String, DataTypeDefinition>, JanusGraphOperationStatus> result = Either.left(dataTypes);
 
-               Either<List<DataTypeData>, TitanOperationStatus> getAllDataTypes = titanGenericDao.getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class);
+               Either<List<DataTypeData>, JanusGraphOperationStatus> getAllDataTypes = janusGraphGenericDao
+                               .getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class);
                if (getAllDataTypes.isRight()) {
-                       TitanOperationStatus status = getAllDataTypes.right().value();
-                       if (status != TitanOperationStatus.NOT_FOUND) {
+                       JanusGraphOperationStatus status = getAllDataTypes.right().value();
+                       if (status != JanusGraphOperationStatus.NOT_FOUND) {
                                return Either.right(status);
                        } else {
                                return result;
@@ -2014,11 +1871,11 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        for (DataTypeData dataTypeData : list) {
 
                                log.trace("Going to fetch data type {}. uid is {}", dataTypeData.getDataTypeDataDefinition().getName(), dataTypeData.getUniqueId());
-                               Either<DataTypeDefinition, TitanOperationStatus> dataTypeByUid = this.getAndAddDataTypeByUid(dataTypeData.getUniqueId(), dataTypes);
+                               Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeByUid = this.getAndAddDataTypeByUid(dataTypeData.getUniqueId(), dataTypes);
                                if (dataTypeByUid.isRight()) {
-                                       TitanOperationStatus status = dataTypeByUid.right().value();
-                                       if (status == TitanOperationStatus.NOT_FOUND) {
-                                               status = TitanOperationStatus.INVALID_ID;
+                                       JanusGraphOperationStatus status = dataTypeByUid.right().value();
+                                       if (status == JanusGraphOperationStatus.NOT_FOUND) {
+                                               status = JanusGraphOperationStatus.INVALID_ID;
                                        }
                                        return Either.right(status);
                                }
@@ -2046,28 +1903,29 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
         * @param uniqueId
         * @return
         */
-       private Either<DataTypeDefinition, TitanOperationStatus> getAndAddDataTypeByUid(String uniqueId, Map<String, DataTypeDefinition> allDataTypes) {
+       private Either<DataTypeDefinition, JanusGraphOperationStatus> getAndAddDataTypeByUid(String uniqueId, Map<String, DataTypeDefinition> allDataTypes) {
 
-               Either<DataTypeDefinition, TitanOperationStatus> result = null;
+               Either<DataTypeDefinition, JanusGraphOperationStatus> result = null;
 
                if (allDataTypes.containsKey(uniqueId)) {
                        return Either.left(allDataTypes.get(uniqueId));
                }
 
-               Either<DataTypeData, TitanOperationStatus> dataTypesRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, DataTypeData.class);
+               Either<DataTypeData, JanusGraphOperationStatus> dataTypesRes = janusGraphGenericDao
+                               .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, DataTypeData.class);
 
                if (dataTypesRes.isRight()) {
-                       TitanOperationStatus status = dataTypesRes.right().value();
-                       log.debug("Data type {} cannot be found in graph. status is {}", uniqueId, status);
+                       JanusGraphOperationStatus status = dataTypesRes.right().value();
+                       log.debug(DATA_TYPE_CANNOT_BE_FOUND_IN_GRAPH_STATUS_IS, uniqueId, status);
                        return Either.right(status);
                }
 
                DataTypeData ctData = dataTypesRes.left().value();
                DataTypeDefinition dataTypeDefinition = new DataTypeDefinition(ctData.getDataTypeDataDefinition());
 
-               TitanOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition);
-               if (propertiesStatus != TitanOperationStatus.OK) {
-                       log.error("Failed to fetch properties of data type {}", uniqueId);
+               JanusGraphOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition);
+               if (propertiesStatus != JanusGraphOperationStatus.OK) {
+                       log.error(FAILED_TO_FETCH_PROPERTIES_OF_DATA_TYPE, uniqueId);
                        return Either.right(propertiesStatus);
                }
 
@@ -2082,14 +1940,16 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        return Either.left(dataTypeDefinition);
                }
 
-               Either<ImmutablePair<DataTypeData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.DataType,
+               Either<ImmutablePair<DataTypeData, GraphEdge>, JanusGraphOperationStatus> parentNode = janusGraphGenericDao
+                               .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.DataType,
                                DataTypeData.class);
                log.debug("After retrieving DERIVED_FROM node of {}. status is {}", uniqueId, parentNode);
                if (parentNode.isRight()) {
-                       TitanOperationStatus titanOperationStatus = parentNode.right().value();
-                       if (titanOperationStatus != TitanOperationStatus.NOT_FOUND) {
-                               log.error("Failed to find the parent data type of data type {}. status is {}", uniqueId, titanOperationStatus);
-                               result = Either.right(titanOperationStatus);
+                       JanusGraphOperationStatus janusGraphOperationStatus = parentNode.right().value();
+                       if (janusGraphOperationStatus != JanusGraphOperationStatus.NOT_FOUND) {
+                               log.error("Failed to find the parent data type of data type {}. status is {}", uniqueId,
+                                               janusGraphOperationStatus);
+                               result = Either.right(janusGraphOperationStatus);
                                return result;
                        }
                } else {
@@ -2098,7 +1958,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        DataTypeData parentCT = immutablePair.getKey();
 
                        String parentUniqueId = parentCT.getUniqueId();
-                       Either<DataTypeDefinition, TitanOperationStatus> dataTypeByUid = getDataTypeByUid(parentUniqueId);
+                       Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeByUid = getDataTypeByUid(parentUniqueId);
 
                        if (dataTypeByUid.isRight()) {
                                return Either.right(dataTypeByUid.right().value());
@@ -2114,26 +1974,22 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                return result;
        }
 
-       private Either<DataTypeDefinition, TitanOperationStatus> getDataTypeUsingName(String name) {
-               String uid = UniqueIdBuilder.buildDataTypeUid(name);
-               return getDataTypeByUid(uid);
-       }
-
-       public Either<String, TitanOperationStatus> checkInnerType(PropertyDataDefinition propDataDef) {
+       public Either<String, JanusGraphOperationStatus> checkInnerType(PropertyDataDefinition propDataDef) {
 
                String propertyType = propDataDef.getType();
 
                ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
 
-               return getInnerType(type, () -> propDataDef.getSchema());
+               return getInnerType(type, propDataDef::getSchema);
        }
 
-       public Either<List<DataTypeData>, TitanOperationStatus> getAllDataTypeNodes() {
-               Either<List<DataTypeData>, TitanOperationStatus> getAllDataTypes = titanGenericDao.getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class);
+       public Either<List<DataTypeData>, JanusGraphOperationStatus> getAllDataTypeNodes() {
+               Either<List<DataTypeData>, JanusGraphOperationStatus> getAllDataTypes = janusGraphGenericDao
+                               .getByCriteria(NodeTypeEnum.DataType, null, DataTypeData.class);
                if (getAllDataTypes.isRight()) {
-                       TitanOperationStatus status = getAllDataTypes.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
-                               status = TitanOperationStatus.OK;
+                       JanusGraphOperationStatus status = getAllDataTypes.right().value();
+                       if (status == JanusGraphOperationStatus.NOT_FOUND) {
+                               status = JanusGraphOperationStatus.OK;
                                return Either.right(status);
                        }
                }
@@ -2150,7 +2006,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                DataTypeDefinition dataTypeDefinition = dataTypes.get(propertyType);
                                ImmutablePair<JsonElement, Boolean> validateResult = dataTypeValidatorConverter.validateAndUpdate(value, dataTypeDefinition, dataTypes);
                                if (Boolean.FALSE.equals(validateResult.right)) {
-                                       log.debug("The value {} of property from type {} is invalid", value, propertyType);
+                                       log.debug(THE_VALUE_OF_PROPERTY_FROM_TYPE_IS_INVALID, value, propertyType);
                                        return Either.right(false);
                                }
                                JsonElement jsonElement = validateResult.left;
@@ -2160,7 +2016,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        log.trace("before validating property type {}", propertyType);
                        boolean isValidProperty = isValidValue(type, value, innerType, dataTypes);
                        if (!isValidProperty) {
-                               log.debug("The value {} of property from type {} is invalid", value, type);
+                               log.debug(THE_VALUE_OF_PROPERTY_FROM_TYPE_IS_INVALID, value, type);
                                return Either.right(false);
                        }
                }
@@ -2184,11 +2040,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                .bind(props -> getAllDerivedFromChainProperties(uniqueId, nodeType, clazz, props.values()));
        }
 
-       private Either<Map<String, PropertyDefinition>, StorageOperationStatus> handleNotFoundProperties(TitanOperationStatus titanOperationStatus) {
-               if (titanOperationStatus == TitanOperationStatus.NOT_FOUND) {
+       private Either<Map<String, PropertyDefinition>, StorageOperationStatus> handleNotFoundProperties(JanusGraphOperationStatus janusGraphOperationStatus) {
+               if (janusGraphOperationStatus == JanusGraphOperationStatus.NOT_FOUND) {
                        return Either.left(new HashMap<>());
                }
-               return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(titanOperationStatus));
+               return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(
+                               janusGraphOperationStatus));
        }
 
        private <T extends GraphNode> Either<List<PropertyDefinition>, StorageOperationStatus> getAllDerivedFromChainProperties(String uniqueId, NodeTypeEnum nodeType, Class<T> clazz, Collection<PropertyDefinition> nodeProps) {
@@ -2197,10 +2054,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                Either<T, StorageOperationStatus> derivedFrom;
                while ((derivedFrom = derivedFromOperation.getDerivedFromChild(currentNodeUid, nodeType, clazz)).isLeft()) {
                        currentNodeUid = derivedFrom.left().value().getUniqueId();
-                       TitanOperationStatus titanOperationStatus = fillProperties(currentNodeUid, nodeType, accumulatedProps::addAll);
-                       if (titanOperationStatus != TitanOperationStatus.OK) {
+                       JanusGraphOperationStatus
+                                       janusGraphOperationStatus = fillPropertiesList(currentNodeUid, nodeType, accumulatedProps::addAll);
+                       if (janusGraphOperationStatus != JanusGraphOperationStatus.OK) {
                                log.debug("failed to fetch properties for type {} with id {}", nodeType, currentNodeUid);
-                               return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(titanOperationStatus));
+                               return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(
+                                               janusGraphOperationStatus));
                        }
                }
                StorageOperationStatus getDerivedResult = derivedFrom.right().value();
@@ -2214,28 +2073,30 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
        /*
         * @Override public PropertyOperation getPropertyOperation() { return this; }
         */
-       protected TitanOperationStatus fillProperties(String uniqueId, NodeTypeEnum nodeType, Consumer<List<PropertyDefinition>> propertySetter) {
-               Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfNode = this.findPropertiesOfNode(nodeType, uniqueId);
-               if (findPropertiesOfNode.isRight()) {
-                       TitanOperationStatus titanOperationStatus = findPropertiesOfNode.right().value();
-                       log.debug("After looking for properties of vertex {}. status is {}", uniqueId, titanOperationStatus);
-                       if (TitanOperationStatus.NOT_FOUND.equals(titanOperationStatus)) {
-                               return TitanOperationStatus.OK;
-                       } else {
-                               return titanOperationStatus;
-                       }
-               } else {
-                       Map<String, PropertyDefinition> properties = findPropertiesOfNode.left().value();
-
-                       if (properties != null) {
-                               List<PropertyDefinition> propertiesAsList = properties.entrySet().stream().map(p -> p.getValue()).collect(Collectors.toList());
-                               propertySetter.accept(propertiesAsList);
-                       }
-
-                       return TitanOperationStatus.OK;
+    public JanusGraphOperationStatus fillPropertiesList(String uniqueId, NodeTypeEnum nodeType, Consumer<List<PropertyDefinition>> propertySetter) {
+               Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> findPropertiesRes = findPropertiesifExist(uniqueId, nodeType);
+               if (findPropertiesRes.isRight()) {
+                       return findPropertiesRes.right().value();
+               }
+               Map<String, PropertyDefinition> properties = findPropertiesRes.left().value();
+               if (properties != null) {
+               List<PropertyDefinition> propertiesAsList = properties.entrySet().stream().map(Entry::getValue).collect(Collectors.toList());
+                       propertySetter.accept(propertiesAsList);
                }
+               return JanusGraphOperationStatus.OK;
        }
 
+       Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> findPropertiesifExist(String uniqueId, NodeTypeEnum nodeType){
+               Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> findPropertiesOfNode = this.findPropertiesOfNode(nodeType, uniqueId);
+               if (findPropertiesOfNode.isRight()) {
+                       log.debug("After looking for properties of vertex {}. status is {}", uniqueId, findPropertiesOfNode.right().value());
+                       if(findPropertiesOfNode.right().value() == JanusGraphOperationStatus.NOT_FOUND)
+                               return Either.left(Maps.newHashMap());
+                       return findPropertiesOfNode;
+               }
+               return findPropertiesOfNode;
+               }
+       
        /**
         * add properties to element type.
         * 
@@ -2246,19 +2107,19 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
         *            
         * @return
         */
-       protected Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToElementType(String uniqueId, NodeTypeEnum nodeType, Map<String, PropertyDefinition> propertiesMap) {
+       protected Either<Map<String, PropertyData>, JanusGraphOperationStatus> addPropertiesToElementType(String uniqueId, NodeTypeEnum nodeType, Map<String, PropertyDefinition> propertiesMap) {
 
-               Map<String, PropertyData> propertiesData = new HashMap<String, PropertyData>();
+               Map<String, PropertyData> propertiesData = new HashMap<>();
 
                if (propertiesMap != null) {
 
                        for (Entry<String, PropertyDefinition> propertyDefinitionEntry : propertiesMap.entrySet()) {
                                String propertyName = propertyDefinitionEntry.getKey();
 
-                               Either<PropertyData, TitanOperationStatus> addPropertyToNodeType = this.addPropertyToNodeType(propertyName, propertyDefinitionEntry.getValue(), nodeType, uniqueId);
+                               Either<PropertyData, JanusGraphOperationStatus> addPropertyToNodeType = this.addPropertyToNodeType(propertyName, propertyDefinitionEntry.getValue(), nodeType, uniqueId);
 
                                if (addPropertyToNodeType.isRight()) {
-                                       TitanOperationStatus operationStatus = addPropertyToNodeType.right().value();
+                                       JanusGraphOperationStatus operationStatus = addPropertyToNodeType.right().value();
                                        log.error("Failed to associate {} {} to property {} in graph. status is {}", nodeType.getName(), uniqueId, propertyName, operationStatus);
                                        return Either.right(operationStatus);
                                }
@@ -2271,13 +2132,13 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
        }
 
-       public Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToElementType(String uniqueId, NodeTypeEnum elementType, List<PropertyDefinition> properties) {
+       public Either<Map<String, PropertyData>, JanusGraphOperationStatus> addPropertiesToElementType(String uniqueId, NodeTypeEnum elementType, List<PropertyDefinition> properties) {
 
                Map<String, PropertyDefinition> propMap;
                if (properties == null) {
                        propMap = null;
                } else {
-                       propMap = properties.stream().collect(Collectors.toMap(propDef -> propDef.getName(), propDef -> propDef));
+                       propMap = properties.stream().collect(Collectors.toMap(PropertyDataDefinition::getName, propDef -> propDef));
                }
                return addPropertiesToElementType(uniqueId, elementType, propMap);
        }
@@ -2297,9 +2158,9 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                        List<PropertyDefinition> oldProperties = oldDataTypeDefinition.getProperties();
 
-                       String newDerivedFromName = getDerivedFromName(newDataTypeDefinition);
+                       String newDerivedFromName = newDataTypeDefinition.getDerivedFromName();
 
-                       String oldDerivedFromName = getDerivedFromName(oldDataTypeDefinition);
+                       String oldDerivedFromName = oldDataTypeDefinition.getDerivedFromName();
 
                        String dataTypeName = newDataTypeDefinition.getName();
 
@@ -2317,22 +2178,34 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                result = Either.right(StorageOperationStatus.OK);
                                return result;
                        }
+            Map<String, String> newDescriptions = getPropertyDescriptionsToUpdate(oldProperties, newProperties);
+
+            if(MapUtils.isNotEmpty(newDescriptions)){
 
-                       Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToDataType = addPropertiesToDataType(oldDataTypeDefinition.getUniqueId(), propertiesToAdd);
+                JanusGraphOperationStatus updatePropertiesStatus = updateDataTypePropertyDescriptions(oldDataTypeDefinition.getUniqueId(), newDescriptions);
+                if (updatePropertiesStatus != JanusGraphOperationStatus.OK) {
+                    log.debug("#updateDataType - Failed to update the descriptions of the properties of the data type {}. Status is {}", oldDataTypeDefinition, updatePropertiesStatus);
+                    BeEcompErrorManager.getInstance().logBeFailedAddingNodeTypeError(UPDATE_DATA_TYPE, PROPERTY);
+                    result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(updatePropertiesStatus));
+                    return result;
+                }
+            }
+
+                       Either<Map<String, PropertyData>, JanusGraphOperationStatus> addPropertiesToDataType = addPropertiesToDataType(oldDataTypeDefinition.getUniqueId(), propertiesToAdd);
 
                        if (addPropertiesToDataType.isRight()) {
                                log.debug("Failed to update data type {} to Graph. Status is {}", oldDataTypeDefinition, addPropertiesToDataType.right().value().name());
-                               BeEcompErrorManager.getInstance().logBeFailedAddingNodeTypeError("UpdateDataType", "Property");
-                               result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertiesToDataType.right().value()));
+                               BeEcompErrorManager.getInstance().logBeFailedAddingNodeTypeError(UPDATE_DATA_TYPE, PROPERTY);
+                               result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(addPropertiesToDataType.right().value()));
                                return result;
                        } else {
 
-                               Either<DataTypeDefinition, TitanOperationStatus> dataTypeByUid = this.getDataTypeByUid(oldDataTypeDefinition.getUniqueId());
+                               Either<DataTypeDefinition, JanusGraphOperationStatus> dataTypeByUid = this.getDataTypeByUid(oldDataTypeDefinition.getUniqueId());
                                if (dataTypeByUid.isRight()) {
-                                       TitanOperationStatus status = addPropertiesToDataType.right().value();
+                                       JanusGraphOperationStatus status = addPropertiesToDataType.right().value();
                                        log.debug("Failed to get data type {} after update. Status is {}", oldDataTypeDefinition.getUniqueId(), status.name());
-                                       BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("UpdateDataType", "Property", status.name());
-                                       result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
+                                       BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError(UPDATE_DATA_TYPE, PROPERTY, status.name());
+                                       result = Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(status));
                                } else {
                                        result = Either.left(dataTypeByUid.left().value());
                                }
@@ -2341,30 +2214,25 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                        return result;
 
                } finally {
-                       if (false == inTransaction) {
+                       if (!inTransaction) {
                                if (result == null || result.isRight()) {
-                                       log.error("Going to execute rollback on graph.");
-                                       titanGenericDao.rollback();
+                                       log.error(GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH);
+                                       janusGraphGenericDao.rollback();
                                } else {
-                                       log.debug("Going to execute commit on graph.");
-                                       titanGenericDao.commit();
+                                       log.debug(GOING_TO_EXECUTE_COMMIT_ON_GRAPH);
+                                       janusGraphGenericDao.commit();
                                }
                        }
                }
 
        }
 
-       private String getDerivedFromName(DataTypeDefinition dataTypeDefinition) {
-               String derivedFromName = dataTypeDefinition.getDerivedFromName();
-               return derivedFromName;
-       }
-
        private boolean isPropertyTypeChanged(String dataTypeName, List<PropertyDefinition> newProperties, List<PropertyDefinition> oldProperties, List<PropertyDefinition> outputPropertiesToAdd) {
 
                if (newProperties != null && oldProperties != null) {
 
-                       Map<String, PropertyDefinition> newPropsMapper = newProperties.stream().collect(Collectors.toMap(p -> p.getName(), p -> p));
-                       Map<String, PropertyDefinition> oldPropsMapper = oldProperties.stream().collect(Collectors.toMap(p -> p.getName(), p -> p));
+                       Map<String, PropertyDefinition> newPropsMapper = newProperties.stream().collect(Collectors.toMap(PropertyDataDefinition::getName, p -> p));
+                       Map<String, PropertyDefinition> oldPropsMapper = oldProperties.stream().collect(Collectors.toMap(PropertyDataDefinition::getName, p -> p));
 
                        for (Entry<String, PropertyDefinition> newPropertyEntry : newPropsMapper.entrySet()) {
 
@@ -2384,12 +2252,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
                                String newType = propDef.getType();
                                String newEntryType = getEntryType(propDef);
 
-                               if (false == oldType.equals(newType)) {
+                               if (!oldType.equals(newType)) {
                                        log.debug("Existing property {} in data type {} has a differnet type {} than the new one {}", propName, dataTypeName, oldType, newType);
                                        return true;
                                }
 
-                               if (false == equalsEntryTypes(oldEntryType, newEntryType)) {
+                               if (!equalsEntryTypes(oldEntryType, newEntryType)) {
                                        log.debug("Existing property {} in data type {} has a differnet entry type {} than the new one {}", propName, dataTypeName, oldEntryType, newEntryType);
                                        return true;
                                }
@@ -2427,19 +2295,19 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
        private boolean isPropertyOmitted(List<PropertyDefinition> newProperties, List<PropertyDefinition> oldProperties, String dataTypeName) {
 
                boolean isValid = validateChangeInCaseOfEmptyProperties(newProperties, oldProperties, dataTypeName);
-               if (false == isValid) {
+               if (!isValid) {
                        log.debug("At least one property is missing in the new data type {}", dataTypeName);
                        return false;
                }
 
                if (newProperties != null && oldProperties != null) {
 
-                       List<String> newProps = newProperties.stream().map(p -> p.getName()).collect(Collectors.toList());
-                       List<String> oldProps = oldProperties.stream().map(p -> p.getName()).collect(Collectors.toList());
+                       List<String> newProps = newProperties.stream().map(PropertyDataDefinition::getName).collect(Collectors.toList());
+                       List<String> oldProps = oldProperties.stream().map(PropertyDataDefinition::getName).collect(Collectors.toList());
 
-                       if (false == newProps.containsAll(oldProps)) {
+                       if (!newProps.containsAll(oldProps)) {
                                StringJoiner joiner = new StringJoiner(",", "[", "]");
-                               newProps.forEach(p -> joiner.add(p));
+                               newProps.forEach(joiner::add);
                                log.debug("Properties {} in data type {} are missing, but they already defined in the existing data type", joiner.toString(), dataTypeName);
                                return true;
                        }
@@ -2473,7 +2341,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
 
                if (newDerivedFromName != null) {
                        boolean isEqual = newDerivedFromName.equals(oldDerivedFromName);
-                       if (false == isEqual) {
+                       if (!isEqual) {
                                log.debug("The new datatype {} derived from another data type {} than the existing one {}", dataTypeName, newDerivedFromName, oldDerivedFromName);
                        }
                        return !isEqual;
@@ -2487,43 +2355,175 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
        }
 
        /**
-        * 
-        * Future - unfinished
-        * 
-        * @param type
-        * @param value
+        * @param instanceId
+        * @param nodeType
         * @return
         */
-       public boolean isValueToscaFunction(String type, String value) {
+       public Either<Integer, StorageOperationStatus> increaseAndGetObjInstancePropertyCounter(String instanceId, NodeTypeEnum nodeType) {
+           Either<JanusGraph, JanusGraphOperationStatus> graphResult = janusGraphGenericDao.getGraph();
+           if (graphResult.isRight()) {
+               return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(graphResult.right().value()));
+           }
+           Either<JanusGraphVertex, JanusGraphOperationStatus> vertexService = janusGraphGenericDao
+                                       .getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), instanceId);
+           if (vertexService.isRight()) {
+               log.debug("failed to fetch vertex of resource instance for id = {}", instanceId);
+               return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(vertexService.right().value()));
+           }
+           Vertex vertex = vertexService.left().value();
+           
+           VertexProperty<Object> vertexProperty = vertex.property(GraphPropertiesDictionary.PROPERTY_COUNTER.getProperty());
+           Integer counter = 0;
+           if (vertexProperty.isPresent() && vertexProperty.value() != null) {
+               counter = (Integer) vertexProperty.value();
+           }
+           
+           counter++;
+           vertex.property(GraphPropertiesDictionary.PROPERTY_COUNTER.getProperty(), counter);
+           
+           return Either.left(counter);
+       }
+
+
+       public Either<List<PropertyDefinition>, JanusGraphOperationStatus> validatePropertiesUniqueness(Map<String, PropertyDefinition> inheritedProperties, List<PropertyDefinition> properties) {
+        Either<List<PropertyDefinition>, JanusGraphOperationStatus> result = Either.left(properties);
+
+        for (PropertyDefinition property : properties) {
+            JanusGraphOperationStatus
+                                                               status = validatePropertyUniqueness(inheritedProperties, property);
+            if (status != JanusGraphOperationStatus.OK) {
+                result = Either.right(status);
+                break;
+            }
+        }
+
+        return result;
+    }
 
-               boolean result = false;
+    /**
+     * Validates uniqueness of examined property by comparing it with properties in propertiesOfType
+     * and updates if need type and inner type of the property.
+     */
+    private JanusGraphOperationStatus validatePropertyUniqueness(Map<String, PropertyDefinition> inheritedProperties, PropertyDefinition property) {
+        String propertyName = property.getName();
+        String propertyType = property.getType();
+
+        JanusGraphOperationStatus result = JanusGraphOperationStatus.OK;
+        if (inheritedProperties.containsKey(propertyName)) {
+            PropertyDefinition defaultProperty = inheritedProperties.get(propertyName);
+            if (typesMismatch(propertyType, defaultProperty.getType())) {
+                log.error("#validatePropertyUniqueness - Property with name {} and different type already exists.", propertyName);
+                result = JanusGraphOperationStatus.PROPERTY_NAME_ALREADY_EXISTS;
+            } else {
+                property.setType(defaultProperty.getType());
+                String innerType = defaultProperty.getSchemaType();
+
+                PropertyDataDefinition schemaProperty = property.getSchemaProperty();
+                if (schemaProperty != null) {
+                    schemaProperty.setType(innerType);
+                }
+            }
+        }
+
+        return result;
+    }
 
-               if (ToscaPropertyType.STRING.getType().equals(type) || isScalarDerivedFromString(type)) {
+    private boolean typesMismatch(String type1, String type2) {
+        return type1 != null && type2 != null && !type2.equals(type1);
+    }
 
-               }
 
-               String[] functions = { "get_input" };
+    public <T extends GraphNode> Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> getAllTypePropertiesFromAllDerivedFrom(String nextParentUid,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        NodeTypeEnum nodeType,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Class<T> clazz) {
+        Map<String, PropertyDefinition> allProperies = new HashMap<>();
+        return getTypePropertiesFromDerivedFromRecursively(nextParentUid, allProperies, nodeType, clazz);
+    }
 
-               if (value != null) {
+    private <T extends GraphNode> Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> getTypePropertiesFromDerivedFromRecursively(String nextParentUid,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Map<String, PropertyDefinition> allProperies,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                NodeTypeEnum nodeType,
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Class<T> clazz) {
+        JanusGraphOperationStatus error;
+        Either<List<ImmutablePair<T, GraphEdge>>, JanusGraphOperationStatus> childrenNodes = janusGraphGenericDao
+                                               .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType),
+                                                                                                nextParentUid, GraphEdgeLabels.DERIVED_FROM, nodeType, clazz);
+        if (childrenNodes.isRight()) {
+            if (childrenNodes.right().value() != JanusGraphOperationStatus.NOT_FOUND) {
+                error = childrenNodes.right().value();
+                log.debug("#getTypePropertiesFromDerivedFromRecursively - Couldn't fetch derived from node with UID {}, error: {}", nextParentUid, error);
+                return Either.right(error);
+            }
+            else {
+                log.debug("#getTypePropertiesFromDerivedFromRecursively - Derived from node is not found with UID {} - this is OK for root.", nextParentUid);
+                return Either.left(allProperies);
+            }
+        } else {
+
+            Either<Map<String, PropertyDefinition>, JanusGraphOperationStatus> allPropertiesOfTypeRes = findPropertiesOfNode(nodeType, nextParentUid);
+            if (allPropertiesOfTypeRes.isRight() && !allPropertiesOfTypeRes.right().value().equals(
+                                                               JanusGraphOperationStatus.NOT_FOUND)) {
+                error = allPropertiesOfTypeRes.right().value();
+                log.error("#getTypePropertiesFromDerivedFromRecursively - Failed to retrieve properties for node with UID {} from graph. status is {}", nextParentUid, error);
+                return Either.right(error);
+            } else if (allPropertiesOfTypeRes.isLeft()) {
+                if (allProperies.isEmpty()) {
+                    allProperies.putAll(allPropertiesOfTypeRes.left().value());
+                } else {
+                    allProperies.putAll(allPropertiesOfTypeRes.left().value().entrySet().stream().filter(e -> !allProperies.containsKey(e.getKey())).collect(Collectors.toMap(Entry::getKey, Entry::getValue)));
+                }
+            }
+            return getTypePropertiesFromDerivedFromRecursively(childrenNodes.left().value().get(0).getLeft().getUniqueId(), allProperies, nodeType, clazz);
+        }
+    }
+    private JanusGraphOperationStatus updateDataTypePropertyDescriptions(String uniqueId, Map<String, String> newDescriptions) {
+
+        if (MapUtils.isNotEmpty(newDescriptions)) {
+            Either<List<ImmutablePair<JanusGraphVertex, Edge>>, JanusGraphOperationStatus> getDataTypePropertiesRes = janusGraphGenericDao
+                                                               .getChildrenVertecies(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.PROPERTY);
+
+            if(getDataTypePropertiesRes.isRight()){
+                log.debug("#updateDataTypePropertiesDescriptions - Failed to fetch the property verticies of the Data type {} ", uniqueId);
+                return getDataTypePropertiesRes.right().value();
+            }
+            getDataTypePropertiesRes.left().value().stream()
+                    .filter(pair -> newDescriptions.containsKey(getPropertyNameFromEdge(pair)))
+                    .forEach(pair -> setNewDescriptionToVertex(newDescriptions.get(getPropertyNameFromEdge(pair)), pair));
+
+        }
+        return JanusGraphOperationStatus.OK;
+    }
 
-                       for (String function : functions) {
+    private JanusGraphVertexProperty<String> setNewDescriptionToVertex(String newDescription, ImmutablePair<JanusGraphVertex, Edge> pair) {
+        return pair.getLeft().property(GraphPropertiesDictionary.DESCRIPTION.getProperty(), newDescription);
+    }
 
-                       }
+    private String getPropertyNameFromEdge(ImmutablePair<JanusGraphVertex, Edge> pair) {
+        return (String) pair.getRight().property(GraphPropertiesDictionary.NAME.getProperty()).value();
+    }
 
-               }
+    private Map<String, String> getPropertyDescriptionsToUpdate(List<PropertyDefinition> oldProperties, List<PropertyDefinition> newProperties) {
 
-               return result;
+        Map<String, PropertyDefinition> newPropertiesMap = newProperties
+                .stream()
+                .collect(Collectors.toMap(PropertyDefinition::getName, p->p));
 
-       }
+        return oldProperties
+                .stream()
+                .filter(p-> newPropertiesMap.containsKey(p.getName()) && !descriptionsEqual(p, newPropertiesMap.get(p.getName())))
+                .collect(Collectors.toMap(PropertyDefinition::getName, p->newPropertiesMap.get(p.getName()).getDescription()));
+    }
 
-       /**
-        * Future - unfinished
-        * 
-        * @param type
-        * @return
-        */
-       private boolean isScalarDerivedFromString(String type) {
-               // TODO Auto-generated method stub
-               return false;
-       }
+    private boolean descriptionsEqual(PropertyDefinition property, PropertyDefinition otherProperty){
+        if(StringUtils.isEmpty(property.getDescription()) && StringUtils.isEmpty(otherProperty.getDescription())){
+            return true;
+        }
+        if(StringUtils.isNotEmpty(property.getDescription()) && StringUtils.isEmpty(otherProperty.getDescription())){
+            return false;
+        }
+        if(StringUtils.isEmpty(property.getDescription()) && StringUtils.isNotEmpty(otherProperty.getDescription())){
+            return false;
+        }
+        return property.getDescription().equals(otherProperty.getDescription());
+    }
 }