The "User value is invalid (400)" error when updating SharePoint's multi-person "Assigned To" field with users from another list's Person column in Power Automate occurs because the dynamic Person objects aren't directly compatible between lists—Power Automate expects a Claims array in SharePoint's specific format (`[{"Claims": "i:0#.f|membership|user@domain.com"}]`) for multi-selection, and raw objects from "Get items" lack full resolution or claims IDs. This is a known limitation when lists are in different sites/tenants or personal lists (cross-context resolution fails); use the Office 365 Users connector to re-resolve users by email/UPN into proper Claims format. Here's the fix using array construction:
Step-by-Step Flow Setup
1. Trigger: "When an item is created or modified" on Task Manager list > Get "Individual Assignment" (Yes/No).
2. Condition: If Yes, email single assignee (your working branch).
- No: "Get items" from Responsibilities list > Filter by team match (e.g., OData: Team eq 'selected-team').
3. Resolve Users to Claims (Key Step):
- Inside Apply to each (for Responsibilities items):
- Compose - Person Emails: `items('Apply_to_each')?['PersonColumn/Email']` (extract emails array).
- Select: From array: Person Emails output > Map: Email (current item) > This creates email list.
- Initialize Variable: Array type, Name: "ClaimsArray" (empty start).
- For each email in Select output (Apply to each - Emails):
- Get user profile (V2) (Office 365 Users connector) > User (UPN): Current item (email).
- Compose - Claims Object:
{
"Claims": "@{outputs('Get_user_profile_(V2)')?['body/userPrincipalName']}"
}
- **Append to array variable**: Variable: ClaimsArray > Value: Compose output (adds {"Claims": "user@domain.com"} objects).
- This builds the required array, resolving users validly.
4. Update Task Item:
- Update item (Task Manager list) > ID: Trigger ID > Assigned To: Variable "ClaimsArray" (select "value" dynamic).
- Advanced: Enable "Switch to input entire array" (icon next to field) for multi-person support.
5. Error Handling:
- Add Scope > Try: Above steps > Catch (Configure run after failed): Condition if Get user fails > Log email as invalid > Skip append.
- Test: Use real emails; if 400 persists, verify users exist in source site's directory (personal lists can't resolve cross-site AD users).
Notes
- Limitation: Works within same tenant; for personal/cross-site lists, users must be site members or "Everyone" (use email resolution). Max 100 users per field.
- Alternative for Bulk: Use HTTP "Send an HTTP request to SharePoint" (Site: Target site) > Method: POST > URI: `/_api/web/lists/getbytitle('Task Manager')/items({ID})/validateupdatelistitem` > Body: `{"formValues":[{"FieldName":"Assigned To","FieldValue":claimsArray}]}` (faster, no 400).
- Testing: Create sample with 2-3 users from Responsibilities > Run flow > Verify Assigned To shows all (with photos/emails).
This re-resolves to Claims format—test the Select/Append branch first. If helpful, accept the answer.
Best Regards,
Jerald Felix