Skip to content

Releases: opencrvs/opencrvs-core

OpenCRVS - v1.9.2

08 Dec 11:59

Choose a tag to compare

Introduction

OpenCRVS v1.9.2 is a hotfix release which includes bug fixes, improvements and new functionality.
It is to be used in conjunction with a forked country configuration release v1.9.2

New features

  • Toolkit now exports window().location.get to country config that can be used as a template variable e.g. in HttpField request body.

OpenCRVS - v1.9.1

01 Dec 14:25

Choose a tag to compare

Introduction

OpenCRVS v1.9.1 is a hotfix release which includes bug fixes, improvements and new functionality.
It is to be used in conjunction with a forked country configuration release v1.9.1

Breaking changes

  • QUERY_PARAM_READER now returns picked params under a data object.
    For example, code and state are now accessed via data.code and data.state.

    Previously:
    field(.query-params).get('code')
    Now:
    field(.query-params).get('data.code')

  • Removed support for following scopes

    • NATLSYSADMIN
    • DECLARE
    • VALIDATE
    • CERTIFY
    • PERFORMANCE
    • SYSADMIN
    • TEAMS
    • CONFIG
    • RECORD_EXPORT_RECORDS
    • RECORD_DECLARATION_PRINT
    • RECORD_PRINT_RECORDS_SUPPORTING_DOCUMENTS
    • RECORD_REGISTRATION_PRINT
    • RECORD_PRINT_CERTIFIED_COPIES
    • RECORD_REGISTRATION_VERIFY_CERTIFIED_COPIES
    • PROFILE_UPDATE

New features

  • Add multi-field search with a single component #10617
  • Search Field: A new form field that allows searching previous records and using the data to pre-fill the current form. #10131
  • HTTP input now accepts field('..') references in the HTTP body definition.
  • Searchable Select: A new select component that allows searching through options. Useful for selects with a large number of options. Currently being used in address fields. #10749

Bug fixes

  • During user password reset, email address lookup is now case insensitive #9869
  • Users cannot activate or reactivate users with roles not specified in the user.edit scope #9933
  • Login page no longer show "Farajaland CRVS" before showing the correct title #10958
  • ALPHA_PRINT_BUTTON does not get disabled after first print #10953

OpenCRVS - v1.9.0

05 Nov 12:27
0751e0f

Choose a tag to compare

Introduction

OpenCRVS v1.9.0 is a minor release which includes bug fixes, improvements and new functionality.
It is to be used in conjunction with a forked country configuration release v1.9.0

Breaking changes

  • Dashboard configuration through Metabase has been fully migrated to countryconfig, and the standalone dashboard package has been removed.
    For details on configuring dashboards and information about the latest updates, refer to the ANALYTICS.md documentation.

New features

Events V2

We are excited to announce a major overhaul of our events system: Events V2.
This is a complete rewrite that introduces a new level of flexibility and configurability to how life events are defined and managed across the system.

The new Events V2 architecture is built around a set of core concepts designed to make event management more powerful and customizable.

Events

An Event represents a life event (or any kind of event), such as a birth or a marriage.
Each event is defined by a configuration that specifies the sequence of Actions required to register it.

Actions
Declaration Actions

Declaration actions are used to modify an event’s declaration.
These actions must be executed in a defined order and cannot be skipped.

  1. DECLARE
  2. VALIDATE
  3. REGISTER

Each action must be accepted by countryconfig before the next one can be performed.

Rejecting and Archiving

After declaration, instead of proceeding with registration, an event may be either rejected or archived.

If deduplication is enabled for an action, performing that action may trigger a DUPLICATE_DETECTED action if duplicates are found.
When this occurs, two additional actions become available:

  • MARK_AS_DUPLICATE – archives the event.
  • MARK_AS_NOT_DUPLICATE – resumes the normal action flow.

If an event is rejected by a user, the preceding action must be repeated before continuing.

Actions Before Declaration
  1. NOTIFY – a partial version of the DECLARE action.
  2. DELETE – an event can be deleted only if no declaration action has yet been performed.
Actions After Registration

Once an event has been registered, a certificate may be printed.
If a correction is required due to an error in the registered declaration, a correction workflow must be initiated.

  1. PRINT_CERTIFICATE
  2. REQUEST_CORRECTION
  3. REJECT_CORRECTION
  4. APPROVE_CORRECTION
General / Meta Actions
  1. READ – appended to the action trail whenever a complete event record is retrieved.
  2. ASSIGN – required before any action can be performed. By default, the user is automatically unassigned after completing an action.
  3. UNASSIGN – triggered either automatically by the system or manually by a user (if the record is assigned to themselves or if the user has the appropriate permission).
Forms, Pages, and Fields

Event data is collected through Forms, which come in two types:

  • Declaration Form – collects data about the event itself
  • Action Form – collects data specific to a particular action, also known as annotation data in the system

Forms are composed of Pages, and pages are composed of Fields.
Fields can be shown, hidden, or enabled dynamically based on the values of other fields, allowing for a responsive and intuitive user experience.

To simplify configuration, we’ve introduced a set of helper functions:

defineDeclarationForm()
defineActionForm()
definePage()
defineFormPage()

All of these are available in a type-safe manner via the new @opencrvs/toolkit npm package.

Conditionals & Validation

Validation has been significantly improved through the adoption of AJV and JSON Schema, providing standardized, robust, and extensible validation.

The field function (exported from @opencrvs/toolkit) includes a set of helpers for defining complex validation rules and conditional logic.

Available helpers include:
  • Boolean connectors: and, or, not

  • Basic conditions: alwaysTrue, never

  • Comparisons: isAfter, isBefore, isGreaterThan, isLessThan, isBetween, isEqualTo

  • Field state checks: isFalsy, isUndefined, inArray, matches (regex patterns)

  • Age-specific helpers: asAge, asDob (to compare age or date of birth)

  • Nested fields:

    field('parent.field.name').get('nested.field').isFalsy()

The user object, also exported from @opencrvs/toolkit, includes helpers for user-based conditions such as:

user.hasScope()
user.hasRole()
user.isOnline()

These conditions can control:

  • SHOW – whether a component is visible
  • ENABLE – whether a component is interactive
  • DISPLAY_ON_REVIEW – whether a field appears on review pages

They can also be used to validate form data dynamically based on the current form state or user context.

Drafts

The new Drafts feature allows users to save progress on an event that has not yet been registered.
Drafts act as temporary storage for an action and are visible only to the user who created them.

Advanced Search

Advanced search is now configurable through the EventConfig.advancedSearch property, allowing different sections of an advanced search form to be defined.

You can search across:

  • Declaration Fields – using the same field function from declaration forms with helpers such as range, exact, fuzzy, and within

  • Event Metadata – using the event function to search against metadata such as:

    • trackingId
    • status
    • legalStatuses.REGISTERED.acceptedAt
    • legalStatuses.REGISTERED.createdAtLocation
    • updatedAt

More details about the metadata fields are available in packages/commons/src/events/EventMetadata.ts.

Deduplication

Event deduplication is now configurable per action via the EventConfig.actions[].deduplication property.
Helpers for defining deduplication logic—such as and, or, not, and field—are available from @opencrvs/toolkit/events/deduplication.

The field helper can reference declaration form fields and be combined with:

strictMatches()
fuzzyMatches()
dateRangeMatches()

to define precise deduplication rules.

Greater Control over Actions

Each action now progresses through three possible states: requested, accepted, and rejected.
When a user performs an action, it is first marked as requested and forwarded to countryconfig via the /trigger/events/{event}/actions/{action} route, with the complete event details included in the payload.

Countryconfig has full control over how the action is processed and may choose to accept or reject the action either synchronously or asynchronously.

By hooking into these action trigger routes, countryconfig can also:

  • Send customized Notifications
  • Access the full event data at the time an action is performed

Configurable Workqueues

Workqueues can now be configured from countryconfig using the defineWorkqueues function from @opencrvs/toolkit/events.
This enables the creation of role- or workflow-specific queues without requiring code changes in core.

  • The actions property is used to define the default actions displayed for records within a workqueue.
  • The query property is used to determine which events are included in the workqueue.
  • The workqueue[id=workqueue-one|workqueue-two] scope is used to control the visibility of workqueues for particular roles.

Details on the available configuration options can be found in the WorkqueueConfig.ts file.

Event Overview

The configuration of the event overview page (formerly known as Record Audit) has been made customizable through the EventConfig.summary property.
The record details displayed on this page can be referenced directly from the declaration form or defined as custom fields that combine multiple form values. If some value contains PII data, they can optionally be hidden via the secured flag so that the data will only be visible once the record is assigned to the user.

Quick Search

The dropdown previously available in the search bar has been removed.
Any search performed through the Quick Search bar is now executed against common record properties such as names, tracking ID, and registration number by default, providing a more streamlined and consistent search experience.

Certificate Template Variables

The following variables are available for use within certificate templates:

  • $declaration – Contains the latest raw declaration form data. Typically used with the $lookup Handlebars helper to resolve values into human-readable text.
  • $metadata – Contains the EventMetadata object. Commonly used with the $lookup helper for resolving metadata fields into readable values.
  • $review – A boolean flag indicating whether the certificate is being rendered in review mode.
  • $references – Contains reference data for locations and users, accessible via {{ $references.locations }} and {{ $references.users }}.
    This is useful when manually resolving values from $declaration, $metadata or action.
Handlebars Helpers

The following helpers are supported within certificate templates:

  • $lookup – Resolves values from $declaration, $metadata, or action data into a human-readable format.

  • $intl – Dynamically constructs a translation key by joining multiple string parts.
    Example:

    {{ $intl 'consta...
Read more

OpenCRVS - v1.8.2

01 Oct 09:43

Choose a tag to compare

Introduction

OpenCRVS v1.8.2 is a hotfix release that includes fixes based on the identified needs of countries using OpenCRVS. It is to be used in conjunction with a forked country configuration release v1.8.2

Bug fixes

  • Switch back to default redis image #10173

v1.8.1

31 Jul 11:22

Choose a tag to compare

Introduction

OpenCRVS v1.8.1 is a hotfix release that includes couple of new features and bug fixes based on the identified needs of countries using OpenCRVS. It is to be used in conjunction with a forked country configuration release v1.8.1

Bug fixes

  • Inactive health facilities still appear in the Place of birth / death select #9311
  • After migrating to v1.7 task history shows legacy system role rather than new role based on alias #9989
  • Setup hardened CSP for client and login containers #9584
  • Apostrophes in role names are generated but are not supported #10049
  • Reconfigured Content Security Policy (CSP) to be more restrictive, enhancing protection against unauthorized content sources #9594
  • Ensure that place of birth/death only shows active facilities/offices on the form #9311
  • Limit year past record LIMIT_YEAR_PAST_RECORDS forcing date of birth to start from the year 1900 has been addressed #9326

OpenCRVS - v1.7.4

30 Jul 07:40
aed4ae4

Choose a tag to compare

Introduction

OpenCRVS v1.7.4 is a hotfix release that includes couple of new features and bug fixes based on the identified needs of countries using OpenCRVS. It is to be used in conjunction with a forked country configuration release v1.7.4

Bug fixes

  • Fixed historical roles displaying incorrectly in task history after migration to v1.7 #9989
  • Remove special characters from role ids on generation #10049

OpenCRVS - v1.8.0

18 Jul 06:49
e9adf6e

Choose a tag to compare

Introduction

OpenCRVS v1.8.0 is a minor release which includes bug fixes, improvements and new functionality.
It is to be used in conjunction with a forked country configuration release v1.8.0

New features

  • Kubernetes support for local development Introduced Tiltfile for OpenCRVS deployment on local Kubernetes cluster. Check https://github.com/opencrvs/infrastructure for more information.

  • Build OpenCRVS release images for arm devices #9455

  • New form components

    • ID_READER - Parse the contents of a QR code and pre-populate some fields in the form
    • HTTP - Allows making HTTP requests to external APIs. Used in conjunction with BUTTON component to trigger the request & the response can be used to pre-populate fields in the form
    • BUTTON - Used to trigger actions in the form, such as a HTTP component
    • LINK_BUTTON - Redirect to a URL when clicked
    • ID_VERIFICATION_BANNER - A banner component that can be used to display information about the ID verification process

    More on how these components can be used can be found here: In-form authentication/verification

Bug fixes

  • When the building the graphql payload from form data, we now check if a field was changed. If so then include it in the payload even if it might have been changed to an empty value.#9369

Improvements

  • Improved text color for disabled text inputs and dropdowns
  • Github runners upgraded to latest Ubuntu LTS release 24.04 #7045
  • Switch to GitHub Packages from Docker hub #6910
  • Upgrade Elasticsearch to a AGPLv3 licensed version 8.16.4 #8749
  • GH_TOKEN secret is deprecated and replaced with GITHUB_GHCR_PUBLISH_TOKEN and E2E_WORKFLOWS_TOKEN secrets. GH_TOKEN secret was widely used within workflows for manipulations with PRs and triggering e2e and deploy workflows in Country config template repositories. We segregated tokens with more restricted access. Please create following secrets in your repository:
    • Secret GITHUB_GHCR_PUBLISH_TOKEN is classic token with permissions repo, write:packages. Required to build and push OpenCRVS Core images.
    • Secret E2E_WORKFLOWS_TOKEN is fine-grained token scoped to your fork of country config template repository with permissions Contents: Read and Write.
  • Created a standalone data-seeder Docker image to decouple seeding logic from the core repository. This improves GitHub Actions runtime by avoiding full repository clone and dependency installation during environment seeding. #8976

New content keys requiring translation

constants.humanName,Formatted full name,{lastName} {middleName} {firstName},{lastName} {middleName} {firstName}
error.searchParamCountError,Error message when the search parameters are less than two,You must select a minimum of 2 search criteria,Vous devez sélectionner un minimum de 2 critères de recherche
views.qrReader.scannerDialogSupportingCopy,Supporting copy for the scanner dialog,Place the Notifier's ID card in front of the camera.,Placez la carte d'identité du notificateur devant la caméra.
views.qrReader.tutorial.cameraCleanliness,Camera cleanliness tutorial,Ensure your camera is clean and functional.,Assurez-vous que votre appareil photo est propre et fonctionnel.
views.qrReader.tutorial.distance,Distance tutorial,Hold the device steadily 6-12 inches away from the QR code.,Tenez l'appareil régulièrement à 6 à 12 pouces du code QR.
views.qrReader.tutorial.lightBalance,Light balance tutorial,Ensure the QR code is well-lit and not damaged or blurry.,Assurez-vous que le code QR est bien éclairé et non endommagé ou flou.

OpenCRVS - v1.7.3

11 Jul 11:35

Choose a tag to compare

Introduction

OpenCRVS 1.7.3 is a hotfix release that includes couple of new features and bug fixes based on the identified needs of countries using OpenCRVS. It is to be used in conjunction with a forked country configuration release v1.7.3

Bug fixes

  • Allow booleanTransformer to be used as a certificate handlebar template transformer #9631
  • Fix international to local number conversion from failing if the number was already local #9634
  • Pre-select default certificate option in print certificate collector form #9935

OpenCRVS - v1.7.2

30 May 14:40

Choose a tag to compare

Introduction

OpenCRVS 1.7.2 is a hotfix release that includes couple of new features and bug fixes based on the identified needs of countries using OpenCRVS. It is to be used in conjunction with a forked country configuration release v1.7.2

New features

  • TimeField component with AM/PM support: The TimeField component now supports both 12-hour (AM/PM) and 24-hour formats through a new prop, use12HourFormat: boolean. The logic has been refactored into two separate components, TimeInput24 and TimeInput12. The TimeField component automatically selects the appropriate component based on the prop. #8336
  • Configurable Scopes: Introduce a new syntax for scopes which provides more customizability to the SI's via scopes. Two new scopes user.create[role=a|b|c] & user.update[role=d|e|f] are getting included in this release which can be used to restrict what the role of a newly created or updated user can be set to by the user of a particular role. Gradually most of the existing scopes will be migrated to use this new syntax.
  • New Full Honorific Name Field: An optional fullHonorificName field has been added to the user management page to capture the complete name of a user including their title or honorific. This field can be used for display purposes, including rendering the name appropriately on certificates.

Bug fixes

  • Filter out inactive locations in the Organisations menu #8782
  • Improve quick search results when searching by name #9272
  • Fix practitioner role history entries from being created with every view and download #9462
  • Fix a child's NID form field cannot be added eithe rmanually or via ESignet. A father section cannot be placed before a mother section if you wish to use a radio button to control mapping addresses from one individual to aother to make data entry easier #9582
  • Fix the role of the certifier unable to get resolved for new users which in turn caused the download of the declaration to fail #9643
  • Fix one failing unassign blocking all other unassign actions from continuing #9651
  • Fix record not getting unassigned when validating an already validated record again #9648

OpenCRVS - v1.7.1

30 Apr 09:14

Choose a tag to compare

Introduction

OpenCRVS 1.7.1 is a hotfix release that includes a single bug fix and a couple of infrastructure improvements based on the identified needs of countries using OpenCRVS. It is to be used in conjunction with a forked country configuration release v1.7.1

Bug fixes

  • Use the first role assigned to a user for record history entry if no role found at the point of time when the action was performed #9300