diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/LinkExtractor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/LinkExtractor.java
index d2760842ca83207e92c88e3f6cebfaed826d836d..ad5623a28480178dfe0253c157214b0ad0abad45 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/LinkExtractor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/LinkExtractor.java
@@ -119,7 +119,7 @@ public class LinkExtractor
         assert entityKind != EntityKind.MATERIAL;
         URLMethodWithParameters url = new URLMethodWithParameters("");
         url.addParameter(PermlinkUtilities.ENTITY_KIND_PARAMETER_KEY, entityKind.name());
-        url.addParameter(PermlinkUtilities.PERM_ID_PARAMETER_KEY, permId);
+        url.addParameterWithoutEncoding(PermlinkUtilities.PERM_ID_PARAMETER_KEY, permId);
         return tryPrint(url);
     }
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
index 115e0b1898966d4da1155d4a517e2b813509c2eb..6901d2b02215f3518cf700b558c9625d09e071b5 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
@@ -55,6 +55,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset.GenericDataSetViewer;
+import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleViewer;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.ExperimentAnalysisSummaryViewer;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.ImageDataSetViewer;
@@ -517,7 +518,15 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
             String sampleTypeCode = entity.getEntityType().getCode();
             if (sampleTypeCode.matches(ScreeningConstants.HCS_PLATE_SAMPLE_TYPE_PATTERN))
             {
-                return createPlateViewer(entity);
+                if (entity.getPermId().contains(":"))
+                {
+                    String permId = entity.getPermId();
+                    return createImageSampleViewer(entity, WellLocation.parseLocationStr(permId
+                            .substring(permId.indexOf(':') + 1)), false);
+                } else
+                {
+                    return createPlateViewer(entity);
+                }
             } else if (sampleTypeCode.equals(ScreeningConstants.LIBRARY_PLUGIN_TYPE_CODE))
             {
                 throw new UserFailureException("Cannot browse objects of the "
@@ -525,16 +534,17 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
             } else if (sampleTypeCode
                     .matches(ScreeningConstants.MICROSCOPY_IMAGE_SAMPLE_TYPE_PATTERN))
             {
-                return createImageSampleViewer(entity, false);
+                return createImageSampleViewer(entity, null, false);
             } else
             // well sample
             {
-                return createImageSampleViewer(entity, true);
+                return createImageSampleViewer(entity, null, true);
             }
         }
 
         private AbstractTabItemFactory createImageSampleViewer(
-                final IEntityInformationHolderWithPermId entity, final boolean isWellSample)
+                final IEntityInformationHolderWithPermId entity,
+                final WellLocation wellLocationOrNull, final boolean isWellSample)
         {
             return new AbstractTabItemFactory()
                 {
@@ -542,8 +552,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
                     public ITabItem create()
                     {
                         final DatabaseModificationAwareComponent viewer =
-                                ImageSampleViewer
-                                        .create(screeningViewContext, entity, isWellSample);
+                                ImageSampleViewer.create(screeningViewContext, entity,
+                                        wellLocationOrNull, isWellSample);
                         return createViewerTab(viewer, getTabTitle(), screeningViewContext);
                     }
 
@@ -551,7 +561,9 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
                     public String getId()
                     {
                         final TechId sampleId = TechId.create(entity);
-                        return GenericDataSetViewer.createId(sampleId);
+                        return GenericSampleViewer.createId(sampleId)
+                                + (wellLocationOrNull == null ? "" : ":"
+                                        + wellLocationOrNull.toWellIdString());
                     }
 
                     @Override
@@ -563,9 +575,24 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
                     @Override
                     public String getTabTitle()
                     {
-                        if (isWellSample)
+                        if (isWellSample || wellLocationOrNull != null)
                         {
-                            return getViewerTitle(Dict.WELL, entity, screeningViewContext);
+                            ICodeHolder codeHolder = new ICodeHolder()
+                                {
+                                    public String getCode()
+                                    {
+                                        if (wellLocationOrNull != null)
+                                        {
+                                            return entity.getCode() + ":"
+                                                    + wellLocationOrNull.toWellIdString();
+                                        } else
+                                        {
+                                            return entity.getCode();
+                                        }
+                                    }
+                                };
+
+                            return getViewerTitle(Dict.WELL, codeHolder, screeningViewContext);
                         } else
                         {
                             return getViewerTitle(Dict.SAMPLE, entity, screeningViewContext);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImageSampleSection.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImageSampleSection.java
index 3d79891c6a4656c99d1bd755c727fa8a498002f1..21bb32219b2074d04bb83c6343403f9d0b17ba92 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImageSampleSection.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImageSampleSection.java
@@ -58,12 +58,15 @@ public class ImageSampleSection extends TabContent
 
     private final WellLocation wellLocationOrNull;
 
+    private final boolean isWell;
+
     public ImageSampleSection(final ScreeningViewContext viewContext, final TechId sampleId,
-            WellLocation wellLocationOrNull)
+            WellLocation wellLocationOrNull, boolean isWell)
     {
         super(WELL_IMAGE_SECTION_TITLE, viewContext, sampleId);
         this.sampleId = sampleId;
         this.wellLocationOrNull = wellLocationOrNull;
+        this.isWell = isWell;
         setIds(DisplayTypeIDGenerator.LOGICAL_IMAGE_WELL_SECTION);
     }
 
@@ -77,8 +80,8 @@ public class ImageSampleSection extends TabContent
     {
         final ScreeningViewContext context = getViewContext();
         add(new Text(context.getMessage(Dict.LOAD_IN_PROGRESS)));
-        context.getService().getImageDatasetInfosForSample(sampleId, wellLocationOrNull,
-                createDisplayImagesCallback(context));
+        context.getService().getImageDatasetInfosForSample(sampleId,
+                isWell ? wellLocationOrNull : null, createDisplayImagesCallback(context));
     }
 
     private AsyncCallback<ImageSampleContent> createDisplayImagesCallback(
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImageSampleViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImageSampleViewer.java
index 4df212c5383dee75b0c86c98b07427e21df274ec..82286486237fe228d44c2dc4405929c6caaeee1d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImageSampleViewer.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImageSampleViewer.java
@@ -39,9 +39,11 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellLocation;
 public final class ImageSampleViewer extends GenericSampleViewer
 {
     public static DatabaseModificationAwareComponent create(final ScreeningViewContext viewContext,
-            final IIdAndCodeHolder identifiable, boolean isWellSample)
+            final IIdAndCodeHolder identifiable, WellLocation wellLocationOrNull,
+            boolean isWellSample)
     {
-        ImageSampleViewer viewer = new ImageSampleViewer(viewContext, identifiable, isWellSample);
+        ImageSampleViewer viewer =
+                new ImageSampleViewer(viewContext, identifiable, wellLocationOrNull, isWellSample);
         viewer.reloadAllData();
         return new DatabaseModificationAwareComponent(viewer, viewer);
     }
@@ -50,13 +52,25 @@ public final class ImageSampleViewer extends GenericSampleViewer
 
     private final WellLocation wellLocationOrNull;
 
+    private final boolean isWell;
+
     private ImageSampleViewer(final ScreeningViewContext viewContext,
-            final IIdAndCodeHolder identifiable, boolean isWellSample)
+            final IIdAndCodeHolder identifiable, WellLocation wellLocationOrNull,
+            boolean isWellSample)
     {
         super(viewContext, identifiable);
         this.screeningViewContext = viewContext;
-        this.wellLocationOrNull =
-                isWellSample ? WellLocation.tryParseLocationStr(getWellCode(identifiable)) : null;
+        this.isWell = isWellSample;
+
+        if (isWellSample)
+        {
+            this.wellLocationOrNull =
+                    isWellSample ? WellLocation.tryParseLocationStr(getWellCode(identifiable))
+                            : null;
+        } else
+        {
+            this.wellLocationOrNull = wellLocationOrNull;
+        }
     }
 
     private static String getWellCode(final IIdAndCodeHolder identifiable)
@@ -84,7 +98,8 @@ public final class ImageSampleViewer extends GenericSampleViewer
     {
         List<TabContent> sections = new ArrayList<TabContent>();
 
-        sections.add(new ImageSampleSection(screeningViewContext, sampleId, wellLocationOrNull));
+        sections.add(new ImageSampleSection(screeningViewContext, sampleId, wellLocationOrNull,
+                isWell));
         return sections;
     }
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryComponent.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryComponent.java
index ffe99487cebb94eb6f90a3cd97bdde5c8cbcc88d..41c91b32d3a92d8ffc7505bd629e04a7a5b633ee 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryComponent.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryComponent.java
@@ -59,7 +59,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.d
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.utils.PropertiesUtil;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ui.columns.specific.ScreeningLinkExtractor;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ImageDatasetParameters;
-import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellImage;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellContent;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellReplicaImage;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria;
@@ -233,7 +233,7 @@ public class MaterialReplicaSummaryComponent
             {
                 if (i < sortedTechnicalReplicates.size())
                 {
-                    WellImage wellImage = sortedTechnicalReplicates.get(i).getWellImage();
+                    WellContent wellImage = sortedTechnicalReplicates.get(i).getWellImage();
                     Widget imageViewer =
                             createImageViewer(wellImage, channelChooser,
                                     getOneImageSizeFactorPx(maxReplicaNumber));
@@ -337,7 +337,7 @@ public class MaterialReplicaSummaryComponent
         }
     }
 
-    private Widget createImageViewer(final WellImage image, ChannelChooserPanel channelChooser,
+    private Widget createImageViewer(final WellContent image, ChannelChooserPanel channelChooser,
             final int oneImageSizeFactorPx)
     {
         assert image.tryGetImageDataset() != null;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
index cffa9878d0c48f6a3896b8870a22bf242d59a6d4..619b4401da23208a92a42eca5aecebd762b387be 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
@@ -53,6 +53,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.dto.LogicalImageChannelsReference;
@@ -65,6 +66,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ExperimentRefe
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ImageDatasetEnrichedReference;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ImageDatasetParameters;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellContent;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellImage;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellLocation;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellMetadata;
@@ -92,12 +94,12 @@ public class WellContentDialog extends Dialog
     /**
      * A dialog which shows the content of the well (static or a timepoints movie).
      */
-    public static void showContentDialog(final WellData wellData,
+    public static void showContentDialog(final WellData wellData, final Sample plateSample,
             ImageDatasetEnrichedReference imageDatasetOrNull,
             final IViewContext<IScreeningClientServiceAsync> viewContext)
     {
         final WellContentDialog contentDialog =
-                createContentDialog(wellData, imageDatasetOrNull, viewContext);
+                createContentDialog(wellData, plateSample, imageDatasetOrNull, viewContext);
         showContentDialog(contentDialog, viewContext);
     }
 
@@ -114,7 +116,7 @@ public class WellContentDialog extends Dialog
     }
 
     private static WellContentDialog createContentDialog(final WellData wellData,
-            ImageDatasetEnrichedReference imageDatasetOrNull,
+            Sample plateSample, ImageDatasetEnrichedReference imageDatasetOrNull,
             final IViewContext<IScreeningClientServiceAsync> viewContext)
     {
         WellLocation wellLocation = wellData.getWellLocation();
@@ -127,7 +129,7 @@ public class WellContentDialog extends Dialog
             wellPropertiesOrNull = wellMetadata.getWellSample().getProperties();
         }
         return new WellContentDialog(wellOrNull, wellPropertiesOrNull, wellLocation,
-                getExperiment(wellData), imageDatasetOrNull, viewContext);
+                getExperiment(wellData), plateSample, imageDatasetOrNull, viewContext);
     }
 
     /**
@@ -138,7 +140,7 @@ public class WellContentDialog extends Dialog
      */
     public static Widget createImageViewerForChannel(
             final IViewContext<IScreeningClientServiceAsync> viewContext,
-            final WellImage wellImage, int imageSizePx, List<String> channels,
+            final WellContent wellImage, int imageSizePx, List<String> channels,
             String imageTransformationCodeOrNull)
     {
         final ImageDatasetEnrichedReference imageDataset = tryGetImageDataset(wellImage);
@@ -177,7 +179,8 @@ public class WellContentDialog extends Dialog
                 {
                     public void handleEvent(BaseEvent be)
                     {
-                        showContentDialog(viewContext, wellImage, imageDataset);
+                        showContentDialog(viewContext, wellImage, wellImage.getPlate(),
+                                imageDataset);
                     }
                 });
         }
@@ -197,11 +200,13 @@ public class WellContentDialog extends Dialog
     }
 
     private static void showContentDialog(IViewContext<IScreeningClientServiceAsync> viewContext,
-            WellImage wellImage, ImageDatasetEnrichedReference imageDatasetOrNull)
+            WellImage wellImage, IEntityInformationHolderWithPermId plate,
+            ImageDatasetEnrichedReference imageDatasetOrNull)
     {
         WellContentDialog contentDialog =
                 new WellContentDialog(wellImage.getWell(), null, wellImage.tryGetLocation(),
-                        getExperiment(wellImage.getExperiment()), imageDatasetOrNull, viewContext);
+                        getExperiment(wellImage.getExperiment()), plate, imageDatasetOrNull,
+                        viewContext);
 
         showContentDialog(contentDialog, viewContext);
     }
