List of critical changes in versions 3.10.x

List of changes in version 3.10.19

Designer

Possibility to edit metadata of a basic extendable system object was added. At the moment, the autofill script field is editable (in case it was filled in earlier). This applies only to extendable system objects, not to the objects, created in Designer.

Periodic event template changed

A tab with the list of all the instances of the event was added (fig. 1).

Fig. 1. List of instances

The toolbar was changed (fig. 2-3).

Fig. 2. Regular event toolbar

Fig. 3. Periodic event toolbar

 

List of changes in version 3.10.18

Public API

KPI section:
PublicAPI.KPI.Objects.Models.KpiWorkflowTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.KPI.Objects.Performance.ApprovalTaskPerformance.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.KPI.Objects.SMART.SMARTTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.KPI.Objects.KpiTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
 
Docflow section:
PublicAPI.Docflow.Objects.BPMN.AssignDocumentTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Objects.BPMN.CreateDocumentTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Objects.BPMN.RegistrationDocumentTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Objects.BPMN.SendToAcquaintanceTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Objects.BPMN.SendToApprovementTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Objects.Tasks.DocumentAcquaintanceTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Objects.Tasks.DocumentApprovementTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Objects.Tasks.ResolutionTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Objects.Tasks.RouteApprovementTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Docflow.Tasks.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
 
Processes section:
PublicAPI.Processes.WorkflowTaskBase.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
 
Portal section:
PublicAPI.Portal.Objects.Tasks.Question.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Portal.Objects.Tasks.ReplacementTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
 
Projects section:
PublicAPI.Projects.ProjectTaskBase.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.ProjectTaskBase.Milestone.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.Objects.Prediction.ProjectPredictionApprovalTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.Objects.Prediction.ProjectPredictionDatesTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.Objects.ProjectComplexTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.Objects.ProjectPlanApprovalTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
PublicAPI.Projects.Objects.ProjectDatesApprovalTask.Filter() - filter changed:
HideOldPlanTasks(Boolean hideOldPlanTasks) - Added
 
Services section:
Added methods:

Boolean PublicAPI.Services.SecurityServices.CanCheckPermission(Permission permission, Type type)

List of changes in version 3.10.17

PublicAPI

Method for calculating permissions to edit a document was added: PublicAPI/REST/EleWise.ELMA.Documents/Document/{DOCUMENTID}/CanEditDocument

Business processes, Designer

Behavior of the “Forbid to reassign” option was changed via a compatibility parameter.

With the old behavior, the option in a user task could affect automatic substitution. For example, if enabled, it can forbid substitution. This behavior is not logical in terms of the new substitution mechanism, but it should be supported to ensure the functioning of existing processes. Rules of the new substitution mechanism:

1. The Forbid to reassign option only allows or forbids reassigning the task from its web page.

2. The Forbid substitution option in the swimlane settings allows or forbids substituting the executor.

3. These options do not affect each other.

How it was:

The Forbid to reassign option could affect automatic substitution.

http://www.elma-bpm.ru/kb/assets/Palshina/927_102.png

For example, a user is substituted and participants do not have permissions to reassign tasks, which are configured on the process level. The task will not be assigned to the substitute user, if the Forbid to reassign box is checked in the task settings. If the box is not checked, the process is executed properly.

Using the option is more difficult, since it has side effects, that needs to be taken into account in processes.

How it is now:

The compatibility parameter identifies, whether the Forbid to reassign function should affect substitutions. It is defined for each process version on the Settings tab in the Compatibility Parameters panel:

http://www.elma-bpm.ru/kb/assets/Palshina/927_103.png

The selected state indicates the functioning of the old behavior. This parameter is enabled for all the processes by default. Thus, all the existing processes will continue to work how they used to.

If you need to switch the function to the new behavior, uncheck the box and confirm your action. Attention! Disabling is irreversible, you will not be able to enable this option. Therefore, you need to make sure that the Forbid to reassign option is not used to forbid substitution and fix all such occasions (to forbid substitutions, use the respective swimlane option).

This parameter will be disabled for new processes, i.e. the Forbid to reassign option will not affect substitutions.

Restriction for selecting a KPI

A restriction for selecting a KPI in the data collection task was added. If a user adds a KPI, then the period field displays its periodicity. When adding consequent KPIs, only those, with the same periodicity can be selected.

http://www.elma-bpm.ru/kb/assets/Palshina/927_104.png

http://www.elma-bpm.ru/kb/assets/Palshina/927_105.png

 

List of changes in version 3.10.16

Extension points

A method with two parameters was added to BaseDocumentFromElementResolver:

public virtual FormView GetView(IWorkflowInstance instance, Element element)

The old method is marked as obsolete: FormView GetView(Element element).

 

List of changes in version 3.10.15

Code and public classes API

Method EleWise.ELMA.Projects.Managers.ProjectTaskBaseManager.IsActiveForPublish(IProjectPlanItem planItem) is obsolete and will be deleted in the new versions. Use EleWise.ELMA.Projects.Managers.ProjectPlanItemManager.IsActiveForPublish(IProjectPlanItem planItem)

Method EleWise.ELMA.Projects.Managers.ProjectTaskManager.IsActiveForPublish(IProjectPlanItem planItem) is obsolete and will be deleted in the new versions. Use EleWise.ELMA.Projects.Managers.ProjectPlanItemManager.IsActiveForPublish(IProjectPlanItem planItem)

JQuery

Possibility to use Russian letters in the library jquery.maskedinput-1.3.js in the function mask() using a special character – “r”. Example: $(’#nomber’).mask(’rr 999’)

Designer

The Filter tab removed from the document and project type editor. Also the Filter Settings and Program Settings blocks are removed from the Additional tab.

http://www.elma-bpm.ru/kb/assets/Butorina/927_161.png

The Filter Settings and Program Settings blocks are also removed from document and project type creation wizards

http://www.elma-bpm.ru/kb/assets/Butorina/927_162.png

 

List of changes in version 3.10.14

Code API. Public methods and interfaces

Addresses

Interface of the extension point EleWise.ELMA.CRM.Components.IAddressProvider for working with addresses of different countries is marked as outdate; instead, use EleWise.ELMA.CRM.ExtensionPoints.IAddressProvider, EleWise.ELMA.CRM.Web.Extensions.IAddressProviderWeb and EleWise.ELMA.CRM.Web.Extensions.IAddressBaseSettings.

Classes EleWise.ELMA.CRM.Web.Models.AddrBaseCrm, EleWise.ELMA.CRM.RU.Web.Models.AddrBaseCrm are marked as obsolete.

Views, responsible for entering addresses were modified.

Changes in export/import mechanisms

1. In the helper EleWise.ELMA.Deploy.Import.Helpers. MetadataImportHelper:

· method ValidateEntityTableName was changed: optional parameter string messageAdditionalInfo = null was added

· method ValidateTableName was changed: optional parameter string messageAdditionalInfo = null was added

User interface

Calendar

Highlighting of events that require confirmation added in the calendar:

http://www.elma-bpm.ru/kb/assets/Butorina/927_160.png

A respective message added to the tooltip.

PublicAPI

Docflow section:

PublicAPI.Docflow.Objects.DmsObject.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Document.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.WebDocumentReport.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.BudgetExpense.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.Contract.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.Deed.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.File.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.ContractOutgoing.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.ContractIncoming.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.DisagreementsProtocol.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.ContractAttachment.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.AdditionalAgreement.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Types.BudgetIncome.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Objects.Folders.ActionFolder.Filter() - filter changed:

Virtual(Boolean virtual) - Added

PublicAPI.Docflow.Objects.Folders.FilterDocumentFolder.Filter() - filter changed:

Virtual(Boolean virtual) - Added

 

List of changes in version 3.10.13

User interface

1. Unnecessary line removed from the deal report form markup

http://www.elma-bpm.ru/kb/assets/Butorina/927_156.png

2. When a grey blocker and the “Please wait…” block appear, focus is removed from the active element. After closing the grey blocker, the focus is returned.

Security, Business processes, Platform layer

Locking an instance responsible with a timer, if the user was locked before the time had expired, it caused a situation when it was impossible to interrupt the timer and view the error text.

Visibility of one of the timer menu item was changed. The Change planned time item is displayed, while the time is not yet expired. When the timer is in the state of an error, this item does not appear.

How it was:

Error text was not displayed, the timer could not be interrupted.

http://www.elma-bpm.ru/kb/assets/Butorina/927_157.jpg

How it is now:

Timer can be interrupted, once a new instance responsible has been assigned or the previous instance owner has been unlocked. Error text is displayed.

http://www.elma-bpm.ru/kb/assets/Butorina/927_158.png

Configuration of size limit in properties

1. Logic of configuring limits in properties changed. If the “Can be empty” box is checked in a property and its minimum and maximum values are specified, then if the property is empty, the min/max verification is not performed.

2. If the “Can be empty” box is NOT checked in any numeric type, then an empty property will be automatically filled in with “0”.

3. Accuracy limit added for fraction numbers, i.e. a user can enter as many integral digits, as specified in the property settings.

Editing business processes

Added the possibility to save changes made to a business process when closing the designer (except for the Policies tab).

http://www.elma-bpm.ru/kb/assets/Butorina/927_159.png

When the dialog box appears, a user can choose one of three options: save the changes in all the edited business processes, or close ELMA Designer without saving the changes. When you double click on a business process in the tree, it will open in the Designer.

PublicAPI

No changes

 

List of changes in version 3.10.12

API of methods and interfaces

OracleTransformationProvider changed

1. Property Connection of class EleWise.ELMA.Extensions.Oracle.OracleTransformationProvider instead of connection of the oracle provider returns EleWise.ELMA.Runtime.Db.Proxies.DbConnectionProxy.

2. In the class EleWise.ELMA.Reports.Managers. ReportDataSourceSqlQueryManager methods removed:

Reports SQL-request execution manager changed

· public virtual void SetParamValue(IDbCommand cmd, string name, object val)

· public virtual void SetInt32(IDbCommand cmd, string name, int val)

· public virtual void SetInt64(IDbCommand cmd, string name, long val)

· public virtual void SetInt16(IDbCommand cmd, string name, Int16 val)

· public virtual void SetByte(IDbCommand cmd, string name, byte val)

· public virtual void SetFloat(IDbCommand cmd, string name, float val)

· public virtual void SetDouble(IDbCommand cmd, string name, double val)

· public virtual void SetGuid(IDbCommand cmd, string name, Guid val)

· public virtual void SetString(IDbCommand cmd, string name, string val)

· public virtual void SetDecimal(IDbCommand cmd, string name, decimal val)

· public virtual void SetDateTime(IDbCommand cmd, string name, DateTime val)

· public virtual void SetImage(IDbCommand cmd, string name, byte[] val)

· public static void AddParameter(IDbCommand cmd, string name, object val)

User interface

Business processes

· Description of the task “Approval route settings” was added to the task form in Web Application

Changes in Leads

The button for starting a process from the section and a lead page was moved from the main toolbar to the menu of the Selected button.

http://www.elma-bpm.ru/kb/assets/Butorina/927_154.png

Now, among the processes that have a Lead type input variable, only the ones, added to the Lead object are displayed

http://www.elma-bpm.ru/kb/assets/Butorina/927_155.png

PublicAPI

No changes

 

List of changes in version 3.10.11

Code API. Public methods and interfaces

Rounding of numbers using scripts

If a script is executed when specifying a more exact value for integers and fractions, than configured in the property settings (e.g. if you enter a fraction in an integer field), then a rounded value will be passed to the script.

Notifications

Added possibility to make author name template in the mail body.

For this, add the tag <Author></Author> to the template. This tag allows redefining the notification author in the mail body, if necessary (see figure below).

http://www.elma-bpm.ru/kb/assets/Butorina/927_151.png

An example of a template, that allows wrapping the message author into a AALocalizeUser function, in order to display a localized name of the author (this function is used as an example):

<?xml version="1.0" encoding="utf-8"?>

<Notifications description="Document notifications" version="3.9.0.29000">

<Default>

<Filter>

<Event>IEntityActionHandler.ActionExecuted</Event>

<Object>EleWise.ELMA.Documents.Models.Document</Object>

</Filter>

<RecipientSet>

<User>{$WatchList}</User>

</RecipientSet>

<URL>

/Documents/Document/View/{$New.Id}

</URL>

<ObjectId>{$New.Id}</ObjectId>

<Author>

{AALocalizeUser({$Author})}

</Author>

</Default>

</Notifications>

Localization

Added the possibility to merge resources, exported from Designer.

When you export resources from Designer to a certain folder, the resources are merged with the ones in the folder. After the files have been merged, an additional Logs folder with the merger results is created in the target folder.

User interface

Display of lead duplicates

Page-by-page display of lead duplicates added

CRM

· Added notifications for the informed users and the work participants when creating a lead

· Added notification for the responsible user when creating a deal

Notification for participants when creating a periodic event

The notification about a new periodic event now contains a correct link to the event template

Document management

Copy button was hidden for document types

Designer, Data model, Business processes

Added verification of class and database table names on the form for creating a new process in Designer. The IDs in these fields must start with a Latin letter, followed by numbers, Latin letters or underscores "_". In addition, C# keywords are forbidden in class names, and keywords of the DBMS used are forbidden in database table names.

How it was:

When creating a process, you could specify any symbols in the class name and database table name of different process structures. There was no verification and no error message was displayed, while the process was saved. However, it was impossible to publish such a process later and the class name could not have been changed in Designer.

http://www.elma-bpm.ru/kb/assets/Butorina/927_152.png

How it is now:

Class and database table names are verified when creating a new process and error messages are shown.

http://www.elma-bpm.ru/kb/assets/Butorina/927_153.png

Web, user interface

A link to the document is added to the window for sending for registration, if the document has more than one registration route.

MS Word document generator

· Implemented pasting of text to lists without creating additional numbered items but with saving the formatting;

· Implemented pasting of multi-line text in cycles.

PublicAPI

Portal section:

PublicAPI.Portal.Objects.Common.LastObjectInfo.Filter() - filter changed:

UniqueObjects(Nullable<Boolean> uniqueObjects) - Added

 

List of changes in version 3.10.10

Code API. Public methods and interfaces

Views for Email and Phone types

Views for displaying separate Emails and Phones were added (not as a list). Views for displaying Email and Phone lists were modified.

Site.cshtml view

The DisplayTemplates/Site.cshtml view was deleted from the system; its logic was moved to the DisplayTemplates/Uri.cshtml view

Template generator functions changed

1. The following functions were renamed:

a. RemindTime renamed to GetReminderTimeSpan

b. TransformFile renamed to TransformFileToSignedText

c. IsProjectTemplate renamed to IsProjectTaskTemplate

d. GetObject renamed to LoadEntityByWorkLogItem

e. ObjectDisplayName renamed to GetEntityDisplayNameByWorkLogItem

2. The functions EleWise.ELMA.Tasks.Notifications.TaskTemplateGeneratorFunctions.HtmlString and EleWise.ELMA.Messaging.SMS.Notifications.SmsTemplateGeneratorFunctions.StringCut were moved to the standard template generation functions EleWise.TemplateGenerator.Function.DefaultFunctions.

3. Class EleWise.ELMA.Messaging.SMS.Notifications.SmsTemplateGeneratorFunctions was deleted.

Auto-synchronization changed

Method AuthProviderSyncStart was removed from the component EleWise.ELMA.IntegrationLdap.Extensions. LdapExternalMembershipService. Instead use methods AuthProviderManualSyncStart (manual synchronization start) or AuthProviderAutoSyncStart (automatic synchronization start).

User interface

Access permissions to pages modified

When editing portlet pages, users, who have permissions to edit, can now switch to editing general settings.

Configuring access to a page is available only if the user has full access to the page and when editing general settings.

Projects

Possibility to select users (executor/co-executor/supervisor) for project tasks when publishing a project plan. In case when a project role with more than one user was selected in a plan task, the system used to suggest selecting a specific user each time when publishing the plan. Now you do not select users for completed tasks and the tasks for which a user had been selected during previous publications.

Designer

Two parameters were added to the Designer’s configuration file (EleWise.ELMA.BPM.Designer.exe.config):

1. SvcUtilPath (path to the SvcUtil utility) will be used in most cases. The file must contain a local path to SvcUtil.exe.

2. SvcUtilAdditionalParams (additional parameters for starting SvcUtil) will rarely be used, but may be required occasionally. Start parameters must be passed. To learn more, read https://docs.microsoft.com/en-us/dotnet/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe

Fill in these fields only if the supplied SvcUtil version does not work. If the SvcUtil parameter is empty or the file is not found in the specified path, the supplied SvcUtil version is started.

Business Processes

Fixed validation of the cycle continuation condition for “After script execution”.

http://www.elma-bpm.ru/kb/assets/Butorina/927_148.png

How it was:

Regardless of whether the condition is true, the operation is not executed.

How it is now:

The operation will be executed at least once.

General improvements

1. Nested sub-processes can be deleted

2. Color type property

a. The default property color was changed to white

b. The font color changes automatically, depending on the depth of color

c. When changing the hex-code the color changes dynamically

3. The error when opening a file in an Attachment type variable was fixed

4. The table settings button was removed in Time Report – Time Report Search

5. When using time KPIs and metrics in the Gauge Panel, Diagram, Bar Chart portlets the possibility to configure units of measurement for the data display was added.

Lite interface

The filter tree was removed from the Objects section in the Lite interface and is displayed when you click on the “Select filter” button.

http://www.elma-bpm.ru/kb/assets/Butorina/927_149.png

ELMA plugin for Visual Studio

The possibility to change the Namespace was added to the document and project types.

http://www.elma-bpm.ru/kb/assets/Butorina/927_150.png

 

PublicAPI

KPI section:

PublicAPI.KPI.Objects.SMART.SMARTTask.Filter() - filter changed:

UnderControl(Boolean underControl) - Deleted

UnderControl(Nullable<Boolean> underControl) - Added

PublicAPI.KPI.Objects.KpiTask.Filter() - filter changed:

UnderControl(Boolean underControl) - Deleted

UnderControl(Nullable<Boolean> underControl) - Added

Docflow section:

PublicAPI.Docflow.Tasks.Filter() - filter changed:

UnderControl(Boolean underControl) - Deleted

UnderControl(Nullable<Boolean> underControl) - Added

Projects section:

PublicAPI.Projects.ProjectTaskBase.Filter() - filter changed:

UnderControl(Boolean underControl) - Deleted

UnderControl(Nullable<Boolean> underControl) - Added

PublicAPI.Projects.ProjectTaskBase.Milestone.Filter() - filter changed:

UnderControl(Boolean underControl) - Deleted

UnderControl(Nullable<Boolean> underControl) - Added

PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.Filter() - filter changed:

UnderControl(Boolean underControl) - Deleted

UnderControl(Nullable<Boolean> underControl) - Added

 

List of changes in version 3.10.9

Public methods and interfaces

1. In the class EleWise.ELMA.Documents.Managers.AcquaintanceTaskGroupManager methods AddExecuters were marked as obsolete; instead, use AddSwimlaneExecuters.

2. In the class EleWise.ELMA.Documents.Managers.ApprovementTaskGroupManager methods AddExecuters were marked as obsolete; instead, use AddSwimlaneExecuters.

3. In the class EleWise.ELMA.Security.Managers.ReplacementManager methods AddUserToList and GetExecutor were marked as obsolete; instead, use AddUserToList<T> and GetExecutor<T>.

4. In the class EleWise.ELMA.Workflow.BPMN.Diagrams.Activities.BPMNActivity<TElement> methods Pair<IUser, IUser>[] GetExecutors were marked as obsolete; instead, use IUser[] GetSwimlaneExecutors. Methods AddUserToList were marked as obsolete; instead, use AddSwimlaneUserToList with different sets of parameters. Method Pair<IUser, IUser>[] IActivityWithExceptionFlowsImpl.GetExecutors was marked as obsolete; instead, use IUser[] IActivityWithExceptionFlowsImpl.GetSwimlaneExecutors.

5. In the interface EleWise.ELMA.Workflow.BPMN.Diagrams.Activities.IBPMNActivity methods Pair<IUser, IUser>[] GetExecutors were marked as obsolete. Methods IUser[] GetSwimlaneExecutors(IWorkflowInstance instance) and IUser[] GetSwimlaneExecutors(IWorkflowInstance instance, out bool assignedToResponsible) were added.

6. In the interface EleWise.ELMA.Workflow.Diagrams.Activities. IActivityWithExceptionFlowsImpl method Pair<IUser, IUser>[] GetExecutors was marked as obsolete. Method IUser[] GetSwimlaneExecutors(NativeActivityContext context, out bool assignedToResponsible) was added.

7. The extension point ISwimlaneChangedHandler were marked as obsolete; instead, use ISwimlaneChangedExecHandler.

User interface

Default sorting in the list of linked objects

Default sorting setting was added for the list of linked objects. When configuring this element in the form builder, you can select one of the displayed columns and specify a sorting direction. After publishing the object (process/document type/project type), which uses a form with changed settings of the list of linked objects, users will see the new settings in Web Application (all the user settings of this list will be reset to the ones, configured in the form builder in Designer).

Objects

The objects Periodicity, Budget Expense Item, Budget Revenue Item are displayed in the Common Module in the object tree.

http://www.elma-bpm.ru/kb/assets/Butorina/927_144.png

ELMA plugin for Visual Studio

The possibility to change the Namespace and specify the displayed namespace of an object was added to objects and enumerations.

http://www.elma-bpm.ru/kb/assets/Butorina/927_145.png

Designer

A parameter for adding a prefix for a block table was added. This parameter may be useful if you need to save the same block state on certain forms (sorting, grouping, position of columns, width of columns, etc.). If you do not specify a prefix, the same block table name and state will be on all the forms where the block is used.

Other

1. The “Do not validate required fields” box was removed from the Create Document activity.

2. A separate log file for script execution data was added. The new log files are in web\logs\ScriptLog.

Processes

The buttons in the drop down menu of the Completed button now have the same colors as on the task form.

http://www.elma-bpm.ru/kb/assets/Butorina/927_146.png

ELMA Agent

New command prompt option was added: MAKEDOCUMENTCURRENTVERSION. Saving of the last used value of the Make it current box was implemented.

PublicAPI

CRM section:

PublicAPI.CRM.Objects.Category.Filter() - filter changed:

IsDeleted(Boolean isDeleted) - Added

Docflow section:

Added methods:

Void PublicAPI.Docflow.Document.AddComment(Document document, Comment comment, IEnumerable<Attachment> attachments, IEnumerable<DocumentAttachment> documentAttachments)

Portal section:

Added object managers:

PublicAPI.Portal.Objects.Security.ReplacementRule

ReplacementRuleFilterHelper PublicAPI.Portal.Objects.Security.ReplacementRule.Filter()

PublicAPI.Portal.Objects.Security.ReplacementRule.Filter() - filter changed:

Replacement(Replacement replacement) - Added

TargetUser(User targetUser) - Added

PropertyUid(Guid propertyUid) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

 

List of changes in version 3.10.8

Code API. Public methods and interfaces

In the BinaryFile class, a new property was added:

/// <summary>

/// Delete the temporary file after saving to the database

/// </summary>

bool DeleteTempFileAfterSave { get; set; }

and a method:

/// <summary>

/// Set a local path to the file

/// </summary>

/// <param name="contentFilePath">Local path to the file </param>

/// <param name="deleteTempFileAfterSave">Delete the temporary file after saving to the database </param>

void SetContentFilePath(string contentFilePath, bool deleteTempFileAfterSave = false);

This property indicates, that after saving the file to the database, the physical source file must be deleted; true is automatically assigned to this property when the InitializeContentFilePath method is invoked; false is assigned when a new value is assigned to the ContentFilePath property. Clearing of the folder for storing temporary ELMA files was added; all the files, created more than 24 hours ago will be automatically deleted.

Object filters changed

1. In the interface EleWise.ELMA.BPM.Web.Common.Controllers. IFilterController method was changed FilterFields: parameter string filterGridId = "" was added.

2. Unique ids of objects and scripts were added to the html markup of the filter form.

WebAPI

The returned result PublicAPI/REST/EleWise.ELMA.Documents.Docflow/SignDocument/SignEnabled was changed, now guid of the active encryption provider is sent (guid empty – if there is no active encryption providers)

User interface

Reassigning business process tasks

Only task executors and their superiors can reassign a task (reassigning is not forbidden in the process). The process initiator, who is the task author, does not have this permission.

PublicAPI

Projects section:

PublicAPI.Projects.Project.Filter() - filter changed:

Managers(User[] managers) - Added

PublicAPI.Projects.Types.ProjectWork.Filter() - filter changed:

Managers(User[] managers) - Added

 

List of changes in version 3.10.7

Code API. Public methods and interfaces

· The extension point IPreBindResolver is marked as obsolete, instead use the extension point

namespace EleWise.ELMA.Web.Mvc.Binders

{

/// <summary>

/// Factory for ValueProvider

/// </summary>

[ExtensionPoint(ServiceScope.Shell)]

public interface IValueProviderFactory

{

/// <summary>

/// Create ValueProvider for the current <see cref="controllerContext"/>

/// </summary>

IValueProvider GetValueProvider(ControllerContext controllerContext);

}

}

· Extension point EleWise.ELMA.Calendar.ICalendarItemSearchProvider was added. It is intended for obtaining planned calendar elements with quick search support

· Sorting of the returned manager hierarchy tree was added in the method GetUserChiefsHierarchy(Models.IUser user) of the manager EleWise.ELMA.Security.Managers.UserManager.

User interface

Changes in the LDAP module

Manual and automatic synchronization of users imported from LDAP with automatic locking (according to the condition, specified in the import/synchronization filter) of ELMA users was implemented.

http://www.elma-bpm.ru/kb/assets/Butorina/927_132.png

In the LDAP module settings, you can enable/disable automatic synchronization and start manual synchronization.

http://www.elma-bpm.ru/kb/assets/Butorina/927_133.png

Display of parent tasks on the Gantt chart

Parent tasks are now displayed differently, depending on whether it is a stage task or not.

http://www.elma-bpm.ru/kb/assets/Butorina/927_134.png

Do not show project tasks in the calendar

“Do not show tasks in the calendar” parameter was added to project types. This option shows/hides project tasks of all types in the user calendar.

http://www.elma-bpm.ru/kb/assets/Butorina/927_135.png

Custom settings were added for projects (click on the page settings icon to open). The “Do not show tasks in the calendar” parameter is applied only to the specific project and user in this case.

http://www.elma-bpm.ru/kb/assets/Butorina/927_136.png

http://www.elma-bpm.ru/kb/assets/Butorina/927_137.png

Possibility to manually schedule project tasks in the calendar was added (regardless of the “Do not show tasks in the calendar” option).

http://www.elma-bpm.ru/kb/assets/Butorina/927_138.png

http://www.elma-bpm.ru/kb/assets/Butorina/927_139.png

Quick search was added to the calendar, in the Planned and Unplanned lists.

Selecting groups and organizational structure elements in Designer

Selectors for user groups and organizational structure elements were added in Designer, when selecting input/output attributes and binding attributes.

http://www.elma-bpm.ru/kb/assets/Butorina/927_140.png

http://www.elma-bpm.ru/kb/assets/Butorina/927_141.png

http://www.elma-bpm.ru/kb/assets/Butorina/927_142.png

When exporting/importing, UIDs are used to pass values.

If you create custom BPMN elements where it will be used, you need to specify interface IElementWithPropertyMap for PropertyMap.

Changes for informed users if the task is overdue

For users informed if a task or a document management task is overdue in a process:

· "Context variable" informed added

· "Initiator’s manager" informed added (the user’s superior, according to the organizational structure)

General improvements

· Text formatting in the Task Description field fixed.

· Possibility to combine cells in a column for single objects (only header, only editing field, etc.) was added.

· Possibility to hide the block header or the grid header for tables with configurable column width was added.

ELMA plugin for Visual Studio

Plugin version field was added to the About Program window, displaying the current version of the plugin. If the plugin and server versions do not match, the user will see a respective notification in the About Program window.

Possibility to change the designer/web server/package manager folder was implemented. To activate the respective buttons, run Visual Studio as the administrator.

http://www.elma-bpm.ru/kb/assets/Butorina/927_143.png

PublicAPI

CRM section:

Added object managers:

PublicAPI.CRM.Objects.LeadDublicateState

LeadDublicateStateFilterHelper PublicAPI.CRM.Objects.LeadDublicateState.Filter()

Added methods:

DublicateContractorFilterHelper PublicAPI.CRM.Objects.DublicateContractor.Filter()

PublicAPI.CRM.Objects.DublicateContractor.Filter() - filter changed:

Lead(Lead lead) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.CRM.Objects.LeadDublicateState.Filter() - filter changed:

Lead(Lead lead) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

 

List of changes in version 3.10.6

Code API. Public methods and interfaces

New methods for placing and releasing data by regions were added to ComplexCacheService:

/// <summary>

/// Get value from cache or calculate value and write it to cache, if not found

/// </summary>

/// <typeparam name="T">Value type</typeparam>

/// <param name="key">Key to store in cache</param>

/// <param name="timestampKey">Timestamp key</param>

/// <param name="timestampRegionKey">Region timestamp key</param>

/// <param name="valueAccessor">Function, that returns a value. It is invoked if information is not found in the cache</param>

/// <returns>Value</returns>

T GetOrAdd<T>(string key, string timestampKey, string timestampRegionKey, Func<T> valueAccessor);

 

/// <summary>

/// Get value from cache or calculate value and write it to cache, if not found

/// </summary>

/// <typeparam name="T">Value type</typeparam>

/// <param name="key">Key to store in cache</param>

/// <param name="timestampKey">Timestamp key</param>

/// <param name="timestampRegionKey">Region timestamp key</param>

/// <param name="valueAccessor">Function, that returns a value. It is invoked if information is not found in the cache</param>

/// <param name="timeout">Value store timeout</param>

/// <returns>Value</returns>

T GetOrAdd<T>(string key, string timestampKey, string timestampRegionKey, Func<T> valueAccessor, TimeSpan timeout);

 

/// <summary>

/// Update timestamp

/// </summary>

/// <param name="timestampKey">Timestamp key</param>

/// <param name="timestampRegionKey">Region timestamp key</param>

void RefreshTimestamp(string timestampKey, string timestampRegionKey);

 

/// <summary>

/// Update region timestamp

/// </summary>

/// <param name="timestampRegionKey">Region timestamp key</param>

void RefreshTimestampRegion(string timestampRegionKey);

Changes in export/import

1. Transfer of simple settings was added for document type export/import:

· Document name template

· Allow changing the document name

· Load version from file

· Scan version button

· Generate version from template

· Dispatch control

· Allow registering documents of these type several times

· Restrict the work with the document via the web interface

o Use a life cycle for documents of this type

2. Transfer of document groups was added for document type export/import.

Permissions in CRM

The service category “No category” for Contractors and Leads was returned to CRM. Algorithm: If the “Inherit from categories” box is selected and no category is assigned for a Contractor (Lead), then the “No category” permissions are automatically added to the “Inherited permissions” section.

General improvements in telephony

1. Saving UniqueId of the call to RelationshipCall. Hidden field on the call page for UniqueId.

2. Possibility to pass UniqueId to a configurable Url that opens instead of the call page.

User interface

Configuring forms in processes

All the elements, available for tasks (including Time report log tab and time report list) were added to the form builder for process tasks.

http://www.elma-bpm.ru/kb/assets/Butorina/927_128.png

Unnecessary elements were removed from the form builder for process start, such as Transition buttons, Process information and Process context properties container.

http://www.elma-bpm.ru/kb/assets/Butorina/927_129.png

Diagram export

Text overlay in the logo of diagrams exported as images was removed; the text is now localizable.

How it was:

How it is now:

 

Tasks

· When creating a sub-task with several executors, one entry with all the created tasks is added to the history.

· Creating overdue sub-tasks is forbidden.

Settings

Description of parameters that allow configuring the application was added in the Settings.config file. Description was added both for default parameters and for situational (hidden) parameters.

PublicAPI

Docflow section:

Added methods:

Boolean PublicAPI.Docflow.Document.ChangeStatus(Document document, LifeCycleStatus status)

Boolean PublicAPI.Docflow.Document.ChangeStatus(Document document, LifeCycleStatus status, String comment)

Boolean PublicAPI.Docflow.Document.CanChangeStatus(Document document, LifeCycleStatus status)

IEnumerable<LifeCycleStatus> PublicAPI.Docflow.Document.GetEnableStatuses(Document document)

Projects section:

PublicAPI.Projects.Objects.MaterialResource.Filter() - filter changed:

NotIds(Int64[] notIds) - Added

NotIds(List<Int64> notIds) - Added

 

List of changes in version 3.10.5

Document editing control changed

Document search was changed in the document editing controle:

· Instead of EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. Explorer – EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. DocumentExplorer is used

· Instead of EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. ExplorerUrl – EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. DocumentExplorerUrl is used

 

1. Method EleWise.ELMA.KPI.Managers.SmartTaskManager.CheckTaskExpiration(DateTime checkTime) was marked as obsolete.

2. Extension point EleWise.ELMA.BPM.Web.Common.ExtensionPoints. IFilterPortletGridId was marked as obsolete.

 

1. NHibernate package updated

2. FluentNHibernate package updated

User interface

Outgoing mail settings

In the outgoing mail settings in the administration section, the Use SSL property was replaced with the new Connection Protection property, which has three values: No, SSL, TLS. When loading settings from a database, the old parameters are automatically converted to the new: if No is selected in the Use SSL field, then No will be selected in the Connection Protection field. Otherwise, the value will be selected depending on the value of the Port for Sending Messages field.

Form builder

Possibility to hide the icon for creating object on process task/object forms was added.

This option is in the property dialog box:

https://www.elma-bpm.ru/kb/assets/Mikheeva/855_52.png

After selecting this option on the form (in Designer), the icon will be hidden both in the Designer and on the form in Web Application after publishing the object. Important: the object creation icon will be hidden for all the child object, but you can change it for each particular child object.

https://www.elma-bpm.ru/kb/assets/Mikheeva/855_53.png

Possibility to configure templates for properties of the Enumeration, Drop-down list, Object types

Example of configuring an Object type property (in this case, Task).

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_10.png

In Web Application, configured templates look like this:

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_11.png

Projects

1. Project plan publication monitor is now available to all users who has access to the Projects module. The monitor displays the projects the user has access to. If a publication error occurs and the user has permissions to manage the project plan in the monitor, the management tools for restarting the publication will also be available.

Telephony

1. Option that shows the call page before/after answering the call for all users was added.

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_12.png

2. Users can customize options of opening the call page

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_13.png

Morpher

1. New template tags for displaying the integer and the fraction part of a number was added – parameter for formatting number display was added for the tags (example - {IP:F}, where F is one of the standard number display formats). You can find formats here: https://msdn.microsoft.com/en-us/library/fzeeb5cd(v=vs.110).aspx

1. Advanced search form was added to document selection via search.

Document editing control changed

Advanced search form was added to document selection via search.

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_14.png

Diagram export

Now the image of the exported diagram contains the name in the header.

https://www.elma-bpm.ru/kb/assets/Mikheeva/819_123.png

Processes

Option for interrupting child processes in case of multiple operation start was added.

https://www.elma-bpm.ru/kb/assets/Mikheeva/819_124.png

Display of document type subscribers added

How it was:

https://www.elma-bpm.ru/kb/assets/Mikheeva/819_125.png

https://www.elma-bpm.ru/kb/assets/Mikheeva/819_126.png

How it is now:

https://www.elma-bpm.ru/kb/assets/Mikheeva/819_127.png

Now you can view subscribers by clicking Actions – View Subscriptions on the document page.

PublicAPI

Docflow section:

Added methods:

Void PublicAPI.Docflow.Objects.Tasks.AcquaintanceTaskGroup.Terminate(AcquaintanceTaskGroup group, String comment, Boolean sendNotification)

Void PublicAPI.Docflow.Objects.Tasks.AcquaintanceTaskGroup.Terminate(AcquaintanceTaskGroup group, Boolean sendNotification)

ApprovementListFilterHelper PublicAPI.Docflow.Objects.Tasks.ApprovementList.Filter()

Void PublicAPI.Docflow.Objects.Tasks.ApprovementTaskGroup.Terminate(ApprovementTaskGroup group, String comment, Boolean sendNotification)

PublicAPI.Docflow.Objects.Tasks.ApprovementList.Filter() - filter changed:

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

Processes section:

PublicAPI.Processes.Objects.WorkflowQueueItem.Filter() - filter changed:

StatusExecutionError(Boolean statusExecutionError) - Added

StatusExecutionActive(Boolean statusExecutionActive) - Added

Enums section:

Added enumerations:

PublicAPI.Enums.IntegrationAsterisk

PublicAPI.Enums.IntegrationAsterisk.Model

PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent

PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.DontOpen

PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Dial_DialBegin

PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Bridge

PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.VarSetBridgePeer

PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Join

PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.LikeTelephonySettings

PublicAPI.Enums.Types.Settings.EnumDisplayType

PublicAPI.Enums.Types.Settings.EnumDisplayType.Standard

PublicAPI.Enums.Types.Settings.EnumDisplayType.HorizontalGroup

PublicAPI.Enums.Types.Settings.EnumDisplayType.VerticalGroup

PublicAPI.Enums.Types.Settings.EnumDisplayType.Switch

PublicAPI.Enums.Types.Settings.DropDownListDisplayType

PublicAPI.Enums.Types.Settings.DropDownListDisplayType.Standard

PublicAPI.Enums.Types.Settings.DropDownListDisplayType.HorizontalGroup

PublicAPI.Enums.Types.Settings.DropDownListDisplayType.VerticalGroup

PublicAPI.Enums.Types.Settings.EntityDisplayType

PublicAPI.Enums.Types.Settings.EntityDisplayType.Standard

PublicAPI.Enums.Types.Settings.EntityDisplayType.HorizontalGroup

PublicAPI.Enums.Types.Settings.EntityDisplayType.VerticalGroup

 

List of changes in version 3.10.4

Code API. Public methods and interfaces

Extension point IElementWithViewTransformation, responsible for getting the required view for a specific task type, was added. It has the following methods:

· bool AcceptableElement(IElementWithView element) – for which task type the extension point is used;

· FormView GetFormView(IElementWithView element, IWorkflowTaskBase task) – get the element form.

Base realization of this extension point was implemented – BaseFormViewTransformation, which is executed for all the process task types and returns element.View, if no other realization was found. To child classes were implemented: UserTaskViewTransformation and DocflowViewTaskTransformation for process tasks and document tasks.

Documents

Possibility to create a document in a script without specifying a type

Projects

Possibility to add custom filters for the Gantt chart was added. To do so, create a file:
WebApplication\Modules\EleWise.ELMA.Projects.Web\Scripts\diagram\elma.gantt.userconfig.js
according to the template:
Web\Modules\EleWise.ELMA.Projects.Web\Scripts\diagram\elma.gantt.userconfig.template.js

User interface

Forest integration for LDAP was added

1. Use Forest parameter was added

2. Template import settings for the forest were added

https://www.elma-bpm.ru/kb/assets/Mikheeva/855_50.png

Designer

Debugging of custom activities was added (similar to process script debugging). It is available only after publishing the custom activity.

https://www.elma-bpm.ru/kb/assets/Mikheeva/855_51.png

PublicAPI

Docflow section:

Obsolete methods:

Document PublicAPI.Docflow.Document.Create(BinaryFile file, Folder folder, String name)

Document PublicAPI.Docflow.Document.Create(Folder folder, String name)

Document PublicAPI.Docflow.Document.Create()

 

List of changes in version 3.10.3

Code API. Public methods and interfaces

· Method LoadMetadata(string filename, bool throwEx) was added to MetadataSerializer. If the metadata were not found in the file, then depending on throwEx null (throwEx == false) or error (throwEx == true) will be returned.

· Three methods were added in the interface IElementWithExceptionFlows: CanHandleException, QueueExecutionTimeoutSupported and GetQueueExecutionTimeout.

· In the class ActivityExceptionFlowHelper method Execute was marked as obsolete.

· To implement automatic escalation triggered by error or timer in your custom activities, you need to implement interface IElementWithExceptionFlows (or redefine methods CanHandleExceptionByEscalation and QueueExecutionTimeoutSupported when inheriting from BPMNFlowElement)

User interface

Marketing

Marketing section was modified

1. Calendar and Statistics sections were added to the Marketing section.

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_1.png

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_2.png

2. Access to the Marketing Section permission was added to access settings.

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_3.png

3. When creating a marketing activity/event, the parent mark is displayed if any.

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_4.png

4. When creating events with utm marks, activities with these marks are created if there aren't any.

5. Date of archiving was added for activities.

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_5.png

6. Working with an activity budget was changed; now you need to add a new payment to change the budget.

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_6.png

7. For all the marketing events, the budget type was changed to “Total of nested object budgets” (the sum is calculated using the budget payments)

8. Changes on the activity page:

- statistics tab was added

- the algorithm for generating the list of leads was changed

- budget display was changed: the list of payments is displayed if the budget type is “Total of nested object budgets”

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_8.png

- additional warnings when sending activities to archive or deleting them were added

https://www.elma-bpm.ru/kb/assets/Mikheeva/927_9.png

Lead conversion

When converting a lead, it is now possible to create neither a deal nor a relationship. When choosing to create a deal or a lead, required fields on the form are validated.

Telephony

· Possibility to configure CallerId for each user, if using Asterisk.

· Possibility to configure URL that opens in case of an incoming call instead of a call page was added.
You can also pass the phone number and the callId to the address, by using {phoneString} and {callId} templates in the URL.
For example:www.google.com/search/?text={phoneString}, when receiving a call, the google.com page with the incoming number in the search string will open.

ELMA plugin for Visual Studio

Possibility to create ELMA Entity in the ELMA plugin for Visual Studio was removed. Possibility to edit exiting ELMA Entity remains.

PublicAPI

CRM section:

Added object managers:

PublicAPI.CRM.Objects.MarketingPayment

MarketingPaymentFilterHelper PublicAPI.CRM.Objects.MarketingPayment.Filter()

PublicAPI.CRM.Objects.MarketingPayment.Filter() - filter changed:

Name(String name) - Added

CreationDate(DateTimeRange creationDate) - Added

CreationAuthor(User creationAuthor) - Added

MarketingObjectBase(MarketingBase[] marketingObjectBase) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.CRM.Objects.MarketingActivity.Filter() - filter changed:

DateRange(DateTimeRange dateRange) - Added

PublicAPI.CRM.Objects.MarketingEffect.Filter() - filter changed:

DateRange(DateTimeRange dateRange) - Added

List of changes in version 3.10.2

ELMA plugin for Visual Studio

ELMA plugin now supports Visual Studio 2015.

New functions added to the template document generator:

Function for displaying date and time in a defined format - DateTimeFormat

Equivalent to DateTime.ToString("your format")

* - required parameter

Parameters:

[0]*: Date/time (DateTime)

[1]: Display format

Example: {DateTimeFormat({$Date}; ‘yy-MM-dd’)}

Function for displaying a number in a defined format - NumberFormat

Both standard formats and the number of decimal places are acceptable

* - required parameter

Parameter:

[0]*: Number (all numeric types, except for byte)

[1]: One of the standard or custom display formats (string)

[1]: Number of decimal places (all numeric types, except for byte)

-Note: if a number with a floating decimal point is passed as the second parameter, then the number of decimal places will be equal to the integral part of this number with rounding up

Example: {NumberFormat(2345.6789;3)}

Function for displaying a number as money. Displayed only in the Russian culture format - MoneyFormat

Number exponent separator is a space

In the same way, takes the format of the number of decimal places

* - required parameter

Parameters:

[0]*: Number (all numeric types, except for byte)

[1]: Number of decimal places (all numeric types, except for byte)

-Note: if a number with a floating decimal point is passed as the second parameter, then the number of decimal places will be equal to the integer part of this number with rounding up

Example: {MoneyFormat(23451234.6789;2)}

User interface

1. Possibility to insert images to email signature was added. In the settings, you can select what signature will be used for system emails: simple or HTML. You can add markup and images to an HTML signature.

2. Links to external and internal sub-process instances were added to the process instance map. Links to the parent process instance were added to the sub-process instance map.

Public API interfaces

Encryption providers

1. Interface ICryptoProvider was expanded: properties IsAttributesSupported and IsContentSupported were added

2. Abstract class AbstractCryptoProvider was added, which implements the interface ICryptoProvider

3. All encryption providers are inherited from AbstractCryptoProvider, instead of ICryptoProvider

Working with files

In the class EleWise.ELMA.Web.Mvc.Controllers. BinaryFilesController methods:

1. HasPermissionOnFile(BinaryFile file)

2. HasPermissionOnFile(BinaryFile file, out string errorMessage)

3. PrepareBinaryFile(BinaryFile file)

4. GetRanges(string rangesHeader, long fileLength, out long[] RangesStartIndexes, out long[] RangesEndIndexes) were marked as obsolete, the code of these methods was moved to the class EleWise.ELMA.Web.Service.FileUpDownHelper.

In the class EleWise.ELMA.Web.Service.FileUpDownHelper the following methods were additionally implemented:

1. GetContentRange(string rangeHeader, out long fileLength, out long startPos, out long endPos)

2. BinaryFile GetStorableBinaryFile(string id, out string errMessage)

3. GetCachedBinaryFile(string id, out string fileName, out string filePath, out string contentType)

4. Stream GetPartialFileStream(string filePath, out long fileLength, out long startOffset, out long endOffset, out bool isPartial, out string errMessage)

5. bool CreateOrAppendIncrementFile(ref Guid fileGuid, string fileName, Stream inputStream, long startPos, long endPos)

Class EleWise.ELMA.Files.RangeStreamWrapper was transferred from version 3.10.

PublicAPI

Docflow section:

Added methods:

DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Nullable<WorkTime> planWorkLog, Boolean forceEndDateFromTask, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)

DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Nullable<WorkTime> planWorkLog, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)

DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Boolean forceEndDateFromTask, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)

PublicAPI.Docflow.Objects.DocumentAssignUser.Filter() - filter changed:

User(User user) - Added

Enums section:

Added enumerations:

PublicAPI.Enums.Documents.DigitalSignature.SignatureGeneratingType.TemplateAndContent

PublicAPI.Enums.Documents.DocumentsDigitalSignature.SignatureGeneratingType.TemplateAndContent

PublicAPI.Enums.KPI.Performance.PerformanceMatrixStatus.NoComplete

PublicAPI.Enums.KPI.KPIPerformance.PerformanceMatrixStatus.NoComplete

List of changes in version 3.10.1

User interface

1. Ctrl+S shortcut was added for forms (views)

2. Behavior of the "Do not validate required fields" option was changed – validation is disabled only for context variables, for other variables on the form, validation remains.
This behavior works only for these elements:

a. Send for approval

b. Send for acquaintance

c. Make a decision

d. Create decision based tasks

e. Signing

f. Approval

g. Register document

h. Create document

3. The "Do not validate required fields" box was added for the following elements:

a. Send document

b. Make decision

c. Create decision based tasks

d. Signing

e. Approval

4. The "Validate required fields" box was added for the following elements:

a. Register document

b. Create document

PublicAPI (from version 3.9.5)

Docflow section:

Added object managers:

PublicAPI.Docflow.Permissions.TranslateSystemPermission

Processes section:

Added object managers:

PublicAPI.Processes.Permissions.TranslateSystemPermission

Portal section:

Added object managers:

PublicAPI.Portal.Security.PermissionsSecurity.TranslateSystemPermission

PublicAPI.Portal.CalendarEvent.PermissionsEvent.TranslateSystemPermission

Projects section:

Added object managers:

PublicAPI.Projects.Permissions.TranslateSystemPermission

List of changes in version 3.10.0

Libraries

New Oracle client.

Oracle.DataAccess is no longer used, Oracle.ManagedDataAccess is used instead. If Oracle.DataAccess is directly used in scripts, you need to either save it manually, or change it to use Oracle.ManagedDataAccess.

User interface

Additional EQL filter for documents

Additional EQL filter applied to a property with documents also filters recently used documents.

Locked users in a user group

When selecting users from a user group, locked users are excluded.

Searching users by organizational structure element

If you select a department in the organizational structure field when searching users, then the search result will display all the employees of the department and subordinate units. In Administration, the user filter has a parameter, indicating that only users included in the department (without subordinate units) should be searched.

Binding a process to stage change in the active sales funnel

When configuring processes in the sales funnel, you can also select the processes, that the current user cannot start.

Dynamic text field

The height of text fields in the web interface can be changed when entering data.

Nested object properties in blocks

You can configure display of nested object properties in blocks; they will be displayed in the list of entries.

Time report

Time report approved by default was added. The default approver can be selected in the user profile. If the default approver is not specified, the author of the time report object will be selected by default. The default approver for projects is identified as before.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_1.png

Public methods and interfaces

1. Property EleWise.ELMA.Projects.Models.IProjectMetadataHead.RelateLinks is marked as obsolete; it is not used in the application and will be deleted in the further versions. Property EleWise.ELMA.Projects.Models.IProjectMetadataHead.RelateLinksType is used instead.

2. Property OriginalItem was added in the interface EleWise.ELMA.Projects.Models.IProjectPlanItem. Used for identifying different versions of one project task.

Action when copying an object

New object property copying action “Save source link” was added. When copying a property, a link to the source object will be saved.

The old action "Always save via link" works similarly, but if the object referred in the link has already been copied (using the common copy operation), then this copied object will be used.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_2.png

CRM

Form builder supports leads

Searching and processing duplicates

Possibility to search and process duplicates was added.

Parameter in the global CRM settings for enabling/disabling duplicate search.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_3.png

