Hi community,

 

I try to trigger a business process from a custom button. I in the post that I need the ProcessModuleUtilities to achieve that. Here is my code :

 

define("MTF_Candidat1Page", ["MultiChoiceMixin", "ProcessModuleUtilities"], function(ProcessModuleUtilities) { 
	return {
		entitySchemaName: "MTF_Candidat",
		...
		methods: {
			OnClickCreateInterview: function(){
				var args = {
					sysProcessName: "MTFtestbtn" // this is the name of my business process. It simply send me a mail for now.
				};
				ProcessModuleUtilities.executeProcess(args);
 
				this.showInformationDialog("Busniess process triggered"); // just to show something to let me know the function triggered properly the busniess process
			},
		},
		...
		diff: /**SCHEMA_DIFF*/[
				...
				{
				"operation": "insert",
				"name": "BtnCreateInterview",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 7
					},
					"itemType": 5,
					"classes": {
						"textClass": [
							"actions-button-margin-right"
						],
						"wrapperClass": [
							"actions-button-margin-right"
						]
					},
					"click": {
						"bindTo": "OnClickCreateInterview"
					},
					"tag": "OnClickCreateInterview",
					"caption": {
						"bindTo": "Resources.Strings.BtnCreateInterviewCaption"
					},
					"hint": {
						"bindTo": "Resources.Strings.BtnCreateInterviewHint"
					}
				},
				"parentName": "ProfileContainer",
				"propertyName": "items",
				"index": 7
			}
			...
		]/**SCHEMA_DIFF*/
}

 

Now when I click on the button on my candidate page I have this error :

 

"Uncaught TypeError: ProcessModuleUtilities is undefined"

 

Do you have other docs to trigger business processes on custom button press ?

 

Best regards,

 

Julien

Like 0

Like

2 comments
Best reply

Hi Julien,

 

Could you change your schema definition as the following (swap "MultiChoiceMixin" and "ProcessModuleUtilities")?

