Copying or Duplicating Submissions

I asked this question over in the Users board as well:

Does anyone have a way, either via the UI or a set of API calls, where we could copy a form submission and essentially save it as a new submission for that given form? We have a number of forms that are designed to be responded to and updated annually. Most of the data would remain the same, and being able to copy last year’s submission to start this year’s response would save the end users a lot of time.

I believe it can be done. You can use the api to get the submitted data in JSON.

Then you can use the JSON data to create a new submission using the Submission API. You may need to generate a new InstanceID. You can find details in the API documentation.

This can be done through API. but there is a new API in kobo and I think it is not finished yet and it does not have a complete documentation…

you can also look at briefcase…it is and ODK applicaton which pull and push data… but kobo have some problems while pushing forms and data…

For the record, we looked into the Submission API in KPI, but as of right now it doesn’t look to be fully implemented. Instead, we went back to the Kobocat API, and we were able to get an extract and import working via those calls.

Interestingly, we were never able to get it to work using JSON. It would export just fine, however on submitting, we’d get an XML format error, so internally Kobo must be taking our JSON and converting it into XML, and something was breaking along the way.

By exporting and importing in XML directly however, it seems to work fine. We did have to generate a new meta:instanceID, and we also are clearing out the entire element. Not sure if that’s necessary but it seemed like another potential for a duplicate ID if we left it in.

Thanks for the pointers everyone.