diff --git a/client/src/main/java/com/orientechnologies/orient/client/db/ODatabaseHelper.java b/client/src/main/java/com/orientechnologies/orient/client/db/ODatabaseHelper.java
index 5a095a5198a..9ae6df2c888 100755
--- a/client/src/main/java/com/orientechnologies/orient/client/db/ODatabaseHelper.java
+++ b/client/src/main/java/com/orientechnologies/orient/client/db/ODatabaseHelper.java
@@ -125,35 +125,6 @@ public static boolean existsDatabase(final String url) throws IOException {
     return new ODatabaseDocumentTx(url).exists();
   }
 
-  @Deprecated
-  public static void freezeDatabase(final ODatabase database) throws IOException {
-    database.activateOnCurrentThread();
-    if (database.getURL().startsWith("remote")) {
-      final OServerAdmin serverAdmin = new OServerAdmin(database.getURL());
-      serverAdmin.connect("root", getServerRootPassword()).freezeDatabase("plocal");
-      serverAdmin.close();
-    } else {
-      database.freeze();
-    }
-  }
-
-  @Deprecated
-  public static void releaseDatabase(final ODatabase database) throws IOException {
-    database.activateOnCurrentThread();
-    if (database.getURL().startsWith("remote")) {
-      final OServerAdmin serverAdmin = new OServerAdmin(database.getURL());
-      serverAdmin.connect("root", getServerRootPassword()).releaseDatabase("plocal");
-      serverAdmin.close();
-    } else {
-      database.release();
-    }
-  }
-
-  @Deprecated
-  public static File getConfigurationFile() {
-    return getConfigurationFile(null);
-  }
-
   @Deprecated
   public static String getServerRootPassword() throws IOException {
     return getServerRootPassword("server");
diff --git a/core/src/test/java/com/orientechnologies/orient/core/ExceptionNotOpenTest.java b/core/src/test/java/com/orientechnologies/orient/core/ExceptionNotOpenTest.java
deleted file mode 100755
index 7178bcdfcbb..00000000000
--- a/core/src/test/java/com/orientechnologies/orient/core/ExceptionNotOpenTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.orientechnologies.orient.core;
-
-import com.orientechnologies.orient.core.db.ODatabaseDocumentInternal;
-import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
-import com.orientechnologies.orient.core.exception.ODatabaseException;
-import com.orientechnologies.orient.core.record.impl.ODocument;
-import com.orientechnologies.orient.core.tx.OTransaction;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class ExceptionNotOpenTest {
-
-  @Test
-  public void testExceptionNotOpenMemory() {
-
-    ODatabaseDocumentInternal db = new ODatabaseDocumentTx("memory:testExceptionNotOpenMemory");
-    try {
-      db.save(new ODocument());
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.delete(new ODocument());
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.begin();
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.begin(OTransaction.TXTYPE.NOTX);
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.rollback();
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.commit();
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.getMetadata();
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-  }
-
-  @Test
-  @Ignore
-  public void testExceptionNotOpenRemote() {
-    try {
-      ODatabaseDocument db = new ODatabaseDocumentTx("remote:127.0.0.1:00");
-      Assert.fail();
-    } catch (ODatabaseException e) {
-      Assert.assertNull(ODatabaseRecordThreadLocal.instance().getIfDefined());
-    }
-  }
-
-  @Test
-  public void testExceptionNotOpenPlocal() {
-
-    ODatabaseDocumentInternal db = new ODatabaseDocumentTx("plocal:./target/databaseCheck");
-    try {
-      db.save(new ODocument());
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.delete(new ODocument());
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.begin();
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.begin(OTransaction.TXTYPE.NOTX);
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.rollback();
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.commit();
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-    try {
-      db.getMetadata();
-      Assert.fail();
-    } catch (ODatabaseException ex) {
-    }
-  }
-}
diff --git a/core/src/test/java/com/orientechnologies/orient/core/PostponedEngineStartTest.java b/core/src/test/java/com/orientechnologies/orient/core/PostponedEngineStartTest.java
deleted file mode 100755
index c73acf080fb..00000000000
--- a/core/src/test/java/com/orientechnologies/orient/core/PostponedEngineStartTest.java
+++ /dev/null
@@ -1,667 +0,0 @@
-/*
- *
- *  *  Copyright 2016 OrientDB LTD (info(at)orientdb.com)
- *  *
- *  *  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.
- *  *  See the License for the specific language governing permissions and
- *  *  limitations under the License.
- *  *
- *  * For more information: http://www.orientdb.com
- */
-
-package com.orientechnologies.orient.core;
-
-import com.orientechnologies.common.util.OCallable;
-import com.orientechnologies.orient.core.command.OCommandOutputListener;
-import com.orientechnologies.orient.core.config.OContextConfiguration;
-import com.orientechnologies.orient.core.conflict.ORecordConflictStrategy;
-import com.orientechnologies.orient.core.db.OrientDBInternal;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
-import com.orientechnologies.orient.core.db.record.OCurrentStorageComponentsFactory;
-import com.orientechnologies.orient.core.db.record.ORecordOperation;
-import com.orientechnologies.orient.core.engine.OEngine;
-import com.orientechnologies.orient.core.engine.OEngineAbstract;
-import com.orientechnologies.orient.core.exception.ORecordNotFoundException;
-import com.orientechnologies.orient.core.id.ORID;
-import com.orientechnologies.orient.core.id.ORecordId;
-import com.orientechnologies.orient.core.storage.OCluster;
-import com.orientechnologies.orient.core.storage.OPhysicalPosition;
-import com.orientechnologies.orient.core.storage.ORawBuffer;
-import com.orientechnologies.orient.core.storage.ORecordCallback;
-import com.orientechnologies.orient.core.storage.ORecordMetadata;
-import com.orientechnologies.orient.core.storage.OStorage;
-import com.orientechnologies.orient.core.storage.OStorageOperationResult;
-import com.orientechnologies.orient.core.storage.cluster.OPaginatedCluster;
-import com.orientechnologies.orient.core.storage.config.OClusterBasedStorageConfiguration;
-import com.orientechnologies.orient.core.storage.ridbag.sbtree.OSBTreeCollectionManager;
-import com.orientechnologies.orient.core.tx.OTransactionInternal;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
-import java.util.concurrent.Callable;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/** @author Sergey Sitnikov */
-public class PostponedEngineStartTest {
-
-  private static Orient ORIENT;
-
-  private static OEngine ENGINE1;
-  private static OEngine ENGINE2;
-  private static OEngine FAULTY_ENGINE;
-
-  @BeforeClass
-  public static void before() {
-    ORIENT =
-        new Orient(false) {
-          @Override
-          public Orient startup() {
-            ORIENT.registerEngine(ENGINE1 = new NamedEngine("engine1"));
-            ORIENT.registerEngine(ENGINE2 = new NamedEngine("engine2"));
-            ORIENT.registerEngine(FAULTY_ENGINE = new FaultyEngine());
-            return this;
-          }
-
-          @Override
-          public Orient shutdown() {
-            ODatabaseDocumentTx.closeAll();
-            return this;
-          }
-        };
-
-    ORIENT.startup();
-  }
-
-  @Test
-  public void test() {
-    // XXX: There is a known problem in TestNG runner with hardly controllable test methods
-    // interleaving from different
-    // test classes. This test case touches internals of OrientDB runtime, interleaving with foreign
-    // methods is not acceptable
-    // here. So I just invoke "test" methods manually from a single test method.
-    //
-    // BTW, TestNG author says that is not a problem, we just need to split *ALL* our test classes
-    // into groups and
-    // make groups depend on each other in right order. I see many problems here: (a) we have to to
-    // split into groups,
-    // (b) we have to maintain all that zoo and (c) we lose the ability to run each test case
-    // individually since
-    // group dependency must be run before.
-
-    testEngineShouldNotStartAtRuntimeStart();
-    testGetEngineIfRunningShouldReturnNullEngineIfNotRunning();
-    testGetRunningEngineShouldStartEngine();
-    testEngineRestart();
-    testStoppedEngineShouldStartAndCreateStorage();
-    testGetRunningEngineShouldThrowIfEngineIsUnknown();
-    testGetRunningEngineShouldThrowIfEngineIsUnableToStart();
-  }
-
-  // @Test
-  public void testEngineShouldNotStartAtRuntimeStart() {
-    final OEngine engine = ORIENT.getEngine(ENGINE1.getName());
-    Assert.assertFalse(engine.isRunning());
-  }
-
-  // @Test(dependsOnMethods = "testEngineShouldNotStartAtRuntimeStart")
-  public void testGetEngineIfRunningShouldReturnNullEngineIfNotRunning() {
-    final OEngine engine = ORIENT.getEngineIfRunning(ENGINE1.getName());
-    Assert.assertNull(engine);
-  }
-
-  // @Test(dependsOnMethods = "testGetEngineIfRunningShouldReturnNullEngineIfNotRunning")
-  public void testGetRunningEngineShouldStartEngine() {
-    final OEngine engine = ORIENT.getRunningEngine(ENGINE1.getName());
-    Assert.assertNotNull(engine);
-    Assert.assertTrue(engine.isRunning());
-  }
-
-  // @Test(dependsOnMethods = "testGetRunningEngineShouldStartEngine")
-  public void testEngineRestart() {
-    OEngine engine = ORIENT.getRunningEngine(ENGINE1.getName());
-    engine.shutdown();
-    Assert.assertFalse(engine.isRunning());
-
-    engine = ORIENT.getEngineIfRunning(ENGINE1.getName());
-    Assert.assertNull(engine);
-
-    engine = ORIENT.getEngine(ENGINE1.getName());
-    Assert.assertFalse(engine.isRunning());
-
-    engine = ORIENT.getRunningEngine(ENGINE1.getName());
-    Assert.assertTrue(engine.isRunning());
-  }
-
-  // @Test
-  public void testStoppedEngineShouldStartAndCreateStorage() {
-    OEngine engine = ORIENT.getEngineIfRunning(ENGINE2.getName());
-    Assert.assertNull(engine);
-
-    final OStorage storage =
-        ENGINE2.createStorage(
-            ENGINE2.getName() + ":storage",
-            125 * 1024 * 1024,
-            25 * 1024 * 1024,
-            Integer.MAX_VALUE,
-            null);
-
-    Assert.assertNotNull(storage);
-
-    engine = ORIENT.getRunningEngine(ENGINE2.getName());
-    Assert.assertTrue(engine.isRunning());
-  }
-
-  //  @Test(expected = IllegalStateException.class)
-  public void testGetRunningEngineShouldThrowIfEngineIsUnknown() {
-    //    Assert.assertThrows(IllegalStateException.class, new Assert.ThrowingRunnable() {
-    //      @Override
-    //      public void run() throws Throwable {
-    //        ORIENT.getRunningEngine("unknown engine");
-    //      }
-    //    });
-    try {
-      ORIENT.getRunningEngine("unknown engine");
-      Assert.fail();
-    } catch (Exception e) {
-      // exception expected
-    }
-  }
-
-  // @Test(expected = IllegalStateException.class)
-  public void testGetRunningEngineShouldThrowIfEngineIsUnableToStart() {
-    OEngine engine = ORIENT.getEngine(FAULTY_ENGINE.getName());
-    Assert.assertNotNull(engine);
-
-    //    Assert.assertThrows(IllegalStateException.class, new Assert.ThrowingRunnable() {
-    //      @Override
-    //      public void run() throws Throwable {
-    //        ORIENT.getRunningEngine(FAULTY_ENGINE.getName());
-    //      }
-    //    });
-    try {
-
-      ORIENT.getRunningEngine(FAULTY_ENGINE.getName());
-
-      engine = ORIENT.getEngine(FAULTY_ENGINE.getName());
-      Assert.assertNull(engine);
-      Assert.fail();
-    } catch (Exception e) {
-      // exception expected
-    }
-  }
-
-  private static class NamedEngine extends OEngineAbstract {
-
-    private final String name;
-
-    public NamedEngine(String name) {
-      this.name = name;
-    }
-
-    @Override
-    public String getName() {
-      return name;
-    }
-
-    @Override
-    public OStorage createStorage(
-        String iURL,
-        long maxWalSegSize,
-        long doubleWriteLogMaxSegSize,
-        int storageId,
-        OrientDBInternal context) {
-      return new OStorage() {
-
-        @Override
-        public List<String> backup(
-            OutputStream out,
-            Map<String, Object> options,
-            Callable<Object> callable,
-            OCommandOutputListener iListener,
-            int compressionLevel,
-            int bufferSize) {
-          return null;
-        }
-
-        @Override
-        public void restore(
-            InputStream in,
-            Map<String, Object> options,
-            Callable<Object> callable,
-            OCommandOutputListener iListener) {}
-
-        @Override
-        public String getClusterName(int clusterId) {
-          return null;
-        }
-
-        @Override
-        public boolean setClusterAttribute(int id, OCluster.ATTRIBUTES attribute, Object value) {
-          return false;
-        }
-
-        @Override
-        public String getCreatedAtVersion() {
-          return null;
-        }
-
-        @Override
-        public void open(
-            String iUserName, String iUserPassword, OContextConfiguration contextConfiguration) {}
-
-        @Override
-        public void create(OContextConfiguration contextConfiguration) {}
-
-        @Override
-        public boolean exists() {
-          return false;
-        }
-
-        @Override
-        public void reload() {}
-
-        @Override
-        public void delete() {}
-
-        @Override
-        public void close() {}
-
-        @Override
-        public void close(boolean iForce) {}
-
-        @Override
-        public boolean isClosed() {
-          return false;
-        }
-
-        @Override
-        public OStorageOperationResult<ORawBuffer> readRecord(
-            ORecordId iRid,
-            String iFetchPlan,
-            boolean iIgnoreCache,
-            boolean prefetchRecords,
-            ORecordCallback<ORawBuffer> iCallback) {
-          return null;
-        }
-
-        @Override
-        public OStorageOperationResult<ORawBuffer> readRecordIfVersionIsNotLatest(
-            ORecordId rid, String fetchPlan, boolean ignoreCache, int recordVersion)
-            throws ORecordNotFoundException {
-          return null;
-        }
-
-        @Override
-        public OStorageOperationResult<Boolean> deleteRecord(
-            ORecordId iRecordId, int iVersion, int iMode, ORecordCallback<Boolean> iCallback) {
-          return null;
-        }
-
-        @Override
-        public ORecordMetadata getRecordMetadata(ORID rid) {
-          return null;
-        }
-
-        @Override
-        public boolean cleanOutRecord(
-            ORecordId recordId, int recordVersion, int iMode, ORecordCallback<Boolean> callback) {
-          return false;
-        }
-
-        @Override
-        public List<ORecordOperation> commit(OTransactionInternal iTx) {
-          return null;
-        }
-
-        @Override
-        public OClusterBasedStorageConfiguration getConfiguration() {
-          return null;
-        }
-
-        @Override
-        public int getClusters() {
-          return 0;
-        }
-
-        @Override
-        public Set<String> getClusterNames() {
-          return null;
-        }
-
-        @Override
-        public Collection<? extends OCluster> getClusterInstances() {
-          return null;
-        }
-
-        @Override
-        public int addCluster(String iClusterName, Object... iParameters) {
-          return 0;
-        }
-
-        @Override
-        public int addCluster(String iClusterName, int iRequestedId) {
-          return 0;
-        }
-
-        @Override
-        public boolean dropCluster(String iClusterName) {
-          return false;
-        }
-
-        @Override
-        public boolean dropCluster(int iId) {
-          return false;
-        }
-
-        @Override
-        public String getClusterNameById(int clusterId) {
-          return null;
-        }
-
-        @Override
-        public long getClusterRecordsSizeById(int clusterId) {
-          return 0;
-        }
-
-        @Override
-        public long getClusterRecordsSizeByName(String clusterName) {
-          return 0;
-        }
-
-        @Override
-        public String getClusterRecordConflictStrategy(int clusterId) {
-          return null;
-        }
-
-        @Override
-        public String getClusterEncryption(int clusterId) {
-          return null;
-        }
-
-        @Override
-        public boolean isSystemCluster(int clusterId) {
-          return false;
-        }
-
-        @Override
-        public long getLastClusterPosition(int clusterId) {
-          return 0;
-        }
-
-        @Override
-        public long getClusterNextPosition(int clusterId) {
-          return 0;
-        }
-
-        @Override
-        public OPaginatedCluster.RECORD_STATUS getRecordStatus(ORID rid) {
-          return null;
-        }
-
-        @Override
-        public long count(int iClusterId) {
-          return 0;
-        }
-
-        @Override
-        public long count(int iClusterId, boolean countTombstones) {
-          return 0;
-        }
-
-        @Override
-        public long count(int[] iClusterIds) {
-          return 0;
-        }
-
-        @Override
-        public long count(int[] iClusterIds, boolean countTombstones) {
-          return 0;
-        }
-
-        @Override
-        public long getSize() {
-          return 0;
-        }
-
-        @Override
-        public long countRecords() {
-          return 0;
-        }
-
-        @Override
-        public int getDefaultClusterId() {
-          return 0;
-        }
-
-        @Override
-        public void setDefaultClusterId(int defaultClusterId) {}
-
-        @Override
-        public int getClusterIdByName(String iClusterName) {
-          return 0;
-        }
-
-        @Override
-        public String getPhysicalClusterNameById(int iClusterId) {
-          return null;
-        }
-
-        @Override
-        public boolean checkForRecordValidity(OPhysicalPosition ppos) {
-          return false;
-        }
-
-        @Override
-        public String getName() {
-          return null;
-        }
-
-        @Override
-        public String getURL() {
-          return null;
-        }
-
-        @Override
-        public long getVersion() {
-          return 0;
-        }
-
-        @Override
-        public void synch() {}
-
-        @Override
-        public long[] getClusterDataRange(int currentClusterId) {
-          return new long[0];
-        }
-
-        @Override
-        public OPhysicalPosition[] higherPhysicalPositions(
-            int clusterId, OPhysicalPosition physicalPosition) {
-          return new OPhysicalPosition[0];
-        }
-
-        @Override
-        public OPhysicalPosition[] lowerPhysicalPositions(
-            int clusterId, OPhysicalPosition physicalPosition) {
-          return new OPhysicalPosition[0];
-        }
-
-        @Override
-        public OPhysicalPosition[] ceilingPhysicalPositions(
-            int clusterId, OPhysicalPosition physicalPosition) {
-          return new OPhysicalPosition[0];
-        }
-
-        @Override
-        public OPhysicalPosition[] floorPhysicalPositions(
-            int clusterId, OPhysicalPosition physicalPosition) {
-          return new OPhysicalPosition[0];
-        }
-
-        @Override
-        public STATUS getStatus() {
-          return null;
-        }
-
-        @Override
-        public String getType() {
-          return null;
-        }
-
-        @Override
-        public boolean isRemote() {
-          return false;
-        }
-
-        @Override
-        public boolean isAssigningClusterIds() {
-          return false;
-        }
-
-        @Override
-        public OSBTreeCollectionManager getSBtreeCollectionManager() {
-          return null;
-        }
-
-        @Override
-        public OCurrentStorageComponentsFactory getComponentsFactory() {
-          return null;
-        }
-
-        @Override
-        public ORecordConflictStrategy getRecordConflictStrategy() {
-          return null;
-        }
-
-        @Override
-        public void setConflictStrategy(ORecordConflictStrategy iResolver) {}
-
-        @Override
-        public String incrementalBackup(String backupDirectory, OCallable<Void, Void> started) {
-          return null;
-        }
-
-        @Override
-        public boolean supportIncremental() {
-          return false;
-        }
-
-        @Override
-        public void fullIncrementalBackup(final OutputStream stream)
-            throws UnsupportedOperationException {}
-
-        @Override
-        public void restoreFromIncrementalBackup(String filePath) {}
-
-        @Override
-        public void restoreFullIncrementalBackup(final InputStream stream)
-            throws UnsupportedOperationException {}
-
-        @Override
-        public void shutdown() {}
-
-        @Override
-        public void setSchemaRecordId(String schemaRecordId) {}
-
-        @Override
-        public void setDateFormat(String dateFormat) {}
-
-        @Override
-        public void setTimeZone(TimeZone timeZoneValue) {}
-
-        @Override
-        public void setLocaleLanguage(String locale) {}
-
-        @Override
-        public void setCharset(String charset) {}
-
-        @Override
-        public void setIndexMgrRecordId(String indexMgrRecordId) {}
-
-        @Override
-        public void setDateTimeFormat(String dateTimeFormat) {}
-
-        @Override
-        public void setLocaleCountry(String localeCountry) {}
-
-        @Override
-        public void setClusterSelection(String clusterSelection) {}
-
-        @Override
-        public void setMinimumClusters(int minimumClusters) {}
-
-        @Override
-        public void setValidation(boolean validation) {}
-
-        @Override
-        public void removeProperty(String property) {}
-
-        @Override
-        public void setProperty(String property, String value) {}
-
-        @Override
-        public void setRecordSerializer(String recordSerializer, int version) {}
-
-        @Override
-        public void clearProperties() {}
-
-        @Override
-        public int[] getClustersIds(Set<String> filterClusters) {
-          return null;
-        }
-
-        @Override
-        public OrientDBInternal getContext() {
-          return null;
-        }
-      };
-    }
-
-    @Override
-    public String getNameFromPath(String dbPath) {
-      return dbPath;
-    }
-  }
-
-  private static class FaultyEngine extends OEngineAbstract {
-    @Override
-    public String getName() {
-      return FaultyEngine.class.getSimpleName();
-    }
-
-    @Override
-    public void startup() {
-      super.startup();
-      throw new RuntimeException("oops");
-    }
-
-    @Override
-    public OStorage createStorage(
-        String iURL,
-        long maxWalSegSize,
-        long doubleWriteLogMaxSegSize,
-        int storageId,
-        OrientDBInternal context) {
-      throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getNameFromPath(String dbPath) {
-      throw new UnsupportedOperationException();
-    }
-  }
-}
diff --git a/core/src/test/java/com/orientechnologies/orient/core/db/FreezeAndRecordInsertAtomicityTest.java b/core/src/test/java/com/orientechnologies/orient/core/db/FreezeAndRecordInsertAtomicityTest.java
index 2fcfb2edd0d..8d192029faf 100755
--- a/core/src/test/java/com/orientechnologies/orient/core/db/FreezeAndRecordInsertAtomicityTest.java
+++ b/core/src/test/java/com/orientechnologies/orient/core/db/FreezeAndRecordInsertAtomicityTest.java
@@ -24,13 +24,11 @@
 import static org.junit.Assert.assertTrue;
 
 import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.id.ORID;
 import com.orientechnologies.orient.core.index.OIndex;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
 import com.orientechnologies.orient.core.metadata.schema.OType;
 import com.orientechnologies.orient.core.record.impl.ODocument;
-import java.io.File;
 import java.util.HashSet;
 import java.util.Random;
 import java.util.Set;
@@ -48,22 +46,10 @@
 /** @author Sergey Sitnikov */
 public class FreezeAndRecordInsertAtomicityTest {
 
-  private static final String URL;
   private static final int THREADS = Runtime.getRuntime().availableProcessors() * 2;
   private static final int ITERATIONS = 100;
-
-  static {
-    String buildDirectory = System.getProperty("buildDirectory");
-    if (buildDirectory == null) buildDirectory = "./target";
-
-    URL =
-        "plocal:"
-            + buildDirectory
-            + File.separator
-            + FreezeAndRecordInsertAtomicityTest.class.getSimpleName();
-  }
-
   private Random random;
+  private OrientDB ctx;
   private ODatabaseDocument db;
   private ExecutorService executorService;
   private CountDownLatch countDownLatch;
@@ -73,13 +59,19 @@ public void before() {
     final long seed = System.currentTimeMillis();
     System.out.println(FreezeAndRecordInsertAtomicityTest.class.getSimpleName() + " seed: " + seed);
     random = new Random(seed);
-
-    db = new ODatabaseDocumentTx(URL);
-    if (db.exists()) {
-      db.open("admin", "admin");
-      db.drop();
+    String buildDirectory = System.getProperty("buildDirectory");
+    if (buildDirectory == null) buildDirectory = "./target";
+    ctx = new OrientDB("embedded:" + buildDirectory, OrientDBConfig.defaultConfig());
+    String dbName = FreezeAndRecordInsertAtomicityTest.class.getSimpleName();
+    if (ctx.exists(dbName)) {
+      ctx.drop(dbName);
     }
-    db.create();
+    ctx.execute(
+            "create database "
+                + dbName
+                + " plocal users(admin identified by 'adminpwd' role admin)")
+        .close();
+    db = ctx.open(dbName, "admin", "adminpwd");
     db.getMetadata()
         .getSchema()
         .createClass("Person")
@@ -95,8 +87,9 @@ public void before() {
   public void after() throws InterruptedException {
     executorService.shutdown();
     assertTrue(executorService.awaitTermination(5, TimeUnit.SECONDS));
-
-    db.drop();
+    String dbName = FreezeAndRecordInsertAtomicityTest.class.getSimpleName();
+    ctx.drop(dbName);
+    ctx.close();
   }
 
   @Test
@@ -110,8 +103,12 @@ public void test() throws InterruptedException, ExecutionException {
           executorService.submit(
               () -> {
                 try {
-                  final ODatabaseDocumentInternal db = new ODatabaseDocumentTx(URL);
-                  db.open("admin", "admin");
+                  final ODatabaseDocumentInternal db =
+                      (ODatabaseDocumentInternal)
+                          ctx.open(
+                              FreezeAndRecordInsertAtomicityTest.class.getSimpleName(),
+                              "admin",
+                              "adminpwd");
                   final OIndex index =
                       db.getMetadata().getIndexManagerInternal().getIndex(db, "Person.name");
 
diff --git a/core/src/test/java/com/orientechnologies/orient/core/db/document/ODatabaseDocumentSTUsageTest.java b/core/src/test/java/com/orientechnologies/orient/core/db/document/ODatabaseDocumentSTUsageTest.java
deleted file mode 100644
index 55e48230d89..00000000000
--- a/core/src/test/java/com/orientechnologies/orient/core/db/document/ODatabaseDocumentSTUsageTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.orientechnologies.orient.core.db.document;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class ODatabaseDocumentSTUsageTest {
-
-  @Test
-  @Ignore
-  public void testShareBetweenThreads() {
-    final ODatabaseDocumentTx db = new ODatabaseDocumentTx("memory:ODatabaseDocumentSTUsageTest");
-    db.create();
-    db.close();
-
-    db.open("admin", "admin");
-
-    ExecutorService singleThread = Executors.newSingleThreadExecutor();
-    Future<Object> future =
-        singleThread.submit(
-            () -> {
-              db.open("admin", "admin");
-              return null;
-            });
-
-    try {
-      future.get();
-      Assert.fail();
-    } catch (Exception e) {
-      Assert.assertTrue(e.getCause() instanceof IllegalStateException);
-    }
-    db.close();
-  }
-}
diff --git a/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/LocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords.java b/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/LocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords.java
index 8881e36aae5..91259702a14 100755
--- a/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/LocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords.java
+++ b/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/LocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords.java
@@ -5,7 +5,8 @@
 import com.orientechnologies.orient.core.config.OGlobalConfiguration;
 import com.orientechnologies.orient.core.db.ODatabaseDocumentInternal;
 import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
+import com.orientechnologies.orient.core.db.OrientDB;
+import com.orientechnologies.orient.core.db.OrientDBConfig;
 import com.orientechnologies.orient.core.db.tool.ODatabaseCompare;
 import com.orientechnologies.orient.core.id.ORID;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
@@ -46,9 +47,14 @@
  */
 public class LocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords {
   private static File buildDir;
+  private OrientDB ctx;
   private ODatabaseDocumentInternal testDocumentTx;
   private ODatabaseDocumentInternal baseDocumentTx;
   private ExecutorService executorService = Executors.newCachedThreadPool();
+  private static final String DB_NAME =
+      "baseLocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords";
+  private static final String DB_NAME_TEST =
+      "testLocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords";
 
   @BeforeClass
   public static void beforeClass() {
@@ -73,29 +79,22 @@ public static void afterClass() throws IOException {
   @Before
   public void beforeMethod() throws IOException {
     OFileUtils.deleteRecursively(buildDir);
-
-    baseDocumentTx =
-        new ODatabaseDocumentTx(
-            "plocal:"
-                + buildDir.getAbsolutePath()
-                + "/baseLocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords");
-    if (baseDocumentTx.exists()) {
-      baseDocumentTx.open("admin", "admin");
-      baseDocumentTx.drop();
+    ctx = new OrientDB("embedded:" + buildDir.getAbsolutePath(), OrientDBConfig.defaultConfig());
+    if (ctx.exists(DB_NAME)) {
+      ctx.drop(DB_NAME);
     }
-
-    baseDocumentTx.create();
-
+    ctx.execute(
+            "create database ? plocal users (admin identified by 'adminpwd' role admin)", DB_NAME)
+        .close();
+    baseDocumentTx = (ODatabaseDocumentInternal) ctx.open(DB_NAME, "admin", "adminpwd");
     createSchema(baseDocumentTx);
   }
 
   @After
   public void afterMethod() {
-    testDocumentTx.open("admin", "admin");
-    testDocumentTx.drop();
-
-    baseDocumentTx.open("admin", "admin");
-    baseDocumentTx.drop();
+    ctx.drop(DB_NAME_TEST);
+    ctx.drop(DB_NAME);
+    ctx.close();
   }
 
   @Test
@@ -123,12 +122,7 @@ public void testRestoreAndAddNewItems() throws Exception {
     baseDocumentTx.close();
     storage.close();
 
-    testDocumentTx =
-        new ODatabaseDocumentTx(
-            "plocal:"
-                + buildDir.getAbsolutePath()
-                + "/testLocalPaginatedStorageRestoreFromWALAndAddAdditionalRecords");
-    testDocumentTx.open("admin", "admin");
+    testDocumentTx = (ODatabaseDocumentInternal) ctx.open(DB_NAME_TEST, "admin", "adminpwd");
     testDocumentTx.close();
 
     long dataAddSeed = random.nextLong();
@@ -273,12 +267,10 @@ public class DataPropagationTask implements Callable<Void> {
     public DataPropagationTask(long seed) {
       this.seed = seed;
 
-      baseDB = new ODatabaseDocumentTx(baseDocumentTx.getURL());
-      baseDB.open("admin", "admin");
+      baseDB = (ODatabaseDocumentInternal) ctx.open(DB_NAME, "admin", "adminpwd");
 
       if (testDocumentTx != null) {
-        testDB = new ODatabaseDocumentTx(testDocumentTx.getURL());
-        testDB.open("admin", "admin");
+        testDB = (ODatabaseDocumentInternal) ctx.open(DB_NAME_TEST, "admin", "adminpwd");
       }
     }
 
diff --git a/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/LocalPaginatedStorageRestoreTx.java b/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/LocalPaginatedStorageRestoreTx.java
index abc902f1b89..c96f954dcae 100755
--- a/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/LocalPaginatedStorageRestoreTx.java
+++ b/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/LocalPaginatedStorageRestoreTx.java
@@ -4,8 +4,9 @@
 import com.orientechnologies.orient.core.config.OGlobalConfiguration;
 import com.orientechnologies.orient.core.db.ODatabaseDocumentInternal;
 import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal;
+import com.orientechnologies.orient.core.db.OrientDB;
+import com.orientechnologies.orient.core.db.OrientDBConfig;
 import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.db.tool.ODatabaseCompare;
 import com.orientechnologies.orient.core.id.ORID;
 import com.orientechnologies.orient.core.id.ORecordId;
@@ -43,9 +44,12 @@
  * @since 14.06.13
  */
 public class LocalPaginatedStorageRestoreTx {
+  private OrientDB ctx;
   private ODatabaseDocumentInternal testDocumentTx;
   private ODatabaseDocumentInternal baseDocumentTx;
   private File buildDir;
+  private static final String DB_NAME = "baseLocalPaginatedStorageRestoreFromTx";
+  private static final String DB_NAME_TEST = "testLocalPaginatedStorageRestoreFromTx";
 
   private ExecutorService executorService = Executors.newCachedThreadPool();
 
@@ -77,28 +81,22 @@ public void beforeClass() {
     if (buildDir.exists()) buildDir.delete();
 
     buildDir.mkdir();
-
-    baseDocumentTx =
-        new ODatabaseDocumentTx(
-            "plocal:" + buildDir.getAbsolutePath() + "/baseLocalPaginatedStorageRestoreFromTx");
-    if (baseDocumentTx.exists()) {
-      baseDocumentTx.open("admin", "admin");
-      baseDocumentTx.drop();
+    ctx = new OrientDB("plocal:" + buildDir.getAbsolutePath(), OrientDBConfig.defaultConfig());
+    if (ctx.exists(DB_NAME)) {
+      ctx.drop(DB_NAME);
     }
-
-    baseDocumentTx.create();
+    ctx.execute(
+        "create database ? plocal users (admin identified by 'adminpwd' role admin)", DB_NAME);
+    baseDocumentTx = (ODatabaseDocumentInternal) ctx.open(DB_NAME, "admin", "adminpwd");
 
     createSchema(baseDocumentTx);
   }
 
   @After
   public void afterMethod() {
-    testDocumentTx.open("admin", "admin");
-    testDocumentTx.drop();
-
-    baseDocumentTx.open("admin", "admin");
-    baseDocumentTx.drop();
-
+    ctx.drop(DB_NAME);
+    ctx.drop(DB_NAME_TEST);
+    ctx.close();
     buildDir.delete();
   }
 
@@ -117,10 +115,7 @@ public void testSimpleRestore() throws Exception {
     baseDocumentTx.close();
     storage.close();
 
-    testDocumentTx =
-        new ODatabaseDocumentTx(
-            "plocal:" + buildDir.getAbsolutePath() + "/testLocalPaginatedStorageRestoreFromTx");
-    testDocumentTx.open("admin", "admin");
+    testDocumentTx = (ODatabaseDocumentInternal) ctx.open(DB_NAME_TEST, "admin", "adminpwd");
     testDocumentTx.close();
 
     ODatabaseCompare databaseCompare =
@@ -259,8 +254,7 @@ public Void call() throws Exception {
 
       Random random = new Random();
 
-      final ODatabaseDocument db = new ODatabaseDocumentTx(baseDocumentTx.getURL());
-      db.open("admin", "admin");
+      final ODatabaseDocument db = ctx.open(DB_NAME, "admin", "adminpwd");
       int rollbacksCount = 0;
       try {
         List<ORID> secondDocs = new ArrayList<ORID>();
diff --git a/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/StorageBackupMTStateTest.java b/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/StorageBackupMTStateTest.java
index b11fabfa052..ce5b4559736 100755
--- a/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/StorageBackupMTStateTest.java
+++ b/core/src/test/java/com/orientechnologies/orient/core/storage/impl/local/paginated/StorageBackupMTStateTest.java
@@ -7,8 +7,11 @@
 import com.orientechnologies.orient.core.config.OGlobalConfiguration;
 import com.orientechnologies.orient.core.db.ODatabaseDocumentInternal;
 import com.orientechnologies.orient.core.db.ODatabasePool;
+import com.orientechnologies.orient.core.db.ODatabaseType;
+import com.orientechnologies.orient.core.db.OrientDB;
+import com.orientechnologies.orient.core.db.OrientDBConfig;
+import com.orientechnologies.orient.core.db.OrientDBInternal;
 import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.db.record.ridbag.ORidBag;
 import com.orientechnologies.orient.core.db.tool.ODatabaseCompare;
 import com.orientechnologies.orient.core.exception.OConcurrentModificationException;
@@ -85,19 +88,26 @@ public void testRun() throws Exception {
     dbURL = "plocal:" + dbDirectory;
 
     System.out.println("Create database");
-    ODatabaseDocumentInternal databaseDocumentTx = new ODatabaseDocumentTx(dbURL);
-    databaseDocumentTx.create();
-
+    OrientDB ctx = new OrientDB("embedded:" + buildDirectory, OrientDBConfig.defaultConfig());
+    ctx.execute(
+            "create database "
+                + StorageBackupMTStateTest.class.getSimpleName()
+                + " plocal users(admin identified by 'adminpwd' role admin)")
+        .close();
+    ODatabaseDocumentInternal database =
+        (ODatabaseDocumentInternal)
+            ctx.open(StorageBackupMTStateTest.class.getSimpleName(), "admin", "adminpwd");
     System.out.println("Create schema");
-    final OSchema schema = databaseDocumentTx.getMetadata().getSchema();
+    final OSchema schema = database.getMetadata().getSchema();
 
     for (int i = 0; i < 3; i++) {
       createClass(schema);
     }
 
-    databaseDocumentTx.close();
+    database.close();
 
-    pool = new ODatabasePool(dbURL, "admin", "admin");
+    pool =
+        new ODatabasePool(ctx, StorageBackupMTStateTest.class.getSimpleName(), "admin", "adminpwd");
 
     System.out.println("Start data modification");
     final ExecutorService executor = Executors.newFixedThreadPool(5);
@@ -149,32 +159,38 @@ public void testRun() throws Exception {
     pool.close();
 
     System.out.println("Final incremental  backup");
-    databaseDocumentTx = new ODatabaseDocumentTx(dbURL);
-    databaseDocumentTx.open("admin", "admin");
-    databaseDocumentTx.incrementalBackup(backupDir.getAbsolutePath());
 
-    OStorage storage = ((ODatabaseDocumentInternal) databaseDocumentTx).getStorage();
-    databaseDocumentTx.close();
+    database =
+        (ODatabaseDocumentInternal)
+            ctx.open(StorageBackupMTStateTest.class.getSimpleName(), "admin", "adminpwd");
+    database.incrementalBackup(backupDir.getAbsolutePath());
+
+    OStorage storage = ((ODatabaseDocumentInternal) database).getStorage();
+    database.close();
 
     storage.shutdown();
 
     System.out.println("Create backup database");
-    final ODatabaseDocumentInternal backedUpDb =
-        new ODatabaseDocumentTx("plocal:" + backedUpDbDirectory);
-    backedUpDb.create(backupDir.getAbsolutePath());
-
-    final OStorage backupStorage = ((ODatabaseDocumentInternal) backedUpDb).getStorage();
-    backedUpDb.close();
-
-    backupStorage.shutdown();
+    OrientDBInternal internal = OrientDBInternal.extract(ctx);
+    internal.restore(
+        StorageBackupMTStateTest.class.getSimpleName() + "BackUp",
+        null,
+        null,
+        ODatabaseType.PLOCAL,
+        backupDir.getAbsolutePath(),
+        OrientDBConfig.defaultConfig());
 
     System.out.println("Compare databases");
-    databaseDocumentTx.open("admin", "admin");
-    backedUpDb.open("admin", "admin");
+    database =
+        (ODatabaseDocumentInternal)
+            ctx.open(StorageBackupMTStateTest.class.getSimpleName(), "admin", "admin");
+    ODatabaseDocumentInternal backedUpDb =
+        (ODatabaseDocumentInternal)
+            ctx.open(StorageBackupMTStateTest.class.getSimpleName() + "BackUp", "admin", "admin");
 
     final ODatabaseCompare compare =
         new ODatabaseCompare(
-            databaseDocumentTx,
+            database,
             backedUpDb,
             new OCommandOutputListener() {
               @Override
@@ -187,11 +203,8 @@ public void onMessage(String iText) {
 
     System.out.println("Drop databases and backup directory");
 
-    databaseDocumentTx.open("admin", "admin");
-    databaseDocumentTx.drop();
-
-    backedUpDb.open("admin", "admin");
-    backedUpDb.drop();
+    ctx.drop(StorageBackupMTStateTest.class.getSimpleName());
+    ctx.drop(StorageBackupMTStateTest.class.getSimpleName() + "BackUp");
 
     OFileUtils.deleteRecursively(backupDir);
   }
@@ -342,7 +355,7 @@ protected void insertRecord(ODatabaseDocument db) {
       }
 
       doc.field("linkedDocuments", linkedDocuments);
-      doc.save();
+      db.save(doc);
 
       if (docId % 10000 == 0) {
         System.out.println(docId + " documents of class " + className + " were inserted");
@@ -353,8 +366,7 @@ protected void insertRecord(ODatabaseDocument db) {
   private final class IncrementalBackupThread implements Runnable {
     @Override
     public void run() {
-      ODatabaseDocument db = new ODatabaseDocumentTx(dbURL);
-      db.open("admin", "admin");
+      ODatabaseDocument db = pool.acquire();
       try {
         flowLock.acquireReadLock();
         try {
@@ -375,8 +387,7 @@ public void run() {
   private final class ClassAdder implements Runnable {
     @Override
     public void run() {
-      ODatabaseDocument databaseDocumentTx = new ODatabaseDocumentTx(dbURL);
-      databaseDocumentTx.open("admin", "admin");
+      ODatabaseDocument databaseDocumentTx = pool.acquire();
       try {
         flowLock.acquireReadLock();
         try {
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/AbstractServerClusterTest.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/AbstractServerClusterTest.java
index 75693fc1061..dfe041e744a 100755
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/AbstractServerClusterTest.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/AbstractServerClusterTest.java
@@ -26,7 +26,6 @@
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
 import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.id.ORID;
 import com.orientechnologies.orient.core.record.OVertex;
 import com.orientechnologies.orient.core.record.impl.ODocument;
@@ -59,8 +58,6 @@ public abstract class AbstractServerClusterTest {
   protected final List<ServerRun> serverInstance = new ArrayList<ServerRun>();
 
   public void init(final int servers) {
-    ODatabaseDocumentTx.closeAll();
-
     Orient.setRegisterDatabaseByPath(true);
     for (int i = 0; i < servers; ++i) serverInstance.add(new ServerRun(rootDirectory, "" + i));
   }
@@ -95,7 +92,6 @@ public void execute() throws Exception {
         else server.shutdownServer();
       }
 
-      ODatabaseDocumentTx.closeAll();
       onTestEnded();
 
       banner("Terminate HZ...");
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/BasicSyncIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/BasicSyncIT.java
index 429ceabaf5f..00d3aecad59 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/BasicSyncIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/BasicSyncIT.java
@@ -5,8 +5,9 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
-import com.orientechnologies.orient.setup.*;
+import com.orientechnologies.orient.setup.SetupConfig;
+import com.orientechnologies.orient.setup.TestSetup;
+import com.orientechnologies.orient.setup.TestSetupUtil;
 import com.orientechnologies.orient.setup.configs.SimpleDServerConfig;
 import org.junit.After;
 import org.junit.Before;
@@ -80,7 +81,6 @@ public void after() {
       remote.close();
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/ConcurrentIndexDefinitionIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/ConcurrentIndexDefinitionIT.java
index 44c4adcfee2..5683afbe136 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/ConcurrentIndexDefinitionIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/ConcurrentIndexDefinitionIT.java
@@ -6,7 +6,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
 import com.orientechnologies.orient.core.metadata.schema.OType;
 import com.orientechnologies.orient.setup.SetupConfig;
@@ -98,6 +97,5 @@ public void after() {
     } finally {
       setup.teardown();
     }
-    ODatabaseDocumentTx.closeAll();
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/DistributedDatabaseImportIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/DistributedDatabaseImportIT.java
index a88e1545485..9185ca3d5b3 100755
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/DistributedDatabaseImportIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/DistributedDatabaseImportIT.java
@@ -5,7 +5,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseDocumentInternal;
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.db.tool.ODatabaseExport;
 import com.orientechnologies.orient.core.db.tool.ODatabaseImport;
 import com.orientechnologies.orient.setup.LocalTestSetup;
@@ -73,7 +72,6 @@ public void after() {
       setup.teardown();
       File file = new File(exportFileName);
       if (file.exists()) file.delete();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/OrientdbEdgeIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/OrientdbEdgeIT.java
index 31218d6a9a4..7eb66054ee0 100755
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/OrientdbEdgeIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/OrientdbEdgeIT.java
@@ -30,7 +30,6 @@
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
 import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.exception.OSchemaException;
 import com.orientechnologies.orient.core.record.ODirection;
 import com.orientechnologies.orient.core.record.OEdge;
@@ -59,8 +58,6 @@ public OrientdbEdgeIT() {}
   public static void tearDownClass() {
     if (server != null) server.shutdown();
 
-    ODatabaseDocumentTx.closeAll();
-
     Orient.instance().shutdown();
     Orient.instance().startup();
 
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/ReverseStartSyncIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/ReverseStartSyncIT.java
index c09d2cd6289..042c494ae02 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/ReverseStartSyncIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/ReverseStartSyncIT.java
@@ -5,7 +5,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.setup.SetupConfig;
 import com.orientechnologies.orient.setup.TestSetup;
 import com.orientechnologies.orient.setup.TestSetupUtil;
@@ -84,7 +83,6 @@ public void after() {
       remote.close();
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleConnectionStrategiesIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleConnectionStrategiesIT.java
index e6c82417030..37e86d3ccfe 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleConnectionStrategiesIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleConnectionStrategiesIT.java
@@ -13,7 +13,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.setup.LocalTestSetup;
 import com.orientechnologies.orient.setup.ServerRun;
 import com.orientechnologies.orient.setup.SetupConfig;
@@ -55,7 +54,6 @@ public static void after() throws InterruptedException {
     remote.close();
 
     setup.teardown();
-    ODatabaseDocumentTx.closeAll();
   }
 
   @Test
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleDDLRestartDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleDDLRestartDistributedIT.java
index 76232bd8131..43a264d42d9 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleDDLRestartDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleDDLRestartDistributedIT.java
@@ -3,7 +3,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.sql.executor.OResultSet;
 import com.orientechnologies.orient.setup.TestSetup;
 import com.orientechnologies.orient.setup.TestSetupUtil;
@@ -53,6 +52,5 @@ public void after() throws InterruptedException {
     remote.drop("test");
     remote.close();
     setup.teardown();
-    ODatabaseDocumentTx.closeAll();
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleDistributedMetadataFetchIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleDistributedMetadataFetchIT.java
index 61b61ee4490..997bdfe1a68 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleDistributedMetadataFetchIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleDistributedMetadataFetchIT.java
@@ -6,7 +6,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.sql.executor.OResultSet;
 import com.orientechnologies.orient.setup.SetupConfig;
 import com.orientechnologies.orient.setup.TestSetup;
@@ -57,7 +56,6 @@ public void after() throws InterruptedException {
       }
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleIndexDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleIndexDistributedIT.java
index fed969dc0f2..5de225ff09d 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleIndexDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleIndexDistributedIT.java
@@ -5,7 +5,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
 import com.orientechnologies.orient.core.metadata.schema.OType;
 import com.orientechnologies.orient.core.record.OElement;
@@ -71,7 +70,6 @@ public void after() throws InterruptedException {
       remote.close();
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleIndexFailDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleIndexFailDistributedIT.java
index df5616d112d..6be6fb94d35 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleIndexFailDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleIndexFailDistributedIT.java
@@ -3,7 +3,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
 import com.orientechnologies.orient.core.metadata.schema.OClass.INDEX_TYPE;
 import com.orientechnologies.orient.core.metadata.schema.OProperty;
@@ -64,7 +63,6 @@ public void after() throws InterruptedException {
       remote.close();
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleLiveQueryDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleLiveQueryDistributedIT.java
index 5b28c055418..a5d2248312d 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleLiveQueryDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleLiveQueryDistributedIT.java
@@ -4,9 +4,12 @@
 
 import com.orientechnologies.common.exception.OException;
 import com.orientechnologies.orient.core.config.OGlobalConfiguration;
-import com.orientechnologies.orient.core.db.*;
+import com.orientechnologies.orient.core.db.ODatabaseSession;
+import com.orientechnologies.orient.core.db.OLiveQueryMonitor;
+import com.orientechnologies.orient.core.db.OLiveQueryResultListener;
+import com.orientechnologies.orient.core.db.OrientDB;
+import com.orientechnologies.orient.core.db.OrientDBConfig;
 import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.record.OElement;
 import com.orientechnologies.orient.core.sql.executor.OResult;
 import com.orientechnologies.orient.setup.SetupConfig;
@@ -74,7 +77,6 @@ public void testLiveQueryDifferentNode() throws InterruptedException {
   @After
   public void after() throws InterruptedException {
     setup.teardown();
-    ODatabaseDocumentTx.closeAll();
   }
 
   private static class EventListener implements OLiveQueryResultListener {
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleQueryDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleQueryDistributedIT.java
index b700fbd44b8..6bee44e9742 100755
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleQueryDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleQueryDistributedIT.java
@@ -7,7 +7,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
 import com.orientechnologies.orient.core.record.OVertex;
 import com.orientechnologies.orient.core.sql.executor.OResult;
@@ -89,7 +88,6 @@ public void after() throws InterruptedException {
       }
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleUniqueIndexDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleUniqueIndexDistributedIT.java
index bc3ec664f2b..ea73b61c60c 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleUniqueIndexDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleUniqueIndexDistributedIT.java
@@ -5,7 +5,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
 import com.orientechnologies.orient.core.metadata.schema.OType;
 import com.orientechnologies.orient.core.record.OEdge;
@@ -81,7 +80,6 @@ public void after() throws InterruptedException {
       remote.close();
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleUpdatePasswordDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleUpdatePasswordDistributedIT.java
index 5faf07f1163..1bdef883f82 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleUpdatePasswordDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleUpdatePasswordDistributedIT.java
@@ -5,7 +5,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.sql.executor.OResultSet;
 import com.orientechnologies.orient.setup.TestSetup;
 import com.orientechnologies.orient.setup.TestSetupUtil;
@@ -54,6 +53,5 @@ public void after() throws InterruptedException {
     } finally {
       setup.teardown();
     }
-    ODatabaseDocumentTx.closeAll();
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleViewDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleViewDistributedIT.java
index 015d97347d2..cf13b1df34b 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleViewDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/SimpleViewDistributedIT.java
@@ -3,8 +3,9 @@
 import static org.junit.Assert.assertEquals;
 
 import com.orientechnologies.orient.core.config.OGlobalConfiguration;
-import com.orientechnologies.orient.core.db.*;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
+import com.orientechnologies.orient.core.db.ODatabaseSession;
+import com.orientechnologies.orient.core.db.OrientDB;
+import com.orientechnologies.orient.core.db.OrientDBConfig;
 import com.orientechnologies.orient.core.record.OElement;
 import com.orientechnologies.orient.core.sql.executor.OResultSet;
 import com.orientechnologies.orient.setup.SetupConfig;
@@ -67,6 +68,5 @@ public void testLiveQueryDifferentNode() throws InterruptedException {
   @After
   public void after() throws InterruptedException {
     setup.teardown();
-    ODatabaseDocumentTx.closeAll();
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/UniqueCompositeIndexDistributedIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/UniqueCompositeIndexDistributedIT.java
index 380b39290d6..af09457a75f 100755
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/UniqueCompositeIndexDistributedIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/UniqueCompositeIndexDistributedIT.java
@@ -6,7 +6,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.index.OIndex;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
 import com.orientechnologies.orient.core.metadata.schema.OType;
@@ -101,7 +100,6 @@ public void after() throws InterruptedException {
       remote.close();
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/asynch/BareBoneBase1ClientTest.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/asynch/BareBoneBase1ClientTest.java
index 5257128060d..f2d93b7ecab 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/asynch/BareBoneBase1ClientTest.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/asynch/BareBoneBase1ClientTest.java
@@ -2,7 +2,6 @@
 
 import com.orientechnologies.common.io.OFileUtils;
 import com.orientechnologies.orient.core.Orient;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import java.io.File;
 import junit.framework.TestCase;
 
@@ -31,7 +30,6 @@ public void setUp() {
 
   @Override
   protected void tearDown() throws Exception {
-    ODatabaseDocumentTx.closeAll();
     OFileUtils.deleteRecursively(new File(DB1_DIR));
   }
 
diff --git a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/tx/ClusterGraphTxWriteIT.java b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/tx/ClusterGraphTxWriteIT.java
index 324203aeb5e..fbdcb1cfd62 100644
--- a/distributed/src/test/java/com/orientechnologies/orient/server/distributed/tx/ClusterGraphTxWriteIT.java
+++ b/distributed/src/test/java/com/orientechnologies/orient/server/distributed/tx/ClusterGraphTxWriteIT.java
@@ -7,7 +7,6 @@
 import com.orientechnologies.orient.core.db.ODatabaseSession;
 import com.orientechnologies.orient.core.db.OrientDB;
 import com.orientechnologies.orient.core.db.OrientDBConfig;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
 import com.orientechnologies.orient.core.metadata.schema.OClass;
 import com.orientechnologies.orient.core.metadata.schema.OType;
 import com.orientechnologies.orient.core.sql.executor.OResultSet;
@@ -15,7 +14,13 @@
 import com.orientechnologies.orient.setup.TestSetup;
 import com.orientechnologies.orient.setup.TestSetupUtil;
 import com.orientechnologies.orient.setup.configs.SimpleDServerConfig;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -260,7 +265,6 @@ public void after() {
       }
     } finally {
       setup.teardown();
-      ODatabaseDocumentTx.closeAll();
     }
   }
 }
diff --git a/tests/src/test/java/com/orientechnologies/orient/test/database/auto/DbCreationTest.java b/tests/src/test/java/com/orientechnologies/orient/test/database/auto/DbCreationTest.java
index 0c68bcd90ef..41a3214d8d6 100755
--- a/tests/src/test/java/com/orientechnologies/orient/test/database/auto/DbCreationTest.java
+++ b/tests/src/test/java/com/orientechnologies/orient/test/database/auto/DbCreationTest.java
@@ -18,12 +18,7 @@
 import com.orientechnologies.orient.client.db.ODatabaseHelper;
 import com.orientechnologies.orient.core.Orient;
 import com.orientechnologies.orient.core.db.ODatabase;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
-import com.orientechnologies.orient.core.exception.ODatabaseException;
-import com.orientechnologies.orient.core.exception.OStorageException;
 import com.orientechnologies.orient.object.db.OObjectDatabaseTx;
-import java.io.File;
 import java.io.IOException;
 import java.util.Locale;
 import org.testng.Assert;
@@ -74,34 +69,6 @@ public void testDbCreationDefault() throws IOException {
   }
 
   @Test(dependsOnMethods = {"testDbCreationDefault"})
-  public void testDbExists() throws IOException {
-    Assert.assertTrue(
-        ODatabaseHelper.existsDatabase(new ODatabaseDocumentTx(url), getStorageType()));
-  }
-
-  @Test(dependsOnMethods = {"testDbExists"})
-  public void testDbOpen() {
-    database = new OObjectDatabaseTx(url);
-    database.open("admin", "admin");
-    Assert.assertNotNull(database.getName());
-    database.close();
-  }
-
-  @Test(dependsOnMethods = {"testDbOpen"})
-  public void testDbOpenWithLastAsSlash() {
-    database = new OObjectDatabaseTx(url + "/");
-    database.open("admin", "admin");
-    database.close();
-  }
-
-  @Test(dependsOnMethods = {"testDbOpenWithLastAsSlash"})
-  public void testDbOpenWithBackSlash() {
-    database = new OObjectDatabaseTx(url.replace('/', '\\'));
-    database.open("admin", "admin");
-    database.close();
-  }
-
-  @Test(dependsOnMethods = {"testDbOpenWithBackSlash"})
   public void testChangeLocale() throws IOException {
     reopendb("admin", "admin");
     database.command(" ALTER DATABASE LOCALELANGUAGE  ?", Locale.GERMANY.getLanguage()).close();
@@ -118,114 +85,4 @@ public void testChangeLocale() throws IOException {
     Assert.assertEquals(
         database.get(ODatabase.ATTRIBUTES.LOCALELANGUAGE), Locale.ENGLISH.getLanguage());
   }
-
-  @Test(dependsOnMethods = {"testChangeLocale"})
-  public void testRoles() throws IOException {
-    database.query("select from ORole where name = 'admin'").close();
-  }
-
-  @Test(dependsOnMethods = {"testChangeLocale"})
-  public void testSubFolderDbCreate() throws IOException {
-    int pos = url.lastIndexOf("/");
-
-    final String u;
-    if (pos > -1) u = url.substring(0, pos) + "/sub/subTest";
-    else {
-      pos = url.lastIndexOf(":");
-      u = url.substring(0, pos + 1) + "sub/subTest";
-    }
-
-    ODatabaseDocument db = new ODatabaseDocumentTx(u);
-
-    ODatabaseHelper.dropDatabase(db, getStorageType());
-    ODatabaseHelper.createDatabase(db, u, getStorageType());
-    db.open("admin", "admin");
-    db.close();
-
-    ODatabaseHelper.dropDatabase(db, getStorageType());
-  }
-
-  @Test(dependsOnMethods = {"testChangeLocale"})
-  public void testSubFolderMultipleDbCreateSameName() throws IOException {
-    int pos = url.lastIndexOf("/");
-    String u = url;
-
-    if (pos > -1) u = url.substring(0, pos);
-    else {
-      pos = url.lastIndexOf(":");
-      u = url.substring(0, pos + 1);
-    }
-
-    for (int i = 0; i < 3; ++i) {
-      String ur = u + "/" + i + "$db";
-      ODatabaseDocument db = new ODatabaseDocumentTx(ur);
-
-      try {
-        ODatabaseHelper.dropDatabase(db, getStorageType());
-      } catch (OStorageException e) {
-        Assert.assertTrue(e.getCause().getMessage().contains("doesn't exits."));
-      }
-      ODatabaseHelper.createDatabase(db, ur, getStorageType());
-      Assert.assertTrue(ODatabaseHelper.existsDatabase(db, getStorageType()));
-      db.open("admin", "admin");
-    }
-
-    for (int i = 0; i < 3; ++i) {
-      String ur = u + "/" + i + "$db";
-      ODatabaseDocument db = new ODatabaseDocumentTx(ur);
-      Assert.assertTrue(ODatabaseHelper.existsDatabase(db, getStorageType()));
-      db.activateOnCurrentThread();
-      ODatabaseHelper.dropDatabase(db, getStorageType());
-      Assert.assertFalse(ODatabaseHelper.existsDatabase(db, getStorageType()));
-    }
-  }
-
-  public void testDbIsNotRemovedOnSecondTry() {
-    final String buildDirectory =
-        new File(System.getProperty("buildDirectory", ".")).getAbsolutePath();
-    final String dbPath =
-        buildDirectory + File.separator + this.getClass().getSimpleName() + "Remove";
-    final String dburl = "plocal:" + dbPath;
-
-    ODatabaseDocument db = new ODatabaseDocumentTx(dburl);
-    db.create();
-    db.close();
-
-    Assert.assertTrue(new File(dbPath).exists());
-
-    final ODatabaseDocument dbTwo = new ODatabaseDocumentTx(dburl);
-    try {
-      dbTwo.create();
-      Assert.fail();
-    } catch (ODatabaseException e) {
-      // ignore all is correct
-    }
-
-    Assert.assertTrue(new File(dbPath).exists());
-
-    db = new ODatabaseDocumentTx(dburl);
-
-    db.open("admin", "admin");
-    db.drop();
-  }
-
-  public void testDbOutOfPath() throws IOException {
-    if (!url.startsWith("remote")) return;
-
-    // TRY UNIX PATH
-    try {
-      ODatabaseDocument db = new ODatabaseDocumentTx("remote:/db");
-      db.open("admin", "admin");
-      Assert.fail("Security breach: database with path /db was created");
-    } catch (Exception e) {
-    }
-
-    // TRY WINDOWS PATH
-    try {
-      ODatabaseDocument db = new ODatabaseDocumentTx("remote:C:/db");
-      db.open("admin", "admin");
-      Assert.fail("Security breach: database with path c:/db was created");
-    } catch (Exception e) {
-    }
-  }
 }
diff --git a/tests/src/test/java/com/orientechnologies/orient/test/database/auto/DbDeleteTest.java b/tests/src/test/java/com/orientechnologies/orient/test/database/auto/DbDeleteTest.java
index 90968ce91b2..3a15e97cecb 100755
--- a/tests/src/test/java/com/orientechnologies/orient/test/database/auto/DbDeleteTest.java
+++ b/tests/src/test/java/com/orientechnologies/orient/test/database/auto/DbDeleteTest.java
@@ -15,17 +15,6 @@
  */
 package com.orientechnologies.orient.test.database.auto;
 
-import com.orientechnologies.orient.client.db.ODatabaseHelper;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
-import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
-import com.orientechnologies.orient.core.exception.ODatabaseException;
-import com.orientechnologies.orient.core.exception.OStorageException;
-import com.orientechnologies.orient.core.metadata.schema.OClass;
-import com.orientechnologies.orient.core.metadata.schema.OType;
-import com.orientechnologies.orient.core.record.impl.ODocument;
-import java.io.File;
-import java.io.IOException;
-import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
@@ -62,60 +51,4 @@ public void beforeMethod() throws Exception {}
   @AfterMethod
   @Override
   public void afterMethod() throws Exception {}
-
-  public void testDbDeleteNoCredential() throws IOException {
-    ODatabaseDocument db = new ODatabaseDocumentTx(url);
-    try {
-      db.drop();
-      Assert.fail("Should have thrown ODatabaseException because trying to delete a not opened");
-    } catch (ODatabaseException e) {
-      Assert.assertTrue(e.getMessage().contains("Database '" + url + "' is closed"));
-    } catch (OStorageException e) {
-      Assert.assertTrue(e.getMessage().startsWith("Cannot delete the remote storage:"));
-    }
-  }
-
-  @Test(dependsOnMethods = {"testDbDeleteNoCredential"})
-  public void testDbDelete() throws IOException {
-    String prefix = url.substring(0, url.indexOf(':') + 1);
-    if (prefix.equals("memory:") || prefix.equals("remote:")) return;
-
-    ODatabaseDocument db =
-        new ODatabaseDocumentTx(prefix + testPath + "/" + DbImportExportTest.NEW_DB_URL);
-    if (!db.exists()) db.create();
-
-    if (db.exists()) {
-      if (db.isClosed()) db.open("admin", "admin");
-    }
-
-    ODatabaseHelper.dropDatabase(db, getStorageType());
-
-    Assert.assertFalse(new File(testPath + "/" + DbImportExportTest.NEW_DB_PATH).exists());
-  }
-
-  public void testDbDeleteWithIndex() {
-    String prefix = url.substring(0, url.indexOf(':') + 1);
-    if (prefix.equals("remote:")) return;
-
-    ODatabaseDocument db =
-        new ODatabaseDocumentTx(prefix + testPath + "/" + DbImportExportTest.NEW_DB_URL);
-    if (!db.exists()) db.create();
-
-    if (db.exists()) {
-      if (db.isClosed()) db.open("admin", "admin");
-
-      db.drop();
-      db.create();
-    }
-
-    final OClass indexedClass = db.getMetadata().getSchema().createClass("IndexedClass");
-    indexedClass.createProperty("value", OType.STRING);
-    indexedClass.createIndex("indexValue", OClass.INDEX_TYPE.UNIQUE, "value");
-
-    final ODocument document = new ODocument("IndexedClass");
-    document.field("value", "value");
-    document.save();
-
-    db.drop();
-  }
 }
diff --git a/tests/src/test/java/com/orientechnologies/orient/test/database/auto/ObjectDBBaseTest.java b/tests/src/test/java/com/orientechnologies/orient/test/database/auto/ObjectDBBaseTest.java
index e2c83fdc965..27aa9eeba44 100644
--- a/tests/src/test/java/com/orientechnologies/orient/test/database/auto/ObjectDBBaseTest.java
+++ b/tests/src/test/java/com/orientechnologies/orient/test/database/auto/ObjectDBBaseTest.java
@@ -63,7 +63,7 @@ protected void dropAndCreateDatabase(String suffix) throws IOException {
   }
 
   protected void reopendb(String user, String password) {
-    if (!database.isClosed() && !database.isActiveOnCurrentThread()) {
+    if (database == null || !database.isClosed() && !database.isActiveOnCurrentThread()) {
       database = new OObjectDatabaseTx(this.url);
     }
     database.open(user, password);
diff --git a/tests/src/test/java/com/orientechnologies/orient/test/database/auto/ServerTest.java b/tests/src/test/java/com/orientechnologies/orient/test/database/auto/ServerTest.java
index d6163216336..45e36b8af0f 100755
--- a/tests/src/test/java/com/orientechnologies/orient/test/database/auto/ServerTest.java
+++ b/tests/src/test/java/com/orientechnologies/orient/test/database/auto/ServerTest.java
@@ -38,11 +38,6 @@ public ServerTest(@Optional String url) {
     serverURL = url.substring(0, url.lastIndexOf('/'));
   }
 
-  @Test
-  public void testDbExists() throws IOException {
-    Assert.assertTrue(ODatabaseHelper.existsDatabase(url));
-  }
-
   @Test
   public void testDbList() throws IOException {
     OServerAdmin server = new OServerAdmin(serverURL);