πŸš€ v5.7

This changelog provides a detailed overview of technical changes, including new features, bug fixes, and maintenance updates. It is intended for developers, DevOps engineers, and technical teams to track system improvements and API modifications.

Each update is categorized into:

  • ✨ Added – New features and functionality improvements
  • πŸ› οΈ Fixed – Bug fixes and stability enhancements
  • πŸ”§ Chore – Code refactoring, performance optimizations, and internal updates
  • ⚠️ Breaking change – Changes that modify existing system behavior or require adjustments in configuration, calculations, templates, or integrations


πŸ“¦ [5.7.101] - 2026-09-09

πŸ› οΈ Fixed

  • tas-3808 Overviews – a share removed in the expert mode no longer reappears after the overview is saved again from the configuration mode.

  • tas-3843 [AD] DTRoleSync cron – the sync1to1DTs step no longer takes hours on a large directory πŸ› οΈ
    Note: on a directory of 9000 users, 45 groups each, 350 cascade rows and 12 All-DTSync rows the step runs in 2.7 s instead of 233 s, with identical output. Every run now logs a sync1to1DTs detail entry with its phase timings and the input sizes that drive them, so a slow run can be traced back to the configuration that caused it.

  • tas-3843 [AD] DTRoleSync cron – an edit to the All-DTCascadeSync table takes effect on the next run instead of after a restart of the cron worker πŸ› οΈ
    Note: both cascade steps were affected – the roles assigned through cascadeRole() as well as the tables generated by sync1to1DTs.

  • tas-3856 HR agenda – the task count on a user's card no longer includes rows nobody is assigned to solve ⚠️ Breaking change:
    Note: subprocess placeholders and event waits were counted as agenda items, so a user could show a non-zero badge over an empty task grid. The count, the list and the handover now agree on what a task is. A card's count drops for users whose agenda holds such rows, and a handover leaves them with their original solver. Case and variable counts are unchanged.

  • tas-3856 HR agenda – the user modal opens on the category being browsed instead of always on Task owner, leads with Cases | Tasks | Variables, and moves Task owner / Case owner into a three-dots menu

  • tas-3856 HR agenda – By agenda renamed to By variable and Inactive users to Locked users in all eleven locales, with matching icons and tooltips πŸ› οΈ
    Note: the route and the endpoint keep their inactive segment, so existing links still work. User cards are now sorted by the display name they actually show.

  • tas-3856 HR agenda – the by-variable grid's Variable - <lang> column is filled again and no longer breaks the load or the export when used for ordering

  • tas-3856 HR agenda – filtering the logs grid by case id matches whole ids instead of substrings (a search for 12 no longer also answers 120 and 512), and the Changed when column got the width it needs for the formatted timestamp

πŸ”§ Chore

  • tas-3878 Frontend – the overview-components package (CaseOverview components used in case prints) upgraded from 1.0.1 to 1.1.187, aligning 5.7 with the newer release lines

πŸ“¦ [5.7.100] - 2026-09-02

✨ Added

  • tas-3804 Dynamic rows – table-level minColWidth setting in the table section of the tableDefinition, overriding the default 70px column minimum ✨
    Note: applies to every column and to every place the 70px constant was used – width clamping, the percentage-to-pixel conversion on mobile, the scroll wrapper and the drag-resize limit – and can be changed at runtime via changeDef(). A missing or invalid value falls back to 70, so existing tables are untouched. Documented in the dynamic rows help (cs/en) and in the definition IDE hints.

  • tas-3215 Template variables – aliases (TVAR_ALIAS) can be managed by an administrator directly from the template variables tab ✨
    Note: an administrator can assign a free alias to a variable that has none, remove an alias, or take the alias of another variable of the same kind. A new "Alias candidates" analysis in the tab's "more" menu lists, per alias kind (text / number / date), the variables holding an alias ordered by how unused they are, based on how many cases hold a value, how many historical changes exist and how many overviews reference the variable. Removing or taking an alias is refused while the variable is used by a custom view column or its filter. After an alias is moved, overviews on the receiving variable show empty values until the values are written again. New endpoints PUT / DELETE /template-processes/:tprocId/template-variables/:id/alias and GET /template-processes/:tprocId/alias-candidates/:kind. No schema changes, no migration.

πŸ› οΈ Fixed

  • tas-2816 Service operations – the Roles section loads again for users whose saved column selection still contains role_is_deleted πŸ› οΈ
    Note: the column was dropped in 5.x, but a selection saved back in 4.15 kept requesting it, so every request failed with Invalid column name 'ROLE_IS_DELETED' until the user removed the column from the picker by hand. A data migration removes the entry from every stored selection and leaves the other sections untouched.

  • tas-3804 Dynamic rows – tablets no longer get the phone rendering; the mobile variant switches at a 900px viewport width and is re-evaluated on resize and rotation ⚠️ Breaking change:
    Note: a desktop browser window narrower than 900px now renders the mobile variant, and portrait tablets keep it. On the mobile variant, percentage column widths keep their authored ratio and never drop below the column minimum, so percentage-width tables render wider than before (scrollable) instead of squashed.

  • tas-3835 Export – exporting an overview to XLSX or CSV no longer fails with Too many parameters were provided in this RPC request (SQL Server error 8003) when the view holds a big-value, dynamic-list or multi-select column πŸ› οΈ
    Note: a failed export now also reports which export failed and why, instead of handing back whatever the inner request produced.

  • tas-3835 Export – the configured export row limits are enforced ⚠️ Breaking change:
    Note: tas.maxExcelExportedRows (50000 by default) and tas.maxCsvExportedRows (100000) were never actually applied. An over-limit export is refused with EXPORT_LIMIT_EXCEEDED naming both numbers rather than silently truncated, and both grids warn before the export is even sent. An instance that relies on exporting more rows has to raise the setting. A limit that is not a positive whole number falls back to the shipped default and logs a warning naming the key.

  • tas-3645 DataGrid – an overview with a value typed into a column's header filter can be scrolled horizontally again instead of jumping back to the filtered column

  • tas-3785 [API] Service operations – changing a date variable no longer fails on Oracle with ORA-01861: literal does not match format string πŸ› οΈ
    Note: covers every service-operation change endpoint that can write a date column (instance variables, cases, tasks, users, user parameters) and the workflow queue worker. An unparsable value is rejected with 400 instead of reaching the database; null or an empty string clears the column. 4.15 contains the same defect and needs its own fix.

πŸ”§ Chore

  • tas-3800 Migration CLI – npm run mig runs node with --max-old-space-size=8192, so an upgrade migration no longer dies with FATAL ERROR: Reached heap limit on the default heap πŸ”§
    Note: the flag is a ceiling, nothing is reserved up front. On a container whose memory limit is below 8 GB the process can be OOM-killed by the runtime instead, so the migration container should be sized accordingly. Running node directly stays the way to pick a different value.

πŸ“¦ [5.7.99] - 2026-08-28

πŸ› οΈ Fixed

  • tas-2601 Crons – the cron worker creates the tmp folder structure at bootstrap like every other backend, so a cron on a fresh instance no longer fails with ENOENT before a regular backend has booted πŸ› οΈ
    Note: cleaning the tmp folders on boot stays limited to non-cron processes, so the cron worker still never deletes files a running backend may be using. 5.7 only – from 5.12 on the structure is created in initContainer.

  • tas-3823 AsyncAwaitTranspiler – a calculation that names an inherited Object.prototype member (toString, valueOf, constructor, …) inside a filter / find / some / reduce / … callback no longer fails to transpile with Unknown node type null πŸ› οΈ
    Note: the failure was never limited to the calculation being edited – every variable update re-transpiles all calculations of the template process, so a single old script blocked all variable edits there. Only scripts saved before tas-3563 can carry such a shape; nothing has to be re-saved after the fix.

  • tas-3767 [Crons][AD] DTRoleSync – a user belonging to exactly one AD group is no longer silently skipped πŸ› οΈ
    Note: such a user got no role from the All-Sync table and no row in the All-DTSync dynamic tables, while users in two or more groups synced correctly. Nothing else about the sync changes – same regexes, same role assignments and dynamic table writes, only now reached for the affected users.

  • tas-3771 Roles – the migration that drops ROLES.ROLE_IS_DELETED now also removes the roles that were flagged as deleted, instead of letting them come back as ordinary active roles ⚠️ Breaking change:
    Note: 5.7 only, and only for environments that have not upgraded yet – a migration recorded as ok is never re-run, so where the column is already gone the affected roles have to be identified and removed by hand. The cleanup removes the assignments in USER_ROLES (no USERS row is ever deleted) and the records in HEADER_ROLES, ROLE_ACCESS_RIGHTS, COMPETENCE_ROLES, COMPETENCE_RULE_ROLES, TEMPLATE_FOLDER_ROLES, DMS_ACCESS_SUBJECT and the role shares in CUSTOM_VIEW_SHARE / REPORT_GRAPH_SHARE; foreign-key columns are repointed to $Administrator so the access stays restricted. Roles with a negative id are never removed. Users lose the assignments those roles gave them, so an unfinished task assigned through such a role has to be reassigned. The number of removed roles is logged and kept in MIGRATION_STEP_HISTORY.

  • tas-3593 Dashboard – favourite item labels in the favourites container wrap up to three lines before truncating

  • tas-3743 Logging – authentication failures are logged as warning instead of error πŸ› οΈ
    Note: an ordinary unauthenticated request or a mistyped password no longer fills the error log. A hard failure of the authentication backend itself (LDAP or Azure AD unreachable) is still logged as error. Response bodies, status codes and the authentication behaviour are unchanged.

  • tas-3709 Roles – removing a user from the role's user multibox while the search filter is active no longer unassigns every user that does not match the filter πŸ› οΈ
    Note: adding a user with an active filter had the mirror image of the problem and could create a duplicate; fixed the same way. Only the role detail page renders the search field, so no other multibox screen changes behaviour.

  • tas-3242 HR agenda – the users tab is split by agenda kind (cases / tasks / variables) and each user card shows a single count for the selected category
    Note: the count comes from one grouped query over the whole page instead of three queries per user plus a photo lookup, which is what made the tab slow to open on installations with many users. Response-shape change on /hr-users/all, /hr-users/active and /hr-users/inactive: each item carries a numeric item_count and no longer carries the user_processes / user_tasks / business_variables arrays or user_full_name, so the per-user tooltips listing the first ten items are gone. An unknown category is rejected with BAD_INPUT.

  • tas-3242 HR agenda – the users tab keeps its selection in the URL (/administration/hr-agenda/users/:subTabName/:categoryTabName), so a view can be bookmarked or linked to, the back button steps through it and a reload no longer drops back to the default

  • tas-3241 HR agenda – handing over a large agenda no longer fails on a request timeout or on The incoming request has too many parameters (2100 on MSSQL); all three handovers run as bulk operations, chunked to stay under the parameter limit of the dialect

  • tas-3241 HR agenda – selecting a large number of rows for handover no longer fails with HTTP 414 (URI Too Long) πŸ› οΈ
    Note: request-shape change for all change-user endpoints. They accept a selection object in the body – { mode: "ids"; ids }, { mode: "all" } or { mode: "filter"; filter; limit? }. A request without selection keeps reading ?filter= / ?limit= exactly as before, so existing API clients are unaffected. mode: "all" requires currentUserId in the body.

  • tas-3241 HR agenda – removing case-owner rights when the owner changes no longer removes rights for the cross product of all affected owners and cases; only the (case, its own former owner) pairs are removed

  • tas-3533 HR agenda – the handover modal's radio label named the wrong category for cases and variables

  • tas-3692 HR agenda – the count badge, the agenda list and the ownership handover use the same conditions, so a fully handed-over agenda no longer shows a number in the bubble ⚠️ Breaking change:
    Note: /tasks/solvers is also the source of the main Tasks view and of task search, so those lists change scope too – tasks in suspended cases appear, done tasks no longer do. The cases badge and list intentionally include done cases, because the handover transfers ownership of them as well. The variables badge counts only single-value dynamic-list variables. No migration.

  • tas-3764 Mobile app – a locked user no longer receives mobile push notifications πŸ› οΈ
    Note: applies to every push path, deputies included, and the badge counter is no longer raised either. Device rows and FCM tokens are left in place, so unlocking an account restores notifications without re-pairing the device.

  • tas-3806 DataGrid – better message about an empty grid

πŸ”§ Chore

  • tas-3772 Logging – a failed dynamic table CSV import logs the import context (table, file name, delimiter, headers, row count) and the duplicated values under the codeNames EMPTY_CSV and DUPLICATE_CSV_INDEXES, instead of only the message
  • tas-3767 Tests – the DTRoleSync cron is covered by unit tests, one file per sync step
  • tas-2385 KSeF plugin – update to comply with API 2.0 (update of development files)

πŸ“¦ [5.7.98] - 2026-08-11

πŸ› οΈ Fixed

  • tas-3663 [Calculations] ISDOC invoices embedded in a PDF πŸ› οΈ
    Note: lib.isIsdocPdfFile reported that a PDF contains no ISDOC even when the invoice was clearly there, and lib.parseIsdocPdfFileContent returned nothing for such files. Attachment detection now takes the file name from the attachment definition itself instead of from the internal name-tree key (a supplier using a placeholder key such as Unnamed made the .isdoc suffix never match), searches the whole attachment tree instead of its first branch only, recognises an attachment referenced directly or through a FileAttachment annotation, skips an attachment without content instead of failing the whole document, survives a damaged page tree, and matches the .isdoc suffix case-insensitively. If the extracted invoice does not strictly conform to the ISDOC XSD (for example a repeated invoice-line id), it is now read without validation instead of being lost or throwing an error β€” real suppliers do ship invoices that are readable but not strictly conforming. Signatures and return shapes of all four lib.* functions are unchanged: parseIsdocPdfFileContent still returns one slot per input file with null where no invoice was found, parseIsdocPdfFileContentByPath still returns a single invoice or null, and a non-ISDOC attachment still yields null rather than an exception. The is-doc plugin contains its own copy of the same code and received the same fix, plus a repair of its calculation API β€” isDoc.isIsdocPdfFile and isDoc.parseIsdocPdfFileContent failed with a TypeError before they even opened the document.
    The plugin is bumped to 1.1.0 and has to be rebuilt and reinstalled for the fix to reach it; the lib.* functions require no action beyond the upgrade. Unlike lib.parseIsdocPdfFileContent, the plugin's isDoc.parseIsdocPdfFileContent returns a flat list of invoices rather than one slot per file β€” this matches the already released plugin build, and since the function failed for every input before this fix, no calculation can depend on the previous shape. Extraction from .isdocx containers, the unified isDoc.extract() entry point and the IsDoc smart event are 5.20 features and are deliberately not part of this backport.

  • tas-3704 Force types migration CLI β€” data transfer paired columns by position πŸ› οΈ
    Note: The copy-and-swap transfer (ft:table, ft:tables:all) copied rows by physical column position instead of by column name. The physical order of columns in a live table is historical β€” language mutation columns in particular used to be created "as needed" per configured TAS_LANGUAGES before 5.7 β€” while the NEW_ tables are scripted in one fixed order. Columns of the same type therefore swallowed each other's data without reporting a single error: Slovak texts landing in IVAR_NAME_CS, Czech ones in IVAR_NAME_DE and so on. This affects INSTANCE_VARIABLES, INSTANCE_TASKS, INSTANCE_TASK_EMAIL_NOTIFS and INSTANCE_VARIABLE_LOV, which carry translation columns; any other difference in column order corrupted the remaining tables in the same way, or aborted the transfer with a confusing column-count error. The transfer now resolves the column list by name once per run and prints it β€” a source column with no matching destination column stops the transfer with an error listing the offending columns before anything is copied (previously silent data loss), destination-only columns are reported and stay NULL (the usual case, since the scripts ship all eleven standard language columns while an environment normally uses a subset). The row-count check before the swap is unchanged.
    ⚠️ Environments that already ran ft:table / ft:tables:all with the previous procedure should verify the language mutation columns of the migrated tables against a backup β€” the swap drops the original table, so the misassignment cannot be recovered from the database alone (BatchTransferLog shows when each transfer ran). npm run ft:procedure updates the procedure in place; the log table and its history are kept. A NEW_ table left behind by an interrupted transfer must be dropped, not resumed, so that the whole table is re-copied by name. The ft:alter path for small tables is unaffected β€” it changes column types in place and never moves rows.

  • tas-3640 Organizational structure import πŸ› οΈ
    Note: Importing an organizational structure was broken β€” the hierarchy preview crashed while building the visualization tree and blocked the whole import. The preview tree/visualization has been removed on both ends: /org-units/import-preview now returns only headers and checkedEntities, and the import screen no longer renders the tree, so the review tables use the full width. The existence check in the preview now uses exactly the same matching as the import itself (exact match instead of a case-insensitive LIKE, which broke on names containing an apostrophe and could match the wrong unit), duplicate rows in the imported file are reported to the user instead of silently disappearing from the preview, and the type and external-id mapping selects are now required in the GUI. In addition, the organizational structure tree (GET /org-units/tree) could display only a small fragment instead of the real structure when orphaned root-level rows existed β€” the tree is now anchored on the real root unit.

  • tas-3739 [Crons] GenerateAcquaitanceProcesses πŸ› οΈ
    Note: The dry run of the cron crashed instead of reporting what it would do β€” with debug: true in the cron parameters the run ended with TypeError: this.tasLogger.warn is not a function right after the candidates had been found and logged. Configurations completely missing variablesMappingLevelTwo / variablesMappingLevelThree now fail with a clearly named error instead of Cannot convert undefined or null to object.

πŸ”§ Chore

  • tas-3739 [Crons] GenerateAcquaitanceProcesses β€” typing and tests
    Note: The cron no longer opts out of typechecking. Cron parameters (templateIds, variablesMappingLevelTwo, variablesMappingLevelThree, variablesToCopy, headerId, limit, debug), the candidate rows returned by the search query, the INSTANCE_VARIABLES rows and every method signature are now typed, which is what surfaced the crash described above. Two further latent problems were fixed along the way: the per-instance ORM assignment wrote to a property that does not exist on the cron (it is a local variable now, as in the other crons that create instances inside a transaction), and two repositories were addressed by an undeclared key that only worked thanks to internal lowercasing. The cron is now covered by unit tests (parameter validation, the debug dry run, variable-type rewriting, the candidate query compiled for both dialects) and integration tests (candidate search against a real organizational structure including blacklist and the distribution/state/newcomer filters, generation of the level three instance with its copied variables and parent link, and the deduplication that prevents a second run from repeating an acquaintance). No change to what the cron does on a normal (non-debug) run β€” the generated instances, the copied variables and the SQL are untouched.

πŸ“¦ [5.7.97] - 2026-08-04

πŸ”§ Chore

  • tas-3724 Logging β€” per-cycle workflow tracing moved behind logger.extendedLogging
    Note: The workflow engine logged its internal per-cycle tracing unconditionally. Lines reporting that a check was about to happen or that nothing had changed yet were emitted for every task, link and process on every workflow pass and every cron tick, so a single case activation produced dozens of info records (Check completition., Check canceling., Checking whole process completition., Testing finish, Waiting for new event., Saving history..., Possible users and similar). In PostponedTaskCron the per-item Skipping task/event and Acquired lock for task/event lines are guarded the same way β€” they carried the full task/event object per row, while the run already logs the activated/skipped totals unconditionally. The CurlApi is deprecated and will be removed in version 5.12 warning was emitted on every single perform() call, so a calculation looping over HTTP requests filled the log with it; it is now logged once per process, which keeps the deprecation visible without the repetition.
    logger.extendedLogging ("Extended logs for pdf printing, auth handling and more.") is an existing administration setting, off by default, so these lines disappear from a default installation and can be switched back on without a restart when a workflow needs tracing β€” note that it also enables extended pdf/auth logging. Outcome-level workflow logging is untouched and stays unconditional: activating and finishing a task, activating a process or event, the link routing decisions, solver selection, and every warning and error. The logger.ignoreTasksWithoutConditions option still gates the Check completition. / Check canceling. lines, now in addition to the extendedLogging switch.

πŸ“¦ [5.7.96] - 2026-07-31

πŸ› οΈ Fixed

  • tas-3710 icon-fonts β€” hotfix for 5.7 πŸ› οΈ

πŸ“¦ [5.7.95] - 2026-07-31

✨ Added

  • tas-3646 [Calculations] lib.getUsers / lib.getRoles / lib.getOrgUnits ✨
    Note: New calculation functions for structured querying of system dimensions. They accept a { filters, sort, page } query with the operators eq, ne, in, nin, contains, startsWith, endsWith, gt, gte, lt, lte, isNull, isNotNull, cursor paging and an optional total count, which makes partial-match lookups possible (for example finding a user by part of their name). Each function mirrors its REST list endpoint, including its permission scope: GET /users enumeration restrictions and the USER_FULL_NAME filter/sort, GET /roles visibility scope including ROLE_NAME_ACCESS, and the GET /org-units core columns. USER_PASSWORD is never returned. Backported from version 5.20.

  • tas-3694 Force types migration CLI ✨
    Note: The MSSQL force-types / DATETIME2 precision migration, previously a set of SQL scripts run by hand in SSMS, is now driven from the TAS CLI as a separate set of commands: ft:analyze and ft:check report row counts and the columns that still differ from FORCED_TYPES, ft:alter runs the ALTER + DBCC CLEANTABLE pass for tables under --max-rows, ft:procedure creates the batch transfer procedure, ft:table / ft:tables:all run the copy-and-swap script for the 18 bundled large tables, ft:verify and ft:verify:defaults check the result, and ft:cleanup drops the helper objects. Run npm run ft for the full command list.
    None of these commands run as part of npm run mig β€” each step stays explicit, because a pass over a large table can take hours. The commands are MSSQL-only and refuse to start on Oracle. They run on a dedicated single connection with no request timeout, so the scripts keep their #temp tables across GO batches and long ALTERs are not cut off. ft:cleanup keeps the FORCED_TYPES table unless --include-forced-types is passed: the always-run migration mssql-sync-force_types selects from it, so dropping it makes npm run mig fail.

  • tas-3694 Force types migration CLI β€” schema resolution ✨
    Note: The schema the force-types commands work on is taken from the TAS configuration (db.schema / TAS_DB_SCHEMA), can be overridden per run with --schema NAME, and falls back to the default schema of the connecting user β€” the same lookup TAS does during bootstrap β€” when the configuration leaves it unset. The resolved schema and where it came from are logged at startup.
    A schema given in the configuration or on the command line must be a plain SQL identifier and must exist in the database, because it is used as an identifier rather than bound as a parameter. Be aware that the rest of TAS 5.7 still derives its schema from the connecting user and ignores db.schema, so setting it to anything else means the commands migrate a schema the running application does not use.

  • tas-3694 Force types migration CLI β€” ft:sql and statement output ✨
    Note: ft:sql runs ad-hoc SQL on the same dedicated connection as the rest of the force-types commands, either from --query "SELECT ..." or from a --file path.sql script (including :setvar, $(schemaName) and GO batches). Every statement any of the commands run is now printed in full before it is sent, together with its duration and row count, and the commands that change the database list what they are about to run and ask for confirmation first β€” --yes skips the prompt and is required when running them without a terminal.
    The output always reaches the console during a force types run. tasLogger only writes to stdout when logger.enableStdoutLog (TAS_LOGGER_STDOUT_ENABLE) is enabled, so the commands print anything it would not print themselves β€” the run is visible to the operator whatever the logging configuration is, without duplicated lines. The log file, Elastic and Arango keep receiving everything as before.

πŸ› οΈ Fixed

  • tas-3710 icon-fonts β€” broken icons in frontend images πŸ› οΈ
    Note: Every frontend image built on or after 2026-07-28 shipped with broken icons β€” wrong pictograms (Windows fallback glyphs) or literal letters on legacy screens β€” while all font requests returned 200. An unpinned transitive dependency (postcss 8.5.24, "Preserve the BOM after the processing") stopped stripping the byte order mark that dart-sass prepends to every compressed SCSS module containing non-ASCII characters (the icon content characters). The BOMs landed in the middle of appStyles.css directly before the tas-5 / general-tas @font-face rules, and because browsers drop the rule following a stray BOM, the icon fonts never registered. The production build path now tells sass not to emit the BOM at all, regardless of the resolved postcss version.
    Images already built stay broken until they are rebuilt with this fix. An emergency stopgap without rebuilding on the fix is to pin "postcss": "8.5.23" in the frontend overrides.

πŸ“¦ [5.7.94] - 2026-07-29

✨ Added

  • tas-3633 [Calculations] Migration validation β€” more deprecated APIs detected ✨
    Note: sys.validateTemplates() / sys.validateGlobalScripts() now also detect deprecated calculation APIs that are removed on the way to 5.17: lib.getAresData(), lib.setList(), lib.getPublicKey() / getSecret() / setSecret(), docx.generate() / docx.docxTemplater(), lib.getCertificatePath(), hardcoded certificate directory paths, POST /dms/download and /dms/archived/download, and public /assets/ URLs. This lets 5.7 environments estimate the upgrade effort before updating.

πŸ› οΈ Fixed

  • tas-3656 Error handling β€” a broken Elasticsearch connection logged the user out πŸ› οΈ
    Note: A wrong or missing Elasticsearch password in the fulltext / logging integration logged the user out of TAS: the Elasticsearch client rethrows its 401 Unauthorized as an error carrying that status code, the central error handler passed the status straight through, and so opening the Documents or the Logs page answered 401 and the frontend redirected to the login page. The response status is now taken only from TAS exceptions and from Fastify's own errors (schema validation, upload limits and similar); every other failure is reported as 500 together with the sanitized message the handler already sent.
    This applies to any third-party error carrying a status code, not only Elasticsearch β€” such a failure now surfaces as 500 instead of leaking the upstream status. Genuine authentication and session failures are unaffected, because they set the configured unauthorized status explicitly.

  • tas-3393 [Calculations] axios β€” default timeout πŸ› οΈ
    Note: Calculations using axios.getAxios() now default to a 120-second timeout if none is configured, which prevents a calculation from freezing indefinitely on a hanging request while still allowing enough time for longer-running queries such as ERP synchronizations. Custom timeouts are preserved if provided.

  • tas-3678 [Crons][AD] DTRoleSync β€” LDAP connection URL composition πŸ› οΈ

  • tas-3408 utilSanitizeHtml β€” allowed formatting tags πŸ› οΈ
    Note: The font tag (with color, face and size) and the s, u, sub and sup tags are now allowed, so CKEditor formatting in task Instructions renders as formatted text instead of escaped raw HTML.

πŸ“¦ [5.7.93] - 2026-07-23

πŸ› οΈ Fixed

  • tas-3669 [Crons] DTRoleSync β€” alias naming πŸ› οΈ

πŸ“¦ [5.7.92] - 2026-07-21

✨ Added

  • tas-1951 storage.moveDmsFilesToCase / storage.moveDmsFilesFromCase ✨
    Note: New calculation functions for moving DMS documents between cases. Documents can be selected by file ID, file name, attachment variable, or by taking all documents of the case. Selectors only match current, non-deleted documents owned by the source case. The move carries the whole revision chain, recalculates main/sub-process visibility from the target case, detaches the task binding, rewrites the case and template DMS tags and refreshes the fulltext index. Every move is traceable – a MOVE_FILE entry is written into the DMS access log and a record is added to the case history of both the source and the target case. Backported from version 5.20.

πŸ› οΈ Fixed

  • tas-3103 Backend input sanitization πŸ› οΈ

  • tas-2840 LogEditModule - missing time-range filter and Elasticsearch offset overflow in log download πŸ› οΈ
    Note: The from / to date range parameters were silently ignored when filtering Elastic logs. Both the offset and the page size are now capped at max_result_window (10 000) to prevent Elasticsearch from rejecting requests that exceed the default window.

  • tas-3487 Overviews - incorrect TVAR_ALIAS πŸ› οΈ
    Note: Fixed loss of variable mapping after sharing a view on a template that contains multiple db.views.

  • tas-3297 lib.generateAsymmeticKeyPair - EC key generation silently failing πŸ› οΈ
    Note: For EC key types the function now correctly passes namedCurve instead of modulusLength.

  • tas-1538 updateDTFromCsv removed data when an error was caught in try/catch πŸ› οΈ
    Note: Data in the dynamic table is no longer deleted when the import fails and the error is handled by a try/catch block.

  • tas-2797 HR Agenda - filtering and sorting by certain columns caused an error

[5.7.91] - 2026-07-07

