Updates in ELMA365 April-May Release

Updates in ELMA365 April-May Release


We are actively improving the capabilities of the built-in email client and regularly adding new functions to make it more convenient to use. In the April release, we adapted the interface of the Email workspace to mobile devices, made it possible to manage notifications on new emails, and added the possibility to unite emails into threads. As early as the next release, email threading will enable automatically linking new emails to the same app items that the previous emails from the same thread were linked to. Let’s look into each of the new features in more detail.

Displaying threads on email view pages

When you use the Reply function, emails are automatically united into a thread. This allows you to see all related emails on the email’s page, see which emails have attachments, navigate sent and received mail. As emails from the same thread are displayed in one window, you don’t have to filter them by author, subject, etc. With threads, it is much more convenient to find emails sent or received recently or a long time ago. They will be in the same conversation chain where you can view the whole conversation history. You can also open an email by clicking on its preview in the thread and continue working with it on its page: reply to the current email or mark it as Starred or Unread. The email you are viewing is highlighted in the list of all emails in the thread, so that you can easily see which emails were sent before or after this email.

Note: Outlook doesn’t support the thread feature. Mailboxes provided by this service will be processed separately.

 1 Email Thread

Notifications about new incoming emails

When you receive a new email, you will be notified. A pop-up notification about a new email in your mailbox will appear in the bottom right corner of the screen.

2 Email Notifications

You can manage email notifications for PC and mobile versions of ELMA365 in the Email section in the user settings. Select whether you want to receive notifications in your desktop app and browser. If you want the notification settings for the mobile app to be different, you can check the Change settings for mobile app box and change the mobile app settings.

 3 Email Notifications

Email workspace interface for the mobile app

To make working with emails in the system more convenient, we developed a mobile interface for the Email workspace. We adapted the workspace menu, the email view page, and the Compose form to mobile devices. The mobile version now has unread message count, folder navigation, as well as icons for emails marked as starred and emails with attachments. And of course you can see app items linked with an email on its page and link new app items to an email or delete created links.

 4 Email Mobile 1

Preset widget to view linked emails on Lead and Deal view forms

For new companies, the Linked emails tab will be created on the view forms of the Leads and Deals apps in the CRM workspace by default. These changes have not been applied to existing companies, as users might already have changed these forms for their needs. You can add the Linked emails widget to the app forms in the system to use this feature.

Importing data in the right CRM pipeline

When you bulk upload leads or deals using .xls or .csv files, you can choose which pipeline the new items need to be created in. To do that, go to the pipeline you need, open the three dots menu, and click Data Import. All data will be imported into the pipeline that is opened.

 5 Data Import Crm

Using the Lead qualification system process in custom CRM solutions

When you create a solution that includes several workspaces, including the built-in CRM workspace, you can use the Lead qualification system business process. In this release, the conflict that occurred during export of solutions that include system processes was resolved. Now you can freely create solutions based on standard system components.

Saving comments to phone calls even when recordings are deleted 

In previous releases, if your IP telephony provider only stored an audio file for a limited amount of time, all comments to the phone call recording would be removed from the lead or deal page along with the recording itself. Now comments are displayed in the interface even if the recording file is not found.

 6 Comment to A Phone Call Recording

Adding custom names for web forms

We fixed the issue with web form names that couldn’t be changed on creation and editing forms. Web form names used to be created automatically and were not editable. Now, on top of standard web form name, you can add a unique custom name for a form you create to easily find the forms you need.

7 Web Forms in Leads

We’ve also worked on new integrations and on expanding the list of available internet telephony providers: we added modules that help you connect to telephony package services. Learn more about the new modules in ELMA365 Store.


ELMA ChatDesk 


Preparing to launch Smart Service Center

In June, we will launch a new product that will include new features for ChatDesk and ServiceDesk.


ELMA365 Portal / Low-code

UI/UX improvement

In the April release, we focused on user experience and security. We made different improvements in a number of workspaces.

Saving filters in tasks

It’s become more convenient to work with tasks: you can now save search parameters as filters in My tasks and Assigned by me sections. Filters are saved only for the current user; other users won’t have access to them.

9 Filters in Tasks 1

Saved filters are displayed on the right panel of the advanced search window:

 10 Filters in Tasks 2

Overlapping events in calendars

Scheduling events in different calendars has become more convenient because of better overlap checking mechanism:

  • When you create an event in the Calendar workspace, the system checks all Event type apps for overlaps.
  • When a new app item in an Event type app is created, the system checks the Calendar workspace for overlaps.

Drag and drop in messages

