You are very close. The reason you are getting multiple calendar invites is because the Create event action is inside an Apply to each loop, which creates a separate meeting for every person.
To fix this, remove the loop entirely. Outlook supports sending one meeting invite to multiple attendees if their email addresses are passed as a single string separated by semicolons.
Add a Select action after your trigger. In the From field, use your multi-person column (make sure to use the internal name if needed). In the mapping, switch to text mode and use:
item()?['Email']
Then in the Create event (V4) action, set the Required Attendees field to:
join(coalesce(body('Select'), createArray()), ';')
This will send one meeting invite to all users.
To support updates, change your trigger to When an item is created or modified. Add a SharePoint column called CalendarEventID to store the Outlook event ID.
Use a condition:
- If CalendarEventID is empty, create the event and store the ID back in SharePoint
- If it is not empty, use Update event (V4) and pass the stored ID to update the existing meeting
Finally, to prevent the flow from triggering itself in a loop, add a trigger condition to ignore updates made by your service account, and enable concurrency control set to 1 to avoid overlapping runs.
This setup ensures a single meeting is created and stays in sync with SharePoint updates.
✅ If this answer helped resolve your issue, please mark it as Accepted so it can help others with the same problem.
👍 Feel free to Like the post if you found it useful.
Sunil Kumar Pashikanti, Moderator
Blog: https://sunilpashikanti.com/posts/