webservice
authentication
http request
http
Studio_Creatio
7.17

Hi community!

 

I'm trying to set up a call to a web service (the built-in no-code approach), which uses a custom HTTP header for authentication called 'X-API-KEY'.

 

I haven't found a way to add a header to the web service via the UI. Is there some way to achieve this?

 

Thanks,

Robert

Like 0

Like

3 comments

Hi Robert, 

 

Usually such operations is performed by using OData: 

 

https://academy.creatio.com/docs/developer/integrations_and_api/data_se…



https://documenter.getpostman.com/view/10204500/SztHX5Qb?version=latest

 

Please also check out this articles to find some useful tips: 

 

[Call web service] process element -

 

https://academy.creatio.com/docs/user/bpm_tools/process_elements_refere…

 

API Keys - 

 

https://swagger.io/docs/specification/authentication/api-keys/

 

 

Regards, 

 

Bogdan L.

 

 

 

Hi Bogdan,

thanks for the answer!

However, that's not quite what I was looking for ;)

 

I know of OData and how to use it. Unfortunately, the 3rd party service doesn't support it.

What I'm looking for is actually a way to add custom headers to HTTP requests when calling external web services via business processes.

 

I know I could use a script task and program it myself, but I was wondering if it also worked when using the standard web service integration.

 

Thanks,

Robert

Robert Pordes,

 

Actually we don't have practical examples of such implementation. 

 

So in this case as you said you may use a script task to achieve required result. 

 

Probably the link of how to Run business process via web-service will be also useful for you:

 

https://academy.creatio.com/docs/developer/front-end_development/creati…

 

Thank you! 

 

Regards, 

 

Bogdan L.

Show all comments
Studio_Creatio
7.17

Can you provide an example of using the Process File element with a Process Parameter as the source of the file?    Is the parameter value a file name?  If so, from what system?

Like 0

Like

4 comments

Hello,

 

Can you please share the whole idea of your process? What is the business task you want to achieve?

 

Thank you.

Regards,

Dean

I would like to be able to create a new Knowledgebase article in a process.  It appears that I can save the file to a "File and Link of Knowledgebase", but I don't see a way to get the file into the system.

Thank you.

 

It is not possible to generate file out of nothing. The file can be only based on something, let's say on some existing file. This can be used for copying files from one record to another. If you want to generate the article based on some other record, you may try to create a printable report with macros and after that generate the report in the knowledge base article record, it its attachments.

Here is the example of this logic. I generate printable report based on my contact on the files detail in the knowledgebase article:

 

Regards,

Dean

I don't expect to create a file out of nothing.  I am trying to get similar behavior to uploading a file for a new article in the Knowledge Base Section.  A printable does not work, it needs to support any file type.

Show all comments
price list
products
order
Studio_Creatio
7.16

The system is not respecting the price list registered for the account. I currently work with more than five price types for the same product.

The price list was registered and linked to the specified account, but when starting a new order for the account, it does not load the value referring to the list, but a base value.

 

Would have any tips or step by step to check this situation.

Like 0

Like

1 comments

Dear Alisson,



As we can see, you created a support case on this matter - 0998614 and we provided you with a reply:



This logic developed by our project team developers on your website. We are looking into it and will get back to you with the solution soon.

 

Thank you.



Best Regards,

Ivanna Yatsura.

Show all comments

Hi everyone

how i should add a enum property from my object using the web integration tool?.

