diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/ViewLocator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/ViewLocator.java
index 40611627d3d32e32e6ed94fe9d4ab7fa6220d2aa..d29e397e1fa74569628e15081efca224b94fc7fe 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/ViewLocator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/ViewLocator.java
@@ -137,30 +137,36 @@ public class ViewLocator
         for (int i = 0; i < params.length; i++)
         {
             final String[] paramPair = params[i].split(KEY_VALUE_SEPARATOR);
-            assert paramPair.length == 2 : "Incorrectly formatted URL parameters";
+            String paramName = paramPair.length > 0 ? paramPair[0] : null;
+            String paramValue = paramPair.length > 1 ? paramPair[1] : null;
+
             // TODO 2010-09-20, Piotr Buczek: use com.google.gwt.http.client.URL.decode, exchange
             // BasicURLEncoder with URL.encode
-            paramPair[1] = StringEscapeUtils.unescapeHtml(paramPair[1].replaceAll("%2F", "/"));
-            if (GWT_PARAMETER.equals(paramPair[0]))
+            if (paramValue != null)
+            {
+                paramValue = StringEscapeUtils.unescapeHtml(paramValue.replaceAll("%2F", "/"));
+            }
+
+            if (GWT_PARAMETER.equals(paramName))
             {
                 // skip GWT parameters -- only relevant during testing
-            } else if (ACTION_PARAMETER.equalsIgnoreCase(paramPair[0]))
+            } else if (ACTION_PARAMETER.equalsIgnoreCase(paramName))
             {
-                actionOrNull = paramPair[1];
-            } else if (ENTITY_PARAMETER.equalsIgnoreCase(paramPair[0]))
+                actionOrNull = paramValue;
+            } else if (ENTITY_PARAMETER.equalsIgnoreCase(paramName))
             {
-                entityOrNull = paramPair[1];
-            } else if (PERM_ID_PARAMETER.equalsIgnoreCase(paramPair[0]))
+                entityOrNull = paramValue;
+            } else if (PERM_ID_PARAMETER.equalsIgnoreCase(paramName))
             {
                 // Permlink URLs have an implied action
                 if (actionOrNull == null)
                 {
                     actionOrNull = PERMLINK_ACTION;
                 }
-                parameters.put(paramPair[0], paramPair[1]);
+                parameters.put(paramName, paramValue);
             } else
             {
-                parameters.put(paramPair[0], paramPair[1]);
+                parameters.put(paramName, paramValue);
             }
         }
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java
index 54e20f29cae102e0c7a6de54030fe85da21a2f65..9a33b7016682447642dc94a01042a3543393bc4b 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java
@@ -17,6 +17,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.u
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.dto.ExperimentIdentifierSearchCriteria;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.SingleExperimentSearchCriteria;
 
 /**
  * Material detail view for screening materials. Overrides {@link MaterialLocatorResolver}.
@@ -27,6 +28,8 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver
 {
     private final IViewContext<IScreeningClientServiceAsync> viewContext;
 
+    private static final String EMPTY_EXPERIMENT_IDENTIFIER = "";
+
     public ImagingMaterialLocatorResolver(IViewContext<IScreeningClientServiceAsync> viewContext)
     {
         super(viewContext.getCommonViewContext());
@@ -44,8 +47,7 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver
                 tryGetExperimentIdentifierSearchCriteria(locator);
 
         AnalysisProcedureCriteria analysisProcedureCriteria =
-                ScreeningResolverUtils.
-                extractAnalysisProcedureCriteria(locator);
+                ScreeningResolverUtils.extractAnalysisProcedureCriteria(locator);
 
         openInitialMaterialViewer(extractMaterialIdentifier(locator), experimentCriteriaOrNull,
                 analysisProcedureCriteria);
@@ -58,14 +60,24 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver
         String experimentIdentifierOrNull =
                 getOptionalParameter(locator,
                         ScreeningLinkExtractor.MATERIAL_DETAIL_EXPERIMENT_IDENT_PARAMETER_KEY);
-        if (experimentIdentifierOrNull != null)
+        boolean experimentIdentifierSpecified =
+                locator.getParameters().containsKey(
+                        ScreeningLinkExtractor.MATERIAL_DETAIL_EXPERIMENT_IDENT_PARAMETER_KEY);
+
+        if (experimentIdentifierSpecified)
         {
+            if (experimentIdentifierOrNull == null
+                    || experimentIdentifierOrNull.trim().length() == 0)
+            {
+                experimentIdentifierOrNull = EMPTY_EXPERIMENT_IDENTIFIER;
+            }
             boolean restrictGlobalSearchToProject =
                     getOptionalBooleanParameter(locator,
                             ScreeningLinkExtractor.RESTRICT_GLOBAL_SEARCH_TO_PROJECT, false);
             return ExperimentIdentifierSearchCriteria.createExperimentScope(
                     experimentIdentifierOrNull, restrictGlobalSearchToProject);
         }
+
         // project
         String space = getOptionalParameter(locator, ScreeningLinkExtractor.SPACE_CODE_KEY);
         String project = getOptionalParameter(locator, ScreeningLinkExtractor.PROJECT_CODE_KEY);
@@ -95,10 +107,10 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver
      */
     protected void openInitialMaterialViewer(MaterialIdentifier identifier,
             ExperimentIdentifierSearchCriteria experimentCriteriaOrNull,
-            AnalysisProcedureCriteria analysisProcedureCriteria)
-            throws UserFailureException
+            AnalysisProcedureCriteria analysisProcedureCriteria) throws UserFailureException
     {
-        viewContext.getCommonService().getMaterialInformationHolder(identifier,
+        viewContext.getCommonService().getMaterialInformationHolder(
+                identifier,
                 new OpenEntityDetailsTabCallback(viewContext, experimentCriteriaOrNull,
                         analysisProcedureCriteria));
     }
@@ -139,12 +151,21 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver
                 BasicProjectIdentifier project = scopeOrNull.tryGetProject();
                 if (experimentIdentifier != null)
                 {
-                    fetchExperimentAndShowLocations(material, experimentIdentifier);
+                    if (EMPTY_EXPERIMENT_IDENTIFIER.equals(experimentIdentifier))
+                    {
+                        openImagingMaterialViewer(material,
+                                ExperimentSearchCriteria.createExperiment(
+                                        SingleExperimentSearchCriteria.EMPTY_CRITERIA,
+                                        scopeOrNull.getRestrictGlobalSearchLinkToProject()));
+                    } else
+                    {
+                        fetchExperimentAndShowLocations(material, experimentIdentifier);
+                    }
+
                 } else if (project != null)
                 {
                     openImagingMaterialViewer(material,
-                            ExperimentSearchCriteria
-                                    .createAllExperimentsForProject(project));
+                            ExperimentSearchCriteria.createAllExperimentsForProject(project));
                 } else
                 {
                     openImagingMaterialViewer(material,
@@ -164,8 +185,7 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver
                             protected void process(Experiment experiment)
                             {
                                 ExperimentSearchCriteria experimentCriteria =
-                                        ExperimentSearchCriteria.createExperiment(
-                                                experiment,
+                                        ExperimentSearchCriteria.createExperiment(experiment,
                                                 scopeOrNull.getRestrictGlobalSearchLinkToProject());
                                 openImagingMaterialViewer(material, experimentCriteria);
                             }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/WellSearchCriteria.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/WellSearchCriteria.java
index 30e246e000f6d88514920f6ca30d4dfb136e8101..78d3d09305e86da66927a3e6b56355b7056798ef 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/WellSearchCriteria.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/WellSearchCriteria.java
@@ -42,6 +42,9 @@ public class WellSearchCriteria implements Serializable
     {
         private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
+        public static final SingleExperimentSearchCriteria EMPTY_CRITERIA =
+                new SingleExperimentSearchCriteria();
+
         private TechId experimentId;
 
         private String experimentPermId;