I understand the problem...
My question is: What if i want a contact in my personal address book to show up in one or many of the company's address books to?!?
One way to solve this problem:
Why not "remember" the rights of the initial address book where the Contact gets created?
If i create the Contact in the Company address book the Contact is owned by this address book. If i "add/link" it later to my personal address book it still got the rights of the company address book because it got created there plus a read right in my personal address book. If i want to modify the contact inside of my personal address book but have no right in the company address book i still could "copy" or "make local" or "duplicate locally" or whatever you want to call it inside my local address book and then be able to modify it. (If i copy it there are two contacts now and housekeeping is not good but i think thats a rare case)
The other way around:
If i add a Contact in my personal address book and later add it (wich implements i got read or even better a special "link" right in the companies address book) to a company or shared address book it still remembers the rights of my local address book plus the read right inside of the companies address book. If someone is allowed to edit my address book he could modify the Contact.
If i want to get other users the rights to modify the contact i could move instead of link the contact to the companys adressbook or i could grant the same rights to my personal address book as the company address book has (which is crazy but...) But this would require that i have write rights in both address books
To some it up: This would be a new concept of linking contacts to an address book and probably a special link right!
So i could link or move a contact which are two different things!
What do you think?