Could you try trimming the pyEmail property (using @String.trim) while creating the temporary page list? This will ensure there are no extra spaces that could cause the duplicate search to fail.
By the way, this approach only worked for me when using a temporary page list—see the attachments below.
In this case you are removing the duplicates in TempPage not on the original page, you need to map the TempPage details back to same index of the original page.
To remove duplicate emails from a nested page list like .Documents().Signatories(), you cannot directly use pyRemoveDuplicatesFromPagelist because it doesn’t support nested lists or dynamic index references. Instead, you can create a simple Activity or Data Transform. Loop through each item in .Documents(), and for each document, loop through the .Signatories() list. Create a temporary list to store emails you’ve already seen. As you go through each signatory, check if the email already exists in the temp list. If it does, remove that signatory from the list. If not, add the email to the temp list. This way, you can keep only the first occurrence and remove the duplicates cleanly.
The issue that I see in this kind of testing is that we are only explicitly removing the duplicates in the signatories of Documents(1) that is why it is working, and it will indeed work.
What we need to do is also loop through all of the indexes of Documents, so all the duplicates of all the signatories per Documents index are also removed.
That was why I added (Param.Index) in @Utilities.pyRemoveDuplicatesFromPagelist(pyWorkPage,“.Documents(Param.Index).Signatories”,“.pyEmail”) in my question above