diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PropertyValueRenderers.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PropertyValueRenderers.java
index 59ce46e36457a04360c334d28e72c3fb24dc5567..6003ffa1feb1e960d5b76156ecbe02dc7b1bd62a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PropertyValueRenderers.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PropertyValueRenderers.java
@@ -16,6 +16,11 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui;
 
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.InlineHTML;
+import com.google.gwt.user.client.ui.Widget;
+
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer.VocabularyPropertyColRenderer;
@@ -30,6 +35,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.MultilineHTML;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStore;
@@ -48,11 +54,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.InlineHTML;
-import com.google.gwt.user.client.ui.Widget;
-
 /**
  * Some {@link IPropertyValueRenderer} implementations.
  * 
@@ -93,17 +94,6 @@ public final class PropertyValueRenderers
         return new EntityInformationHolderPropertyValueRenderer<ExternalData>(viewContext);
     }
 
-    /**
-     * Creates a {@link IPropertyValueRenderer} implementation for rendering any
-     * {@link IEntityInformationHolder}.
-     */
-    public final static IPropertyValueRenderer<IEntityInformationHolder> createEntityInformationPropertyValueRenderer(
-            final IViewContext<?> viewContext)
-    {
-        return new EntityInformationHolderPropertyValueRenderer<IEntityInformationHolder>(
-                viewContext);
-    }
-
     /**
      * Creates a {@link IPropertyValueRenderer} implementation for rendering {@link SampleType}.
      */
@@ -377,12 +367,25 @@ public final class PropertyValueRenderers
         }
     }
 
+    static class InvalidationFactory
+    {
+        static boolean isInvalid(IInvalidationProvider invalidable)
+        {
+            return invalidable.getInvalidation() != null;
+        }
+
+        static boolean isInvalid(Object object)
+        {
+            return false;
+        }
+    }
+
     /**
      * Renderer for {@link IEntityInformationHolder}.
      * 
      * @author Piotr Buczek
      */
-    public static class EntityInformationHolderPropertyValueRenderer<T extends IEntityInformationHolder>
+    public static class EntityInformationHolderPropertyValueRenderer<T extends IEntityInformationHolderWithIdentifier>
             extends AbstractPropertyValueRenderer<T>
     {
 
@@ -400,11 +403,12 @@ public final class PropertyValueRenderers
 
         public FlowPanel getAsWidget(final T entity)
         {
-            final String code = entity.getCode();
+            final String displayText = getDisplayText(entity);
+
             final boolean invalidate = getInvalidate(entity);
             final ClickHandler listener =
                     new OpenEntityDetailsTabClickListener(entity, viewContext);
-            final Widget link = LinkRenderer.getLinkWidget(code, listener, invalidate);
+            final Widget link = LinkRenderer.getLinkWidget(displayText, listener, invalidate);
 
             // putting link into a panel makes it a block/row
             // which is important if they are rendered as an array
@@ -413,6 +417,11 @@ public final class PropertyValueRenderers
             return panel;
         }
 
+        protected String getDisplayText(final T entity)
+        {
+            return entity.getIdentifier();
+        }
+
         private boolean getInvalidate(final T entity)
         {
             if (entity instanceof IInvalidationProvider)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolderWithIdentifier.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolderWithIdentifier.java
new file mode 100644
index 0000000000000000000000000000000000000000..37b6290667776554b9bb443514c8962ec785f1bf
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/IEntityInformationHolderWithIdentifier.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2008 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.generic.shared.basic;
+
+/**
+ * Contains the information stored in both {@link IIdentifierHolder} and
+ * {@link IEntityInformationHolder}.
+ * 
+ * @author Izabela Adamczyk
+ */
+public interface IEntityInformationHolderWithIdentifier extends IIdentifierHolder,
+        IEntityInformationHolder
+{
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Experiment.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Experiment.java
index 8750007a7b3eeb381958728aa9e44fae95fa3443..e479b3cc26a947af4599ab1148387d064691e70d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Experiment.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Experiment.java
@@ -20,7 +20,7 @@ import java.util.Date;
 import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.IAttachmentHolder;
-import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
@@ -31,8 +31,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  * @author Tomasz Pylak
  */
 public class Experiment extends CodeWithRegistration<Experiment> implements IInvalidationProvider,
-        IEntityInformationHolder, IAttachmentHolder, IEntityPropertiesHolder, IIdentifiable,
-        IPermIdHolder
+        IEntityInformationHolderWithIdentifier, IAttachmentHolder, IEntityPropertiesHolder,
+        IIdentifiable, IPermIdHolder
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
index 4515c2e6dd13c5850045277b57f76ffad780a017..ef92a22390a43eff81aecd66544c6bca5c2ed77b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
@@ -21,7 +21,7 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
-import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
@@ -32,8 +32,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  * @author Christian Ribeaud
  */
 public class ExternalData extends CodeWithRegistration<ExternalData> implements
-        IInvalidationProvider, IEntityInformationHolder, IEntityPropertiesHolder, IIdentifiable,
-        IPermIdHolder
+        IInvalidationProvider, IEntityInformationHolderWithIdentifier, IEntityPropertiesHolder,
+        IIdentifiable, IPermIdHolder
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Material.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Material.java
index 6e36dd9b3cfc01762bb0c9b53c33154c235df997..6c40e519df40f9c17d56d5447f13b4468d44d0ec 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Material.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Material.java
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
 import java.util.Date;
 import java.util.List;
 
-import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 
 /**
@@ -27,8 +27,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
  * 
  * @author Izabela Adamczyk
  */
-public class Material extends CodeWithRegistration<Material> implements IEntityInformationHolder,
-        IEntityPropertiesHolder, IIdentifiable
+public class Material extends CodeWithRegistration<Material> implements
+        IEntityInformationHolderWithIdentifier, IEntityPropertiesHolder, IIdentifiable
 {
 
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Sample.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Sample.java
index 6af8469c4b193d602ef388cad584b0b214fe8924..ee49b699d2f613d714068d5e3748b9b9d50ae40b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Sample.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Sample.java
@@ -22,7 +22,7 @@ import java.util.List;
 
 import ch.systemsx.cisd.common.annotation.CollectionMapping;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IAttachmentHolder;
-import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
@@ -33,8 +33,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  * @author Izabela Adamczyk
  */
 public final class Sample extends CodeWithRegistration<Sample> implements IInvalidationProvider,
-        Comparable<Sample>, IEntityInformationHolder, IAttachmentHolder, IEntityPropertiesHolder,
-        IIdentifiable, IPermIdHolder
+        Comparable<Sample>, IEntityInformationHolderWithIdentifier, IAttachmentHolder,
+        IEntityPropertiesHolder, IIdentifiable, IPermIdHolder
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java
index 9396c0dd122a78c97e42ec931927b1fb81bfc9d1..461b125e01cd3dd1abb151a9826d5308ce407997 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinViewer.java
@@ -43,6 +43,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Abstrac
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.PropertyGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
+import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
@@ -259,7 +260,7 @@ public class ProteinViewer extends AbstractViewer<IEntityInformationHolder> impl
         return result;
     }
 
-    public static class DatasetInformationHolder implements IEntityInformationHolder
+    public static class DatasetInformationHolder implements IEntityInformationHolderWithIdentifier
     {
         private final ProteinDetails proteinDetails;