Good day!


I need help to understand an error during install of package.

Terrasoft.Core.Packages.Exceptions.InvalidDescriptorInFileSystemException: Invalid discripter: 
Reading of property "Type" is not supported 
Path: UsrTest ---> Terrasoft.Common.InvalidObjectStateException: Reading of property "Type" is not supported
   at Terrasoft.Core.Packages.PackageFileStorage.Read(DataReader reader, Package package) 
   at Terrasoft.Core.Packages.PackageFileStorage.b__201_0(JsonDataReader reader, Package package) 
   at Terrasoft.Core.Packages.PackageFileStorage.InitializeDescriptor[T](Action2 initializeDescriptor, String descriptorFilePath, T descriptor) 
   at Terrasoft.Core.Packages.PackageFileStorage.CreatePackageDescriptorBasedOnDirectory(String directoryPath, Action2 initializeDescriptor) 
   --- End of inner exception stack trace --- 
   --- End of inner exception stack trace --- 
   at Terrasoft.Core.AppInstallation.Packages.Operations.PackageZipOperations.ThrowIfPackageStorageItemErrorsExist(PackageStorage packageStorage) 
   at Terrasoft.Core.AppInstallation.Packages.Operations.PackageZipOperations.Load() 
   at Terrasoft.Core.AppInstallation.Packages.Backup.ZipPackageBackupManager.ComposePackages(String sourcePackagesPath, String tempFilesPath) 
   at Terrasoft.Core.AppInstallation.Packages.Backup.ZipPackageBackupManager.CreateBackup(String sourcePackagesPath, String tempFilesPath, String backupPath, String code) 
   at Terrasoft.Core.ServiceModelContract.PackageInstaller.PackageInstallerServiceInternal.<>c__DisplayClass25_0.b__0() 
   at Terrasoft.Core.ServiceModelContract.PackageInstaller.BaseInstallerServiceInternal.InvokeWithLogging(Action action) 

Install log is in the attachment.



It works without any errors and is imported correctly in other systems (on versions higher).



Is there something I can change in the package? Or is it a problem in the system I import package in?   

How can I fix this?



Thank you in advance!

File attachments
Like 1

Like

2 comments

Hello,

 

The cause of the problem is the difference between the versions of websites of Сrеаtio that you used during the development of your package versus installation.

Kalymbet Anastasia,

Dear Anastasia, 



Thank you for expllanaition. Is there any possibility to make my package suitable for versions lower than original?

Show all comments

I'm having an issue where no previously created activities are appearing in the mobile application when toggling to Offline Mode.

 

Can anyone provide insight on where to look for a fix?

Like 1

Like

1 comments

Stephen, 



Just to clarify, so the issue is when you create an activity using an Online mode and switching to Offline, the activities you have created previously are not available in offline mode? 



Kind regards,

Roman

Show all comments

 

Can Creatio work with 3 RMQ instances without a load balancer? Is there any documentation on this?

Like 0

Like

1 comments
Best reply

Hell Alex,



RABBITMQ does not require load balancers for its work.

 

If the question is how to set up deployment with high availability, RabbitMQ cluster mode is used for this.

 

Several nodes are configured as a cluster and data are replicated between them automatically. More information can be found in the article Clustering Guide - RabbitMQ.

 

As for the Docker/Kubernates is, we can recommend images from the bitnami company - containers/README.md at main · bitnami/containers · GitHub, clustering is already configured there and there is also good documentation.

 

Creatio uses Quorum Queues — RabbitMQ, so you don't need to configure anything besides connecting to the cluster. But this applies specifically to the work of creatio with RMQ. If the question is about the mail microservice, this paragraph is not relevant.

 

Hell Alex,



RABBITMQ does not require load balancers for its work.

 

If the question is how to set up deployment with high availability, RabbitMQ cluster mode is used for this.

 

Several nodes are configured as a cluster and data are replicated between them automatically. More information can be found in the article Clustering Guide - RabbitMQ.

 

As for the Docker/Kubernates is, we can recommend images from the bitnami company - containers/README.md at main · bitnami/containers · GitHub, clustering is already configured there and there is also good documentation.

 

Creatio uses Quorum Queues — RabbitMQ, so you don't need to configure anything besides connecting to the cluster. But this applies specifically to the work of creatio with RMQ. If the question is about the mail microservice, this paragraph is not relevant.

 

