String origMd5 = request.getHeader(Constants.MD5_HEADER);
         String userId = request.getHeader(Constants.USER_ID_HEADER);
 
-        Either<ComponentMetadataData, StorageOperationStatus> getComponentRes =
-                toscaOperationFacade.getLatestComponentMetadataByUuid(componentUuid, JsonParseFlagEnum.ParseMetadata, true);
-        if (getComponentRes.isRight()) {
-            StorageOperationStatus status = getComponentRes.right().value();
-            log.debug(FAILED_FETCH_COMPONENT, componentType, componentUuid, status);
-            throw new ByActionStatusComponentException(componentsUtils.convertFromStorageResponse(status, componentType), componentUuid);
-        }
+        Either<ComponentMetadataData, ActionStatus> getComponentRes =
+            fetchLatestComponentMetadataOrThrow(componentType, componentUuid);
 
         ComponentMetadataDataDefinition componentMetadataDataDefinition = getComponentRes.left().value().getMetadataDataDefinition();
         componentId = componentMetadataDataDefinition.getUniqueId();
         String userId = request.getHeader(Constants.USER_ID_HEADER);
 
         ImmutablePair<Component, ComponentInstance> componentRiPair = null;
-        Either<ComponentMetadataData, StorageOperationStatus> getComponentRes = toscaOperationFacade.getLatestComponentMetadataByUuid(componentUuid, JsonParseFlagEnum.ParseMetadata, true);
-        if (getComponentRes.isRight()) {
-            StorageOperationStatus status = getComponentRes.right().value();
-            log.debug(FAILED_FETCH_COMPONENT, componentType, componentUuid, status);
-            throw new ByActionStatusComponentException(componentsUtils.convertFromStorageResponse(status, componentType), resourceInstanceName);
-        }
+
+        Either<ComponentMetadataData, ActionStatus> getComponentRes =
+            fetchLatestComponentMetadataOrThrow(componentType, componentUuid, resourceInstanceName);
         if (!getComponentRes.left()
                 .value()
                 .getMetadataDataDefinition()
         String origMd5 = request.getHeader(Constants.MD5_HEADER);
         String userId = request.getHeader(Constants.USER_ID_HEADER);
 
-        Either<ComponentMetadataData, StorageOperationStatus> getComponentRes = toscaOperationFacade.getLatestComponentMetadataByUuid(componentUuid, JsonParseFlagEnum.ParseMetadata, true);
-        if (getComponentRes.isRight()) {
-            StorageOperationStatus status = getComponentRes.right().value();
-            log.debug(FAILED_FETCH_COMPONENT, componentType, componentUuid, status);
-            throw new ByActionStatusComponentException(componentsUtils.convertFromStorageResponse(status));
-        }
+        Either<ComponentMetadataData, ActionStatus> getComponentRes =
+            fetchLatestComponentMetadataOrThrow(componentType, componentUuid);
         componentId = getComponentRes.left().value().getMetadataDataDefinition().getUniqueId();
         String componentName = getComponentRes.left().value().getMetadataDataDefinition().getName();
 
         String userId = request.getHeader(Constants.USER_ID_HEADER);
 
         ImmutablePair<Component, ComponentInstance> componentRiPair = null;
-        Either<ComponentMetadataData, StorageOperationStatus> getComponentRes = toscaOperationFacade.getLatestComponentMetadataByUuid(componentUuid, JsonParseFlagEnum.ParseMetadata, true);
-        if (getComponentRes.isRight()) {
-            StorageOperationStatus status = getComponentRes.right().value();
-            log.debug(FAILED_FETCH_COMPONENT, componentType, componentUuid, status);
-            throw new ByActionStatusComponentException(componentsUtils.convertFromStorageResponse(status));
-        }
+        Either<ComponentMetadataData, ActionStatus> getComponentRes =
+            fetchLatestComponentMetadataOrThrow(componentType, componentUuid);
         if (!getComponentRes.left()
                 .value()
                 .getMetadataDataDefinition()
         ArtifactDefinition existingArtifactInfo = null;
         String interfaceName = null;
 
-        Either<ComponentMetadataData, StorageOperationStatus> getComponentRes = toscaOperationFacade.getLatestComponentMetadataByUuid(componentUuid, JsonParseFlagEnum.ParseMetadata, true);
-        if (getComponentRes.isRight()) {
-            StorageOperationStatus status = getComponentRes.right().value();
-            log.debug(FAILED_FETCH_COMPONENT, componentType, componentUuid, status);
-            errorWrapper.setInnerElement(componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(status)));
+        Either<ComponentMetadataData, ActionStatus> getComponentRes =
+            fetchLatestComponentMetadata(componentType, componentUuid).right().map(as -> {
+                errorWrapper.setInnerElement(componentsUtils.getResponseFormat(as));
+                return as;
+            });
+
+        if(getComponentRes.isRight()) {
+            errorWrapper.setInnerElement(componentsUtils.getResponseFormat(getComponentRes.right().value()));
         }
 
         if (errorWrapper.isEmpty()) {
         return updateArtifactResult;
     }
 
+
+    private Either<ComponentMetadataData, ActionStatus> fetchLatestComponentMetadataOrThrow(
+        ComponentTypeEnum componentType, String componentUuid
+    ) {
+        return fetchLatestComponentMetadataOrThrow(componentType, componentUuid, componentUuid);
+    }
+
+    private Either<ComponentMetadataData, ActionStatus> fetchLatestComponentMetadataOrThrow(
+        ComponentTypeEnum componentType, String componentUuid, String resourceInstanceName
+    ) {
+        return fetchLatestComponentMetadata(componentType, componentUuid).right().map(as -> {
+            throw new ByActionStatusComponentException(as, resourceInstanceName);
+        });
+    }
+
+    private Either<ComponentMetadataData, ActionStatus> fetchLatestComponentMetadata(
+        ComponentTypeEnum componentType, String componentUuid
+    ) {
+        return toscaOperationFacade
+            .getLatestComponentMetadataByUuid(componentUuid, JsonParseFlagEnum.ParseMetadata, true)
+            .right().map(sos -> {
+                log.debug(FAILED_FETCH_COMPONENT, componentType, componentUuid, sos);
+                return componentsUtils.convertFromStorageResponse(sos, componentType);
+            });
+    }
+
     private Either<String, ResponseFormat> fetchInterfaceName(String componentId, String interfaceUUID) {
         Either<Component, StorageOperationStatus> componentStorageOperationStatusEither = toscaOperationFacade.getToscaElement(componentId);
         if (componentStorageOperationStatusEither.isRight()) {
         String origMd5 = request.getHeader(Constants.MD5_HEADER);
         String userId = request.getHeader(Constants.USER_ID_HEADER);
 
-        Either<ComponentMetadataData, StorageOperationStatus> getComponentRes = toscaOperationFacade.getLatestComponentMetadataByUuid(componentUuid, JsonParseFlagEnum.ParseMetadata, true);
-        if (getComponentRes.isRight()) {
-            StorageOperationStatus status = getComponentRes.right().value();
-            log.debug(FAILED_FETCH_COMPONENT, componentType, componentUuid, status);
-            throw new ByActionStatusComponentException(componentsUtils.convertFromStorageResponse(status, componentType), componentUuid);
-        }
+        Either<ComponentMetadataData, ActionStatus> getComponentRes =
+            fetchLatestComponentMetadataOrThrow(componentType, componentUuid);
         componentId = getComponentRes.left().value().getMetadataDataDefinition().getUniqueId();
         String componentName = getComponentRes.left().value().getMetadataDataDefinition().getName();
         if (!getComponentRes.left()
         String origMd5 = request.getHeader(Constants.MD5_HEADER);
         String userId = request.getHeader(Constants.USER_ID_HEADER);
         ImmutablePair<Component, ComponentInstance> componentRiPair = null;
-        Either<ComponentMetadataData, StorageOperationStatus> getComponentRes =
-                toscaOperationFacade.getLatestComponentMetadataByUuid(componentUuid, JsonParseFlagEnum.ParseMetadata, true);
-        if (getComponentRes.isRight()) {
-            StorageOperationStatus status = getComponentRes.right().value();
-            log.debug(FAILED_FETCH_COMPONENT, componentType, componentUuid, status);
-            throw new ByActionStatusComponentException(componentsUtils.convertFromStorageResponse(status));
-        }
+        Either<ComponentMetadataData, ActionStatus> getComponentRes =
+            fetchLatestComponentMetadataOrThrow(componentType, componentUuid);
         if (!getComponentRes.left()
                 .value()
                 .getMetadataDataDefinition()