HIi,

I have a question regarding passing clicked data from list in business process. Using sub-process i was able to get the clicked values ( i think ). 



However i want to pass the value via Read Data for these ID's. I tried several parameter but ended not showing after i click the <?> in the read object. How do i obtain and loop for each of the ID's?



Thanks before!

Like 0

Like

3 comments

Hello,

If I understand your request correctly, you need to read a collection of records in the main process and then pass this collection into a sub-process element. The sub-process will then run as a separate iteration for each of the records.

You can find the specific instructions on how to set up processing of a collection of records in this article:

https://academy.creatio.com/docs/8.x/no-code-customization/bpm-tools/bu…

Hello.

Thanks for the reply. The screenshot i provided is the trace data from the main process, which already gets the selected ID from the list. 

 

However when i try to read the returned ID, it does not show in parameters. How do i read these ID from the Sub Process then proceed to modified them?

 

 

Kevin Samuel,

In Creatio, collection processing works the other way around. You should read the collection of records in the parent process and pass it into the sub-process. The sub-process will then automatically run one iteration per record from that collection. 

Because of that, the returned value is a collection, so it won’t appear as a single Id in Read data.

The correct setup is:

In the parent process: read a collection of records and pass the the collection into the sub-process
In the sub-process: define an input parameter for the current record Id
Use that Id directly in Read data / Modify data within the sub process.

So the sub-process itself handles the iteration. There’s no need to loop or re-read IDs in the parent.

Show all comments
"usr.FutureDateValidator": {
                validator: function (config) {
                    return function (control) {
                        let value = control.value;
                        
                        // This part right here //
                        if (value.readonly) {
                            return null;
                        }
            
                        let selectedDate = value instanceof Date ? value : new Date(value);
                        let today = new Date();
                        today.setHours(0, 0, 0, 0);
                        selectedDate.setHours(0, 0, 0, 0);
            
                        let valueIsCorrect = selectedDate >= today;
            
                        return valueIsCorrect ? null
                            : {
                                "usr.FutureDateValidator": {
                                    message: config.message
                                }
                            };
                    };
                },
                params: [{ name: "message" }],
                async: false
            }

This is a custom validation I made to validate a "Date Picker" component only for today and the following days. So it is unable to use past dates. 

The problem occured when modifying the field's value after I save, then modifying another field that is not the date picker, it will run this custom validation again. So if the data was saved the previous days, this custom validation will validate that date picker field.

The question is how do I read the value's "Read-Only" so I can turn off the validation when its value is 'true'?

Or if there is a better way to configure this validation, I will be happy to change it.

 

