Hi colleagues,

 

Is there any way to stop the process when processing multiple records, in this case the service returns more than 16000 elements/records and I want just process the first 20 or 30, I tried to use all of this process properties to stop it, without results:

  • Number of completed instances
  • Number of terminated instances
  • Total number of instances

Any Idea, in the image goes to 95 completed, I want to stop at 20, but no idea how to do...

 

 

Thanks in advance, 

Julio Falcón

Like 1

Like

2 comments

Hello, some ideas, please?

Hello, 



When using a multi-instance subprocess, the number of process executions is regulated only by the size of the collection you pass to it.

If you use the "Read data" element, you can adjust the size of the collection through the "Read first XX records" property.



If you receive a collection from a web service, you should use such parameters in the request that will allow you to receive the required number of records. You can check the web service documentation or modify the backend if it is your own web service or you have a contact with the developer.

Another option would be to resort to development and write a script task that will process the collection from the web service and trim the resulting collection/response.

 

Thank you.

Show all comments

Dear colleagues,

 

How can AVOID this? The link to an object in dev is "https://dev-XXXXX.creatio.com/Navigation/Navigation.aspx?schemaName=Ndo…]" and in TESTING or production, when deploy packages remains https://dev-XXXXX.creatio.com, when it must be https://pre-XXXXX.creatio.com or https://XXXXX.creatio.com

 

Some idea, how to solve this?

Like 0

Like

1 comments

Hello!

 

Please create a separate case for Support Team support@creatio.com  and we will analyze it deeply. 

Show all comments

when we tried to create a report it worked normally when the user language was English, however

when a user language Arabic the BP shows the below error



