OpenCRVS
v1.5
v1.5
  • 👋Welcome!
  • CRVS Systems
    • Understanding CRVS
    • Effective digital CRVS systems
    • OpenCRVS within a government systems architecture
    • OpenCRVS Value Proposition
  • Product Specifications
    • Functional Architecture
    • Workflow management
    • Status Flow Diagram
    • Users
      • Examples
    • Core functions
      • 1. Notify event
      • 2. Declare event
      • 3. Validate event
      • 4. Register event
      • 5. Print certificate
      • 6. Issue certificate
      • 7. Search for a record
      • 8. View record
      • 9. Correct record
      • 10. Verify record
      • 11. Archive record
      • 12. Vital statistics export
    • Support functions
      • 13. Login
      • 14. Audit
      • 15. Deduplication
      • 16. Performance management
      • 17. Payment
      • 18. Learning
      • 19. User support
      • 20. User onboarding
    • Admin functions
      • 21. User management
      • 22. Comms management
      • 23. Content management
      • 24. Config management
    • Data functions
      • 25. Legacy data import
      • 26. Legacy paper import
  • Technology
    • Architecture
      • Performance tests
    • Standards
      • FHIR Documents
        • Event Composition
        • Person
        • Registration Task
        • Event Observations
        • Locations
    • Security
    • Interoperability
      • Create a client
      • Authenticate a client
      • Event Notification clients
      • Record Search clients
      • Webhook clients
      • National ID client
      • FHIR Location REST API
      • Other ways to interoperate
  • Default configuration
    • Intro to Farajaland
    • Civil registration in Farajaland
    • OpenCRVS configuration in Farajaland
      • Application settings
      • User / role mapping
      • Declaration forms
      • Certificate templates
    • Business process flows in Farajaland
  • Setup
    • 1. Planning an OpenCRVS Implementation
    • 2. Establish project and team
    • 3. Gather requirements
      • 3.1 Mapping business processes
      • 3.2 Mapping offices and user types
      • 3.3 Define your application settings
      • 3.4 Designing event declaration forms
      • 3.5 Designing a certificate template
    • 4. Installation
      • 4.1 Set-up a local development environment
        • 4.1.1 Install the required dependencies
        • 4.1.2 Install OpenCRVS locally
        • 4.1.3 Starting and stopping OpenCRVS
        • 4.1.4 Log in to OpenCRVS locally
        • 4.1.5 Tooling
          • 4.1.5.1 WSL Support
      • 4.2 Set-up your own, local, country configuration
        • 4.2.1 Fork your own country configuration repository
        • 4.2.2 Set up administrative address divisions
          • 4.2.2.1 Prepare source file for administrative structure
          • 4.2.2.2 Prepare source file for statistics
        • 4.2.3 Set up CR offices and Health facilities
          • 4.2.3.1 Prepare source file for CRVS Office facilities
          • 4.2.3.2 Prepare source file for health facilities
        • 4.2.4 Set up employees & roles for testing or production
          • 4.2.3.1 Prepare source file for employees
          • 4.2.3.2 Configure role titles
        • 4.2.5 Set up application settings
          • 4.2.5.1 Managing language content
            • 4.2.5.1.1 Informant and staff notifications
          • 4.2.5.2 Configuring Metabase Dashboards
        • 4.2.6 Configure certificate templates
        • 4.2.7 Configure declaration forms
          • 4.2.7.1 Configuring an event form
        • 4.2.8 Seeding & clearing your local databases
        • 4.2.9 Countryconfig API endpoints explained
      • 4.3 Set-up a server-hosted environment
        • 4.3.1 Verify servers & create a "provision" user
        • 4.3.2 TLS / SSL & DNS
          • 4.3.2.1 LetsEncrypt https challenge in development environments
          • 4.3.2.2 LetsEncrypt DNS challenge in production
          • 4.3.2.3 Static TLS certificates
        • 4.3.3 Configure inventory files
        • 4.3.4 Create a Github environment
          • 4.3.4.1 Environment secrets and variables explained
          • 4.3.4.2 VPN Recipes
        • 4.3.5 Provisioning servers
          • 4.3.5.1 SSH access
          • 4.3.5.2 Building, pushing & releasing your countryconfig code
          • 4.3.5.3 Ansible tasks when provisioning
        • 4.3.6 Deploy
          • 4.3.6.1 Running a deployment
          • 4.3.6.2 Seeding a server environment
          • 4.3.6.3 Login to an OpenCRVS server
          • 4.3.6.5 Resetting a server environment
        • 4.3.7 Backup & Restore
          • 4.3.7.1 Restoring a backup
          • 4.3.7.2 Off-boarding from OpenCRVS
    • 5. Functional configuration
      • 5.1 Configure application settings
      • 5.2 Configure registration periods and fees
      • 5.3 Managing system users
    • 6. Quality assurance testing
    • 7. Go-live
      • 7.1 Pre-Deployment Checklist
    • 8. Operational Support
    • 9. Monitoring
      • 9.1 Application logs
      • 9.2 Infrastructure health
      • 9.3 Routine monitoring checklist
      • 9.4 Setting up alerts
      • 9.5 Managing a Docker Swarm
  • General
    • Community
    • Contributing
    • Releases
      • v1.5.1: Release notes
      • v1.5.0: Release notes
      • v1.4.1: Release notes
      • v1.4.0 to v1.4.1 Migration notes
      • v1.4.0 Release notes
      • v1.3.* to v1.4.* Migration notes
      • v1.3.5: Release notes
      • v1.3.4: Release notes
      • v1.3.3: Release notes
      • v1.3.1: Release notes
      • v1.3.0: Release notes
      • v1.2.1: Release notes
      • Patch: Elasticsearch 7.10.2
      • v1.2.0: Release notes
      • v.1.1.2: Release notes
      • v.1.1.1: Release notes
      • v1.1.0: Release notes
    • Roadmap
