Upgrade TAS 5.19 na 5.21 – průvodce pro konzultanty
Co konzultant dělá při upgradu zákaznické instance z 5.19 na 5.21: kontrola kódu šablon v servisní konzoli a přehled změn, které se zákazníka mohou týkat.
Shrnutí
Po upgradu na 5.21 musí konzultant u každého zákazníka udělat jedinou věc: spustit v servisní konzoli validation.checkMigration() a opravit, co vypíše. Všechno ostatní v tomto článku se vás týká, jen když zákazník danou věc používá. U každé změny proto najdete řádek Zajímá mě, pokud… a když na vás nesedí, klidně ji přeskočte.
Kontrola nejde spustit předem na 5.19. Plugin Template validation ve verzi pro 5.19 nová pravidla neobsahuje, ta jsou až ve verzi 2.5.0, která je součástí 5.21. Proto doporučujeme nejdřív generálku na kopii produkční databáze.
Krok za krokem: validation.checkMigration()
Kontrola projde kód všech šablon a globálních skriptů za několik sekund a nic nemění. Spouští ji administrátor.
1. Otevřete servisní konzoli
V levém menu klikněte na Administrace (1) a v okně vyberte Servisní konzole (2).

2. Spusťte kontrolu celého systému
Do editoru napište validation.checkMigration(), zaškrtnuté pole return: nechte a klikněte na Odeslat.
Nahoru se vypíše, kolik kódu se prošlo a kolik problémů našlo, a pod tím tabulka podle pravidel:

Sloupec | Co znamená |
| ID pravidla. To pak předáváte do |
| error = nefunguje, opravit před spuštěním pro uživatele. warning = běží, ale chová se špatně. deprecated = zatím funguje, v budoucí verzi zmizí. |
| Kolikrát se problém našel |
| auto (safe) = automatická oprava je bezpečná. auto (review) = automatická oprava existuje, ale výsledek zkontrolujte. - = opravit ručně. |
| Co se změnilo a čím zápis nahradit |
Na konci výpisu konzole sama nabídne další krok (next:).
3. Najděte konkrétní místa
validation.checkRule('api.proc.iproc-case-status-attribute') vypíše každý výskyt: šablonu, typ místa (výpočet úkolu, strom podmínek…), konkrétní úkol nebo podmínku a detail. Název šablony a úkolu jsou odkazy, které otevřou přímo výpočet úkolu. Odkazy se otevírají ve stejné záložce, takže je otevírejte přes prostřední tlačítko myši.

Výpis ukazuje nejvýš 200 řádků. U většího počtu pracujte po šablonách: číslo šablony (TPROC_ID z adresy šablony) přidejte jako další parametr, např. validation.checkMigration(61) nebo validation.checkRule('api.proc.iproc-case-status-attribute', 61).
U podmínek na stav případu detail přímo řekne, co opravit, např. „-9 EQUALS 'Hotovo' is the name of case status 493 - compare with 493“.