Notes: 

  • This is a custom package (outside creatio's source package)
  • Validate this field before it is saved
  • After saving, the validation is turned off
  • More than one is using this validation
  • If possible, can edit it ONLY when the field (date picker) is edited (not other fields)

 

Thanks for helping, ask me more questions if the information is not enough.

Like 2

Like

4 comments
Best reply

You can turn on/off the validator so it only applies under the scenario you'd like.

Turn on:

request.$context.enableAttributeValidator("TheAttributeName", "TheValidatorName");

Turn off: 

request.$context.disableAttributeValidator("TheAttributeName", "TheValidatorName");

Note, the validator name there is whatever you named it when added to the attribute (which might not be the same as the actual validator). I don't know enough about the scenario, but if this is only something that would be populated when adding a new record maybe something like this would work? 

{
    request: "crt.HandleViewModelInitRequest",
    handler: async (request, next) => {
        await next?.handle(request);
         
        const cardState = await request.$context.CardState;
        if (cardState == "add" || cardState == "copy") {
            // enable the validator here
        }
        else {
            // disable the validator here
        }
    }
}

Ryan

You can turn on/off the validator so it only applies under the scenario you'd like.

Turn on:

request.$context.enableAttributeValidator("TheAttributeName", "TheValidatorName");

Turn off: 

request.$context.disableAttributeValidator("TheAttributeName", "TheValidatorName");

Note, the validator name there is whatever you named it when added to the attribute (which might not be the same as the actual validator). I don't know enough about the scenario, but if this is only something that would be populated when adding a new record maybe something like this would work? 

{
    request: "crt.HandleViewModelInitRequest",
    handler: async (request, next) => {
        await next?.handle(request);
         
        const cardState = await request.$context.CardState;
        if (cardState == "add" || cardState == "copy") {
            // enable the validator here
        }
        else {
            // disable the validator here
        }
    }
}

Ryan

Ryan Farley,

Hi Ryan,

Thank you for the suggestion. I appreciated that you showed me another way to handle the validation.

It is indeed convincing to use it based on the scenario I would use. But after I tried implementing it onto my page, it seems the "... disableAttributeValidator..." is not active.

Therefore my "FutureDateValidator" is still on and validating the field. I edit the handler similar to your example. This is one of the example field I use to handle it:

const fieldDateState1 = await request.$context.PDS_UsrMeetingDate_e6xd3ts;
				
if (fieldDateState1 === null || fieldDateState1 === undefined || fieldDateState1 === "") {


request.$context.enableAttributeValidator("PDS_UsrMeetingDate_e6xd3ts", "FutureDateValidator");

} else {

request.$context.disableAttributeValidator("PDS_UsrMeetingDate_e6xd3ts", "FutureDateValidator");

}

Is this correct? Because it is not working as I explained.

Do you have any more ways to configure this ?

Thanks for helping. I'm still open to more suggestions.


 

Oh I have found the issue. 

It was because I use "crt.HandleViewModelInitRequest", instead of "crt.HandleViewModelAttributeChangeRequest". 

Thanks for your help!

 

Ryan Farley,

Hi Ryan,

I forgot to ask about which attribute is to detect the "Read Only" value using source code:
 

const isReadOnly = await request.$context.PDS_UsrMeetingDate_e6xd3ts_readonly;

// OR

const isReadOnly = await request.$context.PDS_UsrMeetingDate_e6xd3ts?.readonly;

// OR

const isReadOnly = await request.$context.PDS_UsrMeetingDate_e6xd3ts?.isReadOnly;

// OR other way to use it?

Thanks again!

Show all comments
Studio_Creatio
8.0

I'm getting a strange error when I attempt to log into a dev site running on a locally hosted machine. I get the log in screen, but after I enter the credentials, I got the following response:

{
 "Code": -1,
 "Exception": "System.MissingMethodException: Method not found: 'StackExchange.Redis.RedisValue StackExchange.Redis.RedisValue.op_Implicit(System.Memory`1)'."
}

Any suggestions on what might be causing the error? Or where to look? Nothing in the logs is jumping out at me.

I do have another instance of Creatio running on the same server and it runs just fine.

Like 0

Like

2 comments

Hello,

This error is almost certainly caused by a version mismatch of the StackExchange.Redis library, rather than anything related to the login itself. The message indicates that the application is trying to call a method that exists in one version of the library, but at runtime a different version is being loaded where that method doesn’t exist.

Since you mentioned another Creatio instance on the same server works fine, the most likely issue is that the two sites have different versions of StackExchange.Redis.dll (or related dependencies like System.Memory.dll) in their bin folders, or different binding redirects in web.config.

A good starting point is to compare the Redis-related DLLs between the working and non-working instances and make sure they match exactly. Also check the web.config for any binding redirects that might be forcing a different version at runtime. If everything looks the same, it’s worth verifying which assembly is actually being loaded, as sometimes an unexpected version can be picked up from another location.

In short, focus on aligning the Redis-related dependencies between the two instances—this type of error should be resolved once the correct assembly version is being loaded.

Mira Dmitruk,

Sorry I haven't replied to this sooner - had higher priority items to get done.

I finally resolved this. Ultimately, it took process monitor and process explorer to figure it out, but ultimately, I noticed that the w3wp.exe had multiple versions of System.Memory loaded. There was a binding redirect for System.Memory, but it looked like System.Buffers was trying to load the wrong version as well. The fix was to add a binding redirect to point to 4.0.3.0. for System.Buffers (there was a difference in the versions in terrasoft.webapp\bin and terrasoft.webapp\roslyn\bin).

I have zero idea why it broke.

Show all comments
Tide
Studio_Creatio
#Clio
Studio_Creatio
8.0

I recently started exploring T.I.D.E (ATF TIDE) for working with Git integration in Creatio, and I’m trying to understand how widely it’s being used in real projects.

A couple of questions I had:

  • Is anyone here actively using T.I.D.E in their development workflow?
  • How stable/reliable is it compared to the default SVN approach?
  • Are there any proper setup guides or documentation available (especially for Git authentication and repository setup)?
  • Any common pitfalls or things to watch out for?

I’ve gone through some basic setup, but I’m facing issues around repository cloning and authentication, so any guidance or real-world experience would really help.

Like 2

Like

1 comments

Hello,
This approach is not yet widely adopted, so it is difficult to compare it directly with the default SVN.Currently, most of the information about T.I.D.E. is available in the Git repository:
https://github.com/Advance-Technologies-Foundation/T.I.D.E./tree/main
Unfortunately, we do not have hands-on experience or examples of working with it yet, as this functionality is not commonly used.

Show all comments
Studio_Creatio
8.0

Hello community

in the past I created a a custom freedom section using the "Page ListTemplateV2" I would like to upgrade it to version V3.

I tried to change the parent page, but the system tells me "the AddButton already exists.."

What do you suggest me?

Like 1

Like

2 comments

Hello Stefano Bassoli,

Check your custom schema to see if it has any explicit definitions of the "AddButton". Remove or rename the local "AddButton" if the new parent schema already provides it. Only one definition must remain.

Eduard Dovydovskyi,

Hi Eduard

I tried but there isn't a button with name "AddButton".
I solved creating a new list page and mapping it in the "SysModule" table with this query

SELECT "Id" AS "SysModuleId"
from "SysModule" sm 
where sm."Code"= <section name>;
SELECT "UId" as NewUID
FROM "SysSchema"
WHERE "Name"= <new list page>;

update "SysModule" set "SectionSchemaUId" = <NewUID>
where "Id"=<SysModuleId>;
Show all comments
multivaluefield
multiselect
FreedomUI
Studio_Creatio
8.0

I need to create a multi value field based on lookup.

The only solution I found is https://customerfx.com/tool/multi-select-text-field/
But it seems to work only with classic UI.

Is there a solution with Freedom UI ?

Like 0

Like

1 comments
Best reply

Hi Olivier,

If I understand your requirement correctly, this should be straightforward. You just need to create a object which can store the two lookup values you want to connect.

Example: To save multiple Industries for an Account, create an object called "Industries in Account" (inheriting from BaseEntity) with two lookup columns: "Account" and "Industry".

Then, set up the Multiselect Lookup component on your Account edit page via the No-Code Designer:

• Lookup: "Industry"
• Multiselect Value Storage: "Industries in Account"
• Apply filter by page data: Account.Id = IndustriesInAccount.Account

Optionally, you can add a static filter to pre-filter the available Industry values, or set the "Required" attribute to ensure at least one Industry must always selected before saving.

Let me know if you have any questions.

Best,
David

Hi Olivier,

If I understand your requirement correctly, this should be straightforward. You just need to create a object which can store the two lookup values you want to connect.

Example: To save multiple Industries for an Account, create an object called "Industries in Account" (inheriting from BaseEntity) with two lookup columns: "Account" and "Industry".

Then, set up the Multiselect Lookup component on your Account edit page via the No-Code Designer:

• Lookup: "Industry"
• Multiselect Value Storage: "Industries in Account"
• Apply filter by page data: Account.Id = IndustriesInAccount.Account

Optionally, you can add a static filter to pre-filter the available Industry values, or set the "Required" attribute to ensure at least one Industry must always selected before saving.

Let me know if you have any questions.

Best,
David

Show all comments

I am currently working on Day 8 of the Hybrid Training: Creatio Administration and Configuration, specifically on the step “Working with Processes in Creatio – Feedback Process .

However, I encountered an issue when trying to configure the Feedback Mini Page element in the business process.

Issue:
I am unable to add the Score parameter to the Feedback Mini Page element.

Actions Taken:

  • I created a new Lookup for the Score parameter label.
  • I attempted to add the parameter to the Feedback Mini Page element in the business process.

Despite these steps, the Score parameter element does not appear in the Feedback Mini Page element, so I cannot proceed with the configuration as instructed in the training.

Could you please advise on how to resolve this issue? Your guidance would be greatly appreciated so I can continue with the next steps of the training.

Thank you for your support

Like 0

Like

2 comments

Hello,

Could you please send us screenshots of your business process settings, along with the task you are trying to complete?

This will help to better understand the context and review the issue.

Malika,

thankyou , this cse is resolved

Show all comments
Studio_Creatio
8.0

Good morning,

I am developing an application and I would like to include a signature area (example below) that works on mobile phones, tablets, and other devices. How can I integrate this in Creatio?

Examples:
https://www.jqueryscript.net/demo/Canvas-Signature-Pad-Sign/
https://www.cssscript.com/demo/smooth-signature-canvas-pad/

Thank you.

Best regards.

Like 3

Like

1 comments

Hello Cristiano Carvalho,

You can create a custom UI component and integrate it into the interface. These components can handle requests, read data, and bind properties.

Documentation:
https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/category/freedom-ui-component

Video tutorial:
https://www.youtube.com/watch?v=CE5uETqTsyQ&list=PLnolcTT5TeE2BMFf_XmJrSwpnbcLCLJkb

A simpler approach (with more limited capabilities compared to a full custom control) is described here:
https://customerfx.com/article/embedding-an-iframe-on-a-creatio-freedom-ui-page/

This approach can be used to render custom HTML, not only an iframe.

Show all comments

Hi All,

I created a business process that runs every 15 mins to read all activities that have result not filled in and I want to send pre-configured page to all users for each of these activities to fill the result. But the page is not popping-up; although the notification is working and the user is getting the notification in the notification panel.

Thanks for your help!

Like 2

Like

3 comments

Hello Puneet,

Thank you for your message.

If a business process is configured to start using a Start timer (for example, every 15 minutes), the process is executed by the system scheduler. In this scenario, the process runs in the background on the server, without direct interaction with the user session.

As a result, all elements that follow the Start timer event are also executed in the background context, regardless of their individual settings. Because of this, UI elements such as pre-configured pages cannot be opened automatically for users.

Instead, when the process reaches the step that requires user interaction, the user receives a notification and can open the corresponding page from the Process Actions sidebar to complete the step manually.

This is expected system behavior when processes are initiated by a timer.


 

Andrii Kendzor,

Thanks for your response. How can I make it work as in user gets the popup of pre-configured page?

Hi,

Thank you for your question.

A pre-configured page can only be displayed automatically when a business process is executed within an active user session. Since your process is started by a Start timer, it is executed by the system scheduler in the background, and therefore it cannot open UI elements such as pop-up pages for users.

To achieve the behavior you described, the process would need to be started within a user session, for example by a button or manual process launch. In such cases, the pre-configured page can be displayed as a popup for the user.

If the process must continue to run automatically every 15 minutes, the recommended approach is to keep the timer-based process and notify users through notification panel, from where they can open and complete the task.

Show all comments
Studio_Creatio
8.0

Organization roles


I already set Manager User in Organizational roles, but how to get that manager in business process? Cases: I want to give Perform Task for that manager based on user as you can see in the image (Nama RM) is user with Relation Manager Role, but I want to give that task to the manager. How to do that? Thanks
Business Process

Like 0

Like

3 comments

Hello,

Currently there is not possibility in the system to read a user's manager using a business process this way. However, we will register this idea for our R&D team so they could review the possibility of implementing such functionality in future releases.

Mira Dmitruk,

Thanks for the answer, are there any other solutions for my case instead of using a business process?

You have to read the sysadminunit object and find the hiearchy there.

It is a bit tricky but something like this should work:

"Nama RM"  will have a role in sysadminunit 

this role will have a management role in sysadminunit 

this management role will have users in sysadminunit 

Show all comments