DHIS version 2.31 is released

(Lars Øverland) #1

Hi all,

DHIS2 version 2.31 is out with many new features, apps and improvements.

Log in with admin / district on the demo server. Right-click on the links to open in new tab.


New data visualizer app: A completely new version of the Data Visualizer app introduces a more intuitive, user friendly experience for building charts in DHIS2. You will find a new and simpler selection process for periods, organizational units, data, and layout. The right interpretations panel has also been reworked to help you communicate with your colleagues directly around the data. This beta release will serve as the app for all further development and improvements in data visualizer, but the old data visualizer app will continue to be supported for the next few releases to assist organizations and ministries in transitioning to the new app.

Screenshot 1 | 2 | 3 | 4 | Demo | Docs | Jira

Year over year chart: A new chart type is available: year over year. With year over year charts you can make a line or bar chart where both categories and series represent a time dimension. A typical chart will display the last years as series and the last 12 months (within those years respectively) as categories.

Screenshot | Demo | Jira

Event layer style by data element: Points in Event layers in Maps app can now be colored based on their event attributes and data elements. E.g. you can display different colors for points for gender, age groups and status.

Screenshot | Demo | Jira

Maps image download: You can now download an image of your maps directly from the maps app. These images are in PNG format and can be included into your presentations, text documents and reports. You can download to image from the “Download” link in the top menu.

Screenshot 1 | 2 | Demo | Jira

Map layer data download: You can now download your maps from DHIS2 in GeoJSON format to be used in other GIS software for more advanced analysis. Click on the context menu for the map layer of interest, then click “Download data”.

Screenshot | Demo | Jira

Event aggregation in time by data item: In event reports and visualizer, you can now aggregate events in time based on a data element or attribute in the program of value type date which. As an example, you can aggregate inpatient cases based on the admission date of visits as opposed to event date. Click on “Layout” and select a time type data element from the “Time field” drop-down.

Screenshot | Demo

Rich text for interpretations and comments on dashboards: You can now use basic formatting such as bold, italics and emoticons in interpretations and comments on dashboard items.

Screenshot | Demo | Jira


New logo: A fresh new logo is introduced throughout the system. You can find material for the new DHIS 2 identity here.

Screenshot | Demo | Identity repository | Jira

Maintenance search: In maintenance app you can now search for objects using tokens (words) within the name of the object. The search is also now performed across the the name, short name, code and identifier of the objects.

Screenshot 1 | 2 | Demo | Jira

Configurable columns in maintenance: You can now freely select and arrange which columns to display in lists of objects in the maintenance app.

Screenshot 1 | 2 | Demo | Jira

Import-export conflict summary: Conflicts generated while performing a data import are now reported in a summary table as well as a list of individual conflicts. In addition the logging has been made more readable, and an option has been added to include deleted records in import: DHIS2-4618

Screenshot | Demo

Last login per user: The user management app now displays the last login date for each user in the list of users:

Screenshot | Demo | Jira

Extended user profile: It is now possible to include a profile picture in the user profiles as well as allowing user to have WhatsApp, Facebook Messenger, Skype, Telegram and Twitter identifiers added to their settings. International dial code is validated for phone numbers. Phone numbers are unique per user.

Screenshot | Demo | Jira

User profile picture: A profile picture can be added under user profiles.

Screenshot | Demo | Jira

Icons and colors for data sets: You can now assign colors and icons to data sets. The Android App will render the icons and colour in the home screen and data entry form.

Screenshot | Demo | Jira


New event capture app: The new version of Event Capture is out, and is now named “Capture”. This app allows capturing and viewing single event programs. The new app features a modern look and feel, based on modern ui design standards. A new workflow is introduced with more options for navigating between organisation units or programs with the quick selector. An optional compact row-mode is introduced when adding events, and events can be added in batches/sessions that is useful for self-checking after a session. The app features colors and icons defined in program metadata, giving the user more visual context. Functionality for working offline or in intermittent connectivity is more solid than ever, and is designed to work well in every aspect of the app. In coming releases this app will also be expanded with functionality cover Tracker Capture and Data Capture functionality.

Screenshot | Demo | Docs | Jira

Default table mode for data entry: Program stages can now be configured to render as tables by default for data entry purposes. The selected entry mode is saved per program stage for each user, and an administrator might save and possibly lock a default for all users. This is useful when different program stages is naturally viewed in different modes - for example listing all previous pregnancies in a list, while at the same time showing the antenatal care visits in normal mode.

Screenshot | Demo | Docs | Jira

Customized look and feel: You can now make use of colors, icons and other customization options to optimize the look and feel of your programs in Tracker Capture and Capture app.

Screenshot 1 | 2 | Demo

Event validation strategy: Required field validation is now done in the API as well as the clients. For single event programs it is possible to define whether an event would have to be valid before it is saved, or if it is enough that the event is valid when marking it as complete. For legacy reasons will tracker programs always be validated when events are completed. Also note that a new authority is introduced to circumvent the chosen validation strategy.


New rendering options: For data elements and attributes of value type text, you can now enable or disable auto-complete option for Android clients.

Screenshot | Jira

Capture area geometry for tracked entity instances and enrollments: You can now capture an area linked to a tracked entity instance or enrollment. You can configure in the maintenance app whether a point (location) or polygon (area) should be captured (or wether to capture no geometry at all). The underlying data storage is changed to geometry to allow for both points and areas to be stored.

Demo | Screenshot 1 | 2 | Docs | Jira

