# 4.2.6 Configure events

#### ⚠️ Important: Changes to Event Configuration in OpenCRVS 1.9

OpenCRVS **v1.9** introduces a **completely new event configuration framework**.\
This allows you to define **any event type** you need, with full flexibility across:

* Event forms
* Certificate templates
* Correction flows
* Print collection workflows
* De-duplication algorithms
* Workqueues
* Notifications
* Analytics
* API behaviour (From GraphQL > tRPC)
* Database technology (From MongoDB > PostgreSQL)

This new system is fundamentally different from the approach used in **OpenCRVS v1.8**.

***

#### 🔄 How 1.9 Differs from 1.8

**OpenCRVS 1.8**

* Events are stored in **MongoDB**
* The storage model uses **FHIR** objects
* Event configuration is limited and tightly coupled to the FHIR structure

**OpenCRVS 1.9**

* Events are stored in **PostgreSQL**
* Uses a **custom event model**, designed for flexibility and performance
* FHIR is pushed into the **interoperability layer**, instead of being the primary storage model
* Event configuration is modular and highly customisable

This new architecture provides much more freedom in defining workflows and event types.

#### 🚫 For New Users: Do NOT Use the Old 1.8 Method

OpenCRVS 1.9 is a transitional release designed to allow safe migration while enabling all new deployments to start cleanly on the modern architecture.

> ❗ **New implementers must not configure events using the old (1.8 and earlier) approach.**

Only the **new 1.9 event configuration framework** should be adopted.

Using the old method will leave you with obsolete configurations that will be **completely deprecated in OpenCRVS 2.0**, scheduled for release in **2026**.

🚀 For **all new deployments**, you should configure events only using the **v2** approach in `src/form/v2/`.

***

#### 🧭 Transitional Release: Both Systems Exist Side-by-Side

The **countryconfig** service still contains:

* The **old 1.8-style event configuration code**, AND
* The **new 1.9 event configuration system**

This is intentional. It allows countries already running OpenCRVS 1.8 to **migrate their events** to the new 1.9 model during the 1.9 lifecycle.

> ℹ️ **If you are currently running OpenCRVS 1.8**, [this](https://github.com/opencrvs/notebooks) repository includes everything needed to support your transition to 1.9.\
> **Please contact us for guidance on the migration process.**

***

In OpenCRVS **v1.9**, the legacy event configuration remains available alongside the new system:

* The **old (v1.8-style) event configuration** still lives under the main countryconfig entry point in\
  `src/index.ts` (see the legacy configuration exports around the event-related sections).
* The **new event configuration framework** for OpenCRVS 1.9 and later is implemented in the\
  `src/form/v2/` directory, which contains the v2 form and event configuration code.

> 🧭 For **existing 1.8 deployments**, you may still see and use the old configuration code in `src/index.ts` while you migrate.\
> 🚀 For **all new deployments**, you should configure events only using the **v2** approach in `src/form/v2/`.

An environment variable `V2_EVENTS` can be used to toggle between versions. See: <https://github.com/opencrvs/opencrvs-core/pull/10763>

***

#### 📘 About This Documentation

The guidance in this section refers **exclusively** to:

* The **new 1.9 event configuration code** in this directory
* The **API endpoints** associated with the new configuration model


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.opencrvs.org/setup/3.-installation/3.2-set-up-your-own-country-configuration/3.2.7-configure-declaration-forms.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
