# 2.6.2. Migrace z Imwhooseru

PEVA Connector vznikl vyčleněním importu PEvA z nástroje Imwhooser. Tabulky PEvA (`pv_fund`, `property` a fond-only část `elza_queue`) jsou v obou aplikacích shodné, takže PEVA Connector umí převzít existující databázi Imwhooseru.

## Idempotentní schéma

Migrace databáze (Liquibase) jsou navržené tak, aby fungovaly ve dvou scénářích:

> - Nová (prázdná) databáze - schéma se vytvoří. Tabulka `elza_queue` se vytvoří v „fund-only“ podobě (bez sloupce `entity_id`).

> - Existující databáze Imwhooseru v „PEVA módu“ - tabulky `pv_fund`, `property` i `elza_queue` již existují. Liquibase je díky podmínkám (`preConditions onFail="MARK_RAN"`) detekuje, přeskočí jejich vytváření a převezme je i s daty.

Stejný changelog tedy funguje pro čistou instalaci i pro převzetí.

## Doporučený postup migrace

1. Vypněte stahování PEvA v Imwhooseru (`peva.processing.enabled: false`) a nechte doběhnout odeslání případných čekajících fondů z `elza_queue`, aby fondy do Elzy posílala jen jedna aplikace.

2. Vytvořte kopii databáze Imwhooseru a nasměrujte na ni PEVA Connector (vlastní databáze - obě aplikace nesdílejí jednu živou DB, aby se znovu nepropojily přes `elza_queue`).

3. Spusťte PEVA Connector. Idempotentní changelog převezme `pv_fund`, `property` i čekající fond záznamy.

4. Ověřte stahování z PEvA a odesílání do Elzy (viz Monitorování).

## Úklid převzaté databáze

Pokud PEVA Connector převezme kopii celé databáze Imwhooseru, zůstanou v ní i entity tabulky (`imw_*`) a sloupec `elza_queue.entity_id`, které PEVA Connector nevyužívá. Volitelný úklidový changelog je proto vypnutý a spustí se jen v Liquibase kontextu `cleanup`:

    spring:
      liquibase:
        contexts: prod,cleanup

Úklid odstraní sloupec `elza_queue.entity_id` (s cizím klíčem a indexem) a - po odkomentování v changelogu - i tabulky `imw_*`.

Varování

Úklid nikdy nespouštějte nad databází, kterou ještě používá Imwhooser.

## Úklid na straně Imwhooseru

Po odpojení je možné v původním Imwhooseru odstranit již nevyužívané PEvA tabulky a sloupce (`pv_fund`, `property`, `elza_queue.fund_id`). Tato úprava se provádí v Imwhooseru, nikoli v PEVA Connectoru.