Collect(AuditResponses,DropColumns(Filter(CollResponses,Selected = true),
//"FKAuditGID",
Selected,
ID,
ResponseSequence
));
Regarding above...
-AuditResponses is the SharePoint list which is being patched with the multiple items in the collection. The DropColumns it to get rid of some extra columns that are used in the app but not needed in the list. Specifically, you want the Collection to match the list columns. By not passing an "ID" it creates new records.
-As part of the AuditResponse SharePoint list I have a column "GID" which is a unique Identifier. I use this rather than relying on the system generated ID. This way I know it ahead of time.
-CollResponses is the collection of responses that is collected in the app during the audit (observation opportunity in your case). Contains the GUID as mentioned.
-FKAuditGID is the unique ID of the parent audit event. Don't know if you would need something like this.
I do this rather than using ForAll and going through and patching individually. I think it performs better, less network traffic, so I have read.
as mentioned, I also assign each audit response (observation in your case) a unique ID (GUID) rather than relying on the List generated ID (which you don't have prior to record being generated).
It appears your images are collected in ColImages. Perhaps if as part of this collection you recorded the app generated ID (GUID) of the particular observation and passed to the flow this would, with some modifications, allow the flow to work as you go through all the records in the ForAll that is triggering the flow.
I am making some assumptions.
-Each image is tied to one and only one observation.
-You have ability to add a column to the document library, specifically the app generated ID (GUID or some other unique string). This would be updated in the Update file properties in your above flow.
First time posting here. Know I didn't directly answer question but hopefully gave some Ideas that might get you there.
Rick