Hi Power Automate Community,
I'm trying to build an automated rotation system for a call center support team using Microsoft Lists, Power Automate, and Planner, based on a detailed guide. The system manages 27 staff (8 leads, 19 staff across 4 teams) with morning and afternoon shifts, ensuring fair rotation and backups. The guide uses SharePoint lists for Staff Directory and Assignment Log, and Power Automate flows for assignments.
I've set up the Staff Directory (static list with name/email, team, role, rotation order, assigned count, last assigned, last backup used - read-only for staff) and Assignment Log (dynamic list for daily assignments, backups, check-ins - staff can only edit "Signed In").
The flow is the "Morning Assignment Flow" (scheduled at 8:00 AM weekdays). I've built it step by step, but I'm stuck on the "Create item" step for adding the lead row to the Assignment Log. It fails with a "user not found" error when trying to set the Assigned Name (a Person or Group field in SharePoint).
Here's a summary of the guide and what I've done:
Overview from Guide
- Fetch staff from Staff Directory.
- Filter and sort leads by rotation order.
- Append selected lead to an array variable (Assigned Users).
- Filter unassigned leads for backups, map and sort by last backup used.
- Create row in Assignment Log with Assigned Name, Backup1, Backup2 (all Person or Group fields), Day, Shift, Role, Signed In, Reassigned.
- Update Staff Directory with new counts/dates.
My Flow Steps So Far (with Renamed Titles for Clarity):
- Recurrence (weekdays at 8 AM).
- Initialize variable - TODAY (string, formatDateTime(utcNow(), 'dddd')).
- Initialize variable - ASSIGNED USERS (array, []).
- Get items - STAFF DIRECTORY (site: [redacted SharePoint site], list: Staff Directory, top count 50).
- Filter array - STAFF DIRECTORY LEADS (from Get items value, Role Value = 'Lead').
- Compose - CHECK NUMBER OF LEADS (length(body('Filter array - STAFF DIRECTORY LEADS'))).
- Select - SPECIFIC LEADS (from Filter array body, map: {"Rotation Order":item()?['Rotation_x0020_Order'], "Assigned Count":item()?['Assigned_x0020_Count'], "Last Assigned":item()?['Last_x0020_Assigned'], "Name":item()?['Name/Email'], "Item ID":item()?['ID']} ).
- Compose - SORT LEADS BY ROTATION ORDER (sort(body('Select - SPECIFIC LEADS'), 'Rotation Order', 'asc')).
- Append to array variable - APPEND LEAD TO ASSIGNED USERS (variables('ASSIGNED USERS'), first(outputs('Compose - SORT LEADS BY ROTATION ORDER'))?['Name']).
- Filter array - UNASSIGNED LEAD BACKUPS (from Get items value, Role Value = 'Lead' AND Name/Email does not contain first(outputs('Compose - SORT LEADS BY ROTATION ORDER'))?['Name']).
- Select - MAP LEAD BACKUP DATA (from Filter array body, map: [{"Last Backup Used": item()?['Last_x0020_Backup_x0020_Used'], "Name": item()?['Name/Email'], "Item ID": item()?['ID']}] ).
- Compose - SORT LEADS BACKUPS (sort(body('Select - MAP LEAD BACKUP DATA'), 'Last_x0020_Backup_x0020_Used', 'asc')).
- Create item - LEAD ASSIGNMENT ROW (site: [redacted], list: Assignment Log, fields as below).
Problem Step: Create Item - LEAD ASSIGNMENT ROW
- Day: Variables > TODAY
- Shift: Morning
- Role: Lead
- Signed In: No
- Reassigned: No
- Content Type ID: Item
- Assigned Name, Backup1, Backup2: These are Person or Group fields in SharePoint, expecting user emails.
The flow runs fine up to this step, but "Create item" fails with errors like "The specified user could not be found."
Expressions I've Tried for Assigned Name, Backup1, Backup2:
- Plain: first(outputs('Compose-SORT_LEADS_BY_ROTATION_ORDER'))?['Name'] for Assigned Name; similar for backups.
- Error: "The specified user {"@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser","Claims":"i:0#.f|membership|[redacted email]","DisplayName":"[redacted]","Email":"[redacted email]","Picture":"[redacted]","Department":"[redacted]","JobTitle":"[redacted]"} could not be found."
- With Claims prefix: concat('i:0#.f|membership|', first(outputs('Compose-SORT_LEADS_BY_ROTATION_ORDER'))?['Name'])
- Error: Similar "user not found", but input shows prefixed with full object.
- Extracting Claims: first(outputs('Compose-SORT_LEADS_BY_ROTATION_ORDER'))?['Name']?['Claims']
- Error: "Property 'Claims' cannot be selected. Property selection is not supported on values of type 'String'."
- Skip for Backup2: skip(outputs('Compose-SORT_LEADS_BACKUPS'),1)[0]?['Name'] (with variations including ?['body/value'] which caused array selection errors).
The Staff Directory has "Name/Email" as a Person or Group column, so Get items returns user objects with Claims, Email, etc. But when I try to pass just the email or claims, SharePoint doesn't recognize the user.
Notes:
- Dynamic content shows "Outputs" under Compose steps, with fields like Rotation Order, Assigned Count, Name (which is the email/user object).
- List settings: Assigned Name, Backup1, Backup2 are Person or Group (allow single value, show Email).
- Tested manually running the flow; previous steps output correct sorted arrays with user emails.
I've tried multiple variations, but it seems like the input format isn't matching what SharePoint expects for Person or Group fields. Has anyone built something similar? How do I correctly pass the user from a sorted array to a SharePoint Create item action?
"I’m new to Power Automate and SharePoint with no prior knowledge, and I’m finding this challenging to figure out on my own. If anyone is available to hand-hold me through the rest of the process...walking me through the remaining steps or troubleshooting further...I’d greatly appreciate the support.
Thanks for any help!

Report
All responses (
Answers (