OpenVPMS 2.3.1

The OpenVPMS development team is pleased to announce the release of OpenVPMS 2.3.1.

The release can be downloaded from the Download page.

See Installing OpenVPMS for installation instructions.

See Known Issues for any known issues with this release.


Many thanks to the following organisations that funded new features:

  • Australian Animal Hospitals
  • Healius

Upgrading OpenVPMS

See Upgrading an existing system for general instructions on upgrading from an earlier release.

Users upgrading from a release prior to OpenVPMS 2.3 should consult the OpenVPMS 2.3 release notes for upgrade steps that should be performed to migrate from those releases.

Users upgrading from OpenVPMS 2.3 should perform the following steps:

  1. Copy from OpenVPMS 2.3 installation to <OPENVPMS_HOME>/conf
  2. Migrate the database
  3. Load updated templates
    Replace --size A4 with --size Letter or --size A5 as required.
    • OVPMS-2724
      toolbox template --load 'Practice Sum. Count Appointments by Clinician' 'Practice Sum. Count Appointments by Type' --size A4

    • OVPMS-2672
      toolbox template --load 'Patient History Search' --size A4
    • OVPMS-2641
      toolbox template --load 'Vaccination Certificate (Reminders)' --size A4
    • OVPMS-2633
      toolbox template --load 'Restricted Drug Sales Report' --size A4
    • OVPMS-2629
      toolbox template --load 'Export Customer Addresses for Sales' 'Export Customer Email Addresses for Sales' 'Export Customer Phone Numbers for Sales' --size A4
  4. Install the web application


Features in this Release

Email Document Loader Job

The Email Document Loader is a scheduled job that loads mail attachments from emails to existing patient Investigations.

Attachments are associated with Investigations by parsing their identifier from the attachment file name.

Emails can be read from mail servers that support IMAP.

End Period Job

The End Period job performs end-of-period processing for all customers.

This can be used in place of the manual End Period process in Reporting - Debtors.

Laboratory Data Import

The Import Laboratory Test Data window is used to import laboratory test data for offline laboratory providers.

This can be used to:

  • create and update the laboratory tests for a provider
  • update the unit prices for products that use the tests

Restricted drug sales report

A report is now included to list sales of S8 products.

New Appointment statuses

Appointments can now be marked:

  • Confirmed - to indicate a customer has acknowledged their appointment.
  • No Show - to indicate a customer hasn't turned up for an appointment




See Requirements for the pre-requisites for this release.

New features: 

OVPMS-2576 Email Document Loader Job

OVPMS-2633 Restricted drug sales report

OVPMS-2644 Add support to authenticate IMAP and SMTP connections using OAuth2

OVPMS-2694 Laboratory price update support


OVPMS-2010 Prevent Add Visit & Note if there is an existing visit

OVPMS-2591 Prioritise display of phone number in customer summary

OVPMS-2595 Automate End Period

OVPMS-2601 Add toolbox user --add-role and --remove-role commands

OVPMS-2607 Vetcheck -- add Microchip and Desexed status query parameters

OVPMS-2610 Add clinician filter to Reporting - Charges

OVPMS-2615 Replace suburb field with a selector, enable searching by postcode

OVPMS-2616 Report generation performance degraded between 2.2 and 2.3

OVPMS-2662 Add support to confirm an appointment

OVPMS-2685 Suppress bank details on Customer Invoice Email if the invoice is fully allocated

OVPMS-2689 Trim leading & trailing whitespace from search fields

OVPMS-2692 Increase size of visit notes in product template from 1000 to 5000 characters

OVPMS-2724 Add support to flag appointments as 'No Show'


OVPMS-2581 Suppress reporting of OutOfMemoryError

OVPMS-2582 Allow suburbs to be created without postcodes

OVPMS-2587 Update openvpms-auth-plugin to support Tomcat 9

OVPMS-2589 Update log4j2

OVPMS-2592 Update log4j2 to 2.17.0

OVPMS-2598 Force error dialogs to always display on top

OVPMS-2604 Provide support to enable EFTPOS terminals to prompt for data when registering

OVPMS-2609 Don't reset appointment reason if no default is defined

OVPMS-2625 Enable column spanning for phone and email contacts in customer summary

OVPMS-2627 Provide maven plugin to update the database

OVPMS-2630 Improve message when trying to dispense a prescription with an inactive medication

OVPMS-2634 Default weight units

OVPMS-2637 Billing API

OVPMS-2640 Billing API - reminders

OVPMS-2645 Billing API - alerts

OVPMS-2647 Add support to DomainQuery to sort by descending id

OVPMS-2656 Add InvestigationType.getTypeId()

OVPMS-2657 Add InvestigationTypeBuilder.typeId(String archetype, String code, String name)

OVPMS-2667 Display or suppress investigation result Units and Qualifier columns, based on presence of data

