Release Notes¶
Version 16.0.8 (πͺ¨ stable)¶
- Improved recalculation speed for cases that contain complex ADX documents.
- Improved the loading speed of the configuration rules page.
Version 16.0.7¶
- Fixed incorrect text handling in marketplace integrations when values contain quotation marks.
Version 16.0.6¶
- Fixed a bug where assigning a value to a field of a structure occurrence via a rule could raise an error when the structure had no occurrences yet.
Version 16.0.5¶
- [security] Updated multiple libraries
Version 16.0.4¶
- Fixed an issue where Field Values from non-Outcome Ontologies were not exported in the Case Overview Excel export.
- Fixed an issue where Case Instances could not be created via the API.
Version 16.0.3 ¶
- Fixed an issue with how ADX templates are cached. Under rare circumstances this could cause a invalid jinja fragment to be put live.
- Fixed a bug that causes a 500 server error when trying to download a single, unsigned document via the API under some circumstances.
- Fixed a bug that caused empty categories to be displayed in end-user wizards.
- Fixed an issue with indexing cases after a transition rule was executed.
- Updated Equation integration to support v1.7.2 specifications.
- [security] Updated multiple libraries
Version 16.0.2¶
- Added support for getJourneyResponse in LexisNexis RiskNarrative integration.
- Updated Equation integration to support v1.7 specifications.
- Added ability to automatically disable draft webhook subscriptions based on conditions.
Version 16.0.1 ¶
- Removed test database as part of health check for deployed environments.
- Added additional filtering capability within marketplace engine.
- Corrected default nginx webserver template to not include MCP paths for docker compose deployments.
- Fixed an issue where assigning instance roles would scroll to the instance in certain browsers.
Version 16.0.0¶
In this release we are introducing more powerful AI capabilities, Digital Signatures, Draft Cases for better configuration testing, a redesigned Document Editor, handlich of Environments (Prod, Staging and Demo) in the UI and many improvements to Insights.
New AI capabilities¶
-
AI Prompt Rule Action
A new βAI Promptβ rule action enables cases to execute AI prompts directly from rules.
- Input and output are defined in RuLa.
- Input is rendered and sent to Atfinity Intelligence.
- Output assignments map the AI response back into the case.
This enables automated classification, validation, and structured data transformation within case logic. * Configuration AI Chat
Configuration now includes an AI side panel to support writing RuLa and ADX.
- Context-aware assistance in code fields.
- AI understands how to write RuLa and ADX syntax and can provide examples and guidance.
eSignatures¶
- Introducing Digital Signatures baked into the user interface\ We added a flexible eSignatures framework that is embedded directly in the document views of cases.
- New "Send for eSigning" buttons appear in the Documents view once eSignatures are enables
- Multiple signatories per document are supported.
- Multiple documents per signing request are supported.
- Users can send full booklets or individual documents can be sent.
- Each document receives its own individual digital signature, enabling separate archiving of legally valid signed documents.
- You can monitor, cancel, and retrieve signing requests once you have send document to be signed.
- Certifacation\ The first provider in this new framework is Certifaction, a fellow provider from Zurich, Switzerland
- Supports SES, AES, and QES signatures.
- Support for EU (eIDAS) and Swiss Standards (ZertES) and more
Marketplace
A new marketplace allows you to view and install integrations form a huge repository of already created ones
Wizards for the whole case
In addition to creation and lifecycle (end user) wizards, we introduce a third category: Whole case lifecycle wizards. While lifecycle wizards operate on a fixed number of instances (for example to provide data for a certain person), whole case lifecycle wizards act on the whole case and can also create new instances.
Instance History
On instances, we also display now the history of why this instance has these values. For example:
- See that case 736 changed the domicile to "France"
- See that an API request changed the risk profile to "high"
Configuration¶
- Draft Cases\ allow testing the configuration before it is live. Draft cases are fully separated from live cases and make it even faster to develop configurations.
- Draft cases run using the draft configuration.
- No modification of the live world will happen, so you can just test away with worry.
- Only visible to configuration editors/testers
- Cases can be duplicated, so you can create a few case templates you quickly copy and test with for your configuration needs
- Transition Rules\ can be used to transition a case to another state automatically
- Transition along a transition in a workflow
- Force the case to go to a certain state
- Redesigned Document Editor\ The document editor has been redesigned from the ground up
- Preview ADX document directly in the editor without putting live
- Move faster through complex PDF documents with a tidied up PDF Editor
- A much better look and feel overall
- Environments\ Based on your Server environment (Production, Staging, Demo) Atfinity will display different options.
- On production servers, you mostly want to import configuration, not change it. The UI is now streamlined for tis
- Release Notes between the environments make it easier to know that you are importing the right configuration
- Configuration Import has been redesigned to give you in general a better overview of what you are importing
- New RuLa functions
reduce()β Folds a list into a single value through an accumulator, e.g.list.reduce(0, (acc, x) => acc + x). Unlikemap(), each step can build on the previous result, enabling running totals and stateful checksums.IBAN_VALIDβ Returnstrueif a string is a structurally valid IBAN (ISO 13616 checksum),falseotherwise.PHONE_VALIDβ Returnstrueif a string is a valid phone number. Accepts international format (+41β¦,0041β¦) or local format with an optional alpha-2 country code. Returnsunknownfor unrecognised input.TIN_VALIDβ Returnstrueif a string is a valid Tax Identification Number for a supported country (given as an alpha-2 code),falseif invalid,unknownif the country is not supported. Covers ~50 countries via python-stdnum.LEI_VALIDβ Returnstrueif a string is a valid Legal Entity Identifier (ISO 17442).BIC_VALIDβ Returnstrueif a string is a valid BIC / SWIFT business identifier code.ISIN_VALIDβ Returnstrueif a string is a valid International Securities Identification Number (ISO 6166).VAT_VALIDβ Returnstrueif a string is a valid VAT identification number (given with its country prefix).PICK_OR_DEFAULTβ Returns a matching value from an allowed list (case-insensitive), or a default if no match is found.SPLITβ Splits a string by a separator into a list. Supports an optional maximum number of splits.STARTS_WITHβ Returnstrueif a string starts with the given prefix.ENDS_WITHβ Returnstrueif a string ends with the given suffix.APPENDβ Returns a new list with a single element appended to the end. UnlikeCONCAT, this adds one element rather than merging two lists. Does not mutate the original list.INDEX_OFβ Returns the index of the first occurrence of a value in a list or string. Returns-1if not found.FORMAT_NUMBERβ Formats a number as a string with configurable decimal places and separators, e.g. for locale-aware display of monetary values.ABSβ Returns the absolute value of a number.CLAMPβ Clamps a numeric value between a minimum and maximum.SIGNβ Returns-1,0, or1depending on the sign of a number.PAD_LEFTβ Pads a string on the left to a given width with an optional fill character.PAD_RIGHTβ Pads a string on the right to a given width with an optional fill character.QUARTER_OFβ Returns the quarter (1β4) of the year for a given date.IS_WEEKDAYβ Returnstrueif the date falls on a Monday through Friday.IS_WEEKENDβ Returnstrueif the date falls on a Saturday or Sunday.COUNTRY_TO_ALPHA2β Converts an ISO 3166-1 alpha-3 country code to the corresponding alpha-2 code. Returnsunknownfor unrecognised input.COUNTRY_TO_ALPHA3β Converts an ISO 3166-1 alpha-2 country code to the corresponding alpha-3 code. Returnsunknownfor unrecognised input.COUNTRY_TO_PHONE_PREFIXβ Returns the international calling code for a given country code as a string (e.g.'+41'). Accepts both alpha-2 and alpha-3 codes. Returnsunknownfor unrecognised input.CHARSβ Splits a string into a list of its individual characters.CHAR_CODEβ Returns the Unicode code point of a string's first character.RANGEβ Produces a list of consecutive integers, for iterating over indices withmap().TO_INTβ Converts a value to an integer (unknownif it cannot be converted).TO_DECIMALβ Converts a value to a decimal number (unknownif it cannot be converted).TO_STRINGβ Converts a value to its string representation.- Improved dictionary support
x['a'] := 3now supports assigning to existing fields and adding new properties{}creates an empty dictionary
Insights Improvements¶
Insights have been improved in many small and large ways:
- Widget resizing\ Widgets now come in multiple sizes and you can make them smaller and larger
- Full List Page\ Widgets that display conclusion like "30 cases with customers in france" can now have an automatically generated full list that would display all the 30 cases mentioned
- Stacked Bar Charts\ Data that has naturally three dimensions can now be displayed in stacked bar charts. For example, display how the clients per risk (low, medium, high) have developed in the last 8 quarters in such a stacked bar chart.
- Calendar-based Times\ In addition to relative times (last 30 days) you can now use calendar-based times (last month, this year, ...)
- Future-based Filtering\ For lists that have data of upcoming events (next client review) you can also filter data in the future (next year, next quarter)