My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
ODKBriefcase  
Upload forms and submissions to Aggregate 1.0, download forms and submissions to local storage, and generate csv and binary (image, audio, etc.) files.
Updated May 3, 2012 by mitchellsundt@gmail.com

ODK Briefcase

Briefcase is a standalone application used to download forms and submissions from ODK Aggregate 0.9.8.1 and higher and from ODK Aggregate 1.0 Production and higher.

Release Notes

Briefcase 1.0.2 Production

  • increase server connection timeouts to 60 seconds.
  • limit number of media files uploaded to 100 per transmission.

Upgrading

No special actions need to be taken to upgrade from 1.0.x Production. For upgrades from earlier versions, see upgrade notes for 1.0 Production.

Briefcase 1.0.1 Production

Upgrading

No special actions need to be taken to upgrade from 1.0 Production. For upgrades from earlier versions, see upgrade notes for 1.0 Production.

Briefcase 1.0 Production

  • Fixes csv generation problem with repeat groups.
  • Intelligently determines the submissions that must be transferred when incrementally uploading or downloading data to an Aggregate 1.0 server. See Incremental Transfers for the limitations of this feature.
  • Supports exports of encrypted forms.

Upgrading

If you are using an earlier version of Briefcase, the storage area needs to be renamed "ODK Briefcase Storage" and you need to specify the directory where that is located as the ODK Briefcase Storage Location.

Briefcase 1.0 Beta 2.1

  • Fixes datetime parsing issue that would cause +/-1 rounding errors in the millisecond digit.

Briefcase 1.0 Beta 2

  • Fixes issue that was failing to preserve dates and times as submissions were transferred across Aggregate instances.
  • Fixes several issues with respect to verifying the proper structure of the chosen local Briefcase directory.

Future

Submit a feature request at http://code.google.com/p/opendatakit/issues/list.

Incremental Transfers

Efficient incremental transfers only work when transferring data among Aggregate 1.0 servers.

If you are pulling data from an Aggregate 0.9.x server, you must push the data to Aggregate 1.0, and then pull that data from Aggregate 1.0 (thereby maintaining a complete local copy of all the data on the Aggregate 1.0 server), in order to gain the benefits of incremental transfer.

Similarly, if you are pulling data off an ODK Collect phone, you must push it to Aggregate 1.0, and then pull the data from Aggregate 1.0 (thereby maintaining a complete local copy of all the data on the Aggregate 1.0 server), in order to gain the benefits of incremental transfer.

This means that if you only use ODK Briefcase to bulk-upload data from a set of ODK Collect phones, you should start with an empty briefcase storage area, pull the data off each of the phones, and, finally, push the data to Aggregate. Upon successful completion, you should then delete the briefcase storage area (archiving it before deletion if you want to maintain a local copy of all data uploaded from this local machine to Aggregate). You should not continue to use a non-empty storage area (unless that area contains a full copy of all the data on the Aggregate 1.0 server).

Reusing a non-empty briefcase storage area without ever pulling data down from the Aggregate 1.0 server will cause all the data in that storage area to be pushed to the server every time. The pulling of the data is the important part; if you are transferring data between Aggregate 1.0 instances, because you are pulling data from the first Aggregate 1.0 instance, all data transfers will be incremental transfers.

This behavior occurs because Briefcase relies on the Aggregate 1.0 server to determine whether or not a submission is marked as complete. This determination is different from ODK Collect's "Mark form as finalized" selection. Finalizing a form marks it as ready for uploading. A form is complete once it and all its associated attachments have been successfully uploaded to ODK Aggregate 1.0.

Until a filled-out form (submission) is marked as complete, it will always be pulled from or pushed to an Aggregate server, in the hopes that some other tool has supplied the missing attachments and made the submission complete.

Hence, if you are pulling data from Aggregate 0.9.x or ODK Collect, that data is not marked as complete as it enters briefcase (because neither ODK Aggregate 0.9.x nor ODK Collect are authorities for the marked-as-complete attribute). This data will continue to be pulled on every attempt. In order to gain the benefits of incremental transfers, you must push the data to an Aggregate 1.0 server and then pull the data from the server. The pull updates the marked-as-complete status and ensures that you have the full and complete copy of every submission on your local machine. After that, incremental transfers will not pull any submissions marked-as-complete on your local machine, and will not push them to an Aggregate 1.0 instance if that instance also has them marked as complete.

Source

The source code for Briefcase is located in the Briefcase repository. Briefcase and FormUploader share the same project but have different main() routines.

To build briefcase from source, from within Eclipse, choose to Export..., choose Runnable jar, and select either the Briefcase main() for ODK Briefcase, or the FormUploader main() for ODK FormUploader.

During the export process, be sure to select Package required libraries into generated JAR. The cryptography libraries make extensive use of dynamic class loading and may perform runtime verification of their jar signatures.

If you instead choose Extract required libraries into generated JAR, then the resulting runnable jar will fail with

java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/OAEPWithSHA256AndMGF1Padding

or a similar error.


Sign in to add a comment
Powered by Google Project Hosting