My experience: I became project manager of a content management system. The project, when I took over, was 4 years late and several million dollars over budget.
When originally considered, it had been decided to use Zope because it was open-source and "we can extend it to do what we need". It was felt that it would be cheaper to simply customize it rather than buy a proprietary product.
Unfortunately, it required too much customization for our needs so a contract was signed with the Zope corp. to customize it for us (Zope 3 was built based on our needs). Due to poor management, the project specs continuously changed so the Zope people were never able to give a working product to us.
When I came onboard, I was able to kill off the project and we ended up buying an OTS product that met most of our needs well enough that we could use it. Though they spent 5 years and millions of dollars on Zope, we never once got a product that we could even user test, much less put into production.
So, my advice is to ensure that your in-house version can actually be built in-house. Any outside assistance you may require needs to be heavily negotiated and the contract managed correctly.
You may consider using an open-source product and building upon it. Just be aware of the limitations it may have and how much work your in-house programmers may need to do to it. If you have the talent, time, and money then rolling your own will probably be better in the long run.
If you do buy OTS, ensure that it has good API and other developer support so you don't have to have all customization done by the company itself.