Thi is the object (ContactCardWS_Filter) with the enum property (ContactCardWS_Fields)

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3221.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:microsoft-dynamics-schemas/page/contactcardws")]
    public partial class ContactCardWS_Filter {
 
        private ContactCardWS_Fields fieldField;
 
        private string criteriaField;
 
        /// <remarks/>
        public ContactCardWS_Fields Field {
            get {
                return this.fieldField;
            }
            set {
                this.fieldField = value;
            }
        }
 
        /// <remarks/>
        public string Criteria {
            get {
                return this.criteriaField;
            }
            set {
                this.criteriaField = value;
            }
        }
    }
 
    public enum ContactCardWS_Fields {
 
        /// <remarks/>
        No,
 
        /// <remarks/>
        Name,
 
        /// <remarks/>
        Type,
 
        /// <remarks/>
        Company_No,
 
        /// <remarks/>
        Company_Name,
 
        /// <remarks/>
        IntegrationCustomerNo,
 
        /// <remarks/>
        Search_Name,
 
        /// <remarks/>
        Salesperson_Code,
 
        /// <remarks/>
        Salutation_Code,
 
        /// <remarks/>
        Organizational_Level_Code,
 
        /// <remarks/>
        Last_Date_Modified,
 
        /// <remarks/>
        Date_of_Last_Interaction,
 
        /// <remarks/>
        Last_Date_Attempted,
 
        /// <remarks/>
        Next_Task_Date,
 
        /// <remarks/>
        Exclude_from_Segment,
 
        /// <remarks/>
        Privacy_Blocked,
 
        /// <remarks/>
        Sent_to_CRM,
 
        /// <remarks/>
        Minor,
 
        /// <remarks/>
        Parental_Consent_Received,
 
        /// <remarks/>
        Address,
 
        /// <remarks/>
        Address_2,
 
        /// <remarks/>
        Post_Code,
 
        /// <remarks/>
        City,
 
        /// <remarks/>
        County,
 
        /// <remarks/>
        Country_Region_Code,
 
        /// <remarks/>
        ShowMap,
 
        /// <remarks/>
        Phone_No,
 
        /// <remarks/>
        Mobile_Phone_No,
 
        /// <remarks/>
        E_Mail,
 
        /// <remarks/>
        Fax_No,
 
        /// <remarks/>
        Home_Page,
 
        /// <remarks/>
        Correspondence_Type,
 
        /// <remarks/>
        Language_Code,
 
        /// <remarks/>
        Job_Title,
 
        /// <remarks/>
        Currency_Code,
 
        /// <remarks/>
        Territory_Code,
 
        /// <remarks/>
        VAT_Registration_No,
    }

Like 0

Like

1 comments
Best reply

Hi Carlos,

 

The value should be passed as a string so you need to use the string parameter. Also you can run a couple of tests and identify which data type to use in practice.

 

Best regards,

Oscar

Hi Carlos,

 

The value should be passed as a string so you need to use the string parameter. Also you can run a couple of tests and identify which data type to use in practice.

 

Best regards,

Oscar

Show all comments
Studio_Creatio
7.17

When I create a new account, I would like to create an organizational role with the same name as the account.  Later, when linking contacts to the account, I would like to add them to that role.  I want to do this in business processes, presumably in User Tasks.  Can you point me to relevant classes/api's?

Like 0

Like

4 comments

Hello Glenn,

 

Hope you're doing well.

 

If I understood your task correctly you can reach your goal by using the Business Process. To add the organizational role via a business process please create a process that could contain the "Add data" process element with the following parameters:

 

 

As a result the organizational role will be created:

 

 

About the second part of the question: you can do this with the "Add data" element as well by adding data to "User in roles" object with columns "User" populated as an ID of the user (Reading data from the object "User in roles") and "Role" populated as an ID of the role ('Reading data' also from the object "User in roles"). Also you can  try to use [SysAdminUnit] table. It contains Users, Roles and Contact references.

 

Best regards,

Roman

Roman Rak,

Thanks, this looks like it will do what I need.  One question.  You set the value of Type = 1 for the System Admin Unit.  Are the possible values documented anywhere?

Roman Rak,

One additional question.  The purpose of this application is to provision a new customer and its users.  The last step I would like to do is grant licenses to the newly created users.  Is that possible?

Show all comments
Studio_Creatio

Hello!

 

Currently our cases aren't pulling any of the information that they should be from the account. When a case is open, instead of showing the case number at the top, it shows Case #undefined: undefined . In the case section, all of the information is still there. Any idea what is happening and how to fix it?

Like 0

Like

1 comments

Hello Andie,

 

There was most likely some code added to CasePage or CaseSection schemas  that has some mistakes or errors. As the result the case page is not properly loaded.

Try to debug their code for any errors.

 

if there is still no success - try to contact support@creatio.com for assistance. It is not possible to give you the answer within this community thread. It is necessary to have a closer look into the schema code on your website. 

 

Regards,

Dean

Show all comments
Business Process
execute
Javascript
Studio_Creatio
7.17

Dear colleguagues

 

I need to run a process when create a new record, in this case invoke it from onEntityInitialized method just in case is a new record or a copy from another (this.isAddMode() || this.isCopyMode())

 

But don't know how to call a process from there, and how to pass parameters, is it possible?

 

Thanks in advance

Like 0

Like

3 comments
Best reply

Hi Julio,

 

You can use this article as a reference on how to trigger the process from the client and pass process parameters to the process.

 

As for calling the process upon creating a new record - onEntityInitialized is not a good choice here since the process call will be triggered once the page is loaded for adding a new record, but not once all the data on the page is specified and the record should be saved. In our case it's better to use save function and overwrite its logic. For example in a following manner:

 

1) We have a UsrTestJSON object which is a section in the system and has UsrTestJSON1Page as an edit page.

 

2) UsrTestJSON object has following columns:

 

UsrTransType - Text (250 characters) data type column

UsrPolicyNumber - Text (500 characters) data type column

UsrTransTime - Time data type column

UsrTransDate - Date data type column

3) We need to call the custom process called "Test JSON page process" with the following schema once the record is saved upon creation:

Please note that the process code is Process_20340ad and the process parameter codes should be the same as process parameter names (as an example please see UsrTransType parameter declaration).

 

4) Add the following code to the UsrTestJSON1Page schema:

define("UsrTestJSON1Page", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
	return {
		entitySchemaName: "UsrTestJSON",
		attributes: {},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{
			"Files": {
				"schemaName": "FileDetailV2",
				"entitySchemaName": "UsrTestJSONFile",
				"filter": {
					"masterColumn": "Id",
					"detailColumn": "UsrTestJSON"
				}
			}
		}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
			callCustomProcess: function() {
                var usrTransType = this.get("UsrTransType");
				var usrPolicyNumber = this.get("UsrPolicyNumber");
				var usrTransDate = this.get("UsrTransDate");
				var usrTransTime = this.get("UsrTransTime");
                var args = {
                    sysProcessName: "Process_20340ad",
                    parameters: {
                        UsrTransType: usrTransType,
						UsrPolicyNumber: usrPolicyNumber,
						UsrTransDate: usrTransDate,
						UsrTransTime: usrTransTime
                    }
                };
                ProcessModuleUtilities.executeProcess(args);
            },
			save: function(){
				this.callParent(arguments);
				if (this.isAddMode()){
					this.console.log("Adding mode!!!");
					this.callCustomProcess();
				} else if (this.isCopyMode()){
					this.console.log("Copy mode!!!");
				} else if (this.isEditMode()){
					this.console.log("Edit mode!!!");
				} else {
					this.console.log("NOT EDIT, NOT COPY, NOT ADD!!!");
				}
			},
			onUsrTestJSONPageButtonClick: function(){
				this.save();
			}
		},
		dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			{
                "operation": "insert",
                "parentName": "ActionButtonsContainer",
                "propertyName": "items",
                "name": "UsrTestJSONPageButton",
                "values": {
                    itemType: Terrasoft.ViewItemType.BUTTON,
                    caption: { bindTo: "Resources.Strings.UsrTestJSONPageButtonCaption" },
                    click: { bindTo: "onUsrTestJSONPageButtonClick" },
                    "layout": {
                        "column": 1,
                        "row": 6,
                        "colSpan": 1
                    }
                }
            },
			{
				"operation": "insert",
				"name": "UsrTransTypec0a98c8f-acb0-4d1f-9333-94ba13a0abe4",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "ProfileContainer"
					},
					"bindTo": "UsrTransType"
				},
				"parentName": "ProfileContainer",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "UsrPolicyNumber9a8b5c79-6a4f-4326-ab8e-d7c471ebc2a5",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "Header"
					},
					"bindTo": "UsrPolicyNumber"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "UsrTransDate2bfe7bc7-21d7-4024-8809-919959aa5eaa",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 1,
						"layoutName": "Header"
					},
					"bindTo": "UsrTransDate"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "insert",
				"name": "UsrTransTime7cede060-4f2c-406c-a74f-1abd5679848c",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 1,
						"layoutName": "Header"
					},
					"bindTo": "UsrTransTime"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 2
			},
			{
				"operation": "insert",
				"name": "NotesAndFilesTab",
				"values": {
					"caption": {
						"bindTo": "Resources.Strings.NotesAndFilesTabCaption"
					},
					"items": [],
					"order": 0
				},
				"parentName": "Tabs",
				"propertyName": "tabs",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "Files",
				"values": {
					"itemType": 2
				},
				"parentName": "NotesAndFilesTab",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "NotesControlGroup",
				"values": {
					"itemType": 15,
					"caption": {
						"bindTo": "Resources.Strings.NotesGroupCaption"
					},
					"items": []
				},
				"parentName": "NotesAndFilesTab",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "insert",
				"name": "Notes",
				"values": {
					"bindTo": "Notes",
					"dataValueType": 1,
					"contentType": 4,
					"layout": {
						"column": 0,
						"row": 0,
						"colSpan": 24
					},
					"labelConfig": {
						"visible": false
					},
					"controlConfig": {
						"imageLoaded": {
							"bindTo": "insertImagesToNotes"
						},
						"images": {
							"bindTo": "NotesImagesCollection"
						}
					}
				},
				"parentName": "NotesControlGroup",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "merge",
				"name": "ESNTab",
				"values": {
					"order": 1
				}
			}
		]/**SCHEMA_DIFF*/
	};
});

So the main idea here is calling callCustomProcess method upon record saving (this.isAddMode()):

save: function(){
				this.callParent(arguments);
				if (this.isAddMode()){
					this.console.log("Adding mode!!!");
					this.callCustomProcess();
				}

And you bind page data to the process using args object parameters:

var args = {
                    sysProcessName: "Process_20340ad",
                    parameters: {
                        UsrTransType: usrTransType,
						UsrPolicyNumber: usrPolicyNumber,
						UsrTransDate: usrTransDate,
						UsrTransTime: usrTransTime
                    }
                };

usrTransType, usrPolicyNumber, usrTransDate and usrTransTime variables are received from the page before saving the record (using this.get method).

 

So you need to develop the logic similar to described above using your own object, process and page schema. As a result the process will return the data specified when creating a new record:

Best regards,

Oscar

Hi Julio,

 

You can use this article as a reference on how to trigger the process from the client and pass process parameters to the process.

 

As for calling the process upon creating a new record - onEntityInitialized is not a good choice here since the process call will be triggered once the page is loaded for adding a new record, but not once all the data on the page is specified and the record should be saved. In our case it's better to use save function and overwrite its logic. For example in a following manner:

 

1) We have a UsrTestJSON object which is a section in the system and has UsrTestJSON1Page as an edit page.

 

2) UsrTestJSON object has following columns:

 

UsrTransType - Text (250 characters) data type column

UsrPolicyNumber - Text (500 characters) data type column

UsrTransTime - Time data type column

UsrTransDate - Date data type column

3) We need to call the custom process called "Test JSON page process" with the following schema once the record is saved upon creation:

Please note that the process code is Process_20340ad and the process parameter codes should be the same as process parameter names (as an example please see UsrTransType parameter declaration).

 

4) Add the following code to the UsrTestJSON1Page schema:

