diff --git a/bob/bio/base/tools/algorithm.py b/bob/bio/base/tools/algorithm.py
index e8e7c8375e40c6cf87e9cd0a44dd8c4851bac73a..97740ca143efd46b04ee0fc10cf2604a713ecf1a 100644
--- a/bob/bio/base/tools/algorithm.py
+++ b/bob/bio/base/tools/algorithm.py
@@ -128,6 +128,15 @@ def project(algorithm, extractor, groups = None, indices = None, allow_missing_f
       feature = extractor.read_feature(feature_file)
       # project feature
       projected = algorithm.project(feature)
+
+      if projected is None:
+        if allow_missing_files:
+          logger.debug("... Projection for extracted file %s failed; skipping", feature_file)
+          continue
+        else:
+          logger.error("Projection of file '%s' was not successful", feature_file)
+        continue
+
       # write it
       algorithm.write_feature(projected, projected_file)
 
@@ -265,6 +274,15 @@ def enroll(algorithm, extractor, compute_zt_norm, indices = None, groups = ['dev
           enroll_features = [reader.read_feature(enroll_file) for enroll_file in enroll_files]
 
           model = algorithm.enroll(enroll_features)
+
+          if model is None:
+            if allow_missing_files:
+              logger.debug("... Enrollment for model %s failed; skipping", model_id)
+              continue
+            else:
+              logger.error("Enrollemnt of model '%s' was not successful", model_id)
+            continue
+
           # save the model
           algorithm.write_model(model, model_file)
 
@@ -303,6 +321,15 @@ def enroll(algorithm, extractor, compute_zt_norm, indices = None, groups = ['dev
           t_enroll_features = [reader.read_feature(t_enroll_file) for t_enroll_file in t_enroll_files]
 
           t_model = algorithm.enroll(t_enroll_features)
+
+          if t_model is None:
+            if allow_missing_files:
+              logger.debug("... Enrollment for T-model %s failed; skipping", t_model_id)
+              continue
+            else:
+              logger.error("Enrollemnt of T-model '%s' was not successful", t_model_id)
+            continue
+
           # save model
           algorithm.write_model(t_model, t_model_file)
         else:
diff --git a/bob/bio/base/tools/extractor.py b/bob/bio/base/tools/extractor.py
index 30a19cbe1758cfe7694c8eb9f4c3fc52fabb055b..5872a4ba11aba49e8a3674814f63c9e75721bb60 100644
--- a/bob/bio/base/tools/extractor.py
+++ b/bob/bio/base/tools/extractor.py
@@ -117,6 +117,15 @@ def extract(extractor, preprocessor, groups=None, indices = None, allow_missing_
       data = preprocessor.read_data(data_file)
       # extract feature
       feature = extractor(data)
+
+      if feature is None:
+        if allow_missing_files:
+          logger.debug("... Feature extraction for data file %s failed; skipping", data_file)
+          continue
+        else:
+          logger.error("Feature extraction  of file '%s' was not successful", data_file)
+        continue
+
       # write feature
       extractor.write_feature(feature, feature_file)
     else: