I was working on a project recently where one of the requirements was to submit a form filled in by user without capturing user’s information. I was building a well-being section of an app and the submitted well-being data had to be anonymised.
When information from a Power App form based on a SharePoint list is submitted back to the list (either via Patch() or SubmitForm() function), the Created by and Modified by fields are populated with the name of the user who submitted the form. There is no option to manually specify those fields at this point.
My first point of call was to try using Power Automate and instead of submitting the form when user hits Submit button, run a Flow to capture the information and submit it to the list. After building a prototype and testing the form submission, I realised this solution will not work. A Flow triggered from a Power App runs in a context of the user who triggered it, the entry was still being submitted with my test user’s name in created by and modified by fields.
After investigating further and trying to replace the Create Item step in my Flow with a REST API call to write to the list, I gave up and started looking at different solutions. Next thing I looked at was calling another Flow from the one triggered from the Power App Submit button, passing information to the secondary Flow and submitting the data. This worked, I created the second Flow using a service account and when the new item was created, I could see service account name in the created by and modified by fields. So this was a success however to implement this in the Client’s environment I would require a Flow per User license. To call a secondary flow I used the HTTP connector which is a premium connector and requires Flow per User license.
Finally I came across a Flow action – Run a Child Flow. I had to modify my project slightly, this action is only available when the App and Parent-Child flows are built as a part of a Solution but in the end this worked perfectly and did not require additional license.
I hope this blog post will help someone who is looking for a similar solution. The solution is quite straightforward if you know where to look. As always, there may be a better way of achieving the same goal but in my case this solution worked and fulfilled my requirements.