3.9.0 release notes

Known issues


Upgrade notes

Breaking changes

Docker image update required

Prior to initiating an upgrade to 3.9, you will need to update the CHT Docker Image and a few packages inside the medic-os container. Please closely follow our 3.9 CHT Docker Image Upgrade Process

This image updates the horticulturalist package to stage ddocs properly.

Outbound Push only sends each report once

The implementation of Outbound Push has changed as part of cht-core#6306. Now each configured outbound push will be sent only once per doc. Specifically, the first time your relevant_to function resolves to true is the first and only time a particular record will be send to a configured external service. This is to ensure that pushes are stable and predictable, and additional pushes are not sent unintentionally or unexpectedly. We are working on allowing for multiple pushes, please see cht-core#6419 and contribute your situation to help us determine the best way forward.

Cleanup operations may impact app load times

We have implemented a purging function to clean up obsolete feedback and telemetry docs as part of cht-core#5902. This will free up disk space and improve performance over time, however initially may cause slower app load times while the backlog is cleared. The cleanup is capped to 1000 docs per app load to limit the impact on users.

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+

DHIS2 integration

The CHT now supports calculating and exporting data for DHIS2 integration. The Core Framework can now be configured to calculate DHIS2 dataValues, aggregate patient level data, view aggregate data offline, and export the aggregate data formatted for DHIS2. The data is also available via an API so you can access it from an interoperability layer such as OpenHIM.

For more information read the documentation.

Issues: cht-core#5661 and cht-core#6002

Supervise target progress

Targets can now be configured to be aggregated and synced to allow supervisors to view the progress of their health workers towards their goals. These new “aggregate” targets show an overview of all workers progress within their branch and can be selected to show each workers progress individually.

aggregate targets

Read the feature overview and the technical documentation to see how to configure this new aggregated target.

Issues: cht-core#4839 and cht-core#4840

RapidPro integration

Interactive, structured messaging for health triage and clinical referrals is now possible with the integration of RapidPro. This opens new opportunities for a semi-automated, direct to patient approach to health assessments and care coordination at the community level. The Outbound Push feature has been extended to support submitting data to RapidPro so you can trigger workflows based on changes in the CouchDB database.

Read the feature overview to learn more about this new integration.

Issues: cht-core#6207

Case management workflows

For reports that aren’t patient or place centric you can now register a case with a generated case_id short code. This allows subsequent reports to identify which case they refer to.

Read more about configuring the accept_case_reports transition in the CHT documentation.

Issues: cht-core#6291.

Instance monitoring

A new API has been added to allow tracking of a range of metrics in the CHT platform to make monitoring, alerting, and debugging of your instance easier.

Issues: cht-core#6133

And more…


  • cht-core#6286: Link SMS reports to patient associated with the sender phone number
  • medic-conf#297: Add command to bulk-edit contacts on medic-conf


  • cht-core#5738: Trigger a sync immediately when a doc changes locally
  • cht-core#5772: Show a prompt when we detect the user is logged out
  • cht-core#5776: Make it clear that tasks can be completed anywhere in the window, not just on the due date
  • cht-core#5804: Display page tab text labels even on mobile view, whenever there are 3 or fewer tabs
  • cht-core#6188: Record telemetry events for tasks and targets
  • cht-core#6209: Update aggregate target doc after the reporting interval to ensure accuracy
  • cht-core#6211: Ability to make target widgets invisible
  • cht-core#6234: Adjust UHC colors to be consistent with our color palette
  • cht-core#6270: Minor CSS updates to admin app
  • cht-core#6280: Show locale selector on login page
  • cht-core#6306: Send outbound push without delay
  • cht-core#6331: Add an API for hydrating contacts on a doc
  • cht-core#6457: Rename configuration fields to be consistent with DHIS2 and make names localizable
  • medic-conf#104: AppliesToType is not respected for report-based targets
  • medic-conf#271: Only update configurations docs when something has changed
  • medic-conf#292: Refactor to replace renamed dependency “opn”
  • medic-conf#306: Allow for configuring xml2sms in forms
  • medic-conf#323: Improve usage documentation regarding the options parameter
  • medic-gateway#138: Tweak gateway SMS forwarding so you can define how long we wait to send SMS

Performance fixes

Bug fixes

  • cht-core#5955: Login page redirection doesn’t work
  • cht-core#6111: Unable to dismiss Guided Tour if you navigate to a different tab at the end of the tour
  • cht-core#6147: Data from user’s meta database is not being replicated to medic-user-meta
  • cht-core#6149: Report content patient hyperlinks point to ‘/contacts’ list
  • cht-core#6161: Fix race condition when deleting reports
  • cht-core#6162: Submitting almost any form from the mobile app throws and catches a Java error
  • cht-core#6183: Map tile fetching blocked by CSP for geopoint questions
  • cht-core#6184: Reverse geocoding blocked by CSP for geopoint questions
  • cht-core#6192: Broken link in Sentinel error message
  • cht-core#6212: Console errors on upgrade page
  • cht-core#6220: Number of tasks for person not shown on profile
  • cht-core#6223: Outbound Push calls code to delete broken tasks unneccessarily
  • cht-core#6231: Misaligned “Title” column in SMS Forms page of the App Management console
  • cht-core#6239: The number of Feedback docs is incorrect
  • cht-core#6249: CouchDB admins can’t login in the app
  • cht-core#6256: API error for weak password is not prescriptive
  • cht-core#6272: Modal dialogs are replaced by the same dialog
  • cht-core#6315: The update settings API reports success but has no effect
  • cht-core#6328: Upgrade page doesn’t show branches available to upgrade to if there are no betas to upgrade to
  • cht-core#6335: Received messages appear as sent messages
  • cht-core#6337: Infinite redirect loop on login
  • cht-core#6356: Search reset button does not clear freetext field
  • cht-core#6374: Labels for select fields are grey instead of black like other fields
  • cht-core#6389: If multiple task documents are created with the same emission id only one of them is ever updated
  • cht-core#6394: LHS Contact Action labels don’t render at 400px or below
  • cht-core#6415: Missing translation “state.duplicated”
  • cht-core#6417: As an offline user, submitting a report without a subject throws an error
  • cht-core#6421: Db-doc doesn’t allow unallocated data_records
  • cht-core#6425: Support resolving tasks concerning unknown contacts
  • cht-core#6440: Sentinel will skip changes entirely in certain conditions
  • cht-core#6450: Images used in a repeat are only showing spinners
  • medic-conf#286: Hierarchy error prevents “move-contacts” action from working with parents using contact_type
  • medic-conf#288: Keep our apps and configurations in sync with medic-conf version
  • medic-conf#300: Error when uploading forms using Windows CMD/Powershell using medic-conf 3.1.0
  • medic-conf#301: Unable to upload an app form after changing its .properties.json
  • medic-conf#303: upload-app-forms skips the upload of forms based only on local changes, ignoring the state of the form on the instance
  • medic-conf#325: Task generation fails when given contactless reports

Technical issues