Hi Sean,
My mind might serve me wrong, but throwing validation exceptions in your command handler does not necessarily mean your command handler cannot be idempotent, right?
Regardless, this is indeed not so much an Axon problem as just a thing to deal with when building applications like this.
Making your command handlers idempotent would be the ideal approach if you’d ask me.
At least in such a manner that retrying said command (automatically through the [RetryScheduler](https://github.com/AxonFramework/AxonFramework/blob/master/messaging/src/main/java/org/axonframework/commandhandling/gateway/RetryScheduler.java)
for example) is safe to do.
How you would make the command handling idempotent is dependent on your domain of course.
You can find some thoughts on this on the DDD/CQRS forum as well.
Hope this helps Sean!
Cheers,
Steven