Hello Community,

I am a new bee with here and not much familiar with Creatio Studio as well. I have created a demo environment of creatio studio from downloadable. I created a new application where I am creating a list and detail page. 

The issues I am facing are:

  • The list view page shows that its continuously loading, because of which I am not able to hide or create a new column which is obvious.
  • on the Form page when I try to save my form elements/objects It is showing an error as Failed to update the structure for following schema and the schemas are my form objects which I am trying to save.
  • I found one solution on the community here that by updating the objects showing error on Workspace explorer page (System designer->advanced settings->configuration. I see my objects showing error in the status column. I did try updating the DB objects from there but showing the DB error. I think the above issue and this one is related and due to the same reason(Screen shot2)
  •  When I try to compile all in configuration, I get an error. (screenshot 3) I tried uninstalling and reinstalling the SDKs(The solution again I found here) but it doesn't seem to be working for my case.

I really Appreciate if someone could help me to figure this out.

Thanks

File attachments
Like 0

Like

1 comments

Hello,

 

I've reviewed the screenshot shared and to understand what happens with the object the actual error message from the SQL server logs should be shared. If this is MS SQL you need to take a look at the extended evens logs, if this is PostgreSQL - find the logs using this article. In the SQL server logs there will be an actual database query that fails to execute. Try executing it manually in the database and let's see which error message we face.

Show all comments

HI all,

I create custom sections from scratch and in section page my integration developments are working ok but in the customer Portal nothing triggered (Is not showing the option to RUN BP manually ) . It looks like is a permissions issue. I tried to activate some permissions but still not working (in console I have Error 403).

P.S. Please find attached images for more clarification.

Could you please help me to find the solution?

Thanks,

Like 0

Like

0 comments
Show all comments

I want to filter the change approver lookup based on some conditions. I tried to find the module that is responsible for this but couldn't find it. Can anyone help me on this?

Like 2

Like

1 comments
Best reply

Hello,

 

When clicking the "Change approver" button the ApprovalDashboardItemViewModel module onChangeApproverButtonClick method is called. This onChangeApproverButtonClick method calls the changeVizierAction method from the BaseVisaProvider module. Lookup opening is performed in this part of code (inside the checkRightCallback callback method):

LookupUtilities.OpenLookup({
						sandbox: sandbox,
						lookupConfig: lookupConfig,
						renderTo: renderTo || Ext.get("centerPanel"),
						cancelCallback: cancelCallbackFn
					}, lookupUtilitiesCallback, this);

Unfortunately filters cannot be added at this point based on the OpenLookup method from the LookupUtilities.

Hello,

 

When clicking the "Change approver" button the ApprovalDashboardItemViewModel module onChangeApproverButtonClick method is called. This onChangeApproverButtonClick method calls the changeVizierAction method from the BaseVisaProvider module. Lookup opening is performed in this part of code (inside the checkRightCallback callback method):

LookupUtilities.OpenLookup({
						sandbox: sandbox,
						lookupConfig: lookupConfig,
						renderTo: renderTo || Ext.get("centerPanel"),
						cancelCallback: cancelCallbackFn
					}, lookupUtilitiesCallback, this);

Unfortunately filters cannot be added at this point based on the OpenLookup method from the LookupUtilities.

Show all comments

Hello Community,



We are trying to trigger a business process as soon as a product has been added to an order. The filter for the BP to trigger requires the Order's Type and Order stage, as we have a conversion formula written based on the type of order as a condition. The default condition is to end the process. Unfortunately, whenever we add multiple products to an order, the process triggers but goes through the default condition. We noticed that the record gets created, but there is a delay in updating the values in the record. Before the values of the record are updated, the process is triggered, and as there is no order type in the DB, the process doesn't meet any of the conditions written. As a result, it takes the default value and ends the process.

 

To overcome this issue, we initially placed a timer after the process trigger before reading the products in the order. While it did work for the initial set of products added, the problem arose when multiple products (e.g., 20 products) were added to the order simultaneously. The updating of the DB takes time for all 20 records, and before that, the process would have triggered and waited for the timer to complete (5 seconds) and moved on to read the record. Consequently, some processes again went with the default flow.

 

As a workaround, we rearranged the timer in between reading the products in the order and reading the order itself. Additionally, we implemented a loop that goes back to the product in order if the order type is not filled in. This solution seems to work, but the looping takes more time when there are multiple processes running. As you know, in Creatio, the processes may be triggered in parallel, but the execution happens sequentially. This leads to more time being taken for the process to complete execution due to the delay in creating a record in the DB and updating the values in the created record.

 

We had reached out to support, and they had suggested that in the above case, there is no data to read in the record at the moment the "Read data" element is started. Consequently, the action will not result in further BP processing. They provided a link (Read uncommitted) and suggested adding a custom C# code, which can call the BP after the transaction is completed (by overriding virtual void UpdateAmountsByOrderId). This will call the base logic and afterward, it will call the process was their suggestion

 

Here are the steps for better clarity:

  • A business process has been written for the conversion of the base price of the product based on the order type. The process is triggered when a product is added (Product in Order object), and the filter to trigger the process requires the Order Type and Order Stage to be filled in the Order object.
  • The Order is created first, and later the product is added in the web app. However, in the mobile app, the Order and product are added at the same time.
  • For example, if 20 products are added simultaneously, 20 processes are triggered, and they are executed in a FIFO way. Each process goes into a loop, leading to a subsequent delay in the execution of the process.

 

 

Question: As suggested by Creatio support, adding custom C# code to call the BP after the transaction is completed (i.e., when the record is created and values are updated), is there a sample code snippet available for the above scenario or an example snippet? Additionally, would like to know if this code snippet alone will work for both orders created from the web and mobile app, or if any code needs to be written in the mobile manifest to trigger the BP after the transaction is completed?



Regards,

Sivaranjani

Like 0

Like

5 comments

Hello,

The idea behind overriding a UpdateAmountsByOrderId is quite simple, you need to manually start your process after the base logic of the method is finished, for example:

 public virtual void UpdateAmountsByOrderId(Guid orderId) {
			var productsEsq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "OrderProduct");
			var idFilter = productsEsq.CreateFilterWithParameters(FilterComparisonType.Equal, "Order", orderId);
			productsEsq.Filters.Add(idFilter);
			var idColumn = productsEsq.AddColumn("Id");
			var productEntities = productsEsq.GetEntityCollection(UserConnection);
			UpdateAmountsInfo orderProductInfo = null;
			decimal orderAmount, currencyPrimaryFactor = 0;
			ExecuteInTransaction(executor => {
				foreach (Entity productEntity in productEntities) {
					var orderProductId = productEntity.GetTypedColumnValue<Guid>(idColumn.Name);
					orderProductInfo = ProtectedUpdateAmounts(orderProductId, dbExecutor: executor);
					currencyPrimaryFactor = orderProductInfo.OrderProductToPrimaryFactor;
				}
			});
			if (orderProductInfo == null) {
				var currencyInfo = GetOrderFinanceInfo(orderId);
				orderAmount = currencyInfo.Amount;
				currencyPrimaryFactor = GetToPrimaryFactor(currencyInfo.CurrencyInfo.Division, currencyInfo.CurrencyInfo.Rate);
			} else {
				orderAmount = orderProductInfo.OrderAmount;
			}
			UpdateSupplyPaymentElementsPercentageAndAmount(orderId, orderAmount, currencyPrimaryFactor);
 
	 		// Start the custom BP
 
	        // UserConnection userConnection = Get<UserConnection>("UserConnection");
			// IProcessEngine processEngine = userConnection.ProcessEngine;
			// IProcessExecutor processExecutor = processEngine.ProcessExecutor;
			// processExecutor.Execute("UsrTestProcess");
		}

