Release notes
Last updated
Last updated
Upgrading your country config package from v1.6 to v1.7
In order to make the upgrade easier, there are a couple of steps that need to be performed which will make the codebase ready for the upgrade:
Run this command from the root of your country config repository
It will remove roles.csv
and generate a roles.ts
file. It will also update your default-employees.csv
& prod-employees.csv
files to match our new configuration syntax for while adding the corresponding translations in client.csv
.
The employee CSV files only affect deployments of new environments. If you already have a v1.6.x of OpenCRVS deployed, the data in the environment will automatically get migrated after deploying the upgrade. The changes in these two files are made to keep the roles in sync with your previously deployed environments, if any.
Verify and review changes made made by our upgrade script
The roles.ts
file now defines all the roles available in the system. New roles can be added & existing roles can be customised by giving them different scopes.
Once a role is defined in roles.ts
, it should never be deleted. This is to prevent situations where historical data might refer to a user role that does not exist or have configuration for it anymore.
• Template Selection for Certified Copies: Added support for multiple certificate templates for each event (birth, death, marriage). Users can now select a template during the certificate issuance process.
• Template-based Payment Configuration: Implemented payment differentiation based on the selected certificate template, ensuring the correct amount is charged.
• Template Action Tracking: Each template printed is tracked in the history table, showing which specific template was used.
• Auth token, IP address, and remote address redacted from technical server logs
• Align Patient data model with FHIR: Previously, we used string[] for the Patient.name.family field instead of string, as per the FHIR standard. We’ve now aligned the field with the standard.
• Certificate Fetching: Removed certificates from the database, allowing them to be fetched directly from the country configuration via a simplified API endpoint.
• INFORMANT_SIGNATURE & INFORMANT_SIGNATURE_REQUIRED are now deprecated.
• Existing implementations relying on database-stored SVGs need to be updated to use the new configuration-based approach. Default certificate templates must be created for each event type, following the convention ${event}-certificate as the certificate template ID.
• Roles: The previous roles.csv file has been deprecated. It will be removed once you run the upgrade command before pulling in the v1.7 changes. The command automatically generates a roles.ts file, which can be used as a baseline to configure roles as per your requirements.
• User scopes: Introduced granular scopes to grant specific permissions to particular roles. The specifics about the introduced scopes can be found here: Link to scopes description file
• Refactored certificate handling: SVGs are no longer stored in the database; streamlined configurations now include certificate details, and clients request SVGs directly via URLs.
• Auth token, IP address, remote address, mobile number, and email are redacted/masked from server logs.
• Optimised deployment times by enabling parallel Docker image downloads.
• Country alpha-3 ISO code is now derived from variables in the Docker Compose files and no longer needs to be hardcoded.
• Protected the individual certificate endpoint with a token.
• Kibana disk space alerts now work regardless of disk device names. Alerts listen for devices mounted to both / and /data (encrypted data partition).
• “Publish release” pipeline now correctly uses the “Branch to build from” value as the branch to be tagged. Previously, it attempted to tag “master”. “Release tag” is now used as the release version as-is, instead of reading it from package.json.
• Ensured that the automatic cleanup job only runs before deployment, instead of using a cron schedule.
• Previously, MongoDB replica sets and users were sometimes left randomly uninitialised after deployment. The MongoDB initialisation container now retries on failure.
• On some machines, the file utility was not preinstalled, causing provisioning to fail. We now install the utility if it doesn’t exist.
Commit the changes and follow our to complete the upgrade
• From OpenCRVS 1.7 onwards, it’s possible to create new user types with a granular set of scopes described . This allows OpenCRVS to be used for even more use cases.
• Auth now allows a registrar’s token to be exchanged for a new token that strictly allows confirming or rejecting a specific record. Core now passes this token to country configuration instead of the registrar’s token
• QR code scanner: A form field component allows pre-populating an informant’s details based on an ID card
• Updated GraphQL mutation confirmRegistration to allow adding a comment for record audit
• A new GraphQL mutation upsertRegistrationIdentifier is added to allow updating the patient identifiers of a registration record, such as NID
• Allow configuring the default search criteria for “quick search”
• Two new record statuses are added: Validated and Correction Requested for advanced search parameters
• A new field, Time Period, is added to advanced search
• Added checks to validate that the client and server are always on the same version. This prevents browsers with cached or outdated client versions from making potentially invalid requests to the backend
• Deploy UI-Kit Storybook to to allow extending OpenCRVS using the component library
• Record audit action buttons are moved into the action menu
• Reordered the system user add/edit field for surname to be first; also changed labels from Last name to User's surname, and removed the NID question from the form
• Introduced a new customisable UI component: Banner
• Added isAgeInYearsBetween validator to enable validation that constrains a date to be valid only if it falls within a specified range. The isInformantOfLegalAge validator is now deprecated and removed in favour of isAgeInYearsBetween
• validator-api, age-verification-api, and nationalId scopes are deprecated as unused. Corresponding scopes are removed from systemScopes and also removed from the audience when creating the token
• Corrected the total amount displayed for certification and correction fees on the Performance Page, ensuring accurate fee tracking across certification and correction sequences
• Fixed task history getting corrupted if a user views a record while it’s in external validation
• Fixed health facilities missing from dropdown after correcting a record address
• “Choose a new password” form now allows submission using the “Enter/Return” key
• Dropdown options now flow to multiple rows in forms
• Added constant.humanName to allow countries to define custom ordering for full names, e.g. starting with lastName or firstName
• Updated the translations for the System user add/edit form: Last name to User's surname and First name to User's first name, to make them less confusing for system users
• Added isAgeInYearsBetween validator to enable validation that constrains a date to be valid only if it falls within a specified range. The isInformantOfLegalAge validator is now deprecated and removed in favour of isAgeInYearsBetween
• Backup process no longer requires an internet connection to download Docker images, making it more reliable with unstable connections. Previously, non-active images were cleaned nightly; now, this only happens as part of deployment.
• Metabase data is no longer backed up by the default OpenCRVS country configuration. This change ensures that Metabase can be properly started as part of OpenCRVS deployment, even when a Metabase version upgrade has occurred. To learn more about configuring Metabase persistently, please refer to our documentation on