Now you can upload files to messages using drag and drop. Available in personal and group chats, channels, activity stream, and the Object activity stream widget on app item pages:

11 Drag and Drop in Messages 1

12 Drag and Drop in Messages 2

Moreover, you can drag and drop several files at once. They will be uploaded consequently, and you will be able to write a comment to each one.

Restoring app items

Now you can restore individual app items on their pages and in scripts (this used to be available only as a bulk action). To restore deleted app items on their pages, add the Restore button to the view form of a deleted item:

13 Restore Button

To restore app items in scripts, use the ApplicationItem.restore() || ApplicationItemRef.restore() method.

Selecting multiple app items in search parameters

Now you can filter items specifying several App type fields. Consider this example:

  • The standard CRM workspace includes the Contacts and Companies app.
  • The Companies app includes the Contacts field. You can select several contacts for one company.
  • You can now select several contacts when you search for companies:

15 Multiple App Items in Search Parameters

Search results will include all companies that have at least one of the contacts you specified.




List of active sessions

We added the Active users page to the Administration workspace:

16 Active Users

This page shows all users who are signed in at the moment. This allows you to see all users who are online and their IP addresses, which helps you to detect unauthorized sessions. Here you can search by login, email, and full name.

Access permissions and Kanban boards

The field total that is calculated on a Kanban board now depends on the user’s access permissions. 

17 Field Total

The total is calculated only for the app items the current user has access to.

Editing access permissions to Contracts 

Contracts were first released in winter 2021. They implement the principles of object-oriented programming on our Low-Code platform. In this release, we’ve added the possibility to configure access permissions to Contract items, making contracts available only to certain employees based on your company’s processes.

The three principles of OOP—encapsulation, polymorphism, and inheritance—are implemented in ELMS365. The OOP paradigm allows creating standardized processes for multiple apps, makes writing Low-Code scripts easier and faster, and helps code to be much cleaner and more readable.

For example, a user set up the Documents workspace that includes the Agreements, Certificates, and Packing lists apps. The Portal in the workspace is also enabled. It lets external users access documents created to work with them. To have data from all the apps conveniently displayed in one place, let’s create a contract and name it Documents. It will combine data from different apps. To change user’s permissions to different app items, open Access settings in the contract’s menu. 

18 Access Settings   Contracts 1

On the page that opens, you can manage access permissions to app items inside the Documents contract.

19 Access Settings   Contracts 2

You can restrict access to the whole contract or to certain app items in it. In our case, we need to use the Restrict access to app items option. Then we will be able to set up access for each app item individually, and app items within our contract will have the same access settings as the original app items.

Link to the parent app item in a Contract

The inheritance principle realized in Contracts helps you to easily combine several source apps that have common features, inheriting them from different workspaces and combining all data in one child app. This makes modeling business processes easier and faster. Now you don’t need to create a new process for every app individually.

If you need to access the parent app, use the field we added in this release, Link to the source item. It stores a link to the original app item and allows you to work with it as with a standard app field. For example, this field can be used in business processes as any other field.

20 Contracts Fields

The new field can also be accessed in Low-Code scripts that you may write for data processing or customization of widgets and forms. 

