HTTP Status 400 – Bad Request when uploading a blank form to ODK aggregate

What is the problem? Please be detailed.
I got an HTTP Status 400 – Bad Request when uploading a form to ODK aggregate sandbox server (

I have tested the uploaded form using ODK validate v1.11.0. and it says that the Xform is valid.

Attached is the form
TestForm1.xml (29.3 KB)

Here is the screenshot of the error on the sandbox server:

Can you share the XLS form?

Here is the xls form
TestForm1.xls (17.5 KB)

This looks like a form that was made in Kobo? Try removing the last calculate in the survey sheet and change the version in the settings sheet to a number like 2019031101 (basically today's date) and let's see if that works.

Hi Yanokwa,
I'v tried removing the last calculate in the xml form.
It is this one right :
bind calculate="concat('uuid:', uuid())" nodeset="/data/meta/instanceID" readonly="true()" type="string"/


Still got the error when uploading.

I tried to find "version" in the xml form but I can not find it.

I dont see anything unusual in your form, nor in the XML produced from it. Could you perhaps try loading an extremely simple one-liner form - eg "enter name" - with none of the metadata selected, and see if you can upload that.


I've tried uploading a simple demo xml form to the sandbox server.
It uploaded without problem

Good. It was worth eliminating something funky going on on the server-side (eg broken javaRosa version, ...).

So I might suggest adding (or removing) sections from your form, trying to upload them, and seeing when it breaks. Again, sorry, but I didnt see anything overtly wrong. But at least this brute-force approach - a simple form works, a complex one doesn't - so somewhere in-between these two it'll break, and we be able to better narrow down the root of the problem. Make sense?

The 400 Bad Request error is an HTTP status code indicates that the request you sent to the webserver was malformed , in other words, the data stream sent by the client to the server didn't follow the rules. It means that the request itself has somehow incorrect or corrupted and the server couldn't understand it. There are a number of different causes for a 400: Bad Request Error . It might be a malformed request syntax, invalid request message framing, or deceptive request routing . In most cases, the problem is on the website itself, and there's not much you can do about that.