An example of how to start a BP can be found in this article.

This should work for both web a mobile since this logic triggers every time and so you don't need to change a mobile manifest.

Dmytro Vovchenko,



Thanks for the response.



Could you please specify when the method (UpdateAmountsByOrderId ) will be triggered and please confirm whether we need to overide this method in 'OrderProductDetailV2' schema.



 

If I'm not mistaken, it works every time you add a product.

You need to override the schema OrderAmountHelper, there is no need to touch OrderProductDetailV2

Dmytro Vovchenko,

 

Thanks for the response.



Could you please share any article on overriding Source code in Creatio?

Sivaranjani,

Hello,

 

This is like in other C# projects: you need to inherit from the parent class and override the method. Some more information can be found here or here.

Show all comments

Hello community,

 

Is there any possibility to add an icon to custom channel provider? When creating new  channel provider lookup value, it is impossible to specify icon there, as well as if we import channel provider data from excel file. So we wonder if it is possible at all (so this icon would be displayed in the chat when a new chat for this provider would be created)? 

Like 0

Like

1 comments

Hello Community!

 

I have an on-prem installation of creatio studio compatibility edition version 8.0.9.

I installed the Customer 360 app and created my custom app in the application hub.

The newly created package is specified in the "CurrentPackageId" system setting

 

Now when I click on the gear icon on eg the contact list from the Customer 360 app, creatio creates a new package with a name in the format App_...in my case, it was "QsApp_oyuwyip".

This package has a special manifest file called app-descriptor-extension.json in the file system, which seems to be used to associate the package with the Customer 360 app and to extend it (the new package can be seen in the "advanced settings" part of the Customer 360 app).

 

I can move the ClientModule to my package and if I change it, then create will update it correctly (and not create a new module in the QsApp_oyuwyip package), but if I change something else (like the account page from the Customer 360 app) it will be stored in the QsApp_oyuwyip package again and I'd have to move it again.

 

