New releases > ELMA365 SaaS / 2023.5


Business processes


1. TEAM-7600 In business process activities Sign, Create App Item and Edit App Item task names can now be created from a template the same way as in regular process Tasks.


2. TEAM-17776 A new setting was added to the Task activity for hiding or showing transition buttons and the Start Task button. This option can be applied to tasks with multiple executors when the First response option is activated.




1. TEAM-15962 A field with information about a chain of certificates was added to the signature details


The getDetails() method allows extracting the entire certificate chain from the signature. You can now obtain a signer's certificate with the G and SN fields.


2. TEAM-8321 We added new methods that allow doing the following:

  • Change the context of a business process;
  • Change task context;
  • Add/edit a task deadline;
  • Close a task.


Process instance object

export interface ProcessInstanceItem

* Changes the process instance context.
* If the process instance is completed or an active block is being executed, the method is interrupted with an exception.
* If executed successfully, the context of the process is changed, and the method performs without exceptions.
* In this example, there the process context contains a contract serial number received from an external source, for example, via a request.
* The method allows adding the received number to the context of another process.
* ```typescript
* async function updateContext(): Promise<void> {
*     try {
*      // Get contract number from the context
*      const contractNumber =
*      // Write the `newprocess` process to the `processTemplate` variable
*      const processTemplate = Global.processes.incomecontract;
*      // Take the process instance ID from the process context
*      const instanceUUID =;
*      // Find the process instance
*      const proccess = await processTemplate._searchInstances().where(x => x.__id.eq(instanceUUID)).first();
*      // Get the comment from the context
*      const comment =;
*      // New value for the contract serial number
*      const context = {contract: contractNumber};
*      // Update context
*      await process.updateContext(context, comment);
*     } catch (e) {
*      // The process has been completed, exception can be handled
*     }
* }
* ```
* @param context New process instance context.
* @param comment Reason for changing the instance context.
* Required parameter. It is forbidden to pass an empty string.
updateContext (context: Context, comment: string): Promise<void>;


Process task object

export interface ProcessTaskItem<Context extends ProcessContext = ProcessContext> extends BaseItem<ProcessTaskData>, ItemRef<ProcessTaskItem<Context>>, ProcessTaskItemRef<Context>


* Change task deadline.
* Set new deadline for the task:
* ```typescript
* try {
*   // Get a comment from the process context
*   const comment =;
*   // Get task ID from the process context
*   const taskUUID =;
*   let task = await System.processes._searchTasks().where(x => x.__id.eq(taskUUID)).first();
*   // If the task is not found, display an error
*   if (!task) {
*     throw new Error('Task not found');
*   }
*   // Get current date
*   let newDueDate = new Datetime();
*   // Add one day
*   newDueDate = newDueDate.addDate(0, 0, 1);
*   await task.changeDueDate(newDueDate, comment);
* } catch (error) {
*   // The process is completed, exception can be handled
* }
* ```
* @param dueDate New task deadline.
* @param comment Comment.
changeDueDate (dueDate: TDatetime, comment?: string): Promise<void>;
* Get possible transitions from the task.
* Find and complete the task:
* ```typescript
* try {
*   // Get task object
*   let task = await System.processes._searchTasks().where(x => x.__id.eq(taskUUID)).first();
*   // If the task object is not found, complete the script execution
*   if (!task) {
*   return;
*   }
*   // Get transition for the task
*   const exits = await task.getExits();
*   // Complete the task
*   // Pass transition ID and form data
*   await task.submitTask(exits[0].id, {comment: 'Task completed'});
* } catch (e) {
*   // The process is completed, exception can be handled
* }
* ```
getExits (): Promise<TaskItemExit[]>;
* Task completion.
* Find and complete the task:
* ```typescript
* try {
*   // Get task object
*   let task = await System.processes._searchTasks().where(x => x.__id.eq(taskUUID)).first();
*   // Get transition for the task
*   const exits = await task.getExits();
*   // Pass transition ID and form data
*   await task.submitTask(exits[0].id, {comment: 'Task completed'});
* } catch (e) {
*   // The process is completed, exception can be handled
* }
* ```
submitTask (exitID: string, data?: Context): Promise<void>;


3. TEAM-18280 We created an API method that allows mapping internal phone numbers and users. To learn more see


4. TEAM-18472 The fetch() method in the body parameter can now take the ArrayBuffer data type. This is helpful for sending binary data or files to external systems.


5. TEAM-18928 We added new API methods for getting information about groups and roles in workspaces:


  • /pub/v1/scheme/namespaces/{namespace}/groups
  • /pub/v1/scheme/namespaces/{namespace}/groups/{code}
  • /pub/v1/scheme/groups/{id}

To learn more, see




