Hi Community,

1- Is there any set of practices to optimize Bussiness Processes ?

Ex- I already know that for 'Read Elements' we should only choose to read the fields we use through the process., and NOT all the fields of the Object.

 

2- Is it a good practice that for processes that are used often and that consume a lot of time, to replace the low code elements 'Add Data' od 'Modify Data' with user tasks ( C#) ?

 

Thank you

Sasori

Like 2

Like

6 comments
Best reply

Hello,

 

There are indeed several practices that can help optimize business processes:

- Minimize unnecessary actions: Similar to your example of reading only the required fields, it's a good practice to minimize unnecessary actions within a process. This includes reducing unnecessary data queries, calculations, or validations that may not contribute to the outcome.

- Use conditional branching wisely: Avoid excessive or complex branching conditions within a process, as it can make the process harder to understand and maintain. Simplify the logic by using conditions that are essential to the process flow.

- Optimize data retrieval: When retrieving data from external systems or databases, consider using filters and conditions to retrieve only the necessary data. This can improve the performance of the process and reduce unnecessary data processing.

- Monitor and measure process performance: Regularly monitor and measure the performance of your business processes. Use the built-in analytics tools to identify bottlenecks, areas for improvement, and opportunities for optimization.

2. It would be nice to create processes with no-code, but Creatio coverts them to C# code

Hi Vladimir, thank you for your answer :)

So using a 'user task' insted of low a low code element doesnt actually improve the performance ?

What is you suggestion in improving the performance of a business process ?

Hi community,

Any up-date regarding this topic ?

Sasori

Hi Creatio community,

Any up-date regarding the topic ?

Sasori

Hello,

 

There are indeed several practices that can help optimize business processes:

- Minimize unnecessary actions: Similar to your example of reading only the required fields, it's a good practice to minimize unnecessary actions within a process. This includes reducing unnecessary data queries, calculations, or validations that may not contribute to the outcome.

- Use conditional branching wisely: Avoid excessive or complex branching conditions within a process, as it can make the process harder to understand and maintain. Simplify the logic by using conditions that are essential to the process flow.

- Optimize data retrieval: When retrieving data from external systems or databases, consider using filters and conditions to retrieve only the necessary data. This can improve the performance of the process and reduce unnecessary data processing.

- Monitor and measure process performance: Regularly monitor and measure the performance of your business processes. Use the built-in analytics tools to identify bottlenecks, areas for improvement, and opportunities for optimization.

It is generally recommended to use low-code elements like "Add Data" or "Modify Data" within processes whenever possible. These elements are designed to work efficiently with the platform's data structures and provide a simplified way to interact with the database.

Replacing low-code elements with custom user tasks using C# should be considered when there are specific requirements or complex business logic that cannot be achieved using the standard functionality. However, using custom user tasks introduces additional complexity, development effort, and maintenance overhead. It's important to carefully evaluate the trade-offs and assess whether the benefits of using custom code outweigh the potential drawbacks.

Show all comments

Hi, Is it possible to change the "number of active background processes" referenced on the acadamy information Here

 

 

I'm trying to get more than 50 parallel processes but i can't find a way to do it. The box running the portal has enough to do it.

Like 0

Like

4 comments

Hello,

 

The maximum amount of business processes that can be run simultaneously in the background is 5 for each application (for example, if you have two nodes with two apps on them but one database - the number of business processes will be already 10).



Alternatively, you can run business processes not only in the background but also "live" (which means you will see the uploading mask in front of you while business processes are running). This way, you can run plenty business processes at once but please take into consideration the memory capacity of the machine

Thank you for the answer.

 

I will try to not run it in th background to see how much faster it is.

 

So the app doesn't care about the number of processors, or threads available on IIS, it's a fixed value based on the number of nodes?

 

 

Thanks

Luciano De Munno,

 

Yes, it's fixed value based on the number of nodes.

Bogdan,

When you say "Live" you mean to uncheck the Run current and following elements in background, right? Or is there another setting?

Show all comments

In Freedom UI sections (ie Customer 360 Accounts and Contacts sections) I can't find the way to apply an advanced filter.

I see it's possible to create folders and set their filters but I don't find the same "Switch to advanced mode" action available in classic UI Creatio sections.

How can a user apply an advanced filter without the need of folders?