New program indicator functions: Functions for counting number of relationships a record has, and for counting occurrences of data values for repeating events. The functions can be used to make a program indicator that does not only look at the latest data value within an enrollment, but check for any value with a certain criteria. An example could be to count the number of visits where one patient has had a low hemoglobin value, over the course of many visits(events) in one enrollment. Traditional enrollment program indicators only examined the latest data value within an enrollment.

Demo | Docs | Jira


Database migration: The Flyway framework is introduced for upgrading databases between DHIS 2 versions. This means that the upgrade process is much faster as the upgrade is only done exactly once. It implies greater control over database schema changes which should lead to less issues with upgrades.


Batch approvals endpoint: You can now get data approval information from /dataApprovals/multiple with lists of workflows, periods, and organisation units. You can also use startDate and endDate for periods.



Release Information Link
Download release and sample database https://www.dhis2.org/downloads
Documentation and Javadocs https://www.dhis2.org/documentation
Upgrade notes Upgrade notes for 2.31 on GitHub
Details about each feature on JIRA (requires login) https://jira.dhis2.org/issues/?filter=11046
Overview of issues on JIRA (requires login) https://jira.dhis2.org/issues/?filter=11047
Source code on Github https://github.com/dhis2
Demo instance https://play.dhis2.org/2.31/
DHIS 2 community https://community.dhis2.org/

(Asif) #4

Great news. We aim to upgrade to 2.31 from 2.28. Looking forward to testing some of the new and exciting features.

(Prosper) #5

Great work team, looking forward to the great features

(Dennis Banga) #6

Great new features and improvements. Thanks to team !

(John Francis Mukulu) #7

Hongera sana.
Good to see innovations moving forward.

(Bernard Sadaka) #8

@Asif we are in the same process. the first thing we did was migrate the production server using 2.28 to PSQL 11.1 along all the plugins and stuff.
Then we did the migration on development server to 2.29, did a few tests then to 2.30 and did a few tests and now we intend to migrate to 2.31 and do the whole testing thoroughly.
Once the tests on the development server are satisfactory we will migrate the production to 2.31.
Will be glad to share experiences especially with weird internal errors being logged by catalina (some of which are easy to solve, but many are very weird ;$ )

(James Omutsani) #9

It’s nice to know that you are migrating to the newest Version 2.31 @SDKAAA .Kindly share with us some of the ‘weird internal error logs’ being generated from your system for the Team to look at and advise where necesarry.


(Vincent Ngelageza) #10

This is Great, Bravo for the team

(Bernard Sadaka) #11

I’ve just noticed that the war file is under a new pattern of url: https://s3-eu-west-1.amazonaws.com/releases.dhis2.org/2.31/2.31.0/dhis.war

is there a plan to have subversions of 2.31 (2.31.1, 2.31.2 …) ?

(Philip Larsen Donnelly) #12

I just want to echo what James said about posting any upgrade issues you encounter, so that we can share solutions with the community!
In particular, we know some people had problems caused by the introduction of flyway during the beta testing phase. Flyway will streamline upgrades, but the initial transition to 2.31 can require some fixes to the DB in some cases. The core team can help to identify and solve such issues.

(Philip Larsen Donnelly) #13


you are very observant! :wink:

Yes, there is a plan to have patch releases.
The initial release is 2.31.0
The next production release will the the patch (bug-fix) release 2.31.1
And so on.

In this way production releases will always represent a known/controlled version, instead of having e.g. a production 2.31 war file which simply reflects the head of the 2.31 source branch at the time was built.
(It will always be possible to generate the “bleeding-edge” builds of any version, but they should not be considered validated for production use).

(Bernard Sadaka) #14

@phil good step into standard version control! I will have to adjust my upgrade scripts for that though :rofl::joy:

(Eric Munyambabazi) #15

Good to finally see improvements on the Visualizer App. Excellent work team!

(Calle Hedberg) #16


With the new patch releases: is the latest (patch) release used to access an instance now stored in the instance itself?



(Pradeep Thakur) #17

Excellent work

(Philip Larsen Donnelly) #18

Hi @Calle_Hedberg,

The exact version of DHIS 2 is not stored in the database; though I agree that could be a useful feature in several use cases.

Flyway will provide some indication, at least of the maximum version that has been applied (based on the Flyway schema history table). It should also take care of upgrade issues automatically, for versions above 2.30.
In the use case we discussed, where an instance has been rolled-back to an earlier release, this schema history table would indicate which additional changes had been applied (and by default the instance would fail to run without addressing these issues and updating the table). Flyway itself cannot be used to revert to a previous schema as the transactions cannot be guaranteed to be reversible.

Kind regards,

(Bidemi John) #19

This is good improvement on the visualizer app and event capture. Great work team.

(Asif) #20

I’m wondering why you couldn’t upgrade directly to 2.31?

Please keep us posted on internal errors and if you find fix

(Norberto Victorino Banze) #21


How is your experience with the new version? Any problems identified? I am asking because i am planning to upgrade today from 2.30 to 2.31 and would like to confirm if all is okay.

Thanks for sharing your experience with us.

(Absolom Muramira) #22

I have already upgraded to he latest version but i am experiencing some issues.

  1. Completing an event in tracker throughs an error “invalid date format”
  2. It is very time consuming to update user access rights to categories, category option, category option combinations etc for users to be able to enter data. I am still experiencing issues with my datasets. Ideally, i thought that when you assign a usergroup to a category, it should replicate that to the category options.

Otherwise the version is exciting. I just migrated from v2.28