Hi Team,

We are currently using the following server-side code to send Mobile Push Notifications in Creatio:

var userConnection = this.Get<UserConnection>("UserConnection");
var pushNotification = new PushNotification(userConnection);
 
Dictionary<string, string> additionalData = new Dictionary<string, string>();
additionalData.Add("entityName", entityName);
additionalData.Add("recordId", recordIdStr);
 
pushNotification.Send(sysAdminUnitId, title, message, additionalData);

On the mobile side, we are using the standard:

Terrasoft.configuration.PushNotificationReceiver

Now we have a requirement to delete or cancel a previously sent push notification based on:

  • entityName
  • recordId

For example:
When a record is approved or completed, the related push notification should be removed from the mobile device.

However, we understand that Push Notifications are not stored in a database table like System Notifications.

Could someone please clarify If there is a supported way to cancel or remove a specific mobile push notification?

Any guidance or best practice would be greatly appreciated.

Thank you!

Like 0

Like

0 comments
Show all comments
Compile_an_app_on_a_web_farm
Studio_Creatio
8.0

i have a web farm with HAProxy and 3 Windows IIS web servers, im using gitlab ci/cd pipeline where im stopping IIS on server2 and server3, and deploying new packages on server1, after deployment finished im copying WebApp/conf/ and WebApp/Terrasoft.Configuration/Pkg as mentioned in documentation to server 2 and 3, but after enabling HAProxy, i need to manually do compile all in server 2 and server 3. what im doing wrong or what im missing 

Like 0

Like

4 comments

Hi!

Based on your description, the deployment is almost correct, but in a web farm scenario you’re syncing only package sources and config (WebApp\conf and WebApp\Terrasoft.Configuration\Pkg) from node1 to node2/node3. After HAProxy starts sending traffic to all nodes, node2 and node3 still have stale compiled artifacts and/or cached metadata (Redis), so they detect a mismatch and require a manual “Compile all” locally.

Recommended rollout flow:

  • Put the farm into maintenance / drain traffic in HAProxy
  • Stop IIS on node2/node3
  • Deploy to node1 and run compile there (if required)
  • Copy the required folders plus compiled output from node1 to node2/node3
  • Flush Redis
  • Start node2/node3
  • Re-enable HAProxy traffic

Please let me know about testing this approach.

Kalymbet Anastasia,

Thanks for replay Anastasia,
let me quickly represent my pipeline stages

1)  Stop HA Proxy (stopping HA Proxy service, for now I have a downtime as you can see, in future I'm planning to change it) 

2) Stop cluster ( Stopping node2 and node3)

3) Install Clio (checking if there is installed Clio on node1, if no install it)

4) Create zip (Building the environment)

5) Deploy ( deploying and compiling  )

6) Copy From Server1 ( copying the artifacts from node1)

7) Copy To Secondary Servers ( sending the copied zip files to node 2 and node 3)

8) Clear Redis (clearing Redis cluster)

9) Start cluster (starting node2 and node3)

10) Start HA Proxy (starting HA Proxy service)

with this pipeline I'm getting the result where I need to manually compile node 2 and node 3 from 0/dev. So my question is, do I need copy something else from node 1 ( beside the directories that are in documentation) or do I need add compile step after coping to Node 2 and Node 3

Hello,

After installing the packages, could you please try transferring not only the files you usually move to the adjacent node, but all application binary files?

This will help us better localize the issue and determine whether the problem is caused by incomplete file transfer or if it is related to something else.

Anastasiia Zhmud,

Hello,
well I have tried adding
/Terrasoft.WebApp/Terrasoft.Configuration/Autogenerated and /Terrasoft.WebApp/bin to my pipeline, but didn't helped, if you mean different bin can you please tell the path?

Show all comments
FreedomUI
approvals
Studio_Creatio
8.0

Hi ,

I am facing an issue in changing the approver and delegated from using the business process if that Business process is triggered by the user who is not in the role of System administrators.

getting an error : 
System.Security.SecurityException: Object "UsrClaimEntriesVisa" record cannot be assigned more permissions than you currently have.



If i trigger the process using the supervisor account then i am easily able to complete the process of changing the approver and delegated from easily without any error.

can anyone help in this ?

how can i give rights to user to update the approvals object

 

Like 0

Like

4 comments

Hi, you can do it via Object permission

and then find your object and make all necessary settings

 

Dmitry S,

I Tried this, but still facing the same issue.

Can you please post here a screeshot with the object rights? 

Hello,

If a user, who is supposed to perform a process action does not have access permissions required to perform that action, the corresponding process task will not be able to complete. 

You can find more information in this Academy article.

It would be best for you to create a case directly for the support team at support@creatio.com so we could check the entire design of the process and the permissions the user who experiences the error to determine the exact cause of the issue.

Show all comments
#mobileapp
#FreedomUI
Studio_Creatio
8.0

Hi All, we are trying to create an intake request page for mobile using the Freedom UI. We have one dropdown field (Field 1) that is mandatory. This field has 4 values. Based on the selection of value by user, we want to expose certain fields. Hence, we have hidden these fields until the value selection of Field 1. But the business rules are not working to make these fields visible. Is this feature not available on the latest update to freedom UI in mobile?

 

Like 0

Like

0 comments
Show all comments
Studio_Creatio
8.0

Our customer needs to connect Creatio to Power BI Service, but the current connector only works with Power BI Desktop. When publishing to the Service, the gateway cannot connect to Creatio because the required connector/method is not available. 

I need  some clarification on:

  1. Whether Power BI Service connectivity is supported.
  2. Any supported alternative (API method, workaround, or integration pattern) to enable the Service to access Creatio data.
Like 0

Like

1 comments

Hello,

At the moment, the only officially supported way to connect Creatio to Power BI is via the Marketplace connector, which has limitations. Unfortunately, Creatio does not offer alternative OOTB solutions for connection. 

Show all comments
QueueItem
list
column
removed
Studio_Creatio
8.0

Hello,

I have noticed that configuring a list to display Agent desktop queue element (QueueItem) always results in the default column displaying 'Colum removed'. It is pointing to Caption of QueueItem.

When you try to remove it (hide) and save you will be unable to open the page in no-code configuration. Console returns: Cannot read properties of null. 

Essentially we have to display this default column or the page breaks in configuration. From UI perspective it opens regardless.

I have observed this in multiple environments with versions 8.2 and higher. 

It is not a big issue but I am wondering if anyone has encountered this or has a solution for this.

Like 0

Like

2 comments

I had that issue twice: a) the column was added on the list by code and then removed (renamed) from the configuration. b) on the list in the designer was added subordinate column...

The thing is this happens when you add a new list for Agent desktop queue element. No previous configuration at all. I even tried this on demo environment and it is the same. This seems to be an issue with ootb functionality but maybe there is a known fix?

Show all comments
Auto-number_sequence_generation_not_working_in_Creatio_Online_environment
Studio_Creatio
8.0

Hello,

We are importing data from an external ERP system and creating records (e.g., Orders / Invoices) via backend code. These objects have an auto-number column (“Number”) configured with a prefix such as ORD- or INV-.

We attempted to generate the next auto-number value by querying the database sequence directly using SQL like NEXT VALUE FOR based on the column UID. This approach works in some local environments but fails in Creatio Online. The query either throws an error or does not return the expected value.

Below is the code we have written for next sequence:
 EntitySchema entitySchema = userConnection.EntitySchemaManager.GetInstanceByName(objectName);
                    var numberColumn = entitySchema.Columns.GetByName("Number");
                    string sequenceName = numberColumn.UId.ToString();
                    
                    long nextValue=0;

                    try
                    {
                        string sql = $"SELECT NEXT VALUE FOR dbo.[{sequenceName}]";
                        
                        using (var dbExecutor = userConnection.EnsureDBConnection())
                        {
                            using (var reader = new CustomQuery(userConnection, sql).ExecuteReader(dbExecutor))
                            {
                                if (reader.Read())
                                {
                                    nextValue = reader.GetInt64(0);        
                                }
                            }
                        }
                    }
                    catch(Exception ex)
                    {
                        
                    }

The trail online version of Creatio is "8.3.2.4199". 

What are we missing here?

Any help would be appreciated.

Like 0

Like

2 comments

First of all, how are you loading the orders/invoices? It should be creating these numbers unless you're going directly to the database (or the numbers are being created using the older method on the client-side page only).

I assume that somewhere you're setting the nextValue in the Number field and that just isn't showing in the code?

Ryan Farley,

We are currently performing a direct SQL insert using the following code:

Guid newRecordId = Guid.NewGuid();
var insertQuery = new Insert(userConnection).Into(objectName).Set("Id", Column.Parameter(newRecordId));

foreach (var property in objectData.Properties())
{
    string propertyName = property.Name;
    string propertyValue = property.Value.ToString();
    insertQuery.Set(propertyName, Column.Parameter(propertyValue));
}
int affectedRows = insertQuery.Execute();

However, in the online environment, the order number is not incrementing as expected. Instead, all orders are being created with the same number (ORD-0).

Show all comments
#email
Studio_Creatio
8.0

Hi All,

We are trying to autofill To and From in email from Creatio. We designed business process to read To and From email from contacts. We are using mini email template. How can we auto-populate to and from in the business process? Thanks

Like 0

Like

4 comments

Hello,

The easiest and most reliable way to implement this is by using the Send Email element in the business process.

You can configure it as follows:

1. "From" Field:

Add the Send Email element to your business process.

In the element setup, locate the From parameter.

Select a mailbox that is configured in the Mailbox synchronization settings,
or map this field to a process parameter that contains the mailbox information (this parameter should reference the Mailbox synchronization settings lookup).

2. "To" Field:

In the same Send Email element, locate the To parameter.

Map this field to a process parameter of type Contact or Account. In this case, the system will automatically use the primary email address specified in the Communication options of that Contact or Account.

