So I have a contact who has changed companies, how do I update contact but keep the opportunities with previous company?
Speaking from the programming, data perspective, opportunities do not have an association with companies in any way shape or form. The association to a company is directly tied to the contact. In practical terms, this means that if you change the company on the contact that has the opportunity then the contacts association with the new company assignment is what will be reflected. The only option for referencing the old company on the opportunity record would be to populate a custom field with that information on the opportunity. You would be able to filter lists based on that custom field but in general reporting you might be more limited.
Thank you for the response