We implemented an approval process in the opportunity entity.

But now I have the requirement to link the approval-records also with an second entity.

 

In the new approval-object (which will created if you activate the approval in the target section wizard), I created a new lookup-field (link to the second entity).

 

 

But in the Approval task I can't find any way to fill this new field.

 

 

Is there any solution for this requirement?

Like 0

Like

1 comments

I believe its best to use only one record in the system to be linked to the Approval. You just have to ask yourself what the user is accuallt approving and commit to that. Is it the Opportunity(aka Pitch?) or the Project(aka Matter?)?

 

If I wanted to display History of Approvals of the Opportunity, on the Project Page, that's easy to set up using a Detail. Easy to use and good overview as well

 

You could modify the Approval object and have it be connected to an Project (this not the same as the Link-function since that's pretty special). But I gotta wonder if this is neccessary

Show all comments

Hi community,

 

How do you make a link (string field) a hyperlink in a mini-page? It is displayed as a label (https://academy.creatio.com/api/jscoreapi/7.15.0/index.html#!/api/Terra…) but there is no "showValueAsLink" property like in a text field in a page.



And how can I create a field that has the same behaviour as the email field in the default contact page? I have a "linkedin" field that I need to sync with the communication option (which has a linkedin field added under "website") and I need to sync it with the same behaviour as the email field (which takes the main email in the communication option, automatically adds a new email or updates it etc.).

 

Best regards,

 

Julien

Like 0

Like

7 comments

Hi Julien,

 

As for your first question - it's not clear which string-link field on the mini page you are refering to. I hope this community post where a similar question was asked will be useful - https://community.creatio.com/questions/convert-text-field-hyperlink.

 

As for your second question - the logic behind the email column is stored in the BaseCommunication and ContactCommunication objects in the Base package (processes on these objects). You need to study how the logic is declared there.

 

Best regards,

Oscar

Oscar Dylan,

 

Thank you for your answer, about my first question I mean a mini page that shows when you hover on a record :

 

I need to change a field that shows on the minipage to a link (with target _blank). On a page directly I can use a "ShowAsLink" attribute, but the component on a minipage that shows a text field is a label, which don't have a "ShowAsLink" attribute.

 

Thank you for your answer on the second question, I'll dig into the Base Package.

 

Best regards,

 

Julien Gunther

Julien Gunther,

 

This minipage is a "view" type minipage for the section that is used as a lookup reference. So you need to create the same logic described in the community post I shared above for the field on that minipage.

 

Best regards,

Oscar

Oscar Dylan,

 

The text field is rendered as a label, and it throw me this error :

Uncaught Object { message: "Property showValueAsLink is not defined in class Terrasoft.controls.Label" }

 

here is my diff :

			{
				"operation": "insert",
				"name": "Linkedin889ba056-f389-4852-a0f2-b5f8caede729",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 10,
						"layoutName": "MiniPage"
					},
					"isMiniPageModelItem": true,
					"visible": {
						"bindTo": "isViewMode"
					},
					"bindTo": "Linkedin",
					"showValueAsLink": true,
					"controlConfig": {
						"enabled": true,
						"href": {
							"bindTo": "getLinkedin"
						},
						"linkclick": {
							"bindTo": "onExternalLinkClick"
						}
					}
				},
				"parentName": "MiniPage",
				"propertyName": "items",
				"index": 13
			},

and the methods :

		methods: {
			getLinkedin: function() {
				return this.getLink(this.get("Linkedin"));
			},
			onExternalLinkClick: function() {
				return;
			},
			getLink: function(value) {
				if (Terrasoft.isUrl(value)) {
					return {
						url: value,
						caption: value
					}
				}
			}
		},

Best regards,

 

Julien Gunther

Julien Gunther,

 

Ok, we can do it in another way. We can create a virtual column, populate it with the value from the main record and display it not as a label in the minipage, but as a string field. For example using the code below (was added to the ContactMiniPage in my case):

define("ContactMiniPage", [], function() {
	return {
		entitySchemaName: "Contact",
		attributes: {
			"LinkedIn": {
				"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				"value": ""
			}
		},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
			onEntityInitialized: function() {
				this.callParent(arguments);
				var linkedInValue = this.get("UsrLinkedIn");
				this.set("LinkedIn", linkedInValue);
			},
			getLinkedInLink: function() {
				return this.getLink(this.get("LinkedIn"));
			},
			getLink: function(value) {
				if (Terrasoft.isUrl(value)) {
					return {
						url: value,
						caption: value
					};
				}
			},
			onLinkedInLinkClick: function() {
				return;
			},
		},
		dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "LinkedIn",
				"values": {
					"showValueAsLink": true,
					"controlConfig": {
						"href": {
							"bindTo": "getLinkedInLink"
						},
						"linkclick": {
							"bindTo": "onLinkedInLinkClick"
						}
					},
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 11
					},
					"caption": {
						"bindTo": "Resources.Strings.LinkedIn"
					},
					"bindTo": "LinkedIn",
				},
				"parentName": "MiniPage",
				"propertyName": "items",
				"index": 5
			},
			{
				"operation": "merge",
				"name": "HeaderContainer",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 0
					}
				}
			},
			{
				"operation": "merge",
				"name": "TimezoneMiniContactPage",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 9
					}
				}
			},
			{
				"operation": "merge",
				"name": "JobInfoContainer",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 10
					}
				}
			},
			{
				"operation": "move",
				"name": "JobInfoContainer",
				"parentName": "MiniPage",
				"propertyName": "items",
				"index": 2
			},
			{
				"operation": "merge",
				"name": "Name",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 1
					}
				}
			},
			{
				"operation": "merge",
				"name": "Type",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 2
					}
				}
			},
			{
				"operation": "merge",
				"name": "Account",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 3
					}
				}
			},
			{
				"operation": "merge",
				"name": "JobTitle",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 4
					}
				}
			},
			{
				"operation": "merge",
				"name": "Department",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 5
					}
				}
			},
			{
				"operation": "merge",
				"name": "MobilePhone",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 6
					}
				}
			},
			{
				"operation": "merge",
				"name": "Email",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 7
					}
				}
			},
			{
				"operation": "remove",
				"name": "OwnerEdit"
			},
			{
				"operation": "remove",
				"name": "Owner"
			},
			{
				"operation": "remove",
				"name": "OwnerButtonContainer"
			},
			{
				"operation": "remove",
				"name": "OwnerCallButton"
			},
			{
				"operation": "remove",
				"name": "OwnerEmailButton"
			}
		]/**SCHEMA_DIFF*/
	};
});

As a result I received a clickable linkedin field in the view-minipage:

Hope it will work in your case as well.

 

Best regards,

Oscar

Oscar Dylan,

 

I still have the same error :

Uncaught Object { message: "Propriété showValueAsLink is not defined in class Terrasoft.controls.Label" }

 

Here is my code :

define("MTF_Candidat1MiniPage", [], function() {
	return {
		entitySchemaName: "MTF_Candidat",
		attributes: {
			"LinkedinVirtual": {
				"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				"value": ""
			}
		},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
			onEntityInitialized: function() {
				this.callParent(arguments);
				this.set("LinkedinVirtual", this.get("UsrLinkedin"))
			},
			getLinkedinLink: function() {
				return this.getLink(this.get("LinkedinVirtual"));
			},
			onExternalLinkClick: function() {
				return;
			},
			getLink: function(value) {
				if (Terrasoft.isUrl(value)) {
					return {
						url: value,
						caption: value
					}
				}
			}
		},
		dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			// other items in diff ....
			{
				"operation": "insert",
				"name": "Linkedin889ba056-f389-4852-a0f2-b5f8caede729",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 10,
						"layoutName": "MiniPage"
					},
					"caption": "Linkedin",
					"isMiniPageModelItem": true,
					"bindTo": "LinkedinVirtual",
					"showValueAsLink": true,
					"controlConfig": {
						"href": {
							"bindTo": "getLinkedinLink"
						},
						"linkclick": {
							"bindTo": "onExternalLinkClick"
						}
					}
				},
				"parentName": "MiniPage",
				"propertyName": "items",
				"index": 39
			}
		]/**SCHEMA_DIFF*/
	};
});

"isMiniPageModelItem" is a required attribute, if set to false or removed it raise this error:

Uncaught Object { message: "DataValueType.null is not supported" }

 

Do you have another solution ?

 

Best regards,

 

Julien

 

 

Julien Gunther,

 

Your error comes from some place that is not present in the code I shared. Everything is working on my end, please perform an absolutely same setup.

 

Best regards,

Oscar

Show all comments

Hello,

when you send emails from creatio the sender is always shown at the top of the record (here John Best):

it would make more sense, if the recipients of the emails were shown at this place.

Is that possible?

 

For incoming emails that is fine but for outgoing email it would be better to show the recipients here.

 

BR

Like 0

Like

1 comments

Hello,

 

I've created a logic that will display recipients specified in the "To" field of the email. Here is how it looks like on my end:

To achieve this I've performed the following steps:

 

1) Created a replacing view module in configurations and selected EmailItemSchema as a parent module:

2) Added the following code there (the implementation was created using the email body as an analog):

