Validation

Test validation on marshal and rules on save.
Validating your forms

Explanations

In the form above the name must be present and unique (not existing in the current table).
So "Dog" or "Frog" fails because it already exists. Furthermore the confirm fields needs to be checked.
This is all validation (on marshal).

Domain rules are run separatly afterwards. The example one here checks if the data in name is equal to either "Mouse" or "Cat" and only then allows the rules to pass - and thus to save.

Check it out yourself. Unfortunately, there is no feedback on the failing domain rules. And it seems they run only when validation itself passed, so it is a two-step process. So I would recommend to skip them as much as possible, and shift all validation focus on the validation level (marshal) then.