async function getData(): Promise {
  const contractData = await Context.data.agreements?.fetch();
  if (!contractData) {

Working with CDS and NDS

Now users can issue digital signatures and use them to sign documents and app attributes. We added two new activities to the business process designer so that you can:

  • create a request to issue a digital signature, and
  • wait until the digital signature is created.

21 Digital Signature   Activities

The first activity allows requesting the issuing of a digital signature. As a result, the user gets a digital signature that can be used to sign documents and attributes. Keys for each signature are stored on the service provider side and protected against unauthorized access from external users. When you use these activities, you need to select several context variables that store data about the user:

22 Digital Signature Request

You can also add personal identification data if the digital signature provider requires it.

The second activity allows the system to wait until the digital signature is issued. This activity is essential to build business processes that include issuing digital signatures.

23 Expecting Digital Signature to Be

With this activity, the process will pause until the user’s digital signature is issued and the system is notified about it.

Reserving document registration numbers

Now document numbers can be reserved in processes. This option allows assigning a registration number to an app item based on the folder it will be registered in. This allows building document management and document flow processes more accurately. A registration number can be reserved in advance during a business process. An app item can be assigned a number before it is actually registered.


Widget version history

The Version History tab has been added to the widget builder. On this tab you can find all published versions of a widget. Moreover, if you click one of the versions, the Apply version button will appear. It restores the selected version to the current draft. You can use this feature to:

  • find out who and when published a widget,
  • know what exactly changed (from the comment or by restoring the version and examining the draft),
  • revert to one of the previous versions if an error occurs.

 24 Widget Versions

Widget debugging

The debugging feature has been added to the widget builder. This allows you to debug a widget before it is published without affecting the performance of the published version. Now you can develop and fine-tune your widgets right in the live environment without worrying about publishing a version with an error.

 25 Widget Debugging 1

26 Widget Debugging 2

Improving the widget builder

Widgets in the widget builder menu are now grouped, and you can use search to filter widgets.

 27 Widgets Search

Saving the state of opened app items

To improve the system’s response time, the state of recently opened app item pages is now saved, so going back to the previous form is instantaneous (for example, when you view an attachment or a page of another app item).


Comparing document versions

Now you can compare different file versions, including versions of documents in Document type apps.

The new feature can be used to identify the difference between two .doc or .docx files. The system allows you to work with changes and merge the files into a new document version. The way the differences are displayed depends on the file viewing and editing service you’re using to work with office documents.

How to compare versions

To use the new feature, you need the Document Versions widget.

28 Comparing Versions 1

This widget allows you to choose which file the current document is going to be compared with. Select With file to compare your document with a file from your PC. Select With version to compare it with another version in the system.

29 Comparing Versions 2

Moreover, if you click All Versions on the document page, you can compare any versions of the document.

30 Comparing Versions 3

To select a version for comparison, click the button with two arrows. You will need to select the version you want to compare the chosen document with.

31 Comparing Versions 4

When you select a version, you will see a window that allows you to work with changes in the documents. When you finish working with versions, you can add a new version of the file with the changes you want to keep.

Sending packages for information and for approval

This feature is designed for working with document packages. It allows users to approve or view several app items in one task. In the business process designer, we added an activity that allows you to combine several app items into a package.

Creating document package activity

The new activity can be found in the business process designer under Document Management.

32 Document Package 1

You can combine items from apps added to the process context.

33 Document Package 2

The document package will be stored in a variable of the Arbitrary app type.

34 Document Package 3

The activity combines several apps into one package that can be sent for information and for approval during the business process.

Task to view or approve a package

When a document package is sent for information or for approval, the executor is assigned one task to review all documents in the package. The user can also leave a comment about each document in the package individually.

When the user completes the task, he or she can leave a comment to the whole package the same way it is done for one document.

35 Document Package 4

You can see the package’s approval status and the list of informed users in the corresponding widgets on the right panel.

36 Document Package 5

Now these widgets include statuses for document packages as well as for individual documents.

37 Document Package 6

You can get detailed information by downloading the documents or viewing the whole lists of approvers and informed users.

Starting multiple subprocesses

The Start Process activity now supports variables with multiple values. For example, to run several subprocesses for several contracts you need to create a context variable:

38 Subprocess Variable

To run a subprocess, use Start Process from the Activities section in the business process designer.

39 Subprocess Start Process Activity

Select the context variable you created as the field the subprocess is going to be linked with. A separate process instance will be launched for each app item.

40 Subprocess Start Multiple Processes

In the activity’s settings, you can choose how the parent process needs to be executed. It can:

  • be paused and continue after all child processes finish, or
  • continue without waiting for the child processes to finish.

ELMA365 development

Limiting available options for User type fields 

When you create an app item or work on a task, you often need to select a user who is going to participate in further steps of the process. In these cases, the choice of users usually needs to be limited. For example, you may only need users from the Sales department or Accounting department to be displayed on a form, or you may want users from a certain group within a solution to be available (for example, only Support service operators). We added a feature that allows you to limit available options for User type fields. Now you can configure which users can be selected based one of the fields on their view forms, groups they are in, or their job positions.

Limiting options for User type fields using scripts

Apart from the previous option, you can now limit available app items in User type fields using TSSDK scripts. To make it possible, we added the setFilter and clearFilter methods similar to the ones available for App type fields. 

async function onInit() {
  let vipGroup = await System.userGroups.search().where((f) =>
  if (vipGroup) Context.fields.to.data.setFilter((f)   => f.groupIds.has(vipGroup!));

Granting permissions to an external user who hasn’t accepted the invitation

While developing personnel solutions, we saw that you sometimes need to work with an external user account before the person accepts the invitation. Granting such users access to documents or creating tasks for them used to be impossible.

Now there is a new method in TSSDK.

The Namespace.portal.addUser(portalUserProfile) method allows you to create a user profile with the Not activated status. This account can be used in scripts and processes as any other. You can set up this behavior for your portal user onboarding process and prepare his or her working space in advance.

The account will be activated when the person clicks on the invite link and confirms the sign-in info.