Internship project: ODK Briefcase - Export automation

Welcome prospective Google Summer of Code or Outreachy participants! Please use this thread to discuss your ideas for the ODK Briefcase - Export automation project.

Expanding automation options from Briefcase will make it easier for organizations to react to the data they collect in a timely way.

Allow scheduled pulls, pushes, and exports. There are a couple of approaches here that we can experiment with:

  • Part 1: Takes parameters from the UI and write them into a single Batch file for which the user can then create a task trigger in Windows Scheduler or cron.
  • Part 2: Integrate scheduling functionality directly into Briefcase.

This project can be combined with Internship project: ODK Briefcase - New export types depending on student interest and experience.

Requirements: Java experience; testing experience preferred; experience with data analysis tools like SPSS helpful
Discussion: Automated Exports
Difficulty: medium to hard
Mentors: Guillermo Gutierrez (@ggalmazor) , backup: Yaw Anokwa (@yanokwa), Dave Briccetti (@dcbriccetti)

General guidelines for Project proposals

  • Start working on your proposal now.
  • Publish a draft as soon as possible. This way you'll get feedback faster and you'll be able to iterate and improve it.
  • Your internship only lasts for three months. Your proposal has to include an incremental delivery strategy that enables you to show results during your internship. To achieve this, you can:
    • Break the project into as many deliverable pieces of work as you can.
    • Break each deliverable piece of work up by different levels of detail.
    • Sequence your timeline to deliver low-detail work first and then iterate over to add more detail.
    • Example: First deliver a new, hard-coded export type, only available from the CLI, then deliver a new option on the Swing UI, then abstract over the two export types and deliver the third export type.
  • You will get feedback each time you deliver something, which could make you change your original plan.
  • Your proposal must acknowledge for what you know and what you don't know. For those things you don't know, plan ahead for timeboxed technical exploration tasks.
    • Example: If you don't know how to write a file in SPSS format, before starting to work on some feature that will require it, plan some hours to write a small test that will produce a file with some hard-coded data, and show it to your mentor.

As always, you can ask for help on the Slack channel, and it would be great to have your questions, links, and resources you find while working on your proposal on this thread as well.


Hello @ggalmazor have been working on a solution for this project. I've been really busy with exams . That said I believe this is an important feature that should be include into briefcase. My current proposal doesn't include adding new export types, but this could be added if really required. But I have some a question. Including new export types will require us to have a list of the new export types and definitions on how form instances will be exported to these types. Which export types do u currently have in mind? As for me I think JSON should be added as Aggregates currently supports this. It will be great to extend this list here so I have a clear goal will be great