3.20.2 Release Notes - October 16, 2026

Status: Stable

Version 3.20.2 is a patch release that keeps services reachable after a failed health check, fixes the stock event and physical inventory prints, and fixes valid reason assignment through the API. All users of 3.20.0 and 3.20.1 are encouraged to upgrade.

New Features

  • No new features have been added since version 3.20.1.

Improvements

  • The printed requisition summary shows the created, submitted and authorized signatures beside the three total costs, and the print skips the empty space for non-full supply products when the requisition has none, so the summary fits below the table on the first page more often.

  • User rights of the BUQ, stock price, stock event cancellation, DHIS2 and report modules have readable names in the role administration screen and can be translated.

Bug Fixes

  • A service whose health check fails stays registered in Consul. Previously Consul removed it after 10 minutes in the critical state and, since services register only once at startup, nginx answered HTTP 502 for it until the container was restarted, even when the service itself had recovered. This applies to all backend services and the Reference UI.

  • Stock event print: a product with several versions prints once, with the details of its latest version. Long product codes, names and pack size labels wrap with the whole product row, so the borders stay aligned, and a product header is no longer printed alone at the bottom of a page.

  • Physical inventory print: long product codes, product names and lot codes wrap inside their rows instead of being cut off.

  • Assigning a valid reason through POST /api/validReasons without the hidden flag creates it as shown again, instead of failing with HTTP 500 (a regression from 3.20.0).

  • The supplying-facility stock on hand column follows its template position in emergency requisitions and on the non-full supply tab, instead of always showing first. The demo requisition templates include the column (hidden), so it survives a demo data reload and can be switched on in template configuration.

  • Service releases are published to Maven Central reliably: each release uses its own staging repository and only final releases built on master are published.

Compatibility

Consul registration: services are no longer removed from Consul after 10 minutes in the critical state. An instance that failed its health check stays listed, reported as critical, until it recovers or the container is restarted.

All other changes are backwards-compatible with 3.20.0 and 3.20.1. This release contains no database schema changes or data migrations; the only data change is the supplying-facility stock on hand column (hidden) added to the demo requisition templates, which affects only instances that load demo data.

All Changes by Component

Version 3.20.2 of the Reference Distribution contains updated versions of the components listed below. The Reference Distribution bundles these components together using Docker to create a complete OpenLMIS instance. Each component has its own public GitHub repository (source code) and DockerHub repository (release image). The Reference Distribution and components are versioned independently.

Components with No Changes

Upgrading from Older Versions

If you are upgrading from a version older than 3.20.0, review the 3.20.0 Release Notes first, in particular the stock management migration and the DATABASE_URL requirement.

Upgrading from 3.20.0 or 3.20.1 to 3.20.2 requires no manual steps.

Test Coverage

The changes in OpenLMIS 3.20.2 were deployed to the UAT environment and tested manually, including the stock event and physical inventory prints, the requisition print, valid reason assignment, the supplying-facility stock on hand column in regular and emergency requisitions, and service recovery after a failed Consul health check. The results were also compared with 3.20.1 on identical data, with no regressions found.

Download or View on GitHub

OpenLMIS Reference Distribution 3.20.2

Known Issues

  • Batch Approval: Packs/Doses are not supported in the batch approve requisition view.

  • POD Compatibility: Packs/Doses are not supported in the POD creation.

  • Order Fulfillment: Quantity shipped must always be provided in packs.

  • Lot creation during stock events: a lot created while processing a receive or physical inventory event is not removed if the event then fails validation. It remains as an active lot without stock, and a resubmitted event reuses it.

Other bugs are collected in Jira for troubleshooting, analysis, and resolution on an ongoing basis. See OpenLMIS Bugs for the current list of known bugs.

To report a bug, see Reporting Bugs.

Contributions

Many organizations and individuals around the world have contributed to OpenLMIS version 3 by serving on committees (Governance, Product, and Technical), requesting improvements, suggesting features, and writing code and documentation. Please visit our GitHub repositories to see the list of individual contributors to the OpenLMIS codebase. If anyone who contributed on GitHub is missing, please contact the Community Manager. Technical development of OpenLMIS is conducted by SolDevelo.

Further Resources

Please see the Implementer Toolkit on the OpenLMIS website to learn more about best practices in implementing OpenLMIS. Also, learn more about the OpenLMIS Community and how to get involved!