Hi Creatio Team,

We have a creatio instance with around 100 users, who in order to authenticate use the Creatio authentication. This users are set in specific organizational and functional roles, with access rights applied to them.

We will do a sync with Active Directory through LDAP for the same 100 users, so that the users use LDAP authentication to log in to Creatio and not Creatio authentication?

1-Will these cause any duplicates with the existing Contacts ?

2- Should we deactivate the licenses of the existing users before doing the sync with AD ?

Thank you

 

Like 2

Like

2 comments

Hello,

 

 

During synchronization with LDAP is checked table SysAdminUnit (table section Users), so when you synchronize the new user will be created.

You can re-bind the contact with an SQL query and then delete the new contact.

The connection to the table of contacts in SysAdminUnit is made by the ContactId column.

Also, by checking the SysAdminUnit table, if the system already has a user bound to a contact, we cannot create another user bound to an occupied contact.

If users were previously synchronized over LDAP and they have an LDAP element, the system should not generate new contacts/users.

 

More information is available here:

https://academy.creatio.com/docs/user/setup_and_administration/user_and…

Hello

Kalymbet Anastasia,

Please what is your best suggestion on our scenario?

The old users were created manually. We want to import the same users through LDAP. Are the followoing steps a good workaround ?

1- Deactivate liceneses for existing users

4- Proceed to Synchronization with LDAP 

2- Delete old contacts

3- Delete old users

 

 

Show all comments

Hello, please help.

There are 2 objects, in both access rights on records are configured. In the 1st object there is a field "lookup of the 2nd object", it is necessary that - if a record from the 2nd object is selected in the record of the 1st object, then users from the second object are added to the record of the 1st object?

Like 0

Like

3 comments

Hello colleagues,

Yes, it's necessary to provide the user with access rights to both objects.

Otherwise, this column may be empty for the user.

Best regards, Alex. 

Aleksei Efimenko,

THank you for your answer, but I think we didn't get each other.

For instance , we have object 1- opportunity, and object 2 - product,  the product has relationship with opportunuty - 1:N, so there is a lookup field in opportunity for product.

The question is:

Can I configure user rights as when User 1 has access righs to particular product, it will has acess rights to opportunity also.

So if I have Opp_1 and related with him product_1 in that opportunity. If User 1 has access rights to product 1, I need him to have acess rights to its opporunity.

Gevorgyan Tigran,

Unfortunately, no, the user won't have rights to opportunities where certain products are assigned.

Best regards, Alex. 

Show all comments

Hi Community,

 

Is there a way to freeze a record - lock all fields and  connected details - based on a condition? For example, if an Order status is set to Completed, all the fields and details connected to order record should be locked. In order to make any change to the record, the status has to be changed from Completed to In Progress and then the record is unlocked. 

Like 0

Like

3 comments

Hello,

 

If you wish to change access rights on a particular stage of the Order, you can simply add a "Change access rights" to its stage:

With it, you can state which roles/users should have their rights set to "read-only".

 

Alternatively, you could create a trigger process that is triggered once the stage of your Order section is changed and then do the same rights delegation as mentioned above with the "Change access rights" element in your business process (I created an example that is based on the stages of the leads section):

Hope it helps!

Best regards,

Artem.

I have an article on how to do that using code on a page here: https://customerfx.com/article/completely-locking-a-page-via-code-inclu…

However, the most reliable way to do this is to use a process and change the access rights of the record(s) - otherwise, they could still be changed in other places, such as the mobile client.

Ryan

Thank Ryan and Artem for the prompt response!

There are webservices that are called from client side when some fields are changed. Even with the permission restriction, these change events will still be triggered when the value is changed although it can not be saved by clicking the save button.

Looks like Ryan's solution is more compatible with the customizations we have in place now. That would help us lock the field giving no provision for the user to change the field value.