Thanks

Like 6

Like

6 comments

Did you find a method to apply advanced filters? I have the same problem here. 

Matthias Bendel,

 

At the moment there is not such functionality in the Freedom UI, but we already registered this idea for our R&D team and it may appear in future releases.

Hi! Is there any news regarding this feature?

 

Csilla Kiss,

Hello!

 

We are still working on this functionality, the R&D team has a task, so it should be available soon in new releases. 



Best regards,

Anton

 

Anton Starikov,

Hi!

Maybe you know at what release it shoud be? After your message already released two version, but still no functionality(

Anton Starikov,

Hi Anton, Is there any news on when we can expect this? It's a really useful feature 

Show all comments

Good day!

Task: Upon changing the Type field in the account card, export all records from the section  to a CSV file on the user's computer.

You encountered an error message: 'File' does not contain a definition for 'WriteAllText'. However, you have included the using System.IO; directive.



Code:

 

  namespace Terrasoft.Configuration

{

    using Common;

    using System;

    using System.Linq;

    using Terrasoft.Core;

    using Terrasoft.Core.Entities;

    using Terrasoft.Core.Entities.Events;

    using Terrasoft.Core.Factories;

    using Newtonsoft.Json;

    using System.IO;

    #region Class: CHAccount_Custom_1EventListener

    [EntityEventListener(SchemaName = "Account")]

    public class CHAccount_Custom_1EventListener : BaseEntityEventListener

    {

        Entity _entity;

        UserConnection _userConnection;

        public UserConnection UserConnection => _userConnection ?? (_userConnection = _entity?.UserConnection);

        #region Methods: Public

        public override void OnSaved(object sender, EntityAfterEventArgs e)

        {

            base.OnSaved(sender, e);

            _entity = (Entity)sender;

            _userConnection = _entity.UserConnection;

            var typeId = _entity.GetTypedColumnValue("TypeId");

            // Check if the saving event occurred for the Account object.

            if (typeId == new Guid ("f2c0ce97-53e6-df11-971b-001d60e938c6"))

            {

                // Retrieve data of the accounts from the Account object.

                EntitySchemaQuery esq = new EntitySchemaQuery(_entity.Schema);

                esq.AddColumn("Name");

                esq.AddColumn("CreatedOn");

                EntityCollection collection = esq.GetEntityCollection(UserConnection);

                if (collection != null && collection.Count > 0)

                {

                    // Create a CSV file.

                    string csvContent = "Name,Date\n";

                    foreach (Entity entity in collection)

                    {

                        string name = entity.GetTypedColumnValue("Name");

                        DateTime date = entity.GetTypedColumnValue("CreatedOn");

                        csvContent += $"{name},{date.ToString("yyyy-MM-dd")}\n";

                    }

                    // Save the CSV file to the C drive of the user's computer.

                    string filePath = @"C:\Accounts.csv";

                    File.WriteAllText(filePath, csvContent);

                }

            }

        }

        #endregion

    }

    #endregion

}

 

Like 1

Like

2 comments
Best reply

Hi,

 

It happens because the system thinks that File is the Terrasoft.Configuration.File class by default. You need to specify complete class path (System.IO.File) in the code:

 

System.IO.File.WriteAllText(filePath, csvContent);

 

for the code to publish successfully.

Hi,

 

It happens because the system thinks that File is the Terrasoft.Configuration.File class by default. You need to specify complete class path (System.IO.File) in the code:

 

System.IO.File.WriteAllText(filePath, csvContent);

 

for the code to publish successfully.

Oleg Drobina,

Thank you very much, that helped."

Show all comments

Hello community,

Is it possible to refresh a dashboard widget in an AccountPageV2 schema, without reloading the whole entity?

Thank you,

Sasori

Like 1

Like

2 comments

HI community,

Any update regarding this question?

Sasori

Hello,

 

We have checked this and unfortunately it is not possible to set this up in the system using basic tools. However, we already registered this idea for our R&D team and such functionality may appear in future releases.

Show all comments

Hi, 

 

I have to read the current user timezone from their profile in Creatio.

I have found the object name - SysUserProfile (Title - User profile)

But i cannot read this object in the business process read element. 

Please help urgently.

 

Like 0

Like

2 comments

Hi Akshit,

Try writing an esq query in script task 

https://community.creatio.com/questions/how-create-or-update-record-usi…

Hello,

 

There is no basic method for reading the time zone in a business process.

I will register the idea for future versions.

Show all comments

Hello.

 

For now

request.$context.LookupPropName = undefined

clear the value, but not triggers any change events on page.

 

How can i clear lookup value on the page with triggering 

crt.HandleViewModelAttributeChangeRequest request?

Like 1

Like

1 comments

Hello,

It looks like the only possible solution for you would be to clear the value inside the business process.

Otherways you just don't trigger the handler.

Show all comments
hello, I would like to know what the error is due to, 
perform a business process in the local environment, 
but I try to import the package in the dev environment, 
it throws the following error with the business processes

An error occurred while generating the source code of the 
"AnalisisCancelacionPolizaLDFTProcess" schema in the 
"CancelacionPolizaLDFT" package. Uid e202d880-264f-4aa5-876d-ad3a59567156: 
Error resolving type specified in JSON 
'System.Collections.Generic.Dictionary`2[[System.Guid, System.Private.CoreLib],
[System.Collections.ObjectModel.Collection `1 
[[System.Guid, System.Private.CoreLib]], System.Private.CoreLib]], 
System.Private.CoreLib'. Path '$type', line 1, position 222.
2023-05-24 19:59:58,541 Newtonsoft.Json.JsonSerializationException: 
Failed to resolve type specified in JSON 
'System.Collections.Generic.Dictionary'2
[[System.Guid, System.Private.CoreLib],[System. Collections. ObjectModel.Collection`1[[System.Guid, System.Private.CoreLib]], 
System.Private.CoreLib]], System.Private.CoreLib'. 
Path '$type', line 1, position 222. ---> 
Newtonsoft.Json.JsonSerializationException: Could not load assembly 
'System.Private.CoreLib'.
Like 0

