OpenCRVS
v1.7
v1.7
  • 👋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
    • User roles & scopes
      • 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 roles
      • Declaration forms
      • Certified Copies 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 certified copy
    • 4. Installation
      • 4.1 Quick start: 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 Configure: 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 employee users, and scopes, for testing or production
          • 4.2.3.1 Prepare source file for employees
          • 4.2.3.2 Configure roles and scopes
        • 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 Deploy: 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. Quality assurance testing
    • 6. Go-live
      • 6.1 Pre-Deployment Checklist
    • 7. Operational Support
    • 8. Monitoring
      • 8.1 Application logs
      • 8.2 Infrastructure health
      • 8.3 Routine monitoring checklist
      • 8.4 Setting up alerts
      • 8.5 Managing a Docker Swarm
  • General
    • Community
    • Contributing
    • Migration notes
    • Releases and upgrades
    • Release notes
    • Product roadmap
Powered by GitBook
On this page
  • 1. Prepare global functional settings
  • 2. Prepare javascript initialisation settings
  1. Setup
  2. 4. Installation
  3. 4.2 Configure: Set-up your own, local, country configuration

4.2.5 Set up application settings

Previous4.2.3.2 Configure roles and scopesNext4.2.5.1 Managing language content

Last updated 1 month ago

The next step is to configure some functional application settings. Some of these settings can be changed later, others must be configured now during installation and cannot be changed in production.

You will be referring to the 5. config: Applications Settings Excel sheet that would have been prepared in .

1. Prepare global functional settings

Prepare your src/api/applcation/application-config.ts source file. This is a Typescript file that is loaded in the application via an API explained in section .

Using our file as an example, update the settings according to your needs.

Parameter
Description

You can call your instance of OpenCRVS anything you like, such as "Farajaland CR"

These are your registration time periods and fees for death.

These are your registration time periods and fees for marriage.

Marriage registration only exists in beta in OpenCRVS v1.7.0. All events are covered in v1.9.0

Fees due for collection and correction of certificates are calculated and displayed according to this value.

This is a regular expression to evaluate if a supplied phone number minus country code is valid.

If you configure your form to include a field to capture a user's National ID number, then this regular expression can evaluate if the string is valid.

You can set the background of the login page to be a color of choice. You can always use the UI to change this color later, or use a tiled or full screen image.

Other available properties are:

This cannot be amended later in the UI and must be configured here. In application performance analytics, you can set the administrative level that you wish to aggregate field agent performance. We recommend that you leave this as DISTRICT as it refers to the FHIR "district" location level as opposed to your internal country name for location level 2. If your country is very small and has only 1 location level, set this to STATE.

This cannot be amended later in the UI and must be configured here. In application performance analytics, you can set the administrative level that you wish to aggregate field agent declaration completeness performance. We recommend that you leave this as DISTRICT as it refers to the FHIR "district" location level as opposed to your internal country name for location level 2. If your country is very small and has only 1 location level, set this to STATE.

This cannot be amended later in the UI and must be configured here. If you are using SMS or WhatsApp to send notifications to staff, set this to "sms". If you are using email, set this to "email"

This cannot be amended later in the UI and must be configured here. If you are using SMS or WhatsApp to send notifications to informants, set this to "sms". If you are using email, set this to "email"

This cannot be amended later in the UI and must be configured here. You will notice this separate property used by an API handler called by our analytics services. Whereas countries generally have crude birth rate ratios per area in their stastics, they tend to have a country-wide crude death rate. You can set this here in order to correctly calculate death registration completeness rates.

The National System Administrator can create new employees. In the create user forms, the requirement to add a transparent PNG signature for certain employee roles, so that the signature can appear on the certificate can be configured here.

The following features can be enabled on and off in this block. We refer to this block as "Feature flags

This cannot be amended later in the UI and must be configured here. In some countries, individuals do not know their date of birth. If you wish to enable that individuals are allowed to submit their ages in your declaration forms rather than a date of birth, set this to true. Please note that those individuals will have their days and months of birth automatically set to the 1st January in the system in that case.

Whether to enable the registration of death events in your OpenCRVS installation.

If enabled, you are able to print the review page of any declaration form including all the data entered by the applicant in an easy to read fashion. This can be a useful tool.

These props enable the informant signature component on the review page. Signatures are now configurable also in the form config so it is likely that this prop will be deprecated in future versions.

