New features of ELMA365: two-factor authentication, import of JavaScript libraries and others

New features of ELMA365: two-factor authentication, import of JavaScript libraries and others

Welcome the November release of ELMA365. We aim at providing our customers with a secure, stable and convenient system. This release includes a module for integrations with a service for end-to-end analytics, handy CRM features, an additional method for two-factor authentication, better access management features and more.

Setting actions for selected pipelines

You can now add action buttons for certain pipelines in the Leads and Deals apps (for example, for launching a business process). So, each pipeline can not only have its own set of statuses, but also a certain set of buttons that are relevant for each pipeline


Bulk Assign and Change Status actions

The buttons “Assign” and “Change status” have been added to the interface of the “Leads” and “Deals” apps on the “New” and “All” pages as well as on the pages of the pipelines. These buttons were made specifically for the CRM section, since the change to status and the appointment of a responsible person for selected deals or leads is a rather popular use case. The selected action will be applied to all the selected items.Bulk Actions

Preconfigured Lost reasons for leads

To the Leads app, we added default Lost reasons that allow changing a lead’s status to the final Unqualified status. You can also add any other reasons to the list.

Lost Reasons

Advanced page of an incoming call

We added new fields to the pop-up window about an incoming call: Lead, Deal, Company, and Assigned to. If there is no lead, deal or company for this phone number, you will see dashes in those fields. Also, sales reps can easily see who is working with this customer.

Table data type            

Read only and Required checkboxes for columns

We keep on working on expanding table settings. Now you can check the Read only and Required options for each table column.

It is available:
1. In column settings for fields of the Table type. The settings will be applied across all the forms and widgets where the field is used.
Read Only 1
2. In standard form settings of a business process task. From the form of any task you can go to the table properties.

Read Only 2

Then, on the Columns Display tab, you can select the columns that you want to be Read Only or Required.

Read Only2

In this case the settings will only be applied to the form of a particular task. 

3. In a widget (page or app or task form). To configure the display of the columns in the interface designer, you have to drag a Table type field onto the canvas. On the Display Settings tab, select the columns or bind them with Boolean variables. 

Keep in mind that:

  • If at least one column in a table is marked as Read Only, you cannot delete rows or add new ones.
  • If at least one column in a table is marked as Required, it will be validated each time until there are no empty cells in the column.

Grouping rows

For better readability you can now group rows into collapsible panels by column value. 

When setting up the table columns, you can select a column by which the rows will then be sorted and grouped. You can also select the default sorting order (ascending or descending).


Simple data types are sorted alphabetically or in a numeric order. System apps and users are sorted alphabetically according to their names.

Rows that have empty cells in the selected column are added to a separate group.

Authentication and security

Email as second authentication factor

To make authentication more flexible, we added the possibility to select email as the second authentication factor. It can be selected in security settings.

2 Fa

After a user enters their login and password, a 2FA form opens. A message with a security code is sent to the user’s email address. Once the user enters the code on the 2FA form, authentication is be completed.

Important: in the On-Premises version of the system, for sending messages with security codes, the SMTP server installed upon installation is used.

Periodic password reset

We improved the password policy by including the periodic password reset, which can be configured in Administration > Security Settings:

Password Reset

When this type of password reset is enabled, user receive messages reminding them to change their password. You can even restrict access to a user until he or she changes the password.

You can specify how often the password needs to be reset in days.

You can also define the email resend interval, that is, specify how often the users need to be reminded to change the password

Escalation allows you to temporarily lock a user until he or she changes their password.


  1. We corrected how a user invite link is formed in On Premises with a script.
  2. We fixed the issue with workspace lock status cache after import.
  3. We added system attributes to AD/LDAP integration settings.

Specifying app properties when configuring access to app items

Access to app items can now be configured using app properties.

It is helpful when you need to configure access in an app where app items can have different executors. Each user needs to see the items that he or she created, as well as the items where he or she acts as executor. However, access permissions can be configured only for the author of the item, but the executor isn’t always the same person as the person who created the item. 

Now you can use the User app property (Executor) when configuring the access.

Apart from the settings available in the UI, these access privileges can now also be managed through TSSDK scripts.

const app = Application;

await app.setPermissions(
new Permissions([
 // Set privileges for the author
 new PermissionValue(
  [ PermissionType.READ, PermissionType.UPDATE, PermissionType.DELETE ]
 // Set privileges for the Executor app property
 new PermissionValue(
  [ PermissionType.READ, PermissionType.UPDATE, PermissionType.DELETE ]
// Check if the “Assigned to” property has Read permissions
if (await app.hasPermission(app.fields.responsible, PermissionType.READ)) {
 // ...

Importing a JavaScript library into user widgets

When developing a complex solution, you might find that the built-in platform widgets are not enough, and you need to use an external library for implementing dynamics or creating charts. Earlier, we addressed this issue by using the Code widget and external scripts through a link to an external source.

Now we added a new Files tab to the interface designer, where you can upload any files including *.js. modules. These modules can then be used in Client scripts by implementing the standard mechanics of  TypeScript modules by using the import key operator .

Here is an example. Let’s say we are creating a custom widget. We download jquery-3.6.0.min.js from the official website and upload it to the widget’s files. Then we import it into the Client script and use as needed.

import $ from "jquery-3.6.0.min.js";
// We can use the imported module later on in the script’s code

Note that for import in the browser SystemJS library is used, so you can use any of the supported module formats.

We are planning to further expand the capabilities for working with the static content of a widget. For example, for images, css styles, and any other files that you might need.

No longer supported

Integration with AmoCRM

For a while ELMA365 had a module for integration with AmoCRM. Since ELMA365 now has its own CRM features, this integration is not needed anymore. Our customers say that it is much more convenient working in a single window instead of using different systems for data storage, even if they are integrated.

Sequence diagrams

We stopped supporting the sequence diagrams editor because our customers prefer modeling process diagrams using BPMN 2.0. It is no longer possible to create and edit sequence diagrams. However, the diagrams created earlier can still be edited.

Bug Fixes: 

  • The duration of a Meeting or Webinar task was shown incorrectly in the calendar. Now the created events have the same duration as specified in the task.
  • We added validation of required fields when saving data on a web form.
  • We fixed the long response of the system when creating a new pipeline in Deals or Leads.

Want to discuss these updates with others? Go to ELMA365 Community