Conditional_Logic_on_Forms_built_in_creatio
Studio_Creatio
8.0

We would like to build the forms directly in Creatio, including replicating the conditional logic currently handled in our Squiz website builder, and then embedding these forms into our website (likely via iframe).

I’ve been exploring the Landing Pages module where forms can be created. While I can see options for field configuration, UI settings, and mapping data to objects, I’m unable to find any support for conditional logic at the form level (e.g., show/hide fields based on input, make fields read-only based on selections), similar to business rules in Creatio pages.

Could you please confirm whether conditional logic is supported natively in Creatio web/landing forms?

From my understanding, the business rules we configure in Creatio form pages would only take effect after the form submission (once the data is in Creatio). However, for conditional logic that needs to work dynamically while the user is filling out the form (e.g., show/hide fields, make fields read-only based on selections), this would need to be handled at the landing page level.

At the moment, I’m unable to find such options within the Landing Page Designer. I also noticed the “Landing pages and forms” section, which appears more aligned with external form integration—could you please confirm if that plays any role in enabling conditional logic for Creatio-built forms?

Thanks

Like 1

Like

0 comments
Show all comments
MultiSelectLookup
FreedomUI
Development
sorting
Studio_Creatio
8.0

Hello Community,

I'm struggling with the MultiSelect Lookup component in Freedom UI. I need to sort the available options in the dropdown by a specific Integer column (NcsOrden) instead of the default Name column.

I've already successfully implemented the Predefined Filter in the viewModelConfigDiff to filter the records, but I can't find a way to change the sort order.

What I've tried so far:

  • crt.LoadDataRequest Handler: Adding a type: "sorting" object to request.parameters. This triggers a TypeError regarding a 'type' property being undefined in the core JS.
  • viewModelConfigDiff: Adding sortingConfig to the attribute. This causes the page to crash with a TypeError in _loadStaticModel.

Has anyone successfully managed to sort a MultiSelect list by a column other than the Primary Display Column? If this is not currently supported via No-Code or standard Handlers, what would be the recommended approach?

Thanks in advance!

 

Julio Falcon

Like 1

Like

0 comments
Show all comments

Hello, I'm using a script task based on signal record deleted that will trigger this exception. But somehow nothing showed not even a popup notification about the exception.

I tried creating a business process using the same script task that triggers an exception based on an object event process, and a notification popup was seen from the UI whenever the the condition was met.
 

The same way to throw the exception, yet different results. Why is that?
I need help and an explanation of this "throw new Exception..." on how it worked. If there is a work around to trigger this script task, I will be happy to discuss about it.  

Like 1

Like

0 comments
Show all comments

Hi everyone,

I've set up Clio successfully before on other machines, but on this new Windows 11 setup I'm hitting a wall with cliogate installation and can't find a way through.

I'm currently traveling and don't have access to my other machine to compare, so any help to unblock this would be much appreciated.

Environment:

  • Creatio: 8.3.2.4199, .NET Framework, IIS, PostgreSQL
  • Clio: 8.0.2.67
  • OS: Windows 11, IIS 10
  • URL: local IIS instance on port 8020
  • IsNetCore: false

What works:

  • clio ping -e MyEnv → success
  • clio packages -f cliogate -e MyEnv → shows cliogate 2.0.0.31 pre-installed
  • Installing my own .zip packages via ApplicationManagement UI → works fine

What fails:

  • clio install-gate -e MyEnv → uploads then throws EnsureSuccessStatusCode
  • Manual upload of cliogate.gz via ApplicationManagement UI → 400 Bad Request
  • Manual upload of cliogate as .zip → 400 Bad Request
  • clio generate-pkg-zip + upload → 400 Bad Request

The IIS log shows no entry for the failed upload requests — the 400 happens before IIS logs it. InstallZipPackage.log shows no entries for the cliogate upload attempts either.

Current state: the instance has cliogate pre-installed at version 2.0.0.31. Clio 8.0.2.67 requires 2.0.0.32 or higher, so it reports: "To use this command, you need to install the cliogate package version 2.0.0.32 or higher".

Questions:

  1. Why does PackageInstallerService return 400 for cliogate specifically, while other packages upload fine?
  2. Is there a way to upgrade cliogate from 2.0.0.31 to 2.0.0.41 without the upload mechanism?
  3. Is there an alternative download for the cliogate package compatible with Creatio 8.3.2?

Thank you

 

Julio Falcon

Like 1

Like

1 comments

Hello.

Please try deleting the existing cliogate package and then try reinstalling it from the scratch.

If this won't help, please reach out to the Support team for assistance.

Show all comments
How_to_mark_record_in_creatio_readonly_on_particular_condition
Studio_Creatio
8.0

I want to make a record read-only for all users in Creatio based on a condition.

I have added a checkbox field on the record. When this checkbox is checked, I want the entire record to become read-only for all users.

To achieve this, I created a Business Process that modifies access rights for the record when the checkbox is updated. The process runs successfully without any errors. However, the changes are not getting reflected on the UI users are still able to edit the record.

Could you please help me understand:

  • Is modifying access rights via Business Process the correct approach for making a record read-only?
  • Are there any additional steps required to enforce read-only behavior on the UI?

Any guidance or best practices would be greatly appreciated.

Like 0

Like

1 comments

Hello.

Yes, modifying access rights via a Business Process is the correct approach for making a specific record read only. Creatio supports changing record permissions through the Change access rights process element, and this mechanism is intended for granting or revoking permissions for конкретних записів automatically.

At the same time, for this to work, record permissions must be enabled for the target object. If the Use record permissions option is disabled, users who have sufficient object level permissions will still be able to edit the record, and the permissions applied by the process will not restrict them on the UI.

Please also take into account that certain users can still retain access regardless of record permission settings. In particular, users who have system operations such as Edit any data will receive access regardless of the object permission configuration. Also, by default, access is granted to the record author, record owner, and their management roles, as well as system administrators, unless the permission model is configured accordingly.

You can also review the related Academy article for record permissions and the Change access rights process element here.

https://academy.creatio.com/docs/8.x/setup-and-administration/administr…

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

Best regards,
Antonii.

Show all comments

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

1 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.

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