This prop controls the visibility of a workqueue that you can use for asynchronous integration with an external system at the point of registration via APIs. As an example, we use this for MOSIP asynchronous generation of a National ID.

2. Prepare javascript initialisation settings

The OpenCRVS Core Login application loads the following config js files before connecting to the OpenCRVS backend to serve all the content. The Login app has not communicated with the backend yet and needs to know how to access it

window.config = {
  AUTH_API_URL: 'http://localhost:7070/auth/',
  CONFIG_API_URL: 'http://localhost:2021',
  // Country code in uppercase ALPHA-3 format
  COUNTRY: 'FAR',
  LANGUAGES: 'en,fr',
  CLIENT_APP_URL: 'http://localhost:3000/',
  COUNTRY_CONFIG_URL: 'http://localhost:3040',
  SENTRY: ''
}

As you can see, the React Login application uses the URL values to understand how to connect to backend services such as the login authentication API and the country configuration API. Do not edit the URLs.

You must set some values:

For example, if you wanted to support Spanish and English, with Spanish being the default this string should be:

es,en

window.config = {
  AUTH_API_URL: 'https://gateway.{{hostname}}/auth/',
  CONFIG_API_URL: 'https://config.{{hostname}}',
  // Country code in uppercase ALPHA-3 format
  COUNTRY: 'FAR',
  LANGUAGES: 'en,fr',
  CLIENT_APP_URL: 'https://register.{{hostname}}/',
  COUNTRY_CONFIG_URL: 'https://countryconfig.{{hostname}}',
  SENTRY: '{{sentry}}'
}

As you can see, the server config file contains the same settings.

You must set the COUNTRY & LANGUAGES values only.

window.config = {
  API_GATEWAY_URL: 'http://localhost:7070/',
  CONFIG_API_URL: 'http://localhost:2021',
  LOGIN_URL: 'http://localhost:3020',
  AUTH_URL: 'http://localhost:4040',
  MINIO_BUCKET: 'ocrvs',
  COUNTRY_CONFIG_URL: 'http://localhost:3040',
  // Country code in uppercase ALPHA-3 format
  COUNTRY: 'FAR',
  LANGUAGES: 'en,fr',
  SENTRY: '',
  // Use the values in comments when Metabase is running locally
  // http://localhost:4444/public/dashboard/acae0527-74be-4804-a3ee-f8b3c9c8784c#bordered=false&titled=false&refresh=300
  LEADERBOARDS_DASHBOARD_URL: '',
  // http://localhost:4444/public/dashboard/fec78656-e4f9-4b51-b540-0fed81dbd821#bordered=false&titled=false&refresh=300
  REGISTRATIONS_DASHBOARD_URL: '',
  // http://localhost:4444/public/dashboard/a17e9bc0-15a2-4bd1-92fa-ab0f346227ca#bordered=false&titled=false&refresh=300
  STATISTICS_DASHBOARD_URL: ''
}
window.config = {
  API_GATEWAY_URL: 'https://gateway.{{hostname}}/',
  CONFIG_API_URL: 'https://config.{{hostname}}',
  LOGIN_URL: 'https://login.{{hostname}}',
  AUTH_URL: 'https://auth.{{hostname}}',
  MINIO_BUCKET: 'ocrvs',
  COUNTRY_CONFIG_URL: 'https://countryconfig.{{hostname}}',
  // Country code in uppercase ALPHA-3 format
  COUNTRY: 'FAR',
  LANGUAGES: 'en,fr',
  SENTRY: '{{sentry}}',
  LEADERBOARDS_DASHBOARD_URL:
    'https://metabase.{{hostname}}/public/dashboard/acae0527-74be-4804-a3ee-f8b3c9c8784c#bordered=false&titled=false&refresh=300',
  REGISTRATIONS_DASHBOARD_URL:
    'https://metabase.{{hostname}}/public/dashboard/fec78656-e4f9-4b51-b540-0fed81dbd821#bordered=false&titled=false&refresh=300',
  STATISTICS_DASHBOARD_URL:
    'https://metabase.{{hostname}}/public/dashboard/a17e9bc0-15a2-4bd1-92fa-ab0f346227ca#bordered=false&titled=false&refresh=300'
}

Following the same process as you did for the production Login app config file, you must set the COUNTRY & LANGUAGES values.

These are your registration time periods in days and fees for birth, explained in more detail . PRINT_IN_ADVANCE allows you to print certificates in advance for collection. You can disable this by setting it to false, if you operationally want to enforce an ID check from a recipient before printing a copy.

