diff --git a/asdctool/pom.xml b/asdctool/pom.xml
index e086937..bb4b7cf 100644
--- a/asdctool/pom.xml
+++ b/asdctool/pom.xml
@@ -456,6 +456,13 @@
 		</dependency>
 
 		<!-- testing -->
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-all</artifactId>
+            <version>${hamcrest-all.version}</version>
+            <scope>test</scope>
+        </dependency>
+
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>
diff --git a/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/ForwardPathMigrationTest.java b/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/ForwardPathMigrationTest.java
new file mode 100644
index 0000000..c10291b
--- /dev/null
+++ b/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/ForwardPathMigrationTest.java
@@ -0,0 +1,50 @@
+package org.openecomp.sdc.asdctool.migration.tasks.mig1806;
+
+import static org.junit.Assert.assertThat;
+import java.math.BigInteger;
+import org.hamcrest.core.Is;
+import org.hamcrest.core.IsNull;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.openecomp.sdc.asdctool.migration.core.DBVersion;
+import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
+import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
+import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
+
+public class ForwardPathMigrationTest {
+
+    ForwardPathMigration forwardPathMigration = null;
+
+    @Mock
+    TitanDao titanDao;
+
+    @Mock
+    UserAdminOperation userAdminOperation;
+
+    @Mock
+    ToscaOperationFacade toscaOperationFacade;
+
+    @Before
+    public void setUp() throws Exception {
+        forwardPathMigration = new ForwardPathMigration(titanDao, userAdminOperation, toscaOperationFacade);
+    }
+
+    @Test
+    public void testDescription() {
+        assertThat(forwardPathMigration,IsNull.notNullValue());
+        assertThat("remove corrupted forwarding paths ", Is.is(forwardPathMigration.description()));
+    }
+
+    @Test
+    public void testGetVersion() {
+        DBVersion dbVersion = DBVersion.from(BigInteger.valueOf(Version.MAJOR.getValue()), BigInteger.valueOf(Version.MINOR.getValue()));
+        assertThat(dbVersion,Is.is(forwardPathMigration.getVersion()));
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testMigrate() {
+        assertThat(forwardPathMigration,IsNull.notNullValue());
+        forwardPathMigration.migrate();
+    }
+}
diff --git a/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/ResourceLifecycleMigrationTest.java b/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/ResourceLifecycleMigrationTest.java
new file mode 100644
index 0000000..b7f0140
--- /dev/null
+++ b/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/ResourceLifecycleMigrationTest.java
@@ -0,0 +1,52 @@
+package org.openecomp.sdc.asdctool.migration.tasks.mig1806;
+
+import static org.junit.Assert.assertThat;
+import java.math.BigInteger;
+import org.hamcrest.core.Is;
+import org.hamcrest.core.IsNull;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.openecomp.sdc.asdctool.migration.core.DBVersion;
+import org.openecomp.sdc.be.components.lifecycle.LifecycleBusinessLogic;
+import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
+import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
+
+@RunWith(MockitoJUnitRunner.class)
+public class ResourceLifecycleMigrationTest {
+
+    @Mock
+    private TitanDao titanDao;
+    @Mock
+    private LifecycleBusinessLogic lifecycleBusinessLogic;
+    @Mock
+    private UserAdminOperation userAdminOperation;
+
+    ResourceLifecycleMigration resourceLifecycleMigration = null;
+
+    @Before
+    public void setUp() throws Exception {
+        resourceLifecycleMigration =
+                new ResourceLifecycleMigration(titanDao, lifecycleBusinessLogic, userAdminOperation);
+    }
+
+    @Test
+    public void testDescription() {
+        assertThat(resourceLifecycleMigration,IsNull.notNullValue());
+        assertThat("change resource lifecycle state from testing to certified", Is.is(resourceLifecycleMigration.description()));
+    }
+
+    @Test
+    public void testGetVersion() {
+        DBVersion dbVersion = DBVersion.from(BigInteger.valueOf(Version.MAJOR.getValue()), BigInteger.valueOf(Version.MINOR.getValue()));
+        assertThat(dbVersion, Is.is(resourceLifecycleMigration.getVersion()));
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testMigrate() {
+        assertThat(resourceLifecycleMigration,IsNull.notNullValue());
+        resourceLifecycleMigration.migrate();
+    }
+}
diff --git a/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/SdcArchiveMigrationTest.java b/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/SdcArchiveMigrationTest.java
new file mode 100644
index 0000000..0ea3b91
--- /dev/null
+++ b/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/SdcArchiveMigrationTest.java
@@ -0,0 +1,44 @@
+package org.openecomp.sdc.asdctool.migration.tasks.mig1806;
+
+import static org.junit.Assert.assertThat;
+import java.math.BigInteger;
+import org.hamcrest.core.Is;
+import org.hamcrest.core.IsNull;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.openecomp.sdc.asdctool.migration.core.DBVersion;
+import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
+
+@RunWith(MockitoJUnitRunner.class)
+public class SdcArchiveMigrationTest {
+    @Mock
+    private TitanDao titanDao;
+
+    SdcArchiveMigration sdcArchiveMigration = null;
+
+    @Before
+    public void setUp() throws Exception {
+        sdcArchiveMigration = new SdcArchiveMigration(titanDao);
+    }
+
+    @Test
+    public void testDescription() {
+        assertThat(sdcArchiveMigration,IsNull.notNullValue());
+        assertThat("add archive node for archiving/restoring components ", Is.is(sdcArchiveMigration.description()));
+    }
+
+    @Test
+    public void testGetVersion() {
+        DBVersion dbVersion = DBVersion.from(BigInteger.valueOf(Version.MAJOR.getValue()), BigInteger.valueOf(Version.MINOR.getValue()));
+        assertThat(dbVersion, Is.is(sdcArchiveMigration.getVersion()));
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testMigrate() {
+        assertThat(sdcArchiveMigration,IsNull.notNullValue());
+        sdcArchiveMigration.migrate();
+    }
+}
diff --git a/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/Version.java b/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/Version.java
new file mode 100644
index 0000000..8341e73
--- /dev/null
+++ b/asdctool/src/test/java/org/openecomp/sdc/asdctool/migration/tasks/mig1806/Version.java
@@ -0,0 +1,16 @@
+package org.openecomp.sdc.asdctool.migration.tasks.mig1806;
+
+public enum Version {
+
+    MINOR(0), MAJOR(1806);
+
+    private final int value;
+
+    private Version(final int newValue) {
+        value = newValue;
+    }
+
+    public int getValue() {
+        return value;
+    }
+}
diff --git a/pom.xml b/pom.xml
index 74c7e1f..60a5fb0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -101,6 +101,7 @@
         <extentreports.version>3.0.3</extentreports.version>
         <cucumber.version>2.4.0</cucumber.version>
         <bean-matchers.version>0.11</bean-matchers.version>
+        <hamcrest-all.version>1.3</hamcrest-all.version>
 
         <!-- parser-->
         <sdc-tosca-parser.version>1.3.5</sdc-tosca-parser.version>
diff --git a/test-apis-ci/pom.xml b/test-apis-ci/pom.xml
index 54c0871..a770fe7 100644
--- a/test-apis-ci/pom.xml
+++ b/test-apis-ci/pom.xml
@@ -38,7 +38,7 @@
         <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest-all</artifactId>
-            <version>1.3</version>
+            <version>${hamcrest-all.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
