2.14.0 release notes

Additional release notes are available here.

Migration notes

  • #3449: We included a feature which makes it unnecessary to use a repeat-relevant node in Enketo forms to workaround a bug which created an empty child. This node should now be removed.
  • #3629: We added more configurable text to the target widgets. Also, configuring an array of target titles is now deprecated in favor specifying a single translation key. Reconfigure your targets to specify values for translation_key, subtitle_translation_key, and percentage_count_translation_key properties. Full documentation.
  • #3818: We changed the way groups of scheduled messages are silenced when using silence_for. Previously, only the first group found to be in the silence window was silenced. Now, all groups are.
  • #4134: Review use of calculate="." in all forms. If you have any XForm with with calculate="." you will need to modify the corresponding XLSForm, reconvert, and upload. The changes to make are:
    • From type calculate to string
    • Make sure the calculation column is empty
    • Have the appearance as hidden
    • The label can be NO_LABEL to avoid warnings and bloat in the form


  • #3096: Allow users to take a photo while filling in an xform in Enketo and upload the photo with the form.
  • #3459: Add format-date-tr() to our custom xpath functions to support translations of days and months in xforms.
  • #3450: Show the logout button in the hamburger menu for android users who have the new can_log_out_on_android permission set.

Bug fixes

  • #3944: Unread reports bubble not working with deleted docs.
  • #3563: Sentinel scheduling EDDs on a Sunday for all ANC registrations.
  • #3821: Export api doesn’t handle errors during export gracefully.
  • #4111: Enketo or-output never shows initial value.
  • #4166: People created via sentinel transitions are not replicated.
  • #4200: Sentinel nulls out parent when multiple docs generated from one form submission.
  • #4201: PNC schedule is not generated when a delivery report is submitted.

UI/UX improvements

  • #3945: Update the icons used for contacts.
  • #3904: Make user type required in the edit user screen.
  • #3758: Title of form is misaligned in list of reports and reports detail pane.
  • #3736: Configurable profile field UI changes.
  • #3735: Reports content row improvements.
  • #3734: Tasks content row improvements.
  • #3732: Message content row improvements.
  • #3731: Update content row UI for consistency & improved readability.
  • #3720: Improve display of icons in configurable profile cards.
  • #3719: Person & place profile page UI changes.
  • #3704: Improve password strength validation error messages.
  • #3629: Update target widget cards and targets page layout.
  • #3597: Update fonts to Noto.
  • #3561: Display required fields when creating a “restricted to a place” user.
  • #2522: Percentage target values are confusing.

Performance improvements

  • #3950: Remove stats collection in API as it’s no longer used.
  • #3913: Sentinel’s fetchHydratedDoc function should use only fetch contacts that aren’t already present in the lineage list.
  • #4174: Remove WebWorker for improved client database performance.


  • #3873: Escape output to defend against javascript injection.
  • #3239: Accessing webapp without logging in is possible.