[SDC] Onboarding 1710 rebase.

Change-Id: If3b6b81d221fde13908f1e8160db6f7d9433c535
Signed-off-by: Avi Ziv <avi.ziv@amdocs.com>
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-api/pom.xml.versionsBackup b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-api/pom.xml.versionsBackup
new file mode 100644
index 0000000..c9d100d
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-api/pom.xml.versionsBackup
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.core</groupId>
+            <artifactId>openecomp-facade-core</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.core</groupId>
+            <artifactId>openecomp-facade-api</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-validation-api</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-healing-lib</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-sdc-healing-api</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/pom.xml.versionsBackup b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/pom.xml.versionsBackup
new file mode 100644
index 0000000..c48c325
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/pom.xml.versionsBackup
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-healing-api</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-validation-api</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-vendor-software-product-api</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-healing-lib</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-sdc-healing-core</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/resources/healingConfiguration.json b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/resources/healingConfiguration.json
index fa79627..105dbe5 100644
--- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/resources/healingConfiguration.json
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/resources/healingConfiguration.json
@@ -3,6 +3,9 @@
   "QUESTIONNAIRE_HEALER" : "org.openecomp.sdc.healing.healers.VspQuestionnaireHealer",
   "COMPOSITION_DATA_HEALER" : "org.openecomp.sdc.healing.healers.CompositionDataHealer",
   "SUB_ENTITIES_HEALER" : "org.openecomp.sdc.healing.healers.SubEntitiesQuestionnaireHealer",
+  "ONBOARDING_METHOD_HEALER" : "org.openecomp.sdc.healing.healers.VspOnboardingMethodHealer",
+  "NIC_DATA_HEALER" : "org.openecomp.sdc.healing.healers.NicDataHealer",
+  "COMPONENT_QUESTIONNAIRE_HEALER" : "org.openecomp.sdc.healing.healers.ComponentQuestionnaireHealer",
   "HEAT_TOSCA_TRANSLATION_HEALER" : "org.openecomp.sdc.healing.healers.HeatToToscaTranslationHealer",
   "VLM_VERSION_HEALER" : "org.openecomp.sdc.healing.healers.VlmVersionHealer"
 }
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml.versionsBackup b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml.versionsBackup
new file mode 100644
index 0000000..c5f9363
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/pom.xml.versionsBackup
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-healing-api</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-vendor-software-product-api</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-vendor-software-product-core</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-healing-lib</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-sdc-healing-impl</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    
+</project>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ComponentQuestionnaireHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ComponentQuestionnaireHealer.java
new file mode 100644
index 0000000..c759d21
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ComponentQuestionnaireHealer.java
@@ -0,0 +1,78 @@
+package org.openecomp.sdc.healing.healers;
+
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.healing.interfaces.Healer;
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.util.Collection;
+import java.util.Map;
+
+
+public class ComponentQuestionnaireHealer implements Healer {
+  /*private static final VendorSoftwareProductDao vendorSoftwareProductDao =
+      VendorSoftwareProductDaoFactory.getInstance().createInterface();*/
+
+  private static final ComponentDao componentDao =
+      ComponentDaoFactory.getInstance().createInterface();
+  private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+
+  public ComponentQuestionnaireHealer(){
+
+  }
+  @Override
+  public Object heal(Map<String, Object> healingParams) throws Exception {
+    mdcDataDebugMessage.debugEntryMessage(null, null);
+    String vspId = (String) healingParams.get(SdcCommon.VSP_ID);
+    Version version = (Version) healingParams.get(SdcCommon.VERSION);
+    String user = (String) healingParams.get(SdcCommon.USER);
+    Collection<ComponentEntity> componentEntities =
+        componentDao.list(new ComponentEntity(vspId, version, null));
+    componentEntities.forEach(componentEntity -> {
+      /*String questionnaire=vendorSoftwareProductDao.getComponent(vspId, version, componentEntity
+          .getId()).getQuestionnaireData();*/
+      String questionnaire = componentDao.getQuestionnaireData(vspId, version, componentEntity
+          .getId()).getQuestionnaireData();
+      if (questionnaire != null) {
+      JsonParser jsonParser = new JsonParser();
+      JsonObject  json = (JsonObject) jsonParser.parse(questionnaire);
+        if (json.getAsJsonObject("compute") != null && json.getAsJsonObject("compute")
+            .getAsJsonObject("vmSizing") != null) {
+          json.getAsJsonObject("compute").remove("vmSizing");
+        }
+
+        if (json.getAsJsonObject("compute") != null && json.getAsJsonObject("compute")
+            .getAsJsonObject("numOfVMs") != null ) {
+          if (json.getAsJsonObject("compute").getAsJsonObject("numOfVMs").
+              get("CpuOverSubscriptionRatio") != null ) {
+            json.getAsJsonObject("compute").getAsJsonObject("numOfVMs").remove
+                ("CpuOverSubscriptionRatio");
+          }
+          if (json.getAsJsonObject("compute").getAsJsonObject("numOfVMs").
+              get("MemoryRAM") != null ) {
+            json.getAsJsonObject("compute").getAsJsonObject("numOfVMs").remove("MemoryRAM");
+          }
+        }
+
+        if (json.getAsJsonObject("general") != null && json.getAsJsonObject("general")
+            .getAsJsonObject("image") != null && json.getAsJsonObject("general").getAsJsonObject
+            ("image").get("format") != null) {
+          json.getAsJsonObject("general").getAsJsonObject("image").remove("format");
+        }
+      String questionnaireData = json.toString();
+        /*vendorSoftwareProductDao.updateComponentQuestionnaire(vspId, version, componentEntity
+            .getId(),questionnaireData);*/
+        componentDao.updateQuestionnaireData(vspId, version, componentEntity.getId(),
+            questionnaireData);
+      }
+    });
+    return componentEntities;
+  }
+}
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java
index 656f7af..6fdf144 100644
--- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/CompositionDataHealer.java
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -35,6 +35,12 @@
 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao;