@@ -244,6 +249,8 @@ public class WellContentDialog extends Dialog
 
     private final SingleExperimentSearchCriteria experimentCriteria;
 
+    private final IEntityInformationHolderWithPermId plate;
+
     private final IViewContext<IScreeningClientServiceAsync> viewContext;
 
     private ImageDatasetEnrichedReference imageDatasetOrNull;
@@ -251,10 +258,12 @@ public class WellContentDialog extends Dialog
     private WellContentDialog(IEntityInformationHolderWithPermId wellOrNull,
             List<IEntityProperty> wellPropertiesOrNull, final WellLocation wellLocationOrNull,
             final SingleExperimentSearchCriteria experimentCriteria,
+            IEntityInformationHolderWithPermId plate,
             ImageDatasetEnrichedReference imageDatasetOrNull,
             final IViewContext<IScreeningClientServiceAsync> viewContext)
     {
         this.wellOrNull = wellOrNull;
+        this.plate = plate;
         this.wellLocationOrNull = wellLocationOrNull;
         this.wellPropertiesOrNull = wellPropertiesOrNull;
         if (wellPropertiesOrNull != null)
@@ -349,27 +358,27 @@ public class WellContentDialog extends Dialog
 
                     public String getPermId()
                     {
-                        return imageDatasetOrNull.getPermId() + suffix;
+                        return plate.getPermId() + suffix;
                     }
 
                     public String getCode()
                     {
-                        return imageDatasetOrNull.getCode();
+                        return plate.getCode();
                     }
 
                     public Long getId()
                     {
-                        return imageDatasetOrNull.getId();
+                        return plate.getId();
                     }
 
                     public BasicEntityType getEntityType()
                     {
-                        return imageDatasetOrNull.getEntityType();
+                        return plate.getEntityType();
                     }
 
                     public EntityKind getEntityKind()
                     {
-                        return imageDatasetOrNull.getEntityKind();
+                        return plate.getEntityKind();
                     }
                 }, getWellDescription()));
         }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/PlateLayouter.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/PlateLayouter.java