define("UsrTestJSON1Page", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
	return {
		entitySchemaName: "UsrTestJSON",
		attributes: {},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{
			"Files": {
				"schemaName": "FileDetailV2",
				"entitySchemaName": "UsrTestJSONFile",
				"filter": {
					"masterColumn": "Id",
					"detailColumn": "UsrTestJSON"
				}
			}
		}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
			callCustomProcess: function() {
                var usrTransType = this.get("UsrTransType");
				var usrPolicyNumber = this.get("UsrPolicyNumber");
				var usrTransDate = this.get("UsrTransDate");
				var usrTransTime = this.get("UsrTransTime");
                var args = {
                    sysProcessName: "Process_20340ad",
                    parameters: {
                        UsrTransType: usrTransType,
						UsrPolicyNumber: usrPolicyNumber,
						UsrTransDate: usrTransDate,
						UsrTransTime: usrTransTime
                    }
                };
                ProcessModuleUtilities.executeProcess(args);
            },
			save: function(){
				this.callParent(arguments);
				if (this.isAddMode()){
					this.console.log("Adding mode!!!");
					this.callCustomProcess();
				} else if (this.isCopyMode()){
					this.console.log("Copy mode!!!");
				} else if (this.isEditMode()){
					this.console.log("Edit mode!!!");
				} else {
					this.console.log("NOT EDIT, NOT COPY, NOT ADD!!!");
				}
			},
			onUsrTestJSONPageButtonClick: function(){
				this.save();
			}
		},
		dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			{
                "operation": "insert",
                "parentName": "ActionButtonsContainer",
                "propertyName": "items",
                "name": "UsrTestJSONPageButton",
                "values": {
                    itemType: Terrasoft.ViewItemType.BUTTON,
                    caption: { bindTo: "Resources.Strings.UsrTestJSONPageButtonCaption" },
                    click: { bindTo: "onUsrTestJSONPageButtonClick" },
                    "layout": {
                        "column": 1,
                        "row": 6,
                        "colSpan": 1
                    }
                }
            },
			{
				"operation": "insert",
				"name": "UsrTransTypec0a98c8f-acb0-4d1f-9333-94ba13a0abe4",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "ProfileContainer"
					},
					"bindTo": "UsrTransType"
				},
				"parentName": "ProfileContainer",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "UsrPolicyNumber9a8b5c79-6a4f-4326-ab8e-d7c471ebc2a5",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "Header"
					},
					"bindTo": "UsrPolicyNumber"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "UsrTransDate2bfe7bc7-21d7-4024-8809-919959aa5eaa",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 1,
						"layoutName": "Header"
					},
					"bindTo": "UsrTransDate"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "insert",
				"name": "UsrTransTime7cede060-4f2c-406c-a74f-1abd5679848c",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 1,
						"layoutName": "Header"
					},
					"bindTo": "UsrTransTime"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 2
			},
			{
				"operation": "insert",
				"name": "NotesAndFilesTab",
				"values": {
					"caption": {
						"bindTo": "Resources.Strings.NotesAndFilesTabCaption"
					},
					"items": [],
					"order": 0
				},
				"parentName": "Tabs",
				"propertyName": "tabs",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "Files",
				"values": {
					"itemType": 2
				},
				"parentName": "NotesAndFilesTab",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "NotesControlGroup",
				"values": {
					"itemType": 15,
					"caption": {
						"bindTo": "Resources.Strings.NotesGroupCaption"
					},
					"items": []
				},
				"parentName": "NotesAndFilesTab",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "insert",
				"name": "Notes",
				"values": {
					"bindTo": "Notes",
					"dataValueType": 1,
					"contentType": 4,
					"layout": {
						"column": 0,
						"row": 0,
						"colSpan": 24
					},
					"labelConfig": {
						"visible": false
					},
					"controlConfig": {
						"imageLoaded": {
							"bindTo": "insertImagesToNotes"
						},
						"images": {
							"bindTo": "NotesImagesCollection"
						}
					}
				},
				"parentName": "NotesControlGroup",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "merge",
				"name": "ESNTab",
				"values": {
					"order": 1
				}
			}
		]/**SCHEMA_DIFF*/
	};
});

So the main idea here is calling callCustomProcess method upon record saving (this.isAddMode()):

