Hello!

On a page, I want to be able to create a pop-up after a certain action, and also, after completing another separate action, to refresh the page. I have 2 business processes, which post the messages using Script Tasks

First Business process:
var userConnection = Get("UserConnection");
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection,"PopupReturnedMailSent", "Mail has been sent to client!");
return true;

Second Business process:
var userConnection = Get("UserConnection");
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection,"RefreshPage","");
return true;

In my client module, I wrote the following code:
init: function() {
    this.callParent(arguments);

    Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE, this.onServerMessageReceived, this);
    this.subscribeForWebsocketEvents();
},

onServerMessageReceived: function(scope, message) {
    var sender = message && message.Header.Sender;

    if (sender === "PopupReturnedFlowApiError") {
        Terrasoft.showInformation("An error occured. Please retry."); //Opportunity Inactive
    }

    if (sender === "RefreshPage") {
        this.reloadEntity();
    }
},

destroy: function() {
    Terrasoft.ServerChannel.un(Terrasoft.EventName.ON_MESSAGE, this.onServerMessageReceived, this);
    this.unsubscribeForWebsocketEvents(); 
    
    this.callParent(arguments);
},

subscribeForWebsocketEvents: function() {                 
    this.Terrasoft.ServerChannel.on(this.Terrasoft.EventName.ON_MESSAGE,                     
                                    this.onWebsocketMessage, this);             
},             
unsubscribeForWebsocketEvents: function() {                 
    this.Terrasoft.ServerChannel.un(this.Terrasoft.EventName.ON_MESSAGE,                     
                                    this.onWebsocketMessage, this);             
}

I get the following error in the console:


The functionality is still working, but I get these errors in console. I noticed that the Refresh sender doesn't need subscribeForWebsocketEvents and unsubscribeForWebsocketEvents functions, but I think these are needed for the pop-up sender.
 

Like 0

Like

2 comments

In the subscribeForWebsocketEvents and unSubscribeForWebsocketEvents you're referencing a function named onWebsocketMessage but your actual function is named onServerMessageReceived.

That is the cause of the error. Update those functions to use onServerMessageReceived.

Ryan

Good morning Ryan Farley,

 

Thank you, I thought onWebsocketMessage is a core function that must be called for pop-up, but it works without it, as you said :)

 

Final code:

init: function() {
	this.callParent(arguments);
	// register our function to receive messages
	Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE, this.onServerMessageReceived, this);
},
 
onServerMessageReceived: function(scope, message) {
	var sender = message && message.Header.Sender;
 
	if (sender === "PopupReturnedFlowApiError") {
		Terrasoft.showInformation("An error occured. Please retry.");
	}
 
	if (sender === "RefreshPage") {
		this.reloadEntity();
	}
},
 
destroy: function() {
	// unregister so we no longer get messages
	Terrasoft.ServerChannel.un(Terrasoft.EventName.ON_MESSAGE, this.onServerMessageReceived, this);
	this.callParent(arguments);
},
Show all comments

Hi;
I think I miss something in configuration byt i have no idea what.
1. First i add new language to local dev environment.
2. I add translations
3. I run apply translation.
4.Download package to file system.
5. resources has been created (of course xml) and descriptor as well.
6. Add language to TST environment.

7. Load package.

8. No translation has been added.

any ideas why?

Regards
Tomek

File attachments
Like 0

Like

2 comments

Hello!

Could you compare the language ID in the TST environment with the dev environment?

The language should have the same ID.

You can add data binding with the culture record to the package to achieve this.

Thanks Alona,
I am a little bit confused because in translation xml there is only language code not Id but I try

Regars Tomek

Show all comments

In My on-premises Instance, I have performed the below steps.

 

  1. Updated the below system settings 

ExchangeListenerServiceUri

BpmonlineExchangeEventsEndpointUrl

 

  1. I have installed Docker Desktop software and downloaded the "Creatio Email Listener". I successfully launched the CreatioEmail container.
  2. However, we encountered an error while configuring the 0/ServiceModel/ExchangeListenerService.svc file in the web configuration.

 

