Hello,
I'm looking for some advice on the settings for the GIS Service Request Form. In the Share survey settings it says that 'Members of my organization (ArcGIS Enterprise)' can submit to the survey. However, for users with a 'viewer' licence, they get the error 'You cannot submit records to the survey since you do not have the Edit privilege'. I can see from the survey123 requirements (System requirements—ArcGIS Survey123 | Documentation) that the viewer licence can only submit to public surveys. The majority of our users will only have the viewer licence but I don't want the survey to be public .... however, is the only way around this to make the survey public?
Thanks,
Stephen
Solved! Go to Solution.
@StephenKing3 one thing you can try is to add a text field to your survey, have it ready only and required, and set the constraint to a GUID. Then update the link to your survey URL to include "?field:surveyid=<GUID>" at the end of the link. Do not include the "?" if it is already in the URL. You could even go a step further, add "?field:surveyid=<GUID>&encodeUrlParams=true", and reload the page to get an encoded URL so your users cannot change the GUID. I recommend changing the pocname and pocemail fields to not auto populate because it will be blank for your viewer users.
Once you have the URL with the suveyid included, make sure you set the GIS Service Center and Service Portal hub pages to not be public so the public cannot access the URL with the surveyid. The survey must be set to public for this to work. When a viewer license clicks the survey link, they should be taken to the survey form but not signed in. That is what happens on ArcGIS Enterprise 11.5.
To recap:
Here is what I have in Survey123 Connect for one of our surveys. I removed the GUID so you will need to enter your own. I found constraint rules do not work if the field is hidden, so do not hide the surveyid field.
| type | name | label | hint | guidance_hint | appearance | required | required_message | readonly | default | calculation | constraint | constraint_message | relevant | choice_filter | repeat_count | media::audio | media::image | bind::type | bind::esri:fieldType | bind::esri:fieldLength |
| text | surveyid | Survey ID | yes | yes | .= "<Enter a GUID Here>" | Survey ID Required | esriFieldTypeString | 255 |
It is my understanding the 'Add and update records (read access enabled)' is for when you want people to be able to change a submitted survey. Which is okay when the survey is not public and you do not care if your organization members see the results.
In the solution I mentioned above the survey needs to be 'Only add new records'. You will need to make a few changes for the My GIS Request dashboards to work properly.
usernames['features'][0] = {attributes : {username: user['fullName'], blank: '.'}}With those changes the My GIS Requests dashboard will filter the requests based on the name provided in the pocname field which you will need since the createdby field is now blank because it is a public survey. I hope this helps.
@StephenKing3 - Yes, sharing publicly is the only way to allow users with a 'Viewer' license to submit the GIS Service Request form. Many other organizations have done this with the form. The only other option would be to elevate the users that need to submit up to 'Contributor' licenses to keep the form shared only to the organization, but that can be difficult depending on the size of your organization.
Thanks Daniel, I suspected that would be the case. Yes, it would be difficult to make users contributors with additional licence costs. We will need to make the form public and one problem I see with this is that potentially people can submit requests without signing in, so we wouldn't see who they are from.
One option to help with that is to do part of what @Joshua-Young suggested:
Change pocname and pocemail fields to be required, remove the readonly flag, and remove the pulldata calculation.
This will allow you to share the survey form publicly, but still require anonymous users to provide their name and email before they can submit the form.
@StephenKing3 one thing you can try is to add a text field to your survey, have it ready only and required, and set the constraint to a GUID. Then update the link to your survey URL to include "?field:surveyid=<GUID>" at the end of the link. Do not include the "?" if it is already in the URL. You could even go a step further, add "?field:surveyid=<GUID>&encodeUrlParams=true", and reload the page to get an encoded URL so your users cannot change the GUID. I recommend changing the pocname and pocemail fields to not auto populate because it will be blank for your viewer users.
Once you have the URL with the suveyid included, make sure you set the GIS Service Center and Service Portal hub pages to not be public so the public cannot access the URL with the surveyid. The survey must be set to public for this to work. When a viewer license clicks the survey link, they should be taken to the survey form but not signed in. That is what happens on ArcGIS Enterprise 11.5.
To recap:
Here is what I have in Survey123 Connect for one of our surveys. I removed the GUID so you will need to enter your own. I found constraint rules do not work if the field is hidden, so do not hide the surveyid field.
| type | name | label | hint | guidance_hint | appearance | required | required_message | readonly | default | calculation | constraint | constraint_message | relevant | choice_filter | repeat_count | media::audio | media::image | bind::type | bind::esri:fieldType | bind::esri:fieldLength |
| text | surveyid | Survey ID | yes | yes | .= "<Enter a GUID Here>" | Survey ID Required | esriFieldTypeString | 255 |
Thanks @Joshua-Young and @DanielWickens for your help. I haven't tried to fully implement this, but something that concerns me in making the survey form public is the warning that you get in survey123 that says survey responses will be exposed. This is if you select the setting 'Add and update records (read access enabled)' in the Share survey tab. It seems that you have to allow this setting otherwise the status of the submission is not visible to the use on the service portal page. Is that correct? If so, are all user submissions effectively open to anyone outside the organisation to see?
It is my understanding the 'Add and update records (read access enabled)' is for when you want people to be able to change a submitted survey. Which is okay when the survey is not public and you do not care if your organization members see the results.
In the solution I mentioned above the survey needs to be 'Only add new records'. You will need to make a few changes for the My GIS Request dashboards to work properly.
usernames['features'][0] = {attributes : {username: user['fullName'], blank: '.'}}With those changes the My GIS Requests dashboard will filter the requests based on the name provided in the pocname field which you will need since the createdby field is now blank because it is a public survey. I hope this helps.
Hi @Joshua-Young, thanks again for your help. I had to reinstall request management to get things working again. I’ve worked through your solution above and almost had it working, except getting the request status update to work. I can’t see where to make the changes to the filter in the Category Selector you mention. Is this something additional that I need to add to the dashboard settings?
Thanks again @Joshua-Young, I have managed to part implement your solution but have hit another stumbling block. The GIS Service Request form is submitting correctly and updating the associated feature layer, but my GIS_Activities feature layer is not updating with the new records - I must have broken something somewhere. Do you have any ideas what to look at? I haven't been able to track down the link between the two.
@StephenKing3 that is odd since the GIS_Activities feature layer is the root service for all the request/activities views. If you check the Data tab in the GIS_Activities item page is it empty as well, or is it the My GIS Requests dashboard that is empty?