save: function(){
				this.callParent(arguments);
				if (this.isAddMode()){
					this.console.log("Adding mode!!!");
					this.callCustomProcess();
				}

And you bind page data to the process using args object parameters:

var args = {
                    sysProcessName: "Process_20340ad",
                    parameters: {
                        UsrTransType: usrTransType,
						UsrPolicyNumber: usrPolicyNumber,
						UsrTransDate: usrTransDate,
						UsrTransTime: usrTransTime
                    }
                };

usrTransType, usrPolicyNumber, usrTransDate and usrTransTime variables are received from the page before saving the record (using this.get method).

 

So you need to develop the logic similar to described above using your own object, process and page schema. As a result the process will return the data specified when creating a new record:

Best regards,

Oscar

Hi Julio,



You can trigger a business process from Client JS code using the ProcessModuleUtilities module. You can inject it as a dependency in a Client schema and call the executeProcess(args) method to call a business process. Business process parameters can be set in the parameters attribute inside the argument you pass to the executeProcess method. Request you to go through this academy link for more information.



If your use case is to trigger a business process 'after' a new record is created, there are a few ways of doing it. You could use the 'Record created' trigger in the Business process designer. Or you can also choose to do it from the service side by listening to entity events on the specific section/object. You can get more details in this academy link.



Thanks,

Shrikanth

M Shrikanth,

Thank you very much

Show all comments
#BusinessProcess
c#
#application
Studio_Creatio
7.16

Hi Team,

 

I want an schedule an email weekly with a excel report as attachment that will  be generated by system 

 

I used These application to generate excel report and attach to email automatically 

 

Excel pivot report for Creatio

Excel reports builder for Creatio

Printable attachment in email for Creatio

'Save printable' process element

Send email with attachments

 

But was unable to generate and attach excel to email on a scheduled process

Excel attachment is mandatory 

 

Please suggest a work around to solve this.

 

Thank You in Advance

 

Like 0

Like

1 comments

Hello,

There is no way to generate the excel report since it is not piece of default functionality. The workaround to attach the excel report manually on the attachments detail and use simple process to send it. Here is the example that send attachments from account:

 

 

 

 

Other than that, it is necessary to develop custom integration that will call for endpoint of the excel report generation, get file, send it to Creatio and then the process would re-send it according to your needs.

 

When clicking on generate excel report, the query calls for https://yourwebsite.com/0/rest/IntExcelReportService/GetExportFiltersKey with the following parameters:

EsqString: "{\"rootSchemaName\":\"Contact\",\"operationType\":0,\"includeProcessExecutionData\":true,\"filters\":{\"items\":{\"8488ded0-40f6-4167-95ca-20bccc49bfc1\":{\"filterType\":1,\"comparisonType\":3,\"isEnabled\":true,\"trimDateTimeParameterToDate\":false,\"leftExpression\":{\"expressionType\":0,\"columnPath\":\"Id\"},\"rightExpression\":{\"expressionType\":2,\"parameter\":{\"dataValueType\":1,\"value\":\"c4ed336c-3e9b-40fe-8b82-5632476472b4\"}}}},\"logicalOperation\":0,\"isEnabled\":true,\"filterType\":6},\"columns\":{\"items\":{\"Full name\":{\"caption\":\"Full name\",\"orderDirection\":0,\"orderPosition\":-1,\"isVisible\":true,\"expression\":{\"expressionType\":0,\"columnPath\":\"Name\"}},\"Age\":{\"caption\":\"Age\",\"orderDirection\":0,\"orderPosition\":-1,\"isVisible\":true,\"expression\":{\"expressionType\":0,\"columnPath\":\"Age\"}},\"Email\":{\"caption\":\"Email\",\"orderDirection\":0,\"orderPosition\":-1,\"isVisible\":true,\"expression\":{\"expressionType\":0,\"columnPath\":\"Email\"}}}},\"isDistinct\":false,\"rowCount\":-1,\"rowsOffset\":-1,\"isPageable\":false,\"allColumns\":false,\"useLocalization\":true,\"useRecordDeactivation\":false,\"serverESQCacheParameters\":{\"cacheLevel\":0,\"cacheGroup\":\"\",\"cacheItemName\":\"\"},\"queryOptimize\":false,\"useMetrics\":false,\"adminUnitRoleSources\":0,\"querySource\":0,\"ignoreDisplayValues\":false,\"isHierarchical\":false}"

RecordCollection: ["c4ed336c-3e9b-40fe-8b82-5632476472b4"]

ReportId: "ec1724f7-e58e-491f-8471-0ce19b61bc02"

 

so it is necessary to generate the POST request to this endpoint  /0/rest/IntExcelReportService/GetExportFiltersKey with similar parameters as above. As the response - you will get the file. 

Here is the similar post describing how to generate such POST request

 

https://community.creatio.com/questions/how-can-i-generate-excel-report…

 

Regards,

Dean

Show all comments
debug
Business Process
Development
Studio_Creatio
7.16

Hi, 

 

Is there a a way to debug business processes in version 7.16.4.1473?

 

I found this but it doesn't work: 

https://academy.creatio.com/documents/technic-sdk/7-13/server-code-debu…

 

I found this too: https://academy.creatio.com/documents/technic-sdk/7-16/overview

But in this case, the business process does not generate a file .cs in the schema folder. 

 

Im using Clio to generate the packages projects, but the cs code of the bps its never generated in the packages. 

 

Looking forward to your comments. 

 

Best regards, 

 

Javier

Like 0

Like

3 comments

Dear Javier,

 

Thank you for your question!

The best way to monitor the Business Process error messages is to turn on the Traces parameter of a particular BP.

But please note that this may impact the system`s performance.

 

You may find these Academy Articles useful:

https://academy.creatio.com/docs/node/1790

https://academy.creatio.com/docs/node/1792

 

In addition, you may turn on the Debug mode of the whole Creatio itself by typing in this string in the browser`s console:

Terrasoft.SysSettings.postPersonalSysSettingsValue("IsDebug", true)

 

But please make sure to turn it off as you are finished as it impacts the system performance.

 

Hope this helps!

 

Regards,

 

Danyil

 

 

Hi Danyil, 

 

Thank you for your response, I know about Traces parameter, but actually I'm trying to debug server side business process' c# code(script task) in visual studio. 

 

Isn't that possible? 

 

Best regards, 

Javier

 

Javier Collazo,

 

Hi Javier,

 

This is only possible using C# interactive tools like dnSpy (can be downloaded from here) where you need to connect to w3wp.exe process of your application pool and debug the logic in real time.

 

As for connecting the app to Visual Studio - you can do it, but this feature was developed to allow development in the File system, but not debugging.

 

Best regards,

Oscar

Show all comments
studio
Studio_7.17
virtual_column
Studio_Creatio
7.17

I'm trying to create virtual column lookup. But, the result is the lookup view by default open with Selection Window, in other side I want to change to list.

 

How to implement this functionality?

Like 0

Like

4 comments
Best reply

Hi Ahmad,

You can add "isSimpleLookup" to the virtual lookup attribute to make it a drop-down instead of a popup lookup window.

Example:

"TypeLookup": {
    dataValueType: Terrasoft.DataValueType.LOOKUP,
    isSimpleLookup: true,
    referenceSchemaName: "AccountType"
}

Ryan

Hi Ahmad,

 

please refer to this link where the same question is explained

 

https://community.creatio.com/questions/convert-comboboxedit-gridlist-o…

 

P.S. It will be much easier to create lookups and choose the required view in Lookup Settings. Please check the example below :

 

 

Best Regards, 

 

Bogdan L.

 

Hi Ahmad,

You can add "isSimpleLookup" to the virtual lookup attribute to make it a drop-down instead of a popup lookup window.

Example:

"TypeLookup": {
    dataValueType: Terrasoft.DataValueType.LOOKUP,
    isSimpleLookup: true,
    referenceSchemaName: "AccountType"
}

Ryan

Ryan Farley,

Thank you Ryan, this is what I was looking for.

Bogdan Lesyk,

Hello Bogdan, I actually created a virtual column. So i can't change the configuration through page setup.

Show all comments