diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
index 47830fa04aa1dc4fd2fe77ed45f2f9e80445b3a9..d5fe2d712bbecd5758e18f226cc8ab78ffeb285f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
@@ -467,6 +467,20 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer
                     + ".");
         }
     }
+    
+    synchronized public void deleteDataSet(String dataSetCode, String reason)
+            throws UserFailureException
+    {
+        checkSessionToken();
+        try
+        {
+            service.deleteDataSet(sessionToken, dataSetCode, reason);
+        } catch (final InvalidSessionException ex)
+        {
+            authenticate();
+            service.deleteDataSet(sessionToken, dataSetCode, reason);
+        }
+    }
 
     synchronized public final void updateDataSet(String code, List<NewProperty> properties,
             SpaceIdentifier space) throws UserFailureException
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
index 5d412002e5d931e50ff2fb17d81abb9a5839343c..a37aea5cde222f4197e80cce525ca7271846af6b 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
@@ -164,6 +164,13 @@ public interface IEncapsulatedOpenBISService
      */
     public void registerDataSet(final DataSetInformation dataSetInformation,
             final NewExternalData data) throws UserFailureException;
+    
+    /**
+     * Deletes specified data set if it exists.
+     * 
+     * @param reason for deletion.
+     */
+    public void deleteDataSet(String dataSetCode, String reason) throws UserFailureException;
 
     /**
      * Tries to return the properties of the top sample (e.g. master plate) registered for the