Show all comments

Hello Creatio Community,

I have made the Activity participant detail (Activites section) as an editable list.

When I add a new record and click on the added row ( the active row doesnt behave normally) as editable lists in other sections. I think is probably sort of bug of the system, because i have tried in fresh installations and the same thing happens.

 

I overcome this by refreshing the page so that the added row behaves normaly.

I manage to refresh the page by sending a message from a business process to the Front-End and subscribe to the message. But i refresh the whole Activity (entity), i want to refresh only the Participant detail.

This snippet is implemented in ActivityPageV2

			init: function() {
				this.callParent(arguments);
				// register our onProcessMessageReceived function to get messages from the server
				Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE, this.onProcessMessageReceived, this);
			},
			onProcessMessageReceived: function(scope, message) {
				debugger;
				var sender = message && message.Header.Sender;
					if (sender === "RefreshDetailActivityParticipantFromBP") { //"SMRefreshPaged"
					this.reloadEntity();
				}
			}

How can i manage to refresh only the Participant detail list?

I have tried also this.reloadGridData() and this.updateDetail({reloadAll: true}); without success.

Like 0

Like

3 comments

this.reloadGridData()  is not defined in the ActivityPageV2. (console)

I think that the proper solution involves using the this.reloadGridData()  method ? Should i just add the :

mixins: {
			GridUtilities: "Terrasoft.GridUtilities"
		}

in the ActivityPageV2 ?

Any updates on this Creatio team ?

Sasori Oshigaki,

this.updateDetail({ detail: "NameOfDetail" });