@@ -42,6 +48,9 @@
 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadDataEntity;
@@ -49,6 +58,7 @@
 import org.openecomp.sdc.vendorsoftwareproduct.factory.CompositionEntityDataManagerFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionDataExtractor;
 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
+import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Component;
 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentData;
 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionData;
 import org.openecomp.sdc.versioning.dao.types.Version;
@@ -70,6 +80,10 @@
   private static ComponentDao componentDao = ComponentDaoFactory.getInstance().createInterface();
   private static NicDao nicDao = NicDaoFactory.getInstance().createInterface();
   private static NetworkDao networkDao = NetworkDaoFactory.getInstance().createInterface();
+  private static ComputeDao computeDao = ComputeDaoFactory.getInstance().createInterface();
+  private static DeploymentFlavorDao deloymentFlavorDao = DeploymentFlavorDaoFactory.getInstance()
+      .createInterface();
+  private static ImageDao imageDao = ImageDaoFactory.getInstance().createInterface();
 
   private static final ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao =
       ServiceModelDaoFactory.getInstance().createInterface();
@@ -97,26 +111,95 @@
         networkDao.list(new NetworkEntity(vspId, version, null));
 
     Optional<ToscaServiceModel> serviceModelForHealing = getServiceModelForHealing(vspId, version);
