diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTableCell.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTableCell.java
index 30210340a1ef60ce54bf8f0c7b00fd8024733203..a92c53d5a4e08b983af07a0bfb624823f1576745 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTableCell.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTableCell.java
@@ -33,6 +33,8 @@ public class EntityTableCell implements ISerializableComparable
 
     private String identifierOrNull; // 'null' when entity is missing
 
+    private String linkTextOrNull; // 'null' when link text wasn't redefined (use identifier)
+
     public EntityTableCell(EntityKind entityKind, String permId)
     {
         this(entityKind, permId, permId);
@@ -94,10 +96,26 @@ public class EntityTableCell implements ISerializableComparable
         return entityKind.equals(otherCell.entityKind) && permId.equals(otherCell.permId);
     }
 
+    private String createLinkText()
+    {
+        if (isMissing())
+        {
+            return (linkTextOrNull != null ? linkTextOrNull : permId) + MISSING_ENTITY_SUFFIX;
+        } else
+        {
+            return linkTextOrNull != null ? linkTextOrNull : identifierOrNull;
+        }
+    }
+
+    public void setLinkText(String linkText)
+    {
+        this.linkTextOrNull = linkText;
+    }
+
     @Override
     public String toString()
     {
-        return isMissing() ? String.valueOf(permId) + MISSING_ENTITY_SUFFIX : identifierOrNull;
+        return createLinkText();
     }
 
     // ---------------------------