The field validation is firing earlier than the BeanPersistController.preInsert(). This means that if a property is populated via the perInsert() method .. and it has a NotNull field then the validation will fail.
Fixed - moved the validation to fire after any preInsert or preUpdate.