define("MTF_Candidat1Page", ["ProcessModuleUtilities", "MultiChoiceMixin"], function(ProcessModuleUtilities) 

regards,

 

Cheng Gong

Hi Julien,

 

Could you change your schema definition as the following (swap "MultiChoiceMixin" and "ProcessModuleUtilities")?

define("MTF_Candidat1Page", ["ProcessModuleUtilities", "MultiChoiceMixin"], function(ProcessModuleUtilities) 

regards,

 

Cheng Gong

Cheng Gong,

 It works, thank you !

Show all comments

We are using the devlabs Excel Reports Builder add-on and since the Creatio upgrade to Version 7.17 or 7.18 it is not possible anymore to upload templates. The upload in itself seems to go well as there is no error message indicating otherwise. But the checkbox "Template uploaded" is not set to True and after generating the report it is obvious that the template was not uploaded because none of the uploaded changes are in the generated report.

Like 0

Like

1 comments

Hi Oliver!

I recommend updating your add-on to the latest version as this issue was fixed in it. You can find the latest version on this page:

https://marketplace.creatio.com/app/excel-reports-builder-creatio

Show all comments

Hi Community!

 

Is there a way to prevent users from logging into the system?

For example if we do maintenance, deployments or have to restart the system?

 

Thanks,

Robert

Like 0

Like

1 comments

Hi Robert,



Unfortunately, there is no such functionality in our system. 



As a workaround, you can deactivate users by SQL queries.



Best regards,

Bogdan

Show all comments

Hi community,

 

I installed the multichoice package from the marketplace and I created a combobox but for some reason I'm not able to save the data once I filled the created combobox.

 

Here is my schema :

define("MTF_Candidat1Page", ["MultiChoiceMixin"], function() {
	return {
		entitySchemaName: "MTF_Candidat",
		attributes: {
			"UsrComboBox": {
				"dataValueType": Terrasoft.DataValueType.LOOKUP
			},
		},
		mixins: {
			MultiChoiceMixin: "Terrasoft.MultiChoiceMixin"
		},
		methods: {
			init: function() {
				this.callParent(arguments);
				this.mixins.MultiChoiceMixin.init.call(this, arguments);
			},
			getMultiChoiceEntitiesConfig: function() {
				items = {
					UsrComboBox: {
						mainEntitySchemaName: "MTF_Candidat",
						mainColumnName: "Lkp_Francais",
						relatedEntitySchemaName: "MTFcompetenceslinguistiques",
						relatedColumnName: "Name"
					}
				};
				return items;
			}
		},
		...
		diff: /**SCHEMA_DIFF*/[
		...
		{
				"operation": "insert",
				"parentName": "TabMTFInfosCandidatTabLabelGridLayoutd7450211",
				"propertyName": "items",
				"name": "UsrComboBox",
				"values": {
					"className": "Terrasoft.MultiChoiceCombobox",
					"layout": {
						"colSpan": 12,
						"rowSpan": 2,
						"column": 0,
						"row": 0,
						"layoutName": "TabMTFInfosCandidatTabLabelGridLayoutd7450211"
					},
					"bindTo": "UsrComboBox",
					"dataValueType": Terrasoft.DataValueType.ENUM,
					"labelConfig": {
						"caption": "Test ComboBox"
					}
				},
 
			},
		...
		]/**SCHEMA_DIFF*/
	};
});

"UsrComboBox" is an attribute I created in the attributes of this schema.

"MTF_Candidat" is an object that I created in the page wizard.

"Lkp_Francais" is the field ID for a lookup already defined in the page wizard. By default when I created Lkp_Francais, the connected lookup is "MTFcompetenceslinguistiques".

"MTFcompetenceslinguistiques" is a basic lookup with only the inherited fields

 

It produces this combobox :

The UI part it works fine :

But if I save my object, close it and reopen it, the data previously filled in the combobox are no longer there:

 

I tried to generate the source code for all the modified schemas in the advanced settings, then I recompiled everything and it still doesn't work.



Do you have any idea what is going on and what I can do to solve this problem?

 

EDIT : in my getMultiChoiceEntitiesConfig method I tried to change

mainColumnName: "Lkp_Francais"

to

mainColumnName: "Id"

as recommanded in https://marketplace.creatio.com/app/multiple-choice-field-setup-creatio under the installation part and this time when I save my object it just load indefinitely. I tried to change it to "MTFContactCandidat" which is a lookup connected to a Contact object and the result was the same,when I click on save it loads indefinitely.

 

Best regards,

 

Julien G.

Like 0

Like

2 comments
Best reply

Hi Julien,

This add on should work with a detail which linked with your main entity (MTF_Candidat) and the lookup (MTFcompetenceslinguistiques).

 

According to the information you mentioned, you only have a field in the MTF_Candidat which linked to MTFcompetenceslinguistiques.



Therefore, you need change your design by creating a detail which allows you to store multiple records from the lookup and link to the main object.

 

After that your item configuration should be something like this:

 

items = {
 UsrComboBox: {
		mainEntitySchemaName: "DetailObject", //Detail Object code
		mainColumnName: "ColumnConnectedToMainObject", //The column in the created detail which link to MTF_Candidat.
		relatedEntitySchemaName: "MTFcompetenceslinguistiques", //Lookup object,Your configuration is Correct.
		relatedColumnName: "ColumnConnectedToLookup" //The column in the created detail which link to MTFcompetenceslinguistiques
	}
};

regards,

 

Cheng Gong

Hi Julien,

This add on should work with a detail which linked with your main entity (MTF_Candidat) and the lookup (MTFcompetenceslinguistiques).

 

According to the information you mentioned, you only have a field in the MTF_Candidat which linked to MTFcompetenceslinguistiques.



Therefore, you need change your design by creating a detail which allows you to store multiple records from the lookup and link to the main object.

 

After that your item configuration should be something like this:

 

items = {
 UsrComboBox: {
		mainEntitySchemaName: "DetailObject", //Detail Object code
		mainColumnName: "ColumnConnectedToMainObject", //The column in the created detail which link to MTF_Candidat.
		relatedEntitySchemaName: "MTFcompetenceslinguistiques", //Lookup object,Your configuration is Correct.
		relatedColumnName: "ColumnConnectedToLookup" //The column in the created detail which link to MTFcompetenceslinguistiques
	}
};

regards,

 

Cheng Gong

Cheng Gong,

 

Thanks for your answer!

 

 

Show all comments

Hi, community. We have the excel report builder add-on installed. It works fine for all sections except Leads. This is the error message we get:

 

 

When I save changes to the section in the section wizard, it saves them fine. The object compiles correctly. How can I dind out which column is the problem?

 

Thanks!

Like 1

Like

0 comments
Show all comments

How does you calculate the health score of an account?

Like 0

Like

1 comments

Hello Andrew,

 

Thank you for your question!

 

Please, check this article on our Academy on predictive scoring:

https://academy.creatio.com/docs/user/no_code_customization/ai_tools/pr…

 

Hopefully, this will help but please let us know if you have any other questions.

 

Kind regards,

Anastasiia

Show all comments

Hello community,

 

I use the [Process file] business process element to generate custom FastReports to print my opportunities.

I succeeded in generating PDF as Attachments, but I would like to download the PDF instead.

 

Do you think this is possible? If so, how to proceed?

 

Thanks

Like 4

Like

4 comments

Hi Vincent, 



Unfortunatelly there are currently no option to automatically download the attachment using the business process. 

As a workaround you can set up an autogenerated page that would show the link to the file, so you'd need to make one more click to download the file rather then going to the section and downloading it from there. 

In order to build the link please refer to this community post: https://community.creatio.com/questions/link-attachment-file



I'll also register an idea for our developers to implement such functionality in future releases of the app. 



Best regards,

Yurii

Yurii Sokil,

 

 

I'd love to see a download trigger in Business Process as well.

This would be a useful addition, it looks like we may have to build this ourselves.

Would be nice to see this in a future update

Show all comments

Hello Team,

 

Facing some issues while registering DotNet Core Package on version 7.18. Currently all our development activities were performed in Windows OS and later we would have to package it and deploy in Client OS which is Linux.

 

So the blocker right now is we are getting error while registering our local instance and  it gives 404 error. I understand that the Clio tool is compatible with DotNet Framework so would like to know if there is any other methodology for generating package in DotNet Core. 

 

Appreciate your immediate response. Thank you!

File attachments
Like 0

Like

4 comments

Hello Anupama,

 

I tried replicating the same error message on my side, tried several configurations (including deleting Terrasoft.WebApp reference in IIS, different URLs with the / at the end and port numbers, localhost and actual domain name). I wasn't able to receive the same error:

Are you using the latest clio binary files (they can be found here)? Also can you login to the application from the browser directly? And have I understood you right that you are trying to login to the .NET Core app (localhost:5020)?

Oscar Dylan,

Thanks Oscar for your response. 

 

Yes I am using Dotnet core package and as it is not hosted on IIS and on Kestrel, I am wondering if that is the reason why I am getting 404. To check how the clio command works, I tried hosting dotnet framework package on IIS and the clio command responded successfully.

 

 

Is there any settings that I am missing for the clio to respond for Dotnet Core package.

 

Thanks

Anupama

Anupama,

 

I've also successfully logged into the .NET Core app (but it's hosted on Linux) using clio:

There shouldn't be any specific setting. Can you try re-deploying your local app using .Net Core and hosted on Linux? Also don't you receive any errors in the application logs at the moment of the connect? Logs of the .Net Core app are located in the Logs folder of the root application directory:

Oscar Dylan,

 

It seems to be the Url format which is different for Creatio Dotnet Core and Dotnet Framework package. 

I tried by removing the forward slash from the Url and it did worked and I am able to generate the package. 

Thanks for the suggestion shared earlier in of your messages. 

 

Now we are experiencing another issue. We are running the SonarQube in our project file to do a code quality analysis. So the package includes an Object Code along with the source Code and which is hindering the successful installation of the package. 

Is there any way to ignore that file as I didn't find any ignore command in the github .

 

Show all comments

Hey community,

 

I've created a business process that puts the email in a contact object in lowercase. There are 2 signals, one when a contact is created and one when an email is updated.

 

When any user creates a contact, the business process runs and puts the email in lowercase.

 

If someone other than me updates an email, for unknown reasons, the business process don't run. If I am the one updating the email, the business process runs.

 

I've created many business processes and this is the only one that does that.

 

This is not a problem in the business process itself, as it works fine when I update an email.

 

The launch rights are the same as for all my other business processes.

 

I have admin rights on Creatio (I don't use the supervisor account, I have my own account with admin rights). Even if another admin updates the email address of a contact, the business process don't run.

 

Do you have any clues as to what is happening, why it is happening and how I can solve this problem?

 

Please feel free to ask for more details or screenshots if necessary.

 

EDIT :

I'm trying to update the email by editing the ContactPageV2 and the ContactMiniPageV2 directly. Here is my code but I can'tt find a way to make it work..

 

define("ContactPageV2", ["MultiChoiceMixin", "css!ClientUnit_MTF_ContactCustomCSS"], function() {
	return {
		entitySchemaName: "Contact",
		attributes: {
			"UsrInterests": {
				"dataValueType": Terrasoft.DataValueType.LOOKUP
			},
			"Email": {
				dependencies: [{
					columns: [],
					methodName: "emailToLower"
				}]
			}
		},
		/** ... */
		methods: {
			init: function() {
				this.callParent(arguments);
				this.mixins.MultiChoiceMixin.init.call(this, arguments);
				},
			emailToLower: function () {
				this.set("Email", this.get("Email").ToLowerCase());
			},
                        /** ... */

 

define("ContactMiniPage", [], function() {
	return {
		entitySchemaName: "Contact",
		attributes: {
			"Email": {
				dependencies: [{
					columns: [],
					methodName: "emailToLower"
				}]
		},
		/** ... **/
		methods: {
			emailToLower: function (){
				this.set("Email", this.get("Email").ToLowerCase());
			}
		},
                /** ... **/

 

Best regards,

 

Julien Gunther

Like 0

Like

1 comments

Hello Julien,

 

Hope you're doing well.

It would be great if you could provide the screenshots of the business process you use and the process elements settings as well.

Thank you in advance.

 

Best regards,

Roman

Show all comments

I'm calling REST api of Contact ,Account and Case management for CRUD operation. I'm calling Creatio CRM REST from WSO2 EI. It is identical the Request which is send from the Postman or Rest Client.

But it gives 302 Status for WSO2 EI calling the  Creatio REST while it gives 403 for Postman or Restclient If BPMCSRF header doesn't contain cookie value.

 

If the BPMCSRF header value contains correct cookie value from the Login request, Postman or Restclient gives 201/200 for success operation and WSO2 EI gets same 302 response.  Login API call working fine from the WSO2 EI. 

 

Sample Request from WSO2 EI

"POST /0/odata/Account HTTP/1.1[\r][\n]"

"Accept: application/json;odata=verbose[\r][\n]"

"X-Requested-With: XMLHttpRequest[\r][\n]"

"ForceUseSession: true[\r][\n]"

"Content-Type: application/json[\r][\n]"

"Content-Length: 228[\r][\n]"

"Host: 103594-crm-bundle.creatio.com[\r][\n]"

"Connection: Keep-Alive[\r][\n]"

"User-Agent: Synapse-PT-HttpComponents-NIO[\r][\n]"

"[\r][\n]"

"{"Name":"API Test","AccountId":"e6574af1-3e92-4099-958e-e798f52ee016","JobTitle":"Marketing manager","BirthDate":"0001-01-01T00:00:00Z","Phone":"","MobilePhone":"+1 213 566 34 22","Email":"test@gmail","Completeness":30,"Age":19}"

 

Sample Response from Creatio 

 

"HTTP/1.1 302 Found[\r][\n]"

"Server: nginx/1.14.1[\r][\n]"

"Date: Thu, 16 Sep 2021 06:21:05 GMT[\r][\n]"

"Content-Type: text/html; charset=utf-8[\r][\n]"

"Content-Length: 170[\r][\n]"

"Connection: keep-alive[\r][\n]"

"Cache-Control: private[\r][\n]"

"Location: /Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount[\r][\n]"

"X-AspNet-Version: 4.0.30319[\r][\n]"

"X-Powered-By: ASP.NET[\r][\n]"

"X-Frame-Options: SAMEORIGIN[\r][\n]"

"X-Content-Type-Options: nosniff[\r][\n]"

"[\r][\n]"

"Object moved[\r][\n]"

"

Object moved to here.

[\r][\n]"

"

.

Like 0

Like

7 comments

It means that you are not authenticated properly in the application (see location part  "/Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount", you were redirected to the login page). You need to check all the cookies that are passed to the OData request that you send and compare it with cookies you get in Postman + perform more tests to see which cookie set will result in a successful call.

Oscar Dylan,

If the authentication error, it should be 401 or 403 status. But here it is always redirect to login page with 302. verified the headers from Postman and client app both, those are identical. 

Anusha,

 

That is correct - the resource was found, but you need to authenticate first (once again, pay attention to the location path /Login/NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fAccount). The system automatically redirected you to the login location.

 In Postman you receive 200 OK to the request, but before it you receive 302 response (can check in the Postman console):

Hi Oscar,

 

Thank you very much for the information, but still I'm confused authentication approach. This is what I'm doing.

 

When I get 302 for Contact endpoint, then I perform the authentication to  auth endpoint  POST call <Creation-app-host>/ServiceModel/AuthService.svc/Login with the body [1]. Then I see cookies details in the response with BPMCSRF cookie with 200 response.  Then I send again the Contact endpoint with those auth cookies, [2]  are the headers which I send to Contact endpoint again. But still same 302 redirection is there even after successful authentication. 

 

Could you please help me on this.

--- does the above approach wrong

--- does the auth headers wrong mentioned in [2]

 

If above approach wrong, please help me to find request format from the client application to complete the successful Contact create through the  client.

 

[1] body

{

   "UserName":"xxxxxxxxx",
   "UserPassword":"xxxxxxx"
}

 

[2] . Headers

 

Accept: application/json;odata=verbose[\r][\n]"

"BPMCSRF: cvHrL0GEHYdswl1QZh8Ie.[\r][\n]"

"ForceUseSession: true[\r][\n]"

"Set-Cookie: .ASPXAUTH=F82E.... "

"Set-Cookie: BPMCSRF=cvHrL0GEHYdswl1QZh8Ie."

"Set-Cookie: BPMLOADER=zchmt5tlzildsx22zlle1wnk"

"Set-Cookie: UserName=93|117|112|101|114|118|105|115|101|114"

"Content-Type: application/json; charset=utf-8[\r][\n]"

"Content-Length: 228[\r][\n]"

"Host: 103594-crm-bundle.creatio.com[\r][\n]"

"Connection: Keep-Alive[\r][\n]"

"User-Agent: Synapse-PT-HttpComponents-NIO"

 

Hi Anusha,

 

Unfortunately you have to run test and find a way to pass the cookies to the request properly in terms of your integration. For example I have this cookie header in Postman:

 

BPMSESSIONID=xjjysy25na5ig5sqbgdyxd14; visid_incap_2180455=49BJJNmNT1uK2vo4spt1YM3yQWEAAAAAQUIPAAAAAAB7xEOk/CkixDKkf1pVpwRW; .ASPXAUTH=0129CAB95F4B3C753B6B00E3BBC7F15E9F0CF094A9209DCC541E033D963163699488F8A6AF3F3F845BABCA582CE603AD00E4AC3EE005216347F4B399235033BF60A3338158451099DEC44FE8B1920F57398E4439EE170B436C75FF3BA3BFC2C28BF8BCCB6D37261D9942F97133800DFEED491B8C8671824183CF9CD2CC20549B5BF672599D3F9CAD151E6F4C92A95C7FC888E4214039842D8B53E540D03495542D8C60B238BA9759FFAE27920E7688D35C92795D59741A8D0E5B34234C6DCC769F79A176BF63CCA190D0BEC19A8ACF3793A6522866BF14A14092474BBA68D100282CE8CB6DAB3C8041DB7544EABD759617446687311CE784129E88BE2558CE2917C790372F214D6E8D05B630B789F0D37E4EBB60E06A6B0C20FE075ED78960211A017F115D32F53B2D76E9B2AF302EC3887E47FE421CA76D246B0FCD8260B25380BED735F19C87C0545187841709C5A75B5547CDF43D52304C9D4760C8E625F7DA674A74; BPMCSRF=ulHtF40aiiRNzRWk5BMTWO; BPMLOADER=mnbxfikelfxqnnl2iz0aiobd; BPMSESSIONID=xjjysy25na5ig5sqbgdyxd14; UserName=83|117|112|101|114|118|105|115|111|114

 

And I guess all of them should be also passed to your request. This is not something that can be solved on the community, you need to test your integration authentication to find a correct way.

 

Also check if your authentication in terms of your integration is configured in the similar way to the one explained here.

Hi Oscar,

 

Thanks for the information. I will check further.

 

Thanks & Best Regards

Anusha

Show all comments