-
-    if (!doesVspNeedCompositionDataHealing(componentEntities, networkEntities,
+    CompositionData compositionData = null;
+    if (!doesVspNeedCompositionDataHealing(vspId, version, componentEntities, networkEntities,
         nicEntities)) {
       updateComponentsDisplayNames(componentEntities);
-      mdcDataDebugMessage.debugExitMessage(null);
-      return Optional.empty();
+      mdcDataDebugMessage.debugExitMessage(null, null);
+      //return Optional.empty();
+    } else {
+      if (!serviceModelForHealing.isPresent()) {
+        mdcDataDebugMessage.debugExitMessage(null, null);
+        return Optional.empty();
+      }
+      compositionData = healCompositionData(vspId, version, serviceModelForHealing);
     }
-
-
-    if (!serviceModelForHealing.isPresent()) {
-      mdcDataDebugMessage.debugExitMessage(null);
-      return Optional.empty();
-    }
-
-    CompositionData compositionData = healCompositionData(vspId, version, serviceModelForHealing);
-
-    mdcDataDebugMessage.debugExitMessage(null);
+    compositionData =
+        getCompositionDataForHealing(vspId, version, serviceModelForHealing.get());
+    HealNfodData(vspId, version, compositionData);
+    mdcDataDebugMessage.debugExitMessage(null, null);
     return Optional.of(compositionData);
   }
 
+  private boolean doesVspNeedCompositionDataHealing(String vspId, Version version,
+                                                    Collection<ComponentEntity> componentEntities,
+                                                    Collection<NetworkEntity> networkEntities,
+                                                    Collection<NicEntity> nicEntities) {
+
+    return (CollectionUtils.isEmpty(componentEntities) && CollectionUtils.isEmpty(nicEntities) &&
+        CollectionUtils.isEmpty(networkEntities) );
+
+//    mdcDataDebugMessage.debugEntryMessage(null, null);
+//
+////    ToscaServiceModel toscaServiceModel;
+//
+//    ByteBuffer contentData = uploadData.getContentData();
+//    FileContentHandler fileContentHandler = CommonUtil.validateAndUploadFileContent(uploadData
+//        .getContentData().array());
+//
+//
+//
+//    TranslatorOutput translatorOutput =
+//        HeatToToscaUtil.loadAndTranslateTemplateData(fileContentHandler);
+//    ToscaServiceModel toscaServiceModel = translatorOutput.getToscaServiceModel();
+//
+////    toscaServiceModel = enrichedServiceModelDao.getServiceModel(vspId, version);
+//
+//    mdcDataDebugMessage.debugExitMessage(null, null);
+//    return toscaServiceModel;
+
+  }
+
+  private void HealNfodData(String vspId, Version version, CompositionData compositionData) {
+    Collection<ComponentEntity> componentEntities;
+    /*componentEntities =
+        vendorSoftwareProductDao.listComponents(vspId, version);*/
+    componentEntities = componentDao.list(new ComponentEntity(vspId, version, null));
+
+    /*Collection<ComputeEntity> computeEntities=vendorSoftwareProductDao.listComputesByVsp(vspId,
+        version);
+    Collection<ImageEntity> imageEntities =vendorSoftwareProductDao.listImagesByVsp(vspId, version);
+    Collection<DeploymentFlavorEntity> deploymentFlavorEntities =vendorSoftwareProductDao
+        .listDeploymentFlavors(vspId, version);*/
+
+    Collection<ComputeEntity> computeEntities = computeDao.listByVsp(vspId, version);
+    Collection<ImageEntity> imageEntities = imageDao.listByVsp(vspId, version);
+    Collection<DeploymentFlavorEntity> deploymentFlavorEntities = deloymentFlavorDao.list(new
+        DeploymentFlavorEntity(vspId, version, null));
+
+    if (CollectionUtils.isEmpty(computeEntities) && CollectionUtils.isEmpty(imageEntities)) {
+      for (Component component : compositionData.getComponents()) {
+        String componentId = null;
+        for (ComponentEntity componentEntity:componentEntities) {
+          if (componentEntity.getComponentCompositionData().getName().equals(component.getData()
+              .getName())) {
+            componentId = componentEntity.getId();
+            break;
+          }
+        }
+        compositionEntityDataManager.saveComputesFlavorByComponent(vspId,version,component,
+            componentId);
+        compositionEntityDataManager.saveImagesByComponent(vspId,version,component,
+            componentId);
+      }
+
+    }
+
+    if (CollectionUtils.isEmpty(deploymentFlavorEntities)) {
+      compositionEntityDataManager.saveDeploymentFlavors(vspId,version,compositionData);
+    }
+  }
+
   private CompositionData healCompositionData(String vspId, Version version,
                                               Optional<ToscaServiceModel> serviceModelForHealing) {
     ToscaServiceModel toscaServiceModel = serviceModelForHealing.get();
@@ -204,7 +287,7 @@
     try {
       serviceModelDao.storeServiceModel(vspId, version,
           translatorOutput.getToscaServiceModel());
-    }catch (Exception e){
+    } catch (Exception e) {
       return Optional.empty();
     }
 
@@ -212,14 +295,14 @@
     return Optional.of(translatorOutput.getToscaServiceModel());
   }
 
-  private TranslatorOutput getTranslatorOutputForHealing(UploadDataEntity uploadData){
+  private TranslatorOutput getTranslatorOutputForHealing(UploadDataEntity uploadData) {
 
     FileContentHandler fileContentHandler;
     try {
       fileContentHandler =
-          CommonUtil.loadUploadFileContent(uploadData.getContentData().array());
+          CommonUtil.validateAndUploadFileContent(uploadData.getContentData().array());
       return HeatToToscaUtil.loadAndTranslateTemplateData(fileContentHandler);
-    }catch (Exception e){
+    } catch (Exception e) {
       return null;
     }
   }
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java
index 14fe885..e0b7adb 100644
--- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/FileDataStructureHealer.java
@@ -94,7 +94,7 @@
     byte[] byteContentData = uploadData.getContentData().array();
     FileContentHandler fileContentHandler;
     try{
-      fileContentHandler = CommonUtil.loadUploadFileContent(byteContentData);
+      fileContentHandler = CommonUtil.validateAndUploadFileContent(byteContentData);
       Map<String, List<ErrorMessage>> errors = new HashMap<>();
       OrchestrationTemplateCandidateData candidateDataEntity =
         new CandidateEntityBuilder(candidateService)
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java
index fb9dfe7..d5ccd36 100644
--- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/HeatToToscaTranslationHealer.java
@@ -16,8 +16,6 @@
 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadDataEntity;
 import org.openecomp.sdc.versioning.dao.types.Version;
 
@@ -55,7 +53,7 @@
     FileContentHandler fileContentHandler;
     TranslatorOutput translatorOutput;
     try {
-      fileContentHandler = CommonUtil.loadUploadFileContent(uploadData
+      fileContentHandler = CommonUtil.validateAndUploadFileContent(uploadData
           .getContentData().array());
       translatorOutput =
           HeatToToscaUtil.loadAndTranslateTemplateData(fileContentHandler);
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/NicDataHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/NicDataHealer.java
new file mode 100644
index 0000000..123a943
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/NicDataHealer.java
@@ -0,0 +1,48 @@
+package org.openecomp.sdc.healing.healers;
+
+
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.healing.interfaces.Healer;
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.types.composition.NetworkType;
+import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.util.Collection;
+import java.util.Map;
+
+public class NicDataHealer implements Healer {
+  /*private static final VendorSoftwareProductDao vendorSoftwareProductDao =
+      VendorSoftwareProductDaoFactory.getInstance().createInterface();*/
+
+  private static final NicDao nicDao = NicDaoFactory.getInstance().createInterface();
+
+  private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+
+  public NicDataHealer(){
+
+  }
+  @Override
+  public Object heal(Map<String, Object> healingParams) throws Exception {
+    mdcDataDebugMessage.debugEntryMessage(null, null);
+    String vspId = (String) healingParams.get(SdcCommon.VSP_ID);
+    Version version = (Version) healingParams.get(SdcCommon.VERSION);
+    String user = (String) healingParams.get(SdcCommon.USER);
+    Collection<NicEntity> nics = nicDao.listByVsp(vspId, version);
+    for (NicEntity nicEntity : nics) {
+      Nic nic = nicEntity.getNicCompositionData();
+      if (nic != null && nic.getNetworkType()==null) {
+        nic.setNetworkType(NetworkType.Internal);
+        nicEntity.setNicCompositionData(nic);
+        //vendorSoftwareProductDao.updateNic(nicEntity);
+        nicDao.update(nicEntity);
+      }
+    }
+    return nics;
+  }
+}
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealer.java
new file mode 100644
index 0000000..5d6050a
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/VspOnboardingMethodHealer.java
@@ -0,0 +1,46 @@
+package org.openecomp.sdc.healing.healers;
+
+
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.healing.interfaces.Healer;
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.util.Map;
+import java.util.Objects;
+
+public class VspOnboardingMethodHealer implements Healer {
+  /*private static final VendorSoftwareProductDao vendorSoftwareProductDao =
+      VendorSoftwareProductDaoFactory.getInstance().createInterface();*/
+  private static final VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao =
+      VendorSoftwareProductInfoDaoFactory.getInstance().createInterface();
+  private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+
+  public VspOnboardingMethodHealer(){
+
+  }
+  @Override
+  public Object heal(Map<String, Object> healingParams) throws Exception {
+    mdcDataDebugMessage.debugEntryMessage(null, null);
+
+    String onboardingMethod=null;
+    String vspId = (String) healingParams.get(SdcCommon.VSP_ID);
+    Version version = (Version) healingParams.get(SdcCommon.VERSION);
+    VspDetails vendorSoftwareProductInfo =
+        vendorSoftwareProductInfoDao.get(new VspDetails(vspId, version));
+    vendorSoftwareProductInfo.getOnboardingMethod();
+
+    if(Objects.isNull(vendorSoftwareProductInfo.getOnboardingMethod())) {
+      onboardingMethod="HEAT";
+      vendorSoftwareProductInfo.setOnboardingMethod(onboardingMethod);
+      vendorSoftwareProductInfoDao.update(vendorSoftwareProductInfo);
+      //vendorSoftwareProductDao.updateVendorSoftwareProductInfo(vendorSoftwareProductInfo);
+    }
+    return onboardingMethod;
+  }
+}
diff --git a/openecomp-be/lib/openecomp-healing-lib/pom.xml.versionsBackup b/openecomp-be/lib/openecomp-healing-lib/pom.xml.versionsBackup
new file mode 100644
index 0000000..02ba7f1
--- /dev/null
+++ b/openecomp-be/lib/openecomp-healing-lib/pom.xml.versionsBackup
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.openecomp.sdc</groupId>
+        <artifactId>openecomp-sdc-lib</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.openecomp.sdc</groupId>
+    <artifactId>openecomp-healing-lib</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>openecomp-sdc-healing-api</module>
+        <module>openecomp-sdc-healing-core</module>
+        <module>openecomp-sdc-healing-impl</module>
+    </modules>
+</project>
\ No newline at end of file