4. Opravte
Pravidla s automatickou opravou opraví validation.fix('<id pravidla>'). Příkaz kód přepíše a vypíše každou změnu.
- Nejdřív to zkuste na jedné šabloně:
validation.fix('api.proc.iproc-case-status-attribute', 61), projděte vypsané změny a šablonu proklikejte. Teprve potom spusťte opravu pro celý systém. - Oprava omezená na šablonu nikdy nesahá na globální skripty. Ty opraví jen volání bez čísla šablony.
- Opravu dělejte nejdřív na generálce. Před opravou na produkci mějte exporty šablon.
- Pravidla bez automatické opravy opravte ručně podle sloupce what.
5. Zopakujte kontrolu
Spusťte validation.checkMigration() znovu. Hotovo je, když ve výpisu nezůstane žádná chyba (error).
Pravidla, která přináší 5.21
Pravidlo | Oprava | Popis změny v sekci |
| automatická (review) | Stav případu se ve výpočtech nastavuje jinak |
| ruční | Podmínka na stav případu porovnává ID |
| ruční |
|
| ruční | React a JSX skripty kompiluje TypeScript |
| ruční |
|
| automatická (safe) | Starý zápis MUI Grid v React skriptech |
Kontrola hlásí i starší pravidla, např. api.curl.*, api.docx.*, lodash.* nebo lib.getPublicKey(). Ty nejsou důsledkem přechodu na 5.21: takový kód nefungoval už v 5.19, takže ho opravte, až na něj přijde řada. Další funkce validačního pluginu popisuje článek Použití validačních funkcí.
Co se v 5.21 mění
Změny jsou seřazené podle oblasti. Body označené (najde checkMigration) vám konzole vypíše sama, takže je nemusíte hledat ručně.
Stav případu
Stav případu se ve výpočtech nastavuje jinak (najde checkMigration)
Zápis proc.IPROC_CASE_STATUS = "Schváleno" v 5.21 nic neudělá a čtení vrátí undefined. Nově se používá await proc.setCaseStatus("Schváleno") a await proc.getCaseStatus(), pro jiný případ await lib.changeCaseStatus(iprocId, "Schváleno").
Zajímá mě, pokud výpočty šablon nastavují nebo čtou stav případu. Je to časté.
Co udělat: validation.fix("api.proc.iproc-case-status-attribute") přepíše zápisy na proc automaticky. Zbytek (jiný objekt než proc, +=) přepište ručně.
Výpočty a skripty
Nic už za vás nedoplňuje await
Kód nově kompiluje TypeScript. Stávající výpočty běží dál beze změny. Každý nový nebo upravený výpočet ale musí mít await u všech asynchronních volání (lib.*, proc.getCaseStatus() a další), jinak dostane Promise místo hodnoty.
Zajímá mě, pokud budete po upgradu psát nebo upravovat výpočty. To je prakticky vždy.
Co udělat: při úpravě výpočtu dopište await. Editor výpočtu na chybějící await upozorní.
React a JSX skripty kompiluje TypeScript (najde checkMigration)
TypeScript odmítne některé zápisy, které Babel pustil, nejčastěji < /div> s mezerou nebo neescapované > a } v textu JSX. Už zkompilovaný kód běží dál, chyba se ukáže až při dalším uložení. Pravidlo code.compile-error.
Zajímá mě, pokud máte React tisky, FE skripty nebo přehled případu se skripty.
Co udělat: opravit zápis podle hlášky, např. {'>'} místo >.
Globální FE skripty mají rezervované názvy
Globální funkce se nesmí jmenovat jako vestavěné názvy (name, status, print, find, getVar…) a stejná globální funkce nesmí být ve dvou aktivních skriptech.
Zajímá mě, pokud zákazník má vlastní globální FE nebo React skripty.
Co udělat: funkci přejmenovat. Jinak skript nepůjde uložit.
Prázdná buňka dynamické tabulky vrací null
lib.dynamicTableGetCell vrací u chybějící buňky null místo "".
Zajímá mě, pokud výpočet porovnává výsledek s === "".
Co udělat: porovnávat !value.
Číselná proměnná bez výchozí hodnoty zůstává prázdná
Nově uložená číselná proměnná bez výchozí hodnoty už nedostane automaticky 0. Existující proměnné si nulu ponechají.
Zajímá mě, pokud výpočty počítají s tím, že prázdné číslo je 0.
proc.getTemplateTasksInfo() je zastaralé a asynchronní (najde checkMigration)
Zajímá mě, pokud ho výpočty volají.
Co udělat: přidejte await, nebo přejděte na await proc.getTemplateTasks(...).
Vlastní SQL nad tabulkami šablon
Některé tabulky a sloupce šablon se přejmenovaly nebo zmizely (např. IPROC_CASE_STATUS, CASE_STATUSES, DLIST_NAME, TTJSCALC_JS_ES6).
Zajímá mě, pokud výpočet, report nebo BI zákazníka čte databázi přímo (readQuery, pohledy, ETL).
Co udělat: dotazy ve výpočtech vám částečně vypíše checkMigration. Externí reporty projděte se zákazníkem.
Šablony a případy
Stavy šablony jsou jen Aktivní, Neaktivní a Vyřazená
Stavy „ve vývoji“ a „testovaná“ splynuly. Případ se zakládá přes aktivní hlavičku a dostane název podle šablony.
Zajímá mě, pokud zákazník rozlišuje šablony ve vývoji a v provozu podle stavu.
Zmizelo omezení hlavičky „jen interní uživatelé“
Zmizel také vlastník procesu, zámek editace a výchozí název případu. Hlavičky, které omezení dřív skrývalo, budou vidět. U zákazníků, kde je omezení nutné, se náhrada řeší individuálně.
Zajímá mě, pokud zákazník má externí uživatele a hlavičky omezené jen na interní.
Plány zakládají vždy jeden případ
Vlastníkem případu je sponzor plánu. Rozesílání na více iniciátorů zmizelo.
Zajímá mě, pokud plán zakládal případ pro každého uživatele z hierarchie nebo seznamu.
Co udělat: domluvit se se zákazníkem na jiném řešení (např. podproces z jednoho případu).
Uložení šablony je přísnější
Uložit nejde šablona bez startovního úkolu, vazba úkolu sama na sebe, duplicitní vazby a duplicitní názvy úkolů.
Zajímá mě, pokud budete upravovat starší šablony. Chyba se ukáže až při uložení.
Dynamické tabulky
Vlastní dynamické seznamy a pohledy DT_<id> skončily
Zajímá mě, pokud šablona používá seznamovou proměnnou nad vlastním seznamem, nebo report čte pohled DT_<id>. Pohledy zůstanou v databázi, ale přestanou se aktualizovat.
Tisky a dokumenty
Vlastní fonty si nahrajete sami
Fonty pro tisky, DOCX šablony a PDF nově nahrává konzultant přímo v Správa → Sdílené soubory → Fonty (.ttf, .otf, .ttc). V CSS tisku uvádějte i obecnou rodinu, např. Verdana, sans-serif.
Zajímá mě, pokud zákazník tiskne dokumenty s vlastním fontem nebo má přísné požadavky na vzhled dokumentů.
Tisk čeká jen na printLoaded()
Nastavení Timeout a „Tisk je připraven“ zmizelo. Tisk, který načítá data, musí na konci zavolat printLoaded(), jinak se vygeneruje dřív, než data dorazí.
Zajímá mě, pokud máte React nebo HTML tisky, které načítají data a spoléhaly na pevné zpoždění.
HTML tisky přicházejí o vlastní CSS
Zajímá mě, pokud máte HTML (ne React) tisky s vyplněným polem CSS. Styl přesuňte do šablony tisku. React tisků se to netýká.
Pošta a integrace
Pošta přes MS Graph běží přes Email processing
Staré crony MS Graph v 5.21 nejsou. Převod spouští DevOps nebo konzultant v konzoli a potom se zkontroluje v Správa → Email ledger.
Zajímá mě, pokud zákazník zakládá případy z e-mailů nebo zpracovává příchozí poštu.
REST API: část endpointů zmizela nebo se přejmenovala
Zajímá mě, pokud do TAS volá externí systém (ERP, BI, vlastní skripty, Power Automate). Integraci otestujte na generálce.
Cron iDoklad byl odstraněn
Zajímá mě, pokud zákazník měl integraci s iDokladem.
Uživatelé a správa
Nastavení organizace zmizelo
Název, IČ, DIČ a adresa organizace ve Správě už nejsou.
Zajímá mě, pokud je šablony nebo tisky četly. Před upgradem si hodnoty opište.
Zamykání účtu po šesti neúspěšných přihlášeních
Zajímá mě, pokud se zákazníkovi uživatelé často přihlašují špatným heslem nebo má technické účty s heslem ve skriptu. Upozorněte je.
Azure AD se jmenuje Microsoft Entra ID
Přihlášení funguje dál, mění se jen název v administraci.
Zajímá mě, pokud zákazníkovi píšete návod nebo dokumentaci k přihlášení.
Servisní operace běží na pozadí
Výsledek se neobjeví hned, operace jde do fronty.
Zajímá mě, pokud používáte servisní operace nebo archivaci. Pokud nedoběhnou, řekněte DevOps, ať zkontroluje proces queue.
Co je nového k nabídnutí
Dynamické položky, AI builder šablon, import BPMN a Mermaid, záložky a grafy v přehledu případu, proměnné s ikonami, hromadné převzetí úkolů, nahrávání fontů, plugin Exchange Rates, SCIM 2.0 a white labeling. Nic z toho se nezapne samo, takže to upgrade neovlivní.
Kontrola po upgradu
Kontrolu dělejte nejdřív na generálce a pak znovu na produkci. Na hlavních šablonách ji projděte s klíčovým uživatelem zákazníka.
validation.checkMigration()nehlásí žádnou chybu (error). Varování a zastaralé zápisy můžete řešit postupně.- Založení případu přes hlavičku: název případu, stav případu v přehledu.
- Úkoly s výpočty: stav případu se mění, přechody podle stavu jdou správnou větví.
- Formuláře úkolů: rozložení polí, povinná pole a pole jen pro čtení.
- Řešitelé z proměnné a z role.
- Tisky: jeden React tisk, jeden HTML tisk a jeden DOCX nebo PDF, pokud je zákazník má.
- Přehledy: načtení, uložené filtry, řazení podle stavu případu.
- Dynamické tabulky: proměnné ukazují na správnou tabulku, výpočty z ní čtou.
- Plány: plán založí jeden případ.
- Pošta: příchozí e-mail se objeví v Správa → Email ledger, odchozí notifikace dorazí.
- Servisní operace a archivace doběhnou.
- Integrace zákazníka (REST API, exposeDb) odpovídají.