diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServer.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServer.java
index 053780f7ebc55e0e47697c6a2d99f32e8a47777b..2fc887d48b8172d478478bbdefb866a93149f041 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServer.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServer.java
@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.dss.generic.server.ftp;
 import java.util.Properties;
 
 import org.apache.ftpserver.ConnectionConfigFactory;
+import org.apache.ftpserver.DataConnectionConfigurationFactory;
 import org.apache.ftpserver.FtpServerFactory;
 import org.apache.ftpserver.ftplet.FileSystemFactory;
 import org.apache.ftpserver.ftplet.FileSystemView;
@@ -83,6 +84,15 @@ public class FtpServer implements FileSystemFactory
             factory.setSslConfiguration(sslConfigFactory.createSslConfiguration());
             factory.setImplicitSsl(true);
         }
+
+        if (config.isActiveModeEnabled())
+        {
+            DataConnectionConfigurationFactory dccFactory =
+                    new DataConnectionConfigurationFactory();
+            dccFactory.setActiveEnabled(true);
+            dccFactory.setActiveLocalPort(config.getActiveLocalPort());
+            factory.setDataConnectionConfiguration(dccFactory.createDataConnectionConfiguration());
+        }
         serverFactory.addListener("default", factory.createListener());
 
         ConnectionConfigFactory connectionConfigFactory = new ConnectionConfigFactory();
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServerConfig.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServerConfig.java
index d94591cff99dcbf0122bce7e7d9bfd369b1e20ba..dd6ab4a9ec741b4560e69ae40d9510cf1e299313 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServerConfig.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServerConfig.java
@@ -55,8 +55,14 @@ public class FtpServerConfig
 
     final static String DATASET_FILELIST_FILTER_KEY = PREFIX + "dataset.filelist.filter.";
 
+    final static String ACTIVE_MODE_ENABLE_KEY = PREFIX + "activemode.enable";
+
+    final static String ACTIVE_PORT_KEY = PREFIX + "activemode.port";
+
     private static final int DEFAULT_PORT = 2121;
 
+    private static final int DEFAULT_ACTIVE_PORT = 2122;
+
     private static final boolean DEFAULT_USE_SSL = true;
 
     private static final int DEFAULT_MAX_THREADS = 25;
@@ -67,6 +73,10 @@ public class FtpServerConfig
 
     private int port;
 
+    private boolean activeModeEnabled;
+
+    private int activePort;
+
     private boolean useSSL;
 
     private File keyStore;
@@ -95,12 +105,14 @@ public class FtpServerConfig
 
     private void initializeProperties(Properties props)
     {
-        this.port = PropertyUtils.getPosInt(props, PORT_KEY, DEFAULT_PORT);
-        this.useSSL = PropertyUtils.getBoolean(props, USE_SSL_KEY, DEFAULT_USE_SSL);
+        port = PropertyUtils.getPosInt(props, PORT_KEY, DEFAULT_PORT);
+        useSSL = PropertyUtils.getBoolean(props, USE_SSL_KEY, DEFAULT_USE_SSL);
         if (useSSL)
         {
             initializeSSLProperties(props);
         }
+        activeModeEnabled = PropertyUtils.getBoolean(props, ACTIVE_MODE_ENABLE_KEY, false);
+        activePort = PropertyUtils.getPosInt(props, ACTIVE_PORT_KEY, DEFAULT_ACTIVE_PORT);
         maxThreads = PropertyUtils.getPosInt(props, MAX_THREADS_KEY, DEFAULT_MAX_THREADS);
         dataSetDisplayTemplate =
                 PropertyUtils.getProperty(props, DATASET_DISPLAY_TEMPLATE_KEY, DEFAULT_DATASET_TEMPLATE);
@@ -214,5 +226,14 @@ public class FtpServerConfig
         }
     }
 
+    public boolean isActiveModeEnabled()
+    {
+        return activeModeEnabled;
+    }
+
+    public int getActiveLocalPort()
+    {
+        return activePort;
+    }
 
 }