diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/LinkRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/LinkRenderer.java
index f9bacd392fc793012fd0aab82fc6f74ba4b76dbf..5c1760069ade9560ad0ca833339da03e8e1a53b0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/LinkRenderer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/LinkRenderer.java
@@ -51,24 +51,21 @@ public class LinkRenderer
             };
     }
 
-    public static GridCellRenderer<BaseEntityModel<?>> createLinkRenderer(final String text,
-            final boolean openInNewWindow)
+    public static GridCellRenderer<BaseEntityModel<?>> createLinkRenderer(final String text)
     {
         return new GridCellRenderer<BaseEntityModel<?>>()
             {
-
                 public Object render(BaseEntityModel<?> model, String property, ColumnData config,
                         int rowIndex, int colIndex, ListStore<BaseEntityModel<?>> store,
                         Grid<BaseEntityModel<?>> grid)
                 {
-                    String originalValue = String.valueOf(model.get(property));
-                    return LinkRenderer
-                            .renderAsLinkWithAnchor(text, originalValue, openInNewWindow);
+                    return LinkRenderer.renderAsLinkWithAnchor(text);
                 }
             };
     }
 
-    public static GridCellRenderer<BaseEntityModel<?>> createExternalLinkRenderer()
+    public static GridCellRenderer<BaseEntityModel<?>> createExternalLinkRenderer(
+            final String overridenLinkTextOrNull)
     {
         return new GridCellRenderer<BaseEntityModel<?>>()
             {
@@ -77,12 +74,20 @@ public class LinkRenderer
                         int rowIndex, int colIndex, ListStore<BaseEntityModel<?>> store,
                         Grid<BaseEntityModel<?>> grid)
                 {
-                    return LinkRenderer.renderAsLinkWithAnchor(model.get(property).toString(),
-                            model.get(property).toString(), true);
+                    String originalValue = String.valueOf(model.get(property));
+                    String linkText =
+                            overridenLinkTextOrNull != null ? overridenLinkTextOrNull
+                                    : originalValue;
+                    return LinkRenderer.renderAsLinkWithAnchor(linkText, originalValue, true);
                 }
             };
     }
 
+    public static GridCellRenderer<BaseEntityModel<?>> createExternalLinkRenderer()
+    {
+        return createExternalLinkRenderer(null);
+    }
+
     /** renders a div witch looks like an anchor (hand cursor is on div - block) */
     public static String renderAsLink(final String message)
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityBrowserGrid.java
index a80ea5300d205a0a6b91d3bc15664d9a86a15b3e..515ff0933e1db76a405c759eae2d2487d6725cee 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractEntityBrowserGrid.java
@@ -242,8 +242,8 @@ public abstract class AbstractEntityBrowserGrid<T extends IEntityPropertiesHolde
 
     protected final GridCellRenderer<BaseEntityModel<?>> createShowDetailsLinkCellRenderer()
     {
-        return LinkRenderer.createLinkRenderer(viewContext
-                .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE), true);
+        return LinkRenderer.createExternalLinkRenderer(viewContext
+                .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE));
 
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java
index 10e6e2caf260ebc9d3156aac22252c60f0e89267..694596368410bc50df4c1b7be9dfeb19f5159d88 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java
@@ -256,7 +256,7 @@ public class ReportGrid extends AbstractBrowserGrid<TableModelRow, BaseEntityMod
             EntityKind entityKind)
     {
         return LinkRenderer.createLinkRenderer(viewContext.getMessage(
-                Dict.SHOW_ENTITY_DETAILS_LINK_TEXT_TEMPLATE, entityKind.getDescription()), false);
+                Dict.SHOW_ENTITY_DETAILS_LINK_TEXT_TEMPLATE, entityKind.getDescription()));
     }
 
     private void showEntityViewer(EntityKind entityKind, String permId)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DAO.java
index 299c4fe793aad7b94a6e69f1bc316909e67ab7e9..db504322259ba3ecc2634c1a6154c3ab1c715b20 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DAO.java
@@ -70,6 +70,12 @@ class DAO extends SimpleJdbcDaoSupport implements IDAO
         return entityKindByColumnName.get(columnName.toUpperCase());
     }
 
+    private static String removeEntityColumnNameSuffix(String columnName)
+    {
+        assert columnName.toUpperCase().endsWith(ENTITY_COLUMN_NAME_SUFFIX);
+        return columnName.substring(0, columnName.length() - ENTITY_COLUMN_NAME_SUFFIX.length());
+    }
+
     private static DataTypeCode getDataTypeCode(int sqlType)
     {
         if (isInteger(sqlType))
@@ -120,10 +126,15 @@ class DAO extends SimpleJdbcDaoSupport implements IDAO
                     for (int i = 1; i <= columnCount; i++)
                     {
                         String columnName = JdbcUtils.lookupColumnName(metaData, i);
+                        EntityKind entityKindOrNull = tryGetEntityKind(columnName);
+                        if (entityKindOrNull != null)
+                        {
+                            columnName = removeEntityColumnNameSuffix(columnName);
+                        }
                         TableModelColumnHeader header =
                                 new TableModelColumnHeader(columnName, i - 1);
                         header.setDataType(getDataTypeCode(metaData.getColumnType(i)));
-                        header.setEntityKind(tryGetEntityKind(columnName));
+                        header.setEntityKind(entityKindOrNull);
                         headers.add(header);
                     }
                     List<TableModelRow> rows = new ArrayList<TableModelRow>();
@@ -152,6 +163,7 @@ class DAO extends SimpleJdbcDaoSupport implements IDAO
                     JdbcUtils.closeResultSet(resultSet);
                     return new TableModel(headers, rows);
                 }
+
             };
 
         return (TableModel) getJdbcTemplate().execute(