Updated the below tags in Web.conf file:

 <system.serviceModel>
   <serviceHostingEnvironment minFreeMemoryPercentageToActivateService="1" aspNetCompatibilityEnabled="True" multipleSiteBindingsEnabled="True" />
   <extensions configSource="Terrasoft.WebApp\ServiceModel\Extensions.config" />
   <services>
       <service name="Terrasoft.WebApp.Loader.ServiceModel.AuthService" behaviorConfiguration="RestServiceBehavior">
           <endpoint name="AuthServiceEndPoint" address="" binding="webHttpBinding" behaviorConfiguration="RestServiceBehavior" bindingNamespace="http://Terrasoft.WebApp.ServiceModel" contract="Terrasoft.Core.ServiceModelContract.IAuthServiceEx" />
       </service>
       <service name="Terrasoft.WebApp.Loader.ServiceModel.TotpSetupService">
           <endpoint name="TotpSetupServiceEndPoint" address="" binding="webHttpBinding" behaviorConfiguration="RestServiceBehavior" bindingNamespace="http://Terrasoft.WebApp.ServiceModel" contract="Terrasoft.WebApp.Loader.ServiceModel.TotpSetupService" />
       </service>
       <service name="MyNamespace.MyServiceType" behaviorConfiguration="MyServiceTypeBehaviors">
           <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
       </service>
   </services>
   <behaviors>
       <serviceBehaviors>
           <behavior name="RestServiceBehavior">
               <serviceMetadata httpGetEnabled="true" />
               <!-- Add other behaviors if needed -->
           </behavior>
           <behavior name="MyServiceTypeBehaviors">
               <serviceMetadata httpGetEnabled="true" />
           </behavior>
       </serviceBehaviors>
   </behaviors>
   <bindings configSource="Terrasoft.WebApp\ServiceModel\http\bindings.config" />
</system.serviceModel>

 

Error message:

 

user: Default_user/1B4B9325-66CC-DF11-9B2A-001D60E938C6 file: http://localhost/core/hash/ng-core/src/polyfills.js line: 1 column: 21234 message: Uncaught Terrasoft.UnauthorizedException:
date: Tue Jun 18 2024 12:31:37 GMT+0530 (India Standard Time) stack: undefined

 

We followed the below Link:

 

https://academy.creatio.com/docs/8.x/setup-and-administration/on-site-deployment/containerized-components/email-listener-synchronization-service#:~:text=The%20Email%20Listener%20(formerly%20Exchange,and%20controlled%20use%20of%20resources.

 

 

Like 1

Like

5 comments

Hi,

 

We recommend updating the Email Listener to the latest version. 

To install the module, request the helm package from Creatio support.  

 

The address for Creatio support is support@creatio.com

We have raised an #SR-01305366 

The issue has been resolved.
Note: Once we successfully registered the Docker repository, we were able to configure the email listener for Creatio.

Show all comments

We have a campaign that pulls new members that have purchased product A. They run through an onboarding process and upon completion based on their journey in the campaign flow, they exit the campaign. See below.


Is there a way (filter criteria) to ensure that those who go through the process once do not go through it again if they make a future purchase? Thanks in advance for any insight.

Best,

Lucas

 

Like 0

Like

4 comments
Best reply

Ryan Farley,

Thank you kind sir. Greatly appreciated.

Make sure this option on the element to enter the campaign is NOT checked (which is the default). Then it will prevent contacts from re-entering the campaign even if they fit the criteria again. 

Ryan

Ryan Farley,

Thank you kind sir. Greatly appreciated.

Ryan Farley,

Question, since this campaign I noted above will be duplicated to run quarterly, will that have any impact?

