web service
webservice
service
Studio_Creatio
8.0

Hi, I would like to know if there is a max amount of concurrent requests that Creatio is able to handle for custom web services defined in Creatio.

Is there any way to configure the max number of allowed concurrent requests to the same service on the technical user, the web service or the package containing the web service?

Like 0

Like

1 comments
Best reply

Hello,

There is no configurable maximum number of concurrent requests setting in Creatio for custom web services. The idea of a fixed limit isn't practical, because the performance impact of a request depends heavily on what the request actually does.

For example:

  • 1k lightweight requests that perform simple data retrieval or write operations may have minimal impact on the system.
  • Conversely, 1k complex or resource-intensive requests (e.g. involving multiple joins, integrations, or heavy business logic) could significantly degrade performance or cause failures under load.

Instead of a static limit, Creatio relies on the underlying infrastructure and available resources to dynamically manage the load. When system resources become constrained, the platform will naturally slow down or reject excess incoming requests to protect stability.

We recommend using a batching approach when integrating or calling custom services:

  • Start with batches of 2,000 to 20,000 requests, depending on the expected load per request.
  • Perform load testing to evaluate how the system responds. If the particular request is lightweight, you can safely increase the batch size.

This approach gives you flexibility and scalability without setting limits that may not reflect actual usage.

Hello,

There is no configurable maximum number of concurrent requests setting in Creatio for custom web services. The idea of a fixed limit isn't practical, because the performance impact of a request depends heavily on what the request actually does.

For example:

  • 1k lightweight requests that perform simple data retrieval or write operations may have minimal impact on the system.
  • Conversely, 1k complex or resource-intensive requests (e.g. involving multiple joins, integrations, or heavy business logic) could significantly degrade performance or cause failures under load.

Instead of a static limit, Creatio relies on the underlying infrastructure and available resources to dynamically manage the load. When system resources become constrained, the platform will naturally slow down or reject excess incoming requests to protect stability.

We recommend using a batching approach when integrating or calling custom services:

  • Start with batches of 2,000 to 20,000 requests, depending on the expected load per request.
  • Perform load testing to evaluate how the system responds. If the particular request is lightweight, you can safely increase the batch size.

This approach gives you flexibility and scalability without setting limits that may not reflect actual usage.

Show all comments

Hello, can someone tell me what the process that assigns the Service to a case is called?

Like 0

Like

1 comments

Hello Angel,

The service value is predicted with the ML model "Case service prediction".

Show all comments
7.18
sales
marketing
service
Sales_Creatio

Hi,

 

I need to filter contact list that is displayed when logging a call activity through Section Actions Dashboard. Below is the code I have added for the same:

1. Replaced CallMessagePublisherPage

 define("CallMessagePublisherPage", ["ConfigurationConstants"],
	function(ConfigurationConstants) {
		return {
			entitySchemaName: "Activity",
			mixins: {},
			attributes: {
				"Contact": {
					"lookupListConfig": {
						"columns": ["Account"],
						"filters": [
							function() {
									var config = this.getListenerRecordData();
									var additionalInfo = config.additionalInfo;
									var account=additionalInfo.account.value;
									var filterGroup = Ext.create("Terrasoft.FilterGroup");
									if(account){
									filterGroup.add("ContactFilter",
										Terrasoft.createColumnFilterWithParameter(
											Terrasoft.ComparisonType.EQUAL,
											"Account",
											account,
											Terrasoft.DataValueType.LOOKUP)
											);
									}
									return filterGroup;
							}
							]
					}
				}
			},
			methods: {
						setDefaultCallDirection: function() {
							var query = this.Ext.create("Terrasoft.EntitySchemaQuery", {
								rootSchemaName: "CallDirection"
							});
							query.addColumn("Name");
							var recordId = ConfigurationConstants.Activity.ActivityCallDirection.Outgoing;
							query.getEntity(recordId, function(result) {
								this.setDefaultCallDirectionQueryHandler(result);
							}, this);
						}
					},
			diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
		};
	}
);

 

2. Replaced SectionActionsDashboard

  define("SectionActionsDashboard", ["SectionActionsDashboardResources"], function(resources) {
    return {
        methods: {
				onGetRecordInfoForPublisher: function() {
					var info = this.callParent(arguments);
					info.additionalInfo.account = this.getAccountEntityParameterValue(info.relationSchemaName);
					return info;
				},
				getAccountEntityParameterValue:function(relationSchemaName){
					switch(relationSchemaName){
						case "Lead":
							return this.getMasterEntityParameterValue("QualifiedAccount");
						case "Contact":
						case "Opportunity":
						case "Order":
							return this.getMasterEntityParameterValue("Account");
						case "Account":
							return {"value":this.getMasterEntityParameterValue("Id")};
						default:
							return {};
					}
 
				}
		}
    };
});

