Updating a new version of same form on Aggregate


Just for better understanding, I am looking to refresh my knowledge about updating an existing form on aggregate, since it is not really working as per my knowledge. Please help me learn.

I have a form already present on aggregate, with a specific form_id and version (for example: 20200318). It also has some submissions present against it in aggregate. Now, I am trying to upgrade this form on aggregate with a slightly improved version. I don't want to delete the current form because I will then lose the submissions with it too. For new form, the form_id remains the same as before, the version gets a newer/higher value (20200402). When I try to upload the new version without deleting the old version (this is how it should work, theoretically at least), aggregate gets unhappy with following error:

HTTP Status 409 – Conflict
Type Status Report

Message Form Already Exists for this Namespace/Id attribute org.opendatakit.aggregate.exception.ODKFormAlreadyExistsException

Description The request could not be completed due to a conflict with the current state of the target resource.

My understanding is that, it should not happen. But am I right? If yes, what am I doing wrong?


https://docs.opendatakit.org/form-update/ describes the kinds of changes that can be made.

There were recently big changes to the XLSForm converter that may result in incompatible converted form definitions. You can read more about what that would look like and how to troubleshoot at Cannot update form using XLSForm Online v.2.x. One quick thing to try is to add a name field to your settings sheet matching the filename and see if that fixes the problem. If not, you can also try the v1.x converter.

Ohh ok. Let me go through this. I have been using XLSForm Offline tool since long, since its more handy, especially with big attachments.

That's likely not the issue, then. I'd recommend doing what @Phil_Burapha did, then, and comparing the XML for the form on Aggregate and the update you want to make.