diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/ApplicationServerApi.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/ApplicationServerApi.java
index 2f6b2d96bc57da58cec522fb4cabefa0b0e9cd4e..4bb91ddda4d3e1b9254dbaff9d132e020331e919 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/ApplicationServerApi.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/ApplicationServerApi.java
@@ -331,7 +331,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
         Map<IExperimentId, ExperimentPE> map = mapExperimentByIdExecutor.map(context, experimentIds);
 
         return new MapTranslator<IExperimentId, IExperimentId, ExperimentPE, Experiment>().translate(map, new IdentityTranslator<IExperimentId>(),
-                new ExperimentTranslator(new TranslationContext(session), managedPropertyEvaluatorFactory,
+                new ExperimentTranslator(new TranslationContext(session, managedPropertyEvaluatorFactory),
                         fetchOptions));
     }
 
@@ -347,7 +347,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
         Map<ISampleId, SamplePE> map = mapSampleByIdExecutor.map(context, sampleIds);
 
         return new MapTranslator<ISampleId, ISampleId, SamplePE, Sample>().translate(map, new IdentityTranslator<ISampleId>(),
-                new SampleTranslator(new TranslationContext(session), managedPropertyEvaluatorFactory,
+                new SampleTranslator(new TranslationContext(session, managedPropertyEvaluatorFactory),
                         fetchOptions));
     }
 
@@ -362,7 +362,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
         Map<IDataSetId, DataPE> map = mapDataSetByIdExecutor.map(context, dataSetIds);
 
         return new MapTranslator<IDataSetId, IDataSetId, DataPE, DataSet>().translate(map, new IdentityTranslator<IDataSetId>(),
-                new DataSetTranslator(new TranslationContext(session), managedPropertyEvaluatorFactory,
+                new DataSetTranslator(new TranslationContext(session, managedPropertyEvaluatorFactory),
                         fetchOptions));
     }
 
@@ -380,7 +380,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
             List<ExperimentPE> experiments = searchExperimentExecutor.search(context, searchCriterion);
 
             Map<ExperimentPE, Experiment> translatedMap =
