ODK Collect and ODK Aggregate Connection Error

1. What is the problem? Be very detailed.

  1. ODK Collection - Error getting form list - form listing failed. Parsing failed with failed to connect to tomcat server from odk collect device IP after 30000ms while accessing tomcat server IP/ODKAggregate/formList
  2. Admin tab is missing. in ODK Aggregate. (Warning: Anyone can take control of this server. Go to the Site Admin tab and change the primary Site Administrator's password now!)

2. What app or server are you using and on what device and operating system? Include version numbers.
Windows server 2016
Tomcat 8.5
MySQL Server 5.7
JDK 13.0.2
JRE 1.8.0_261

3. What you have you tried to fix the problem?
ODK includes with the firewall. Change the settings as per suggestion in forum.

4. What steps can we take to reproduce the problem?
Please provide a setting that I can do at server level.

5. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.

Bienvenido a odk pasa a presentarte a Introduce yourself here!
Proporciona capturas de pantalla para que podamos visualizar mejor tu error, así podremos ver urls para notas si algo falla por ahí. suena sencillo pero muchas veces no notamos el https y no tenemos los certificados ssl. con respecto al mensaje de advertencia ¿has iniciado sesión anteriormente?

Error -
FAIL - Application at context path [/ODKAggregate] could not be started

Before moving onto using Collect with Aggregate, you need to ensure if Aggregate is working fine from the browser.

Try this:

  • Shutdown tomcat.
  • Rename ODKAggregate.war as ROOT.war
  • Go to /usr/share/tomcat8/webapps directory, and delete everything.
  • Copy ROOT.war file to this folder.
  • Restart tomcat8.

You should be able to see Aggregate, if you have configured all the other steps perfectly fine.



Thank you Saad,

I do it, but it is not working. I think there is some setting for windows, which I missed.
I have done the following settings -
Mysql connector pasted in lib folder
webapps\ODKAggregate\WEB-INF\classes - .example extension removed

Please suggest if there is any setting that is required.

thanks and regards

After changing CATALINA_HOME into CATALINA.HOME and CATALINA_BASE into CATALINA.BASE, ODK aggregate starts but redirecting to the Public IP/8080 page. Please suggest how to correct.

thanks and regards

In the config file (ODK .war creation), you gave public IP address. That's why it is redirecting to the public IP.

How do you want to use ODK? Internally or externally? Use the same notation (localhost or public IP) at all places during installation.


Dear Saad,

Thanks and regards for your valuable suggestions. Now all are working perfectly except image (captured image not uploading).

with regards

You need to do 2 things for the images to work properly:

  1. In your form coding, put the 'max-pixels=2048' (or 1024) in the 'parameters' column. This will restrict the device camera to take a smaller-than-2048 pixels image. New devices have very high power cameras, around 20 megapix and more. If you don't restrict this, your image submission would be very heavy due to the image volume, and will cause a lot of trouble for field worker in uploading and sysadmin to manage the server.

  2. Patch your database config to handle images. I use following settings in my.cnf file for MySQL:


# Disabling symbolic-links is recommended to prevent assorted security risks
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
init-connect='SET collation_connection=utf8_unicode_ci; SET NAMES utf8;'

Let me know how it goes after you apply these tweaks.

1 Like

Dear Saad,

Thanks for your valuable support. it works and data collection started.

One of my concerns opens without an ODKAggregate password. I want to restrict it, so that the data in it is protected and there is no unauthorized use. Kindly suggest how to protected.

thanks and regards

Login from the username that you gave in the setup of ODK.war file. Use the password 'aggregate' with that username. Once in, go to SITE ADMIN tab, and:

  • Change the password of base admin account.
  • Create a new user account (give rights as form manager, but not as site admin, if you want to keep only one admin account).
  • Remove access of anonymoususer from data viewer and form manager columns. This will stop the open access of everyone to the data. Just leave it as DATA COLLECTOR rights. Do not delete the account. If you don't want to use specific user/pass for every field worker, then this account will be needed for data submission.
  • Switch on the "Allow anonymous retrieval of images, audio and video data (needed for GoogleEarth balloon displays)".

This will enable almost 90% of your ODK aggregate dashboard working.


1 Like

Dear Saad,


Once again thanks and regards for your support. Now all are working as required.

Thanks and regards

1 Like

Dear Saad,

We are collecting data from the field and it is perfectly working as expected. But there are two concerned -

  1. Our enumerators collecting data into local languages (not in English), which is perfectly readable in aggregator. But when we download it into excel, all have changed and not in a readable format.
  2. Can we put two fields (/columns) under the survey questionnaire like one for yes.no and one for numerical data.

with regards

First problem is with excel, not aggregate. A simple shortcut is that after downloading the CSV file, upload it to Google Drive and select to open it with Google Sheets. It automatically identifies the language and converts it into correct language. You can then download the excel file for your use.

For second question, I assume you are already using the CHOICES sheet in xlsform.org method of developing questionnaires. The 'name' column will always carry the backend code, so you can make it either way (Y/N, Yes/No, 0/1, etc). Use the label column to put the readable option in the form (Yes/No). You can also use dual language. However, you cannot really add more columns to either of the options ('name' column for variable, or 'label' column for label). If you want to give extra info to the user on the GUI in the app, use the HINT column to tell user about the numerical code against any option.

I hope I am understanding your query in the right way (or not?)