Integrating external app within a repeat group

1. What is the problem?
We have a form that uses a repeat group to link a number of people to a single parcel of land. We want to integrate the Simprints facial recognition application to verify that the person is in fact who they claim to be. Ideally we want to be able to complete this verification for each person before moving on to the next person. But the values for the guid that we want to verify are not being passed if the integration is done within the repeat block, forcing us to do the verification outside of the repeat block. This is not ideal from a workflow perspective, so we are keen to understand if there might be a solution to this.
2. What app or server are you using and on what device and operating system?
Using ODK 1.27.3 (deliberately, since we need the ability to sync media files to devices) on Android 10 devices.
. What you have you tried to fix the problem?
We have spoken to the Simprints engineers who have checked data and logs. It is clear that they are not receiving any values for the guid that is being passed within the repeat block, and they don't see anything that can be changed at their end to retrieve this value.
4. What steps can we take to reproduce the problem?
The xls form is attached but would need to be provisioned with a number of external media files to be useable. Perhaps useful for seeing the design?
5. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.xls form parcels

Staff from Simprints working on this project, so I am happy to provide any Simprints support that may be needed to troubleshoot this.

One extra thing we have done within these forms is to double check that the right guid value is present just before the intent callout to the Simprints app. When this is done outside a repeat group, the Simprints app receives the correct guid value and process the biometric verification. However, the moment we introduce the intent callout within a repeat group, Simprints apps throws up an invalid guid error, meaning it does not receive the guid value. From our Simprints, those instances are showing a null value where we expect to see the guid.

FYI - I have tried this with ODK Collect 1.30.1 and ODK cloud server. Still getting null values passed to the intent statement within a repeat group

Please try using /data/right_holders/selected_user_guid instead of ${selected_user_guid} as the value for verifyGuid.

For the curious -- what I believe is going on is that form conversion produces a relative reference for ${selected_user_guid} (as it should) but the Collect implementation for the intent functionality relies on an old XPath evaluator bug that qualified absolute references in a repeat.

Can you please expand on what this means? You should be able to push media files to devices on all Collect versions. The only scenario we know about that can no longer be supported is having an external application that reads or writes files from ODK storage. Is that what you're doing? It would be helpful to understand your workflow to make sure we're not missing anything.

Hi Hélène, sorry for the delayed response. The solution you suggested resolved the problem. Our workflow has exactly the scenario that can no longer be supported: an external app that synchronises data from the server to the media folders of ODK forms. Because we have a wide range of projects to be provisioned with different data, we have had to establish cronjobs that write csv files, that are then synchronised to tablets using Autosync for Google Drive. It is a bit hacky, but it works well for us so far. We should probably look at ODK-X, I suppose, but just have not had the time/courage so far. Thanks again for the help.

Dear kimwelo, the external app that we were using was referencing a value selected in an earlier question that was inside the repeat group. The solution mentioned above solved the issue for us - we had to change that reference from ${selected_user_guid} to /data/right_holders/selected_user_guid