1. TEAM-18478 Now external users can register on the portal with only their phone number without having to use the email address.


2. TEAM-18724 Since password recovery works with an email, in this release, we have added the option for external users to recover the password via sms, if they are only using phone number to register.


Document management


1. TEAM-16612 When approving or reviewing an app item, it is now possible to attach a file. The file will be displayed in the approval sheet.

2. TEAM-17399 We improved contracts:

  • Added Contract Settings to the menu. The available options are similar to the ones in app settings apart from bulk actions and naming app items, since contracts do not have their own items.
  • We added the Contract Access setting that works similar to the App Access setting.




1. TEAM-7918 and TEAM-18315 If you have a paid ELMA365 Service solution, you can restrict external users from sending messages to live chats from such channels such as messengers or email.

When a user with such restrictions sends a message, a new session is created and is marked as Spam. Spam sessions are now shown in the queue, are not routed or included in reports. Business processes for these sessions are not launched.


2. TEAM-15819 Files in live chats can be previewed.


3. TEAM-17108 It is now possible to work with live chat operator statuses. The status can be set manually in Profile settings. When an operator is offline, he or she cannot chat in a session or otherwise work in it.




TEAM-11990 We added a new app type: Report. It is an additional tool for monitoring that works with data from apps of different workspaces in a single interface. The report data can be displayed on a separate page using the Chart widget.




1. TEAM-18464 We improved duplicate detection interface and optimized working with lists of duplicates that are larger than 10 items.


2. TEAM-18662 We added the following to the Allocation of Leads/Deals widget:

  • Total column
  • Show total (Yes/No) column that either displays or hides the Total column.

3. TEAM-19006 In task search, CRM tasks can now be selected.


4. TEAM-19044 Column size in the Subscribers app can now be changed.


5. TEAM-19051 In Marketing > Subscribers, table columns can now be set up. When clicking on Edit, a pop-up appears with the Show properties field where you can select the columns to be displayed.


6. TEAM-19056 We added a search field to the Subscribers page. It makes navigation in the app easier and shows the number of subscribers in the database that can be included in a campaign.




1. TEAM-15658 We improved the design of the widget with validation errors.


2. TEAM-17171 In interface designer, you can now manage the visibility of the widget with validation errors on forms.




TEAM-12306 We implemented project types.

Each type has its own unique features:


  • Life cycle including project stages, project pipeline (using business processes between project stages).
  • Template.
  • Object model for adding required properties for each project type.
  • App pages. Each project type has unique view, edit, and create forms.
  • All the new project types are shown in the Projects workspace under the Project types separator.


Advanced Security Pack


Advanced Security Pack is a package for ensuring even more security on the platform for the most advanced security requirements.


The package provides means to reduce information security risks and ensure data protection.


It has the following security features:


  • Control and deactivation of parallel sessions when they exceed a specified limit;
  • Session inactivity timeout that will require the user to login again after being inactive for a specified period of time;
  • Management of access to files in the file storage to prevent unauthorized access.

This is not the entire list of features. In the future, we are planning to implement integrations with anti-virus and DLP software, etc.


Advanced Security Pack is available for ELMA365 starting from version 2023.5 for On-Premises and SaaS Enterprise after purchasing the license for the solution.


For SaaS Standard the package is by default activated as a limited version due to architectural characteristics.


The settings included in the solution are implemented via the standard ELMA365 settings interface (Administration).




1. TEAM-10791 In Administration > Active Users user sessions can now be interrupted.

To do that, select the sessions and click Interrupt in the toolbar.

The selected sessions will be interrupted immediately and the users will be taken to the login page.


2. TEAM-15457 A new setting was added to Security Settings > User Sessions: Limit parallel sessions.

You can specify on how many devices a user can stay simultaneously logged in. Here is an example of how it works:


начало примера

Allowed number of parallel sessions: 2

  • The user logs into the system in the Chrome browser  — success.
  • The user logs into the system in the mobile app — success.
  • The user logs into the system in the Firefox browser — after credentials are checked, an error message appears saying that the user has exceeded the number of allowed parallel sessions. This error appears only if the login and password are correct (i.e. after user authentication).

конец примера

This is applied to all the sign-in methods (login/password, AD/LDAP, SAML, OAuth2).

Included in the Advanced Security Pack.


Bugs fixed


1. TEAM-8040 The reason an app item was deleted is now shown in the item's activity stream. The message has the "Item deleted" header and the <Comment> body.


2. TEAM-8671 We fixed how a default transition from a gateway works with an undefined Boolean value. With variables of the bool type, during comparison, the third "empty" state is also taken into account. A condition is considered met if a) both compared values are empty, or b) both values are filled in and are equal.


3. TEAM-10607 The serial number of a table is now defined correctly in a cycle.