define("EmailItemSchema", ["BusinessRuleModule", "EmailConstants"], function(BusinessRuleModule, EmailConstants) {
	return {
		entitySchemaName: EmailConstants.entitySchemaName,
		methods: {
			getRecipients: function() {
				var recipientsList = this.get("Recepient");
				return "Recipients: " + recipientsList;
			}
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "RecipientsContainer",
				"parentName": "EmailMessage",
				"propertyName": "items",
				"values": {
					"itemType": Terrasoft.ViewItemType.CONTAINER,
					"items": []
				}
			},
			{
				"operation": "insert",
				"parentName": "RecipientsContainer",
				"propertyName": "items",
				"name": "RecipientsText",
				"values": {
					"itemType": Terrasoft.ViewItemType.LABEL,
					"caption": {bindTo: "getRecipients"},
					"classes": {
						"labelClass": ["message-email-text"]
					},
				}
			},
		]/**SCHEMA_DIFF*/,
		rules: {}
	};
});

3) Refresh the page

 

You can use the example above to develop your own logic if needed.

 

Best regards,

Oscar

Show all comments

How can I set up B2B2C hierarchy in CRM, think of it as a franchise based business where each franchise has its own employees, customers/leads/accounts/deals etc. Franchise employees can login and manage their leads, contacts and deals and we at the top of hierarchy can see all franchises and aggregated the data. Does Creatio CRM supports this by default and if not then can we customize and supports it. We need this B2B2C hierarchy  for all marketing, sales and service. Please suggest.

 

Like 0

Like

4 comments

Hello Gaurav,

 

Unfortunately, our platform does not have any presents for such projects.

Although, it is possible to achieve such configuration by setting up roles and distributing the access to the system between your customers.



For example: You can branch out the access in the way that only certain users will full access to all the data on your instance while "franchises" will be able to access the information only related to them.

 

Thank you,

Artem.

Artem,

Thanks for providing that information, but what is going to be name of entity/object which will represent a Franchise/Partner in creation CRM, I can see Partnerships, Accounts etc but not sure it can be used to represents a franchise or not. Also can we achieve the flexibility of assigning a lead, deal to a user where dropdown will only show the users/employees of that franchise not all users in system. We can filter by franchise, means can see all leads, contacts, deals etc for each franchise and so on. Can we customize the Creation CRM which means all sales, marketing and service to this much extent or its too much to do, I mean adding new tables/entities or columns in user tables etc. Please suggest.

Take a Look at this franchise management app developed on Creatio CRM. Here is the link: https://marketplace.creatio.com/app/franchise-management-creatio

Harold Busby,

Thanks for providing that link, I have installed this app but not sure what is entity for franchise in this app, can you please share some link to its documentation so that I can understand it.

Show all comments

Hello everybody

I'm working in file-system mode in a 7.18.5 development environment.

I need to override the OnSaving method of the Account entity then I created a custom EntityEventListener (following Creatio documentation).

I followed all the instructions of Creatio documentation  to setup my Visual Studio 2019 Enterprise and my local Creatio web application (see https://academy.creatio.com/docs/sites/en/files/pdf/guide/191/Debugging_7.18.pdf).

I worked both on "Compile into a separate assembly" package (in this case opening the package project file) and "traditional" package (in this case using the autogenerated Terrasoft.Configuration.sln solution).

When I attach to w3svc process my VS2019 (run as administrator) the breakpoints are not recognized because the symbols are not loaded. Then I force to load symbols so the breakpoints are recognized (see image below):

 

If I add a new break point during debug there's an error:

 

Anyway.. the debugging doesn't work: if I press F10 or F5 the breakpoints after the first are not manged and the execution ends.

 

So we have two main problems:

1) The symbols are not automatically loaded (but I can do it manually..)

2) The debugging tools dont work

 

I'm I doing something wrong?

I can I really debug server-side code?

Thanks

 

Like 0

Like

4 comments

Hello Massimiliano,

 

As for the automated symbols download - yes, please download them manually in case automated download didn't download all the symbols.

 

As for the breakpoint set - unfortunately there is no standard solution for this, only those described in forums here or here.

 

Best regards,

Oscar

Oscar Dylan,

Hello Oscar,

It seems related to the "Optimize code" option but it seems to me that Creatio compiles the packages in Release mode and not in Debug mode. Does the issue comes from that? Is there any solutions?

Thakns

Best regards

Massimiliano

Massimiliano,

 

<compilation debug="true" targetFramework="4.7">

        <assemblies>

          <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

        </assemblies>

      </compilation>

 

and all other settings performed in terms of the article you sent should compile packages in debug mode.

 

Best regards,

Oscar

Dear Oscar