The FEE object sets default fees for certification as a fallback if you havent configured individual fees for specific certificate templates. Explained in section

You can always use our Farajaland logo by default and then upload this in the UI later, but if you look at the top of the file, you can see that this refers to a property that imports a copy of your country logo as a base64 image. Do not change this property but instead, locate your official logo/crest, convert it to base64 and you can replace our logo [here]().

This cannot be amended later in the UI and must be configured here. This field should be left as false. It is a custom property allowing a country to pause the registration process at the point of registration for 3rd party asynchronous validation. If you wish to use this property please get in touch with us at. It is a legacy property that will likely be deprecated in OpenCRVS v1.4 due to relative underuse.

Whether to enable the registration of marriage events in your OpenCRVS installation. In OpenCRVS v1.3 we have released marriage registration in BETA. Set this property to true in order to demonstrate marriage registration as a proof of concept. Get in touch with us at if you wish to use marriage registration in production. We require to complete marriage performance analytics and searching in order to release this feature in a future version. It is not yet production ready.

Login app - localhost development:

COUNTRY: Set the to be the same as the value you used when importing the set up files in step 3.2.5. The Login app needs to convert users phone numbers into MSISDN numbers using an Alpha 3 country code in case the user forgets their login details and requires an SMS reset.

LANGUAGES: This property allows you to customise the global language options. This value is a comma separated string of language codes for every translation you wish to set up in step .

Login app - server:

You may notice that localhost is replaced by your domain name dynamically in handlebars. Do not edit the URLs. We have taken care of this substitution for you in step

Client app - localhost development:

Following the same process as you did for the local development Login app config file, you must set the COUNTRY & LANGUAGES values, and can optionally uncomment LEADERBOARDS_DASHBOARD_URL, REGISTRATIONS_DASHBOARD_URL and STATISTICS_DASHBOARD_URL if you wish to run metabase dashboards locally. Refer to for more instructions.

Client app - server:

APPLICATION_NAME
BIRTH: {
    REGISTRATION_TARGET: 30,
    LATE_REGISTRATION_TARGET: 365,
    FEE: {
      ON_TIME: 0,
      LATE: 5.5,
      DELAYED: 15
    },
    PRINT_IN_ADVANCE: true
  }
DEATH: {
    REGISTRATION_TARGET: 45,
    FEE: {
      ON_TIME: 0,
      DELAYED: 0
    },
    PRINT_IN_ADVANCE: true
  }
MARRIAGE: {
    REGISTRATION_TARGET: 45,
    FEE: {
      ON_TIME: 10,
      DELAYED: 45
    },
    PRINT_IN_ADVANCE: true
  }
CURRENCY: {
    languagesAndCountry: ['en-US'],
    isoCode: 'USD'
  }
PHONE_NUMBER_PATTERN
NID_NUMBER_PATTERN
COUNTRY_LOGO
LOGIN_BACKGROUND: {
    backgroundColor: '36304E'
  }
backgroundImage `data:image/jpg;base64,${fs
      .readFileSync(join(__dirname, 'login-bg.jpg'))
      .toString('base64')}`,
imageFit: 'FILL'
FIELD_AGENT_AUDIT_LOCATIONS
DECLARATION_AUDIT_LOCATIONS
USER_NOTIFICATION_DELIVERY_METHOD
INFORMANT_NOTIFICATION_DELIVERY_METHOD
export const COUNTRY_WIDE_CRUDE_DEATH_RATE = 10
SIGNATURE_REQUIRED_FOR_ROLES
FEATURES: { ... }
EXTERNAL_VALIDATION_WORKQUEUE
DATE_OF_BIRTH_UNKNOWN
DEATH_REGISTRATION
MARRIAGE_REGISTRATION
PRINT_DECLARATION
INFORMANT_SIGNATURE
INFORMANT_SIGNATURE_REQUIRED
EXTERNAL_VALIDATION_WORKQUEUE
section 2: Gather requirements
3.2.9 Countryconfig APIs explained
application-config.ts
login-config.js
Alpha 3 country code
ISO 639-1
3.2.5.1 Managing language content
login-config.prod.js
3.3.5 Deploy
client-config.js
this step
client-config.prod.js
here
Configure certificate templates
https://github.com/opencrvs/opencrvs-countryconfig/blob/develop/src/api/application/country-logo.ts
team@opencrvs.org
team@opencrvs.org