New releases > ELMA365 SaaS / 2023.2




1. TEAM-9930 For development of solutions and modules with low cohesion, we added search of an arbitrary app by parameters namespace, code, id.


Use cases:


Get link of the any type:

// Get link to arbitrary app
const refItem = new RefItem('my_namespace', 'my_code', id);
// Get item with type any
const item = await refItem.fetch();

Get reference. For that, after RefItem specify the type in angle brackets:

// Get reference to an app
const refUserItem = new RefItem<MyApp>('my_namespace', 'my_app', id);
// Get referenced item
const user = await refUserItem.fetch();

Error handling in case the object is not found:

onst refItem = new RefItem('namespace', 'code', id);
try {
  appItem = await reItem.fetch();
} catch (err) {
  // Processing error of getting app item.


2. TEAM-4027 When creating dynamic forms in solutions, users sometimes need to limit the introduction of dates, for example, to ensure that the completion date of an order is later in time than the current date. Now, in scripts you can limit the selection of date of the Date/Time type properties.


Syntax for setting filters for the Date/Type fields:

// The value must be higher that the contstant(in this case, higher than the current date) => Datetime()));
// The value is admissible when between two dates, g) => g.and( Datetime('2023-03-01')), Datetime('2023-04-01'))
// You can also set more complex conditions, g) => g.and( Datetime('2023-03-15')),

  • Available constant comparison operations: “eq”, “neq”, “gt”, “gte”, “lt”, “lte”.
  • Available basic grouping clauses: “and”, “or”.
  • Only dates between 1900 and 2100 are filtered on enter.
  • Filter is not applied in the time selection field.


3. TEAM-16441 You can now use a script to find substitutions with a certain status (ActiveSchduledArchive).

We added the isInterrupted: boolean flag for substitutions. When case a substitution is interrupted: isInterrupted: true.

All the substitutions existing before the release were given isInterrupted: false for backward compatibility.


TO-DO blocks


1. TEAM-15330 Previously, some people were worried that any employee with access to the configuration could delete a TO-DO element and there would be no log to track these changes.

Now all the previously created and deleted TO-DO elements remain in the list for 30 more days and are marked as deleted. This way you can track the progress as the tasks are completed.


2. TEAM-15331 Links  in descriptions of TO-DO blocks in processes and widgets are now active.




1. TEAM-7624 We added TSSDK methods for search and interruption of a timer in a process from a script used in the same or different process.

You can get all the active timers: getTimers (): Promise<ProcessTimer>[]>;

Or one specific timer that belongs to a specific Timer element: getTimer (timerOwnerId: string): Promise <ProcessTimer> | undefined>; number

The timer can be interrupted: interrupt (): Promise<void>. This action is similar to the Execute action for timers in process monitor: the timer stops, and the process goes to the next activity in the sequence flow.


2. TEAM-16652 We added descriptions for the TTable type methods in Help.


3. TEAM-15335 We added method System.templater.generateText.


Example: const text = await System.templater.generateText(item ,‘test {$__name} {$__createdBy} testend’);

The maximum data text is limited by the grpc package. The default is 8 MB. To learn how to change the size, go to


4. TEAM-15704 You can now change task executors in a script by using the reassign method. Approval and information tasks as well as system tasks are reassigned to the first user in the list of users that is passed. If the process instance has ended or the task is marked as completed, reassignment is impossible.


5. TEAM-14533 We added a Web API method for bulk data import. 


Interface designer


1. TEAM-15474 We improved the validation widget.

  • In API you can now redefine the standard validation header:

const result = new ValidationResult(
        string: ['The value must contain at least 10 characters'],
        string_2: ['The value can contain 50 characters max'],
        number_1: ['The value must be less or equal to 50'],
result.title = 'All the checkboxes in the form must be selected';

  • The validation widget now displays fields in the same order as the users sees them.


2. TEAM-13740 In the interface designer, custom widgets from modules are now sorted in groups that correspond to the names of the modules.


Document management


1. TEAM-14395 When a document is signed with an e-signatures, the information about the signatures is saved to the signature.sig file. The name of the file is created automatically to match the name of the signed file.




1. TEAM-16370 A new widget was added to the interface designer: Last activity. It shows the date and time when the last comment was made on a Deal's or Lead's page; or the date for which an active CRM task is scheduled.

The widget helps monitor sales rep activity within a certain deal so that no deal is left unattended.

This widget can only be used on view, edit, and create forms of Deal and Leads apps.

By default, we added to the widget to these forms in all the new companies. To add to a form an an existing company, drag it to the CRM app form in the interface designer.


2. TEAM-15844 The range of possible dates for received payments is not limited. A date greater than the current one cannot be selected.


3. TEAM-16484 For the Sales team app, we added the All users access permissions.


4. TEAM-16550 We added a notification to the Conversion dashboard component: “For a correct calculation of conversions, set a period equal to an average sales cycle in the filter”.


Live Chats


1. TEAM-16445 You can now quote messages when talking to a user in TelegramBot, Telegram, VK.


2. TEAM-16206 You can now select the subject of an email as a parameter for starting a process.




1. TEAM-12319 We added a counter of active project tasks.


2. TEAM-12322 We removed the progress percentage for milestones.




1. TEAM-16520 Authentication with one-time SMS codes and phone number is now available for users imported from AD/LDAP. The feature can be used only if the user can the phone number specified. Signing in with AD/LDAP login and password remains available. 

2. TEAM-15729 If a user was added to the system automatically via authentication with oauth (using the auto-signup option in a module), he or she will not be able to unbind the oauth account in Profile settings > Authentication.


3.TEAM-12037 In Administration > Security Settings the User sessions block was added. It provides the following settings:


  • Close user sessions hen inactive. A user's sessions is closed if he or she remain inactive during the period specified in Session inactivity timeout. The user will need to sign in again. This setting works regardless of the type of license used by the user (named or concurrent).
  • Session inactivity timeout*. The time in minutes during which a user can remain inactive without being signed out.


Company settings


TEAM-10335 We are constantly improving our localization features to make it easier for users in different countries to work with the system. In this release we have added the possibility to set up a default country code in a Phone-type field.  This is done in Administration > Company Settings > Default country code. Here you can specify a country or select it according to the user's interface language.


Import and export of solutions


TEAM-15409 When a user tries to install a solution that has already been installed, by importing a file or downloading it from ELMA365 Store, the system will suggest updating the solution instead.




TEAM-1783 When selecting an app item in an App-type field via the magnifying glass, the app's filters are now available.


Activity stream


TEAM-5524 We added message reaction to messages in the Activity Stream.




TEAM-15882 The filters saved in the Tasks workspace are now also displayed in the left menu. As before, the filters are managed (created, edited, deleted, re-ordered) from the filter panel.




TEAM-14151 Now users without administrator permissions cannot see nor start system processes.


On-Premises configuration


TEAM-15719 You can now set a validation period for a Business process activity in a module to less then 1 minute.


To the processor service configuration, we added a new environmental variable ELMA365_CUSTOM_ACTIVITY_SCRIPT_MIN_CHECK_INTERVAL that can have the following values:


  • “10m” - check once every 10 minutes
  • “1m” - check once every minute
  • “10s” - check once every 10 seconds


The default value is “1m”.


Bugs fixed

1. TEAM-4238 We fixed how Phone-type fields are displayed when imported from Excel.


2. TEAM-10198 We fixed how the process start form is displayed.


3. TEAM-13756 Limiting the app selection when configuring a form now works correctly.


4. TEAM-13897 Tooltips on process task buttons (SaaS) now work correctly.


5. TEAM-14403 The User authentication error events are now created correctly.


6. TEAM-14757 We fixed how files are displayed in search results.


7. TEAM-14806 The user authentication error is fixed.


8. TEAM-14981 We fixed the error that appeared in the interface designer.


9. TEAM-15115 We fixed the error that caused the page not to load when setting up a block in a business process.


10. TEAM-15143 We fixed the error that appeared when assigning a task to the Users (many) variable in case the user was locked.


11. TEAM-15193 We fixed how document templates are expanded/collapsed.


12. TEAM-15276 In the dup-detector service, attempts for getting an app item were removed.


13. TEAM-15326 In a locked solution you can now edit or replace document templates.


14. TEAM-15327 The gRPC limit for importing large structures has been increased.


15. TEAM-15442 The Associated items widget no longer impacts how app table columns are displayed.


16. TEAM-15524 Disabled telephony modules are no longer displayed in the menu of an outgoing call.


17. TEAM-15811 From a contract's mapping settings, the Id property has been removed.


18. TEAM-15813 Event localization error fixed.


19.TEAM-15823 The error that appeared when changing the value type from one to many in an Email parameter.


20. TEAM-15833 Folders with files of an external user are now correctly displayed in the folder tree for the system administrator.


21. TEAM-15883 Changing column width in an app item selection window no longer erases the settings of the columns in the app.


22. TEAM-15896 We fixed the error that made it possible to add a second system supervisor.


23. TEAM-16079 When importing data from LDAP, the phone number is now saved correctly.


24. TEAM-16258 We fixed how task forms are displayed in the mobile version.


25. TEAM-16376 We fixed how the button for closing a task works.


26. TEAM-16384 We fixed the error that appeared when transferring a service during configuration import.


27. TEAM-16436 We fixed the display order of statuses in Pipelines on the CRM dashboards.


28. TEAM-16442 We fixed how the task names are displayed in the Gantt chart.


29. TEAM-16614 We fixed how tasks are displayed in process monitor.


30. TEAM-16636 When applying a filter to a folder with the Search only in selected folder parameter enabled, search is only performed among the items of the current folder and all of its nested folders. If the Search only in selected folder parameter is disabled, the search is performed across the entire hierarchical folder.


31. TEAM-16750 We fixed how search works with the Last activity parameter set to 1 day.


32. TEAM-17179 The password validation during registration on the portal now works correctly.

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