"No permission" error with file attachments + copy mode + View

699
3
04-27-2022 10:15 AM
Jordi-Monk-Developer
New Contributor III

Hello,

This is the scenario, which we've streamlined to its simplest form while attempting to debug the issue we are having.

Simplest survey ever (a text question, "text_question", and a file question), authored with Connect 3.13.249. We publish the survey, and then create a View Layer from the layer Survey123 created. We then set up a filter on the View: 'text_question' = '1';

Users can only see and edit their own features on the layer. Users can see (but not edit) all features on the view.

We then connect the survey to the View in Connect, by introducing values for 'form_id' and 'submission_url', and republish it.

Then we submit several entries for the survey.

image001.png

Now, we want to open a previous submission in "copy" mode. So, our URL looks like:

https://survey123.arcgis.com/share/<surveyId>?mode=copy&globalId=<globalId>

If this submission does NOT change the value of the attribute used for the filter, then a file can be attached and the submission succeeds.

However, if the submission DOES change the value of the attribute used for the filter (by introducing, for instance '2' as the value of 'text_question'), then we receive the following error:

unnamed.png

Also, if the submission in "mode=copy" does NOT attach a file, then everything works as intended.


Thanks in advance.

 




0 Kudos
3 Replies
ZacharySutherby
Esri Regular Contributor

Hello @Jordi-Monk-Developer

If you check the settings on the feature service does the feature service have the update capability enabled? 

ZacharySutherby_0-1651708856874.png

 

 

Thank you,
Zach
0 Kudos
Jordi-Monk-Developer
New Contributor III

Hi @ZacharySutherby 

Yes, it does. I have just replicated the whole issue from scratch. I can now say that this happens not only when you open a survey in mode=copy, but in normal mode as well. Attached you can find the 2 JSON files that define the services for the Layer and the View Layer, plus the XLSForm.

Summary of the process followed:

- With Survey Connect, create a simple survey from the "Advanced" template. Remove the "select_one" question. Add a new "file" question. Publish the survey. Switch to AGOL.

- Share both the survey and the survey layer with the Organization. The survey layer settings are not modified (see attached file: "Survey_Layer_Settings.jpg")

- Create a View Layer from the survey layer. Add a filter: "Example text question = 1". 

- Share the View Layer with the Organization.

- Change the settings of the View Layer (see attached file: "Survey_View_Layer_Settings.jpg).

-  In Connect, point the survey to use the View Layer.

RESULTS:

- Survey + layers' owner can do whatever he/she desires. No errors.

- If a user other than the owner attempts to submit a survey with BOTH:

  • A value for "Example text question" other than '1', and
  • A file attachment
    ...then they get this error:

    FilterAttribChanged_FileAttached_UsersCanOnlyEditTheirOwn.JPG

Other combinations work fine (for instance, user introduces '1' to the question AND attaches a file, or introduces '0' to the question BUT he/she does NOT attach a file.

Note that now we are not opening records in copy mode, but simply submitting a new survey.
The error can be avoided as well if "Editors can edit all features" is enabled in the View Layer (this is not an option for our scenario).


Thank you.

0 Kudos
Jordi-Monk-Developer
New Contributor III

@ZacharySutherby 

There is actually a bug which was ultimately the cause of this issue (BUG-000129869)

https://support.esri.com/en/bugs/nimbus/QlVHLTAwMDEyOTg2OQ==

For future reference, we WERE going to attempt using a new Survey Connect function: pulldata("@layer") (in Early Adopter phase right now) so that we can avoid the need of using a View Layer, instead storing the "template features" in a Layer A (no editing allowed) different from the submission layer B. The only URL parameter that is used in the survey is the 'globalId' of the pertinent feature in Layer A. pulldata("@layer") is then used to retrieve all the feature info (still uncertain about whether this function allows the retrieval of the feature geometry).

UPDATE: This new function (July 2022) only returns attributes, not the geometry. It cannot be used to read the geometry from a given feature in Layer A in order to populate the geometry in the survey entry (pointing to Layer B).

0 Kudos