Studio_Creatio
8.0

Hi all, 

In case page I have two lookup fields - Owner and Individuals both are lookups on contacts. 

Validation required - They should not accept same values. 

How can I achieve this. Please help.

 

Many thanks.

Like 0

Like

2 comments

Hello,

You can enforce this entirely on the client side in Freedom UI. The two most reliable approaches are a save handler (crt.SaveRecordRequest) and a custom validator (inline error message as the user fills the form). You can use either of these

Example - Save handler (blocks the save)

handlers: /**SCHEMA_HANDLERS*/[
    {
        request: "crt.SaveRecordRequest",
        handler: async (request, next) => {
            const owner = await request.$context.Owner;
            const individuals = await request.$context.Individuals;

            if (owner && individuals && owner.value === individuals.value) {
                request.$context.executeRequest({
                    type: "crt.ShowDialogRequest",
                    $context: request.$context,
                    dialogConfig: {
                        data: {
                            message: "Owner and Individuals cannot be the same contact.",
                            actions: [
                                { key: "ok", config: { color: "primary", caption: "OK" } }
                            ]
                        }
                    }
                });
                return; // stops the save
            }
            return next?.handle(request);
        }
    }
]/**SCHEMA_HANDLERS*/


Custom Validator: Define a custom validator on either field in the ViewModelConfig, then trigger it via the attribute change request whenever either field's value changes.

  • Using both is a common pattern: validator for live feedback, save handler as a safety net.

Hello,

As mentioned above, this functionality can be achieved by implementing custom logic within the crt.SaveRecordRequest handler, which allows you to prevent the data from being saved when necessary conditions are not met.

Alternatively, you may consider implementing a custom validator.
 

For your reference, the following articles may be helpful:

"handlers" schema section | Creatio Academy
Implement the validation of a field value on a page | Creatio Academy

Show all comments

Hi team,

I have created a campaign and added the target audience. When i started the campaign, the emails remain in the queue and are not being sent.

Has anyone experienced this issue before? Could you please help me understand what might be causing it and how to resolve it?

Like 0

Like

2 comments

Good day, Tanu,

The "Queued" status is not an outright sign of issues with delivery to the participant. 

Creatio sends emails to the addressee throught the ESP, but waits for an email response before changing the status.

The Queued status may mean one of the following:

- the delivery was completed, but the reply has not been returned by the provider

- the email was queued for delivery, but until it has been Delivered or "Bounced", it remains "Waiting to retry" on the ESP side. 
Seeing as "Waiting to retry" has no corresponding status on Creatio end, the recipient remains Queued.
Email Service Providers may retry delivery for up to 48 hours (ElasticEmail) and up to 72 hours (SendGrid).

- Longer periods of being Queued may point to complications with delivery or responses not being sent out by ESP.

Should you require a more in-depth analysis of Queued status, please contact us at support@creatio.com with an Id of the BulkEmail in question. 
It is best to do so no later than 7 days after the initial delivery, as this will allow us to examine the logs before they are overwritten.

Hope this helps!

How can we resolve this?

Show all comments
Studio_Creatio
8.0

Hi all, 

On case page we have - Target resolution date (DateTime), Registration date(DateTime) and SLA days (integer) fields. Formula for Target Resolution date = Registration Date + SLA days. 

But the target resolution date is correctly showing the date part but not the time part for time part it is always showing the 12:00 AM. I have tried using BP, writing script task, writing source code, but nothing is working. Can anyone please help.

Many thanks.

Like 0

Like

1 comments

Hello,

We reviewed the described behavior and found that the value is most likely being converted to a Date type at some point in the process. When this occurs, the time portion is removed, and the value is saved as 12:00 AM (midnight).

To preserve both the date and time, we recommend using a DateTime expression and adding the required number of days with the AddDays method instead of using date-only arithmetic.

