diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/DssRegistrationLogger.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/DssRegistrationLogger.java
index 094bbae4c2c215bd67191e1387327bfa8bde4155..41df6f18f3afadd46abbaa56392ccd01dd4156df 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/DssRegistrationLogger.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/DssRegistrationLogger.java
@@ -29,17 +29,18 @@ import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.ITimeProvider;
 import ch.systemsx.cisd.common.utilities.SystemTimeProvider;
+import ch.systemsx.cisd.etlserver.registrator.api.v2.IDSSRegistrationLogger;
 
 /**
  * Interface for logging into the dss registration log.
  * 
  * @author Chandrasekhar Ramakrishnan
  */
-public class DssRegistrationLogger
+public class DssRegistrationLogger implements IDSSRegistrationLogger
 {
     private static final Logger notificationLog = LogFactory.getLogger(LogCategory.NOTIFY,
             DssRegistrationLogger.class);
-    
+
     private File file;
 
     private final DssRegistrationLogDirectoryHelper helper;
@@ -115,36 +116,42 @@ public class DssRegistrationLogger
         FileUtilities.appendToFile(file, logMessage.toString(), false);
     }
 
+    @Override
     public void info(Logger logger, String message)
     {
         logger.info(message);
         log(message);
     }
 
+    @Override
     public void warn(Logger logger, String message)
     {
         logger.warn(message);
         log(message);
     }
 
+    @Override
     public void error(Logger logger, String message)
     {
         logger.error(message);
         log(message);
     }
 
+    @Override
     public void info(Logger logger, String message, Throwable ex)
     {
         logger.info(message, ex);
         log(ex, message);
     }
 
+    @Override
     public void warn(Logger logger, String message, Throwable ex)
     {
         logger.warn(message, ex);
         log(ex, message);
     }
 
+    @Override
     public void error(Logger logger, String message, Throwable ex)
     {
         logger.error(message, ex);
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java
index 0bb3418bfdb56c1b71311ce297ca2b48eff5aed5..5764add123708908c114b850ff14ad50eddb82ef 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java
@@ -407,4 +407,9 @@ public class DataSetRegistrationTransactionV2Delegate implements IDataSetRegistr
         return transaction.createNewLink(dst, dstInDataset, linkName, linkTarget);
     }
 
+    @Override
+    public IDSSRegistrationLogger getLogger()
+    {
+        return transaction.getLogger();
+    }
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java
index b46b314ae936463bdfdd8d987cd742c85473ec68..4de166aeaef64814cae1c2bd3d2610b96b7db2f0 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java
@@ -471,4 +471,8 @@ public interface IDataSetRegistrationTransactionV2
      */
     List<IAttachmentImmutable> listAttachments(ISampleImmutable sample);
 
+    /**
+     * Returns the logger object that logs messages to openbis operation log and data store server registration logs.
+     */
+    IDSSRegistrationLogger getLogger();
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/DataSetRegistrationTransaction.java
index ff06456e27ad6d9276564f76166fd193f3aee4b7..dd94e5215edefd364596e2738fed0e76eb806f6a 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/DataSetRegistrationTransaction.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/impl/DataSetRegistrationTransaction.java
@@ -46,6 +46,7 @@ import ch.systemsx.cisd.etlserver.registrator.IEntityOperationService;
 import ch.systemsx.cisd.etlserver.registrator.IncomingFileDeletedBeforeRegistrationException;
 import ch.systemsx.cisd.etlserver.registrator.api.impl.RollbackStack;
 import ch.systemsx.cisd.etlserver.registrator.api.impl.SecondaryTransactionFailure;
+import ch.systemsx.cisd.etlserver.registrator.api.v2.IDSSRegistrationLogger;
 import ch.systemsx.cisd.etlserver.registrator.api.v2.IDataSet;
 import ch.systemsx.cisd.etlserver.registrator.api.v2.IDataSetRegistrationTransactionV2;
 import ch.systemsx.cisd.etlserver.registrator.api.v2.IDataSetUpdatable;
@@ -239,6 +240,12 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
         dssRegistrationLog.info(operationLog, "Start registration");
     }
 
+    @Override
+    public IDSSRegistrationLogger getLogger()
+    {
+        return this.registrationService.getDssRegistrationLog();
+    }
+
     @Override
     public String getUserId()
     {