The main problem with the current version is that all objects (domain, dns, mail) are considered as an unique entity. We shouldn't redo the same error here. So, when a domain is added, if setup of one object (DNS, mail...) that compose the entity fail, the recovery process should only take care of what that was failed... For that we will have to provide a error management per object (Mail, DNS ...) status. Since the data in GUI are normalized, that will change nothing the main database. Only error notification will be sent to the administrator/reseller. And then, the administrator have to take care only about errors per object and not to regenerate all the configuration.... Sure, an specific per object debug interface should be provided too.
Note: Sorry for my poor english here, Hard for me to explain who I see the concept.