Like

1 comments

Good day,

 

Typically this error occurs when you are trying to install a package from the .Net Core version of the system to the .Net Framework variation.

 

Please make sure that the environments that you are working on and the target ones are identical in the version in order to ensure the stability of the systems after transferring the customizations.

 

Thank you.

Show all comments

Hi all, 

 

I've long wondered how best to set up the configuration when you have many objects and related schemas, etc. that all depend on each other. Let's say we have "Accounts", "Contacts", "Agents" "Feedback", "Bookings" and so on. 

 

All of these objects have either a dependency based on a lookup of the other, or they have a related list on a page schema. 



I am attempting to try and separate out, but it's not possible without causing dependency issues. I noticed that Creatio's base configuration copes with this by creating many copies of a object, and adding them in packages such as "ContactInAccount". This seems like it would be hard to manage from a user level. 



Would most just add all the objects mentioned above into a single package to decrease complexity? 



Thanks

Harry

Like 0

Like

1 comments

Hello,

 

When setting up the configuration for multiple objects with interdependencies, there are various approaches you can take. Let's consider some strategies to help you manage the complexity effectively:

  1. Analyze interdependencies: Start by analyzing the interdependencies between the objects. Identify which objects depend on each other and how they are related. This will help you understand the relationships and dependencies that exist within your system.

  2. Consider modularization: Instead of including all objects in a single package, you can consider modularizing your configuration. Divide your objects into logical modules based on their functionality or business domains. 

  3. Use shared packages: If you have objects that are commonly used across multiple modules or have shared dependencies, you can create separate packages for these shared objects. This way, you can include these packages in the respective modules that require them. 

  4. Leverage lookup fields and related lists: When configuring the objects, utilize lookup fields and related lists to establish the relationships between them. This allows you to reference and display related records without creating redundant copies of objects.

  5. Test and validate: Regardless of the approach you choose, it's crucial to thoroughly test and validate your configuration to ensure that the interdependencies and relationships are properly maintained. This will help identify any issues or conflicts early on.

Show all comments

Hi, 

 

we have a new requirement of the customer like when we perform the import from excel, the customer wants to change the screens while performing the import process. as shown in the picture. 

 

 

File attachments
Like 0

Like

1 comments

Hello,

 

unfortunately, because of the fact that the mechanism behind the import process is quite difficult to customize as it has some core dependencies, there is no possibility to create those changes you are talking about at the moment.

 

Regards,

Gleb.

Show all comments