πŸ› οΈ Fixed

  • tas-3534 [Calculations] White screen in template task calculations - a global script that acorn could not parse (syntax newer than ES2020 or a syntax error) threw an uncaught SyntaxError while building editor hints; parse errors are now caught per script (only that script's hints are skipped), parser accepts latest ECMAScript syntax, and a missing null guard on editor.getContentHeight() was added
  • tas-3557 [Crons] MsGraphCheckUnprocessedMailsCron - default configuration fix
  • tas-3525 DR – number: fix cursor jumping before the first digit when overwriting a selection that spans a formatting space (digits were entered in reverse order, e.g. 135 became 351); cursor position after reformatting is now derived from the meaningful characters left of the caret
  • tas-3563 [Calculations] the async/await transpiler now handles every Array iteration method correctly. An async callback (e.g. one awaiting a TAS API) inside filter/find/findIndex/findLast/findLastIndex/some/every/reduce/reduceRight/sort used to be left synchronous, so the callback returned a Promise β€” a filter/predicate kept everything, sort compared Promise objects, reduce accumulated Promises. These are now rewritten into sequential async loops (like map/forEach) so the callback is awaited and results are correct. Only inline function callbacks are rewritten, so same-named non-array API methods (e.g. tas.find("task")) are untouched. Lodash collection methods are also no longer mangled: lodash.map/_.map was rewritten into an invalid Array.prototype for-loop and _.forEach into a silent no-op, and lodash iteratees (_.sortBy, _.groupBy, _.remove, ...) were turned async; lodash calls (including chains like _(arr).map(fn).value()) are now left intact with a synchronous iteratee and simply awaited

[5.7.90] - 2026-06-23

πŸ› οΈ Fixed

  • tas-3428 [Emails] MailUsageStatisticsCron: monthly report date range now shows the last day of the previous month (e.g. 01. 04. 2026 - 30. 04. 2026) instead of the first day of the current month; display-only fix, gathered data unchanged
  • tas-3486 [Calculations] Transpilation - change Array.map() transpilation from Promise.all() to a sequential for-loop so calculation scripts run their async callbacks in deterministic order; the callback is now invoked directly, preserving the element, index and array parameters as well as destructuring patterns and function references
    Note: Callbacks now run sequentially instead of in parallel, which is intentional but may run slower for scripts that relied on parallelism. Existing transpiled calculations keep the old Promise.all pattern until they are re-transpiled; use the system console commands sys.retranspileCalculationsByProcessId(tprocId), sys.retranspileCalculationsByTaskId(ttaskId) or sys.retranspileGlobalScripts() to re-transpile them.
  • tas-3509 firebase startup validation improved

πŸ“¦ [5.7.89] - 2026-06-08

πŸ› οΈ Fixed

  • tas-3459 NFC reader permission prompt shown on mobile (Android/Edge) even when nfcReaderEnabled config is false

πŸ“¦ [5.7.88] - 2026-06-08

πŸ› οΈ Fixed

  • tas-3411 Add userId/username logging to cron run controllers (CronRunController and CronRestartCronController) to audit who initiated manual cron execution
  • tas-3347 [AD] LDAP sync - add ldap.groupSearchBase so recursiveMemberOf group resolution can search outside ldap.people in multi-domain AD setups
  • tas-3431 Custom OrgStrCsv cron - incorrectly assigning manager seats; previous run affects result of subsequent run

πŸ“¦ [5.7.87] - 2026-06-02

πŸ› οΈ Fixed

  • tas-3349 [Templates] Template process import (REWRITE mode) β€” incorrect parameter when creating a task πŸ› οΈ
    Note: When importing a template in REWRITE mode, newly created tasks could be created with incorrect parameters. Fixed.

  • [Settings] Tooltip for the "Name" field in overview settings was not displayed πŸ› οΈ
    Note: Minor visual issue β€” the help icon next to the "Name" field in the overview settings was not visible. Fixed.

  • tas-3384 URL encoding fix for CSV/Excel export πŸ› οΈ
    Note: When exporting an overview to CSV or Excel, the export could fail if the filters contained special characters (e.g. spaces, diacritics, %). Fixed.

πŸ“¦ [5.7.86] - 2026-05-29

πŸ› οΈ Fixed

  • tas-3333 [AD] Cron DTRoleSync β€” DB transaction fix πŸ› οΈ
    Note: Under certain conditions, Active Directory role synchronization could end in an inconsistent state (some changes saved, some not). All DB operations now run correctly within a single transaction with automatic rollback on error.

  • tas-3323 [Mobile app] Disabling "pull-to-refresh" did not work πŸ› οΈ
    Note: The configuration flag mobileApp.disablePullToRefresh was not evaluated correctly, so the "pull to refresh" gesture could not be disabled. Fixed β€” the flag now works reliably.

  • tas-3350 Custom Cron CompanyOrgStrCsv β€” update of the user display name πŸ› οΈ
    Note: The cron for synchronizing the organizational structure from CSV updated records but did not write the current user display name (USER_DISPLAY_NAME). Fixed.

πŸ“¦ [5.7.85] - 2026-05-27

✨ Added

  • tas-3323 [Mobile app] Configurable disabling of pull-to-refresh in the browser ✨
    Note: A new configuration flag mobileApp.disablePullToRefresh (default N) allows disabling the "pull to refresh" gesture in the mobile browser β€” especially useful where users accidentally refresh the page instead of scrolling.

πŸ› οΈ Fixed

  • tas-3331 [Templates] Template process import (REWRITE mode) β€” missing version πŸ› οΈ
    Note: When importing a template in REWRITE mode, the process version (tproc_version) was not passed to the imported entities. This could cause inconsistencies when working with template versions. Fixed.

πŸ“¦ [5.7.84] - 2026-05-26

πŸ› οΈ Fixed

  • tas-3322 [Templates] Template import (TPL) β€” "Version must be defined" error when overwriting an existing template πŸ› οΈ
    Note: When importing a template where the target template already existed and the import was meant to overwrite it, the process failed with a missing version error. Fixed β€” the version is now correctly resolved even when overwriting.

πŸ”§ Chore

  • tas-3301 Fix and review of E2E tests in the 5.7 branch

πŸ“¦ [5.7.83] - 2026-05-22

πŸ› οΈ Fixed

  • tas-3286 Cron PostponedTaskCron β€” query compatibility with Oracle DB πŸ› οΈ
    Note: The SQL query in the postponed task cron was not compatible with the Oracle database. Fixed β€” the cron now works correctly on all supported databases.

  • tas-3296 White screen when working with competencies β€” adding regex, switching tabs πŸ› οΈ
    Note: In the competencies section, an empty/white screen could appear under certain conditions (adding a regular expression, switching tabs). Fixed.

πŸ“¦ [5.7.82] - 2026-05-20

✨ Added

  • tas-3274 CaseOverview components - NFC reader ✨
    Note: A new component for reading NFC chips has been added to the case overview. Users can now tap a chip directly from the case overview β€” same as previously from the dashboard. Administrators can add the component and optionally configure instruction texts for multiple languages.

πŸ› οΈ Fixed

  • tas-3126 Datagrid export - fix URIError: URI malformed
    Note: Data export did not work in any datagrid when a filter was applied β€” export without a filter worked correctly. The issue affected, for example, the HR agenda but also other sections. After the fix, export works correctly even with an active filter.

πŸ“¦ [5.7.81] - 2026-05-18

πŸ› οΈ Fixed

  • tas-3280 Cron - customized crons - usage of DI logger and auth service πŸ› οΈ

πŸ“¦ [5.7.80] - fill-in

πŸ› οΈ Fixed

  • Promise recognition in dynamic conditions

πŸ“¦ [5.7.79] - 2026-05-15

✨ Added

  • Database utility functions - nvlParametrized and lobSubstr

πŸ› οΈ Fixed

  • MigSeznameni CUSTOM cron - correct auth function call

πŸ“¦ [5.7.78] - 2026-05-15

✨ Added

  • tas-3140 Adding "Change entity" option to task history ✨
    Note: The "Change entity" action is again available in task history (same as in TAS4). It is accessible via the three-dot menu on the right side of each history record and is visible only to administrators. After opening, the relevant task is automatically pre-filtered.

πŸ› οΈ Fixed

  • tas-3240 Process history - add featureFlag.processHistory.createTechnicalCaseHistoryEntry to suppress technical case-history entries from vars API and sharedVars writes πŸ› οΈ
    Note: Since version 5.7.28, technical variable changes (via API or sharedVars) were being written to the process history of a case. On busy environments this generated hundreds of records and slowed down loading. These technical records are now separated and their logging can be controlled via the feature flag featureFlag.processHistory.createTechnicalCaseHistoryEntry. For administrators: case history is again clean and loads quickly.

  • tas-3127 Lost focus in datagrid filter input πŸ› οΈ
    Note: After opening a case in a new window and returning back, the first click on the filter field lost focus β€” the user could unintentionally press Enter and put the case to sleep / archive / delete it. Focus now works correctly on the first click.

  • tas-3275 Crons - custom crons fix MigSeznameni and GenerateAcquaitanceProcesses πŸ› οΈ

πŸ”§ Chore

  • tas-3183 firebase-admin and protobufjs update
  • auth test - clean cache record

πŸ“¦ [5.7.77] - 2026-05-12

πŸ› οΈ Fixed

  • Crypto - uncaught stream errors during encryption/decryption πŸ› οΈ
    Note: Fixed uncaught exceptions from stream errors during encryption/decryption that were crashing the cron process. (No ticket number for this fix.)

πŸ“¦ [5.7.76] - 2026-05-12

✨ Added

  • tas-3243 GenerateThumbnailsCron - new batch control parameters ✨
    Note: Added offset, startFromNewest, continueOnItemError, and suppressItemErrorLogs parameters to give finer control over how the cron processes batches.

πŸ› οΈ Fixed

  • tas-3243 GenerateThumbnailsCron - skip missing physical files πŸ› οΈ
    Note: The cron now skips records whose physical files are missing instead of getting permanently stuck on corrupted records. Log level for missing files was reduced from error to warning.
  • tas-3243 ImageMagickConnector - memory and disk limits per call πŸ› οΈ
    Note: Per-call memory and disk limits were added to prevent resource exhaustion when processing large batches.
  • lib.convertDmsFile() returning undefined πŸ› οΈ
    Note: .id was being accessed on an unresolved Promise instead of on the awaited result, causing the function to return undefined. (No ticket number for this fix.)
  • tas-3208 HTML in task variable tooltips πŸ› οΈ
    Note: Fixed rendering of HTML content inside task variable tooltips.
  • tas-3165 usage-statistics - user email in report πŸ› οΈ
    Note: User email is now included in the usage statistics report and in the admin table at /usage-statistics/users.
  • tas-3106 Task detail - admin task takeover πŸ› οΈ
    Note: Fixed an issue with administrators being unable to correctly take over tasks from the task detail view.

πŸ“¦ [5.7.75] - 2026-05-06

✨ Added

  • tas-3075 NFC - backport 5.7 ✨
    Note: NFC functionality backported to the 5.7 branch.
  • tas-2927 apiExtensions plugin - process creation, variable updates and workflow start (backport 5.7) ✨
    Note: The apiExtensions plugin now supports creating processes, updating variables, and triggering workflows. Backported to 5.7.

πŸ› οΈ Fixed

  • tas-3135 Unhandled promise rejection in IdentityApi.setOrganization πŸ› οΈ
    Note: Fixed a missing await that caused an unhandled promise rejection in IdentityApi.setOrganization.
  • tas-3135 Timer leak in cron πŸ› οΈ
    Note: clearTimeout is now called after Promise.race resolves or rejects, preventing timer leaks in the cron.
  • tas-3135 False heartbeat crash detection πŸ› οΈ
    Note: The initial heartbeat is now sent before the CRON_RUNS INSERT, eliminating false crash detections.
  • tas-3073 Dynamic table description edit πŸ› οΈ
    Note: Editing the description of a dynamic table no longer unnecessarily updates all linked instance variables.
  • tas-3157 Mobile app - shouldActivatePushNotifications flag πŸ› οΈ
    Note: getDomainWhitelist now returns the shouldActivatePushNotifications flag for the mobile app.
  • Paginated page width on small screens πŸ› οΈ
    Note: Fixed layout issue with paginated page width on small screens. (No ticket number for this fix.)
  • tas-3124 Archivation - legacy tables - foreign key from INSTANCE_GRAPH to INSTANCE_TASK_LINKS πŸ› οΈ
    Note: Added missing foreign key constraint in the legacy archivation tables.
  • tas-3124 Process instance deletion - missing legacy tables πŸ› οΈ
    Note: Process instance deletion now also cleans up records in previously missing legacy tables.
  • tas-2986 Update - pdfjs πŸ› οΈ
    Note: Frontend pdfjs was patched.
  • tas-3003 AsyncAwaitTranspiler - arrow callback without parameters in forEach πŸ› οΈ
    Note: AsyncAwaitTranspiler now supports arrow function callbacks without explicit parameters inside forEach.
  • tas-3063 Service operations - cases - header selection πŸ› οΈ
    Note: Fixed header selection in service operation cases.
  • tas-3218 ExposeDb plugin - default database connection πŸ› οΈ
    Note: Fixed passing of the default database connection to the ExposeDb plugin.

πŸ“¦ [5.7.74] - 2026-04-14

πŸ› οΈ Fixed

  • tas-2962 Checkbox in task - display as checkbox in readonly πŸ› οΈ
    Note: The checkbox in a task now displays correctly as a checkbox even in read-only mode, not only during editing.

  • tas-1484 Dynamic rows - default value in the template πŸ› οΈ
    Note: Fixed an issue in dynamic row templates where default values were not applied correctly.

  • tas-2673 Invalidate old access token on refresh request πŸ› οΈ
    Note: When an access token is refreshed, the previous token is now invalidated immediately. This reduces the risk of misuse if an old token is stolen.

  • tas-1726 Unable to finish task on process with many attachments πŸ› οΈ
    Note: Fixed an issue that prevented users from completing tasks in processes with a large number of attachments, more than 2000.

  • tas-2433 MS Graph email attachment processing fix πŸ› οΈ
    Note: Improved Microsoft Graph email attachment processing. Attachments that cannot be processed successfully β€” for example due to an excessively long filename or another file-related issue β€” are now logged instead of failing silently. This makes these cases visible and allows them to be handled in the workflow. More details are available in the MS Graph cron settings.

  • tas-2670 userSettings change validation in /user-parameters πŸ› οΈ
    Note: The /user-parameters endpoint now correctly validates changes in user settings and prevents invalid values from being saved.

✨ Added

  • tas-2438 Firebase runtime config validation ✨
    Note: Added validation of Firebase runtime configuration during application startup. The system now warns about missing or incorrect configuration earlier, instead of failing later at runtime.

πŸ“¦ [5.7.73] - 2026-03-30

πŸ› οΈ Fixed

  • tas-3014 Certificates parsing improvements πŸ› οΈ
    Note: Fixed parsing issues for certain certificate formats that were causing errors when loading certificates in the GUI. Also corrected the default certificate path in version 5.7 so it now matches the behavior of other versions.

  • tas-2943 Horizontal scroll bar πŸ› οΈ
    Note: Fixed an issue where horizontal scrolling in list views would unexpectedly snap back to the default position after the user stopped scrolling.

  • hotfix: Transaction deadlock in heartbeat πŸ› οΈ
    Note: Added a hotfix for a database transaction deadlock during the heartbeat process, which could cause service instability.

πŸ“¦ [5.7.72] - 2026-03-26

πŸ› οΈ Fixed

  • tas-2452 Chunking email sending in MailCustomviewsCron πŸ› οΈ
    Note: Mail servers have connection and concurrency limits. MailCustomviewsCron now sends emails in chunks to respect these limits, which helps prevent delivery failures for views with a large number of subscribers. Retry logic was also improved.

  • tas-2521 userDisplayName in notifications πŸ› οΈ
    Note: Fixed a bug where email notifications for tasks assigned through delegation were showing undefined instead of the actual name of the represented user.

  • tas-2844 Correct log message search behavior in Elastic πŸ› οΈ
    Note: Fixed log message filtering in the Elastic log viewer. Searching in the "Message" field now correctly returns results and allows filtering by message content or keywords.

  • XML import cron migration πŸ› οΈ
    Note: Added an untracked migration fix related to the XML import cron job.

  • tas-2906 Cron administration - add live running state and fix last run timestamp display πŸ› οΈ
    Note: Fixed misleading information in cron administration. The "Currently running" indicator now works correctly, the "Last run" timestamp is now accurate, and the redundant Restart button related to heartbeat was removed.

  • tas-3011 Archivation - legacy table support πŸ› οΈ
    Note: Extended the archivation process to include additional legacy instance tables such as instance_task_var_usage, instance_task_js_calculations, and instance_task_links. This improves database hygiene and performance, especially for clients with large datasets.

✨ Added

  • tas-2704 Document thumbnail ✨
    Note: Added thumbnail generation for documents stored in the system. The first phase supports image files. Support for PDF, DOCX, TXT, and XLSX is planned later. Thumbnails are stored as a secondary file next to the original with a _thumbnail suffix.

  • tas-2724 Usage statistics new metrics ✨
    Note: Extended usage statistics with new licence-related metrics, including the number of users with a paired device per month. This information is also included in licence notification emails and helps better distinguish between light and heavy users for licence model optimisation.

πŸ“¦ [5.7.71] - 2025-XX-XXas-2612 add curl api as deprecated to calculationValidation

  • tas-2750 deprecated notification log CurlApi.perform()
  • tas-2781 Complete mobile view left menu expansion
  • tas-2693 ignore certificate error

πŸ”§ Chore

  • XmlImport test refactoring
  • tas-2662 Upgrade Node.js to 20.19 and Alpine base image (LibreOffice compatibility)

Frantisek Brych Updated by Frantisek Brych

πŸš€ v5.17

v5.3

Contact

Syca (opens in a new tab)

Powered by HelpDocs (opens in a new tab)