However, I do see in academy article (https://academy.creatio.com/docs/developer/interface_elements/interface… ) that setting the value for IsModelItemsEnabled will not lock fields that have "enabled" property defined in diff.

If the field has a binding for the enabled property in the diff array element or the business rule, the mechanism will not lock this field.

Not sure if there is a way to override the diff property other than removing it.

 

Regards,

Nirupama

Show all comments

Hello,

 

While working in a package, it happens that when I modify object permissions, the modifications are saved to package "Custom" even though I set current package value as my package.

 

Can you please walk me through to remedy to this issue?

 

Thanks,

Like 0

Like

3 comments

Hello Mariam,

 

According to the application logic, the changes in the access rights always generate the replacing object in the Custom package, regardless the one you have in the Current package.

 

We are aware of that and working hard to fix that in our future releases. 

 

 

Hello Kyrylo,

 

Thank you for your response,

 

In this case, how to proceed in order to add changes to my package for transfer between environments?

 

Thanks,

mariam moufaddal,

if you switch on Access rights in your package in configurator, these changes will be transfered with your package

Kind regards,

Vladimir

Show all comments

Hi All,

 

Within a Bulk Email that we sent, I see in the sending log :   16 will not send, email is not actual.

 

Can someone define what an ACTUAL or NOT ACTUAL email is ?

Is it refering to a checkbox somewhere ?

 

Thanks.

 

Like 0

Like

1 comments

That refers to the email not being valid, possibly permanent error for an email address no longer existing. For contacts that have had a permanent failure delivering to the address, you'll see it in the UI like this: 

To make an email address valid again, you can click on the label and select "Valid" from the list:

Ryan

Show all comments

Hi,

I want to set up access right to a folder on the project section but it is not showing me this option. When I click the setting Icon I only have Set up filter, Rename, Move Copy, Delete.

When I try in other sections like order and account I do have the Set up access right.

Like 0

Like

4 comments

You have to turn on Access rights by records in ProjectFolder object



Permissions on entries in the ProjectFolder object are enabled, but permissions settings are not. I guess I didn’t formulate the question very correctly, the permission settings for dynamic groups (folders) are not displayed

Gevorgyan Tigran,

Hi Gevorgyan,

the same thing happens with Event section

If you re-login to creation everything works finr

Show all comments

Hi Community

 

I want to remove the hyperlink from lookup fields. To achieve this I have followed this community article. This worked fine on the edit page. But on the section list view hyperlinks are still showing as shown below.

 

 

Is there a way I can remove the hyperlink on the list view conditionally as well instead of removing the "Display value" property from the object setting?

 

 

Any lead will be appreciated.

 

Regards,

Sourav Kumar Samal

Like 0

Like

9 comments

Hi, the logic for marking columns as links on section pages is based on the method addLookupColumnLink and if you want to modify it, you need to override it. For example, in the contact section, I need to remove a link to the column "Owner". The code to do this:

 

define("ContactSectionV2", [], function() {
	return {
		entitySchemaName: "Contact",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
		methods: {
			addLookupColumnLink: function(item, column) {
				if (column.columnPath == "Owner"){
					console.log("We don't add link");
				} else {
					this.callParent(arguments);
				}
			}
		}
	};
});

 

Dmytro Vovchenko,

 

I have tried the above code, but the method was never called, attached a screenshot for reference.

 

 

Is there anything I am missing here?

 

Regards,

Sourav

Sourav Kumar Samal,

If you want to remove a link from a primary column the method you need in this situation is addPrimaryColumnLink

define("ContactSectionV2", [], function() {
	return {
		entitySchemaName: "Contact",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
		]/**SCHEMA_DIFF*/,
		methods: {
			addLookupColumnLink: function(item, column) {
				if (column.columnPath == "Owner"){
					console.log("We don't add link");
				} else {
					this.callParent(arguments);
				}
			},
			addPrimaryColumnLink: function(item, column) {
				return false;
			}
		}
	};
});

Result:

Dmytro Vovchenko,

 

Is there a way to do the same thing on the dashboard list?

 

Regards,

Sourav

Sourav Kumar Samal,

In this case, look at the DashboardGridModule schema. I believe you would need to modify the same methods. But, overriding the 

DashboardGridModule is much more difficult than the section pages.

Does anybody know of a Freedom UI equivalent for doing this?

Hi Harvey,

 

In Freedom UI, on the Form page, you may remove the hyperlink from lookup fields by specifying the property "showValueAsLink": false in attributes values. 

 

As for the List page, unfortunately, there is no such possibility so far. However, our R&D team is already working on the feature that will allow turning off link generation for lookup columns of related objects, so it is expected to be implemented in future releases (no ETA yet).

 

Best regards, 

Natalia

 

 