OVPMS-2669 Increase size of investigation Message field

OVPMS-2675 Cancel reminders rather than delete them, if reminders have already been sent

OVPMS-2683 Force SmartFlow Sheet calls to timeout after 20 seconds

OVPMS-2691 Add support to enter product dose rate to 3 decimal places

OVPMS-2701 Order JasperReport subreport on id, if no sort is given

OVPMS-2713 Suppress auto-query of Reporting - Reminder tabs

OVPMS-2737 Change appointment confirmed tick icon

OVPMS-2744 Prevent patient change if an appointment is linked to a visit or task

OVPMS-2768 Skip UTF-8 byte order mark when reading CSV files

OVPMS-2776 Limit weight range

Bug fixes: 

OVPMS-2578 Medication Dispensing Window doesn't update Name

OVPMS-2579 Delivery creates multiple unit prices if the current unit price has a future to-date

OVPMS-2584 Template print flag not applied on estimates

OVPMS-2585 NPE viewing logs

OVPMS-2588 Missing unitPrice triggers NPE submitting supplier order

OVPMS-2590 Macro expansion in SMS in Workflow - Scheduling summary uses wrong patient

OBF-217 ArchetypeService not validating minLength or maxLength properties of nodes on save.

OVPMS-2596 End Period should not finalise Completed invoices with unsubmitted investigations

OVPMS-2597 Statement print for arbitrary period generates incorrect opening balance

OVPMS-2600 Removal of admin role from Service User prevents startup

OVPMS-2603 Rules not triggered for Finalise in Customers - Payments

OVPMS-2608 Retry posting of invoice if it fails during check-out

OVPMS-2612 Claim attachments not added when mailing via Patients - Medical Records - Insurance - Mail

OVPMS-2613 Claim not accessible to template when using Print - Mail

OVPMS-2614 Reminder printing uses customer practice location to select printer

OVPMS-2621 Mail SMS provider stuck during SSL handshake

OVPMS-2622 Inclusion of jsr305-3.0.2.jar can prevent plugin deployment

OVPMS-2624 Provide overdue balance to statements generated by Customers - Account - Statement

OVPMS-2626 EmailDocumentLoaderJob not cleaning mime type

OVPMS-2629 Customer contacts for sales export reports not filtering by Product, Product Type

OVPMS-2639 'Updated is greater than Sent' error when editing SMS

OVPMS-2641 Vaccination Certificate with reminders.jrxml can go into infinite loop

OVPMS-2642 Raise validation error if an investigation cannot be submitted at practice location

OVPMS-2648 Customer Accounts Email not defaulting to address

OVPMS-2653 Customer search by patient includes inactive patients

OVPMS-2658 OrderQueryImpl.laboratory() returns null

OVPMS-2659 Customer Invoice Email with Bank template included private email address

OVPMS-2660 NPE merging OpenOffice document

OVPMS-2664 OutboundMessageBuilder should reject blank phone numbers

OVPMS-2666 Malformed ESCI invoice generates StackOverflowError

OVPMS-2668 PluginConfigurationService doesn't update plugin if related object changes

OVPMS-2672 Patient History Search report fails if 'Limit number of results to' parameter cleared

OVPMS-2673 OrderQueues doesn't receive notifications of new laboratories

OVPMS-2678 Type details shown when viewing Document Templates

OVPMS-2686 Re-instate ability to edit task times

OVPMS-2695 Cannot delete lookup.species when there is a mapping present

OVPMS-2697 Overdue fee not included in balance by End Period

OVPMS-2702 Only last sort field used for JasperReport subreport

OVPMS-2704 Editing finalised payment changes its date

OVPMS-2723 scale script doesn't support files with spaces

OVPMS-2733 Intermittent failure building openvpms-billing-impl

OVPMS-2734 Scheduled Report fails if no default printer configured on practice location

OVPMS-2738 Cannot External Edit documents with & in name

OVPMS-2739 Cannot add target with archetype act.EFTPOSPayment to node named eft in archetype act.customerAccountRefundEFT

OVPMS-2740 Prevent patient change after check-in

OVPMS-2754 Incorrect to email address when emailing from Charges and Accounts when customer has no email.

OVPMS-2756 Location filter for SMS replies doesn't work

OVPMS-2762 NPE if a patient-owner relationship is removed after charging

OVPMS-2763 Visit reason selector now does starts-with searches, not contains searches

OVPMS-2765 Insurance Claims Report doesn't support Incomplete status query

OVPMS-2766 Insurance Claims Report doesn't support date range query

OVPMS-2769 JNLP file being downloaded without extension

OVPMS-2772 EntityNotFoundException during account balance generation

OVPMS-2773 NPE viewing stock on hand

OVPMS-2774 NPE changing location

OVPMS-2775 Cutting/copying a roster shift doesn't preserve the shift end time