logo

List of critical changes from version 3.13.0 to 3.13.12 (inclusive)

List of changes in version 3.13.12

The possibility was added to use Enumeration type parameters with the single link type as sql parameters:

select * from TaskBase
where TaskBase.Priority=@OneEnum

The possibility was added to use Enumeration type parameters with the List link type as sql parameters:

select * from TaskBase
where TaskBase.Priority in (@ManyEnum)

When updating, make sure you don't use Enumeration type parameters with the List link type in reports. If you do, change the link type to single and publish the report.

Otherwise, for example, the query from the article https://kb.elma-bpm.com/article-3588.html won't work. The {$TaskPriority}=’High’} condition will always return false, since {$TaskPriority} will return a string representation of its type (if the TaskPriority parameter is an enumeration with the List link type).

Public methods and interfaces

The public overload was added for the method EleWise.ELMA.Model.Types.EnumDescriptor.GetPropertyInitExpression(ClassMetadata classMetadata, bool forList, PropertyMetadata propertyMetadata, bool forFilter = false), which gets the property initialization expression in accordance with the default value.

Time Report

The possibility to edit a time report object in a time report, which is pending approval. An entry is added to the history in this case. It is now also impossible to edit deleted time report items.

Diagnostics

1. Newtonsoft JSON updated to 11.0.2

2. The signature of the ExportExcel method was changed in the IPerformanceReportPage extension point. The new signature:

void ExportExcel(MetricsContainer metrics, ExcelReportBuilder builder);

3. An extension point was added

namespace EleWise.ELMA.Diagnostics.Reports.Performance
{
	/// <summary>
	/// Report builder extension point
	/// </summary>
	[ExtensionPoint]
	public interface IPerformanceReportPageColumnBuilder
	{
		/// <summary>
		/// Add a metric to the report
		/// </summary>
		/// <typeparam name="TMetric">Report metric type</typeparam>
		/// <param name="table">Report table</param>
		void AddColumn<TMetric>(MetricExcelTable<TMetric> table) where TMetric : IMetric;
	}
}

List of changes in version 3.13.11

Scheduler task result lifecycle setting was added. If a scheduler task result is not updated for more than the specified timeout, it will be considered overdue. After the timeout, the scheduler task is considered outdated and does not lock attempts to run new tasks. By default, the timeout value is 720 minutes. Example of the setting in the settings.config file: <add key="SchedulerJobRunInfo.Timeout" value="720" />.

PublicApi

An overload was added for the method EleWise.ELMA.CRM.Managers.LeadManager.SetStatus(ILead lead, LeadStatus leadStatus, string comment); it allows changing the status and adding a comment to a lead.

List of changes in version 3.13.10

Time Report

The IOvertimeWorkLogExtension interface is marked as Obsolete. The new interface IOvertimeWorkLogExtension2.cs was added instead of IOvertimeWorkLogExtension. Earlier implemented points should be rewritten, although the current implementation still work.

A button for reopening time reports was added to the time report page toolbar. A popup for reopening time report with the possibility to change the approver was added.

Document Management

A new interface ICryptoProvider2 was added, inherited from the ICryptoProvider interface.

A new method string GetFileHash(BinaryFile file, string algorithm) was added to the interface; it allows calculating hash by the specified algorithm.

If you don't need this feature, there is no need to implement it. The current implementation works.

Web Portal

When starting a process for an object (CRM object, document, an object from the objects section, performance matrix), after choosing a process, the process start event form is now loaded.

Projects

The IProjectTaskProperties interface is marked as not used.

List of changes in version 3.13.9

To avoid granting superuser permissions when connecting ELMA in PostgreSQL, it is now possible to specify a user with SuperUser permissions in the configuration file, on whose behalf the database will be created/deleted when starting the system.

Configuration file example:

<main.db connectionStringName="MainDB" type="EleWise.ELMA.Extensions.PostgreSQL.PostgreSQLProvider, EleWise.ELMA.Extensions.PostgreSQL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" backupEnabled="false" sysUser="postgres" sysPassword="MASTERKEY" />
<connectionStrings>
<add name="MainDB" connectionString="Host=127.0.0.1;Port=5432;Database=elma3;User Id=user;Password=qwerty;Unicode=true;" />
</connectionStrings>

In this example, the connection string specifies the user account with minimum permissions, while the main.db specifies the postgres superuser.

KPI

Implemented the possibility to use different periods, whose order is lower than the Month periodicity (i.e. the minimum periodicity is month).

Creating matrices:

  1. All the matrices with periodicity less or equal to the current are created by templates.
  2. If some matrices with periodicity lower than the current are created by template, new ones will not be created. To add matrices, select a period in accordance with the periodicity of the required performance matrix.

Performance and KPIs:

KPIs with periodicities lower than the performance matrix periodicity, do not affect the total performance in the matrix. It will be added to Help after completing the current tasks on KPI

Viewing a performance matrix:

When changing the periodicity, the user performance matrix page opens, with the selected periodicity.

List of changes in version 3.13.8

Public Methods

Added the possibility to get values by the filter for the registration offices in the controlled:

  • optional parameters were added to the method EleWise.ELMA.Documents.Docflow.Web.Controllers.RegistrationPlaceController.GetRegistrationPlace(long? accountingYear, string text = null, string filterProviderUid = null, string filterProviderData = null), which returns registration offices by year and filter;
  • optional parameters were added to the method EleWise.ELMA.Documents.Docflow.Web.Controllers.RegistrationPlaceController.PopupEntity(string inputId, [JsonBinder]ICollection<SelectListItem> selected, bool multiselect, long? accountingYear, string filterProviderUid = null, string filterProviderData = null), which returns a popup for selecting entity values.
  • The visibility area of public methods was changed to internal in the manager EleWise.ELMA.Security.Managers.UserSecurityProfileManager:
    • CreateProfile
    • FailedLogon
    • DisallowLogon
    • AllowLogon
    • ResetCountFailedLogon
    • ResetCountFailedLogonWithCheck
    • ResetCountFailedLogonAllUsers
    • SetForcedChangePasswordWithCheck
    • SetForcedChangePassword
    • ResetForcedChangePassword

Other

  • The properties of the entity EleWise.ELMA.Security.Models.UserSecurityProfile are changed periodically by direct queries to the database. Due to this, tracking such changes with IEntityEventsListener is impossible. For this purpose, use the extension point EleWise.ELMA.Security.Extensions IUserSecurityProfileEventHandler

KPI 

The possibility to work with several performance matrices was added:

+ the Show without Matrices button was removed from the All Employees and Company pages. By default, all the users are displayed according to the configured filter.

List of changes in version 3.13.7

Update

The update to 3.13.7 may take a while, because full database conversion is performed.

SDK

Lock manager optimization:

1. Database locks were changed (used by default in a cluster, if distributed cache is configured).

A lock used to be added to a corresponding entry of the DbLock table via FOR UPDATE. The lock was on the table entry throughout the critical section time, which negatively affected statistics, because locks were on the DbLock table a significant amount of time.

Now a lock is added by inserting an entry to DbLock. The lock is removed by deleting the entry. If there is an entry, it means that the lock is held by someone. Locks will appear in the DbLock table only if concurrent transactions attempt to insert/delete the same entries in the DbLock table at the same time.

2. Locks were implemented in Redis. This lock service must be enabled explicitly (configuration.config)

Example:

 

The lock logic is the same as in the database: if there is a key in Redis, lock is held by someone, no key - no lock. To work with Redis, you need at least three independent nodes (just three server instances, not a cluster or a sentinel) for failover safety. A lock is applied if it is added in at least half of the nodes. Redis lock provider is configured in configuration.config, by specifying connections with nodes (in the format, used for configuring Redis cache). The redlock algorithm is used, recommended by the official documentation.

3. Memory locks were implemented. This service applies locks only in the memory. It is enabled by default, if distributed cache is not configured, i.e. one ELMA node is used.

LockManager was reworked:

1. It is inherited from the ILockManager interface, therefore it is recommended to inject ILockManager in modules instead of using LockManager

2. The following LockManager's methods were marked as Obsolete: TryObtainLock, ObtainLock and ReleaseLock. Instead, use ILockManager interface methods Lock, TryLock, which return an IDisposable lock.

Web Portal

ZeroClipboard module was updated. Flash content was deleted from the system. The functionality was substituted with js scripts.

Process monitor

XSS vulnerability in the Process Monitor section was eliminated. The possibility to sort by the Context and Values columns was disabled in the Process Monitor section.

Messages

  • When archiving the messages, favorite messages are ignored;
  • Earlier archived messages are automatically moved to messages at the first system start after updating.

Public methods

Overload was added for the method EleWise.ELMA.Web.Mvc.Models.Boxes.AutocompleteEntityComboBox.InitCreatePopup(HtmlHelper helper, ClassMetadata child), which creates a pop-up window for creating an object (use it if the pop-up window is required for creating only one child class).

KPI

The possibility to work with several performance matrices was added:

+ A Mode for Working with Several Matrices was implemented
+ A user matrices page was created
+ Assignment/prolongation/editing/reassignment/approval of SMART tasks was changed
+ Redesign
+ All Employees and Company pages were changed
+ Collapsible panel model was extended
+ Messages features were added (comment, question)
+ Access permissions for a performance matrix instance were implemented
+ Extendable settings of employee performance display in System Settings - KPI was implemented
+ Soft deleting of performance matrix templates (ISoftDeletable) was implemented

Projects+

User interface

  1. Human resource editing page.
    • The calendar settings were changed for a system user resource (an explanation that the calendar of such a resource is configured in the user profile was added).

  1. "Take human resources into account" property was added to project type settings, which affects the calculation method used for task deadlines, time report limit, and task human resources workload. The default value is "Not used".

  1. "Add human resources to task executors/co-executors" setting was added to Projects+ module settings. The default value is No.

 

  1. When the "Add human resources to task executors/co-executors" setting is enabled, a column which allows selecting a task executor is displayed in the table on the report tab of the project task resources window. Other resources will be moved to co-executors.

  1. Resource Optimizer option was added to the Go To button in the project page toolbar. It was added to the Actions button in the project plan toolbar as well. When selecting it, the project plan opens in the resource optimizer.

  1. The Add Projects button in the resource optimizer was replaced with the Add Objects button. It allows adding not only Projects but Sub-Projects as well.

  1. The Resource Workload window in the resource optimizer was changed. The possibility to filter tasks by one of the objects, added to the resource optimizer, was implemented. Also, the window now allows replacing/adding a resource to the tasks of the currently viewed resource.

  1. Object type icons were added to the buttons for switching between plans in the resource optimizer. An icon for the plans, edited by the user, was added.

  1. In the Gantt chart, the menu items, not pertaining to filters, were moved to a new menu - Actions / Display Settings:
    • Show tasks longer than 8 days
    • Go to last task
    • Change the plan task dates

List of changes in version 3.13.6

Possibility to specify different translations for one source key

To specify several translations for one source key, use the following template:

Msgstr "[[Location11,Location12,Location13]]Translation1[[Location21,Location22,Location23]]Translation2"

Where Location - is the location where the resource is used. You can find the location from the comments:

1. 25cab08fff420add/Applications/BPM/EleWise.ELMA.BPM.Web/Modules/EleWise.ELMA.CRM.Web/Views/Lead/SelectTypes.cshtml:15 Lead_SelectTypes (For .cshtml files - from the Views folder down, replacing "/" with "_")

2. 25cab08fff420add/Applications/BPM/EleWise.ELMA.BPM.Web/Modules/EleWise.ELMA.Workflow.Processes.Web/Views/WorkflowInstance/ChangeTimer.cshtml:15 WorkflowInstance_ChangeTimer

3. 25cab08fff420add/SDK/EleWise.ELMA.SDK.Design/BPMApps/Views/BPMAppsRibbonPanelView.Designer.cs:118 Designer (For .cs - the file name)

Process monitor

Exporting the current process tasks column to Excel is now supported.

Notifications

Global settings for adding a header to the message body for SMS and email notifications were implemented.

List of changes in version 3.13.5

Public methods

1. Method Init(List<IDocument> documents, bool fillVersions = true), was moved from EleWise.ELMA.Documents.Docflow.Web.Models.ApprovementInfo and EleWise.ELMA.Documents.Docflow.Web.Models. AcquaintanceInfo to

EleWise.ELMA.Documents.Docflow.Web.Models.DocumentTaskBaseInfo<T>. Overload of this method was added Init(Dictionary<IDocument, IDocumentVersion> documentsAndVersions, bool fillVersions = true).

List of changes in version 3.13.4

Object attribute validation when publishing was added. If an attribute is invalid, the publication is interrupted with an error notification.

Public methods and interfaces

  1. EleWise.ELMA.Model.Types.IValidatableTypeDescriptor interface was added, which allows validating a type.
  2. Validation was added for the class ELMA.Model.Types.RefTypeDescriptor<T, SettingsT>.
  3. Validation was added for the class ELMA.Model.Metadata.EntityPropertyMetadata.

List of changes in version 3.13.3

General Improvements

The list of registration variants in the Records Management section was replaced with a drop-down list.

List of changes in version 3.13.2

User interface

If the task start date is earlier than the current date, a notification is shown, informing that a task cannot be rescheduled to an earlier date. If you need to change the task end date, the start date must remain unchanged.

Form builder

The On the read only form parameter was added to the button element. This parameter defines the possibility to display the created button on a Read-only form and after completing a process task.

This parameter includes three options:

  • Active – the button will appear on the form and the user will be able to click the button to complete an action;
  • Inactive – the button will be displayed on the form, but will remain inactive meaning that the user will not be able to use it;
  • Hidden – the button will be hidden and unavailable to the user.

Forms

Current field state validation is added to the creation/editing forms in:

  • Tasks
  • Process tasks (with all the builder forms)
  • Calendar, events
  • Projects - project tasks
  • Reports
  • Message
  • KPI (performance matrix template, goal, SMART task, activity)
  • CRM (contractors, meetings, calls, etc.)
  • Document management (document tasks, documents)

When closing/reloading a tab, the state change validation is triggered. If the user does not make any changes, then no warning dialog box appears when closing/reloading. Possibility to use validation in pop-ups was added.

Code changes

Method EleWise.ELMA.Projects.Managers.ProjectTaskBaseManager. ChangeTaskPropertyNotShowInLists(IProjectTaskBase task, bool saveAfterChange = false, bool updateStatus = true) was marked as obsolete and soon will be deleted; instead, use EleWise.ELMA.Projects.Managers.ProjectTaskBaseManager. ChangeTaskVisibility(IProjectTaskBase task, bool saveAfterChange = false).

List of changes in version 3.13.1

No changes

List of changes in version 3.13.0

General improvements

Channel name template in Asterisk settings, SIP or PJSIP is used by default;

Changes in the Reports module

To update system reports you do not need to additionally edit the ReportsDbStructure.xml file.

Code API. Public methods and interfaces

  1. Interface IObjectCreator is obsolete, instead, use IFormCreator
  2. Method bool EleWise.ELMA.Documents.Web.FullTextSearch.Extensions.HasUserFields (IDocumentFilter filter) is obsolete, instead, use void EleWise.ELMA.Documents.Web.FullTextSearch.Extensions.HasUserFields(IDocumentFilter filter, CheckFullTextSearchModel checkResult)
  3. The following methods were added:
  • EleWise.ELMA.Model.Metadata.EntityMetadata.GetAllTableParts(), which returns the list of all the blocks, pertaining to metadata (including all the nested blocks).
  • EleWise.ELMA.Model.Metadata.EntityMetadata.GetAllProperties(), which returns the list of all the properties, pertaining to metadata (including properties of all the nested blocks).
  • EleWise.ELMA.Model.Metadata.EntityMetadata.GetAllPropertiesAndTableParts(), which returns the list of all the properties and blocks, pertaining to metadata (including properties and blocks of all the nested blocks).

Changes in the Scheduler

If a task start date is a business day, and the number of specified business days is greater than it is, then the last business day will be the result.

Under business days, the counting number of the business day in a month is implied!

Time zones

ELMA Designer now features the Ignore time zones setting for properties of the Date/Time type. It allows storing and viewing this property without a time zone shift. For example, if the specified value is 01.01.2018 01:00:00 and the time zone is UTC +3, and the user who views it is in the UTC +1 time zone, the value will remain the same. However, if the Time box is not checked in a Date/Time property settings, it also will not be shifted in time zone.

User interface

A notification is added to the document search page, which is displayed when indexation is enabled. If the search conditions do not allow the system to use the full-text search (hierarchical search, advanced search, less than 3 characters in the search string) then you will see a notification, that the full-text search was not used and a list of reasons why.

Forms for transitions in processes. Forms for buttons on forms

1. Forms on transitions in processes

Forms on transitions in processes are configured in ELMA Designer, in the task settings window, on the Form (context) tab. 

To select a script that will be executed before the transition, go to the Advanced tab.

2. Form dependencies

Display of form dependencies was changed. Now the Forms (views) tab contains the Used in column in the Form list table, which shows how many time a form is used.

When you click on Used <number> time(s) a dialog box opens, which shows all the dependencies of this form.

The Used in tab was also added to pages. It has the same features.

Block settings

The Default Grouping setting was added to the Table tab of Block settings in ELMA Designer, which allows grouping by the selected object property.

CRM

Payment details for contractors were added

Document management

  • Default status selector was added to the document type life cycle settings in ELMA Designer. When creating a document, the status is initialized with the value, set in this selector.
  • The possibility to partially sign when approving was added

Full-text search

A notification was added to the document search page when the indexation is enabled. If filtering conditions do not allow the system to use full-text search (in case of hierarchic search, advanced search or fewer than three characters in the search string), the user will be shown a notification, that full-text search was not used along with a list of reasons.

Single sign-on

A new single sign-on mechanism was implemented. If only Windows authentication is enabled in the IIS settings for the site and SSPI.UseInPlaceAuth = true in the settings.config file, then the ELMA server will be able to get the current domain user from the received request via the root site and authenticate the user with the tools at hand.

Projects+

EQL search was added to the projects section.

Changes in PublicAPI

1. Methods for getting builders ProjectTaskBuilder(IProject project)MilestonBuilder(IProject project), WorkflowProjectTaskBuilder(IProject project) are marked as obsolete and replaced with methods GetProjectTaskBuilder(IProjectPlanObject planObject), GetMilestonBuilder(IProjectPlanObject planObject), GetWorkflowProjectTaskBuilder(IProjectPlanObject planObject)

2. EleWise.ELMA.Projects.Managers. ProjectPlanManager. Publish(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, bool terminateActiveProcesses, bool addToParticipants = true, List<long> closingWptPrevPublishIdsList = null) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers.ProjectPlanManager. Publish(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, IEnumerable<Pair<Guid, string>> conflicts)

3. EleWise.ELMA.Projects.Managers. ProjectPlanManager. Publish(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, bool terminateActiveProcesses, bool addToParticipants = true, List<long> closingWptPrevPublishIdsList =null) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers.ProjectPlanManager.Publish(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, IEnumerable<Pair<Guid, string>> conflicts)

4. EleWise.ELMA.Projects.Managers. ProjectPlanManager. ConflictsWithBudget(long newPlanId) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers.ProjectPlanManager. ConflictsWithBudgetForPlan(long newPlanId)

Public methods and interfaces

1. The project plan property EleWise.ELMA.Projects.Models.ProjectPlan: IProject Project is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Model.Entities.EntityReferences.ReferenceOnEntity PlanObject.

2. Method EleWise.ELMA.Projects.Components.ProjectPlanExecutorHelper.GetProjectTaskExecutors(IProjectTaskExecutor executor, IProject project) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Components.ProjectPlanExecutorHelper.GetTaskExecutors (IProjectTaskExecutor executor, IProjectPlanObject planObject).

3. Method of the extension EleWise.ELMA.Projects.Extensions.ProjectsExtension.PublishPlanState (this IProject project) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Extensions.ProjectsExtension.GetPublishPlanState (this IProjectPlanObject planObject).

4. Method of the extension EleWise.ELMA.Projects.Extensions.ProjectsExtension.Plan(this IProject project) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Extensions.ProjectsExtension.GetPlan (this IProjectPlanObject planObject).

5. Method EleWise.ELMA.Projects.Managers. MilestoneManager.Create (IProject project) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. MilestoneManager.CreateTo (IProjectPlanObject planObject).

6. Method EleWise.ELMA.Projects.Managers. ProjectTaskManager.Create (IProject project) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectTaskManager.CreateTo (IProjectPlanObject planObject).

7. Method EleWise.ELMA.Projects.Managers. WorkflowProjectTaskManager.Create (IProject project) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. WorkflowProjectTaskManager.CreateTo (IProjectPlanObject planObject).

8. Method EleWise.ELMA.Projects.Managers. ProjectManager. ChangePlanRunProcess (IProjectPlan plan) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanManager. ChangePlanRunProcess (IProjectPlan plan).

9. Method EleWise.ELMA.Projects.Managers. ProjectManager. ChangeTaskPropertyNotShowInLists is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanManager. ChangeTaskPropertyNotShowInLists.

10. Method EleWise.ELMA.Projects.Managers. ProjectManager. IsAvailableImportFromMsProject (IProjectPlan projectPlan) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanManager. IsAvailableImportFromMsProjectTo (IProject project).

11. Method EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. HasPermissionToApprove(IProjectMetadataHead metadataHead) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. HasPermissionToApprove(IProjectPlanObject planObject).

12. Method EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. HasPermissionToApprove(IUser user, IProjectMetadataHead metadataHead)is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. HasPermissionToApprove(IUser user, IProjectPlanObject planObject).

13. Method EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. GetUsersToPermissionToApprove(IProjectMetadataHead metadataHead) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. GetUsersToPermissionToApprove(IProjectPlanObject planObject).

14. Method EleWise.ELMA.Projects.Managers. ProjectPlanItemManager. AddExecutorsToResourcesExec(IProjectPlanItem planItem, IProject project = null, bool save = true) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanItemManager. AddExecutorsToResources(IProjectPlanItem planItem, bool save = true).

15. Method EleWise.ELMA.Projects.Managers. ProjectPlanItemManager. GetExecutors(IProjectPlanItem planItem, IProject project) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanItemManager. GetExecutors(IProjectPlanObject planObject, IProjectPlanItem planItem).

16. Method EleWise.ELMA.Projects.Managers. ProjectPlanManager. Create(IProject project, Action<IProjectPlan> preSave = null) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanManager. CreateTo(IProjectPlanObject planObject, Action<IProjectPlan> preSave = null).

17. Method EleWise.ELMA.Projects.Managers. ProjectPlanManager. GetNewNumber(IProject project, bool save = false) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanManager. GetNewNumberTo(IProjectPlanObject entity, bool save = false).

18. Method EleWise.ELMA.Projects.Managers.ProjectPlanManager. GetLastSavedPlanIdForProject(long projectId) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanManager. GetLastSavedPlanIdForProjectTo(ReferenceOnEntity entity).

19. Method EleWise.ELMA.Projects.Managers. ProjectPlanManager.CreateOrClone(IProject project, IProjectPlan oldPlan) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanManager.CreateOrCloneTo(ReferenceOnEntity refPlanObject, IProjectPlan oldPlan).

20. Method EleWise.ELMA.Projects.Managers. ProjectPlanManager. GetCurrentPlan(IProject project) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use IProject.CurrentPlan.

21. Method EleWise.ELMA.Projects.Manager. ProjectPlanManager s. GetPlanByNumber(IProject project, long number) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. ProjectPlanManager.GetPlanByNumberTo(IProjectPlanObject planObject, long number).

22. Method EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. CheckProjectPublishing(long projectId) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use

EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. CheckPublishing(ReferenceOnEntity planObject).

23. Method EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. IsProjectPublishing(long projectId) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. IsPublishing(IProjectPlanObject planObject).

24. Method EleWise.ELMA.Projects.Managers. IsProjectPlanPublishing(long planId) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. IsPublishing(long planId).

25. Method EleWise.ELMA.Projects.Managers. IsProjectMetadataHeadPublishing(Guid headUid) is marked as obsolete, it is not used in the application and will be removed in the upcoming versions. Instead, use EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. IsPublishing(Guid planObjectTypeUid).