Re: What about the cost of upgrading ?
The only reason companies "need" access to source code is either:
1. Because the business processes are too closely coupled to the original software;
2. You have important data stored in the software in a proprietary format.
(1) is a management incompetence problem that has nothing to do with the software and everything to do with your company's management, who have clearly failed to identify this rather obvious single point of failure. Placing so much responsibility for your business' continuation on the shoulders of a third party is never a good plan. Managers need to be asking just one question to avoid such situations: "What happens if [$ENTITY] is wiped out overnight by, say, flooding, fire, or being hit by a bus?" If the answer to that question is "Oh sh!t, we're f*cked!", you need to do something about it. Now.
(2) Is an Open Standards problem. Store your data in a standard format for which adequate documentation exists.
Note that in neither case is the correct answer: "we need access to the source code!" If I'm relying upon the services of ISVs, why in blazes would I keep expert programmers on my payroll? If I get source code access, what am I supposed to do with it? Print it out and use it to decorate my offices? Give it to another ISV and just go through the same dangerous cycle again? If the software were that important to my business' core operations, my business deserves to go under.
Businesses are a form of machine and require good design and engineering just as much as any software does. Any component of your business that is fundamental and crucial to its continued operations requires one of two approaches:
1. Do it in-house.
2. ONLY if there is a healthy market with multiple suitable ISVs, so that you always have the option to just switch to another ISV, should you opt for a third-party solution. Even so, a key element in the contract should be that said ISV supports open data format standards, so there is no vendor lock-in.
It's not that hard.