December 1, 2008 6:18 AM GMT
Here is an alternative ...
For every child request, log a message in any of your debug files(better if can be done in a customer accessible format). Make the logs as detailed as possible, add details of the request type, device being provisioned, IPs and any other useful detail which you can think of.
Now, when any application failure occurs when the data is not saved in database, you'll still have details of the operation including last successful/failed request(in worst case, last but one). Using this data, you can either manually send the provisioing requests to devices again to roll back the failed operation. Better if you can automate this process to take care of sending the provisioning requests on its own.
Here is an use case,
1. You provisioning application want to provision a customer for a broadband connection.
2. Your application breaks down the requests in child request, for AAA, routers etc.
3. AAA was successful, you add a log message.
4. Lets say, during second child request for provisioning router your application fails. This operation will not be logged in debug file.
5. Now from logs you can find out that which child requests were successful and you can roll them back.
The fix above is very vague but I guess idea should be clear. I am sure there might be some simpler and easier ways to handle this.