diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java
index 1022053cb890fbbf7550d70e35cacdfdc102c545..ae11cac8775513978fa6e547a98d76ccb007392c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java
@@ -363,12 +363,23 @@ final class ExternalDataDAO extends AbstractGenericEntityWithPropertiesDAO<Exter
             Long fileFormatTypeID = externalData.getFileFormatType().getId();
             char complete = externalData.getComplete().name().charAt(0);
             Long storageFormatTermID = externalData.getStorageFormatVocabularyTerm().getId();
-            executeUpdate(
-                    "insert into "
-                            + TableNames.EXTERNAL_DATA_TABLE
-                            + " (data_id, share_id, location, size, loty_id, ffty_id, is_complete, cvte_id_stor_fmt) "
-                            + "values (?, ?, ?, ?, ?, ?, ?, ?)", id, shareId, location, size,
-                    locatorTypeID, fileFormatTypeID, complete, storageFormatTermID);
+            if (size == null)
+            {
+                executeUpdate(
+                        "insert into "
+                                + TableNames.EXTERNAL_DATA_TABLE
+                                + " (data_id, share_id, location, loty_id, ffty_id, is_complete, cvte_id_stor_fmt) "
+                                + "values (?, ?, ?, ?, ?, ?, ?)", id, shareId, location,
+                        locatorTypeID, fileFormatTypeID, complete, storageFormatTermID);
+            } else
+            {
+                executeUpdate(
+                        "insert into "
+                                + TableNames.EXTERNAL_DATA_TABLE
+                                + " (data_id, share_id, location, size, loty_id, ffty_id, is_complete, cvte_id_stor_fmt) "
+                                + "values (?, ?, ?, ?, ?, ?, ?, ?)", id, shareId, location, size,
+                        locatorTypeID, fileFormatTypeID, complete, storageFormatTermID);
+            }
             hibernateTemplate.evict(loaded);
         }
         hibernateTemplate.update(externalData);
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAOTest.java
index 9760c4fae7c4479b1f1c636360ab6d8105a57ddd..fbc94392c1bbed0e39de70f0ee170411c020a71a 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAOTest.java
@@ -155,7 +155,18 @@ public final class ExternalDataDAOTest extends AbstractDAOTest
     }
 
     @Test
-    public void testUpdateDataSetAquiredFromSample()
+    public void testUpdateDataSetAquiredFromSampleWithoutDataSetSize()
+    {
+        checkUpdate(null);
+    }
+
+    @Test
+    public void testUpdateDataSetAquiredFromSampleWithDataSetSize()
+    {
+        checkUpdate(4711L);
+    }
+    
+    private void checkUpdate(Long size)
     {
         IExternalDataDAO externalDataDAO = daoFactory.getExternalDataDAO();
         DataPE data = new DataPE();
@@ -180,7 +191,7 @@ public final class ExternalDataDAOTest extends AbstractDAOTest
         externalData.setLocatorType(pickALocatorType());
         externalData.setLocation("abcd");
         externalData.setShareId("share-42");
-        externalData.setSize(4711L);
+        externalData.setSize(size);
         externalData.setComplete(BooleanOrUnknown.U);
         externalData.setStorageFormatVocabularyTerm(pickAStorageFormatVocabularyTerm());
         externalData.setPlaceholder(true);