You can find the "NameOfDetail" value to use by looking at the details section of the page code for your detail (it's not the name of the detail schema, but the name or Id it gave it when it added it to the page). The reloadGridData function only works from within the detail schema code itself. 

 

Show all comments
Question

Hi;

I try to redirect sendig eMails from Creatio from SMTP account to our custom api responsable for communication in company



Is this easy way to do this not changing Creatio process working on SendEmail element

 

Regards;

Tomek Branicki

Like 0

Like

2 comments

Hello Tomasz,

 

unfortunately, it is not quite clear what exactly you want to achieve.

Creatio sends emails where you want it to, without redirects.

 

Kindly ask you to explain in details what is the goal of the operation.

 

Regards,

Gleb.

Hi,Gleb,

Thanks

Creatio use the ExchangeListnerApi which use the SMTP based Account for sending email

I try to redirect the request to Listner to our custom rest api creating for communication manegement

Show all comments

Hey,



I'm trying to implement business task when we need to send a datalist/table in email template.

I was surfing the academy and came into this https://community.creatio.com/questions/how-display-datalist-email-template 



But i faced a little problem,

When inserting my macros to email template, the message itself not recognizing the html code.



Any suggestions how to fix it? 

Thanks

Like 0

Like

6 comments
Best reply

Oleksii Protsiuk,

 

Hello,

 

&amp;lt; means that there should've been < in the code. I believe there is an issue with the html code translation in your template. You need to replace:

 

&amp;lt; with <

&amp;gt; with >

&amp;gt with > either

 

using Notepad++ replacement for example (I've modified the code you sent using this text editor). As a result I received a correct code, but after that the HTML should be checked. This can be done via the tests in Visual Studio and receivig the HTML code result and verifying it for example here. You can use some test values instead of entity.GetColumnValue(colPercentage.Name).ToString() to verify the code.

Dear Oleksii,

 

Thanks for reaching out.

 

Could you please provide us an example of macros you are trying to insert into your email template?

 

Thanks in advance. 

 

Best regards,

Anastasiia

Anastasiia Marushenko,

namespace Terrasoft.Configuration
{
	using System;
	using Terrasoft;
	using Terrasoft.Common;
	using Terrasoft.Core;
	using Terrasoft.Core.Entities;
	using Terrasoft.Core.DB;
	using Newtonsoft.Json;
 
	public class NewEmailMacros : IMacrosInvokable
    {
        public UserConnection UserConnection {
            get;
            set;
        }
        public string GetMacrosValue(object arguments) {
//        	var sjson = JsonConvert.SerializeObject(arguments);
//        	var templ = new {Key = String.Empty, Value = String.Empty};
        	var currencyId = "c1057119-53e6-df11-971b-001d60e938c6";
        	var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, “Object"); 
            var colCode = esq.AddColumn("Column1"); 
            var colPercentage = esq.AddColumn("Column2"); 
            var colCurrency = esq.AddColumn("Column3");
            var colType = esq.AddColumn("Column4");
            var colDate = esq.AddColumn("Column5");
	        var colDay = esq.AddColumn("Column6"); 
          	var CurrencyFilter = esq.CreateFilterWithParameters(
    		FilterComparisonType.Equal, "Column3.Id", currencyId); 
	          esq.Filters.Add(CurrencyFilter);
           EntityCollection entities = esq.GetEntityCollection(UserConnection);
 var html = "&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Percentage&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;th&amp;gt;Code&amp;lt;/th&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Currency&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Type&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Date&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Day&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt";
            foreach (Entity entity in entities) {
 	          	html += "&amp;lt;tr&amp;gt;";
 	          	html += "&amp;lt;td&amp;gt;" + entity.GetColumnValue(colPercentage.Name).ToString() + "&amp;lt;/td&amp;gt;";
            	html += "&amp;lt;td&amp;gt;" + entity.GetColumnValue(colCode.Name).ToString() + "&amp;lt;/td&amp;gt;";
     	      	html += "&amp;lt;td&amp;gt;" + entity.GetColumnValue(colCurrency.Name).ToString() + "&amp;lt;/td&amp;gt;";
      	     	html += "&amp;lt;td&amp;gt;" + entity.GetColumnValue(colType.Name).ToString() + "&amp;lt;/td&amp;gt;";
         	  	html += "&amp;lt;td&amp;gt;" + entity.GetColumnValue(colDate.Name).ToString() + "&amp;lt;/td&amp;gt;";
				html += "&amp;lt;td&amp;gt;" + entity.GetColumnValue(colDay.Name).ToString() + "&amp;lt;/td&amp;gt;";
            	html += "&amp;lt;/tr&amp;gt;";
            }
				html += "&amp;lt;/table&amp;gt;";
            	return html;
        }
    }
}

 

Anastasiia Marushenko,

I dont know why it kept changing the code, and adding the amp*

html += "&lt;/table&gt;";

 

 

Oleksii Protsiuk,

 

Hello,

 

&amp;lt; means that there should've been < in the code. I believe there is an issue with the html code translation in your template. You need to replace:

 

&amp;lt; with <

&amp;gt; with >

&amp;gt with > either

 

using Notepad++ replacement for example (I've modified the code you sent using this text editor). As a result I received a correct code, but after that the HTML should be checked. This can be done via the tests in Visual Studio and receivig the HTML code result and verifying it for example here. You can use some test values instead of entity.GetColumnValue(colPercentage.Name).ToString() to verify the code.

Oleg Drobina,

Thank you very much!

That helped.

You can use the Enhanced template macros for Creatio app from Marketplace.

You won't need to write additional code.

https://marketplace.creatio.com/app/enhanced-template-macros-creatio

Show all comments

Is it possible to trigger process's signal from backend (C# code)? 

For example, I modify record of schema in C# code and I want process to become triggered when the record was modified.

I have tried to make it as shown on a picture but it didn`t work. It worked only if the record was changed from UI side.

I would be very appreciated for knowledgebase link concerning this question.

Thank you in advance.

Like 0

Like

3 comments

What does the C# code look like that you're using to trigger it?

Can you provide more details on your custom code since I've created a simple method in the Account object that modifies a contact in the process inside the Account object (using onInserted method):

var contactEntity = UserConnection.EntitySchemaManager.GetInstanceByName("Contact");
			var contactRecord = contactEntity.CreateEntity(UserConnection);
			contactRecord.FetchFromDB("Id", new Guid("9c4111d2-cbf1-49f2-8c2b-00c6a82547c0"));
			contactRecord.SetColumnValue("Name", "From the code");
			contactRecord.Save();

and it triggers the business process with the start signal that is executed when the Contact name is modified. Maybe your logic is not modifying the record in the manner that should trigger the business process.

UsrContactSaved - the process on Contact schema that triggers when Contact record is saved ContactUtilities.ChangeContactStatus - the method that should change Status on schema Contact (this method is scheduled by job)

UsrOnContactStatusChanged - the process that should be triggered when the Status field in Contact schema was changed (but it doesn`t trigger)

So, when UsrContactSaved process triggered, there is a code in it that schedule a job that must call ContactUtilities.ChangeContactStatus in 10 minutes. After 10 minutes triggers ContactUtilities.ChangeContactStatus method and it changes Status via method in C# code.

In conclusion, status changed but UsrOnContactStatusChanged didn`t work. Expected result: UsrOnContactStatusChanged has to be triggered after work of UsrChangeContactStatusProcess process.

Show all comments

We have cloned the Ext dev(with no internet access) from our internal dev env which is working, but now on external dev, i am not able to log in. 

Like 0

Like

2 comments

Hello Adil,

 

Please double-check all features that are enabled for the machine where IIS server is deployed (according to the Academy article here). Once done, please redeploy on-site application from scratch using clean binary files (which can be received from the support team at support@creatio.com).

It is as a must to use clean binary files (not those that can be provided by support in case you request database backup of some application to deploy it locally, but out-of-the-box files).

Also, please double-check the connection parameters to the database in connection. Since incorrect database connection parameters, the Strings config file can also lead to login issues.

And finally, please check if you haven't specified HTTPS as a redirect method for your application in IIS and if it was appropriately configured in the configuration files.

localhost cannot find ViewModule.aspx after login.

Show all comments

Hi,



Need to update an instance with redis installed on CentOS linux. We need to indicate the redis path in the install.xml file. On the linux server it is installed in the standard "dir /var/lib/redis " . So we added "var/lib/redis" or "/var/lib/redis" with no success.



 





There is no indication about "RedisPath"  in the update guide https://academy.creatio.com/docs/release/update-guide/update-guide and we are stuck on the naming convention that Creatio requires.



Any ideas ?



Thanks,



Damien

Like 0

Like

1 comments

Hello, Damien!

 

The following instructions can help you to chieve the result you are looking for: Installing updates

There is a part related to commenting on the field when Redis is deployed on another machine. 

Show all comments

Like 2

Like

3 comments
Best reply

Hello Ahmad,

Yes, I do this often with CSS. It takes a bit of playing in dev tools to find the correct element to apply the styles to. In the case where you have two details "DetailA" and "DetailB", the styles are typically like this (you'll need to find the element of the detail that has the class "added-detail" to apply these to): 

/* DetailA - apply to element with class .added-detail */
#AccountPageV2UsrSchema8Detail1c7637b0Container {
    display: inline-block;
    width: 45%;
    margin-right: 10px;
    vertical-align: top;
}
 
/* DetailB - apply to element with class .added-detail */
#AccountPageV2UsrSchema6Detail0235cca7Container {
    display: inline-block;
    width: 45%;
    vertical-align: top;
}

The end result looks something like this:

You can see more of how to add custom CSS to a page here: https://customerfx.com/article/adding-custom-css-style-sheets-in-bpmonl…

Ryan

Hello,

 

Thank you for your question! 

We are constantly improving our application and this has been made possible in Creatio freedom UI:

https://academy.creatio.com/docs/8-0/user/nocode_platform/set_up_the_ui…

 

Unfortunately, if you use version 7.х - this can be achieved only by means of additional development.

 

Best regards,

Anastasiia

Hello Ahmad,

Yes, I do this often with CSS. It takes a bit of playing in dev tools to find the correct element to apply the styles to. In the case where you have two details "DetailA" and "DetailB", the styles are typically like this (you'll need to find the element of the detail that has the class "added-detail" to apply these to): 

/* DetailA - apply to element with class .added-detail */
#AccountPageV2UsrSchema8Detail1c7637b0Container {
    display: inline-block;
    width: 45%;
    margin-right: 10px;
    vertical-align: top;
}
 
/* DetailB - apply to element with class .added-detail */
#AccountPageV2UsrSchema6Detail0235cca7Container {
    display: inline-block;
    width: 45%;
    vertical-align: top;
}

The end result looks something like this:

You can see more of how to add custom CSS to a page here: https://customerfx.com/article/adding-custom-css-style-sheets-in-bpmonl…

Ryan

Ryan Farley,

Thank you Ryan!!

Show all comments