Thanks Natalia, it's good news that there is something in the pipeline! Do you know if the solution will allow removing links for the entity itself if desired? i.e. if we have a list based over the Account entity, having it so that the Name column does not show as a link? We wouldn't want to remove that link in all cases, but in some lists it might not be wanted. For example, especially on modal lookup windows, we might want to disable the display column from being a link, as it can be confusing for users who want to select the record but click the link and get taken to the edit page instead of selecting the record.

Harvey Adcock,

 

The feature should work for both - the section list (on the List page) and the Lookup component list. It is planned that the links that lead to other entities' edit pages will be removed by default, and after enabling the feature, they will become available.

We will highlight your comments to the R&D team.
Thank you for being an active participant of the Creatio community!

Show all comments

Hello community,

 

I have a case where based on a lookup value, I need to display an image. The code is working and logging values as expected but the image does not seem to load. When inspect HTML I find the following

[object Object]" title="">

 

and the error

https://dev2-is-il.creatio.com/0/Nui/[object%20Object] 404

 

However my method is returning the correct URL 

https://dev2-is-il.creatio.com/0/conf/content/img/UsrRequests1Page-Dril…

 

Please find the code below



Diff

{
				"operation": "insert",
				"name": "UsrProjectCategoryCaption",
				"values": {
					"itemType": 6,
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 0
					},
					"visible":  {
						"bindTo": "IsPrjCatIconContVisible"
					},
					"caption": {
						"bindTo": "Resources.Strings.ProjectCategoryCaption"
					}
				},
				"parentName": "ProfileContainer",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "AccountPhotoContainer",
				"values": {
					"itemType": 7,
					"wrapClass": [
						"image-edit-container"
					],
					"items": [],
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 1
					},
					"visible":  {
						"bindTo": "IsPrjCatIconContVisible"
					},
				},
				"parentName": "ProfileContainer",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "insert",
				"name": "Photo",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 2
					},
					"getSrcMethod": "getPhotoSrcMethod",
					"readonly": true,
					/*"defaultImage": {
								"bindTo": "getPhotoSrcMethod"
					},*/
					"generator": "ImageCustomGeneratorV2.generateCustomImageControl"
				},
				"parentName": "AccountPhotoContainer",
				"propertyName": "items",
				"index": 0
			},

 

Methods

 

getPhotoSrcMethod:function()
			{
 
			    var reqId=this.get("Id"); 
				this.getProjectCategory(reqId, function(result) {
 
					 this.console.log("cbdone:" + result);
					 if(result.pjtCatId==="5f43b0aa-f7f6-4ffa-bc6d-15cf1fd581e0")
							{
								this.console.log("getIcon NationalPriorityImage");
								this.set("Resources.Strings.ProjectCategoryCaption", result.pjtCatName);
								this.set("IsPrjCatIconContVisible", true);
								this.console.log("IsPrjCatIconContVisible true");
								//class="ts-image-edit-full-size-element ts-image-style-rectangular"
 
						 		return this.Terrasoft.ImageUrlBuilder.getUrl(this.get("Resources.Images.NationalPriorityImage"));
							}
						else if(result.pjtCatId==="08135814-ecdb-48ed-adea-5d4e5f1b0129")
							{
								this.console.log("getIcon BicyclePathsIcon");
								this.set("Resources.Strings.ProjectCategoryCaption", result.pjtCatName);
								this.set("IsPrjCatIconContVisible", true);
 
								return this.Terrasoft.ImageUrlBuilder.getUrl(this.get("Resources.Images.BicyclePathsIcon"));
							}
						else if(result.pjtCatId==="a1a8e24d-6c6c-49ea-bb3c-5d76da662a27")
							{			   
								this.console.log("getIcon DrillingExplorationIcon");
								this.set("Resources.Strings.ProjectCategoryCaption", result.pjtCatName);
								this.set("IsPrjCatIconContVisible", true);
								this.console.log(this.Terrasoft.ImageUrlBuilder.getUrl(this.get("Resources.Images.DrillingExplorationIcon")));
							//	return this.getSchemaImageUrl(this.get("Resources.Images.DrillingExplorationIcon"));
								return this.Terrasoft.ImageUrlBuilder.getUrl(this.get("Resources.Images.DrillingExplorationIcon"));
 
							}
						else if(result.pjtCatId==="18588952-b4bf-4477-a614-a15a103adc28")
							{
								this.console.log("getIcon DrillimgAndNPIcon");
								this.set("Resources.Strings.ProjectCategoryCaption", result.pjtCatName);
								this.set("IsPrjCatIconContVisible", true);
 
								return this.Terrasoft.ImageUrlBuilder.getUrl(this.get("Resources.Images.DrillingAndNPIcon"));
							}
						else
							{
								this.set("IsPrjCatIconContVisible", false);
								this.console.log("IsPrjCatIconContVisible is false due to regular prj 2");
								return this.Terrasoft.ImageUrlBuilder.getUrl(this.get("Resources.Images.AnalyticsDataIcon"));
 
							}
 
                        },this);
 
 
			},
			getProjectCategory :function(reqId,callback,scope)
			{
				var result;
				var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
					rootSchemaName: "UsrRequests"
				});
				esq.addColumn("Id");
				esq.addColumn("UsrProject.UsrProjectCategory.Id","CatId");
				esq.addColumn("UsrProject.UsrProjectCategory.Name","CatName");
				esq.filters.add("ProjectFilter", Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL, "Id",reqId));
				esq.getEntityCollection(function(result) {
 
					var resultValue = result.collection.collection.items;
					var pjtCatId = resultValue[0].values.CatId;
					var pjtCatName = resultValue[0].values.CatName;
					this.console.log("pjtCatId:" + pjtCatId);
					this.console.log("pjtCatName:" + pjtCatName);
					result ={ success:true,
							  pjtCatId : pjtCatId,
							  pjtCatName:pjtCatName
							};
					callback.call(scope || this, result);
				},this);
			},

 

