diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
index 3b1b0c4139de17ede390b669a9d0ee117603e0fd..ef0ea51e7c0f14e32535b55d78e1f22c19af9bd8 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
@@ -19,14 +19,12 @@ package ch.systemsx.cisd.openbis.generic.server;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.time.DateUtils;
 import org.hamcrest.core.IsEqual;
 import org.jmock.Expectations;
 import org.springframework.dao.DataIntegrityViolationException;
@@ -77,7 +75,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE;
@@ -706,25 +703,6 @@ public final class CommonServerTest extends AbstractServerTestCase
         context.assertIsSatisfied();
     }
 
-    private static DeletionPE createDeletion(String registrator, Date registrationDate,
-            String reason)
-    {
-        final DeletionPE result = new DeletionPE();
-        final PersonPE person = new PersonPE();
-        person.setUserId(registrator);
-        result.setRegistrator(person);
-        result.setRegistrationDate(registrationDate);
-        result.setReason(reason);
-        return result;
-    }
-
-    private static void assertEqualContent(DeletionPE deletionPE, Deletion deletion)
-    {
-        assertEquals(deletionPE.getReason(), deletion.getReason());
-        assertEquals(deletionPE.getRegistrationDate(), deletion.getRegistrationDate());
-        assertEquals(deletionPE.getRegistrator().getUserId(), deletion.getRegistrator().getUserId());
-    }
-
     @Test
     public void testListPropertyTypes()
     {
@@ -1678,24 +1656,22 @@ public final class CommonServerTest extends AbstractServerTestCase
         // tests listing, sorting by date and translation
         prepareGetSession();
 
-        Date currentDate = new Date();
-        final DeletionPE del1 = createDeletion("p1", DateUtils.addHours(currentDate, -1), "r1");
-        final DeletionPE del2 = createDeletion("p2", currentDate, "r2");
-        final DeletionPE del3 = createDeletion("p3", DateUtils.addDays(currentDate, 1), "r3");
-
+        final List<Deletion> deletions = new ArrayList<Deletion>();
         context.checking(new Expectations()
             {
                 {
-                    one(deletionDAO).listAllEntities();
-                    will(returnValue(Arrays.asList(del2, del1, del3)));
+                    one(commonBusinessObjectFactory).createDeletionTable(SESSION);
+                    will(returnValue(deletionTable));
+                    
+                    one(deletionTable).load(true);
+                    one(deletionTable).getDeletions();
+                    will(returnValue(deletions));
                 }
             });
-        List<Deletion> result = createServer().listDeletions(SESSION_TOKEN, false);
+        
+        List<Deletion> result = createServer().listDeletions(SESSION_TOKEN, true);
 
-        assertEquals(3, result.size());
-        assertEqualContent(del1, result.get(0));
-        assertEqualContent(del2, result.get(1));
-        assertEqualContent(del3, result.get(2));
+        assertSame(deletions, result);
         context.assertIsSatisfied();
     }
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DeletionDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DeletionDAOTest.java
index 597f5a2196e1d9cda71413a9e25c7278d05e8e43..378b0c1a19d1f17d3c643eeb7d8840a63d32b324 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DeletionDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DeletionDAOTest.java
@@ -170,7 +170,8 @@ public class DeletionDAOTest extends AbstractDAOTest
             String errorMsg =
                     String.format("sample with id %s is expected %s be deleted;", id,
                             expectedDeleted ? "to" : "not to");
-            assertEquals(errorMsg, expectedDeleted, sampleDAO.tryGetByTechId(id) == null);
+            assertEquals(errorMsg, expectedDeleted,
+                    sampleDAO.tryGetByTechId(id).getDeletion() != null);
         }
     }
 
@@ -182,7 +183,8 @@ public class DeletionDAOTest extends AbstractDAOTest
             String errorMsg =
                     String.format("experiment with id %s is expected %s be deleted;", id,
                             expectedDeleted ? "to" : "not to");
