3.10.0 release notes

Known issues

Check the repository for the latest known issues.

Upgrade notes

Breaking changes

Updates to meta databases replication

The replication of users meta databases to the conglomerate, medic-users-meta database, is no longer configurable. This task now runs every day, at 2am UTC, and replicates feedback and telemetry documents to medic-users-meta database.

Android wrapper update required for new features

Supporting remote first-time login is only fully functional while using medic-android version 0.5.0 or later.

Sentinel no longer advances its transition processing seq in _local/sentinel-meta-data

Instead, it advances the transition processing seq in _local/transitions-seq. Additionally, a new document _local/background-seq advances the deletion processing seq. A new migration is run when upgrading to generate the new local files.

Supported software

There are no required changes to the supported software matrix from 3.0.0.

NodeCouchDBBrowsersSMS bridgeAndroidmedic-androidmedic-couch2pg
8.11+2.1+Chrome 53+, Firefox latestmedic-gateway4.4+0.4.5+3.0+

Supporting remote first-time login

3.10.0 adds a new authentication mechanism that doesn’t require users to know their username or password. Users can now access the app for the first time by clicking on a link that they receive by SMS. Admins can enable or disable this feature for any user. Users with the latest version of medic-android will have the option to open the weblink directly in the CHT app instead of a browser.

token login

See the documentation for more information.

Supporting linked docs

To support the ability of sending SMS messages to people that are not primary contacts, contact documents now expose a new property, linked_docs, that can contain a collection of ids representing documents that are relevant to the respective contact. Every document listed in linked_docs will be shallowly hydrated when the contact is hydrated, thus providing a means of accessing the contents of these related documents everywhere the contact is used within the app. This feature can have a multitude of applications, from providing a way to access an arbitrary contact’s phone number when resolving an SMS recipient to linking a delivery report to a child person document (linked_docs can also be used in contact-summary).
See the documentation for more information.

Privacy Policies

App builders can now configure privacy policies for every language. When a privacy policy is configured for a language, users who load the app in this language are prompted to accept the policy after logging in, and are blocked from using the app until they have accepted. Privacy policies can be configured using medic-conf or from a new App Management page.

privacy policies

See the documentation for more information.

More granular replication depth configuration for offline users

A new report_depth option was added to the replication_depth configuration. This option allows offline users to replicate and report on contacts deeper in the hierarchy without having to replicate reports about those contacts that were created by other users.
See the documentation for more information.

Improved geolocation data

3.10.0 improves the way geolocation data is obtained. Previously, if the app was not able to obtain a position lock immediately, the geolocation would not be recorded. Now, the app will allow up to 30 seconds to get a position lock. Additionally, the geolocation property is now updated every time a report is edited, and all previous geolocation entries are saved in a log within the same report.
This change also supports the updates in medic-android version 0.5.0, where the Location permission is requested at runtime rather than when starting the app for the first time.

Improved performance of processing deleted docs

Because processing document deletes, specifically deleting read docs, is relatively time-consuming, increasing linearly with the number of users that exist on the instance, deletion processing is now split into:

  • generating tombstones: no changes, tombstones are generated like before, within the Sentinel transition processing feed.
  • deleting read docs and info docs: done within a new Sentinel scheduled task that doesn’t block the main transitions processing feed
Time necessary to process 500 deletes for 1000 users

Sentinel delete performance gains

Additionally, Sentinel scheduled tasks are no longer executed sequentially, they are now executed in parallel, keeping track of which tasks are running. Every 5 minutes, each scheduled task, that is not already running, is started.

And more…


  • cht-core#5817: Ability to configure SMS sending to other contacts that aren’t the primary contact
  • cht-core#6339: Provide an API endpoint for fetching a contact by phone number
  • cht-core#6352: As a data entry clerk I want to access, create, edit people in a place that I can access, and report about them, but not see any of the reports created by others for those contacts.
  • cht-core#6380: Support remote first time log in
  • medic-conf#307: Add a command line flag to accept all prompts to enable scripted execution


  • cht-core#4889: Don’t delete user-settings when deleting users
  • cht-core#5917: Make sure we are storing all debug / output from android when trying to obtain GPS
  • cht-core#6001: Alert when outbound pushes are repeatedly failing
  • cht-core#6094: Make configurable, marking of outgoing messages as duplicates
  • cht-core#6396: Scoping: Investigate IVR options
  • cht-core#6401: Add ability to hide the action/option to create a contact
  • cht-core#6410: Ability to customize icons shown on main tabs (contact, tasks, etc)
  • cht-core#6419: Allow you to configure outbound to send the same record multiple times
  • cht-core#6481: Allow enough space to show list of forms in Reports Filter.
  • cht-core#6492: Touch area of items in the hamburger menu should be larger
  • cht-core#6516: Improve SMS reminders so they can be configured to be sent to places anywhere in the hierarchy
  • cht-core#6538: Adhere to play store privacy policy requirements update
  • cht-docs#259: CI: Add link checker to avoid 404s going live, merge CI docs into one to simplify
  • medic-conf#273: Add configurable hierarchy support to doc references in csv-to-docs

Performance fixes

  • cht-core#6116: Improve the performance of deleting read docs
  • cht-core#6276: Use http2 to fetch all login resources at the same time

Bug fixes

  • cht-core#6024: The outbound error response logging is needlessly verbose
  • cht-core#6121: Translations in the App Settings app aren’t recognized until you refresh
  • cht-core#6130: Reports deleted from webapp interface are saved fully hydrated
  • cht-core#6182: Support custom contact types in medic-pyxform
  • cht-core#6313: Use the browser language as the default language
  • cht-core#6370: Replication “isSensitive” logic prevents “boss” from creating any report for users directly under them in hierarchy
  • cht-core#6386: Error on report not cleared
  • cht-core#6404: User name autofilled with “medic”
  • cht-core#6433: Infinite spinners when loading tabs as admin
  • cht-core#6502: Guided tour erratic when user has no access to any tab
  • cht-core#6519: Upgrading doesn’t apply replication configuration which means users-meta is empty
  • cht-core#6562: Switching between tabs while tasks are being calculated can result in having multiple task documents with the same emission id
  • cht-core#6575: Large grey banner shown above content on mobile
  • cht-core#6578: Wrong error message shown when editing a user that replicates too many docs
  • cht-core#6582: Scheduled messages with due date of null end up being processed over and over without being updated
  • cht-core#6583: Users are forced to login one year after they last logged in
  • cht-core#6624: Document update conflicts when clearing schedules
  • horticulturalist#57: Horti doesn’t wam all views when deploying 3.9.x+
  • medic-conf#290: Tests fail locally when Bash completion is not setup
  • medic-conf#315: Error running csv-to-docs with null properties
  • medic-conf#322: Missing optional appliesIf attribute on contact summary cards causes crash
  • medic-conf#332: Uploading of multimedia is extremely limited in medic-conf

Technical issues

Security issues