Alternatively, you can manually specify the target email address or map the field to a parameter that contains the required email value.

Additionally, you can select the required email template within the Send Email element.

Anastasiia Zhmud,

Thanks Anastasiia - Just to clarify, we need to give a button on the UI for sending emails manually to the user. I want the email mini page to open with autofilled To and From. The user can then put subject and email body and send manually. To and From parameters are not visible on the email mini page. Am I missing anything here?

Puneet Mehta,

You can use "Send email" process task. Smth like this:

 

 

and this is the result:

So you have both filled email address and link to the contact

Dmitry S,

This was helpful - thank you

Show all comments
#lookup
Studio_Creatio
8.0

Hi All,

 

We are creating a pre-config page where we have two page parameters fields, one is a lookup (lookup 1) and other is multi select with another lookup. I have created a mapping of both the lookup tables. I want to filter multi select field based on the value selected in lookup 1. How can I implement this?

handlers: /**SCHEMA_HANDLERS*/[
			{
  request: "crt.LoadDataRequest",
  handler: async (request, next) => {
    // Ensure this runs only for your MultiSelect list data source
	    console.log("Current DataSourceName:", request.dataSourceName);
	   console.log("EntitySchema:", request.entitySchemaName);
    // Ensure it's the right source + schema
    if (request.dataSourceName !== "MultiSelect_ugo4wdi_List_DS") {
		console.log("Hello I am in a log box 1234");
      return await next?.handle(request);
    }
    const filter = new sdk.FilterGroup();
    // Filter where ImpStateRegion == 'State'
    await filter.addSchemaColumnFilterWithParameter(
      sdk.ComparisonType.Equal,
      "ImpStateRegion", // <-- Column in ImpStateInterestMultiselect to filter on
      "State"           // <-- The fixed value to filter by
    );
    // Workaround for Creatio DevKit filter bug
    const newFilter = Object.assign({}, filter);
	  console.log("Hello I am in a log box");
    newFilter.items = filter.items;
    // Add filter to request parameters
    request.parameters.push({
      type: "filter",
      value: newFilter
    });
    // Proceed with next handler
    return await next?.handle(request);
  }
}
		]/**SCHEMA_HANDLERS*/,
Like 0

Like

0 comments
Show all comments

Hi Community,

I’m on Creatio 8.3.2 (Freedom UI) and I’m trying to set the first tab as the default on every page init, because the designer option under Tabs (“Default tab”) isn’t working in my case, so I’m doing it in code.

What I’m doing

I subscribe to the page model events inside crt.HandleViewModelInitRequest and wait for finish-load-model-attributes, then set the tab index to 0:

{
  request: "crt.HandleViewModelInitRequest",
  handler: async (request, next) => {
    await next?.handle(request);
 
    request.$context.events$.subscribe(async (evt) => {
      const modelMode = await request.$context.getPrimaryModelMode();
 
      if (evt?.type === "finish-load-model-attributes") {
        if (modelMode === "update") {
          request.$context.Tabs_SelectedTabIndex_Profile = 0;
        }
        if (modelMode === "create") {
          request.$context.Tabs_SelectedTabIndex_Profile = 0;
        }
      }
    });
  }
}

The problem

This event is emitted more than once (e.g., when another list/detail inside a tab finishes loading later), so my code keeps re-triggering and forces the UI back to tab 0 even after the user already switched tabs.

Unsubscribe attempt (doesn’t work)

I tried the pattern I saw in a comment on the CustomerFX article about waiting for the model to be loaded (store the returned subscription and call unsubscribe() when the needed payload arrives):customerfx

const sub = request.$context.events$.subscribe(async (evt) => {
  if (evt?.type === "finish-load-model-attributes" && evt?.payload?.SomeAttribute) {
    sub.unsubscribe();
  }
});

But in my case (8.3.2 Freedom UI) this doesn’t seem to work at all.

Questions

  • What is the correct syntax / pattern to unsubscribe from request.$context.events$ subscriptions on Freedom UI pages (8.3.2)?
  • Does events$.subscribe(...) always return an object that supports unsubscribe() in Freedom UI, or is there a different disposal mechanism?
  • Is there a recommended “run once when page is really ready” event/request that avoids finish-load-model-attributes firing multiple times?

If anyone has a working example for 8.3.x (especially for “run once” behavior or proper unsubscribe), I’d really appreciate it.

Like 1

Like

1 comments

Hello,
Currently, there are some issues with the default tab logic, and our R&D team is working on a global solution for it. As for now, the recommended approach is the following:
The current mechanism relies on saving the selected tab through the page configuration (viewConfig), which may lead to conflicts and incorrect behavior.
To ensure stable operation, the default tab must be controlled at the ViewModel level.
As a workaround for now, you can apply the following steps:
- Use the SelectedTabIndex property instead of SelectedTab. 

- Store the tab index in a dedicated ViewModel attribute.

- Disable saving the selected tab in the profile to prevent conflicts. (DisableSaveToProfileSelectedTabIndex)


 

Show all comments