-            assertEquals(errorMsg, expectedDeleted, experimentDAO.tryGetByTechId(id) == null);
+            assertEquals(errorMsg, expectedDeleted,
+                    experimentDAO.tryGetByTechId(id).getDeletion() != null);
         }
     }
 
@@ -194,7 +196,8 @@ public class DeletionDAOTest extends AbstractDAOTest
             String errorMsg =
                     String.format("data set '%s' is expected %s be deleted;", code,
                             expectedDeleted ? "to" : "not to");
-            assertEquals(errorMsg, expectedDeleted, dataDAO.tryToFindDataSetByCode(code) == null);
+            assertEquals(errorMsg, expectedDeleted, dataDAO.tryToFindDataSetByCode(code)
+                    .getDeletion() != null);
         }
     }
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAOTest.java
index 04ddd1e7ab2fef9724d963474461bee750f05c05..e686273ca42c9825c9bc3a2a0d486f9585fa6ac4 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAOTest.java
@@ -127,7 +127,7 @@ public class ExperimentDAOTest extends AbstractDAOTest
         assertEquals(4, experiments.size());
         ExperimentPE exp1 = assertExperimentIdentifierPresent(CISD_CISD_NEMO_EXP1, experiments);
         List<DataPE> dataSets = exp1.getDataSets();
-        assertEquals(1, dataSets.size());
+        assertEquals(2, dataSets.size());
         assertExperimentIdentifierPresent(CISD_CISD_NEMO_EXP10, experiments);
         assertExperimentIdentifierPresent(CISD_CISD_NEMO_EXP11, experiments);
     }
@@ -230,7 +230,7 @@ public class ExperimentDAOTest extends AbstractDAOTest
                         templateExp.getCode());
 
         assertEquals(CISD_CISD_NEMO_EXP1, experiment.getIdentifier());
-        assertEquals(1, experiment.getDataSets().size()); // without deleted
+        assertEquals(2, experiment.getDataSets().size());
     }
 
     private final ExperimentPE findExperiment(String identifier)
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java
index 30aba1f8792dc4dc012bc76c48191eb1c7777aea..1b44ca232d977245d84fe34052f02f0851224f45 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java
@@ -36,6 +36,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.IPropertiesBatchManager;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IDataBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IDataSetTable;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IDeletedDataSetTable;
+import ch.systemsx.cisd.openbis.generic.server.business.bo.IDeletionTable;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypeBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypePropertyTypeBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO;
@@ -190,6 +191,8 @@ public abstract class AbstractServerTestCase extends AssertJUnit
 
     protected IPropertiesBatchManager propertiesBatchManager;
 
+    protected IDeletionTable deletionTable;
+
     @BeforeMethod
     @SuppressWarnings("unchecked")
     public void setUp()
@@ -232,6 +235,7 @@ public abstract class AbstractServerTestCase extends AssertJUnit
         entityTypePropertyTypeBO = context.mock(IEntityTypePropertyTypeBO.class);
         dataBO = context.mock(IDataBO.class);
         trashBO = context.mock(ITrashBO.class);
+        deletionTable = context.mock(IDeletionTable.class);
         // Table
         dataSetTable = context.mock(IDataSetTable.class);
         deletedDataSetTable = context.mock(IDeletedDataSetTable.class);
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected
index ad9ed6b7519bb08434824eb75f2c3e8aae2d6292..9f5ab5ca4fe927207dc2ecac42f7db7897884642 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected
@@ -1444,7 +1444,7 @@ public interface ICommonServer extends IServer
     @Transactional(readOnly = true)
     @RolesAllowed(RoleWithHierarchy.SPACE_USER)
     @ReturnValueFilter(validatorClass = DeletionValidator.class)
-    public List<Deletion> listDeletions(String sessionToken);
+    public List<Deletion> listDeletions(String sessionToken, boolean withDeletedEntities);
 
     /**
      * Reverts specified deletions (puts back all entities moved to trash in the deletions).