index 2263bbf80327f3693c20de6f1046de0e544ad421..e23f7d1e82e15eebc476ff241001f9b21fe618f7 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/PlateLayouter.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/PlateLayouter.java
@@ -408,7 +408,8 @@ public class PlateLayouter
                     ImageDatasetEnrichedReference dataset = model.tryGetImageDataset();
                     if (dataset == null)
                     {
-                        WellContentDialog.showContentDialog(wellData, null, screeningViewContext);
+                        WellContentDialog.showContentDialog(wellData, model.getPlateSample(), null,
+                                screeningViewContext);
                     } else
                     {
                         // Reload meta data because they might be out dated especially when
@@ -427,6 +428,7 @@ public class PlateLayouter
                                         {
                                             model.setImageDataset(refreshedDataset);
                                             WellContentDialog.showContentDialog(wellData,
+                                                    layouter.model.getPlateSample(),
                                                     refreshedDataset, screeningViewContext);
                                         }
                                     });
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/PlateLayouterModel.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/PlateLayouterModel.java
index 1ff96f3421d1f953aab987333f5a5a90d5f75e0b..ac05c3c4f466bc31d294a62ba2156160d42177ea 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/PlateLayouterModel.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/heatmaps/PlateLayouterModel.java
@@ -26,6 +26,7 @@ import java.util.Set;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CodeAndLabel;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.dto.WellData;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.DatasetReference;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.FeatureValue;
@@ -49,6 +50,8 @@ class PlateLayouterModel
 
     private final List<WellData> wellList; // the same wells as in the matrix
 
