Configuration export and import
Export case data to avaloq
preferred_language_key as option when creating a case via API
Fixed a bug marking some conditions with CASE wrongly as syntactically wrong
Made the error message more clear when the email service is unreachable
Added a feature to test the provided email configuration
Increased security further after latest penetration test results
Added printing the description in the table of contents of a booklet
Reworked the permissions associated with seeing and changing owners. The newly available permissions are:
See Case Roles: Permission to see who is the owner and initiator of a case
Set Case Owner to Group User: Permission to set the owner of a case to users of the current users group
Set Case Owner to Any User: Permission to set the owner of a case to any users
See Instance Roles: Permission to see who is the owner and initiator of an instance
Set Instance Owner to Group User: Permission to set the owner of an instance to users of the current users group
Set Instance Owner to Any User: Permission to set the owner of an instance to any users
Added displaying the outcome ontology in the configuration roles overview. Also added a warning if the outcome ontology has not been set directly there.
Added showing when a case was last modified in the attached cases tab of an instance.
Fixed a bug displaying a link to a role as a link to an ontology in the changed view.
Fixes a bug preventing information references to super ontologies from being resolved correctly sometimes.
Linking Instances from external data sources: atfinity now makes it possible to connect it directly to external Person, Entity, Portfolio, Car or any other instance data sources and copy values from such a source. This can be very handy if you already have an existing CRM system and would like to sometimes let users copy data from these systems.
When creating new users, it is now optional to provide user initials. If they are not provided, the first letter of the first name and the first letter of the last name form the initials.
Added a document template option to choose the font size of the human-readable code field
Made importing .zip files nicer:
Adapted the ./atfinity.sh script to copy the given .zip file the import folder for increased convenience
While importing a progress report is constantly given.
Fixed a bug sometimes preventing "Ensure Instances" rule actions from creating instances when they are first triggered.
Every time you put a batch of changes live we now count up the configuration version number. This number is displayed below the software version in the user settings popup
Added a management command
display_version to display the current version of the software and configuration
Made the error message when a part of the infrastructure is down more explicit
Fixed a bug preventing the
zip_import command from importing all files sometimes
Added translation support in
Fixed a bug preventing "Merge on Creation" to be respected always
Separated the draft pipeline and general celery workers to make sure you can always quickly put live or revert changes
Added an "Select All" button to the document detail boxes tab
Fixed a bug preventing correct printing of checkboxes on documents
Fixed a bug that prevented changing QR code text font size
Added document box reference to the list of un-placed boxes
Removed format restrictions for keys of User Roles and Groups
Fixed a bug that prevented using only CASE values in Api Rule condition
Added inline editing of document boxes in Boxes tab
Extended logging for requests that use proxies
Fixed a bug preventing display of pages for documents with more than 9 pages.
Fixed a bug preventing usage of specified template for Table of Contents.
Fixed a bug that was taking into account user status in atfinity even for users managed by LDAP.
Fixed a bug that was preventing deleting "SMS from number" field.
Document Templates now also allow to configure the position of both the QR code and the human readable code.
Categories allow you to provide an explanation that will be displayed below the category name in the case manager
Added an "Unselect All" button to the document detail boxes tab
Fixed a bug allowing invalid relative dates (e.g. not before or not after) to be able to be saves as information options
We now display an error if you provide a non-existent CURL_CA_BUNDLE file to the api.
Changed the way case objects are updated to prevent potential deadlocks
Fixed a bug preventing single pdfs to be downloaded sometimes
When opening the content of a collapsible box (e.g. a section in the sections list) the now visible content it scrolled into view
Made the RuLa "+" operator more versatile: Now, if either the first or the second argument is a string, we will concatenate the strings instead of calculating the sum.
Fixed a bug that caused displaying process buttons to users without sufficient access rights
Opening a deep link (e.g. to a case) when not logged in, will now redirect to the deep link after login
Added autocompletion to RuLa Editors
Fixed a bug preventing text fields from being printed correctly
Improved the error message when trying to view an invalid instance
Fixed a bug preventing a freshly uploaded document pdf from displaying all pages
Made case error messages more specific when document generation fails
Massively improved document editor: Based on usage patterns of our document editor, we reworked the interface and made common actions easier. In addition, we added ways to specify additional graphical elements in documents, such as boxes, lines and additional logic such as combined and calculated fields.
Color tags everywhere: For you to better organise your configuration, we added color tags to all configuration objects.
Task deadlines: Added the ability to add deadlines to tasks. When a deadline is approaching, the assigned user is reminded once per day about the task.
Decimal- and unitfields display decimal point and thousands separator while editing the number.
Case Deletion: Added the ability for users with the permission "Delete Cases" or admins to delete cases in the user interface.
Place custom SVG on documents: If you need to add more graphical elements (e.g. a logo, a white box or a dummy signature) to a document, you can do that now by placing a custom SVG on a document page in the configuration.
Fixed a bug preventing an instance from being deleted when its last case is deleted.
Fixed a bug preventing processes from being copied correctly.
Fixed an issue preventing comments from being displayed sometimes
Improved the way errors for field updates via API are returned. If multiple fields are updated, the given key of the field is now mentioned in the error.
Added option to translate taxonomy values from rule engine calculations when creating documents. To translate a value, refer to the information with a leading
p.$country will translate the name of the country into the document language when creating the pdf.
Fixed a bug preventing choosing values with enter in the configuration area
Fixed a bug preventing case lists being sorted by id
Added two new quickfilters to the case list: Cases created in the last 7 days and Cases created in the last 24 hours.
Changed "Groups" and "Roles" in User Detail to a list with checkboxes, making it much quicker to change all groups / roles.
Fixed a bug preventing the rule engine from removing no longer necessary instances
Made it possible to remove owners from certain ontologies
Lifecycle cases can now also change the owner of an instance
Added "Test LDAP Connection"
Pulling data from your APIs: Pull data from your external APIs into atfinity cases. Allows defining input and output fields for each request and to configure rules to make requests in cases.
Active Directory / LDAP integration (Available on Request): connect your existing users to atfinity using any LDAP server. You can finely configure how access rights should be copied from information in your directory.
Notification for Approval/Rejection of a Case: specify email addresses which will be notified about final case transition, e.g. approval or rejection of any case.
More Detailed Case Log: Case log now shows both old and new value of the case field that is changed.
We added CASE.owner and CASE.approver to rule processing and document generation.
Lowered the font size in table of contents and smart documents
Fixed a bug causing rule engine created comments assigned to users from being deleted
Fixed a bug causing optional fields being counted in the filled / total fields display in case -> documents
We now allow you to configure the rule engine timeout and maximum iterations via the environment variables
If the rule evaluation fails, an error message is shown but the case data is still returned. This allows users to potentially correct the situation preventing the rule engine from evaluating your rules correctly.
Bugfix: Removed an incorrectly logged error when creation rule counts evaluate to UNKNOWN
atfinity.sh management script for
Added an overview for all references to information for faster debugging
Reordering elements has been improved: You can now move an element easily between pages
Added Swisscom and Twilio SMS gateway support
Helvetica is added as a new font option. We use Nimbus Sans L as the actual font file.
Checkboxes now appear as "x" on printed documents
Bugfix: Fixed a bug preventing celery tasks from returning errors to the frontend (e.g. when downloading a booklet)
Bugfix: Fixed a bug preventing combined error messages (e.g. when updating multiple case fields) from being reported correctly
Added information about processes in case responses (e.g. via API) and webhook triggers
Bugfix: Using invalid placeholders in email templates will not prevent email sending anymore
Bugfix: Uploaded Document History will now also show uploaded proofs.
Rule Language Additions:
is all in a declaration to match multiple instances, e.g. match all people in a case like
p1, p2, ...ps is all Person.
not in a declaration to make sure a match does not have a certain role, e.g. match a person that is not the account holder with
p is Person, not AccountHolder.
Declarations can contain
where as a way to already specify further conditions on the instance in the matching phase, e.g.
p is Person where p.domicile = de will only match people that have their domicile in Germany.
Faster Instance Views: Both the list and the detail views of ontology instances received performance improvements
Customisable Printed QR Code Size
Smaller Font for Human-Readable Codes on Documents
Four Digit User Initials
Admin Customisable SMS Service: moved sms service specification into Admin > Integrations
Link Expiration: added the possibility to configure when after how many hours digital form tool links expire (default: 72 hours)
Cleanup Old Tasks: Added a management command
removeoldtasks to delete celery tasks and their attachments older than a week.
Knowing why a question is asked: If you hover over the name of an information in a case, you can see which rules required this information. This can be very helpful for debugging configurations.
Testing WorldCheck Connections: We added a button to test the WorldCheck connection parameters directly in the settings.
Disable username/password auth for sending emails: Some smtp servers in local networks don't need username/password authentication. You can now disabling sending username/password to such servers.
Delete Case Errors: The list of reported case evaluation errors can now be purged.
More quick filters: We added many more quick filters in the configuration area, e.g. you can now filter information by type.
Proxy support and debugging information
Rule language additions:
INSTANCES_EXIST checks if the specified instances exist in a case.
We heavily simplified and extended our deployment guides. If you installed atfinity on-site adaptions may be necessary. It is recommended to check the latest guide for any differences to your current setup.
API for Integration: Integrating atfinity with other systems is now easier with our case management API. You can create cases, change fields, upload and download documents, and much more. Consult our API Documentation for details.
HTML Emails: Emails from atfinity can now be styled to adhere to your corporate identity
IDnow and Intrum Integration: Verify the identity of a person and digitally sign documents using the identity within atfinity using IDnow or Intrum.
World-Check Integration: Check if a person has any hits on Refinitiv World-Check, one of the standard tools for Know-Your-Client (KYC) checks of any industry. atfinity uses the Zero-Footprint API, meaning even industries with the highest standards in privacy and security can use this integration.
Case activity and error log: Any activity and possible errors on a case can now be viewed directly in the context of the case.
Multiple actions per rule: We enhanced our rule interface by giving you the option to add as many actions as you like. For example, you can both ensure a person exists and assign values with the same rule.
PDF/A Support: Generated documents now adhere to the strict PDF/A-2b standard.
Comments. You can now have complete conversations about a case directly on the case by adding comments. Comments can also be assigned, making them a replacement for tasks.
Case Errors: If rule processing fails for any reason in a case, you will see the produced error message in the case errors log in the configuration area.
New Rule language features
Role Choices let you specify if a match should contain not a specific role, but contain one of the given role choices. E.g.
p is Person, Husband or Wife or LifePartner
New *_OF_ANY operators: In cases where you don't want to have
MIN mark information as necessary, you can use their new flexible counterparts
SNEAKY: Expressions within sneaky will not mark information as necessary. This can be very handy for complex KYC calculations. This is the more general version of an *_OF_ANY operator.
New SUM_PRODUCT operator: Like its excel counterpart,
SUM_PRODUCT takes two lists: A list of values and a list of coefficients. It adds the values after they have been multiplied by the coefficient with the same index.
IF is a new expression operator. If the if-condition is met, the then expression, otherwise the else expression.
SWITCH is similar to case, but is better suited for simple cases.
get_attr allows you to get an attribute specified by an expression (e.g
CONCAT('first', 'name')) from an instance. If that attribute does not exist, a default value can be returnes
Rule comments: Leave comments in rules for other rule designers or your convenience.
MAP lets you transform a list of values into another list. This is very handy when processing user given lists like
We introduced COUNT to return the number of elements in a list, so e.g.
COUNT(("a", "b")) returns 2. As an example, you can use this to check if a person has more than one nationality, by saying
COUNT(p.nationalities) > 1.
Ontology and Roles directly in rules: These two are treated like any other enum or multi_enum information, so just type e.g.
p.ontology = 'Person' or
p.role contains 'Husband'
We introduced the instances method, which returns a list of case instances that match certain criteria. You can use
instances(Person, Husband) , for example, to get all people that are husbands. Usually, this should be combined with
COUNT(instances(Person, Husband)) returns the number of people that are husbands.
We also introduce get_properties_from_instances, to be used in combination with instances. So e.g.
get_properties(instances(Person, Husband), first_name) gives you all the first_names of all husbands.
Outcome ontologies. Each process now has a defined outcome ontology. This means processes can result in the creation of any ontology you whish: a client contract as before, an expense request, a prospect for your CRM, ...
Change the colors on the login screen, the app background color, the menu color and the background colors for missing fields.
Change the fonts used when generating booklets and the background for the table of contents.
Adapt the filenames for exported lists and booklets.
Strong Performance. We have increased performance of almost all components significantly.
Configuration Tests. Make sure your configuration behaves as expected by providing configuration unit tests. These tests can be executed before each put live, making sure you don't accidentally break your use case.
Modern User Interface. We overhauled the interface of the case manager with modern, easy to use and easy to read input components.
Subdomain tenants: When using atfinity on a domain wildcard (e.g. *.atfinity.app) we load configurations for the entered subdomain, e.g. atfinity-bank.atfinity.app can now load the bank's logo by default.
PLA-4401: Hide unnecessary fields. We added a setting to hide unnecessary fields instead of displaying them greyed out.
PLA-4402: Localized date formats. We added document date formats that print the month in the document language, e.g. August.
User Date Format: We made the date format a separate setting from the language. So you can use atfinity in English, but use a German date format.
PLA-4396: The IDs of the case and the outcome ontology are prominently shown in the case manager.
PLA-4395: The ID of information will now be shown as a tooltip when hovering over the field name.
PLA-4406: Per information certain taxonomy options can be hidden or disabled.
PLA-4407: Per information the column position can be fixed to either left or right.
PLA-4407: Information can be configured to always span two columns.
PLA-4431: Text information can have an approximate maximum number of lines configured.
Fonts used in generated PDFs, like the booklet, are now configurable.
Text-Fields in the Case Manager now have a configurable default length.
Where possible, your browser will now spellcheck the content of longer text fields.
The case number of the last case modification can now be printed on documents.
PLA-4350: We fixed a bug preventing enum values to be correctly sorted by the current locale.
Important: The way QR-Codes are generated has been changed. This means booklets downloaded with atfinity 7 can be uploaded, but not matched with atfinity 8.
Important: We removed the automatic creation of "Creation Process Rules": Before, you provided a document with condition ontologies and all ontologies. If the condition was true, the "missing" ontologies were created. So if you had an individual account that needed a person as the account holder, a person with that role was automatically created. Now, if you would want the same behavior, you have to manually create a "Creation Process Rule". To do this, follow these steps:
Before you migrate, note down in which documents such automatic rules were created. This was the case everywhere condition ontologies and all ontologies were not equal.
Migrate to the latest version.
For every difference, create a process rule of type "creation". Put the original document condition into the condition of that process rule. As the creation, add the difference between condition ontologies and all ontologies. Example: The condition was "C is Contract" and all ontologies where "C is Contract; P is Person". The creation rule should have a condition "C is Contract" and a creation rule "P is Person".
All process rule types now create missing information. This means that issues and warning rules will now also create missing information. In most cases, this should feel very natural. If a person below 18 years is not allowed, the case manager should ask for the birth date to check this. However, if you relied on no missing information being created, you should adapt or delete these issue and warning rules.
Case roles (e.g. owner and initiator) can now only be seen if a user has the access right "See Case Roles". By default, all users who could edit owners or reviewers have been given this right. Please check your roles configuration and adapt this, if necessary.
The option "create custom task" was removed from case transitions. Since Issues can be assigned to people, this takes over the role of a task. So simply convert the custom task to an issue.