> For the complete documentation index, see [llms.txt](https://flow-docs.cloudio.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://flow-docs.cloudio.io/stages/validations.md).

# Validations

No more invalid data into your data lake

You can configure one or more validation rules at each flow level. Events that are streamed in will be passed through these validation rules and those events that fail validations will be moved to error queue with `metadata.errorType` as "Validation". e.g. when you configure the `Not Null` validation rule on a event attribute, then any events that come in with missing value for that attribute will be marked as invalid.

{% hint style="info" %}
Validations will be performed before the Transform stage, that way you don't have to worry about invalid data in your transform code.
{% endhint %}

![Validations Tab](https://272493989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LyGZIunpED9t56ZtLzh%2F-LyIQEzN_cr0b88kOzR1%2F-LyIQbKCJEVp4U8Qrd84%2FScreen%20Shot%202020-01-10%20at%2011.07.47%20PM.png?alt=media\&token=8c2bead6-94ce-4112-8faf-f4c5d148978d)

### Testing Validation

You can test your validation by click the "Test Validation" button before submitting them. Update the sample message to test different possibilities.

### Custom Validation

You can use Custom validation type to specify complex conditions in either Java or Groovy script. You can use the full power of Java to perform any complex validations.
