diff --git a/catalog-be/pom.xml b/catalog-be/pom.xml
index e99789d..9fa7892 100644
--- a/catalog-be/pom.xml
+++ b/catalog-be/pom.xml
@@ -942,7 +942,7 @@
                                     <resources>
                                         <resource>
                                             <directory>
-                                                ${project.parent.basedir}/openecomp-be/tools/swagger-ui/api-docs
+                                                ${project.parent.basedir}/openecomp-be/tools/swagger-ui/target/api-docs
                                             </directory>
                                             <includes>
                                                 <include>api-docs.war</include>
diff --git a/onboarding/pom.xml b/onboarding/pom.xml
index 08f2c92..1c0dbfe 100644
--- a/onboarding/pom.xml
+++ b/onboarding/pom.xml
@@ -13,6 +13,7 @@
     </parent>
 
     <modules>
+        <module>../openecomp-be/tools/build-helper</module>
         <module>../common</module>
         <module>../openecomp-be</module>
         <module>../openecomp-ui</module>
@@ -31,7 +32,7 @@
         <mvn.license.version>1.10</mvn.license.version>
         <mvn.shade.version>2.3</mvn.shade.version>
         <mvn.surefire.version>2.19.1</mvn.surefire.version>
-        <mvn.swagger.version>3.1.0</mvn.swagger.version>
+        <mvn.swagger.version>3.1.5</mvn.swagger.version>
         <mvn.war.version>2.1.1</mvn.war.version>
         <mvn.antrun.version>1.8</mvn.antrun.version>
 
@@ -175,7 +176,7 @@
                         <fileset>
                             <directory>${project.build.directory}</directory>
                             <excludes>
-                                <exclude>test-classes/**</exclude>
+                                <exclude>test-classes/**/*.class</exclude>
                                 <exclude>pmd/**</exclude>
                                 <exclude>maven-status/**</exclude>
                             </excludes>
@@ -192,13 +193,16 @@
                     <printSummary>false</printSummary>
                     <redirectTestOutputToFile>true</redirectTestOutputToFile>
                     <additionalClasspathElements>
-                        <additionalClasspathElement>${project.build.directory}/../src/test/resources</additionalClasspathElement>
+                        <additionalClasspathElement>${project.basedir}/src/test/resources</additionalClasspathElement>
                     </additionalClasspathElements>
                     <systemPropertyVariables>
                         <logback.configurationFile>src/test/resources/logback-test.xml</logback.configurationFile>
                         <artifactgenerator.config>${project.basedir}/src/test/resources/config/Artifact-Generator.properties</artifactgenerator.config>
                         <config.location>${project.basedir}/configuration</config.location>
                     </systemPropertyVariables>
+                    <dependenciesToScan>
+                        org.openecomp.sdc:build-helper
+                    </dependenciesToScan>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/pom.xml b/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/pom.xml
index 04954fe..39ed3ae 100644
--- a/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/pom.xml
+++ b/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/pom.xml
@@ -251,8 +251,6 @@
                                     http://www.github.com/kongchen/swagger-maven-plugin
                                 </termsOfService>
                             </info>
-                            <templatePath>${basedir}/templates/strapdown.html.hbs</templatePath>
-                            <outputPath>${basedir}/target/generated/api.html</outputPath>
                             <swaggerDirectory>${basedir}/target/generated/swagger-ui
                             </swaggerDirectory>
                         </apiSource>
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/resources/logback-test.xml b/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/resources/logback-test.xml
new file mode 100644
index 0000000..f69355b
--- /dev/null
+++ b/openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/resources/logback-test.xml
@@ -0,0 +1,21 @@
+<configuration scan="true" scanPeriod="3 seconds">
+
+    <property name="logDir" value="logs" />
+    <property name="componentName" value="SDC" />
+
+    <property name="defaultPattern"
+              value="%logger|%date{ISO8601,UTC}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />
+
+    <property name="logDirectory" value="${logDir}/${componentName}" />
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${defaultPattern}</pattern>
+        </encoder>
+    </appender>
+
+    <root level="ERROR">
+        <appender-ref ref="STDOUT" />
+    </root>
+
+</configuration>
\ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-api/pom.xml b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-api/pom.xml
index 148e8fc..890cdeb 100644
--- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-api/pom.xml
+++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-api/pom.xml
@@ -20,11 +20,6 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-annotations</artifactId>
-            <version>${swagger.version}</version>
-        </dependency>
-        <dependency>
             <groupId>org.openecomp.sdc</groupId>
             <artifactId>openecomp-sdc-datatypes-lib</artifactId>
             <version>${project.version}</version>
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/pom.xml b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/pom.xml
index e3fb799..758461c 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/pom.xml
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/pom.xml
@@ -34,12 +34,6 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>${servlet.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>org.testng</groupId>
             <artifactId>testng</artifactId>
             <version>${testng.version}</version>
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/pom.xml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/pom.xml
index 795d64d..b08067b 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/pom.xml
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/pom.xml
@@ -31,6 +31,13 @@
             <version>${junit.version}</version>
             <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <scope>test</scope>
+            <version>${mockito.all.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.openecomp.sdc.core</groupId>
             <artifactId>openecomp-utilities-lib</artifactId>
@@ -70,4 +77,38 @@
 
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${mvn.surefire.version}</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.maven.surefire</groupId>
+                        <artifactId>surefire-junit47</artifactId>
+                        <version>${mvn.surefire.version}</version>
+                    </dependency>
+                </dependencies>
+                <configuration>
+                    <parallel>classes</parallel>
+                    <threadCount>1</threadCount>
+                    <forkCount>0</forkCount>
+                    <printSummary>false</printSummary>
+                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
+                    <rerunFailingTestsCount>1</rerunFailingTestsCount>
+                    <additionalClasspathElements>
+                        <additionalClasspathElement>${project.basedir}/src/test/resources</additionalClasspathElement>
+                    </additionalClasspathElements>
+                    <systemPropertyVariables>
+                        <logback.configurationFile>src/test/resources/logback-test.xml</logback.configurationFile>
+                    </systemPropertyVariables>
+                    <dependenciesToScan>
+                        org.openecomp.sdc:build-helper
+                    </dependenciesToScan>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtilTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtilTest.java
index 246bc47..6b637d2 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtilTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtilTest.java
@@ -1,8 +1,8 @@
 package org.openecomp.sdc.translator.services.heattotosca;
 
-import org.testng.annotations.Test;
+import org.junit.Test;
 
-import static org.testng.Assert.assertEquals;
+import static org.junit.Assert.assertEquals;
 
 public class ConsolidationDataUtilTest {
     private static final String PORT_TYPE_FORMAT_1 = "a_11_network_port_22";
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplatesTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplatesTest.java
index 32315d1..2391560 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplatesTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/globaltypes/GlobalTypesServiceTemplatesTest.java
@@ -21,8 +21,8 @@
 import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.testng.Assert;
-import org.testng.annotations.Test;
+import org.junit.Assert;
+import org.junit.Test;
 
 import java.util.List;
 import java.util.Map;
@@ -31,10 +31,14 @@
 
 public class GlobalTypesServiceTemplatesTest {
 
-  @Test(expectedExceptions = CoreException.class,
-      expectedExceptionsMessageRegExp = "Failed to generate globalTypes")
+  @Test
   public void testGetGlobalTypesServiceTemplatesOnboardingMethodNull() {
-    Map<String, ServiceTemplate> globalTypesServiceTemplates = getGlobalTypesServiceTemplates(null);
+    try {
+      Map<String, ServiceTemplate> globalTypesServiceTemplates = getGlobalTypesServiceTemplates(null);
+      Assert.fail();
+    }catch(CoreException ce){
+      Assert.assertEquals(ce.getMessage(), "Failed to generate globalTypes");
+    }
   }
 
   @Test
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java
index c4a83e0..2387390 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java
@@ -19,9 +19,10 @@
 import static org.junit.Assert.assertEquals;
 
 import org.apache.commons.collections4.MapUtils;
-import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.rules.TestName;
 import org.openecomp.core.translator.api.HeatToToscaTranslator;
 import org.openecomp.core.translator.datatypes.TranslatorOutput;
 import org.openecomp.core.translator.factory.HeatToToscaTranslatorFactory;
@@ -33,7 +34,6 @@
 import org.openecomp.sdc.common.togglz.ToggleableFeature;
 import org.openecomp.sdc.datatypes.error.ErrorLevel;
 import org.openecomp.sdc.datatypes.error.ErrorMessage;
-import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
 import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
 import org.openecomp.sdc.translator.TestUtils;
 import org.togglz.testing.TestFeatureManager;
@@ -42,7 +42,7 @@
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.net.URL;
 import java.util.HashMap;
@@ -59,7 +59,11 @@
   public static final String IN_POSTFIX = "/in";
   public static final String OUT_POSTFIX = "/out";
 
+  @Rule
+  public TestName name = new TestName();
+
   protected static TestFeatureManager manager;
+  private static File tempDir = new File(System.getProperty("java.io.tmpdir"));
 
   @BeforeClass
   public static void enableToggleableFeatures(){
@@ -69,7 +73,6 @@
   }
 
 
-  @AfterClass
   public static void disableToggleableFeatures() {
     manager.disableAll();
     manager = null;
@@ -77,16 +80,16 @@
   }
 
   protected void testTranslationWithInit(String path) throws IOException {
-    File translatedZipFile = initTranslatorAndTranslate(path);
+    byte[] translatedZipFile = initTranslatorAndTranslate(path);
     testTranslation(path, translatedZipFile);
   }
 
-  protected File initTranslatorAndTranslate(String path) throws IOException {
+  protected byte[] initTranslatorAndTranslate(String path) throws IOException {
     HeatToToscaTranslator heatToToscaTranslator = HeatToToscaTranslatorFactory.getInstance().createInterface();
     return translateZipFile(path, heatToToscaTranslator);
   }
 
-  protected void testTranslation(String basePath, File translatedZipFile) throws IOException {
+  protected void testTranslation(String basePath, byte[] translatedZipFile) throws IOException {
 
     URL url = BaseFullTranslationTest.class.getResource(basePath + OUT_POSTFIX);
     Set<String> expectedResultFileNameSet = new HashSet<>();
@@ -103,8 +106,8 @@
       }
     }
 
-    try (FileInputStream fis = new FileInputStream(translatedZipFile);
-         ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis))) {
+    try (ByteArrayInputStream fis = new ByteArrayInputStream(translatedZipFile);BufferedInputStream bis = new BufferedInputStream(fis);
+         ZipInputStream zis = new ZipInputStream(bis)) {
       ZipEntry entry;
       String name;
       String expected;
@@ -127,10 +130,9 @@
       }
     }
     assertEquals(0, expectedResultFileNameSet.size());
-    translatedZipFile.delete();
   }
 
-  private File translateZipFile(String basePath, HeatToToscaTranslator heatToToscaTranslator) throws IOException {
+  private byte[] translateZipFile(String basePath, HeatToToscaTranslator heatToToscaTranslator) throws IOException {
     URL inputFilesUrl = this.getClass().getResource(basePath + IN_POSTFIX);
     String path = inputFilesUrl.getPath();
     TestUtils.addFilesToTranslator(heatToToscaTranslator, path);
@@ -144,15 +146,9 @@
           .withId("Validation Error").withCategory(ErrorCategory.APPLICATION).build());
     }
 
-    File file = File.createTempFile("VSP", "zip");
+    byte[] data = new ToscaFileOutputServiceCsarImpl().createOutputFile(translatorOutput.getToscaServiceModel(), null);
 
-    try (FileOutputStream fos = new FileOutputStream(file)) {
-      ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl();
-      fos.write(
-          toscaFileOutputService.createOutputFile(translatorOutput.getToscaServiceModel(), null));
-    }
-
-    return file;
+    return data;
   }
 
   private String getErrorAsString(Map<String, List<ErrorMessage>> errorMessages) {
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
index ddc1342..8820bc1 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
@@ -31,10 +31,11 @@
 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateVolumeInConsolidationData;
 
 import org.apache.commons.collections4.MapUtils;
-import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.rules.TestName;
 import org.openecomp.core.translator.datatypes.TranslatorOutput;
 import org.openecomp.core.utilities.file.FileUtils;
 import org.openecomp.core.utilities.json.JsonUtil;
@@ -49,7 +50,6 @@
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent;
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestFile;
 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
 import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
 import org.openecomp.sdc.translator.TestUtils;
 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
@@ -64,11 +64,8 @@
 import org.togglz.testing.TestFeatureManager;
 import org.togglz.testing.TestFeatureManagerProvider;
 
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
+
+import java.io.*;
 import java.net.URL;
 import java.util.Collection;
 import java.util.HashMap;
@@ -86,9 +83,14 @@
   protected String outputFilesPath;
   protected TranslationContext translationContext;
 
+  @Rule
+  public TestName name = new TestName();
+
   private String zipFilename = "VSP.zip";
   private TranslationService translationService;
-  private File translatedZipFile;
+  private byte[] translatedZipFile;
+
+  private static File tempDir = new File(System.getProperty("java.io.tmpdir"));
 
   private Map<String, byte[]> expectedResultMap = new HashMap<>();
   private Set<String> expectedResultFileNameSet = new HashSet<>();
@@ -101,7 +103,6 @@
     manager.enableAll();
   }
 
-  @AfterClass
   public static void disableToggleableFeatures() {
     manager.disableAll();
     manager = null;
@@ -113,6 +114,7 @@
     initTranslatorAndTranslate();
   }
 
+
   protected void initTranslatorAndTranslate() throws IOException {
     translationService = new TranslationService();
     translationContext = new TranslationContext();
@@ -134,8 +136,8 @@
       }
     }
 
-    try (FileInputStream fis = new FileInputStream(translatedZipFile);
-         ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis))) {
+    try (ByteArrayInputStream fis = new ByteArrayInputStream(translatedZipFile); BufferedInputStream bis = new BufferedInputStream(fis);
+         ZipInputStream zis = new ZipInputStream(bis)) {
       ZipEntry entry;
       String name;
       String expected;
@@ -158,10 +160,9 @@
       }
     }
     assertEquals(0, expectedResultFileNameSet.size());
-    translatedZipFile.delete();
   }
 
-  private File translateZipFile() throws IOException {
+  private byte[] translateZipFile() throws IOException {
     URL inputFilesUrl = this.getClass().getResource(inputFilesPath);
     String path = inputFilesUrl.getPath();
     addFilesToTranslator(translationContext, path);
@@ -174,17 +175,13 @@
           "Error in validation " + getErrorAsString(translatorOutput.getErrorMessages()))
           .withId("Validation Error").withCategory(ErrorCategory.APPLICATION).build());
     }
-    File file = File.createTempFile("VSP", "zip");
 
-    try (FileOutputStream fos = new FileOutputStream(file)) {
-      ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl();
-      fos.write(
-          toscaFileOutputService.createOutputFile(translatorOutput.getToscaServiceModel(), null));
-    }
+    byte[] data = new ToscaFileOutputServiceCsarImpl().createOutputFile(translatorOutput.getToscaServiceModel(), null);
 
-    return file;
+    return data;
   }
 
+
   private String getErrorAsString(Map<String, List<ErrorMessage>> errorMessages) {
     StringBuilder sb = new StringBuilder();
     errorMessages.entrySet().forEach(
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/ComputeNewNodeTemplateIdGeneratorTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/ComputeNewNodeTemplateIdGeneratorTest.java
index 361888f..1c44a30 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/ComputeNewNodeTemplateIdGeneratorTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/ComputeNewNodeTemplateIdGeneratorTest.java
@@ -25,21 +25,21 @@
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.commands.impl.ComputeNewNodeTemplateIdGenerator;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
-public class ComputeNewNodeTemplateIdGeneratorTest extends BaseResourceTranslationTest {
+public class ComputeNewNodeTemplateIdGeneratorTest  {
 
   private static final String SERVER_PCM = "server_pcm";
-  private UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
+  private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
 
   @BeforeClass
-  public void setUp(){
+  public static void setItUp(){
     unifiedSubstitutionNodeTemplateIdGenerator = new ComputeNewNodeTemplateIdGenerator();
   }
 
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/PortNewNodeTemplateIdGeneratorTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/PortNewNodeTemplateIdGeneratorTest.java
index ad39bb7..c00a9b2 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/PortNewNodeTemplateIdGeneratorTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/PortNewNodeTemplateIdGeneratorTest.java
@@ -32,9 +32,9 @@
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.to.UnifiedCompositionTo;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -42,16 +42,16 @@
 import java.util.Map;
 import java.util.Optional;
 
-public class PortNewNodeTemplateIdGeneratorTest extends BaseResourceTranslationTest {
+public class PortNewNodeTemplateIdGeneratorTest {
 
   private static final String SERVER_PCM = "server_pcm";
   private static final String PCM_PORT_0 = "pcm_port_0";
   private static final String PCM_PORT_1 = "pcm_port_1";
 
-  private UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
+  private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
 
   @BeforeClass
-  public void setUp(){
+  public static void setItUp(){
     unifiedSubstitutionNodeTemplateIdGenerator = new PortNewNodeTemplateIdGenerator();
   }
 
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/SubInterfaceNewNodeTemplateIdGeneratorTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/SubInterfaceNewNodeTemplateIdGeneratorTest.java
index 63f1262..b33df90 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/SubInterfaceNewNodeTemplateIdGeneratorTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/unifiedmodel/commands/SubInterfaceNewNodeTemplateIdGeneratorTest.java
@@ -30,9 +30,9 @@
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -41,7 +41,7 @@
 import java.util.Map;
 import java.util.Optional;
 
-public class SubInterfaceNewNodeTemplateIdGeneratorTest extends BaseResourceTranslationTest {
+public class SubInterfaceNewNodeTemplateIdGeneratorTest {
 
   private static final String VDBE_UNTR_1_PORT = "vdbe_untr_1_port";
   private static final String VDBE_UNTR_1_SUBPORTS = "vdbe_untr_1_subports";
@@ -50,10 +50,10 @@
   private static final String SUBINTERFACE_TYPE_NESTED =
       "org.openecomp.resource.abstract.nodes.heat.subinterface.nested";
 
-  private UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
+  private static UnifiedSubstitutionNodeTemplateIdGenerator unifiedSubstitutionNodeTemplateIdGenerator;
 
   @BeforeClass
-  public void setUp(){
+  public static void setItUp(){
     unifiedSubstitutionNodeTemplateIdGenerator = new SubInterfaceNewNodeTemplateIdGenerator();
   }
 
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-core/pom.xml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-core/pom.xml
index 01fce01..cedb850 100644
--- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-core/pom.xml
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-core/pom.xml
@@ -80,6 +80,7 @@
             <groupId>org.testng</groupId>
             <artifactId>testng</artifactId>
             <version>${testng.version}</version>
+            <scope>test</scope>
         </dependency>
     </dependencies>
 
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/pom.xml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/pom.xml
index fe342f5..ad49dac 100644
--- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/pom.xml
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/pom.xml
@@ -23,7 +23,7 @@
             <groupId>org.testng</groupId>
             <artifactId>testng</artifactId>
             <version>${testng.version}</version>
-            <scope>provided</scope>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.openecomp.sdc</groupId>
diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/main/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/main/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java
index 068e147..13f2d63 100644
--- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/main/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/main/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java
@@ -21,7 +21,7 @@
 import org.openecomp.sdc.validation.ValidationContext;
 import org.openecomp.sdc.validation.Validator;
 import org.openecomp.sdc.validation.base.ResourceBaseValidator;
-import org.testng.Assert;
+
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -169,9 +169,11 @@
   }
 
   public static void validateErrorMessage(String actualMessage, String expected, String... params) {
-    Assert.assertEquals(actualMessage.replace("\n", "").replace("\r", ""),
+    if (!Objects.equals(actualMessage.replace("\n", "").replace("\r", ""),
         ErrorMessagesFormatBuilder.getErrorWithParameters(expected, params).replace("\n", "")
-            .replace("\r", ""));
+            .replace("\r", ""))){
+      throw new RuntimeException("validation failed");
+    }
 
   }
 
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/pom.xml b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/pom.xml
index 05715e4..ef5ff18 100644
--- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/pom.xml
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/pom.xml
@@ -29,11 +29,6 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.freemarker</groupId>
-            <artifactId>freemarker</artifactId>
-            <version>${freemarker.version}</version>
-        </dependency>
-        <dependency>
             <groupId>org.testng</groupId>
             <artifactId>testng</artifactId>
             <version>${testng.version}</version>
@@ -51,11 +46,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.xmlgraphics</groupId>
-            <artifactId>fop</artifactId>
-            <version>${fop.version}</version>
-        </dependency>
-        <dependency>
             <groupId>com.fasterxml.jackson.dataformat</groupId>
             <artifactId>jackson-dataformat-xml</artifactId>
             <version>${jackson.dataformat.version}</version>
@@ -69,6 +59,7 @@
             <groupId>org.mockito</groupId>
             <artifactId>mockito-all</artifactId>
             <version>${mockito.all.version}</version>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>junit</groupId>
diff --git a/openecomp-be/lib/openecomp-tosca-lib/pom.xml b/openecomp-be/lib/openecomp-tosca-lib/pom.xml
index 5138f62..c6f8aa1 100644
--- a/openecomp-be/lib/openecomp-tosca-lib/pom.xml
+++ b/openecomp-be/lib/openecomp-tosca-lib/pom.xml
@@ -52,6 +52,12 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <scope>test</scope>
+            <version>${mockito.all.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.openecomp.sdc</groupId>
             <artifactId>openecomp-sdc-logging-core</artifactId>
             <version>${project.version}</version>
diff --git a/openecomp-be/pom.xml b/openecomp-be/pom.xml
index 598f973..5437a5d 100644
--- a/openecomp-be/pom.xml
+++ b/openecomp-be/pom.xml
@@ -45,6 +45,13 @@
             <version>${togglz.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>build-helper</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/openecomp-be/tools/build-helper/pom.xml b/openecomp-be/tools/build-helper/pom.xml
new file mode 100644
index 0000000..bcdf52a
--- /dev/null
+++ b/openecomp-be/tools/build-helper/pom.xml
@@ -0,0 +1,31 @@
+<?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>
+
+    <artifactId>build-helper</artifactId>
+
+    <parent>
+        <artifactId>sdc-onboarding</artifactId>
+        <groupId>org.openecomp.sdc</groupId>
+        <version>1.2.0-SNAPSHOT</version>
+        <relativePath>../../../onboarding</relativePath>
+    </parent>
+
+    <properties>
+        <jacoco.skip>true</jacoco.skip>
+        <pmd.skip>true</pmd.skip>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+
+</project>
diff --git a/openecomp-be/tools/build-helper/src/main/java/org/openecomp/onboarding/build/test/StaleCodeDetectionTest.java b/openecomp-be/tools/build-helper/src/main/java/org/openecomp/onboarding/build/test/StaleCodeDetectionTest.java
new file mode 100644
index 0000000..69f7735
--- /dev/null
+++ b/openecomp-be/tools/build-helper/src/main/java/org/openecomp/onboarding/build/test/StaleCodeDetectionTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright © 2016-2017 European Support Limited
+ *
+ * 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 a "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openecomp.onboarding.build.test;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.Collections;
+
+public class StaleCodeDetectionTest {
+
+    private static final String JAVA_EXT = ".java";
+    private static final String CLASS_EXT = ".class";
+
+    @Test
+    public void checkIfStale() {
+
+        String moduleLocation = System.getProperty("basedir");
+        if (isStale(moduleLocation + File.separator + "target" + File.separator + "test-classes",
+                moduleLocation + File.separator + "src" + File.separator + "test" + File.separator + "java")) {
+            Assert.fail("****** Please remove 'target' directory manually under path " + moduleLocation);
+        }
+    }
+
+    private boolean isStale(String compiledCodeLocation, String javaSourceLocation) {
+        File compiledFiles = new File(compiledCodeLocation);
+        File[] list = compiledFiles.listFiles((dir, file) -> file.endsWith(CLASS_EXT) && file.indexOf('$') == -1);
+        if (list == null || list.length == 0) {
+            return false;
+        }
+        File candidate = Collections.min(Arrays.asList(list),
+                (file1, file2) -> file1.lastModified() >= file2.lastModified() ? 1 : -1);
+        String sourceFilePath = javaSourceLocation + candidate.getAbsolutePath().replace(compiledCodeLocation, "")
+                                                              .replace(CLASS_EXT, JAVA_EXT);
+        return !Paths.get(sourceFilePath).toFile().exists();
+    }
+}
diff --git a/openecomp-be/tools/swagger-ui/assembly/swagger.xml b/openecomp-be/tools/swagger-ui/assembly/swagger.xml
index 37911dc..5a43021 100644
--- a/openecomp-be/tools/swagger-ui/assembly/swagger.xml
+++ b/openecomp-be/tools/swagger-ui/assembly/swagger.xml
@@ -60,7 +60,7 @@
             </includes>
         </fileSet>
         <fileSet>
-            <directory>./target</directory>
+            <directory>./target/api-docs</directory>
             <outputDirectory>/</outputDirectory>
             <includes>
                 <include>${api.json.file}</include>
diff --git a/openecomp-be/tools/swagger-ui/pom.xml b/openecomp-be/tools/swagger-ui/pom.xml
index 8432276..f470c0e 100644
--- a/openecomp-be/tools/swagger-ui/pom.xml
+++ b/openecomp-be/tools/swagger-ui/pom.xml
@@ -14,36 +14,11 @@
 
     <properties>
         <plugin.name>api-docs</plugin.name>
-        <package.dir>${basedir}/${plugin.name}</package.dir>
         <rest.api.dir>${basedir}/../../api/openecomp-sdc-rest-webapp/onboarding-rest-war</rest.api.dir>
         <api.json.file>api.json</api.json.file>
-        <api.html.file>api.html</api.html.file>
     </properties>
     <build>
         <plugins>
-            <!-- ============================================= -->
-            <!-- Clean api-docs folder -->
-            <!-- ============================================= -->
-            <plugin>
-                <artifactId>maven-clean-plugin</artifactId>
-                <version>2.6.1</version>
-                <executions>
-                    <execution>
-                        <id>clean.dist.folder</id>
-                        <phase>clean</phase>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                        <configuration>
-                            <filesets>
-                                <fileset>
-                                    <directory>${basedir}/api-docs</directory>
-                                </fileset>
-                            </filesets>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-deploy-plugin</artifactId>
@@ -72,9 +47,7 @@
                         <configuration>
                             <tasks>
                                 <echo message="Copy api json files"/>
-                                <copy file="${rest.api.dir}/target/generated/swagger-ui/swagger.json" tofile="${basedir}/target/${api.json.file}"/>
-                                <copy file="${rest.api.dir}/target/generated/swagger-ui/swagger.json" tofile="${package.dir}/${api.json.file}"/>
-                                <copy file="${rest.api.dir}/target/generated/${api.html.file}" tofile="${package.dir}/${api.html.file}"/>
+                                <copy file="${rest.api.dir}/target/generated/swagger-ui/swagger.json" tofile="${basedir}/target/${plugin.name}/${api.json.file}"/>
                             </tasks>
                         </configuration>
                         <goals>
@@ -90,7 +63,7 @@
                 <configuration>
                     <descriptor>assembly/swagger.xml</descriptor>
                     <finalName>${plugin.name}</finalName>
-                    <outputDirectory>${package.dir}</outputDirectory>
+                    <outputDirectory>${basedir}/target/${plugin.name}</outputDirectory>
 					<appendAssemblyId>false</appendAssemblyId>
                 </configuration>
                 <executions>
diff --git a/openecomp-be/tools/zusammen-tools/pom.xml b/openecomp-be/tools/zusammen-tools/pom.xml
index aef0eb7..a1183b5 100644
--- a/openecomp-be/tools/zusammen-tools/pom.xml
+++ b/openecomp-be/tools/zusammen-tools/pom.xml
@@ -64,6 +64,12 @@
             <artifactId>openecomp-sdc-vendor-software-product-manager</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <version>${testng.version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <artifactId>openecomp-zusammen-tools</artifactId>
     <groupId>org.openecomp.sdc.core.tools</groupId>
@@ -130,7 +136,6 @@
                 </executions>
             </plugin>
 
-
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
@@ -157,26 +162,8 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
                 <version>2.4</version>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                    </execution>
-                </executions>
                 <configuration>
-                    <archive>
-                        <manifest>
-                            <addClasspath>true</addClasspath>
-                            <classpathLayoutType>custom</classpathLayoutType>
-                            <customClasspathLayout>
-                                lib/${artifact.artifactId}-${baseVersion}.${artifact.extension}
-                            </customClasspathLayout>
-                            <mainClass>org.openecomp.core.tools.main.ZusammenMainTool
-                            </mainClass>
-                        </manifest>
-                        <manifestEntries>
-                            <Class-Path>lib/</Class-Path>
-                        </manifestEntries>
-                    </archive>
+                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                 </configuration>
             </plugin>
 
@@ -192,10 +179,6 @@
                                 <fixcrlf srcdir="./" eol="unix"
                                          includes="zusammenMainTool.sh"/>
                             </tasks>
-                            <tasks>
-                                <replace file="src/main/resources/zusammenMainTool.sh" token="1.0-SNAPSHOT" value="${project.version}"/>
-                            </tasks>
-
                         </configuration>
                         <goals>
                             <goal>run</goal>
diff --git a/openecomp-be/tools/zusammen-tools/src/main/assembly/zusammen-tools-lib-assembly.xml b/openecomp-be/tools/zusammen-tools/src/main/assembly/zusammen-tools-lib-assembly.xml
index 923115e..5a15f4f 100644
--- a/openecomp-be/tools/zusammen-tools/src/main/assembly/zusammen-tools-lib-assembly.xml
+++ b/openecomp-be/tools/zusammen-tools/src/main/assembly/zusammen-tools-lib-assembly.xml
@@ -7,7 +7,6 @@
 	</formats>
 
 	<includeBaseDirectory>false</includeBaseDirectory>
-
 	<files>
 		<file>
 			<source>src/main/resources/zusammenMainTool.sh</source>
@@ -22,18 +21,11 @@
 			<fileMode>0755</fileMode>
 		</fileSet>
 		<fileSet>
-			<directory>${basedir}/target</directory>
-			<includes>
-				<include>
-					openecomp-zusammen*.jar
-				</include>
-			</includes>
-			<outputDirectory>/</outputDirectory>
-		</fileSet>
-		<fileSet>
 			<directory>${basedir}/target/lib</directory>
 			<outputDirectory>/lib</outputDirectory>
 		</fileSet>
+
 	</fileSets>
+
 </assembly>
 
diff --git a/openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh b/openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh
index 61388a1..025ecab 100644
--- a/openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh
+++ b/openecomp-be/tools/zusammen-tools/src/main/resources/zusammenMainTool.sh
@@ -23,5 +23,5 @@
 fi
 echo "Configuration file location:  ${CONF_FILE_LOCATION}"
 
-java -Dconfig.home=/opt/app/jetty/base/be/config -Dlog.home=/apps/jetty/base/be/logs -Dconfiguration.yaml=${CONF_FILE_LOCATION}  -classpath openecomp-zusammen-tools-1.2.0-SNAPSHOT.jar:lib/* org.openecomp.core.tools.main.ZusammenMainTool $1 $2 $3 $4 $5 $6
+java -Dconfig.home=/opt/app/jetty/base/be/config -Dlog.home=/apps/jetty/base/be/logs -Dconfiguration.yaml=${CONF_FILE_LOCATION}  -classpath lib/* org.openecomp.core.tools.main.ZusammenMainTool $1 $2 $3 $4 $5 $6
 STATUS="${?}" echo "${STATUS}"
