Compare submissions to other form values

Hi everyone,

I am super excited about ODK Central and Collect. Special thanks for making such great documentation.

1. What is the problem? Be very detailed.
I want to get your opinion on how to compare form submissions to data in ODK central or external sources. I want to avoid reinventing the wheel.

Say, I have two forms:

  • barcode_registeration_form that is to collect a list of pre-generated barcodes (unique values) in ODK Central through submissions by ODK Collect.
  • user_items_form is used by users to fill some fields in addition to scanning a barcode. Upon receiving their submission I want to compare the barcodes submitted by the users to what is already stored in ODK Central.

Based on what I have learnt reading the Docs, ODK doesn't seem to have any feature that makes it possible to compare current form submissions to internal (previous submission) or external sources (a csv file, sqlitedb, etc).

2. What app or server are you using and on what device and operating system? Include version numbers.
ODK Central 1.2.1

3. What you have you tried to fix the problem?
I have read some discussion in the forum but couldn't form any conclusive point.

However, I just came across ODK-X. Although it does sound promising but I was not sure if it does has such a feature. Also, I don't know how much would I lose if I move to ODK-X especially after setting everything up for my project with ODK.

A solution that I am thinking to implement is a simple web app or a script to retrieve all submission from both forms through the API and generate a brief report on the comparison.

I would really appreciate your thoughts on how you approach this issue?

ODK-X is a different project, so the XLSForms you've developed for ODK will need modification if you transfer over to those tools. ODK-X could likely do what you are looking for, but will probably require building the various pieces. You can always explore more on their forum and docs.


ODK has support for external form datasets in the format of CSV or XML. However, this functionality works better if the the collection forms are used in sequential stages - rather than simultaneously - as the external form dataset must be both added to the server and provisioned to the phones.


ODK Central is designed to make it easy to connect to other tools for data processing.
For example, via @GetODK on Twitter: "Google Data Studio (GDS) is a free data visualization tool, and thanks to UW Impact++, you can now use GDS to build interactive dashboards and beautiful reports of your ODK Central data. Try it at https://datastudio.google.com/data?search=ODK"

If you create "a simple web app or a script to retrieve all submission from both forms through the API and generate a brief report on the comparison" we would love to hear about the experience and how it goes. It sounds like you know about the OData connector which allows you connect a live representation of the data to OData-capable tools like Microsoft Excel, Microsoft Power BI, Tableau, SAP, and others. And that you've looked at the Central API documentation. Central is designed to facilitate setting up external analysis like you describe.

When thinking about your data flows, these other forum threads may be of interest to you: