Hi Creatio Community,

 

I'm currently working with batch operations in Creatio and have successfully tested some requests that are working fine.

 

I have a question regarding inserting column values that reference other tables by their respective columns. Specifically, I need to perform operations on a large number of columns and data, which could be time-consuming if I have to manually map the IDs based on their codes.

 

Is there a more efficient way to handle this?

 

Here’s an example of a request I’m working with:

{
	"requests": [
	{
		"method": "POST",
		"atomicityGroup": "g1",
		"url": "City",
		"id": "t3",
		"body": {
			"Name": "TestName",
            "Country.Code": "USA"
		},
		"headers": {
			"Content-Type": "application/json;odata=verbose",
			"Accept": "application/json;odata=verbose",
			"Prefer": "continue-on-error"
		}
	}
	]
}
Like 1

Like

1 comments

Hello,

Creating operations on a large number of columns and data, which could be time-consuming, may lead to performance problems in the future. Please try to avoid big batch operations so as not to face the situation of 100% server CPU utilization.

As a workaround:

  1. You may create a custom Web service and pass the needed data to it.
  2. Create a business process that proceeds with needed data modifications

 

Show all comments

I can't figure out the tutorial, where to update these stages -- the names, etc.

 

Like 0

Like

1 comments

Hello,

Please navigate to the Page Designer, click on the progress bar, and select set up cases.


After that, you will be redirected to the DCM setup page.
Then please use this article to set it up:

Additionally, you can use this video to learn more about DCM.

Best regards 
Antonii. 

Show all comments

How to open section programmatically?

 

i need to open 'home' section programmatically as a result of event/command

Like 0

Like

2 comments

Hello!
 

You can achieve this without code by creating a business process that will be triggered and open the required page.


You can read more about business processes on the Creatio Academy:

https://academy.creatio.com/docs/8.x/no-code-customization/8.1/category/process-administration

Regards,
Orkhan

in my case thats not an option.... 

Show all comments

Hello, everyone! 


I've stumbled upon a request from a client who wants his product images (from the attached files) to be shown to whoever is viewing the product in a tab "Images" from said product. 

I've created the tab without any trouble and associated the "Gallery" component to it, linking the "Uploaded file" (SysFiles) with the correct data souce filter (id from my record = "Record ID" from Uploaded file). It just shows me a picture of a camera.. 

 

 

Inside the "SysFile" object, the only options I have as to "fileType" are "File", "Link" and "Link to object"... Should there be a "jpg" or something like that for the image to be shown there? 

---

What other solution is there for it to be displayed? 

I've searched that on classic UI that was possible, but saw no proof of how it was done. 

 

Btw, i'm on version 8.2.0.4183.

 

Hope yall can help me. 

Thanks! 

Like 0

Like

1 comments
Best reply

Hello,

 

Unfortunately, the "SysFile" object is not suitable for use as an image source for the gallery, as it lacks some key image-related settings.
However, if the images are simple, this can be achieved using "handlers".

 

The main works to be done:
1. Configure a filter for the gallery to ignore invalid files.
In the example, display only files whose names end with ".png".
 

2. Populate the "image" property in "templateValuesMapping" within the gallery settings in the metadata.
In the designer, this field should be empty.
Let's take this one as example:
"image": "Gallery_gckk34fDS_SysFileToImage"
 

3. Implement a handler for "crt.HandleViewModelAttributeChangeRequest" in the metadata.
Here’s an example of the handler:
{
    request: "crt.HandleViewModelAttributeChangeRequest",
    handler: async (request, next) => {
        if (request.attributeName === "Gallery_gckk34f" && request.value?.length > 0) {
            for (var i = 0; i < request.value.length; i++) {
                const record = request.value[i];
                const recordId = record.attributes["Gallery_gckk34fDS_Id"];
                const recordName = record.attributes["Gallery_gckk34fDS_Name"];
                const recordUrl = "/0/img/entity/hash/SysFile/Data/" + recordId;
                const newColumnAttribute = {
                    displayValue: recordName,
                    value: recordId,
                    url: recordUrl
                };
                record.attributes["Gallery_gckk34fDS_SysFileToImage"] = newColumnAttribute;
            }
        }
        return next?.handle(request);
    }
}
 

How the handler works:
When the loaded collection is not empty, we populate the attribute specified in "templateValuesMapping" for each record with a specific object.
In the "url" field, we set the following link:
"/0/img/entity/hash/SysFile/Data/" + recordId
The system will load data from the "Data" column of the "SysFile" object based on a given identifier.
 

If you have any additional questions, feel free to ask.

Hello,

 

Unfortunately, the "SysFile" object is not suitable for use as an image source for the gallery, as it lacks some key image-related settings.
However, if the images are simple, this can be achieved using "handlers".

 

The main works to be done:
1. Configure a filter for the gallery to ignore invalid files.
In the example, display only files whose names end with ".png".
 

2. Populate the "image" property in "templateValuesMapping" within the gallery settings in the metadata.
In the designer, this field should be empty.
Let's take this one as example:
"image": "Gallery_gckk34fDS_SysFileToImage"
 

3. Implement a handler for "crt.HandleViewModelAttributeChangeRequest" in the metadata.
Here’s an example of the handler:
{
    request: "crt.HandleViewModelAttributeChangeRequest",
    handler: async (request, next) => {
        if (request.attributeName === "Gallery_gckk34f" && request.value?.length > 0) {
            for (var i = 0; i < request.value.length; i++) {
                const record = request.value[i];
                const recordId = record.attributes["Gallery_gckk34fDS_Id"];
                const recordName = record.attributes["Gallery_gckk34fDS_Name"];
                const recordUrl = "/0/img/entity/hash/SysFile/Data/" + recordId;
                const newColumnAttribute = {
                    displayValue: recordName,
                    value: recordId,
                    url: recordUrl
                };
                record.attributes["Gallery_gckk34fDS_SysFileToImage"] = newColumnAttribute;
            }
        }
        return next?.handle(request);
    }
}
 

How the handler works:
When the loaded collection is not empty, we populate the attribute specified in "templateValuesMapping" for each record with a specific object.
In the "url" field, we set the following link:
"/0/img/entity/hash/SysFile/Data/" + recordId
The system will load data from the "Data" column of the "SysFile" object based on a given identifier.
 

If you have any additional questions, feel free to ask.

Show all comments

Hello Creatio Friends,

 

I'm stuck. 

 

We are testing out creating additional org roles and want the users to automatically get assigned when they SSO in. One user can have multiple org roles.

 

We saw there’s some SSO fields already mapped to Contact like branch -> Branch, displayname -> Name and that kind of thing, but I’m stuck on figuring out how they get assigned to org role. 

 

I found VwSysRole that spells out all the different roles and SysUserInRole where they give individual role assignments for each user (multiple ok).

 

Just can’t find the gap - how they go from SSO JIT to assigned to an org role. Any chance you know?

 

Thanks in advance,

Israel

Like 0

Like

3 comments
Best reply

Hello,

 

In Creatio, organizational and functional roles are transmitted using the "role" attribute. This attribute is not listed in the JIT mapping but can be found in the SsoServiceProvider table under the SamlUserRole column.

 

To pass user roles to Creatio, simply create a claim named "role" on the Identity Provider side. For example, in Entra ID, this would be configured accordingly.

 

The claim should contain the attribute value where your roles are stored.

 

!Important: Role names must exactly match the role names in Creatio, including case sensitivity.

 

Regarding SSO technology and implementation, we can only assign existing roles to a user. Roles are not created automatically because:
 

  1. 1. A role must have predefined permissions or inherit from another role;

    2. The SSO protocol does not allow retrieving a full list of roles from the Identity Provider—only data about the current user can be obtained. So we only get the name of the role of the logged-in user, not the entire organizational role hierarchy.

    I hope this answers your questions.

Hello,

 

In Creatio, organizational and functional roles are transmitted using the "role" attribute. This attribute is not listed in the JIT mapping but can be found in the SsoServiceProvider table under the SamlUserRole column.

 

To pass user roles to Creatio, simply create a claim named "role" on the Identity Provider side. For example, in Entra ID, this would be configured accordingly.

 

The claim should contain the attribute value where your roles are stored.

 

!Important: Role names must exactly match the role names in Creatio, including case sensitivity.

 

Regarding SSO technology and implementation, we can only assign existing roles to a user. Roles are not created automatically because:
 

  1. 1. A role must have predefined permissions or inherit from another role;

    2. The SSO protocol does not allow retrieving a full list of roles from the Identity Provider—only data about the current user can be obtained. So we only get the name of the role of the logged-in user, not the entire organizational role hierarchy.

    I hope this answers your questions.

Hi Pavlo, 

 

That answers my questions more completely than I was hoping. Thank you for your expertise and for including screenshots!

Joshua,

You also need to create the corresponding attribute in the SsoServiceProvider table in the SamlUserRole column, following the instructions above, and then fill it in on your SSO provider side.

Show all comments

Is there anyone that is currently using the Creatio Project Management Section to manage construction based jobs?

Would be interested in hearing how this is working for you and if you are able to track everything via that section.

 

Thanks!

Like 1

Like

0 comments
Show all comments

Hi all,

 

i've set up "next steps" component in my interface so that a user can check what are the pending activities for a record with an associate case

 

Language is in italian in this screen, but "Attività" is the next steps component. In this instance it is a pre configured page routed to a group "Amministrazione". My issue is that users from different group are able to open the pre configured page and work on it.

 

I can toy with object permission and set the record as read only for everyone but those in the group who is owner of the task but other users are still able to open the pre configure page. 

 

The ideal behaviour would be for the complete button in the task to be disabled for those users that are not part of the owner role. Is that even possible?

 

Thanks

 

Like 0

Like

1 comments
Best reply

Hello,
 

Starting from version 8.2.2, we have already fixed this behavior in the product.

 Now, if a user does not have permissions for an activity, business process actions (tasks, pre-configured pages, etc.) will not be displayed in the Next Steps element.
 

If you require a backport of this solution to an earlier version of the application, please contact the support team (support@creatio.com) referring to the current post , and we will check the feasibility of applying this fix to your version.
 

Thank you for reaching out!

Hello,
 

Starting from version 8.2.2, we have already fixed this behavior in the product.

 Now, if a user does not have permissions for an activity, business process actions (tasks, pre-configured pages, etc.) will not be displayed in the Next Steps element.
 

If you require a backport of this solution to an earlier version of the application, please contact the support team (support@creatio.com) referring to the current post , and we will check the feasibility of applying this fix to your version.
 

Thank you for reaching out!

Show all comments

Hello, everyone! 
I've already added the "AllowCreateAngularSchema" feature on the page "XXX/0/Shell/#Section/AppFeature_ListPage" and the page "Contacts_FormPage" doesn't come up on the pop-up. 

It's a crm-test environment, recently created and has nothing in it. 

Here's a print from the page that should show the form page:

 

Hope you can help out on this. 

Thanks!

Like 0

Like

5 comments
Best reply

Gabriel Henrique Pagotto Otero,

Check the dependencies of your package to make sure it depends on a package that contains the Contacts_FormPage.

Ryan

Make sure you're selecting the angular replacing option (this only shows after adding the "AllowCreateAngularSchema" feature)

Ryan

Additionally to Ryan's suggestion make sure you don't receive any errors in the console upon opening the module setup\searching for the contacts form page and make sure that your package where you create this schema has all the necessary dependencies.

 

Hey, I've done that. That's the screen for the replacing angular module. 

Ryan Farley writes:

Make sure you're selecting the angular replacing option (this only shows after adding the "AllowCreateAngularSchema" feature)

Ryan

 

 

Yep, no errors, Oleg :/

Oleg Drobina writes:

Additionally to Ryan's suggestion make sure you don't receive any errors in the console upon opening the module setup\searching for the contacts form page and make sure that your package where you create this schema has all the necessary dependencies.

 

Gabriel Henrique Pagotto Otero,

Check the dependencies of your package to make sure it depends on a package that contains the Contacts_FormPage.

Ryan

Ryan Farley writes:

Gabriel Henrique Pagotto Otero,

Check the dependencies of your package to make sure it depends on a package that contains the Contacts_FormPage.

Ryan

Heya, Ryan! 
It worked. 

Didn't know that I needed to have the package as a dependent. 

Freedom UI doesn't have anything about it. 

Thanks!!! 

Show all comments

Hi Team, I need to add field "Description" in addition to "Name" field to the lookup pop-up box that appears when we apply filter on the lookup field. How can I go about this? Thanks

Like 0

Like

3 comments

Just click on View in the top right corner to add more columns to the list

Hello,

As Alejandro González Momblán mentioned, to add new fields to this window, click on View and select Choose fields to display
In the new window, you can select which columns should be shown.


 

Best regards,
Antonii.

Antonii Viazovskyi,

Hi Antonii, thanks for sharing this. I did try this but I don't see an option to add new fields in the "View" dropdown. I am only getting option to sort values, not add new fields. Can you please confirm how can I get that option to add new fields? This is a Freedom UI

Show all comments

Hello, everyone. 

I'm having a few problems on a business process that i've created that "gets" information from another system (through api) and i'm getting the response without any error. What happens is that I'm trying to pass down the information to a sub-process and a few fields just don't work. They all go as "null" information. 

 

I'll paste a few prints.

1st one, the information coming from the endpoint request without any problem:

 

2nd, the information being passed for the subprocess:

 

3rd, the information that the sub-process "gets" from the main process:

(update: the "name" "subprocess1" has been solved. Aparently, I can't name the internal name from the endpoint "Name"... changed that to "Names" and it worked)

 

Has anyone already come across something like this? 

btw.. I'm on version 8.2.0.4183.

Like 1

Like

2 comments
Best reply

Kalymbet Anastasia,

Hello, Kalumbet! 
Thanks for the response, but I've found why it was happening... 

Basically, if you pass down a parameter and DON'T use it anywhere on the "subprocess" it just goes as "null", hence the server don't need to "overload" itself with "rabbish" information. 

Hi!


Please test disabling the UseColumnUsageTracker feature and then retry running the process.

 

link: [app_url]/0/Flags

Kalymbet Anastasia,

Hello, Kalumbet! 
Thanks for the response, but I've found why it was happening... 

Basically, if you pass down a parameter and DON'T use it anywhere on the "subprocess" it just goes as "null", hence the server don't need to "overload" itself with "rabbish" information. 

Show all comments