Powered by GitBook
On this page
  • Documentation updates
  • Major Features
  • Supplied migration scripts to resolve breaking changes in core
  • Breaking changes - core
  • Breaking changes - country configuration
  • Major dependency upgrades
  • Can you help me migrate my previous OpenCRVS version?
  • The following content keys have been added that require translation
  1. General
  2. Releases

v1.2.0: Release notes

OpenCRVS v1.2.0 is a stable release of OpenCRVS.

PreviousPatch: Elasticsearch 7.10.2Nextv.1.1.2: Release notes

Last updated 5 months ago

The release includes some exciting new functionality and architectural improvements.

The core release is to be used in conjunction with a forked country configuration release

Documentation updates

The following pages in our documentation have been updated due to the requirements of the new features.

The entire section.

New test following the format: inital.surname

New test reports

Setup using the Humdata standard

New commands for importing the set up files

New commands for creating factory reset zips

New subdomains required for Minio in settings

Configuring any , not just an SMS gateway, e.g. WhatsApp

Clearer instructions for either automated or manual with Minio secrets added

Clearer instructions for backing up and restoring OpenCRVS data

Major Features

The following explains in more detail each major feature that has been included in this release.

Vital Statistics Exports

Composing the "VS" in OpenCRVS, Vital statistics constitute the collection of statistics on vital events pertaining to the population, including relevant characteristics of the events themselves and also of the persons concerned. They are critical for a wide range of government operations, e.g. population register, national identification system, and other administrative registers, and for commercial enterprises (e.g. life insurance and marketing of products).

User Audit

In OpenCRVS v1.0 we introduced Record Audit, displaying the history of every action that has taken place on a registration. In this release we expand OpenCRVS' audit capability to allow a system administrator to view every action performed by a single staff member in an easy to consume display.

Outbox

Processing the submission of applications off-line or in poor connectivity has been visually redesigned into a new browsable Outbox feature. This makes it super easy to tell which applications have not yet synced nationally.

Advanced Search

Integrations

Configurable Administrative Levels

New custom Select field added in Form Config

You can now configure a select field in form config by uploading a CSV file, or by selecting existing datasets like states, districts, facilities etc. You can also create a field which conditionally hides or shows based on the value of another field. Any field can be reordered and all field values can be printed on the certificate if you wish.

