Hi @Chime ,
Good points from both 11manish and Syed above, I'd flag one thing that needs resolving first, since it directly affects the approach: you mentioned the email varies by Group membership. This is important because it means email alone can't reliably identify a unique Contact record, the same person could have different emails depending on which Group they're tied to in your source data.
Two ways to handle this:
Option A : If Contact Email is meant to be the same person's varying "context email" (not proof of a different person):
Then don't use emailaddress1 as your lookup key directly. Instead, resolve the Contact using a combination of Contact Name + Contact Email together to narrow down to the right person, or better, if your source Excel has any other stable identifier (employee ID, CRM ID, external system ID), use that as your alternate key on Contact, much safer than relying on name + email matching, which can still collide.
Option B : If different email per Group genuinely means it could be a different Contact record:
Then your matching logic should be Contact Email exact match only - no fallback to name and any row where the email doesn't resolve to exactly one existing Contact should go to your error/review list (as Syed suggested), rather than guessing.
Practically, I'd do this as a staging table approach rather than pure Power Automate row-by-row (which gets slow for larger volumes):
1. Import your raw Excel data into a staging Dataverse table (or even just a temp SQL/Dataflow staging area) with all four columns as plain text.
2. Run a Power Automate flow or a Dataflow with a lookup/join step matching Contact Email (or your combo key) against existing Contacts, and Group Name against existing Groups.
3. Flag rows with 0 or 2+ matches into an exceptions table for manual review, don't auto-create ambiguous relationships.
4. Only then bulk-create the Contact Group rows using the resolved Contact GUID + Group GUID, ideally via the Dataverse Web API bulk operations (or ExecuteMultiple) for performance if volume is high.
This avoids the standard Import Wizard's name-based resolution entirely, and gives you a clean audit trail of what matched vs. what needs manual review.
Thanks!