Here are some key points from this implementation:
- Triggered on looking up/linking the Primary Contact to a Deal/Opportunity in the CRM
- Reads Contact Roles related list and defines the matching Contact there as “Primary”
- This could be used to define any Contact Role available, based on a specific lookup field in the Opportunity