Supplied migration scripts to resolve breaking changes in core

  • An automatic migration allows the system administrator to create a custom select based on imported Health Facilities in Form Configuration

  • An automatic migration migrates any existing system clients created before v1.2.* to still function after the major changes to the Interoperability UI.

  • An automatic migration correctly marks which user started an application which was later rejected to address a bug in our Performance section.

  • An automatic migration prepares legacy data to appear in our new "Registration Rates" feature in our Performance section.

  • An automatic migration fixes a bug where supporting document attachments went missing in the UI if a record was corrected. This restores any affected documents.

  • An automatic migration configures OpenHIM to delete any Channel log older than 30 days to save diskspace.

Breaking changes - core

  • Ansible playbooks have been updated to support VS Export and the nw Object Store - Mino

  • Dockker Compose files have been updated to support the new version of Traefik

Breaking changes - country configuration

  • We removed unnecessary endpoints now that the FHIR Locations REST API is accessible in Core.

  • Now that administrative structure is managed using Humdata standards, the csv import scripts and file Structure has changed. Previous database backups will still work with OpenCRVS.

  • We have removed some legacy endpoints and changed the directory structure to make the repository easier to understand.

  • We have added scripts to validate all CSV files to make it much easer to configure OpenCRVS

  • Our Farajaland backup users have had their usernames changed like this "kennedy.mweene" is now "k.mweene" etc. This is because when any user is edited in the UI, their username changes to this pattern. Our test users were set up incorrectly before.

  • All database population and backup scripts now take named parameters.

  • Many content keys have been created for translation requirements for the new features. These are documented below.

Major dependency upgrades

Can you help me migrate my previous OpenCRVS version?

If you are migrating from an earlier version and if you are working on behalf of a government that is considering implementing OpenCRVS, we can help you to upgrade.

The following content keys have been added that require translation

