.. _config_migration:

==================================
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 :ref:`oper_monit`).

Ú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``:

.. code-block:: yaml

  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_*``.

.. warning::

   Ú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.