Please try the following expression: [#Registration date#].AddDays(Convert.ToDouble([#SLA days#]))

This approach adds the SLA days to the original DateTime value while preserving the time component.

Show all comments
printables
report
MS_Word_report_in_Creatio
FreedomUI
Studio_Creatio
8.0

Hi,
I would like to know whether there is a way to both download a printable report and attach it to a record simultaneously in Creatio Freedom UI.

Currently, I am aware of two separate approaches:

  1. Using the default functionality to generate and download the printable report.
  2. Using a business process to generate the report and attach it to the record's Attachments section.

However, my requirement is to perform both actions at the same time—when the user generates the report, it should be automatically attached to the record while also being downloaded to the user's machine.

Has anyone implemented a similar solution or can suggest an approach to achieve this?

Any guidance would be greatly appreciated.

Thank you,

Like 0

Like

2 comments

Hi Satyam,

Yes, this can be achieved, but you need to handle both actions in one custom flow.

The recommended approach would be:

  1. Generate the printable report using a business process or custom backend service.
  2. Save/attach the generated report to the record’s attachment object, for example ContactFile, AccountFile, or the relevant {Object}File schema.
  3. After the file is created and you have the generated file record Id, trigger the browser download using FileService/Download/{EntityFileSchemaName}/{fileId}.

For uploading/attaching a file manually, Creatio provides POST /FileApiService/UploadFile, where you need to pass parameters such as entitySchemaName, parentColumnName, and parentColumnValue.

So the key point is: do not only call the download service directly. First generate/save the report as a file attachment, then use the generated file Id to download it for the user.

If this needs to happen from a Freedom UI button, the button can call a custom service or process, wait for the generated attachment file Id, and then open the download URL in the browser.

smit suthar,

Hi,

Thank you for the detailed explanation.

I understand the overall approach, but I'm still a bit unclear on some of the implementation details in Creatio.

Would it be possible for you to elaborate on the following points:

  1. In the case of a Freedom UI button, what would be the recommended way to wait for the file creation and then trigger the download automatically?
  2. If possible, could you provide a simple end-to-end example (Business Process or Freedom UI implementation) demonstrating the complete flow?

A more detailed example would help me understand how these pieces fit together in practice.

Thank you for your help.

Show all comments

Hi team,

In a Creatio 8.3.4, Freedom UI remote module setup panel ([@creatio/interface-designer](cci:9://file:///n:/InstanciasCreatio/XXXXXXX/@creatio/interface-designer:0:0-0:0)), I filter attributes to show only unlimited text fields.

For this attribute:

  • `attributeName`: `NcsJsonViewerTESTDS_NcsJsonField_7d0vlhs`
  • `dataSourceName`: `NcsJsonViewerTESTDS`
  • `dataSourceAttributePath`: `NcsJsonField`
  • `entitySchemaName`: `NcsJsonViewerTEST`

Debug says:

  • `Binding detectado ... NcsJsonField`
  • `Discarded: it is not a unlimited field... NcsJsonField`, but it is!

PostgreSQL confirmation: `NcsJsonViewerTEST.NcsJsonField` is `text` with `character_maximum_length = NULL`, so the field is unlimited-length at DB level.

SELECT
  c.table_schema,
  c.table_name,
  c.column_name,
  c.data_type,
  c.udt_name,
  c.character_maximum_length,
  c.is_nullable
FROM information_schema.columns c
WHERE c.table_schema = 'public'
  AND c.table_name = 'NcsJsonViewerTEST'
  AND c.column_name = 'NcsJsonField';

 

What is the recommended DesignTime API to reliably identify unlimited text in this case?

Thanks in advance

Best regards

Like 1

Like

1 comments

Hello,
Could you please provide the steps to reproduce the configuration of this filter? Additionally, could you specify which API you are using and how you received the following message:
Discarded: it is not a unlimited field... NcsJsonField?
Thank you in advance.

Show all comments
remote_module
Remote
module
Studio_Creatio
8.0

Is it possible to run the angular app locally for develpment? I am trying to tailor the component quickly without having to compile it in Creatio. When I run 'npm start' the app fails to load with the following error: 
'ERROR Error: Remote entry with name 'sdk_remote_module_package' does not exist
   at checkRemoteName (creatio-devkit-common.mjs:1713:15)
   at bootstrapCrtModule (creatio-devkit-common.mjs:1993:13)'

Like 0

Like

2 comments

Hi Grant

You’re hitting this because a Creatio remote module is not a fully standalone Angular app.

`npm start` tries to bootstrap modules that are normally provided by Creatio runtime (including `sdk_remote_module_package`), so outside Creatio you get:

`Remote entry with name 'sdk_remote_module_package' does not exist`.

Short answer:

  • Can you run it fully local without Creatio? Usually no (not in a practical way for real component behavior).
  • The component depends on Creatio runtime (`crt`, designer context, requests, etc.).

Fast development workflow
1. Run Angular build in watch mode:
  `npm run build -- --watch`
2. Auto-copy `dist/...` to your package `Files/src/js/<YourRemoteModule>`
3. Compile only your package (not full configuration):
  `clio compile-package <YourPackage> -e <YourEnv>`
4. Hard refresh Designer (`Ctrl+F5`)

This is the fastest stable loop today for remote module development.
 

Regards,

Julio Falcón

NCS.JulioFalcon,

Thank you :)

Show all comments
Studio_Creatio
8.0
mobile
remote_module

Hi, I’ve added a custom handler to the mobile view by following the article https://academy.creatio.com/docs/8.x/mobile/mobile-development/customiz…. Everything works great, but I’ve run into a few issues:

  • I would like to make web service requests. Unfortunately, I couldn't find any equivalent to sdk.HttpClientService (from the desktop @creatio-devkit/common) inside @creatio/mobile-common. At the same time, I’m not sure how-or if it's even possible-to access the user context so I can retrieve the instance credentials and construct an authenticated request to Creatio.
  • I’m trying to read a system setting value, but it always returns null. No amount of synchronization, cache clearing, etc., seems to help. Here is the code I'm using:
const sysSettings = new sdk.SysSettingsService();
const siteUrl = sysSettings.getValueByCode('SiteUrl');
  • What is the best way to handle error logging on iOS? I tried using Logger.console('test'), but it doesn't work at all.

 

Like 2

Like

2 comments

Hello,
In order to call your service inside the mobile handler, you need to use tools like XMLHttpRequest . With it, you can call any http link, including any service you need. It can also be used to get the system setting value if you configure a specific service that will return it.
As for logs inside the handler, I don't know if Logger.console is dependent on OS, but it definitely works on Android. Perhaps you are just searching the logs in the wrong place?
 

Hi, thanks for the reply.
Inside the handler I'm using the fetch API. Generally, making requests works - I can query the Creatio instance and the requests are visible in Request.log. The problem is that they are unauthenticated. No cookies are sent with the request, so the server has no way to identify the specific user. From within the handler itself, I was also unable to read any information about the current user. I tried hardcoding authentication as Supervisor, but it seems like the Cookie header is being ignored and I keep getting a 302 redirect to the login form.

Show all comments
Studio_Creatio
8.0

Newbie Creatio Admin here. We are going live with Creatio, leaving SF, next month and I am trying to find a few options for deep diving into report and dashboard creation but am coming up short. I would love to hear your go to sites for learning and inspiration! Thanks!

Like 0

Like

1 comments

Hello,

Our academy has excellent relevant articles on these topics. 
Leaving you the links for your convenience
Dashboards basics | Creatio Academy
Customize Word reports | Creatio Academy

Have a nice day!

Show all comments
k8S
install
cloud
Studio_Creatio
8.0

Hello team!

Was wondering if there is a way or any documentation to deploy Creatio application within a Kubernetes cluster. What would be the infra requirements , steps and how can we upgrade versions?

Thanks,

Ibrahim

Like 0

Like

1 comments

Hello,

At the moment, deployment of the Creatio application within a Kubernetes cluster is being reviewed by our R&D team.

Currently, official documentation for this deployment scenario is still in progress, and there is no confirmed timeline available for its publication yet.

Once additional information becomes available, we will be happy to share updates with you.

Show all comments

Current Setup:

I am working in Freedom UI. Currently, I have a KPI called "Margin per Liter (Excl. VAT)". It is calculated via a Business Process that:

  1. Sums up the "Margin without VAT" for all orders.
  2. Sums up the "Quantity (Liters)" for all orders.
  3. Divides the first sum by the second.
  4. The Problem: The result is saved into a specific field within a single "dummy" Order record.

The Issue:

Since the value is pre-calculated and stored statically in a record, the Dashboard indicator does not react to Quick Filters (Period, Owner, etc.). It always shows the same total regardless of the filters applied on the page.

Goal:

I need the dashboard to calculate this ratio dynamically: $\sum(\text{Margin}) / \sum(\text{Liters})$. It must recalculate every time a user changes the filter (e.g., to see the margin per liter for a specific manager or last month).

Questions:

  1. How can I set up a "Ratio of Sums" in Freedom UI without using a background Business Process?
  2. Is there a way to use the "Formula" source in the Indicator widget to divide two different aggregated sums while maintaining filter context?
  3. What is the best practice for such "weighted average" metrics in Freedom UI to keep them responsive to page filters?
Like 0

Like

2 comments
Best reply

Greetings,

Thank you for your question.

We would like to inform you that, in order to achieve your goal, you may use the new beta feature 8.3.3 – Custom Metric Formulas.

To take advantage of this functionality, please add and enable the additional feature EnableFormulaAggregationInDesigner, which is not registered and is disabled by default. You can find more details in the documentation: Implement a custom additional feature.

Once this feature is enabled, you will have an additional option within the dashboard metric configuration to define the custom formula as described.

Additionally, the metric will be automatically linked to the section where it is created. As a result, when filters are applied within that section, the metric values will dynamically update accordingly.

For your reference, please see the implemented example for the “Case” section:

image.png
image.png
image.png
image.png
image.png

If you have any further questions, please respond to this email we would be happy to help.

Have a nice day!

Greetings,

Thank you for your question.

We would like to inform you that, in order to achieve your goal, you may use the new beta feature 8.3.3 – Custom Metric Formulas.

To take advantage of this functionality, please add and enable the additional feature EnableFormulaAggregationInDesigner, which is not registered and is disabled by default. You can find more details in the documentation: Implement a custom additional feature.

Once this feature is enabled, you will have an additional option within the dashboard metric configuration to define the custom formula as described.

Additionally, the metric will be automatically linked to the section where it is created. As a result, when filters are applied within that section, the metric values will dynamically update accordingly.

For your reference, please see the implemented example for the “Case” section:

image.png
image.png
image.png
image.png
image.png

If you have any further questions, please respond to this email we would be happy to help.

Have a nice day!

Daria Mudragel

Thank you very much for your answer, the information is very useful, I will definitely try to implement this.

Have a great day!!

Show all comments