This "feature" makes it more difficult to deploy the changes to our customer's system. We are using git and Clio in our CI/CD pipeline, which was built with one package to transfer in mind...

Is there a way to force the system to use my custom app/package to store all changes?

 

Thanks,

Robert

Like 7

Like

4 comments
Best reply

Hello,

 

In order to have the changes saved in the application to the desired package, you need to set it in the "Package in installed application" lookup. After doing this, the changes made to this application will be automatically saved in the package you have selected.

 

This behavior is described in the article on our academy for more detailed.



Thank you for your question.

Hello,

 

In order to have the changes saved in the application to the desired package, you need to set it in the "Package in installed application" lookup. After doing this, the changes made to this application will be automatically saved in the package you have selected.

 

This behavior is described in the article on our academy for more detailed.



Thank you for your question.

Would definitely be a good video, feels like a recurring theme :)

I've been told the issue with random packages being selected for a customization to be saved in (and new packages being created) will be improved greatly over the next few versions. 

However, for now, you can control the package it will be saved in by changing the URL when you open a page for edits and appending the query string parameter &packageUId=[Your package UId]. This will force the editor to save the new version of the page in that package. If you want an easy way to get the package UId, simple click the [Add page] button in your application and copy this from the URL then use to add to the URL the first time you edit an existing Freedom UI page to force it to go into your package. Once the page is added to your package after the first save, you'll no longer need to add this to the URL and it will continue to save it to your package. 

For example, the *first* time you edit a page such as Contacts_FormPage, add this to the URL to force it to save into your package. From then on, editing that page will continue to save it to that package.

Ryan

Ryan Farley,



Great tip 🙂

 

Great to hear there is plan to improve handling of the "auto" packages. Also from the marketplace directly in the application hub (only in dev/test instances) also create new empty packages each time since Creatio 8.1 is also quite confusing 😅. Hope they fix that before pushing the feature into production instances.



In the meantime, it would be great for Creatio to provide official proper guidance and tips to manage this.

Show all comments

Hello Community,



We have a requirement to trigger a Business Process from Client schema. Since our client also uses Creatio mobile application, we need to figure out in which schema we need to write the code for achieving the same functionality in mobile application.

 

Any inputs on the schema names for achieving the above functionality would be helpful.



Regards,

Sivaranjani

Like 1

Like

1 comments

Hello Sivaranjani,

 

Business processes in the mobile application can only be triggered from the event (signal) that is used in the process (record adding\modification). So if you open a record, change some column value, save this record and you have a business process in the system that is triggered upon column modification then such process will be triggered.

 

Unfortunately mobile application doesn't support manual triggering of the business process from the client code. But our R&D team already has a task to make it possible to do using standard mobile application wizard and I've already informed them on this community post to raise the priority of this task. Thank you for helping us in making the app better!

Show all comments

Hello Community, 

Kind of dummy question, but in the new UI, where is the "lookup element" that can be implemented? In configuration section, contacts are in "custom" package. Did not see a section page referring to contacts, Only form page seems to be valid. Relevant Image that I was expecting to find a custom "lookup element" that can be dragged/dropped is shared.

Thank you in advance! 

Like 0

Like

1 comments

I want to update MaxFileSize and ActiveFileContentStorage using a query to save time. But whenever I tried to run the query from SQL Console it successfully update the values in the database but they are not reflected in the Creatio Portal.

 

When I add the query in the SQL file in advanced settings and run it, it updates the data in the database and in the portal as well. The problem is that it's not dynamic which will kill the purpose of using the query.

 

In other words, if I have to go and change the value in that file and run it again then we can do the same for the system settings as well.

 

Can anyone help me with that?

 

Thanks in advance.

Like 0

Like

1 comments

Hello Syed,

 

The issue here is that these values are also storred in cache and direct updating of these values are not reflected in the cache. That's why you have old values after updating values from the database directly.

 

What should be done after updating values in the database is Redis flush. But this will lead to all users to be logged out from the system and obviously cannot be performed during business hours for the application (or users should be notified that the Redis will be flushed soon). After Redis flush new system settings values will be used when working in the application.

Show all comments

Hi team

 

I created on account page a detail using ContactCareer entity,

I added a custom add button which opens the contact mini page for adding a new contact.

My problem is when the user add the new contact, the contact career entity does not reload 

 

What is it my mistake?

Like 0

Like

1 comments

Hello Stefano,

 

I recommend checking if you have properly connected the account with the new contact. Specifically, please verify the "Which column values to set?" button parameter and ensure that you are transferring the necessary values correctly.

By ensuring that the account and contact settings are properly aligned and the appropriate values are being transferred, you can resolve the issue and achieve the desired functionality.

 

Best regards,

Kate

Show all comments