-                    new ExperimentTranslator(new TranslationContext(session), managedPropertyEvaluatorFactory, fetchOptions).translate(experiments);
+                    new ExperimentTranslator(new TranslationContext(session, managedPropertyEvaluatorFactory), fetchOptions).translate(experiments);
             return new ArrayList<Experiment>(translatedMap.values());
         } catch (Throwable t)
         {
@@ -401,7 +401,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
             List<SamplePE> samples = searchSampleExecutor.search(context, searchCriterion);
 
             Map<SamplePE, Sample> translatedMap =
-                    new SampleTranslator(new TranslationContext(session), managedPropertyEvaluatorFactory, fetchOptions).translate(samples);
+                    new SampleTranslator(new TranslationContext(session, managedPropertyEvaluatorFactory), fetchOptions).translate(samples);
             return new ArrayList<Sample>(translatedMap.values());
         } catch (Throwable t)
         {
@@ -422,7 +422,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
             List<DataPE> dataSets = searchDataSetExecutor.search(context, searchCriterion);
 
             Map<DataPE, DataSet> translatedMap =
-                    new DataSetTranslator(new TranslationContext(session), managedPropertyEvaluatorFactory, fetchOptions).translate(dataSets);
+                    new DataSetTranslator(new TranslationContext(session, managedPropertyEvaluatorFactory), fetchOptions).translate(dataSets);
             return new ArrayList<DataSet>(translatedMap.values());
         } catch (Throwable t)
         {
@@ -504,9 +504,9 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
         try
         {
             List<ch.systemsx.cisd.openbis.generic.shared.basic.dto.Deletion> deletions = listDeletionExecutor.list(context, fetchOptions);
-
             Map<ch.systemsx.cisd.openbis.generic.shared.basic.dto.Deletion, Deletion> translatedMap =
-                    new DeletionTranslator(new TranslationContext(session), fetchOptions, getDAOFactory()).translate(deletions);
+                    new DeletionTranslator(new TranslationContext(session, managedPropertyEvaluatorFactory), fetchOptions, getDAOFactory())
+                            .translate(deletions);
             return new ArrayList<Deletion>(translatedMap.values());
         } catch (Throwable t)
         {
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContext.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContext.java
index db5170bdcfb8a9853cf5a50e2add01eb7b1dcf0a..ce57ae8f1428ef5711bc32bceb33e9c34326f26b 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContext.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContext.java
@@ -2,16 +2,19 @@ package ch.ethz.sis.openbis.generic.server.api.v3.translator;
 
 import ch.ethz.sis.openbis.generic.server.api.v3.context.Context;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
+import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory;
 
 public class TranslationContext extends Context
 {
-
     private final TranslationCache translationCache;
 
-    public TranslationContext(Session session)
+    private IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory;
+
+    public TranslationContext(Session session, IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory)
     {
         super(session);
         this.translationCache = new TranslationCache();
+        this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory;
     }
 
     public TranslationCache getTranslationCache()
@@ -19,4 +22,9 @@ public class TranslationContext extends Context
         return translationCache;
     }
 
+    public IManagedPropertyEvaluatorFactory getManagedPropertyEvaluatorFactory()
+    {
+        return managedPropertyEvaluatorFactory;
+    }
+
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/dataset/DataSetTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/dataset/DataSetTranslator.java
index dfc71830e2d70738aaeb3ba44a7d04c9d0caf637..72951f4f2aa06fdaca1eca80b238aa7c4083fe6e 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/dataset/DataSetTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/dataset/DataSetTranslator.java
@@ -40,20 +40,16 @@ import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.dataset.DataSetPermId;
 import ch.systemsx.cisd.openbis.generic.server.authorization.validator.DataSetPEByExperimentOrSampleIdentifierValidator;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
-import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory;
 
 /**
  * @author Jakub Straszewski
  */
 public class DataSetTranslator extends AbstractCachingTranslator<DataPE, DataSet, DataSetFetchOptions>
 {
-    private IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory;
 
-    public DataSetTranslator(TranslationContext translationContext, IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory,
-            DataSetFetchOptions fetchOptions)
+    public DataSetTranslator(TranslationContext translationContext, DataSetFetchOptions fetchOptions)
     {
         super(translationContext, fetchOptions);
-        this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory;
     }
 
     @Override
@@ -85,7 +81,7 @@ public class DataSetTranslator extends AbstractCachingTranslator<DataPE, DataSet
         {
             List<DataSet> children =
                     new ListTranslator().translate(dataPe.getChildren(), new DataSetTranslator(getTranslationContext(),
-                            managedPropertyEvaluatorFactory, getFetchOptions()
+                            getFetchOptions()
                                     .withChildren()));
             result.setChildren(children);
             result.getFetchOptions().withChildrenUsing(getFetchOptions().withChildren());
@@ -95,7 +91,7 @@ public class DataSetTranslator extends AbstractCachingTranslator<DataPE, DataSet
         {
             List<DataSet> parents =
                     new ListTranslator().translate(dataPe.getParents(), new DataSetTranslator(getTranslationContext(),
-                            managedPropertyEvaluatorFactory, getFetchOptions()
+                            getFetchOptions()
                                     .withParents()));
             result.setParents(parents);
             result.getFetchOptions().withParentsUsing(getFetchOptions().withParents());
@@ -105,7 +101,7 @@ public class DataSetTranslator extends AbstractCachingTranslator<DataPE, DataSet
         {
             List<DataSet> contained =
                     new ListTranslator().translate(dataPe.getContainedDataSets(), new DataSetTranslator(getTranslationContext(),
-                            managedPropertyEvaluatorFactory, getFetchOptions()
+                            getFetchOptions()
                                     .withContained()));
             result.setContained(contained);
             result.getFetchOptions().withContainedUsing(getFetchOptions().withContained());
@@ -115,7 +111,7 @@ public class DataSetTranslator extends AbstractCachingTranslator<DataPE, DataSet
         {
             List<DataSet> containers =
                     new ListTranslator().translate(dataPe.getContainers(), new DataSetTranslator(getTranslationContext(),
-                            managedPropertyEvaluatorFactory, getFetchOptions()
+                            getFetchOptions()
                                     .withContainers()));
             result.setContainers(containers);
             result.getFetchOptions().withContainersUsing(getFetchOptions().withContainers());
@@ -124,7 +120,7 @@ public class DataSetTranslator extends AbstractCachingTranslator<DataPE, DataSet
         if (getFetchOptions().hasExperiment() && dataPe.getExperiment() != null)
         {
             Experiment experiment =
-                    new ExperimentTranslator(getTranslationContext(), managedPropertyEvaluatorFactory, getFetchOptions().withExperiment())
+                    new ExperimentTranslator(getTranslationContext(), getFetchOptions().withExperiment())
                             .translate(dataPe.getExperiment());
             result.setExperiment(experiment);
             result.getFetchOptions().withExperimentUsing(getFetchOptions().withExperiment());
@@ -135,7 +131,7 @@ public class DataSetTranslator extends AbstractCachingTranslator<DataPE, DataSet
             if (dataPe.tryGetSample() != null)
             {
                 Sample sample =
-                        new SampleTranslator(getTranslationContext(), managedPropertyEvaluatorFactory, getFetchOptions().withSample())
+                        new SampleTranslator(getTranslationContext(), getFetchOptions().withSample())
                                 .translate(dataPe.tryGetSample());
                 result.setSample(sample);
             }
@@ -144,7 +140,7 @@ public class DataSetTranslator extends AbstractCachingTranslator<DataPE, DataSet
 
         if (getFetchOptions().hasProperties())
         {
-            result.setProperties(new PropertyTranslator(getTranslationContext(), managedPropertyEvaluatorFactory, getFetchOptions().withProperties())
+            result.setProperties(new PropertyTranslator(getTranslationContext(), getFetchOptions().withProperties())
                     .translate(dataPe));
             result.getFetchOptions().withPropertiesUsing(getFetchOptions().withProperties());
         }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/experiment/ExperimentTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/experiment/ExperimentTranslator.java
index 0b9f179cd241fae70ca2390fafb2afcd0a8f676e..46afef598cffa9f306822e63eb53f0fdca64b295 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/experiment/ExperimentTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/experiment/ExperimentTranslator.java
@@ -39,7 +39,6 @@ import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.experiment.ExperimentIde
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.experiment.ExperimentPermId;
 import ch.systemsx.cisd.openbis.generic.server.authorization.validator.ExperimentByIdentiferValidator;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
-import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory;
 
 /**
  * @author pkupczyk
@@ -47,13 +46,9 @@ import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedProperty
 public class ExperimentTranslator extends AbstractCachingTranslator<ExperimentPE, Experiment, ExperimentFetchOptions>
 {
 
-    private IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory;
-
-    public ExperimentTranslator(TranslationContext translationContext, IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory,
-            ExperimentFetchOptions fetchOptions)
+    public ExperimentTranslator(TranslationContext translationContext, ExperimentFetchOptions fetchOptions)
     {
         super(translationContext, fetchOptions);
-        this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory;
     }
 
     @Override
@@ -91,7 +86,7 @@ public class ExperimentTranslator extends AbstractCachingTranslator<ExperimentPE
         if (getFetchOptions().hasProperties())
         {
             Map<String, String> properties =
-                    new PropertyTranslator(getTranslationContext(), managedPropertyEvaluatorFactory, getFetchOptions().withProperties())
+                    new PropertyTranslator(getTranslationContext(), getFetchOptions().withProperties())
                             .translate(experiment);
             result.setProperties(properties);
             result.getFetchOptions().withPropertiesUsing(getFetchOptions().withProperties());
@@ -99,21 +94,22 @@ public class ExperimentTranslator extends AbstractCachingTranslator<ExperimentPE
 
         if (getFetchOptions().hasProject())
         {
-            result.setProject(new ProjectTranslator(getTranslationContext(), getFetchOptions().withProject()).translate(experiment.getProject()));
+            result.setProject(new ProjectTranslator(getTranslationContext(), getFetchOptions().withProject())
+                    .translate(experiment.getProject()));
             result.getFetchOptions().withProjectUsing(getFetchOptions().withProject());
         }
 
         if (getFetchOptions().hasSamples())
         {
             result.setSamples(new ListTranslator().translate(experiment.getSamples(), new SampleTranslator(getTranslationContext(),
-                    managedPropertyEvaluatorFactory, getFetchOptions().withSamples())));
+                    getFetchOptions().withSamples())));
             result.getFetchOptions().withSamplesUsing(getFetchOptions().withSamples());
         }
 
         if (getFetchOptions().hasDataSets())
         {
             result.setDataSets(new ListTranslator().translate(experiment.getDataSets(), new DataSetTranslator(getTranslationContext(),
-                    managedPropertyEvaluatorFactory, getFetchOptions().withDataSets())));
+                    getFetchOptions().withDataSets())));
             result.getFetchOptions().withDataSetsUsing(getFetchOptions().withDataSets());
         }
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/person/PersonTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/person/PersonTranslator.java
index cca40e93ce94cb83f6757a7b8594e1796551ceb9..bdb64236be70b2266fa4c975198bf8bcacf2e0b0 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/person/PersonTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/person/PersonTranslator.java
@@ -55,14 +55,16 @@ public class PersonTranslator extends AbstractCachingTranslator<PersonPE, Person
     {
         if (getFetchOptions().hasSpace())
         {
-            result.setSpace(new SpaceTranslator(getTranslationContext(), getFetchOptions().withSpace()).translate(person.getHomeSpace()));
+            result.setSpace(new SpaceTranslator(getTranslationContext(), getFetchOptions().withSpace())
+                    .translate(person.getHomeSpace()));
             result.getFetchOptions().withSpaceUsing(getFetchOptions().withSpace());
         }
 
         if (getFetchOptions().hasRegistrator())
         {
-            result.setRegistrator(new PersonTranslator(getTranslationContext(), getFetchOptions().withRegistrator()).translate(person
-                    .getRegistrator()));
+            result.setRegistrator(new PersonTranslator(getTranslationContext(), getFetchOptions().withRegistrator())
+                    .translate(person
+                            .getRegistrator()));
             result.getFetchOptions().withRegistratorUsing(getFetchOptions().withRegistrator());
         }
     }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/project/ProjectTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/project/ProjectTranslator.java
index af9efb318ffb5b9986eee3828aa2633c339727df..f18b8072b145aae4c19238207b155788f4afaebe 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/project/ProjectTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/project/ProjectTranslator.java
@@ -16,11 +16,16 @@
 
 package ch.ethz.sis.openbis.generic.server.api.v3.translator.entity.project;
 
+import java.util.List;
+
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.AbstractCachingTranslator;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.Relations;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.TranslationContext;
+import ch.ethz.sis.openbis.generic.server.api.v3.translator.common.ListTranslator;
+import ch.ethz.sis.openbis.generic.server.api.v3.translator.entity.experiment.ExperimentTranslator;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.entity.person.PersonTranslator;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.entity.space.SpaceTranslator;
+import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.experiment.Experiment;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.project.Project;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.project.ProjectFetchOptions;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.project.ProjectIdentifier;
@@ -33,7 +38,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
  */
 public class ProjectTranslator extends AbstractCachingTranslator<ProjectPE, Project, ProjectFetchOptions>
 {
-
     public ProjectTranslator(TranslationContext translationContext, ProjectFetchOptions fetchOptions)
     {
         super(translationContext, fetchOptions);
@@ -66,7 +70,8 @@ public class ProjectTranslator extends AbstractCachingTranslator<ProjectPE, Proj
     {
         if (getFetchOptions().hasSpace())
         {
-            result.setSpace(new SpaceTranslator(getTranslationContext(), getFetchOptions().withSpace()).translate(project.getSpace()));
+            result.setSpace(new SpaceTranslator(getTranslationContext(), getFetchOptions().withSpace())
+                    .translate(project.getSpace()));
             result.getFetchOptions().withSpaceUsing(getFetchOptions().withSpace());
         }
 
@@ -84,6 +89,13 @@ public class ProjectTranslator extends AbstractCachingTranslator<ProjectPE, Proj
             result.getFetchOptions().withModifierUsing(getFetchOptions().withModifier());
         }
 
+        if (getFetchOptions().hasExperiments())
+        {
+            List<Experiment> experiments =
+                    new ListTranslator().translate(project.getExperiments(), new ExperimentTranslator(getTranslationContext(),
+                            getFetchOptions().withExperiments()));
+            result.setExperiments(experiments);
+            result.getFetchOptions().withExperimentsUsing(getFetchOptions().withExperiments());
+        }
     }
-
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/property/PropertyTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/property/PropertyTranslator.java
index e5cae57db0a9013a2a719fa49f8222b4a5858369..bd11295fdccb46b61e60b45ad593773b0571974e 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/property/PropertyTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/property/PropertyTranslator.java
@@ -28,7 +28,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityPropertiesHolder;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE;
-import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory;
 import ch.systemsx.cisd.openbis.generic.shared.translator.EntityPropertyTranslator;
 import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils;
 
@@ -38,13 +37,9 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils;
 public class PropertyTranslator extends AbstractCachingTranslator<IEntityPropertiesHolder, Map<String, String>, PropertyFetchOptions>
 {
 
-    private IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory;
-
-    public PropertyTranslator(TranslationContext translationContext, IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory,
-            PropertyFetchOptions fetchOptions)
+    public PropertyTranslator(TranslationContext translationContext, PropertyFetchOptions fetchOptions)
     {
         super(translationContext, fetchOptions);
-        this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory;
     }
 
     @Override
@@ -60,7 +55,7 @@ public class PropertyTranslator extends AbstractCachingTranslator<IEntityPropert
         List<IEntityProperty> propertiesPE = EntityPropertyTranslator
                 .translate(entity.getProperties(),
                         new HashMap<PropertyTypePE, PropertyType>(),
-                        managedPropertyEvaluatorFactory);
+                        getTranslationContext().getManagedPropertyEvaluatorFactory());
 
         for (IEntityProperty iEntityProperty : propertiesPE)
         {
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/sample/SampleTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/sample/SampleTranslator.java
index c6d5a51fee4889088471eefe2874c5b084567aae..5bccd4e7cd0311d589fcc2c7ca468e10b263e269 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/sample/SampleTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/sample/SampleTranslator.java
@@ -36,18 +36,13 @@ import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.sample.SamplePermId;
 import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SampleByIdentiferValidator;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
-import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory;
 
 public class SampleTranslator extends AbstractCachingTranslator<SamplePE, Sample, SampleFetchOptions>
 {
 
-    private IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory;
-
-    public SampleTranslator(TranslationContext translationContext, IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory,
-            SampleFetchOptions fetchOptions)
+    public SampleTranslator(TranslationContext translationContext, SampleFetchOptions fetchOptions)
     {
         super(translationContext, fetchOptions);
-        this.managedPropertyEvaluatorFactory = managedPropertyEvaluatorFactory;
     }
 
     @Override
@@ -99,15 +94,16 @@ public class SampleTranslator extends AbstractCachingTranslator<SamplePE, Sample
 
         if (getFetchOptions().hasSpace())
         {
-            Space space = new SpaceTranslator(getTranslationContext(), getFetchOptions().withSpace()).translate(samplePe
-                    .getSpace());
+            Space space =
+                    new SpaceTranslator(getTranslationContext(), getFetchOptions().withSpace()).translate(samplePe
+                            .getSpace());
             result.setSpace(space);
             result.getFetchOptions().withSpaceUsing(getFetchOptions().withSpace());
         }
 
         if (getFetchOptions().hasProperties())
         {
-            result.setProperties(new PropertyTranslator(getTranslationContext(), managedPropertyEvaluatorFactory, getFetchOptions().withProperties())
+            result.setProperties(new PropertyTranslator(getTranslationContext(), getFetchOptions().withProperties())
                     .translate(samplePe));
             result.getFetchOptions().withPropertiesUsing(getFetchOptions().withProperties());
         }
@@ -122,7 +118,7 @@ public class SampleTranslator extends AbstractCachingTranslator<SamplePE, Sample
         {
             List<Sample> children =
                     new ListTranslator().translate(samplePe.getChildren(), new SampleTranslator(getTranslationContext(),
-                            managedPropertyEvaluatorFactory, getFetchOptions()
+                            getFetchOptions()
                                     .withChildren()));
             result.setChildren(children);
             result.getFetchOptions().withChildrenUsing(getFetchOptions().withChildren());
@@ -131,7 +127,7 @@ public class SampleTranslator extends AbstractCachingTranslator<SamplePE, Sample
         if (getFetchOptions().hasContainer())
         {
             Sample container =
-                    new SampleTranslator(getTranslationContext(), managedPropertyEvaluatorFactory, getFetchOptions().withContainer())
+                    new SampleTranslator(getTranslationContext(), getFetchOptions().withContainer())
                             .translate(samplePe.getContainer());
             result.setContainer(container);
             result.getFetchOptions().withContainerUsing(getFetchOptions().withContainer());
@@ -141,7 +137,7 @@ public class SampleTranslator extends AbstractCachingTranslator<SamplePE, Sample
         {
             List<Sample> contained =
                     new ListTranslator().translate(samplePe.getContained(), new SampleTranslator(getTranslationContext(),
-                            managedPropertyEvaluatorFactory, getFetchOptions()
+                            getFetchOptions()
                                     .withContained()));
             result.setContained(contained);
             result.getFetchOptions().withContainedUsing(getFetchOptions().withContained());
@@ -151,7 +147,7 @@ public class SampleTranslator extends AbstractCachingTranslator<SamplePE, Sample
         {
             List<DataSet> dataSets =
                     new ListTranslator().translate(samplePe.getDatasets(), new DataSetTranslator(getTranslationContext(),
-                            managedPropertyEvaluatorFactory, getFetchOptions().withDataSets()));
+                            getFetchOptions().withDataSets()));
             result.setDataSets(dataSets);
             result.getFetchOptions().withDataSetsUsing(getFetchOptions().withDataSets());
         }
@@ -223,7 +219,7 @@ public class SampleTranslator extends AbstractCachingTranslator<SamplePE, Sample
         @Override
         protected Map<ExperimentPE, Experiment> getTranslatedMap(Collection<ExperimentPE> originalCollection)
         {
-            return new ExperimentTranslator(getTranslationContext(), managedPropertyEvaluatorFactory, getFetchOptions()
+            return new ExperimentTranslator(getTranslationContext(), getFetchOptions()
                     .withExperiment()).translate(originalCollection);
         }
 
@@ -264,7 +260,7 @@ public class SampleTranslator extends AbstractCachingTranslator<SamplePE, Sample
         @Override
         protected Map<SamplePE, Sample> getTranslatedMap(Collection<SamplePE> originalCollection)
         {
-            return new SampleTranslator(getTranslationContext(), managedPropertyEvaluatorFactory, getFetchOptions()
+            return new SampleTranslator(getTranslationContext(), getFetchOptions()
                     .withParents()).translate(originalCollection);
         }
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/space/SpaceTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/space/SpaceTranslator.java
index 861c66088fc055d559d3a92528ee2e1605808a5b..f1d3368a5ded4e0a89d330260956b781c42b034f 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/space/SpaceTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/entity/space/SpaceTranslator.java
@@ -16,10 +16,15 @@
 
 package ch.ethz.sis.openbis.generic.server.api.v3.translator.entity.space;
 
+import java.util.List;
+
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.AbstractCachingTranslator;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.Relations;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.TranslationContext;
+import ch.ethz.sis.openbis.generic.server.api.v3.translator.common.ListTranslator;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.entity.person.PersonTranslator;
+import ch.ethz.sis.openbis.generic.server.api.v3.translator.entity.project.ProjectTranslator;
+import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.project.Project;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.space.Space;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.space.SpaceFetchOptions;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.space.SpacePermId;
@@ -30,7 +35,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
  */
 public class SpaceTranslator extends AbstractCachingTranslator<SpacePE, Space, SpaceFetchOptions>
 {
-
     public SpaceTranslator(TranslationContext translationContext, SpaceFetchOptions fetchOptions)
     {
         super(translationContext, fetchOptions);
@@ -59,6 +63,15 @@ public class SpaceTranslator extends AbstractCachingTranslator<SpacePE, Space, S
                     .getRegistrator()));
             result.getFetchOptions().withRegistratorUsing(getFetchOptions().withRegistrator());
         }
+
+        if (getFetchOptions().hasProjects())
+        {
+            List<Project> projects =
+                    new ListTranslator().translate(space.getProjects(), new ProjectTranslator(getTranslationContext(),
+                            getFetchOptions().withProjects()));
+            result.setProjects(projects);
+            result.getFetchOptions().withProjectsUsing(getFetchOptions().withProjects());
+        }
     }
 
 }