I have an Organizations table, a Contacts table and a Phone table with records related back to either an Organization or a Contact via two match fields. This allows me to show just the Organization phone numbers in a portal when viewing an Organization record and both the Contact phone numbers and the Contact's parent Organization phone numbers when viewing a Contact (using a calced multi-line key).
Users can select either a contact phone number or a parent organization phone number as the contact's default/primary phone number.
Where I'm running into trouble is phone extensions. If the phone record belongs to the contact, it's no big deal. However, if the phone number is a shared Organization phone number, it gets tricky. At the moment I don't see any way to do this other than making a copy of the organization phone record for the contact so that the contact can have his or her own extension. If a copy is made, use portal filtering to hide the shared organization number and show the contact-specific copy instead in the contact record's Phone Numbers portal. If the main organization phone record changes, update all contact phone record copies via a script trigger.
Am I on the right track? Any suggestions on how to handle this situation? Thanks!