System.NotSupportedException: Unsupported report type '0'

   at Terrasoft.Configuration.ReportEngine.Generate(ReportSettings settings)

   at Terrasoft.Core.Process.Configuration.ReportFileProcessingUserTask.InternalExecute(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessActivity.RunInCultureScope[T](Func`1 action)

   at Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessActivity.ExecuteItem(ProcessExecutingContext context)

   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context

Like 0

Like

1 comments

Dear Sayed!

 

We can see that you have already submitted a case for our support team and this case is currently in progress. We will update you in that request. 

 

Have a great day!

Show all comments

Hi, 



    I input the Chinese address on Account, however, it can't show on the map below,  Besides, the Creatio connector, mapsly, is okay to input Chinese address. Please help. 



I user the instance of Version 8.1.1.3635 locating in Japan.



Jeffrey / Taiwan user

Like 0

Like

2 comments

Hello,



Open Street Map is an external service; unfortunately, we cannot control its operation. Please note that this is mentioned in our Academy documentation: [link to documentation].



Now, let's go into more detail about how this service works.



Unfortunately, the Open Street Map service is not predictive, and searching a specific address requires maximum completeness and accuracy in the address input, including city, country, and postal code. However, if any of these indicators are incorrect (for example, a city that does not exist in the country), the search may be conducted based on different parameters.



It's also important to understand that OpenStreetMap is not Google, and the data in its database may differ. Therefore, it's essential to ensure that the data you are searching for exists in this service.



For example, you can notice that the address you provided does not exist in this service, so it displays the nearest address to the one you filled in: [link to OpenStreetMap].



Therefore, when filling in such addresses, you should rely not on Google but on the service used in the integration.



It's also worth noting that the address does not exist in the service even upon clicking on this building directly.



The OpenStreetMap service allows users to contribute data.



Unfortunately, as Creatio vendors, we do not have the ability to influence third-party services.

Our team is actively exploring alternatives to improve this functionality in future versions of the application.



I hope I was able to answer your questions.

Have a great day!

Thank you for your help, hope it will be solved in the next version release.

Show all comments

Hi all,

 

I am required to set authentication for the Redis server (bitnami/redis image)  (Email server microservices) for production on-site deployment email server.

Setting the password from the docker-compose file using REDIS_PASSWORD : 123abc as the environment variable, creates the password authentication successfully. the issue I am having is specifying the new password in my Redis connection string which is used by ListenerAPI & ListenerWorker containers. 

The docker-compose file

 

version: "3.8"

services:

  redisOfficial:

    image: 'docker.io/bitnami/redis'

    container_name: 'redisOfficial'

    restart: unless-stopped

    environment:

      REDIS_PASSWORD : 123abc # redis Authentication mode

      REDIS_AOF_ENABLED : "no"

    ports:

      - "6379:6379"

     

  rabbitmqOfficial:

   image: rabbitmq:management-alpine

   container_name: 'rabbitmqOfficial'

   restart: unless-stopped

   volumes:

    - ./rabbitmq.config:/etc/rabbitmq/rabbitmq.config:ro

    - ./definitions.json:/etc/rabbitmq/definitions.json:ro

   ports:

    - 5672:5672 # AMQP protocol port

    - 15672:15672 # HTTP management UI

   

  ListenerAPI:

    image: registry.creatio.com/emaillistener:1.0.24

    container_name: 'ListenerAPI'

    restart: unless-stopped

    ports:

      - 10000:8080 # Port forward. External port:local port

#      - 10001:8443 # SSL port by default. Uncomment if https endpoint needed

    environment:

      ExchangeListenerRedisHost: redisOfficial:6379 # Redis connection

      ExchangeListenerRedisPassword: "123abc"

      ExchangeListenerRedisDatabase: 0 # Redis DB

      PodName: ExchangeListener

# SSL certificate parameters by default. Uncomment if https endpoint needed

#      ASPNETCORE_Kestrel__Certificates__Default__Password: password

#      ASPNETCORE_Kestrel__Certificates__Default__Path: /https/el_self_signed.pfx

    depends_on:

      - redisOfficial

      - rabbitmqOfficial

    volumes:

# SSL certificate folder by default. Uncomment if https endpoint needed

#     - ./ssl:/https:ro

     - ./appsettings.json:/app/config/appsettings.json:ro

     - ./rmqsecret.json:/app/config/rabbitmq.secrets.json:ro

#    dns:

#      - 10.0.7.1

#      - 10.0.7.2

#    dns_search:

#      - tscrm.com

     

  ListenerWorker:

    image: registry.creatio.com/emaillistener-worker:1.0.24

    container_name: 'ListenerWorker'

    restart: unless-stopped

    environment:

      ExchangeListenerRedisHost: redisOfficial:6379 # Redis connection

      ExchangeListenerRedisPassword: "123abc"

      ExchangeListenerRedisDatabase: 0 # Redis DB

      PodName: ExchangeListenerWorker

    depends_on:

      - redisOfficial

      - rabbitmqOfficial

    volumes:

     - ./appsettings.json:/app/appsettings.json:ro

     - ./rmqsecret.json:/app/appsettings.Production.json:ro

#    dns:

#      - 10.0.7.1

#      - 10.0.7.2

#    dns_search:

#      - tscrm.com\

 

When I run this container in docker, i am getting blow mentioned container log for the LisenterAPI container

2024-01-24 13:24:01 [Microsoft.AspNetCore.Server.Kestrel] 2024-01-24 07:54:01,426 [40] ERROR: Connection id "0HN0SM07SMRGL", Request id "0HN0SM07SMRGL:00000018": An unhandled exception was thrown by the application.

2024-01-24 13:24:01 StackExchange.Redis.RedisConnectionException: It was not possible to connect to the redis server(s). There was an authentication failure; check that passwords (or client certificates) are configured correctly.

2024-01-24 13:24:01    at StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(ConfigurationOptions configuration, TextWriter log, Nullable`1 serverType) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 733

 

I suspect the way (syntax) password is specified docker-compose file is not supported for the LisenterAPI container. How to fix this issue?

 

Note: Container connections work fine because, if I use ALLOW_EMPTY_PASSWORD : "yes" for redis environment variable, the service works perfectly.

Like 0

Like

1 comments

Hello!



Docker is not a scalable option for development or pre-production environments. For Docker, we provide a ready-made docker-compose file.

We do not support connecting to Redis with a password in a configuration deployed in Docker. 

We recommend using Kubernetes to add password to REDIS in the Email Listener microservice:

https://academy.creatio.com/docs/8.x/setup-and-administration/on-site-d…

Show all comments

Hello,

 

I am trying to automate the gathering of data using some business process that perform API calls to one of our client private APIs. I have defined the WebServices with no problem like the one from this example:

 

 

And sending the test request with a valid API Key and Authorization token works perfectly. However, if I try to group all of this inside a business process I get an error that I don't know how to solve. This is the business process:

 

 

And the error that I get exactly on the web service call is this one:

 

 

The full error message states:

Terrasoft.Common.UnsupportedTypeException: Type "System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" is not supported.

 

I have done some tests and I can confirm that the error only appears when I try to use a the valid Authorization token retrieved previously, and if I set any other value in that Web Service parameter I don't get the error but obviously the call fails because I am using and incorrect token.

 

The length of the token is 299 characters and as it is an authorization token, it must be preceded by the word "Bearer", so the full value that I am passing to that parameter is "Bearer " with a total length of 306 characters. I also tested using some random strings of length 500+ and the error doesn't show up, so it is not related to a limit of the parameter length. I also checked that the token I am passing is 'correct', i.e. no breaklines, weird characters (not UTF-8) or anything that could cause problems with the encoding of the string.

 

Therefore, I guess it is something related to the way Creatio builds the API request from inside the process, that is not the same as doing from a test request inside the Web Service...

 

Your help is highly appreciated.

Regards.

Like 0

Like

2 comments

Note: I have not tried yet to perform the same kind of requests inside a business process to another API (like a public one), but the error I am getting is not related to the API I am using, it must something related to the Creatio business process logic when invoking web services methods, regardless of the endpoint and the API specifications.

Hello,

 

I recommend that you create a support request.

Show all comments

Dear colleagues,

 

If have a couple of process calls in a client module, very similar, one works and the another ones fails before to call the process getting a "400 (Bad Request)" error

 

Here is the code, the first one fails:

OnGeneraDetalleContratoBtnClick: function() { 
	// Guarda el registro, por si hubo cambios
	this.save();
 
	const RunProcessRequest = Ext.create( "Terrasoft.RunProcessRequest", { 
		// El nombre del Proceso
		"schemaName": "NdosCreaDetalleContrato", 
 
		// Parámetros de entrada
		"parameterValues": { 
			"NdosGrupoEconomicoID": this.get( "NdosGrupoEconomico" ),
			"NdosContratoID": this.get( "Id")
 
		},
 
		// Parámetros de Salida - True => Hay sucursales
		"resultParameterNames": [ 
			"NdosReturn"
 
		]
	} ); 
 
	// Ejecuta el proceso
console.log( RunProcessRequest );
// THIS gets error "400 (Bad Request)" here in the execute	//ERROR ERROR HERE HERE			
	RunProcessRequest.execute(function(response) { 
		// Si OK, actualiza el valor en funcion de la salida
		if (response.isSuccess()) { 
			// Actualiza la cantidad de meses que dura el contrato
			if ( response.resultParameterValues[ "NdosReturn" ] === true ) {
				// Tiene sucursales, inhablitita el boton...
				this.set( "NdosDetalleContratoGenerado", true );		
 
				}
		} 
	}, this ); 
},

 

This another wroks fine and are (as I saw identical!!)

// Jalcon - NoCode-Services - 20240110 - 
// Cambia alguna de las fechas del Contrato, debe ajustar la duración en meses del mismo
updateDuracionContratoMeses: function() { 
	const runProcessRequest = Ext.create("Terrasoft.RunProcessRequest", { 
		// El nombre del Proceso
		"schemaName": "Jfl_MesesEntreDosFechas", 
 
		// Parámetros de entrada
		"parameterValues": { 
			"NdosFechaInicial": this.get( "NdosFechaInicio" ), 
			"NdosFechaFinal": this.get( "NdosFechaFinContrato" )
		},
 
		// Parámetros de Salida
		"resultParameterNames": [ 
			"NdosCantidadDeMeses"
 
		] 
	}); 
 
	// Ejecuta el proceso
	runProcessRequest.execute(function(response) { 
		// Si OK, actualiza el valor en funcion de la salida
		if (response.isSuccess()) { 
			// Actualiza la cantidad de meses que dura el contrato
			this.set( "NdosMesesDuracionContrato", response.resultParameterValues[ "NdosCantidadDeMeses" ] ); 
 
			// Si el contrato ya tiene importe, cctualiza el importe del Contrato
			if( this.get( "NdosImporteMensualContrato" ) > 0 ) {
				this.set( "NdosMontoContrato", this.get( "NdosImporteMensualContrato" ) * this.get( "NdosMesesDuracionContrato" ) );
				}
 
		} 
	}, this); 
} 

 

This is part of the error, console log

 
       POST https://XXXXXX.creatio.com/0/ServiceModel/ProcessEngineService.svc/RunProcess 400 (Bad Request)
 
all-combined.js?v=8.1.1.3635:41 Error al enviar solicitud 
	estado de respuesta: 400 (Bad Request)
	url de solicitud: ../ServiceModel/ProcessEngineService.svc/RunProcess

Some ideas? please help

 

regards,

 

Julio Falcón

Like 0

Like

3 comments
Best reply

Hi Julio,

 

Just guessing, is "NdosGrupoEconomico" a lookup? The parameter is named with an Id, so assuming it is. If that is the case, you need to get it's value, right now it's sending the entire object from the lookup. 

For example (note, the .value at the end): 

"NdosGrupoEconomicoID": this.get("NdosGrupoEconomico").value

However, if it's possible that the lookup can be blank, might be a good idea to check for that as well.

Ryan

Hi Julio,

 

Just guessing, is "NdosGrupoEconomico" a lookup? The parameter is named with an Id, so assuming it is. If that is the case, you need to get it's value, right now it's sending the entire object from the lookup. 

For example (note, the .value at the end): 

"NdosGrupoEconomicoID": this.get("NdosGrupoEconomico").value

However, if it's possible that the lookup can be blank, might be a good idea to check for that as well.

Ryan

Hello Julio,

 

Can you please share the RunProcess request body (from the network tab in the console)? We can compare it to the successful calls and see the difference. Additionally you need to check if both retrieved values (using this.get getters) are strings.

Ryan Farley,

Thanks Ryan, you are right. Fortunately I had already found my mistake... almost a beginner's mistake :-(

Show all comments

Hello,

 

I've noticed a problem when users try to import data. For example, they select the Case object  to add data and upload an excel file with columns that correspond to lookup fields in the case. If the lookup value already exists in Creatio there is no problem and the field will be filled with that value, but if it does not exist, Creatio does not allow the user to create that new value and will throw the following error inside the ExcelImportLog page:

 

Current user does not have sufficient permissions to run "CanManageLookups"

 

If I change this operation permission and allow it for a given user, it will work fine but then that user has complete access to the Lookups section. This means that he is able to see all the lookups, create new values and remove them if they want. This is not a good practice and implies security issues.

 

Therefore, is there another way to achieve what I want without having this risk?

 

PD: I don't know if it may be an incidence related with my own environment, because I haven't noticed this behavior in any other Creatio instance before and it seems to happen only with some lookups, not all of them.

 

Regards

Like 0

Like

1 comments

Hello,

 

Unfortunately, it is not possible to allow users to have access to specific lookups only, but we have already registered the following suggestion for our R&D team and they will consider adding the following functionality in the upcoming releases.



However, we can offer you a workaround, but it is also worth noting that this is a workaround and that you can only track which rights have been issued through the database.



1. Grant everyone the rights to the CanManageLookups operation

2. Enable administration by records for the Lookup object.

In this case, do not configure the administration privileges.

Thus, there will be access to the lookup section, but only the author of the lookup will have rights to the records themselves (for system directories, this will be the Supervisor)

3. Using the BP and the element of granting rights, grant rights only to the required record.

Show all comments

after adding ssl the websocket in pending status

 

Like 0

Like

1 comments

Greetings,



We kindly ask you to contact us via email at support@creatio.com for an in-depth analysis of your error.

Show all comments

Good day!

 

The report is generated in Word format.

Website version 7.18.5

Screenshot attached

 

In one of our tables, we have several products linked to a specific Id. Each product is associated with its unique point of inclusion address. The product names are successfully pulled and correctly displayed in the report table - each name in a separate line, which fully meets our requirements. We set this up through the table part report settings.

 

The problem arises with the addresses of the points of inclusion, the values for which we obtain using a macro. In the current configuration, all addresses for the three products are collected and displayed in one line of the table, instead of being located in the corresponding lines opposite each product.

 

Question:

Could you advise on how we might modify the macro or the process of its operation so that the addresses of the points of inclusion are placed in separate cells of the table in accordance with each product?

File attachments
Like 0

Like

1 comments

Hello,

 

Could you please provide us with an example of the macro you are using?

Please provide the table settings, and also take a screenshot of how this table looks specifically in the printable template in word plugin.

Show all comments