mSupply v9.03 (2026-07-30)
Improvements
- Dispensary: Preference to “Show `Hold` checkbox on prescriptions” [18532]
- Inactive user auto-logout will now work on single-user sites [18365]
- Tender quotes log tab [18199]
- Optimise item import process [18360]
- Custom data (list type): add a way to clear a field value once set [18480]
Nauru
- Nauru: Prescribed but not dispensed report (Unfulfilled prescription report) [18513]
UK-Med
- Add ons on commercial invoice and freight info reports [18468]
South Sudan UNFPA
- South Sudan UNFPA – Waybill report with UNFPA logo only [18384]
Nigeria
- Integration: COMS inventory file creation to handle illegal filename characters (e.g. “/”) [18555]
Bug Fixes
- The cross-tab transaction report shows the suppliers instead of customers in the report [18501]
- Duplicate transaction category codes and descriptions accepted without validation alert [18496]
- Customer shortfall report does not provide the right data [18492]
- Duplicate process is not clearing some linked PO and GR record ID [18407]
- Prescription loading is slow for the first time when the ward is assigned [18375]
- Store Preferences `Expiring items period` and `Stocktake frequency` should not accept decimals [18316]
- Health supply hub supplier download does not populate address and contact fields in mSupply [18271]
- Fixed “Item usage report w/ pending PO” where it creates an empty line and an empty next page. [18211]
- Health supply hub `Test Connection ` shows test successful even if you entered the wrong credentials [18173]
- Avoid the use of the merged name in transactions after the names are merged [17926]
- Internal orders are not syncing when the default supplier is not visible to the customer [17890]
- Avoid editing the repacks transactions of stores of another site [17761]
- Repack cannot be created for the first time [17645]
- Avoid user timeout when adding/editing locations, items, masterlists and running reports [18481]
- Name store visibility tab incorrectly marks an extra store as visible [18471]
- Overdue stocktake value does not update in notification after finalising the stocktake [18448]
- ‘Execute On Server’ emails have no attachments [18371]
- Field in use alert if custom data is used by the same table name in preferences > custom fields [18256]
- There is no dashboard export scheduler even if the dashboard setting has been done in new datafile [18249]
- The reporting for ledger issues takes a long time to report even for a single store [17970]
- Runtime error when you try to delete the by the deleted supplier in tender [17862]
- Avoid exporting a disabled site [17710]
- “Can finalise/authorise replenishments” permissions not working [18506]
- Sync v5 site initialisation times out and loops for large/multi-store sites [18405]
Internal / Open mSupply
- Various field changes
- Upgrade to 4D v20.8 HF3 [18560]
- Make all scheduler processes preemptive [17972]
- cURL plugin to use openSSL 4.0 [18356]
mSupply v9.02 (2026-07-03)
Internal improvements
- Sync V7: latest sync protocol between Open mSupply and legacy mSupply [18051]
- Store data migration from mSupply to Open mSupply [18051]
- Schedule a time for migration [18423]
- Allow pause/resume migration [18466]
- Able to prioritise store for migration [18321]
- Site form: show how many store records a store/site has [18050]
- Site form: optimistic locking [18416]
- Field changes
mSupply v9.01 (2026-05-29)
Improvements
- User permissions preset template [18132]
- Option to select specific fields when exporting dashboards [18073]
- Site form now shows the number of store records associated with a store/site [18050]
- Allowed zero quantity on prescription lines when the “Edit Prescribed Quantity” preference is enabled [18127]
- Option to enable or disable the aggregator scheduler per data element [18266]
- Optimised aggregators: Total Consumption, Stock Movement, Stock History, and Monthly DOS [18268] [18298]
- Asset module: Added custodian phone number and email labels from the customisable list [18157]
- Custom fields for supplier invoice line [18118]
- Master list log when “Automatically add new items to this master list” is enabled [18134]
- Log when a user generates a “User Activity Report” [18131]
- Added a “Unit” of Measurement column to standard stock reports [18046]
- Added ‘moved on’ column to the replenishment report [18156]
- Option to run aggregator procedure in Postgres directly [18429]
- Tamanu medication request improvements [18373]
- Allow Mac mSupply client to connect to the server [18363]
- Tamanu HL7 FHIR prescription integration, allow pulling and creating multiple items per prescription [18278]
- Option to run aggregator procedure in postgres directly [18429]
South Sudan
- Custom fields to stock and purchase order references linked to supplier invoice custom fields [18118]
- Stock custom report [18118]
Haiti
- Purchase order consignment receipt report: Added a QR code containing the purchase order number [18274]
UK-Med
- New customer invoice printout (Commercial invoice) [18138]
- New customer invoice printout (Freight info) [18137]
Myanmar
- Add Myanmar font to the issued and receipt voucher report [18135]
Kiribati
- Proposed changes to purchase order template (print) [18450]
Niger
- DHIS2 integration updates [18326]
Bug Fixes
- Fixed misleading zero Sync Site ID log messages when creating a new patient [18183]
- Updated export/import tender line column names [18155]
- Fixed customer requisitions from the EPI wastage form retaining a serial number of -1 after site export [18151]
- Disabled the PostgreSQL export queue when the dashboard is not configured [18027]
- Fixed item notes being displayed when they should not be visible [17905]
- Fixed remote searched patient home store not being set when first made visible [17427]
- Fixed stock supplier information being updated during inventory adjustment creation [18287]
- Fixed the “On Hold” checkbox becoming unchecked when reopening a replenishment [18176]
- Prevented creation of units containing only blank spaces [18174]
- Fixed a ledger issue caused by placeholder lines being issued from mobile sites [18114]
- Fixed supplier response imports where #VALUE! was incorrectly converted to 0 [18031]
- Fixed an HL7 patient merge error [18304]
- Fixed repeat prescriptions failing when the pack size is greater than 1 [18300]
- Fixed a coms integration error caused by shipment files containing an invalid expiry date (0-00-00) [18283]
- Fixed a login issue affecting users with no default store and access to multiple stores [18188]
- Fixed a web server runtime error when selecting a patient or prescriber [18162]
- Fixed a runtime issue when saving preferences after testing a tender connection [18160]
- Fixed disposal dates not appearing in asset reports [18123]
- Added fixes for Tamanu prescription integration [18100]
- Fixed an invalid currency ID issue [18090]
- Fixed manufacturer details not being visible on finalized purchase orders [18087]
- Label printing not happening if placeholder lines are present [18403]
- Update label `Use before date` for repeats expiry [18399]
- Repeat prescription processing blocked when insufficient stock despite placeholder lines being enabled [18386]
- Merging Supplier name does not merge the Health Supply Hub link [18348]
- Runtime error when opening the stock on date [18331]
- Dashboard holding too many postgres connections [18323]
- Tender line columns should hold the last rearranged order [18297]
Internal / Open mSupply
- Various field changes
- Improved log deletion performance [18133]
- Removed duplicate sync record checks during record creation [17895]
- Changed PostgreSQL export to append only mode to improve sync performance [17667]
- Added an Execute on Server preference for sending emails [18115]
- Prevented SMTP override settings from being cleared when no password is supplied [17973]
- Removed unused 4D modules from the application build [18258]
- Fixed an issue where the startup background migrations process could lock tables when running concurrently [18093]
- Removed logging for “site failed to update sync date” events [18089]
- Replenishment table is not syncing to and add oms_fields to table [18349]
- Add ShipmentVariance reason [18303]
- Routes both username and email in Grafana [18295]
Where is mSupply?
mSupply is primarily used in low- and middle-income countries around the world. You can find us in more than 35 countries.
Version History
- mSupply v9.03 (2026-07-30)
- mSupply v9.02 (2026-07-03)
- mSupply v9.01 (2026-05-29)
- mSupply v9.00 (2026-04-09)
- mSupply v8.08 (2026-02-02)
- mSupply v8.07 (2025-12-19)
- mSupply v8.06 (2025-11-10)
- mSupply v8.05 (2025-09-25)
- mSupply v8.04 (2025-08-08)
- mSupply v8.03 (2025-06-27)
- mSupply v8.02 (2025-05-14)
- mSupply v8.01 (2025-03-19)
- mSupply v8.0 (2025-01-30)
- mSupply v7.19 (2024-12-11)
- mSupply v7.18 (2024-10-09)
- mSupply v7.17 (2024-08-31)
- mSupply v7.16 (2024-07-18)
- mSupply v7.15 (2024-06-05)
- mSupply v7.14 (2024-04-26)
- mSupply v7.13 (2024-03-27)
- mSupply v7.12 (2024-02-12)
- mSupply v7.11 (2023-12-22)
- mSupply v7.10 (2023-11-27)
- mSupply v7.09 (2023-10-20)
- mSupply v7.08 (2023-09-22)
- mSupply v7.07 (2023-08-15)
- mSupply v7.06 (2023-07-05)
- mSupply v7.05 (2023-05-25)
- mSupply v7.04 (2023-04-12)
- mSupply v7.03 (2023-03-09)