diff --git a/common/source/java/ch/systemsx/cisd/common/parser/AbstractParserObjectFactory.java b/common/source/java/ch/systemsx/cisd/common/parser/AbstractParserObjectFactory.java
index f6f20d05c7eca80cab515050f61016fd77fe5a28..92a5e4e38b24346a8044abad621c267a06300ef2 100644
--- a/common/source/java/ch/systemsx/cisd/common/parser/AbstractParserObjectFactory.java
+++ b/common/source/java/ch/systemsx/cisd/common/parser/AbstractParserObjectFactory.java
@@ -21,6 +21,8 @@ import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.lang.StringUtils;
+
 import ch.systemsx.cisd.common.converter.Converter;
 import ch.systemsx.cisd.common.converter.ConverterPool;
 import ch.systemsx.cisd.common.utilities.ClassUtils;
@@ -100,10 +102,10 @@ public abstract class AbstractParserObjectFactory<E> implements IParserObjectFac
     /**
      * Checks given <code>IPropertyMapper</code>.
      * <p>
-     * This method tries to find properties declared in given <code>IPropertyMapper</code> that
-     * are not in labels in annotated write methods (throws a
-     * <code>UnmatchedPropertiesException</code>) or mandatory fields that could not be found in
-     * the same annotated write methods (throws a <code>MandatoryPropertyMissingException</code>).
+     * This method tries to find properties declared in given <code>IPropertyMapper</code> that are
+     * not in labels in annotated write methods (throws a <code>UnmatchedPropertiesException</code>)
+     * or mandatory fields that could not be found in the same annotated write methods (throws a
+     * <code>MandatoryPropertyMissingException</code>).
      * </p>
      */
     private final void checkPropertyMapper(final Class<E> clazz, final IPropertyMapper propMapper)
@@ -145,7 +147,17 @@ public abstract class AbstractParserObjectFactory<E> implements IParserObjectFac
         {
             throw new IndexOutOfBoundsException(column, lineTokens);
         }
-        return lineTokens[column];
+        String value = lineTokens[column];
+        checkMandatory(value, propertyModel.getCode());
+        return value;
+    }
+
+    private void checkMandatory(String value, String code)
+    {
+        if (beanAnalyzer.isMandatory(code) && StringUtils.isBlank(value))
+        {
+            throw new MandatoryPropertyMissingException(code);
+        }
     }
 
     /**
diff --git a/common/source/java/ch/systemsx/cisd/common/parser/MandatoryPropertyMissingException.java b/common/source/java/ch/systemsx/cisd/common/parser/MandatoryPropertyMissingException.java
index ac76b1177fcd3f9b6e9094211d77c23eb7c95753..a20260f77a16fdcab8138839f89246692f7e8ed7 100644
--- a/common/source/java/ch/systemsx/cisd/common/parser/MandatoryPropertyMissingException.java
+++ b/common/source/java/ch/systemsx/cisd/common/parser/MandatoryPropertyMissingException.java
@@ -28,11 +28,19 @@ import ch.systemsx.cisd.common.collections.CollectionUtils;
  */
 public final class MandatoryPropertyMissingException extends ParserException
 {
-    private static final String MESSAGE_FORMAT =
+    private static final String MISSING_PROPERTY_COLUMN =
             "Mandatory column(s) %s are missing (mandatory columns are %s).";
 
+    private static final String MISSING_PROPERTY_VALUE =
+            "Missing value for the mandatory column '%s'.";
+
     private static final long serialVersionUID = 1L;
 
+    public MandatoryPropertyMissingException(final String propertyField)
+    {
+        super(String.format(MISSING_PROPERTY_VALUE, propertyField));
+    }
+
     public MandatoryPropertyMissingException(final Set<String> mandatoryFields,
             final Set<String> missingMandatoryProperties)
     {
@@ -44,7 +52,7 @@ public final class MandatoryPropertyMissingException extends ParserException
     {
         assert missingMandatoryProperties != null : "Missing mandatory properties can not be null.";
         assert missingMandatoryProperties.size() > 0 : "No reason to throw this exception.";
-        return String.format(MESSAGE_FORMAT, toString(missingMandatoryProperties),
+        return String.format(MISSING_PROPERTY_COLUMN, toString(missingMandatoryProperties),
                 toString(mandatoryFields));
     }
 
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/parser/AbstractParserObjectFactoryTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/parser/AbstractParserObjectFactoryTest.java
index 2b4385431635c4ec2f94f614511a610c40801b18..459f89c37d2441b2f808c73021d90930dabe2082 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/parser/AbstractParserObjectFactoryTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/parser/AbstractParserObjectFactoryTest.java
@@ -108,6 +108,25 @@ public final class AbstractParserObjectFactoryTest
         }
     }
 
+    @Test
+    public final void testMandatoryFieldWithoutValue()
+    {
+        final IPropertyMapper propertyMapper = createPropertyMapper(false);
+        final BeanFactory beanFactory = new BeanFactory(Bean.class, propertyMapper);
+        final String[] lineTokens = new String[]
+            { "", "desc", "1" };
+        String errMsg = "Missing value for the mandatory column 'name'.";
+        try
+        {
+            beanFactory.createObject(lineTokens);
+        } catch (MandatoryPropertyMissingException e)
+        {
+            assertEquals(errMsg, e.getMessage());
+            return;
+        }
+        fail("Error expected: " + errMsg);
+    }
+
     @Test
     public final void testTooManyDataColumns()
     {