If you have different, separate campaigns hat have those same conditions, the system will only know if a contact has entered a single campaign before (it doesn't know anything about whether you want to prevent a contact from entering those). You'd need to add to the conditions for entering the campaigns that the contact wasn't a participant in the other campaigns.

Show all comments



I am facing with error code because I have developed Web API at my local machine and I am wondering is there way to temporary bypass this restriction

The error code:
Error code: WebException

Error message: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

Stack trace:
  at Terrasoft.Services.Runtime.ServiceClient.d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Terrasoft.Services.Runtime.ServiceClient.Execute(IServiceClientRequest request, CancellationToken cancellationToken)
  at Terrasoft.Services.Runtime.ServiceClient.Execute(IServiceClientRequest request)
  at Terrasoft.Configuration.ServiceSchema.CallServiceSchemaService.Execute(String serviceName, String methodName, List`1 parameters)

Like 0

Like

1 comments

Hello,

About the error in the logs:
The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

This is related to our security policy. Below, I am sending you the settings. Please verify from the integration side if they meet our requirements.

Please use the instructions below:
1. Disable support for obsolete and vulnerable versions of SSL/TLS

  • Disable SSLv2
  • Disable SSLv3
  • Disable TLSv1.0
  • Disable TLSv1.1

Instructions for MS Windows Server configuration

2. Disable support for weak encryption algorithms and protocols:


3. Enable the use of only strong encryption algorithms:

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256


4. Define the sequence of encryption algorithms to be used in accordance with point 3
Instructions for MS Windows Server configuration

5. Enable the TLS Fallback SCSV option

6. Enable the Forward Secrecy option

7. Enable the OCSP Stapling option

Instructions for MS Windows configuration

8. Enable the HSTS option
Instructions for MS IIS configuration

9. Install the MS SQL Server 2012 Native Client on the Creatio application server (in case of using MS SQL DBMS).

Show all comments

Hi All,

 

I have a demand to create a check-in option without using the field sales module.

 

I´ve found a Javascript code that do exactly what I want, but not sure if this is the best code/option:

 

function geoFindMe() {
  const status = document.querySelector("#status");
  const mapLink = document.querySelector("#map-link");
 
  mapLink.href = "";
  mapLink.textContent = "";
 
  function success(position) {
    const latitude = position.coords.latitude;
    const longitude = position.coords.longitude;
 
    status.textContent = "";
    mapLink.href = `https://www.openstreetmap.org/#map=18/${latitude}/${longitude}`;
    mapLink.textContent = `Latitude: ${latitude} °, Longitude: ${longitude} °`;
  }
 
  function error() {
    status.textContent = "Unable to retrieve your location";
  }
 
  if (!navigator.geolocation) {
    status.textContent = "Geolocation is not supported by your browser";
  } else {
    status.textContent = "Locating…";
    navigator.geolocation.getCurrentPosition(success, error);
  }
}
 
document.querySelector("#find-me").addEventListener("click", geoFindMe);

 

Any suggestion how to get the latitude and longitude using the code above or any other suggestion on how to check-in a user without field sales module.

 

Thanks in advanced

 

Like 0

Like

1 comments

Hello Paulo,

 

I guess the best option here is to study how the check-in option works in the Field Sales module and perform the very same setup in your code.

Show all comments

Is there anyway to place characters such as below in the text field within the email designer?

 

Thanks in advance.

Lucas

Like 0

Like

3 comments

Hello,

Yes, you can use these characters, but you have to be very careful because you might get errors.
If you use basic elements of the designer, the system converts them to Unicode, but if you use an HTML designer, you need to specify the Unicode there. Also, don't use them in headers, as they can lead to parsing errors. Check your email provider service, as there may be additional restrictions on these characters.

Best regards,
Antonii

Antonii Viazovskyi,

So, a few questions here Antonii:

1) What type of HTML designers are recommended? 

2) Would we use the HTML block in the email designer module to implement this?

Thanks.

Best,

Lucas

Lucas Centeno,

  1. 1) You can use any HTML designer you like. After writing the code, simply transfer it to the HTML block in the email designer module.
    2) Yes.
Show all comments

Hi Everyone,
 

We have Order Allotment & from that a team lookup from which we are pulling team members into assigned catchers, but now our we need to add drivers and supervisors too in the assigned catchers. How can we display them in the assigned catchers table with all fields. 

 

See video for reference: https://streamable.com/kxomg6


 

Like 0

Like

1 comments

Hello,

 

Unfortunately, the video is not available.

Could you please provide more details regarding your business task?

If you need assistance with the site settings, please contact our support team at support@creatio.com

 

Best regards,

Yuliya

Show all comments

Hi Community,

 

I am currently working on Process elements  in Creatio. However, I find that the Save and Publish process with Script Task Element is taking longer time than expected, and I'm looking for ways to speed up this process.

 

Has anyone faced similar challenges and found effective solutions? If so, please share your experiences.

 

Best Regards,

Ajay Kuthe

 

 

Like 1

Like

7 comments
Best reply

Gareth Osler,

