diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataGlobalSearchBridge.java
index 5c595dad94d04dadc8c990f5cc517d5287d665cb..7e5292a51c06cb1c8223200477e94619cb8c8386 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataGlobalSearchBridge.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataGlobalSearchBridge.java
@@ -3,6 +3,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.lucene.document.Document;
+import org.hibernate.search.bridge.LuceneOptions;
+
 public class DataGlobalSearchBridge<T extends DataPE> extends GlobalSearchBridge<T>
 {
 
@@ -20,4 +23,16 @@ public class DataGlobalSearchBridge<T extends DataPE> extends GlobalSearchBridge
         addPerson(values, "modifier", data.getModifier());
         return values;
     }
+
+    @Override
+    protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions)
+    {
+        if (this.getClass().equals(DataGlobalSearchBridge.class) && ((value instanceof ExternalDataPE) || (value instanceof LinkDataPE)))
+        {
+            return false;
+        } else
+        {
+            return true;
+        }
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentGlobalSearchBridge.java
index 9e7d1bb23d07adbbef6774847a43f6aa9736db82..81ae45ad4900b5ff7f80cd61aba567f90ead4d61 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentGlobalSearchBridge.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentGlobalSearchBridge.java
@@ -3,6 +3,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.lucene.document.Document;
+import org.hibernate.search.bridge.LuceneOptions;
+
 public class ExperimentGlobalSearchBridge extends GlobalSearchBridge<ExperimentPE>
 {
     @Override
@@ -26,4 +29,10 @@ public class ExperimentGlobalSearchBridge extends GlobalSearchBridge<ExperimentP
         addPerson(values, "modifier", experiment.getModifier());
         return values;
     }
+
+    @Override
+    protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions)
+    {
+        return true;
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExternalDataGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExternalDataGlobalSearchBridge.java
index a02a8d6fcc0b1a426d151b5eb0d36673f10a3ecf..f2ecfa548cbc4dd3afd48ed0f0f498fb45680888 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExternalDataGlobalSearchBridge.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExternalDataGlobalSearchBridge.java
@@ -2,6 +2,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto;
 
 import java.util.Map;
 
+import org.apache.lucene.document.Document;
+import org.hibernate.search.bridge.LuceneOptions;
+
 public class ExternalDataGlobalSearchBridge extends GlobalSearchBridge<ExternalDataPE>
 {
 
@@ -42,4 +45,10 @@ public class ExternalDataGlobalSearchBridge extends GlobalSearchBridge<ExternalD
         put(values, "Speed hint", Integer.toString(data.getSpeedHint()));
         return values;
     }
+
+    @Override
+    protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions)
+    {
+        return true;
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/GlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/GlobalSearchBridge.java
index 3f1967bb944b04390425ce9fc69d00b45da6519c..e45f187a11694efa7025e1d53bda47b616e54758 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/GlobalSearchBridge.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/GlobalSearchBridge.java
@@ -146,12 +146,12 @@ public abstract class GlobalSearchBridge<T extends IEntityWithMetaprojects> impl
         }
     }
 
+    protected abstract boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions);
+
     @Override
     public void set(String name, Object value, Document document, LuceneOptions luceneOptions)
     {
-
-        // Prevent double-indexing (SSDM-3760)
-        if (this.getClass().equals(DataGlobalSearchBridge.class) && value instanceof ExternalDataPE)
+        if (shouldIndex(name, value, document, luceneOptions) == false)
         {
             return;
         }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/LinkDataGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/LinkDataGlobalSearchBridge.java
index e27b788a6c4d9ffcfc3f00748162215482daf242..1aee7449f4c4d13ed94208645b18c9ba4f474af6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/LinkDataGlobalSearchBridge.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/LinkDataGlobalSearchBridge.java
@@ -2,6 +2,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto;
 
 import java.util.Map;
 
+import org.apache.lucene.document.Document;
+import org.hibernate.search.bridge.LuceneOptions;
+
 public class LinkDataGlobalSearchBridge extends GlobalSearchBridge<LinkDataPE>
 {
 
@@ -17,4 +20,10 @@ public class LinkDataGlobalSearchBridge extends GlobalSearchBridge<LinkDataPE>
         }
         return values;
     }
+
+    @Override
+    protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions)
+    {
+        return true;
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialGlobalSearchBridge.java
index 885bc70e831b3b73de9fd37ddde91c2aadd28b9a..7654a09b6fce4da632e57877e867fd05fc59bda3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialGlobalSearchBridge.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialGlobalSearchBridge.java
@@ -3,6 +3,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.lucene.document.Document;
+import org.hibernate.search.bridge.LuceneOptions;
+
 public class MaterialGlobalSearchBridge extends GlobalSearchBridge<MaterialPE>
 {
     @Override
@@ -20,4 +23,10 @@ public class MaterialGlobalSearchBridge extends GlobalSearchBridge<MaterialPE>
         addPerson(values, "registrator", material.getRegistrator());
         return values;
     }
+
+    @Override
+    protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions)
+    {
+        return true;
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleGlobalSearchBridge.java
index 4a51a6019d1cabdd44bd6fb4440849b0e3ee8481..9cf00769b3726f68a5ef2673e705c81ccb283aed 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleGlobalSearchBridge.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleGlobalSearchBridge.java
@@ -3,6 +3,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.lucene.document.Document;
+import org.hibernate.search.bridge.LuceneOptions;
+
 public class SampleGlobalSearchBridge extends GlobalSearchBridge<SamplePE>
 {
     @Override
@@ -31,4 +34,10 @@ public class SampleGlobalSearchBridge extends GlobalSearchBridge<SamplePE>
         addPerson(values, "modifier", sample.getModifier());
         return values;
     }
+
+    @Override
+    protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions)
+    {
+        return true;
+    }
 }