4. TEAM-11955 We fixed the error that appeared when publishing a subscription to an event in a module.


5. TEAM-12914 During load testing, the timing no longer grows when the contractor queue is built in rmq.


6. TEAM-13297 We corrected the message in the new task email notification.


7. TEAM-13625 The Get Print Form block no longer changes the file version, and allows signing the document correctly.


8. TEAM-14106 Unauthorized users can no longer download a file.


9. TEAM-14494 We corrected the typos in the portal deactivation message.


10. TEAM-15533 We fixed the item=undefined field when filtering status history.


11. TEAM-16070 App item search by the Number field now works correctly.


12. TEAM-16274 We fixed the markup in the user group list.


13. TEAM-16558 Last closed sessions are now displayed.


14. TEAM-16734 A process can no longer be opened in two tabs simultaneously for editing. A notification appears that the process is already being edited by another user.


15. TEAM-16926 We removed the shaking in forms that appeared with a certain screen resolution.


16. TEAM-16953 When updating a solution, the start app page now opens correctly, taking into account the forms of the objects that were missing during import.


17. TEAM-17064 In Administration, we replaced "project schedule" with "project plan".


18. TEAM-17144 We fixed the markup in Administration > Plan approval.


19. TEAM-17341 We fixed the problem with saving the type of the Account field.


20. TEAM-17458 Sorting in the Files workspace was fixed. Files and folders are now sorted by name and last edit date, and files are also sorted by size.


21. TEAM-17478 Required fields in a task can no longer be ignored.


22. TEAM-17507 It is no longer possible to edit or view settings of a locked app.


23. TEAM-17548 We fixed the problem with displaying icons of closed sessions.


24. TEAM-17615 We fixed the problem with saving the type of a Category field in an app item after the fields was changed by a script.


25. TEAM-17679 Project approval now works correctly.


26. TEAM-17969 We fixed the escaping of symbols in the email filter. Now, messages containing "%" or "_" are not ignored.


27. TEAM-17977 The workspace code can now be changed during import.


28. TEAM-18063 We fixed the name of the task for checking the completion of another task. We added a colon between the word Control and the name of the original task.


29. TEAM-18103 A project can now be created with a script. We provided a client with a script to fix the data base and added a migration to fix this potential problem in other instances.


30. TEAM-18109 We made the following changes in the deduplicator: added the asterisk for required fields, added the required field property for fields marked as required on the standard edit form, added the possibility to disable the Merge button until all the required fields are filled out.


31. TEAM-18221 We fixed the problem with the page with document templates loading slowly.


32. TEAM-18227 After updating a client via API, the session now shows the updated information.


33. TEAM-18269 We fixed the problem with the deduplicator when adding a possible duplicate. Now, when you add app items to the list of possible duplicates manually, a filter triggers that hides the items already in the list and the current item that is checked for duplicates.


34. TEAM-18297 We fixed the problem with restoring an app that returned 500 internal error.


35. TEAM-18316 We fixed the problem with the Live Chats workspace being visible to everyone regardless of the operator or supervisor access permissions.


36. TEAM-18491 For inactive substitutions, the delete() method is now available for deleting the substitution. When the method is called for an active substitution, an error is returned.


37. TEAM-18540 We fixed the display of months in the Russian locale.


38. TEAM-18551 We fixed the name of the new option in the Register Document activity.


39. TEAM-18585 We fixed the process of generating a file from a template.


40. TEAM-18625 We fixed the problem with the templater crashing when opening a table on aspose.


41. TEAM-18686 We fixed the problem with an active external user not being able to accept an invite to another portal.


42. TEAM-18688 We fixed the error in the Input mask property in app attributes.


43. TEAM-18781 Outgoing phone calls can now be made successfully.


44. TEAM-18818 We fixed incorrect validation of fields added via the Code widget to a form.


45. TEAM-18849 When an app item or a task are deleted, they are now also removed from the kanban board.


46. TEAM-18868 API methods with nested paths (paths containing "/") now work correctly when being called from scripts in the call() method in business process activities.


47. TEAM-18883 We fixed the button on the page for moving a file to another folder or copying the file from the activity stream.


48. TEAM-18888 We removed incorrect styles from default forms when enabling project plan approval.


49. TEAM-18897 [aspose-actions] Fixed the incorrect dates.


50. TEAM-19002 We fixed the problem that caused an error to appear when opening Document app items.


51. TEAM-19067 We fixed the position of the Service Monitor button.


52. TEAM-19112 Registration numbers are no longer unintentionally changed to a higher number.


53. TEAM-19426 We fixed the incorrect operation of the condition for Yes/No variable validation in app item name templates.


54. TEAM-19502 We fixed the error on the pages step in configuration update.

Found a typo? Highlight the text, press ctrl + enter and notify us