One of the developers here was building a newsletter system recently and they wanted to use just one 3rd party mail system to manage the user lists and groups etc. I stressed that we must make the system independent and to store the lists of users and groups ourselves and only replicate to the email marketing system. That way, if we ever fell out with the email marketing software we could just open a relationship with another company and replicate the same information there.
As a company, we never implement something without sitting down and talking about the pro's and con's first. Don't get me wrong, we don't have meetings for the sake of meetings but important matters we take the time to discuss.
When we planned our CMS, we took 2 weeks to plan the system and how it would work. We are 18 months into the development cycle and the only thing we can think of that we would do differently is to use url routing over our own url engine. It's not even a massive change to implemement so we are lucky. The 2 weeks planning has saved months of re-factoring for future.
We now have news, galleries, ecommerce, content driven pages, personalised url campaigns, newsletters, e-newsletters. The list goes on. All with no regrets!
It's unfortunate that a company has to suffer bad planning and bad decisions, the main thing is learning from them