diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/IChosenEntitiesProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/IChosenEntitiesProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..df450af5195a7494de57177dcf1f2a2d1bf0be78
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/IChosenEntitiesProvider.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2012 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.client.web.client.application.ui.field;
+
+import java.util.List;
+
+/**
+ * @author pkupczyk
+ */
+public interface IChosenEntitiesProvider<T>
+{
+
+    public List<T> getEntities();
+
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/MetaprojectChooserButton.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/MetaprojectChooserButton.java
index 438126063acdd1d30095220dd74145f394bcf826..47d6afa993dadfcfd5c275553992a76aa5b105b6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/MetaprojectChooserButton.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/MetaprojectChooserButton.java
@@ -48,7 +48,8 @@ public class MetaprojectChooserButton extends Button implements
     private final List<IChosenEntitiesListener<TableModelRowWithObject<Metaproject>>> listeners =
             new ArrayList<IChosenEntitiesListener<TableModelRowWithObject<Metaproject>>>();
 
-    public MetaprojectChooserButton(final IViewContext<?> viewContext, final String idPrefix)
+    public MetaprojectChooserButton(final IViewContext<?> viewContext, final String idPrefix,
+            final IChosenEntitiesProvider<String> chosenProvider)
     {
         super(viewContext.getMessage(Dict.ADD_METAPROJECT));
 
@@ -60,7 +61,7 @@ public class MetaprojectChooserButton extends Button implements
                 public void componentSelected(ButtonEvent ce)
                 {
                     DisposableEntityChooser<TableModelRowWithObject<Metaproject>> chooserGrid =
-                            MetaprojectGrid.createChooser(viewContext);
+                            MetaprojectGrid.createChooser(viewContext, chosenProvider);
 
                     new EntityChooserDialog<TableModelRowWithObject<Metaproject>>(chooserGrid,
                             MetaprojectChooserButton.this,
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/metaproject/MetaprojectGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/metaproject/MetaprojectGrid.java
index 1c8d215640f487c20031158010663a3576d3de54..b217957202ad145aae666f1070797eedce561c7b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/metaproject/MetaprojectGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/metaproject/MetaprojectGrid.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.metaproject;
 
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
@@ -24,6 +25,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.IChosenEntitiesProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
@@ -43,23 +45,26 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject
 public class MetaprojectGrid extends TypedTableGrid<Metaproject>
 {
 
+    private IChosenEntitiesProvider<String> chosenProvider;
+
     public static final String METAPROJECT_CHOOSER_GRID_ID = GenericConstants.ID_PREFIX
             + "metaproject-chooser" + TypedTableGrid.GRID_POSTFIX;
 
     public static DisposableEntityChooser<TableModelRowWithObject<Metaproject>> createChooser(
-            final IViewContext<?> viewContext)
+            final IViewContext<?> viewContext, IChosenEntitiesProvider<String> chosenProvider)
     {
         final MetaprojectGrid grid =
                 new MetaprojectGrid(viewContext, METAPROJECT_CHOOSER_GRID_ID,
-                        DisplayTypeIDGenerator.METAPROJECT_CHOOSER_GRID);
+                        DisplayTypeIDGenerator.METAPROJECT_CHOOSER_GRID, chosenProvider);
         grid.allowMultipleSelection();
         return grid.asDisposableWithoutToolbar();
     }
 
     private MetaprojectGrid(IViewContext<?> viewContext, String gridId,
-            DisplayTypeIDGenerator gridDisplayTypeId)
+            DisplayTypeIDGenerator gridDisplayTypeId, IChosenEntitiesProvider<String> chosenProvider)
     {
         super(viewContext.getCommonViewContext(), gridId, true, gridDisplayTypeId);
+        this.chosenProvider = chosenProvider;
     }
 
     @Override
@@ -83,9 +88,16 @@ public class MetaprojectGrid extends TypedTableGrid<Metaproject>
             DefaultResultSetConfig<String, TableModelRowWithObject<Metaproject>> resultSetConfig,
             AbstractAsyncCallback<TypedTableResultSet<Metaproject>> callback)
     {
-        ListMetaprojectsCriteria criteria = new ListMetaprojectsCriteria();
-        criteria.copyPagingConfig(resultSetConfig);
-        viewContext.getService().listMetaprojects(criteria, callback);
+        ListMetaprojectsCriteria listCriteria = new ListMetaprojectsCriteria();
+        List<String> chosenMetaprojects = chosenProvider.getEntities();
+
+        if (chosenMetaprojects != null)
+        {
+            listCriteria.setBlacklist(new HashSet<String>(chosenMetaprojects));
+        }
+
+        listCriteria.copyPagingConfig(resultSetConfig);
+        viewContext.getService().listMetaprojects(listCriteria, callback);
     }
 
     @Override
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListMetaprojectsCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListMetaprojectsCriteria.java
index d9c426bad6b4e07efe6b13aa78f46f6c42fa2de0..87890322d380561c11dc43b5288b1e43683b4e10 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListMetaprojectsCriteria.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListMetaprojectsCriteria.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.dto;
 
+import java.util.Set;
+
 import com.google.gwt.user.client.rpc.IsSerializable;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject;
@@ -29,8 +31,16 @@ public class ListMetaprojectsCriteria extends
         IsSerializable
 {
 
-    public ListMetaprojectsCriteria()
+    private Set<String> blacklist;
+
+    public Set<String> getBlacklist()
+    {
+        return blacklist;
+    }
+
+    public void setBlacklist(Set<String> blacklist)
     {
+        this.blacklist = blacklist;
     }
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
index da39af9a86c4f23649b1a1ae0cc6284a7afc1cac..d05cb4e2dee55783a20f26f36a5dcb944abf3ef7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
@@ -694,7 +694,7 @@ public final class CommonClientService extends AbstractClientService implements
             throws UserFailureException
     {
         MetaprojectProvider metaprojectProvider =
-                new MetaprojectProvider(commonServer, getSessionToken());
+                new MetaprojectProvider(commonServer, getSessionToken(), criteria);
         return listEntities(metaprojectProvider, criteria);
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MetaprojectProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MetaprojectProvider.java
index 13dc090607767e44b82e26b9c674a85bf75ea746..18f6004c0c32145032590d5ff631789544c48f5f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MetaprojectProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MetaprojectProvider.java
@@ -22,6 +22,7 @@ import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.Metaproject
 
 import java.util.List;
 
+import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListMetaprojectsCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel;
@@ -33,9 +34,13 @@ import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder;
 public class MetaprojectProvider extends AbstractCommonTableModelProvider<Metaproject>
 {
 
-    public MetaprojectProvider(ICommonServer commonServer, String sessionToken)
+    private ListMetaprojectsCriteria criteria;
+
+    public MetaprojectProvider(ICommonServer commonServer, String sessionToken,
+            ListMetaprojectsCriteria criteria)
     {
         super(commonServer, sessionToken);
+        this.criteria = criteria;
     }
 
     @Override
@@ -46,13 +51,19 @@ public class MetaprojectProvider extends AbstractCommonTableModelProvider<Metapr
         builder.addColumn(NAME);
         builder.addColumn(DESCRIPTION);
         builder.addColumn(CREATION_DATE).withDefaultWidth(300);
+
         for (Metaproject metaproject : metaprojects)
         {
-            builder.addRow(metaproject);
-            builder.column(NAME).addString(metaproject.getName());
-            builder.column(DESCRIPTION).addString(metaproject.getDescription());
-            builder.column(CREATION_DATE).addDate(metaproject.getCreationDate());
+            if (criteria.getBlacklist() == null
+                    || criteria.getBlacklist().contains(metaproject.getName()) == false)
+            {
+                builder.addRow(metaproject);
+                builder.column(NAME).addString(metaproject.getName());
+                builder.column(DESCRIPTION).addString(metaproject.getDescription());
+                builder.column(CREATION_DATE).addDate(metaproject.getCreationDate());
+            }
         }
+
         return builder.getModel();
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/AbstractGenericEntityRegistrationForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/AbstractGenericEntityRegistrationForm.java
index 39436dee985d98c50e247052f1400832f0450119..2706e21bd0880e0c00602782f1ff3f73b298f8a1 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/AbstractGenericEntityRegistrationForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/AbstractGenericEntityRegistrationForm.java
@@ -39,6 +39,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractRegistrationForm;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.CodeFieldWithGenerator;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.IChosenEntitiesListener;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.IChosenEntitiesProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.MetaprojectArea;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.MetaprojectChooserButton;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.ButtonWithConfirmations;
@@ -226,7 +227,18 @@ public abstract class AbstractGenericEntityRegistrationForm<T extends EntityType
         }
 
         metaprojectArea = new MetaprojectArea(viewContext, getId());
-        metaprojectChooserButton = new MetaprojectChooserButton(viewContext, getId());
+        metaprojectChooserButton =
+                new MetaprojectChooserButton(viewContext, getId(),
+                        new IChosenEntitiesProvider<String>()
+                            {
+                                @Override
+                                public List<String> getEntities()
+                                {
+                                    String[] metaprojects = metaprojectArea.tryGetMetaprojects();
+                                    return metaprojects != null ? Arrays.asList(metaprojects)
+                                            : null;
+                                }
+                            });
         metaprojectChooserButton
                 .addChosenEntityListener(new IChosenEntitiesListener<TableModelRowWithObject<Metaproject>>()
                     {