diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/data/CommonExternalDataColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/data/CommonExternalDataColDefKind.java
index 8598a59b9c472f9369c830edcdc7441cf4164778..831bab04ea4c0806e14c440377a7e8b6c002af7e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/data/CommonExternalDataColDefKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/data/CommonExternalDataColDefKind.java
@@ -23,6 +23,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 
 /**
@@ -163,7 +164,8 @@ public enum CommonExternalDataColDefKind implements IColumnDefinitionKind<Extern
             @Override
             public String tryGetValue(ExternalData entity)
             {
-                return entity.getFileFormatType().getCode();
+                FileFormatType fileFormatType = entity.getFileFormatType();
+                return fileFormatType == null ? null : fileFormatType.getCode();
             }
         }),
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java
index f6440ba4bc900c94f14b2a3b0d5478e07de6f26c..12800e929800133ce0665da0898d292bc293d2db 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java
@@ -24,8 +24,10 @@ import it.unimi.dsi.fastutil.longs.LongSet;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import ch.rinn.restrictions.Friend;
@@ -89,11 +91,11 @@ public class DatasetLister implements IDatasetLister
 
     private final Long2ObjectMap<DataStore> dataStores = new Long2ObjectOpenHashMap<DataStore>();
 
-    private final Long2ObjectMap<FileFormatType> fileFormatTypes =
-            new Long2ObjectOpenHashMap<FileFormatType>();
+    private final Map<Long, FileFormatType> fileFormatTypes =
+            new HashMap<Long, FileFormatType>();
 
-    private final Long2ObjectMap<LocatorType> locatorTypes =
-            new Long2ObjectOpenHashMap<LocatorType>();
+    private final Map<Long, LocatorType> locatorTypes =
+            new HashMap<Long, LocatorType>();
 
     public static IDatasetLister create(IDAOFactory daoFactory, String baseIndexURL)
     {
@@ -404,8 +406,7 @@ public class DatasetLister implements IDatasetLister
     private ExternalData createPrimaryDataset(DatasetRecord record)
     {
         ExternalData dataset = createBasicDataset(record);
-        dataset.setComplete(BooleanOrUnknown.tryToResolve(BooleanOrUnknown
-                .valueOf(record.is_complete)));
+        dataset.setComplete(resolve(record.is_complete));
         dataset.setDataProducerCode(escapeHtml(record.data_producer_code));
         dataset.setDataStore(dataStores.get(record.dast_id));
         dataset.setDerived(record.is_derived);
@@ -431,6 +432,15 @@ public class DatasetLister implements IDatasetLister
         return dataset;
     }
 
+    private Boolean resolve(String booleanRepresentative)
+    {
+        if (booleanRepresentative == null)
+        {
+            return null;
+        }
+        return BooleanOrUnknown.tryToResolve(BooleanOrUnknown.valueOf(booleanRepresentative));
+    }
+
     private ExternalData createBasicDataset(DatasetRecord record)
     {
         ExternalData dataset = new ExternalData();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetRecord.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetRecord.java
index 9339a0160b53236da500ea043a87d3926e335b10..b0bb13ae2a555676796252da040c31be844fa2fe 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetRecord.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetRecord.java
@@ -37,9 +37,9 @@ public class DatasetRecord extends CodeRecord
 
     public String location;
 
-    public long ffty_id;
+    public Long ffty_id;
 
-    public long loty_id;
+    public Long loty_id;
 
     public String is_complete; // maps to BooleanOrUnknown
 }
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingFullQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingFullQuery.java
index 1f3459ae60396f963659e913d8d12fa50c54b136..5a506bc2377c6fc278030a46056ce43036f0a31d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingFullQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingFullQuery.java
@@ -48,7 +48,7 @@ public interface IDatasetListingFullQuery extends IDatasetListingQuery
      * <p>
      * <em>Do not call directly, call via {@link IDatasetSetListingQuery}</em>
      */
-    @Select(sql = "select * from data left outer join external_data on data.id = external_data.data_id where data.id = any(?{1})", parameterBindings =
+    @Select(sql = "select * from data join external_data on data.id = external_data.data_id where data.id = any(?{1})", parameterBindings =
         { LongSetMapper.class }, fetchSize = FETCH_SIZE)
     public DataIterator<DatasetRecord> getDatasets(LongSet entityIds);
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
index 5f41ff9d4a7761a825d132d550ad77312aac7cde..1e8d1a71b6e6162b6b1593f744474fd9de934df3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
@@ -44,7 +44,7 @@ public interface IDatasetListingQuery extends TransactionQuery, IPropertyListing
     /**
      * Returns the datasets for the given experiment id.
      */
-    @Select(sql = "select * from data left outer join external_data on data.id = external_data.data_id where data.expe_id=?{1}", fetchSize = FETCH_SIZE)
+    @Select(sql = "select * from data join external_data on data.id = external_data.data_id where data.expe_id=?{1}", fetchSize = FETCH_SIZE)
     public DataIterator<DatasetRecord> getDatasetsForExperiment(long experimentId);
 
     /**