diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ConfigParameters.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ConfigParameters.java
index 7e18f337f646df7bbd51a58a94d6c4c35de5f14e..452fb0ce31728e1f6bc4c74d92726983540bbf47 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ConfigParameters.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ConfigParameters.java
@@ -157,9 +157,7 @@ public final class ConfigParameters implements IServletPropertiesManager
         dssRecoveryStateDir = DssPropertyParametersUtil.getDssRecoveryStateDir(properties);
         port = getMandatoryIntegerProperty(properties, PORT_KEY);
         serverURL = PropertyUtils.getMandatoryProperty(properties, SERVER_URL_KEY);
-
-        downloadURL = PropertyUtils.getProperty(properties, DOWNLOAD_URL, "");
-
+        downloadURL = PropertyUtils.getMandatoryProperty(properties, DOWNLOAD_URL);
         sessionTimeout = getMandatoryIntegerProperty(properties, SESSION_TIMEOUT_KEY) * 60;
         serverTimeoutInMinutes =
                 PropertyUtils.getInt(properties, SERVER_TIMEOUT_IN_MINUTES,
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 c6f1ec459c4656d74e55c702b7b7b63d98927042..ea2fb19f317ca8caf326ef0f9e5b888bd8d8292d 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
@@ -238,13 +238,13 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer
     }
 
     public EncapsulatedOpenBISService(IServiceForDataStoreServer service,
-            OpenBISSessionHolder sessionHolder)
+            OpenBISSessionHolder sessionHolder, String downloadUrl)
     {
-        this(service, sessionHolder, null);
+        this(service, sessionHolder, downloadUrl, null);
     }
 
     public EncapsulatedOpenBISService(IServiceForDataStoreServer service,
-            OpenBISSessionHolder sessionHolder, IShareIdManager shareIdManager)
+            OpenBISSessionHolder sessionHolder, String downloadUrl, IShareIdManager shareIdManager)
     {
         this.shareIdManager = shareIdManager;
         assert service != null : "Given IETLLIMSService implementation can not be null.";
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptor.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptor.java
index 67dba910624116540fba5cac448d90933f72f5a9..e3bc0bb06101f52366ece2d84b8d469b5e61b196 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptor.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/openbisauth/OpenBISAuthenticationInterceptor.java
@@ -24,6 +24,7 @@ import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException;
 import ch.systemsx.cisd.common.exceptions.InvalidSessionException;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.shared.basic.string.StringUtils;
 import ch.systemsx.cisd.common.spring.PropertyPlaceholderUtils;
 import ch.systemsx.cisd.openbis.dss.generic.server.ConfigParameters;
 import ch.systemsx.cisd.openbis.dss.generic.server.EncapsulatedOpenBISService;
@@ -31,6 +32,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.SessionTokenManager;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IPluginTaskInfoProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IDataSourceProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ManagedAuthentication;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.DssPropertyParametersUtil;
 import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatastoreServiceDescriptions;
@@ -143,6 +145,12 @@ public class OpenBISAuthenticationInterceptor implements MethodInterceptor
         dataStoreServerInfo.setPort(port);
         dataStoreServerInfo.setUseSSL(useSSL);
         dataStoreServerInfo.setDataStoreCode(sessionHolder.getDataStoreCode());
+        if (StringUtils.isBlank(downloadUrl))
+        {
+            final String msg =
+                    "'" + DssPropertyParametersUtil.DOWNLOAD_URL_KEY + "' has to be set.";
+            throw new ConfigurationFailureException(msg);
+        }
         dataStoreServerInfo.setDownloadUrl(downloadUrl);
         dataStoreServerInfo.setSessionToken(sessionTokenManager.drawSessionToken());
         dataStoreServerInfo.setServicesDescriptions(pluginTaskDescriptions);
@@ -193,7 +201,7 @@ public class OpenBISAuthenticationInterceptor implements MethodInterceptor
 
     public final void setDownloadUrl(String downloadUrl)
     {
-        this.downloadUrl = downloadUrl.equals("${download-url}") ? "" : downloadUrl;
+        this.downloadUrl = downloadUrl;
     }
 
     public void setTimeoutInMinutes(String timeoutInMinutes)
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/GenericDssLinkReportingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/GenericDssLinkReportingPlugin.java
index b422442993fb5cdb7d90c25f6a7a03f3bcd71579..b03b213868a522f0b043a4813bb85460e98e6203 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/GenericDssLinkReportingPlugin.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/GenericDssLinkReportingPlugin.java
@@ -62,13 +62,7 @@ public class GenericDssLinkReportingPlugin extends AbstractDssLinkReportingPlugi
     public GenericDssLinkReportingPlugin(Properties properties, File storeRoot)
     {
         super(properties, storeRoot);
-        if (PropertyUtils.getProperty(properties, DOWNLOAD_URL, "").equals("${download-url}"))
-        {
-            this.downloadUrl = "";
-        } else
-        {
-            this.downloadUrl = PropertyUtils.getProperty(properties, DOWNLOAD_URL, "");
-        }
+        this.downloadUrl = PropertyUtils.getMandatoryProperty(properties, DOWNLOAD_URL);
         this.regexOrNull = PropertyUtils.getProperty(properties, DATA_SET_REGEX);
         this.pathOrNull = PropertyUtils.getProperty(properties, DATA_SET_PATH);
     }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataStoreApiUrlUtilities.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataStoreApiUrlUtilities.java
index 0ec6f5122836ce279d213038ccdedcdab655b8e1..bd9908e215f765b06357de1eeaa7fc41f393c920 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataStoreApiUrlUtilities.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataStoreApiUrlUtilities.java
@@ -35,7 +35,6 @@ public class DataStoreApiUrlUtilities
      */
     public static String getDataStoreUrlFromDownloadUrl(String dataStoreDownloadUrl)
     {
-        dataStoreDownloadUrl = dataStoreDownloadUrl.equals("${download-url}") ? "" : dataStoreDownloadUrl;
         String datastoreUrl = dataStoreDownloadUrl;
 
         // The url objained form a DataStore object is the *download* url. Convert this to the
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
index 4fb76749ef8fa193728a59485cdd2b71b2261adf..cbf7939dac9cdef4a357dfa650c24e6cd0964b31 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
@@ -164,7 +164,7 @@ public class DssPropertyParametersUtil
 
     public static String getDownloadUrl(Properties serviceProperties)
     {
-        return PropertyUtils.getProperty(serviceProperties, DOWNLOAD_URL_KEY, "");
+        return PropertyUtils.getMandatoryProperty(serviceProperties, DOWNLOAD_URL_KEY);
     }
 
     public static int getDataStreamTimeout(Properties serviceProperties)
diff --git a/datastore_server/source/java/dssApplicationContext.xml b/datastore_server/source/java/dssApplicationContext.xml
index 3eece3f463cf2ea38649745356a279c23f6dc63d..4434f98b5b11f8f426b11881f459f369647175c0 100644
--- a/datastore_server/source/java/dssApplicationContext.xml
+++ b/datastore_server/source/java/dssApplicationContext.xml
@@ -97,6 +97,7 @@
     <bean id="openBIS-service" class="ch.systemsx.cisd.openbis.dss.generic.server.EncapsulatedOpenBISService">
        <constructor-arg ref="etl-lims-service"/>
        <constructor-arg ref="sessionHolder"/>
+       <constructor-arg value="${download-url}"/>
        <property name="conversationClient" ref="data-store-service-conversation-client-manager"/>
     </bean>
     
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java
index 6e59a3bb9b7dcaa7d2631d232a951fdf024c2165..0c767af6e1bb5e760d9e0b485d4ca825de1c8e48 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandlerTest.java
@@ -85,7 +85,8 @@ import ch.systemsx.cisd.openbis.util.LogRecordingUtils;
  * 
  * @author Franz-Josef Elmer
  */
-@Friend(toClasses = { TransferredDataSetHandler.class, DataSetRegistrationHelper.class,
+@Friend(toClasses =
+{ TransferredDataSetHandler.class, DataSetRegistrationHelper.class,
         IdentifiedDataStrategy.class, PluginTaskInfoProvider.class,
         DssPropertyParametersUtil.class })
 public final class TransferredDataSetHandlerTest extends AbstractFileSystemTestCase
@@ -280,7 +281,7 @@ public final class TransferredDataSetHandlerTest extends AbstractFileSystemTestC
         OpenBISSessionHolder sessionHolder = new OpenBISSessionHolder();
         sessionHolder.setSessionToken(SESSION_TOKEN);
         authorizedLimsService =
-                new EncapsulatedOpenBISService(limsService, sessionHolder, shareIdManager);
+                new EncapsulatedOpenBISService(limsService, sessionHolder, "", shareIdManager);
         dataSetValidator = context.mock(IDataSetValidator.class);
 
         Properties threadProperties = new Properties();
@@ -486,7 +487,8 @@ public final class TransferredDataSetHandlerTest extends AbstractFileSystemTestC
             final DataSetInformation dataSet, final String dataSetCode, final String recipient)
     {
         SampleIdentifier sampleIdentifier = dataSet.getSampleIdentifier();
-        String code = sampleIdentifier != null ? sampleIdentifier.getSampleCode() : dataSet.getExperimentIdentifier().getExperimentCode();
+        String code = sampleIdentifier != null ? sampleIdentifier.getSampleCode() :
+                dataSet.getExperimentIdentifier().getExperimentCode();
         expectations.one(mailClient).sendMessage(
                 String.format(DataSetRegistrationHelper.EMAIL_SUBJECT_TEMPLATE, code),
                 getNotificationEmailContent(dataSet, dataSetCode), null, null, recipient);
@@ -871,8 +873,7 @@ public final class TransferredDataSetHandlerTest extends AbstractFileSystemTestC
                 LogMonitoringAppender
                         .addAppender(
                                 LogCategory.OPERATION,
-                                Pattern.compile(
-                                        "P[0-9]+-\\{test-script.sh\\} had command line: \\[sourceTest/java/ch/systemsx/cisd/etlserver/utils/test-script.sh, 4711-42, .*/datastore_server/targets/unit-test-wd/ch.systemsx.cisd.etlserver.TransferredDataSetHandlerTest/data1\\]"),
+                                Pattern.compile("P[0-9]+-\\{test-script.sh\\} had command line: \\[sourceTest/java/ch/systemsx/cisd/etlserver/utils/test-script.sh, 4711-42, .*/datastore_server/targets/unit-test-wd/ch.systemsx.cisd.etlserver.TransferredDataSetHandlerTest/data1\\]"),
                                 Pattern.compile("P[0-9]+-\\{test-script.sh\\} process returned with exit value 1."));
 
         handler.handle(isFinishedData1);
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISServiceTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISServiceTest.java
index 44ec906232405e55355de340ac0e5033b9495290..4d9ba721a0c386c099a09f121124ea61108eaaeb 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISServiceTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISServiceTest.java
@@ -63,7 +63,7 @@ public class EncapsulatedOpenBISServiceTest
         shareIdManager = context.mock(IShareIdManager.class);
         session = new OpenBISSessionHolder();
         session.setSessionToken(SESSION_TOKEN);
-        encapsulatedLimsService = new EncapsulatedOpenBISService(limsService, session, shareIdManager);
+        encapsulatedLimsService = new EncapsulatedOpenBISService(limsService, session, "", shareIdManager);
     }
 
     @AfterMethod