Thank you and very much for your help! This has really helped me to hone in on where the problem is. The following people picker Update code works beautifully now except in the following circumstances: the form is opened in edit mode, there is already a name from Parent.Default, and the form is re-saved without selecting a new name. At that point, the field doesn't see the email of the person who was pulled in from Parent.Default so saves a blank.
So this is really back to the original issue - the people picker isn't pulling in the person's email unless something has changed. All that is pulled in is DisplayName, JobTitle (which I don't need) and Department (which I also don't need). No mail/email or UserPrincipalName. This is what broken ... all the data used to be available, and no longer is.
With(
{
profile: Office365Users.UserProfileV2(cmbSupervisorMP.Selected.Id),
upnOrEmail: Coalesce(cmbSupervisorMP.Selected.Mail, cmbSupervisorMP.Selected.UserPrincipalName)
},
If(
IsBlank(upnOrEmail),
Blank(),
{
'@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
Claims: "i:0#.f|membership|" & Lower(upnOrEmail),
DisplayName: profile.displayName,
Email: upnOrEmail,
Department: profile.department,
JobTitle: Coalesce(profile.jobTitle, "")
}
)
)
In case it is helpful, this is what is in Items:
Office365Users.SearchUserV2(
{
searchTerm: Trim(Self.SearchText),
isSearchTermRequired: false
}
).value
All the person data is available in "value".
Thank you!