Currently, whenever you set a Queue with the option to auto retry, for any exception (except Business Exception), a new item will be created and the older one will change to status Failed - Retried.
My suggestion is that the creation of a new (retry) transaction should be controlled via Studio activity “Set Transaction Status,” with a flag “Create retry (if queue supports it).” That way, we could end a transaction as failed with a SystemException when we know that specific exception is not something that a retry could help.
Use of the BusinessException for this case is not the best solution, since it will inevitably confuse our maintenance team with the wrong type of exception.