.. _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í. .. note:: Pokud byl původní Imwhooser nasazen ze **staršího (snapshotového) buildu**, může jeho ``elza_queue`` postrádat sloupce ``create_time``, ``send_time`` nebo ``scope`` (byly do Imwhooseru přidány později). Protože tabulka existuje, přeskočí se její ``createTable`` (``MARK_RAN``) a tyto sloupce by jinak chyběly - projeví se to při startu chybou ``column ... create_time does not exist``. Idempotentní changelog je proto **doplní samostatnými** ``addColumn`` **kroky** (stejně jako u ``pv_fund.department_name`` / ``department_number``), takže převzetí snapshotové databáze funguje bez ručního zásahu. 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 ======================= PEVA Connector je samostatná, odlehčená aplikace a entity-side schéma Imwhooseru (tabulky ``imw_*`` / ``*_person`` a sloupec ``elza_queue.entity_id``) nevlastní ani nevyužívá. Při převzetí databáze je proto **automaticky a nevratně odstraní** - úklidový changelog se spustí vždy při startu, bez nutnosti zvláštního nastavení. Jde o trvalé "odpojení" od Imwhooseru. Konkrétně se odstraní: - sloupec ``elza_queue.entity_id`` (včetně cizího klíče a indexu), - tabulky ``imw_*`` / ``*_person`` (entity-side schéma Imwhooseru). Každý krok je idempotentní (``preConditions onFail="MARK_RAN"``): na čisté nebo již uklizené databázi se přeskočí, takže opakované starty ani nová instalace ničemu nevadí. .. warning:: Úklid je **nevratný** a běží automaticky při prvním startu nad převzatou databází. Migrujte proto vždy nad **kopií** databáze (viz doporučený postup výše) a nikdy nesměřujte PEVA Connector na živou databázi, 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.