Keeping track of every administration

I am trying to figure out if there is a way using either ODK collect, briefcase or aggregate to keep track of every single survey administration.
As part of our research project we would like to use a questionnaire that requires licensing. The company in charge wants to know if it is possible (without user error) to keep track of administrations, whether they are completed or not. It doesn't appear to be enough to confirm that incomplete forms are saved in ODK collect or that an upload to ODK aggregate can be forced.
Thank you kindly for your advice.

What would meet your requirements? That is, what is your definition of a single "administration" of the survey?

Not 100% sure if this is exactly what you want, but if you want to know 'who' has downloaded a form, then you can troll thru the ODK Aggregate/Tomcat logs and filter it for GET requests for your particular form; eg

/var/log/tomcat8$ tail localhost_access_log.2018-07-25.txt - - [25/Jul/2018:12:56:35 +1200] "GET /ODKAggregate/formXml?formId=sampleform HTTP/1.1" 200 6364 - - [25/Jul/2018:12:56:46 +1200] "POST /ODKAggregate/aggregateui/submissionservice HTTP/1.1" 200 583 - - [25/Jul/2018:12:56:46 +1200] "POST /ODKAggregate/aggregateui/formservice HTTP/1.1" 200 1069 - - [25/Jul/2018:12:56:46 +1200] "POST /ODKAggregate/aggregateui/filterservice HTTP/1.1" 200 127 - - [25/Jul/2018:12:57:03 +1200] "POST /ODKAggregate/aggregateui/formservice HTTP/1.1" 200 1069 - - [25/Jul/2018:12:57:21 +1200] "POST /ODKAggregate/aggregateui/securityadminservice HTTP/1.1" 200 275 - - [25/Jul/2018:12:57:42 +1200] "POST /ODKAggregate/aggregateui/securityadminservice HTTP/1.1" 200 12 - - [25/Jul/2018:12:57:42 +1200] "POST /ODKAggregate/aggregateui/securityadminservice HTTP/1.1" 200 274 - - [25/Jul/2018:12:57:46 +1200] "GET /ODKAggregate/formXml?formId=sampleform HTTP/1.1" 200 6364 - - [25/Jul/2018:12:58:13 +1200] "GET /ODKAggregate/formXml?formId=sampleform HTTP/1.1" 200 6364

This shows IP address fetched my form 'sampleform' thrice. Of course, you'd then have to figure out who these IP addresses correspond to...

Like I said, probably not quite what you want, but perhaps its a start?

1 Like

Thanks so much for your advice. I am also not 100% sure what they are requesting from us. I told the company that in ODK Collect the number of forms that have been started (whether they were completed or not) can be tracked. Their additional question was the following:
"The software must have an automated tracking of the administrations. This cannot be done separately by the research team. Please confirm the software system can produce a report on the number of administrations for each Test via the Tablets, including both complete and incomplete administrations. An administration must be tracked automatically and not via a submit button on a form."
Any advice welcome.

Collect is designed to be fully functional offline, so there is really no way you can determine remotely, in real-time, whether someone wandering around the middle of the nowhere with an Android phone running ODK Collect has just started a particular form, or if they've answered all required and relevant questions (ie completed the form)...

You can possibly determine who, or count how many times, a form has been downloaded onto a device (eg from the logs, above). But once a form is on a device there is no way of determining (remotely) whether its being started vs completed. Its only when the device is back online that the form can be submitted, which is pretty much the first you'll hear about it. Does that make sense?