Like 0

Like

6 comments
Best reply

Shivani Lakshman,

Rather than bind the image element in the diff to the function (which won't work since the ESQ in the function is asynchronous), bind it to an attribute, then set the attribute in the asynchronous function (and just call the function in the onEntityInitialized).

Example:

First add the attribute:

"MyImageAttr": {
	dataValueType: Terrasoft.DataValueType.TEXT,
	type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
	value: ""
}

Then, create the function that retrieves the image using the ESQ:

function getImage() {
	// do the ESQ to get the image, then simply set in attribute
	this.set("MyImageAttr", Terrasoft.ImageUrlBuilder.getUrl(imageConfig));
}
 
// also call image from onEntityInitialized so it runs when the record is loaded
function onEntityInitialized() {
	this.callParent(arguments);
	this.getImage();
}

Now, add the image to the diff, bound to the attribute:

// image element in diff
// note "MyImageAttr" is an attribute we're binding to
{
	"operation": "insert",
	"name": "MyImage",
	"parentName": "ImageContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.COMPONENT,
		"className": "Terrasoft.ImageView",
		"imageSrc": {"bindTo": "MyImageAttr"}
	}
}

Then the record loads, it will run the ESQ in the function, which will set the attribute with the image. Since the diff element is bound to the attribute, it will show the image when it is set, so it won't matter that the ESQ is asynchronous. 

Ryan

Hello Shivani,

 

As far as I remember there is no way to dynamically modify the image in the photo container from the client side code since it's strictly connected to the value stored in the "Photo" column of the object. In this case you may try modifying the photo on the server side and refresh the page if needed.

Oleg Drobina,

 

I believe we can. We have already implemented this in another section. Please see a screen grab in this link

 

https://drive.google.com/file/d/1BKT6E_azsOjjh1N9VZh0bPpfUjrttm79/view?…



We posted on the forum here because for some reason the code is not working when there is esq involved.

 

 

Shivani Lakshman,

 

Ok, I was wrong, then this is possible. Then probably the reason is that esq is asynchronous and you don't get the data needed at the moment the image should be loaded to the UI (this is the most probable reason). In this case try avoiding using esq and use some other approach.

Oleg Drobina,

 

I have used callback and when the breakpoint hits my method, the code for  

the image I need hits before the default image gets loaded. I am actually puzzled ? 

 

Can you please suggest another approach ? I don’t want to add another column because this image will be dynamic and change frequently.

 

Is there an attribute that can hold images and that can be loaded onto the UI?

 

Would appreciate your help here!

Shivani Lakshman,