With above code, I get the below result in Account section when I open the window to select contact.

Above is the expected result. But when typing in the name on the lookup field instead of opening the selection window all contacts that match the text are displayed(not filtered by Account)

Any idea how to apply the same filter when pulling the list by typing in the lookup field?

 

Like 0

Like

3 comments
Best reply

Hi,

 

Please also add the following method to the CallMessagePublisherPage:

getLookupQuery: function(filterValue, columnName) {
					var esq = this.callParent(arguments);
					var filterGroup = this.getLookupQueryFilters(columnName);
					esq.filters.addItem(filterGroup);
					return esq;
				},

and refresh the page after that. This should result in the needed filtration in the list view of the lookup.

Hi,

 

Please also add the following method to the CallMessagePublisherPage:

getLookupQuery: function(filterValue, columnName) {
					var esq = this.callParent(arguments);
					var filterGroup = this.getLookupQueryFilters(columnName);
					esq.filters.addItem(filterGroup);
					return esq;
				},

and refresh the page after that. This should result in the needed filtration in the list view of the lookup.

That works, thank you!

Hello everyone. Thanks for the article, it was very helpful. Perhaps you can tell me how to filter the list of emails address via Account? That is displayed when registering email sending activity via the Section Actions toolbar? Thanks!

Show all comments
case
service

Hi community,

 

As an OOTB feature in Creatio Service, every case title is created following this logic :

 

Case #SR0000XXX: subject

 

Where SR00000XXX is given by the CaseCodeMask and the CaseLastNumber system setting. However, if I do not want the "subject" field to be in the title but, for example, I would have the customer name or another field, where can I change this logic ?

 

Many thanks for this clarification.

 

Best regards,

Jonathan

Like 0

Like

3 comments
Best reply

You can change that by overriding the getPageHeaderCaption function on CasePage.

For example, to display the case number and account name, add this function to the CasePage:

getPageHeaderCaption: function() {
    var number = this.get("Number"),
        account = this.get("Account");
 
    var title = "#" + number;
    if (account) {
        title += " " + account.displayName;
    }
    return title;
}

Ryan

Hello,

 

The logic of forming the page header caption is located in the CasePage schema (from the Case package) in the getPageHeaderCaption method. Here is the line of code that returns the end result:

return this.Ext.String.format(template, number, subject);

So you need to override the logic of this particular method in your custom package.

You can change that by overriding the getPageHeaderCaption function on CasePage.

For example, to display the case number and account name, add this function to the CasePage:

getPageHeaderCaption: function() {
    var number = this.get("Number"),
        account = this.get("Account");
 
    var title = "#" + number;
    if (account) {
        title += " " + account.displayName;
    }
    return title;
}

Ryan

Many thanks for your perfect answers ! Could not be better :)

Show all comments
service
logging
Financial_Services_Creatio_lending_edition
7.18

Hello community,

 

I have developed a service in Creatio that will be called from third parties. The service is called successfully in postman but programmatically it doesn't work. The authentication works fine and returns status code 200 and the BPMCSRF cookie. When the third party tries to call the service it gives the following message "401 - Unauthorized: Access is denied due to invalid credentials."  How can we investigate this issue? Does Creatio offer a logging option so we can investigate the request and response or is there something else that we have forgotten during the implementation of this service?

Like 0

Like

1 comments

Hello,

 

Please try using OAuth authentication to work with your service.

More details on the academy website:

https://academy.creatio.com/docs/user/customization_tools/web_services/…

Show all comments
service
Filtering
Service_Creatio
8.0

Hello Community,

I need the filter options of a customer portal page within regular sections. I need to hide the advanced filter menu from the section filtering menu.

Do you have any idea of how to do so?

 

Thank you in advance, have a nice day! 

Like 0

Like

2 comments
Best reply

Hello,

 

In the replaced BaseSectionV2 module you need to:

 

1) define the GetExtendedFilterConfig PTP message with the subscribe direction:

"GetExtendedFilterConfig": {
					mode: this.Terrasoft.MessageMode.PTP,
					direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
				}

2)  subscribe to the message:

subscribeSandboxEvents: function () {
					this.callParent(arguments);
					const quickFilterModuleId = this.getQuickFilterModuleId();
					this.sandbox.subscribe("GetExtendedFilterConfig", this.onGetCustomFilterConfig,
						this, [quickFilterModuleId]);
				},

3) in the onGetCustomFilterConfig method handler disable the advanced filtering:

onGetCustomFilterConfig: function() {
				return {
						hasExtendedMode: false
					};
			}

An example of the code used in the portal can be found in the BaseDataView module.

 

Best regards,

Oscar

Hello,

 

In the replaced BaseSectionV2 module you need to:

 

1) define the GetExtendedFilterConfig PTP message with the subscribe direction:

"GetExtendedFilterConfig": {
					mode: this.Terrasoft.MessageMode.PTP,
					direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
				}

2)  subscribe to the message:

subscribeSandboxEvents: function () {
					this.callParent(arguments);
					const quickFilterModuleId = this.getQuickFilterModuleId();
					this.sandbox.subscribe("GetExtendedFilterConfig", this.onGetCustomFilterConfig,
						this, [quickFilterModuleId]);
				},

3) in the onGetCustomFilterConfig method handler disable the advanced filtering:

onGetCustomFilterConfig: function() {
				return {
						hasExtendedMode: false
					};
			}

An example of the code used in the portal can be found in the BaseDataView module.

 

Best regards,

Oscar

Thank you Oleg Drobina!

Show all comments
certification
service
Service_Creatio

Will be questions about Atlas on the theoretical exam in the Service Certification? 

Will the theoretical exam be from the Service Creatio analyst self-assessment?

Like 0

Like

1 comments
Best reply

Dear Khaled,

 

There is only one question about Atlas release in the current certification/recertification exam. All self-assessments have been updated to reflect the questions to be expected during the certification/recertification exam: https://academy.creatio.com/self-assessment-tests?type=1&product=Market…

 

We recommend passing the self-assessment test a couple of times in preparation for the actual exam.

 

Best regards,

Anastasiia

 

Dear Khaled,

 

There is only one question about Atlas release in the current certification/recertification exam. All self-assessments have been updated to reflect the questions to be expected during the certification/recertification exam: https://academy.creatio.com/self-assessment-tests?type=1&product=Market…

 

We recommend passing the self-assessment test a couple of times in preparation for the actual exam.

 

Best regards,

Anastasiia

 

Show all comments
Self service portal
portal users
service
users_authentication
Financial_Services_Creatio_lending_edition
7.18

Hello community,

 

I am trying to implement a service for portal and system users using the documentation in https://academy.creatio.com/docs/8-0/developer/application_components/portal/self_service_portal/overview

 

The service has the following code:

using Terrasoft.Web.Common;
using Terrasoft.Web.Common.ServiceRouting;
 
[ServiceContract]
[DefaultServiceRoute]
[SspServiceRoute]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class Service1 : BaseService
{ 
       //Code
}

For system users the service works fine but when I try to access the service from postman authenticated as a portal user I get the following message : "IS 10.0 Detailed Error - 403.0 - Access to non-SSP API is denied for portal users" with 403 status code. Is something that I am missing in the service implementation or in web.config?

Like 0

Like

2 comments

Hello!

 

Ensure that you add the /ssp prefix to the route when making a request as a portal user.

A feature called "EnableCustomPrefixRouteApi" enables web services custom routing and restricts SSP user access services without the /ssp prefix.

In order to enable it you need to run the following script in the database:

 

INSERT INTO AdminUnitFeatureState (SysAdminUnitId,FeatureState,FeatureId)

VALUES ('720B771C-E7A7-4F31-9CFB-52CD21C3739F',1,'17ED5BE9-CA87-42A4-A761-3466DBABF925')

 

Another feature called "UsePortalDataService" divides services into the portal and non-portal ones. To enable it run the following script:

 

INSERT INTO AdminUnitFeatureState (id, SysAdminUnitId, FeatureState, FeatureId)

VALUES (newid(), '720B771C-E7A7-4F31-9CFB-52CD21C3739F', 1, '45D7102E-42D5-4E61-ADF8-77F00CD2F3E8')

 

So make sure you are using the /ssp prefix and both features are active in the system.

 

Best regards,

Max.

We also suggest replacing 

[DefaultServiceRoute]
[SspServiceRoute]

with

 

[DefaultServiceRoute, SspServiceRoute]

 

Best regards,

Max.

Show all comments
Creatio_Analyst_Certification
service

Does the Atlas version will be in the technical exam, if yes what about enable approvals and business rules ?!  

Like 1

Like

1 comments
Best reply

Hello Sayed,

 

As of right now, we do not expect the certification participants to complete the assignment using Atlas version tools.

Hello Sayed,

 

As of right now, we do not expect the certification participants to complete the assignment using Atlas version tools.

Show all comments
cases
service
Service_Creatio
7.18

Hi

I have an existing process which when an email is sent associated with a case it will update the Modified On value to the time the email was sent. This is useful as it allows us to track that a case is being updated.

I would like to include the ability for the Modified On date of the case to be updated if someone adds a Feed note. 

I have however not been able to find a way of adding a source signal, which has the filter in it to only be for feeds added to cases.

Anyone able to give me a steer on how I can achieve this please.

 

thanks

 

 

Like 0

Like

2 comments

Is this not possible to achieve?

Hi Mark,



You can make process on Message/comment added

But you will have Id's of your schema (these are for Activities)



Show all comments