v1.5.0: Release notes
In OpenCRVS v1.5.0 we have refactored the "workflow" microservice and deprecated the backend dependency on OpenHIM. This has vastly improved the performance of the platform.
In OpenCRVS v1.5.0 we have refactored the "workflow" microservice and deprecated the backend dependency on OpenHIM. This has vastly improved the performance of the platform.
Removed dependency on OpenHIM.
The performance of OpenHIM added an unexpected burden of 200 m/s to every interaction. Cumulatively, this was negatively affecting user experience and therefore we decided to deprecate it.
Interested implementers are free to re-introduce OpenHIM should they wish to use it as an interoperability layer without affecting the performance of OpenCRVS now that our architecture no longer depends on it.
The OpenHIM database is kept for backwards compatibility reasons and will be removed in v1.6. is an Open Source middleware component designed for managing FHIR interoperability between disparate systems as part of the OpenHIE architectural specification. We had been using this component in a much more fundamental way to monitor microservice comms in a similar fashion to Amazon SQS.
Upgrade node version to 18
This version enforces environment to have Node 18 installed (supported until April 2025) and removes support for Node 16
Use nvm to upgrade your local development environment to use node version 18.19.x.
Specified operating systems in js modules as darwin, linux
Dev scripts and Vite run with an environment variable NODE_OPTIONS=--dns-result-order=ipv4first
to resolve ipv4 addresses for localhost
to support systems that resolves ipv6 addresses by default in Node versions >=17
Update the certificate preview mechanism In effort of minimizing JavaScript-bundle size, we have streamlined the way how review certificate -page renders certificates. In case the images in your certificates are previewing blurry, you need to update your SVG-certificates to print QR-codes and other images directly with <image width="36" height="36" xlink:href="{{qrCode}}" x="500" y="770"></image>
instead of the more complicated <rect fill="url(#pattern)"></rect>
-paradigm. This doesn't affect printed certificates as they are still created as previously.
Generate default address according to logged-in user's location We have dropped support for the 'agentDefault' prop which was used as initial value for SELECT_WITH_DYNAMIC_OPTIONS fields. If you have not made any changes to address generation, then this should not affect you. If you have, you can refer to this PR to see how agentDefault has been deprecated in an example country:
Remove system admin UI items: Application, Certificates, User roles, Informant notifications We have now moved to configuring these items away from the UI in favour of directly editing these from country configuration repository in code - specifically in application-config-default.ts.
Set Metabase default credentials. These must be configured via countryconfig repository environment variables and secrets otherwise the dashboard service won't start
Check your Metabase map file. For Metabase configuration, we renamed farajaland-map.geojson
to map.geojson
to not tie implementations into example country naming conventions.
Feature flags In order to make application config settings more readable, we re-organised src/api/application/application-config-default.ts
with a clear feature flag block like so. These are then used across the front and back end of the application to control configurable functionality. New feature flags DEATH_REGISTRATION allow you to optionally run off death registration if your country doesnt want to run its first pilot including death and PRINT_DECLARATION (see New Features) have been added. FEATURES: { DEATH_REGISTRATION: true, MARRIAGE_REGISTRATION: false, ... }
Improve rendering of addresses in review page where addresses match When entering father's address details, some countries make use of a checkbox which says "Address is the same as the mothers. " which, when selected, makes the mother's address and fathers address the same. The checkbox has a programatic value of "Yes" or "No". As a result on the review page, the value "Yes" was displayed which didn't make grammatical sense as a response. We decided to use a custom label: "Same as mother's", which is what was asked on the form. This requires some code changes in the src/form/addresses/index.ts file to pull in the hideInPreview
prop which will hide the value "Yes" on the review page and replace with a content managed label. Associated bug
More improvements have been made to the infrastructure provisioning and Github environment creation scripts and documentation. The complexity is somewhat reduced.
We removed the example Wireguard VPN set up as it was confusing. Our intention was to ensure that all implementers were aware that OpenCRVS should be installed behind a VPN and used Wireguard as an example. But the configuration requirements for Wireguard confused implementers who are not using it. Therefore we decided to remove Wireguard as an example.
We now have a "backup" Github environment and the backup server is automatically provisioned. We moved the inventory file location to an explicit directory and removed parameters to scripts that can be automated. To migrate, move all inventory files (qa.yml, production.yml, staging.yml from infrastructure/server-setup
to infrastructure/server-setup/inventory
and configure infrastructure/server-setup/inventory/backup.yml
. Run environment creator for your backup server yarn environment:init --environment=backup
You can configure the file path on the backup server where backups are stored. We can also allow using staging to both periodically restore a production backup and also give it the capability if required to backup it's own data to a different location using backup_server_remote_target_directory
and backup_server_remote_source_directory
Ansible variables. This use case is mostly meant for OpenCRVS team internal use.
We now automate SSH key exchange between application and backup server. For staging servers, automatically fetch production backup encryption key if periodic restore is enabled using ansible_ssh_private_key_file
Ansible variables. Therefore documentation is simplified for a new server set-up.
In infrastructure Github workflows: SSH_PORT is new and required allowing you the ability to use a non-standard SSH port. This Github Action environment variable must be added.
In infrastructure Github workflows: SSH_HOST should be moved from being a Github Action environment secret to a Github Action environment variable before it is deprecated in 1.7.0
Follow the descriptions in the migration notes to re-provision all servers safely.
Introduced rate limiting to routes that could potentially be bruteforced or extracted PII from.
The login and client application loading experience has improved. A loading bar appears before the javaScript bundle has loaded and this transitions when fetching records.
Development time logs are now much tidier and errors easier to point out. Production logging will still remain as is.
Masked emails and phone numbers from notification logs.
Support for landscape certificate templates.
Allow defining maxLength attribute for number type fields.
A new certificate handlebar for registration fees has been added registrationFees
A new certificate handlebar for logged-in user details has been added loggedInUser
Add support for image compression configuration. Two new properties to this form field are available: DOCUMENT_UPLOADER_WITH_OPTION
compressImagesToSizeMB
: An optional prop of number type to define a compressed size. Compression is ignored when the input file is already smaller or equal of the given value or a falsy given value.
maxSizeMB
: An optional validation prop to prevent input of a file bigger than a defined value.
If a country doesnt wish to use Sentry for logging errors, the SENTRY_DSN variable is now optional and the LogRocket option has been deprecated due to lack of demand.
Given that upon an upgrade between versions of OpenCRVS, that users cache is cleared, it is important to inform staff to submit any draft applications before the upgrade date. We introduced an "Email all users" feature so that National System Admins can send all staff messages. This feature can be used for any other all staff comms that are deemed required.
Included an endpoint for serving individual certificates in development mode. This improves the developer experience when configuring certificates.
Removed logrocket refrences.
Enable gzip compression in client & login
Use docker compose v2 in github workflows
Added SMTP environment variables into the qa compose file to enable QA of SMTP servers.
In the certificate, the 'Place of Certification' now accurately reflects the correct location.
Add query mapper for International Postal Code field
Add support for image compression configuration
Provide env variables for metabase admin credentials
Improved formatting of informant name for inProgress declaration emails
There is now an option to print the review page of an event declaration form. The PRINT_DECLARATION feature flag in application config settings can enable this on or off.
Fix records not getting issued [#6216] (https://github.com/opencrvs/opencrvs-core/issues/6216)
Fix record correction e2e failing due to stale data getting saved on redux
Fix certificate templates not getting populated for health facility event locations & ADMIN_LEVEL > 2
Fix 'Place of Certification' is showing wrong in certificate [#7060] (https://github.com/opencrvs/opencrvs-core/issues/7060)
Fix French translation missing for relationship to informant when trying to correct record, print and issue record [#6341] (https://github.com/opencrvs/opencrvs-core/issues/6341)
No longer an assumption made that production server Docker replicas and Mongo replica-sets are necessary. In our Docker Compose files, we had originally assumed that a production deployment would always be deployed on a cluster to enable load balancing. We applied a by default on production and set on each microservice. However after experience in multiple countries running small scale pilots, a production deployment usually starts off as 1 server node and then scales into a cluster over time in order to save costs and resources. Therefore these replicas are a waste of resources. So you will notice that this has been deleted. You can always manually add your desired replicas back into you Docker Compose configuration if you want. In Docker Compose files, search for REPLICAS and update accordingly as well as attending to the linked examples.
Groom's and Bride's name, printIssue translation variables updated
Handle back button click after issuing a declaration
Fix certificate verification QR code for a death declaration
Fix certificate verification QR code crashing when gender is unknown
Fix certificate verification page missing registration center and the name of registrar
Amend certificate verification showing the certifying date instead of records creation date
Convert eventDates to LocalDate before formatting
In advance search, any status tag is showing archived after search
Fix first name issues when creating a user
Show correct record option in certificate preview page when trying to print by RA
Fix download failure for incomplete (without date of death) death declarations
Fix search result declaration record audit unassign issue
In review page, Eliminating the 'No supporting documents' and 'upload' prompts when documents are already uploaded
In record audit page, after 'Correction request approved' the “record corrected” action is removed from history
Fix Registrar of any location should be able to review a correction request
remove upload button when no supporting docs are configured
Fix issues of invisible inputs when navigating from can't login link in login page
Fix the "Continue" button being disabled when changes in correction form is made
Remove leading slash from resendAuthenticationCode
in login to fix resend email button
Fix dashboard cron jobs not working
Fix Check for valid date to handle incomplete marriage declarations
Fix session expiration when user tries to change phone number
Fix client modal glitches on integrations page
Fix print record page for an unsaved declaration
Fix Reset pagination to default page (1) when location changes in UserList
Fix Disabling 'Mark as duplicate' button when duplicate reason is empty too
Fix certificate overflowing in preview certificate view
Fix records going completely missing when an unexpected error happens in the backend
Fix correction done from a certificate preview page
Fix "Print and issue to groom|bride" is added to a different variable
Fix search query is not being saved in the advanced search results
Fix removed duplicateTrackingId check in createDuplicateTask method
Fix address property handling and corrected country data transformation logic
Fix search indexing BRN's in place of identifiers. Adds spouseIdentifier to search with
Rename farajaland-map.geojson
in dashboards to map.geojson
to not tie opencrvs-core into a specific country implementation name
Fix unassign action not appearing in audit history
Update advanced search list properly when assignments change
Update Content-Security-Policy to allow loading fonts from country configuration
Fix frontend crashing on 'Registration by Status' under performance due to missing translations
Fix email of practitioner to be saved in hearth. A migration is added to correct the email of practitoiner in existing db.