Rather than bind the image element in the diff to the function (which won't work since the ESQ in the function is asynchronous), bind it to an attribute, then set the attribute in the asynchronous function (and just call the function in the onEntityInitialized).

Example:

First add the attribute:

"MyImageAttr": {
	dataValueType: Terrasoft.DataValueType.TEXT,
	type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
	value: ""
}

Then, create the function that retrieves the image using the ESQ:

function getImage() {
	// do the ESQ to get the image, then simply set in attribute
	this.set("MyImageAttr", Terrasoft.ImageUrlBuilder.getUrl(imageConfig));
}
 
// also call image from onEntityInitialized so it runs when the record is loaded
function onEntityInitialized() {
	this.callParent(arguments);
	this.getImage();
}

Now, add the image to the diff, bound to the attribute:

// image element in diff
// note "MyImageAttr" is an attribute we're binding to
{
	"operation": "insert",
	"name": "MyImage",
	"parentName": "ImageContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.COMPONENT,
		"className": "Terrasoft.ImageView",
		"imageSrc": {"bindTo": "MyImageAttr"}
	}
}

Then the record loads, it will run the ESQ in the function, which will set the attribute with the image. Since the diff element is bound to the attribute, it will show the image when it is set, so it won't matter that the ESQ is asynchronous. 

Ryan

Ryan Farley,

 

Thank you for your help! Really appreciate it :)

Show all comments

Hi Team,

 

I am trying to read the current user's role by using the following custom logic.

GetCurrentUserRole: function(){
				var scope = this;
				var esq = Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "SysUserInRole"});
				esq.addColumn("SysRole");
				esq.filters.add("UserFilter", Terrasoft.createColumnFilterWithParameter(
    				Terrasoft.ComparisonType.EQUAL, "SysUser", Terrasoft.SysValue.CURRENT_USER.value
				));
				esq.getEntityCollection(function(result) {
					if (!result.success || result.collection.getItems().length === 0) {return;}
					result.collection.each(function(item) { 
						var role = item.get("SysRole");
						var roleName = role.displayValue;
						var roleId = role.value;
						this.console.log("roleName: ",roleName);
					});
				}, this);
				return true;
			},

The above code works perfectly fine while logged in as a Normal user, but the same doesn't work for Portal users. For portal users, the "roleId" variable gives the correct Id but the variable "roleName" shows as a blank string("") because it is not reading the displayValue.

 

To address the issue, I have added "SysUserInRole" and "SysAdminUnit" in the lookup named "List of objects available for portal users". Also the Object permissions for both the tables are default. But still no luck in getting the desired output.

 

Request any suggestions or additional steps that I need to perform to get the displayValue of current user role while logged in as a portal user.

 

Regards,

Sourav Kumar Samal

Like 0

Like

1 comments
Best reply

Hi Sourav,

 

I was able to achieve the result needed by adding the "System administration object" schema to the "List of objects available for portal users" lookup and relogin under the portal user. Try the same approach on your side, it should work.

Hi Sourav,

 

I was able to achieve the result needed by adding the "System administration object" schema to the "List of objects available for portal users" lookup and relogin under the portal user. Try the same approach on your side, it should work.

Show all comments

In the word report that I have created I want to use the characters  « someWords here... ». By default creatio uses these characters to indicate a field name but in my case I have to use these characters on my document as normal characters.

I am using a formula in MS word that makes a sentence appear in my word report only if a specific field is not equal to 0

  • Here is the place I have written the formula that contains special characters (which are not indicating any field name)

 

  • The formula I used: 

Contract Clauses No[#AddTextIfNotEqual|0;words... « someWords here between these chars...  » words again... :#]

 

  • The result I get when report is printed:

words… \« someWords here between the special chars \» words again

 

As you can see Creatio reads these chars (« ») as special chars and adds slashes (\) before them. All I want to do is make these chars appear without the slashes before them.

 

Thanks in advance :)

 

Like 0

Like

1 comments

Hello,

As for now, unfortunately, there is no possibility to use word formulas in compose with printables and our R&D team has a problem regarding this functionality and we hope that it will be updated in one of future versions of the application. 

 

As for now you can try using this marketplace application that can fit your needs https://marketplace.bpmonline.com/app/excel-reports-builder-bpmonline.

Show all comments