Section in the CRM settings for configuring scoring tables.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_4.png

Scoring table and threshold value settings.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_5.png

Filters were added to the Leads subsection: current weak, previous week, current month, previous month. Table with quick lead filtering by statuses was added.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_6.png

Panel, displaying possible duplicates among contractors and leads was added to the lead information page

https://www.elma-bpm.ru/kb/assets/tazmieva/219_7.png

Report functioning changed

1. Report cache FastReport EleWise.ELMA.Reports.Services. FastReportRunCache was removed.

2. System reports are published automatically after the import.

Metadata functioning changed

1. Restriction on naming table columns user properties of metadata (Uid and TypeUid) was added.

Support of PostgreSQL

1. Support of PostgreSQL databases was added (starting with version 9.5) for all ELMA editions.

2. In NHibernate PostgreSQL dialect NpgsqlDriver driver was replaced with PostgreSqlDriver.

BPM App components system changed

1. Possibility to set restrictions on language, version and database to BPM App components was added.

2. BPM App complex component function, which allows nesting components inside other components, was added.

3. BPM App automatic deployment, which allows automatically installing packages when starting ELMA, was added.

User interface

BPM App component export changed

1. Button for exporting a complex BPM App was added.

2. Forms for defining and displaying BPM App component restrictions.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_8.png

https://www.elma-bpm.ru/kb/assets/tazmieva/219_9.png

Script editor

1. PublicAPI autocomplete was added in the scripts module.

2. Web service link generation mechanism was changed. The new mechanism is similar to adding web services in Visual Studio. Generation with the old method is also available.

How it was:

https://www.elma-bpm.ru/kb/assets/tazmieva/219_10.png

How it is now:

https://www.elma-bpm.ru/kb/assets/tazmieva/219_11.png

https://www.elma-bpm.ru/kb/assets/tazmieva/219_12.png

Template document generator – support of declensions in Russian

Functions for working with declensions and numbers in words were added.

1. Incline – returns a phrase in the specified case.

Function parameters:

1.

1. Phrase to decline (string type)

2. Case (string type)

3. Additional attributes for declining a phrase (IEnumarable<string> or params string[])

2. InclineMany – returns the phrase in the specified case, in plural.

Function parameters: see 1.

3. ChangeKind – changes the gender of an adjective.

Function parameters:

1.

1. Adjective in nominative case, masculine (string type)

2. Gender and number (string type)

4. AnotherGenderSecondName – get the last name of the other gender

Function parameters:

1.

1. Last name (string type)

5. KindOrNumber – get the gender or the number

Function parameters:

1.

1. Expression (string type)

2. Additional attributes (IEnumarable<string> or params string[])

6. GetPartOfFullName – get the full name or its part

Function parameters:

1.

1. Expression with the full name (string type)

2. The part to get (string type)

7. IsFullName – check, whether the expression is a full name

Function parameters:

1.

1. Expression (string type)

2. Additional attributes (IEnumarable<string> or params string[])

8. IsAnimated – check, if the expression is animate.

Function parameters: see 7

9. NumberToString – returns the specified number in words in the specified case

Function parameters:

1.

1. Number (type: long, int, float, double, decimal)

2. Case (string type)

3. Units of measurement (string type)

4. Volume of the decimal part in units of measurement (type: long, int, float, double, decimal)

5. Number display format (string type)

IMorpherFormat extension point implementation example

You need to add EleWise.ELMA.Morpher.Ru assembly and the following “usings”:

using EleWise.ELMA.ComponentModel;

using EleWise.ELMA.Morpher.Ru.Extensions;

using EleWise.ELMA.Morpher.Ru.Models;

[Component]

public class DefaultMorpherFormat : IMorpherFormat

{

public IEnumerable Formats { get; set; }

public void Init()

{

var formats = new List

{

new NumberToStringFormat

{

//display format ID

Id = "A",

//number display format

Format = String.Format("{0} {1} {2} {3}",

MorpherConsts.StringIntegerPart,

MorpherConsts.IntegerPartUnit,

MorpherConsts.StringFractionPart,

MorpherConsts.FractionPartUnit)

},

new NumberToStringFormat

{

Id = "B",

Format = String.Format("{0} {1} {2} {3}",

MorpherConsts.StringIntegerPart,

MorpherConsts.IntegerPartUnit,

MorpherConsts.FractionPart,

MorpherConsts.FractionPartUnit)

}

};

Formats = formats;

}

}

User declensions dictionary

Morpher cannot decline everything. In some cases, it does not know, how to decline a phrase correctly. For this, user declensions dictionary was added. There are two ways to fill in this dictionary.

1. Implementation of the IMorpherUserDictionary extension point.

2. Filling in the UserDictionary.xml file.

IMorpherUserDictionary extension point implementation example

You need to add the EleWise.ELMA.Morpher.Ru assembly and the following “usings”:

using EleWise.ELMA.ComponentModel;

using EleWise.ELMA.Morpher.Ru.Extensions;

using EleWise.ELMA.Morpher.Ru.Models;

 

[Component]

public class UserDictionary : IMorpherUserDictionary

{

public IEnumerable Init()

{

var list = new List();

 

var entry = new Entry();

//Set a gender for a phrase

entry.Gender = Gender.Feminine;

 

//Set declensions for the singular form

var singleForm = new SingleNumberForms();

singleForm.Nominative = "Лежащая книга";

singleForm.Genitive = "Лежащей книги";

singleForm.Dative = "Лежащей книге";

singleForm.Accusative = "Лежащую книгу";

singleForm.Instrumental = "Лежащей книгой";

singleForm.Prepositional = "Лежащей книге";

entry.Singular = singleForm;

 

// Set declensions for the plural form

var pluralForm = new SingleNumberForms();

pluralForm.Nominative = "Лежащие книги";

pluralForm.Genitive = "Лежащих книг";

pluralForm.Dative = "Лежащим книгам";

pluralForm.Accusative = "Лежащие книги";

pluralForm.Instrumental = "Лежащими книгами";

pluralForm.Prepositional = "Лежащих книгах";

entry.Plural = pluralForm;

 

list.Add(entry);

return list;

}

}

 

