---
description: How to safely refine the data model, update migrations, and keep data generation and tests in sync
---

# Data Model Refinement & Synchronisation Workflow

This workflow ensures every data model change is robust, consistent, and reflected across migrations, documentation, data generation, and tests.

---

## 1. Reference the Authoritative Sources

Before making or reviewing any data model change, consult these key documents:

- `/docs/solution-architecture.md` — **PRIMARY**: Comprehensive solution architecture and design decisions
- `/docs/dataModel/README.md` — Data model documentation and ERD
- `/local-dev-setup/liquibase/changelogs/001_unified_baseline.sql` — Baseline schema (Liquibase)
- `/docs/adr/` — Current ADRs (skip `/docs/adr/archive/` - consolidated in solution-architecture.md)

## 2. Plan the Change

- Identify the business or technical rationale for the change.
- Determine the impact on existing tables, columns, relationships, and constraints.
- Draft or update the ERD as needed.

## 3. Update the Schema

- Create or edit the appropriate Liquibase changelog(s) (never edit the baseline directly after project start).
- Follow naming conventions and migration strategy as per ADRs.
- Document every change with clear comments in the changelog.

## 4. Update Data Model Documentation

- Reflect all changes in `/docs/dataModel/README.md` (ERD, field lists, rationale).
- If the change is significant, consider updating or creating an ADR.

## 5. Synchronise Data Generation Scripts

- Review and update `local-dev-setup/data-utils/umig_generate_fake_data.js` (FAKER-based generator).
- Adjust or add generators in `local-dev-setup/data-utils/generators/` as needed.
- Ensure all generated data matches the new/updated schema.

## 6. Update and Extend Tests

- Update all related tests in `local-dev-setup/data-utils/__tests__/` to cover new/changed fields and relationships.
- Add new fixture data if needed.
- Ensure tests remain non-destructive and deterministic.

## 7. Validate

- Run all migrations in a fresh environment (dev/test).
- Run the data generation script and all tests; confirm no failures or regressions.
- Review the ERD and documentation for completeness and accuracy.

## 8. Document and Communicate

- Update `CHANGELOG.md` with a summary of the data model change.
- If required, update the main `README.md` and any relevant ADRs.
- Consider adding a Developer Journal entry to narrate the rationale and process.

---

> _Use this workflow every time you refine the data model to maintain project discipline, testability, and documentation integrity._
