diff --git a/force_bdss/core/verifier.py b/force_bdss/core/verifier.py
index 8d53f50315001483b68d043cbe97edc91fffa840..85a2a2d631e8a57026b1c1bdf2bbf8ab4e791de1 100644
--- a/force_bdss/core/verifier.py
+++ b/force_bdss/core/verifier.py
@@ -9,17 +9,14 @@ class VerifierError(HasStrictTraits):
     error = Str()
 
 
-
 def verify_workflow(workflow):
     """Verifies if the workflow can be executed, and specifies where the
     error occurs and why.
 
     """
     result = []
-
     result.extend(_check_mco(workflow))
     result.extend(_check_execution_layers(workflow))
-
     return result
 
 
@@ -39,21 +36,26 @@ def _check_mco(workflow):
         errors.append(VerifierError(subject=mco,
                                     error="MCO has no defined parameters"))
 
-    for param in mco.parameters:
+    for idx, param in enumerate(mco.parameters):
         if len(param.name.strip()) == 0:
             errors.append(VerifierError(subject=param,
-                                        error="Parameter has empty name"))
+                                        error="Parameter {} "
+                                              "has empty name".format(idx)))
         if len(param.type.strip()) == 0:
             errors.append(VerifierError(subject=param,
-                                        error="Parameter has empty type"))
+                                        error="Parameter {} "
+                                              "has empty type".format(idx)))
 
-    for kpi in mco.kpis:
+    for idx, kpi in enumerate(mco.kpis):
         if len(kpi.name.strip()) == 0:
             errors.append(VerifierError(subject=kpi,
-                                        error="Kpi has empty name"))
+                                        error="KPI {} has empty name".format(
+                                            idx)))
         if len(kpi.objective.strip()) == 0:
             errors.append(VerifierError(subject=kpi,
-                                        error="Kpi objective is not set"))
+                                        error="KPI {} has empty "
+                                              "objective".format(idx)))
+
     return errors
 
 
@@ -71,17 +73,19 @@ def _check_execution_layers(workflow):
 
         return errors
 
-    for layer in layers:
+    for idx, layer in enumerate(layers):
         if len(layer.data_sources) == 0:
             errors.append(VerifierError(subject=layer,
-                                        error="Layer has no data sources"))
+                                        error="Layer {} has no "
+                                              "data sources".format(idx)))
 
         for ds in layer.data_sources:
-            errors.extend(_check_data_source(ds))
+            errors.extend(_check_data_source(ds, idx))
 
     return errors
 
-def _check_data_source(data_source_model):
+
+def _check_data_source(data_source_model, layer_no):
     errors = []
 
     factory = data_source_model.factory
@@ -108,23 +112,27 @@ def _check_data_source(data_source_model):
     if len(input_slots) != len(data_source_model.input_slot_info):
         errors.append(VerifierError(
             subject=data_source_model,
-            error="Missing input slot name assignment"))
+            error="Missing input slot name assignment "
+                  "in layer {}".format(layer_no)))
 
     for idx, info in enumerate(data_source_model.input_slot_info):
         if len(info.name.strip()) == 0:
             errors.append(VerifierError(
                 subject=data_source_model,
-                error="Undefined name for input parameter {}".format(idx)))
+                error="Undefined name for input "
+                      "parameter {} in layer {}".format(idx, layer_no)))
 
     if len(output_slots) != len(data_source_model.output_slot_info):
         errors.append(VerifierError(
             subject=data_source_model,
-            error="Missing output slot name assignment"))
+            error="Missing output slot name assignment "
+                  "in layer {}".format(layer_no)))
 
     for idx, info in enumerate(data_source_model.output_slot_info):
         if len(info.name.strip()) == 0:
             errors.append(VerifierError(
                 subject=data_source_model,
-                error="Undefined name for output parameter {}".format(idx)))
+                error="Undefined name for output "
+                      "parameter {} in layer {}".format(idx, layer_no)))
 
     return errors
diff --git a/force_bdss/tests/test_core_mco_driver.py b/force_bdss/tests/test_core_mco_driver.py
index d137b2122c554233e3d8cf29273cf544a8a03500..421d5de7a572efabdcb9dd685da3077c0570df74 100644
--- a/force_bdss/tests/test_core_mco_driver.py
+++ b/force_bdss/tests/test_core_mco_driver.py
@@ -233,6 +233,6 @@ class TestCoreMCODriver(unittest.TestCase):
                 ('force_bdss.core_mco_driver', 'ERROR',
                  'MCO has no defined parameters'),
                 ('force_bdss.core_mco_driver', 'ERROR',
-                 'Missing input slot name assignment'),
+                 'Missing input slot name assignment in layer 0'),
                 ('force_bdss.core_mco_driver', 'ERROR',
-                 'Missing output slot name assignment'))
+                 'Missing output slot name assignment in layer 0'))