"buttons.create": "Create",
"buttons.copy": "Copy",
"buttons.copied": "Copied",
"buttons.refresh": "Refresh",
"buttons.exactDateUnknown": "Exact date unknown",
"config.application.birthTabTitleExport": "Births",
"config.application.deathTabTitleExport": "Deaths",
"config.application.export": "Export",
"config.advanced.search": "Advanced Search",
"config.advanced.search.instruction": "Select the options to build an advanced search. A minimum of two search parameters is required.",
"config.application.vitalStatistics": "Month-{month}-Farajaland-{event, select, birth{birth} death{death} other{birth}}-event-statistics.csv {fileSize}",
"config.application.vsexport": "Vital statistics",
"config.application.emptystate": "The previous month's vital statistics data (based on vital event registrations occurring within that month) will become available for you to export as of the 1st of every month. Large CSV files cannot be opened in Excel and should therefore be opened in a statistical program such as {posit}.",
"config.form.tooltip.conditionalForRegistration": "Select if this field is conditional to complete registration",
"config.form.settings.dateRangePickerForFormField": "Date range picker input",
"config.form.tools.feildId": "Field ID",
"config.form.tools.fieldId": "Field ID",
"config.form.tooltip.fieldId": "Use these keys to search for specific field items",
"config.integrations": "Integrations",
"config.form.settings.checkboxGroup": "Checkbox group",
"constants.noResultsOutbox": "No records require processing",
"constants.record": "Record",
"constants.integrations": "Integrations",
"constants.assignRecord": "Assign record",
"constants.skipToMainContent": "Skip to main content",
"correction.reason.reasonForChange": "Reason for correction",
"custom.field.form.conditionalFieldHeader": "Conditional parameters",
"custom.field.form.conditionalField": "Conditional field",
"custom.field.form.conditionalFieldDesc": "Select the field and the conditions on which this field should show",
"custom.field.form.conditionalRegex": "Value RegEx",
"custom.field.form.duplicateField": "Label already exists in this form section. Please create a unique label",
"form.field.showLabel": "Show",
"form.field.hideLabel": "Hide",
"home.header.placeHolderNationalId": "Search for a national ID.",
"home.header.advancedSearch": "Advanced Search",
"home.header.nationalId": "National ID",
"integrations.uniqueKeyDescription": "These unique keys will be required by the client integrating...",
"integrations.createClient": "Create client",
"integrations.eventNotificationDescription": "An event notification client (eg. hospital) can send a partial notification or a full declaration of a birth or death in the HL7 FHIR standard to OpenCRVS for processing. For more information, visit:",
"integrations.webhookDescription": "A Webhook client can subscribe to be notified upon a birth or death registration following W3C WebSub standards. For more information, visit:",
"integrations.recordSearchDescription": "A Record search client can perform an advanced search on OpenCRVS data. For more information, visit:",
"integrations.nationalidAlertDescription": "A National ID client (eg. MOSIP) can react to birth or death webhooks to create or invalidate NID numbers. If using MOSIP, ensure the name of the integration is: \"MOSIP\". For more information, visit:",
"integrations.pageIntroduction": "For each new client that needs to integrate with OpenCRVS you can create unique client IDs. A number of integration use cases are currently supported, based on both API and webhook technologies.",
"integrations.supportingDescription": "Supporting description to help user make a decision and navigate the content",
"integrations.revealKeys": "Reveal Keys",
"integrations.disable": "Disable",
"integrations.enable": "Enable",
"integrations.delete": "Delete",
"integrations.copy": "Copy",
"integrations.name": "Name",
"integrations.nationalIDName": "Name (If using MOSIP, enter: \"MOSIP\")",
"integrations.client.type": "Type",
"integrations.label": "Label",
"integrations.webhookPermissionsDescription": "Select the data you wish to be contained within the webhook payload",
"integrations.webhook.PII": "Include PII data",
"integrations.birth": "Birth",
"integrations.death": "Death",
"integrations.type.eventNotification": "Event notification",
"integrations.type.nationalID": "National ID",
"integrations.childDetails": "Child's details",
"integrations.motherDetails": "Mother's details",
"integrations.documentDetails": "Document details",
"integrations.deathEventDetails": "Death event details",
"integrations.fatherDetails": "Father's details",
"integrations.informantDetails": "Informant's details",
"integrations.registrationDetailsnNoPII": "Registration Details (No PII)",
"integrations.childDetailsNoPII": "Childs Details (No PII)",
"integrations.motherDetailsNoPII": "Mothers Details (No PII)",
"integrations.fatherDetailsNoPII": "Fathers Details (No PII)",
"integrations.informantDetailsNoPII": "Informant Details (No PII)",
"integrations.type.recordSearch": "Record search",
"integrations.type.webhook": "Webhook",
"integrations.otherAlertDescription": "...Please visit",
"integrations.clientId": "Client ID",
"integrations.clientSecret": "Client Secret",
"integrations.shaSecret": "SHA Secret",
"integrations.active": "Active",
"integrations.inactive": "Inactive",
"integrations.loading": "Loading",
"integrations.error": "Something went wrong",
"integrations.activate.client": "Activate Client?",
"integrations.activate.status": "Client activated",
"integrations.deactivate.status": "Client deactivated",
"integrations.deactivate.client": "Deactivate Client?",
"integrations.activatetext": "This will activate the client",
"integrations.deactivatetext": "This will deactivate the client",
"navigation.integrations": "Integrations",
"integrations.pageTitle": "Integrations",
"navigation.integration": "Integrations",
"integrations.type.healthSystem": "Health integration",
"integrations.newIntegrationDescription": "Add a unique name and select the type of client you would like to create",
"integrations.onlyOneNationalId": "Only one National ID integration is allowed.",
"integrations.activate": "Activate",
"integrations.deactivate": "Deactivate",
"integrations.updatePermissionsMsg": "Permissions update successfully",
"integrations.deceasedDetails": "Deceased's Details",
"integrations.deleteSystemText": "This will delete the system",
"integrations.deleteSystemMsg": "System has been deleted successfully",
"form.field.label.locationLevel3": "Location Level 3",
"form.field.label.locationLevel4": "Location Level 4",
"form.field.label.locationLevel5": "Location Level 5",
"misc.notif.onlineUserStatus": "You are back online",
"navigation.outbox": "Outbox",
"navigation.reports": "Vital statistics",
"recordAudit.regAction.assigned": "Assigned",
"recordAudit.regAction.downloaded": "Retrieved",
"recordAudit.regAction.reinstated": "Reinstated to {regStatus, select, validated{ready for review} in_progress{in progress} declared{ready for review} rejected{requires updates} other{}}",
"recordAudit.regAction.requestedCorrection": "Corrected record",
"recordAudit.regAction.unassigned": "Unassigned",
"recordAudit.regAction.viewed": "Viewed",
"recordAudit.regStatus.archived": "Archived",
"recordAudit.regStatus.declared": "Declaration started",
"recordAudit.regStatus.declared.sentNotification": "Sent notification for review",
"recordAudit.regStatus.waitingValidation": "Waiting for validation",
"recordAudit.regStatus.registered": "Registered",
"recordAudit.regStatus.certified": "Certified",
"recordAudit.regStatus.rejected": "Rejected",
"recordAudit.regStatus.updatedDeclaration": "Updated",
"regHome.outbox.statusCertifying": "Certifying...",
"regHome.outbox.statusRejecting": "Sending for updates...",
"regHome.outbox.statusRequestingCorrection": "Correcting...",
"regHome.outbox.statusSendingForApproval": "Sending for approval...",
"regHome.outbox.statusSubmitting": "Sending...",
"regHome.outbox.statusWaitingToCertify": "Waiting to certify",
"regHome.outbox.statusWaitingToReject": "Waiting to send for updates",
"regHome.outbox.statusWaitingToRequestCorrection": "Waiting to correct",
"regHome.outbox.statusWaitingToSubmit": "Waiting to send",
"regHome.outbox.statusWaitingToValidate": "Waiting to send for approval",
"search.bookmarkAdvancedSearchModalTitle": "Save search query?",
"search.bookmarkAdvancedSearchModalBody": "A shortcut will be added to the side bar so you can rerun this search query",
"search.removeBookmarkAdvancedSearchModalTitle": "Remove search query?",
"search.removeBbookmarkAdvancedSearchModalBody": "This advanced search bookmark will be removed from the side bar shortcut",
"search.bookmark.success.notification": "Your advanced search result has been bookmarked successfully",
"search.bookmark.remove.success.notification": "Your advanced search bookmark has been removed successfully",
"search.bookmark.error.notification": "Sorry, something went wrong. Please try again",
"search.bookmark.loading.notification": "Bookmarking your advanced search results...",
"search.bookmark.remove.loading.notification": "Removing your advanced search bookmark...",
"advancedSearch.form.registrationDetails": "Registration details",
"advancedSearch.form.childDetails": "Child details",
"advancedSearch.form.eventDetails": "Event details",
"advancedSearch.form.motherDetails": "Mother details",
"advancedSearch.form.fatherDetails": "Father details",
"advancedSearch.form.placeOfRegistration": "Place of registration",
"advancedSearch.form.placeOfRegistrationHelperText": "Search for a province, district or registration office",
"advancedSearch.form.dateOfRegistration": "Date of registration",
"advancedSearch.form.statusOfRecordLabel": "Status of record",
"advancedSearch.form.deceasedDetails": "Deceased details",
"advancedSearch.form.informantDetails": "Informant details",
"advancedSearch.form.recordStatusAny": "Any status",
"advancedSearch.form.recordStatusInprogress": "In progress",
"advancedSearch.form.recordStatusInReview": "In review",
"advancedSearch.form.recordStatusRequireUpdate": "Requires updates",
"advancedSearch.form.recordStatusRegistered": "Registered",
"advancedSearch.form.recordStatusCertified": "Certified",
"advancedSearch.form.recordStatusAchived": "Archived",
"advancedSearch.accordion.hide": "Hide",
"advancedSearch.accordion.show": "Show",
"advancedSearchResult.pill.event": "Event",
"advancedSearchResult.pill.registationStatus": "Registration Status",
"advancedSearchResult.pill.eventDate": "Event Date",
"advancedSearchResult.pill.regNumber": "Registration Number",
"advancedSearchResult.pill.trackingId": "Tracking Id",
"advancedSearchResult.pill.regDate": "Registration Date",
"advancedSearchResult.pill.eventLocation": "Event Location",
"advancedSearchResult.pill.regLocation": "Location",
"advancedSearchResult.pill.childFirstName": "Child Firstname",
"advancedSearchResult.pill.childLastName": "Child Lastname",
"advancedSearchResult.pill.motherFirstName": "Mother Firstname",
"advancedSearchResult.pill.motherLastName": "Mother Lastname",
"advancedSearchResult.pill.fatherFirstName": "Father Firstname",
"advancedSearchResult.pill.fatherLastName": "Father Lastname",
"advancedSearchResult.pill.deceasedFirstName": "Deceased Firstname",
"advancedSearchResult.pill.deceasedLastName": "Deceased Lastname",
"advancedSearchResult.pill.informantFirstName": "Informant Firstname",
"advancedSearchResult.pill.informantLastName": "Informant Lastname",
"advancedSearchResult.pill.gender": "Gender",
"advancedSearchResult.pill.childDoB": "ChildDOB",
"advancedSearchResult.pill.fatherDoB": "FatherDOB",
"advancedSearchResult.pill.motherDoB": "MotherDOB",
"advancedSearchResult.pill.deceasedDoB": "DeceasedDOB",
"advancedSearchResult.pill.informantDoB": "InformantDOB",
"advancedSearchResult.table.searchResult": "Search Result",
"advancedSearchResult.table.noResult": "No result",
"sysAdHome.sendUsernameReminderSMS": "Send username reminder",
"sysAdHome.sendUsernameReminderSMSSuccess": "Username reminder sent to {name}",
"sysAdHome.sendUsernameReminderSMSError": "Username reminder could not be sent",
"sysAdHome.sendUsernameReminderSMSModalTitle": "Send username reminder?",
"sysAdHome.sendUsernameReminderSMSModalMessage": "The user will receive a username reminder via an SMS sent to {phoneNumber}",
"sysAdHome.resentPasswordSMSSuccess": "Temporary password sent to {username}",
"sysAdHome.resentPasswordSMSError": "Temporary password could not be sent",
"sysAdHome.user.resetpassword.title": "Reset Password",
"sysAdHome.user.resetPasswordModal.title": "Reset password?",
"sysAdHome.user.resetPasswordModal.message": "The user will receive a temporary password via SMS sent to {phoneNumber}. They will then be prompted to create a new password on successful login",
"user.profile.audit.column.eventType": "Event",
"user.profile.audit.column.trackingId": "Record",
"user.profile.audit.column.deviceIPAddress": "Device/IP Address",
"user.profile.audit.description.certified": "Certified",
"user.profile.audit.description.declared": "Declaration started",
"user.profile.audit.description.inProgress": "Sent incomplete",
"user.profile.audit.description.waiting_validation": "Sent declaration for external system validation",
"user.profile.audit.description.registered": "Registered",
"user.profile.audit.description.rejected": "Rejected",
"user.profile.auditList.corrected": "Corrected record",
"user.profile.auditList.assigned": "Assigned",
"user.profile.auditList.unAssigned": "Unassigned",
"user.profile.auditList.archived": "Archived",
"user.profile.auditList.loggedIn": "Logged in",
"user.profile.auditList.loggedOut": "Logged out",
"user.profile.auditList.phoneNumberChanged": "Phone number changed",
"user.profile.auditList.passwordChanged": "Password changed",
"user.profile.auditList.userReactivated": "Reactivated user",
"user.profile.auditList.userDeactivated": "Deactivated user",
"user.profile.auditList.userCreated": "Created user",
"user.profile.auditList.userEdited": "Edited user",
"user.profile.auditList.passwordReset": "Reset password",
"user.profile.auditList.usernameRequested": "Username reminder requested",
"user.profile.auditList.retrieved": "Retrieved",
"user.profile.auditList.viewed": "Viewed",
"user.profile.auditList.sentForApproval": "Sent for approval",
"user.profile.auditList.reInstatedToInProgress": "Reinstated to in progress",
"user.profile.auditList.reInstatedToInReview": "Reinstated to ready for review",
"user.profile.auditList.reInstatedToUpdate": "Reinstated to requires updates",
"user.profile.auditList.usernameReminderByAdmin": "Sent username Reminder",
"user.profile.auditList.passwordResetByAdmin": "Sent password",
"user.profile.sectionTitle.audit": "History",
"user.profile.nid": "National ID",
"validations.validPassportNumber": "The Passport Number can only be alpha numeric and must be {validLength} characters long",
"performance.regRates.select.item.byRegistrar": "By Registrars",
"performance.registrationsListTable.monthColumn": "Month",
"performance.registrationsListTable.locationColumn": "Location",
"performance.registrationsListTable.registrarColumn": "Registrar",
"performance.registrationsListTable.totalRegistrationsColumn": "Total Registrations",
"custom.field.select.heading": "Custom Select",
"config.form.tools.input.customSelect": "Custom Select",
"custom.select.copy.heading": "Copy",
"custom.select.copy.description": "Complete the copy requirements for all available languages",
"custom.select.dataSource.heading": "Data source",  
"custom.select.dataSource.description": "Use an existing data source or upload a csv file containing the select options for each language.",  
"custom.select.text.validatingCSVFile": "Validating csv file",  
"custom.select.text.csvValidatingDescription": "We are uploading your csv file and adding the data to the select if it is formatted correctly.",  
"custom.select.text.statusValidating": "Validating .csv",  
"custom.select.text.statusValidated": "The csv is valid",  
"custom.select.text.statusFailed": "Failed to validate. Please try again",  
"custom.select.text.statusAppliedToCustomSelect": "Applied to custom select",  
"custom.select.text.statusNoDataFound": "No option was found",  
"custom.select.text.statusTranslationMissing": "Translation is missing"

Our VS Export feature outputs a sharable, yearly report of registration data without Personally Identifiable Information (PII) for consumption by statisticians in programs such as .

Utilising the full power of our engine, registrars can now perform advanced searches; for example, registrars can search all registrations made in a configurable range of districts or states, between date ranges for a given name or gender and much more! View any record, at any time, without needing to perform an action then bookmark your searches. This feature is fully audited and additionally exposed in an API integration!

It is now possible for a system administrator to configure OpenCRVS API integrations for external systems, and refresh credentials, within the OpenCRVS user interface. It is easy to set up API access to Advanced Search, FHIR standard Health notifications, Webhooks or National ID systems, including . We have worked hard with the MOSIP team to ensure that birth and death events seamlessly orchestrate with MOSIP’s National ID generation and expiration functionality.

No matter how many administrative divisions are relevant for your country, you can now import as many as you like using standards and the OpenCRVS address structure will automatically compensate. Create OpenCRVS offices in a deeply nested rural parish or county, or alternatively in an urban city ward. A FHIR standard API is open for public consumption by other systems to make interoperability for location relevant data easy.

Introducing in OpenCRVS: An AWS S3 compatible OpenSource and locally hosted

To make best use of server resources and keep OpenCRVS hosting costs down, application attachments are now saved in , a dedicated object storage system with its own admin interface. Minio provisions automatically for you on your locally hosted OpenCRVS infrastructure. Application attachments now have their own unique URL so they can be cached, and can be externally managed away from the rest of the OpenCRVS document data. Minio is compatible with giving you the flexibility to adapt and use cloud object storage if you wish.

An automatic migration moves all supporting document attachments from being stored as base64 in Mongo DB to our new Object Storage system, available to login at https://minio-console.<your-domain>

The country confguration repository has been entirely refactored. Please contact us at if you need any help rebasing changes in this repository.

We have entirely changed the configuration import process to add functionality relevant to standardisation

Create React App has been replaced by ! This drastically improves startup and build time and improves the configurability of the React application.

has been upgraded to v2.8

Please contact us at

v1.2.0
v1.2.0
Interoperability
usernames
Performance
administrative divisions and statistics
DNS
comms gateway
deploying
RStudio (Posit)
ElasticSearch
MOSIP
Humdata
Minio
Object Store
Minio
Amazon S3
Minio
opencrvs-farajaland
team@opencrvs.org
Humdata
Vite
Traefik
team@opencrvs.org