Ciao,
mi sono soffermato poco sul codice sorgente, ma dalla spiegazione credo di avere una soluzione.
Allora ho il promo blocco try
try
...
...
operazioni
...
...
catch ex as exception
richiamo la procedura inserisciutente.
finally
dispose di tutto :D
end try
ed ecco la procedura inserisciutente
try
...
...
operazioni
...
...
catch ex as exception
finally
dispose di tutto
end try
Nel secondo catch quando fai la rollback metti come ultima istruzione
throw new exception(ex.message & "tuo messaggio")