I tried to change that setting in both web.config files (the "root one" and the "Terrasoft.WebApp one") but it didn't work. I saw that the dll's are compiled into the "Release" folder and not into "Debug" folder.

Am I doing something wrong?

If we set "debug=true" in the web.config files, are the packages created correctly to be deployed to production environments or do we need to reset the "debud=false" and recompile before exporting the packages?

Best regards

Massimiliano

Show all comments

Dear Team,

 

We have written a process to provide the access to a lead based on the owner selected. Attached, screenshot of the process [Access Provided to the Employee.jpg].

But the manager of the employee defined in the organizational structure and the manager above the employee in the structure are also able to edit the lead whereas they need to have only read only option as defined in the process.

 

Organizational Structure via screenshot

 

 

TopMost Manager.jpg

                Manager’s Manager.jpg

                                Employee Manager.jpg

                                                Employee.jpg

 

In the process, have mentioned only read and edit option to Employee and other roles [tied hardcoding to read only] but still they are able to edit the lead.

Are there any changes to be done in object permission? 

 

Thanks in advance!

 

Like 0

Like

2 comments

Adding to the above question, noticed that access assigned record level to any records is not working as expected. Even if all the users are given only read access, still the users are able to edit the record in  7.18.5.1500 version

 

Amritha Mayan Gorky,

 

Hello, 

 

In our system Managers of a group inherit all the access rights of other users in this group. It's expected oob behavior and this logic cannot be overwritten with a business process, meaning that even if you remove the access rights with a help of business process, they will be granted on a system level.

As of now, such behavior cannot be changed with a help of basic system tools and require development. 

Also, we already have a corresponding query for our R&D team to implement the described functionality in the upcoming versions.

I will assign this case to the project in order to increase its priority.

Thank you for helping us to make our application better!

Best regards, 

Anastasiia

 

Show all comments

Hi community,

 

I need a way to sort the rows of a data grid according to the values present in a detail.

 

I have my detail in the candidate object like this:

 

Here is a small simplified diagram of the relationship between my lookup, my detail and my object:

I would like to run this sql query to filter the candidates :

SELECT c.* FROM technocandidats tc
RIGHT JOIN candidats c ON c.id = tc.candidat_id
WHERE tc.techno_id = n OR
tc.techno_id = n OR ...

where "n" will be the techno's id.

 

Is there a way to do this directly in the section's advanced filters?

 

Or better still, in a box on top of the section like the one in my candidat object where the detail appears? Or even better, make that in a preconfigured page ?

 

Best regards,

 

Julien Gunther

Like 0

Like

1 comments

Hello Julien,

 

I believe this should be possible as you have the connections between your objects. Could you please contact Creatio support team using support@creatio.com so we can help you with the filter setup in your system?

 

Thank you,

Bogdan S.

Show all comments

Hi there, when I setup a business process, I have to get the value from an element parameter like [#Get base currency rate.XXX#] where XXX is the value stored in a system parameter, say [#Base currency#]. Any suggestion? Thank you in advance!

Please refer to the following figure.

Like 0

Like

2 comments

Hi Andrew,

Just an idea, you could possibly use a formula to get the value you're after. It would be a big series of ?: statements to ultimately put the value into a process parameter. For example: 

(BaseCurrency == "TWD" ? [#Get base currency rate.TWD#] : (BaseCurrency == "USD ? [#Get base currency rate.USD#] :  ...you get the idea))

If you're only going to be handling the 5 currencies you have in your screenshot, you could put each in it's own process param and then would be easier to work with for the formula or in a script task.

Ryan

Ryan Farley,

Hi Ryan, thank you for your advise. Yes, your suggestion is a solution which I thought of previously. But I didn't find any "if then else" formula in the documentation from Creatio. Can you show me where to find this formula? Thank you very much!

Show all comments

I created a custom package working in file system mode on my PC.

The package is set to be "Compiled into a separate assembly".

When I compile it (selecting "Compile" in the dropdown menu near the package name and selecting "Compile all" in the Actions button) I see a popup error reporting syntax errors in all the Client modules of the package (see image below).

Creatio shouldn't compile Client modules since they are Javascript and not C# (the errors are syntax errors related to C# language).

I also "Generate for all schemas".. I tried almost everything without success.

The package works fine, even exported and installed in cloud production environment, but I cannot compile it in my development environment.

Why does Creatio try to compile in C# the Client modules?

 

 

Like 0

Like

0 comments
Show all comments

Dear,

Is it possible to join documents uploaded on Creatio to an email ?

We would like to store files in Creatio and use them into email attachments (without downloading them into computer).

Thank you !

Nicolas

Like 2

Like

0 comments
Show all comments