Filling in the UserDictionary.xml file

The template of this xml file is in the templates folder; it is called UserDictionaryTemplate.xml.

For phrases to be taken from this xml, you need to rename it to UserDictionary.xml and place it in the Web folder (on the same level as connection.config)

Example:

<РодИлиМножественноеЧисло>Женский род

<ФормыЕдинственногоЧисла>

<Именительный>Лежащая книга

<Родительный>Лежащей книги

<Дательный>Лежащей книге

<Винительный>Лежащую книгу

<Творительный>Лежащей книгой

<Предложный>Лежащей книге

<Местный>в Лежащей книге



<ФормыМножественногоЧисла>

<Именительный>Лежащие книги

<Родительный>Лежащих книг

<Дательный>Лежащим книгам

<Винительный>Лежащие книги

<Творительный>Лежащими книгами

<Предложный>Лежащих книгах

<Местный>в Лежащих книгах

Preview of audio/video files

Possibility to preview audio/video files was added in documents.

Possibility to use an external database as a report data source added

External data source concept was implemented.

Dialog box for creating and editing a data source in the Designer was modified.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_13.png

Now a data type can be internal, using HQL, SQL, and external, using SQL. At the moment, the system supports the following databases: Firebird, MSSQL, Oracle, PostgreSQL.

User interface

1. Possibility to assign control to a group of users in a project plan was added.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_14.png

https://www.elma-bpm.ru/kb/assets/tazmieva/219_15.png

2. The Subtasks tab of project tasks displays subtasks of outdated and unpublished plan versions with the “outdated plan” label.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_16.png

3. On a project task page it is possible to specify expected start date, due date and time report.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_17.png

4. Three display modes are now available for the Gantt chart in the project plan: Plan, Forecast, Fact (the Fact mode is unavailable in the editing mode).

https://www.elma-bpm.ru/kb/assets/tazmieva/219_18.png

5. Possibility to compare project plan versions was added. To do so, click on the https://www.elma-bpm.ru/kb/assets/tazmieva/219_26.png icon on the Versions tab of a plan page, or use the Actions menu in the toolbar). You can compare two plan versions and select one of the display modes for each of them: Plan, Forecast, Fact. You can also compare one plan version in different modes.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_19.png

6. Possibility to specify text inside a string field for any object attributes – add a tooltip – was added in the form builder in Designer.

https://www.elma-bpm.ru/kb/assets/tazmieva/219_20.png

https://www.elma-bpm.ru/kb/assets/tazmieva/219_21.png

7. Organization structure object:

7.1. Drop down list. Display of users, assign to a job position was added; the number of users is also displayed if there are more than one (option in the property settings).

https://www.elma-bpm.ru/kb/assets/tazmieva/219_22.png

https://www.elma-bpm.ru/kb/assets/Palshina/927_101.png

 

7.2 Search form. Hierarchy display was added when clicking on the organizational structure icon.

https://www.elma-bpm.ru/kb/assets/Palshina/927_100.png

Data model

1. Obsolete property was added to the interface EleWise.ELMA.Projects.Models.IProjectTaskBase, which indicates that a task does not pertain to the current plan version.

2. Duration property was deleted from the interface EleWise.ELMA.Projects.Models.IProjectPlanItem.

Changes in export/import

1. Export of data from objects marked as not participating in data export/import is forbidden.
2. Import of data, whose metadata is marked as not participating in export/import is forbidden.

User interface

Object selection window during export was changed

https://www.elma-bpm.ru/kb/assets/tazmieva/219_25.png

Now, if data export is forbidden for an object, the checkbox is replaced with an icon with a tooltip.

Support of new Rutoken plugin

Due to disabling of NPAPI in Chrome, the Rutoken integration code was rewritten to asynchronous calls.

Portal

Possibility to configure the color theme of ELMA web interface was added.

PublicAPI (from version 3.9.5)

CRM section:

Added object managers:

PublicAPI.CRM.Objects.DublicateContractor

PublicAPI.CRM.Objects.DublicateLead

DublicateLeadFilterHelper PublicAPI.CRM.Objects.DublicateLead.Filter()

PublicAPI.CRM.Objects.ExchangeCurrencyRate

ExchangeCurrencyRate PublicAPI.CRM.Objects.ExchangeCurrencyRate.GetExchangeRate(Currency currencyEstimated, Currency currencyValuation, DateTime date)

Double PublicAPI.CRM.Objects.ExchangeCurrencyRate.RecalculationSum(ExchangeCurrencyRate currencyRate, Double amounts)

ExchangeCurrencyRateFilterHelper PublicAPI.CRM.Objects.ExchangeCurrencyRate.Filter()

PublicAPI.CRM.Objects.RegularCurrencyRateImport

RegularCurrencyRateImportFilterHelper PublicAPI.CRM.Objects.RegularCurrencyRateImport.Filter()

Added methods:

Void PublicAPI.CRM.Lead.NotDublicate(Lead lead)

CurrencyFilterHelper PublicAPI.CRM.Objects.Currency.Filter()

LeadPersonPermissionFilterHelper PublicAPI.CRM.Objects.LeadPersonPermission.Filter()

PublicAPI.CRM.Objects.Currency.Filter() - filter changed:

CodeISONumerical(Nullable<Int64> codeISONumerical) - Added

CodeISOAlphabetic(String codeISOAlphabetic) - Added

ExpiryDate(Nullable<DateTime> expiryDate) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.CRM.Objects.DublicateLead.Filter() - filter changed:

Lead(Lead lead) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.CRM.Objects.ExchangeCurrencyRate.Filter() - filter changed:

ValuationDate(DateTime valuationDate) - Added

CurrencyEstimated(Currency currencyEstimated) - Added

CurrencyValuation(Currency currencyValuation) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.CRM.Objects.LeadPersonPermission.Filter() - filter changed:

User(User user) - Added

PermissionRole(Nullable<Guid> permissionRole) - Added

Lead(Lead lead) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.CRM.Objects.RegularCurrencyRateImport.Filter() - filter changed:

Provider(Nullable<Guid> provider) - Added

CurrencyEstimated(Currency currencyEstimated) - Added

CurrencyValuation(Currency currencyValuation) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.CRM.Lead.Filter() - filter changed:

SummaryLeadStatus(Nullable<SummaryLeadStatus> summaryLeadstatus) - Added

RelativeCreationDate(RelativeDateTime relativeCreationDate) - Added

RelativeChangeDate(RelativeDateTime relativeChangeDate) - Added

LeadDublicateStatus(Nullable<LeadDublicateStatus> leadDublicateStatus) - Added

Раздел Docflow:

PublicAPI.Docflow.Objects.DocumentAssignUser.Filter() - filter changed:

Project(Project project) - Added

ProjectPermissionId(Nullable<Guid> projectpermissionId) - Added

Projects section:

Deleted object managers:

PublicAPI.Projects.Objects.ProjectDatesPredictionTask

PublicAPI.Projects.Objects.ProjectDurationPredictionTask

Added object managers:

PublicAPI.Projects.Objects.Prediction

PublicAPI.Projects.Objects.Prediction.ProjectPredictionApprovalTask

PublicAPI.Projects.Objects.Prediction.ProjectPredictionDatesTask

PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment, User commentAuthor)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, CommentActionModel model)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, Comment comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, Comment comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, TaskPriority priority, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, Comment comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetTaskEndDate(Int64 taskId, DateTime newEndDate)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate, String comment)

Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.CompleteTask(Int64 taskId, CompleteTaskModel model)

ProjectPredictionWorkLogTaskFilterHelper PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.Filter()

PublicAPI.Projects.Objects.Prediction.ProjectPredictionApprovalTask.Filter() - filter changed:

ApproveStatuses(List<ProjectApprovalStatus> approveStatuses) - Added

ProjectPlan(ProjectPlan projectplan) - Added

ApproveStatus(Nullable<ProjectApprovalStatus> approveStatus) - Added

Statuses(List<TaskBaseStatus> statuses) - Added

TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Added

IsPlanned(Nullable<Boolean> isPlanned) - Added

TaskId(Nullable<Int64> taskId) - Added

TypeUid(Nullable<Guid> typeUid) - Added

CompleteStatus(TaskCompleteStatus completeStatus) - Added

Executors(User[] executors) - Added

DatePeriod(DateTimeRange datePeriod) - Added

TypeUids(Guid[] typeUids) - Added

TypeUids(List<Guid> typeUids) - Added

OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Added

OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Added

CreationAuthors(User[] creationAuthors) - Added

ExcludedTypeUids(Guid[] excludedTypeUids) - Added

ExcludedTypeUids(List<Guid> excludedTypeUids) - Added

Subject(String subject) - Added

Description(String description) - Added

CreationDate(RelativeDateTime creationDate) - Added

CreationAuthor(User creationAuthor) - Added

Executor(User executor) - Added

StartDate(DateTimeRange startDate) - Added

EndDate(RelativeDateTime endDate) - Added

Priority(TaskPriority priority) - Added

ParentTask(TaskBase parentTask) - Added

Status(TaskBaseStatus status) - Added