+    private final Sample plateSample;
+
     // --- internal dynamix state
 
     private ImageDatasetEnrichedReference imageDatasetOrNull;
@@ -66,6 +69,7 @@ class PlateLayouterModel
 
     public PlateLayouterModel(PlateMetadata plateMetadata)
     {
+        this.plateSample = plateMetadata.getPlate();
         this.wellMatrix = createWellMatrix(plateMetadata);
         this.wellList = asList(wellMatrix);
     }
@@ -280,4 +284,9 @@ class PlateLayouterModel
         return result;
     }
 
+    public Sample getPlateSample()
+    {
+        return plateSample;
+    }
+
 }
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingDataSetLocatorResolver.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingDataSetLocatorResolver.java
index cfe928b6510c3f01e7c09d27b9102ec7bec3c9f5..3c35380ac82485648f09bc84b1d409a20c0a863f 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingDataSetLocatorResolver.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingDataSetLocatorResolver.java
@@ -49,8 +49,9 @@ public class ImagingDataSetLocatorResolver extends PermlinkLocatorResolver
                 locator.getParameters().get(PermlinkUtilities.PERM_ID_PARAMETER_KEY);
 
         return super.canHandleLocator(locator)
-                && EntityKind.DATA_SET.name().equals(entityKindValueOrNull)
-                && permIdValueOrNull != null && permIdValueOrNull.contains(":");
+                && (EntityKind.DATA_SET.name().equals(entityKindValueOrNull) || EntityKind.SAMPLE
+                        .name().equals(entityKindValueOrNull)) && permIdValueOrNull != null
+                && permIdValueOrNull.contains(":");
     }
 
     /**