Turn off naming submission feature

Hi all,

I was wondering if there is a way to turn off the feature that allows users to name a form when they are saving/submitting. We want users to enter and submit forms in one go and are also very wary of them entering participant-identifying information in this section so ideally would turn the feature off altogether.

Thanks in advance,

Faran

The best way to turn it off is to specify an expression for naming filled forms: https://docs.getodk.org/xlsform/#naming-filled-forms This will generate the name based on form data and make it read-only. You can choose a unique identifier for the submission that is not personally identifying for the participants. For example, you could do something like concat("Fav color: ", ${enumerator_id}, " ", ${datetime}) if you have enumerator_id and datetime fields in your favorite color form. This name is used throughout Collect where filled forms are listed and in Central on the submission details page.

You can alternately configure Collect to hide the manual naming option without specifying a name expression. To do that, go to Settings > Access control > Form entry Settings and uncheck "Name this form". This means the form name will be used for every filled form and the instance ID (e.g. uuid:123e4567-e89b-12d3-a456-426614174000) will be used in Central.

We will be removing manual naming of filled forms in Collect soon as part of broader improvements to form finalization. We agree that it's confusing and analytics show it's used by less than 5% of data collectors.

1 Like

Hi @LN

Thanks for your response and solutions! For the second option of turning it off altogether, would this need to be done on each individual device? Or is there a way to make it so any device used for this project is automatically programmed to have this feature turned off?

Thanks again,

Faran

If you can, I do strongly recommend setting an instance name expression in the form definition. You can even do something like string("Favorite color form") if you really want a fixed string. A related concept is to use part of the system instance ID to make it more user-friendly: concat("Fav color: ", substr(${instanceID}, 6, 10)).

If that really doesn't make sense for your context, you could consider using a configuration QR code with the setting to hide form naming. This will only make sense if you share an App User between several devices. You can add to a configuration QR code in the same way we discussed in this thread. If you want to create the code programmatically, the setting you need is save_as in the admin section documented here.

Hi @LN

Thanks for this! Would it be possible to use the metadata field "end" for the instance name?

Thanks,

Faran

Yes! Although I believe it will always be the same as the last saved subtext so it may not add a lot on the client side. It probably would be helpful on Central, though.

You need to first explicitly request end and start and then you can use ${end} or ${start} in your XLSForm to reference them.

(I edited my message above slightly -- I had used /data/meta/instanceID but ${instanceID} also works and is likely simpler to understand)

Hi @LN

Thanks again! I first used ${start} as suggested and it worked perfectly. I wanted to add a prefix of "Consultation Level Data" so I changed it to concat("Consultation Level Data: ", ${start}) however now it is only showing the date and not the time - do you know where I'm going wrong?

Many thanks,

Faran