EndWorkDate(RelativeDateTime endWorkDate) - Added

InformTo(User[] informTo) - Added

NotShowInLists(Boolean notShowInLists) - Added

Category(TaskCategory category) - Added

IsEmulation(Boolean isEmulation) - Added

ProjectStatus(Nullable<ProjectStatus> projectStatus) - Added

ProjectIds(Int64[] projectIds) - Added

ProjectIds(List<Int64> projectIds) - Added

Project(Project project) - Added

InnerDocument(Document innerDocument) - Added

InnerDocuments(Document[] innerDocuments) - Added

FilterByEntity(Boolean filterByEntity) - Added

Contractor(Contractor contractor) - Added

Contact(Contact contact) - Added

Lead(Lead lead) - Added

Sale(Sale sale) - Added

InstanceId(Int64 instanceid) - Added

ProcessHeaderId(Nullable<Int64> processHeaderId) - Added

ActivityUids(Guid[] activityUids) - Added

ActivityUids(List<Guid> activityUids) - Added

SwimlaneUid(Nullable<Guid> swimlaneUid) - Added

ProcessHeaderIdList(Int64[] processHeaderIdList) - Added

ProcessHeaderIdList(List<Int64> processHeaderIdList) - Added

InstanceFilter(Filter instanceFilter) - Added

Resolution(Resolution resolution) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.Projects.Objects.Prediction.ProjectPredictionDatesTask.Filter() - filter changed:

ProjectPlan(ProjectPlan projectplan) - Added

Statuses(List<TaskBaseStatus> statuses) - Added

TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Added

IsPlanned(Nullable<Boolean> isPlanned) - Added

TaskId(Nullable<Int64> taskId) - Added

TypeUid(Nullable<Guid> typeUid) - Added

CompleteStatus(TaskCompleteStatus completeStatus) - Added

Executors(User[] executors) - Added

DatePeriod(DateTimeRange datePeriod) - Added

TypeUids(Guid[] typeUids) - Added

TypeUids(List<Guid> typeUids) - Added

OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Added

OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Added

CreationAuthors(User[] creationAuthors) - Added

ExcludedTypeUids(Guid[] excludedTypeUids) - Added

ExcludedTypeUids(List<Guid> excludedTypeUids) - Added

Subject(String subject) - Added

Description(String description) - Added

CreationDate(RelativeDateTime creationDate) - Added

CreationAuthor(User creationAuthor) - Added

Executor(User executor) - Added

StartDate(DateTimeRange startDate) - Added

EndDate(RelativeDateTime endDate) - Added

Priority(TaskPriority priority) - Added

ParentTask(TaskBase parentTask) - Added

Status(TaskBaseStatus status) - Added

EndWorkDate(RelativeDateTime endWorkDate) - Added

InformTo(User[] informTo) - Added

NotShowInLists(Boolean notShowInLists) - Added

Category(TaskCategory category) - Added

IsEmulation(Boolean isEmulation) - Added

ProjectStatus(Nullable<ProjectStatus> projectStatus) - Added

ProjectIds(Int64[] projectIds) - Added

ProjectIds(List<Int64> projectIds) - Added

Project(Project project) - Added

InnerDocument(Document innerDocument) - Added

InnerDocuments(Document[] innerDocuments) - Added

FilterByEntity(Boolean filterByEntity) - Added

Contractor(Contractor contractor) - Added

Contact(Contact contact) - Added

Lead(Lead lead) - Added

Sale(Sale sale) - Added

InstanceId(Int64 instanceid) - Added

ProcessHeaderId(Nullable<Int64> processHeaderId) - Added

ActivityUids(Guid[] activityUids) - Added

ActivityUids(List<Guid> activityUids) - Added

SwimlaneUid(Nullable<Guid> swimlaneUid) - Added

ProcessHeaderIdList(Int64[] processHeaderIdList) - Added

ProcessHeaderIdList(List<Int64> processHeaderIdList) - Added

InstanceFilter(Filter instanceFilter) - Added

Resolution(Resolution resolution) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.Filter() - filter changed:

ProjectPlan(ProjectPlan projectplan) - Added

Statuses(List<TaskBaseStatus> statuses) - Added

TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Added

IsPlanned(Nullable<Boolean> isPlanned) - Added

TaskId(Nullable<Int64> taskId) - Added

TypeUid(Nullable<Guid> typeUid) - Added

CompleteStatus(TaskCompleteStatus completeStatus) - Added

Executors(User[] executors) - Added

DatePeriod(DateTimeRange datePeriod) - Added

TypeUids(Guid[] typeUids) - Added

TypeUids(List<Guid> typeUids) - Added

OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Added

OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Added

CreationAuthors(User[] creationAuthors) - Added

ExcludedTypeUids(Guid[] excludedTypeUids) - Added

ExcludedTypeUids(List<Guid> excludedTypeUids) - Added

Subject(String subject) - Added

Description(String description) - Added

CreationDate(RelativeDateTime creationDate) - Added

CreationAuthor(User creationAuthor) - Added

Executor(User executor) - Added

StartDate(DateTimeRange startDate) - Added

EndDate(RelativeDateTime endDate) - Added

Priority(TaskPriority priority) - Added

ParentTask(TaskBase parentTask) - Added

Status(TaskBaseStatus status) - Added

EndWorkDate(RelativeDateTime endWorkDate) - Added

InformTo(User[] informTo) - Added

NotShowInLists(Boolean notShowInLists) - Added

Category(TaskCategory category) - Added

IsEmulation(Boolean isEmulation) - Added

ProjectStatus(Nullable<ProjectStatus> projectStatus) - Added

ProjectIds(Int64[] projectIds) - Added

ProjectIds(List<Int64> projectIds) - Added

Project(Project project) - Added

InnerDocument(Document innerDocument) - Added

InnerDocuments(Document[] innerDocuments) - Added

FilterByEntity(Boolean filterByEntity) - Added

Contractor(Contractor contractor) - Added

Contact(Contact contact) - Added

Lead(Lead lead) - Added

Sale(Sale sale) - Added

InstanceId(Int64 instanceid) - Added

ProcessHeaderId(Nullable<Int64> processHeaderId) - Added

ActivityUids(Guid[] activityUids) - Added

ActivityUids(List<Guid> activityUids) - Added

SwimlaneUid(Nullable<Guid> swimlaneUid) - Added

ProcessHeaderIdList(Int64[] processHeaderIdList) - Added

ProcessHeaderIdList(List<Int64> processHeaderIdList) - Added

InstanceFilter(Filter instanceFilter) - Added

Resolution(Resolution resolution) - Added

SearchString(String searchstring) - Added

Id(Int64 id) - Added

Query(String query) - Added

Find() - Added

PublicAPI.Projects.ProjectPlanItem.Filter() - filter changed:

NotIds(Int64[] notIds) - Added

NotIds(List<Int64> notIds) - Added

ItemTypes(List<ProjectPlanItemType> itemTypes) - Added

Statuses(List<TaskBaseStatus> statuses) - Added

HasChildrens(Nullable<Boolean> hasChildrens) - Added

StartPredictionDate(DateTimeRange startPredictionDate) - Added

EndPredictionDate(RelativeDateTime endPredictionDate) - Added

PredictionWorkLog(Nullable<WorkTime> predictionWorkLog) - Added

OriginalItem(ProjectPlanItem originalItem) - Added

PublicAPI.Projects.ProjectTaskBase.Filter() - filter changed:

Obsolete(Boolean obsolete) - Added

StartPredictionDate(DateTimeRange startPredictionDate) - Added

EndPredictionDate(RelativeDateTime endPredictionDate) - Added

PublicAPI.Projects.ProjectTaskBase.Milestone.Filter() - filter changed:

Obsolete(Boolean obsolete) - Added

StartPredictionDate(DateTimeRange startPredictionDate) - Added

EndPredictionDate(RelativeDateTime endPredictionDate) - Added

PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.Filter() - filter changed:

Obsolete(Boolean obsolete) - Added

StartPredictionDate(DateTimeRange startPredictionDate) - Added

EndPredictionDate(RelativeDateTime endPredictionDate) - Added

Enums section:

Added enumerations:

PublicAPI.Enums.CRM.Enums.SummaryLeadStatus

PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Closed

PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Deleted

PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.New

PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.InHand

PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Qualified

PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Unqualified

PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Dublicate

PublicAPI.Enums.CRM.Enums.LeadDublicateStatus

PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.New

PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.PossibleDublicate

PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.NotDublicate

PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.Dublicate

PublicAPI.Enums.Projects.RelateLinks

PublicAPI.Enums.Projects.RelateLinks.RealTime

PublicAPI.Enums.Projects.RelateLinks.AllowLinks

PublicAPI.Enums.Projects.RelateLinks.Early

PublicAPI.Enums.CRM.LeadCompareType

PublicAPI.Enums.CRM.LeadCompareType.Equal

PublicAPI.Enums.Metadata.CopyAction.SaveRef

1.Deleting nested sub-processes was implemented

2.Color type property

a.The default property color was changed to white

b.The font color changes automatically, depending on the depth of color

c.When changing the hex code, the color changes dynamically

3.The error that occurs when opening a file in an Attachment type variable was fixed

4.The table settings button was removed in Time Report – Time report search

5. Possibility to configure the displayed units of measurement when using time KPIs and metrics in the Gauge Panel, Diagram and Bar Chart portlets was added.

Apart from color highlighting, a respective message was added to the tooltip.