Check out my branch line (branch - Rene) of our shared training project. There you will find your answer - in the IVK_CommitSubscription microflow an example of submicroflow in a custom save scenario - as event handler in the entity "Subscription" as before commit event
You can create a microflow for example IVKEntityNameValidate which returns a boolean, as input you should set the entity to validate. Create a variable valid and set it to true, do all checks, if a check fails, set the variable valid to false and use validationfeedback to show message to user. Keep checking even one check fails, this way you will do all validations and return all messages at once. At the end return the variable valid.
If this microflow returns true, commit otherwise exit.
You should create a custom save microflow button instead of the default save button. First action is to call the microflow specified above and 2nd check the output of that microflow.
You could use the Before Commit event in combination with the microflow, but be aware that event is triggered every time you commit with events.
On change microflows can be used to verify single fields. And you could re-use those microflows in other parts of your projects. When doing a custom save action for instance the save microflow could call the other microflow to double check the requirement of that field.
See the part in the documentation about calling microflows from other microflows.