Triggers not working on Groups on ODK Collect

1. What is the problem? Be very detailed.
We have a form with a dynamic default (i.e. calculation + trigger columns) that is working fine on Enketo. However, on ODK Collect (v.1.30.1), it is only working for the questions within the same group. The form uses If Statements to pre-fill the questions that are in the same group as the root calculation.

2. What app or server are you using and on what device and operating system? Include version numbers.
ONA is the aggregate server. Enketo version: version:2.5.6-b806da5-0494858

3. What have you tried to fix the problem?

  • Tried to remove the groups. The form seems to work on ODK Collect when the groups are removed

4. What steps can we take to reproduce the problem?

  • Uploaded the form on Ona
  • Launched the form on Enketo. The form works as expected
  • Opened ODK Collect on an Android Mobile Device
  • Downloaded the form with https://odk.ona.io as the server URL
  • Ran the form and noticed that the trigger was not working for the questions in the group that followed the question referenced in the trigger column.

5. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.
Attached is the XLSForm
matrix_test.xls (20.4 KB)

1 Like

Hi, had this problem as well, can anyone support? Is this an ODK app bug? Is there anything we can WITHOUT changing the form structure?

I.e. we know we can add calculates to the groups referencing earlier question, and then use this, but would prefer not to create multiple duplicate columns in the export.

Anyone who can provide support on this issue?

It seemed to work (in Enketo and in ODK Collect if I deleted the trigger from the questions inside the group group_qm6di55. Is it intended that the user can change the value to something other than "no info"? If the answer should always be "no info" for those questions - did you consider using relevant to control which questions the user can answer?

Also I think L22 (if(once(${group_kb06p35.Quick_visit_only_Ho_neficiaries_observed})=0,'no_info',''))
should just be
if(once(${Quick_visit_only_Ho_neficiaries_observed})=0,'no_info','')