You can add the Creatio NuGet package to your local Visual Studio project for the Creatio/Terrasoft references also (without a local install). https://www.nuget.org/packages/CreatioSDK

Ryan

I have the same question, especially with one instance having a compile time of 10 minutes.

 

There is some documentation on using external IDEs here External IDEs | Creatio Academy.

 

The following looks interesting, but I'm not sure if a local Creatio instance is required:

Develop C# code in a custom project | Creatio Academy

Develop C# code in a custom project | Creatio Academy / Write C# code for Creatio in the cloud

If you turn on the option in your package for it to compile to it's own assembly then it should take less time since it's only compiling your package and not the entire system.

Other than that, developing externally using tools such as clio would speed the process up. 

Some of scripts that are used in many processes can be transformed into User task

Some best practices documentation videos, updated / new e-learning courses would be great in order to maximise the development in nocode and in code with Creatio  (video courses which can also show how to maximize the use of different tools like clio etc...) the amount of information at the moment is still disparate and super light. 

To build an assembly the Terrasoft libraries are needed.  A local Creatio install would be needed (unless there is some other way).

 

Gareth Osler,

You can add the Creatio NuGet package to your local Visual Studio project for the Creatio/Terrasoft references also (without a local install). https://www.nuget.org/packages/CreatioSDK

Ryan

Ryan Farley,

 

Following the instructions from Write C# code for Creatio in the cloud I'm getting the following error running Executor.exe

 

.\Executor.exe

Unhandled Exception: System.Net.CookieException: The 'Value'='Lax,.ASPXAUTH' part of the cookie is invalid.
   at System.Net.Cookie.VerifySetDefaults(CookieVariant variant, Uri uri, Boolean isLocalDomain, String localDomain, Boolean set_default, Boolean isThrow)
   at System.Net.CookieContainer.Add(Uri uri, Cookie cookie)
   at Executor.Program.TryLogin(String userName, String userPassword, String authServiceUri)
   at Executor.Program.Login()
   at Executor.Program.Main(String[] args)


The instructions are essentially to build an assembly locally and then I think upload it to the cloud instance using Executor.exe.  It looks as though it is not able to log in to the cloud instance due to an invalid cookie value.  I can't think of  a way round that.

 

[Edit] Apart from upload the assembly manually, would only take a few seconds!

 

[Edit] Could clio CI/CD be used to automate deployment?

 

Show all comments

Hi Creatio Community,

 

I hope you're all doing well. I have question with managing app updates and would appreciate your insights.

 

Scenario: I have developed an app and released version 1.0 on the Creatio Marketplace. Some clients have installed this version and made custom changes to the app. 

Now, I am preparing to release version 1.1 with new features and bug fixes. My concern is that when clients update to version 1.1, their custom changes overwritten or not?

 

1] What are the best practices to ensure client-specific changes are not lost during the update?

 

2] Are there any tools or features within Creatio that can help manage and merge client customizations with new updates?

 

Thank you in advance for your assistance and suggestions.

 

Best Regards,

Ajay Kuthe

Like 3

Like

1 comments
Best reply

Hi Ajay,

 

Let's look at how the customization process works in general. 

 

When a customer makes any changes to the installed application, your core logic remains unchanged. Instead, the app is extended with a new package where replaced schemas are created, inheriting your core schemas. When you make new changes to the app and customize these core schemas, after delivering a new version to the client, only those core schemas will be updated. The customer's inherited schemas will remain unchanged.

 

Therefore, custom changes will not be overwritten. However, we recommend supporting backward compatibility to avoid breaking custom changes after delivery.
 

If you are going through the update process together with the client, we suggest using the delivery process article to build a safe delivery process.

Hi Ajay,

 

Let's look at how the customization process works in general. 

 

When a customer makes any changes to the installed application, your core logic remains unchanged. Instead, the app is extended with a new package where replaced schemas are created, inheriting your core schemas. When you make new changes to the app and customize these core schemas, after delivering a new version to the client, only those core schemas will be updated. The customer's inherited schemas will remain unchanged.

 

Therefore, custom changes will not be overwritten. However, we recommend supporting backward compatibility to avoid breaking custom changes after delivery.
 

If you are going through the update process together with the client, we suggest using the delivery process article to build a safe delivery process.

Show all comments