I’ve given up on sync-endpoint, and now trying to get the old ODK Aggregate 1.4.15 to work. While deprecated, I undertand that it should work with ODK-X according to the docs (ODK Aggregate Tables Extension — ODK-X Docs).
After a long wrestle with allowing SSL on Tomcat, I’ve got it to work and was able to connect to the server. However, after synchronizing the data, I get an error: “please verify that the server and device are compatible”. According to the Docs, I expect this unsupported version should still work with the new APK files as it implements the same REST API, though I’ve found the ODK-X docs to be extremely lacking and unclear at times (to be fair, that is acknowledged under the ODK vs ODK-X comparison section).
It is frustrating as many rows of my table have synchronized (and I hoped to finally have found a solution to synchronize ODK-X forms). Logs in Android’s Logcat are not of much more use, though the error seems to occur when posting some data to the https://my_domain/ODKAggregate/odktables/default/installationInfo page.
The synchronization options are something that are seriously lacking. BTW one alternative to online synchronization is to use manual adb pull commands to pull data from the tablets and merging the sqllite tables, though that requires physical access to the tablets by someone who knows how to do this.
UPDATE
Okay, I see some errors in the catalina.out logfile: Value is too long (265) for field XXX which is a multiple choice option (multiple choice answeres are, for whatever reason, stored as a string in JSON format, with apparently only a max size of 265 values. I imagine this is something that has been updated in the sync-endpoint, which we can’t get to work).
Not sure if this is Postgres specific. Initially I wanted to use Mysql, but couldn’t get the ODK Aggregate to work with the mysql plugin (was probably using the wrong version of the plugin, Java, or mysql, but again it is very difficult to find it documented).
FYI I had to resort to use Tomcat8 to get ODK Aggregate 1.4.15 to work, if this is a route others are planning to take.
UPDATE 2
Success! After several days, I have finally been able to synchronize a tablet running ODK-X.
The error I received previously was resolved by removing the multiple choice options from the data (fortunately, I don’t need to store the data from those questions, and can assign the questions a property model.isSessionVariable=TRUE).
So, at least Aggregate seems like an alternative to sync-endpoint that actually works. I will be using it until the issues with sync-endpoint get resolved. As it is based in docker, I find myself clueless with debugging and trying to get it to work. It was still a struggle to install Tomcat, ODK Aggregate, the correct Java version, test Mysql, move to PostgreSQL, and configure the networking, but because I did it all manually and didn’t had to resort to using Docker, I was actually able to trouble shoot any errors and get it to work. I highly recommend to the developers to make sync-endpoint available as a standalone non-docker base version for those who prefer it, and allow users to configure it themselves.