i know of several deployments on which a single CUCM server works for 2 or more companies (end users are actually unaware of this fact) and it can be done, the main issue here is the scalability and the complexity of the dial plan that it requires.
you will need to use partitions and CSS to accomplish this in a way that users from company A cannot reach users from company B.
if they overlap extensions and use the same GW this would also cause trouble, there are several things you need to watch out on the dial plan but it can be done
HTH
javalenc
if this helps, please rate
HTH
java
if this helps, please rate