Hi,
I have a template ready for sending emails in Creatio. The email contains values taken from previously filled fields. Now, I would like to know the steps to send this email automatically when clicking the "Send Email" button.

Can someone guide me on how to configure the process to ensure the pre-filled values from the fields are included when the email is sent? Any help with this would be appreciated!

Could someone guide me on:

  1. How to upload or store the email template in Creatio?
  2. How to configure the button so that clicking it will send the email using the pre-filled template?

Any assistance with this process would be highly appreciated!

I'am using creatio 8.2.2

Thanks in advance!

Like 0

Like

3 comments

Dear Muhammad,

You can find more information on how to work with templates in the following Creatio Academy articles:
https://academy.creatio.com/docs/8.x/creatio-apps/creatio-basics/communications/work-with-message-templates
https://academy.creatio.com/docs/8.x/creatio-apps/products/marketing-tools/email-marketing/classic-ui/email-templates/create-an-email-template

Please note that macros will only appear when the template is opened from its corresponding source object. This means that if you send an email via the Communication panel, only templates with the source set to Activity (or those with no source) will be available — as all emails are stored in the Activity object.

If you'd like to use macros from another object, you'll need to add the MessageComposer element to the page where these macros are intended to be used.

image.png

Have a great day!

Hi Alina Yakovlieva,
 

Thank you for your advice, but I’m still confused to implement it. Can I use the button to trigger the action that runs the business process, where the business process reads data and sends an email, as shown in the image below

config read data

Config send email ( For the 'From' field, it should be filled with the company email (how do I insert the company email?), while for the 'To' field, it should send the email to the value that was previously read.)

and the button

 

 

Muhammad Rizky,

Hello,

So you can use the button to trigger a business process.

For the 'From' field, it should be filled with the company email (how do I insert the company email?)

I see that you have chosen to get the email from the system settings. So to insert the email in the business process you need to fill in the system settings by selecting one of the mailboxes already added to the system:



You also filled in that field correctly if you want that field to be filled with a value from the collection in which you are reading the Gengerate Document. However, I recommend making sure that the sorting condition returns the record you need and the field with the required email:

Show all comments

Hello Creatio Community!

Is it possible to configure record permissions in the Case object based on the existing field Assignee Group?

The goal is to filter the list of cases according to user roles. For example, if a user belongs to Role A, only the cases assigned to Role A should be visible to them.

Like 0

Like

1 comments

Hello!

You can configure this behavior using a Business Process.

The process should first read the "Assignee Group" value from the case record. Then, using the "Change access rights" system element, you can define which access rights to grant or revoke based on your business logic.

Please see more details in the Creatio Academy article: https://academy.creatio.com/docs/8.x/no-code-customization/category/case-designer-elements-reference

 

Have a nice day!

Show all comments

Dear mates,

We're having display issues with the timelines in the accounts and contacts sections, apparently related to JavaScript errors.
I tried deleting and restoring the timelines on the section pages, but the JavaScript error reappears.
Here's the errors: 

1-Error decoding value from JSON string
2-Cannot read properties of null

Freedom timeline errors

Every time we click on an object in the timeline this error appears and the objects in the selector are not selected.

Does anyone have any ideas on how to fix this problem?

Thank you !
Nicolas

Like 0

Like

1 comments

Hello,

Please register this issue with our Support team directly via support@creatio.com so we could analyze it properly.

Show all comments

Hi all,

I'm looking for a reporting tool for Creatio, where i can also use very complex queries. I'm user to work with tools like Microsoft reporting Services or Chrystal reports.  We're working in the cloud, and i don't find a tool that is comparable to those tools.  How do you all create such reports, and run complex queries  

Like 0

Like

3 comments

Hello!

 

In this case, we recommend exploring the Creatio Marketplace, where you can find a variety of reporting solutions that may meet your requirements, including those supporting advanced analytics and complex data processing.

 

Please follow the link: https://marketplace.creatio.com/catalog?search=report&check_logged_in=1&page=6

 

Have a nice day!

Sadly, no such reporting option currently exists for Creatio. We typically with extend the Word printables using a lot of custom macros for data retrieval and the use of views and have the complex logic performed in the view. For now, that is the best option.

Does anybody has any experience with the Power BI connector? I don't know Power Bi, but i was always under the impression that is was something like Reporting Services....

 

Show all comments

I am trying to open a document in MS Word desktop (like the online version of viewing MS Word can). This is possible by applying a prefix to the document URL on MS Teams. My code in the page already works good:

var docUrl = await request.$context.PDS_UsrColumn1_u8ye1ig;
const wordUrl = `ms-word:ofe|u|${encodeURIComponent(docUrl)}`;

But using the wordUrl variable on a Webinput field, or even a button.click event doing a window.location.ref always results in Creatio still encoding the Url. Creatio always adds the console message:

Launched external handler for 'ms-word:ofe%7Cu%7Chttps%3A%2F%2Fcompany.sharepoint.com%2F%yadayadayada

where it should be ms-word:ofe|u|https://

Does someone know how to bypass the encoding for a specific handler or for this page?

Like 0

Like

6 comments

Can you share the complete handler code and explain how have you disabled the "To protect you from unsafe content office has blocked opening this file" error message?

Sure, here is the handler. It already opens MS Word, but because of the safe url encoding it won't open the correct document... 

handlers: /**SCHEMA_HANDLERS*/[
            {
                request: "usr.PushButtonRequest",
                /* Implementation of the custom query handler. */
                handler: async (request, next) => {
                    this.console.log("Button Open in MS Word pushed...");
                     var docUrl = await request.$context.PDS_UsrColumn1_u8ye1ig;
                      const wordUrl = `ms-word:ofe|u|${encodeURIComponent(docUrl)}`;

                    // scenario 1: use window.location.href
                    //window.location.href = wordUrl;

                    // scenario 2: use the online found solutioon to add a link with a click
                    const link = document.createElement('a');
                    link.href = wordUrl;
                    link.target = '_blank';
                    link.rel = 'noopener noreferrer';
                    document.body.appendChild(link);
                    link.click();
                    document.body.removeChild(link);
                    
                    this.console.log("MS Word Url set to: " + wordUrl);
                    /* Call the next handler if it exists and return its result. */
                    return next?.handle(request);
                }
            },
        ]/**SCHEMA_HANDLERS*/,

Bas Kroes,

well I get the same URL in both cases (using a regular text field and the web link input) and in both scenarios I get this popup:

Maybe I am testing in the wrong manner?

Oleg Drobina,

It looks like it is a browser issue. I am using Ms Edge. What are you using?

Bas Kroes,

I am testing in Chrome, but I get the same error in Edge.

That's odd indeed using the same code 🤔

But your url did not get unwanted modified?

Show all comments

Hello, community, I'm new to Creatio. My client wants the printed order document to have a consistent order, meaning the products added to their order in the itemization area should be: tools at the top, services at the bottom.

Example:
Item 1 - cutter, 1 piece, amount 10
Item 2 - hammer, 1 piece, amount 3
Item 3 - shipping service, 1 piece, amount 10 (always at the bottom)

When capturing and sorting the products in the order, they get jumbled up, and the report doesn't respect the order.

Is there a way to tell Creatio to respect and sort the products and services in my printed report?

Like 0

Like

1 comments

Hello,

The sort column should be presented in the template to keep the sort order in the report and on the UI; in other words, the issue occurs because you have not added the column by which the fields are sorted on the UI to the template of your report. 

When the report is generated, the system ignores all columns that are not presented in the template, so data cannot be sorted by them. 

Our responsible R&D team is already aware of the described behavior and has registered the corresponding task to implement the functionality in the upcoming versions of the application.

Show all comments

Hello community,

I have developed the form page "A" that uses the default Crt.MinLength validator.

I have created a replacement form for form page "A", is it possible to override the inherited Crt.MinLength validator rule?
I need to change the length parameter.

Like 0

Like

1 comments

Hi,

Tested in the local app - create the very same validator (with the same name) in the schema that is a child for your schema and add your logic there. As a result the validator fgrom from the child schema will be called.

Show all comments

Hello,

I have configured the DCM to change states after executing the steps of a process. According to my observations, the state does change, but it does not do so automatically (I have to manually refresh the page to see this change). When I check the process logs, I can see that the process changes to a canceled state. I am not sure what else to review apart from the process, as everything seems to be fine.

Additionally, I am including reference images of the process and the process logs to help illustrate the issue.

 

 

Any suggestions on what might be causing this issue?

Thank you!

 

Like 0

Like

1 comments

Hello, 

This is the standard (OOTB) behavior of Cases.
If you change the stage of a record that initiated a business process — whether from within the business process itself, its subprocesses, or the record — all tasks, processes (including subprocesses), open pages, etc., will be canceled.

More detailed information can be found here:
Case Designer workflows

If the issue is more complex, please create a support request by emailing support@creatio.com.

Regards,
Orkhan

Show all comments

While configuring OAuth authentication to call external web services, I cannot find a way to set grant_type=client_credentials. Is there a way to make configuration use client_credentials instead of authorization_code grant_type?

I also tried to configure a web service to directly call the IdP access token endpoint passing the grant_type I need, but I was not able to find a way to send the body content-type in application/x-www-form-urlencoded format.

Do you have any suggestions to get the OAuth token using client_credentials?

Like 1

Like

1 comments
Best reply

Greetings!

There’s no way to get this using the basic method - it doesn’t support sending form requests.
You’ll need to write a task script for that.

It requires writing C# code that uses WebRequest to send the request.
For example:

public bool Execute(UserConnection userConnection)
{
    var tokenUrl = "https://your-creatio-instance.com/connect/token";
    var clientId = "your_client_id";
    var clientSecret = "your_client_secret";
    var request = (HttpWebRequest)WebRequest.Create(tokenUrl);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.Accept = "application/json";
    var postData = $"grant_type=client_credentials&client_id={HttpUtility.UrlEncode(clientId)}&client_secret={HttpUtility.UrlEncode(clientSecret)}";
    var data = Encoding.UTF8.GetBytes(postData);
    try
    {
        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }
        using (var response = (HttpWebResponse)request.GetResponse())
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            var responseText = reader.ReadToEnd();
            var tokenResponse = JsonConvert.DeserializeObject<OAuthTokenResponse>(responseText);
            // if you want you can do something with tokenResponse.access_token            
            return true;
        }
    }
    catch (WebException ex)
    {
        if (ex.Response != null)
        {
            using (var reader = new StreamReader(ex.Response.GetResponseStream()))
            {
                var errorText = reader.ReadToEnd();
                // Here also you can log the error or display it
                Console.WriteLine("OAuth error: " + errorText);
            }
        }
        else
        {
            Console.WriteLine("WebException without response: " + ex.Message);
        }
        return false;
    }
}

Regards, 
Orkhan

Greetings!

There’s no way to get this using the basic method - it doesn’t support sending form requests.
You’ll need to write a task script for that.

It requires writing C# code that uses WebRequest to send the request.
For example:

public bool Execute(UserConnection userConnection)
{
    var tokenUrl = "https://your-creatio-instance.com/connect/token";
    var clientId = "your_client_id";
    var clientSecret = "your_client_secret";
    var request = (HttpWebRequest)WebRequest.Create(tokenUrl);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.Accept = "application/json";
    var postData = $"grant_type=client_credentials&client_id={HttpUtility.UrlEncode(clientId)}&client_secret={HttpUtility.UrlEncode(clientSecret)}";
    var data = Encoding.UTF8.GetBytes(postData);
    try
    {
        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }
        using (var response = (HttpWebResponse)request.GetResponse())
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            var responseText = reader.ReadToEnd();
            var tokenResponse = JsonConvert.DeserializeObject<OAuthTokenResponse>(responseText);
            // if you want you can do something with tokenResponse.access_token            
            return true;
        }
    }
    catch (WebException ex)
    {
        if (ex.Response != null)
        {
            using (var reader = new StreamReader(ex.Response.GetResponseStream()))
            {
                var errorText = reader.ReadToEnd();
                // Here also you can log the error or display it
                Console.WriteLine("OAuth error: " + errorText);
            }
        }
        else
        {
            Console.WriteLine("WebException without response: " + ex.Message);
        }
        return false;
    }
}

Regards, 
Orkhan

Show all comments

Hello Community,

I'm working on a login page and want to make the password field secure by hiding the input characters (so that they appear as "**" or dots).


What is the best way to do this in Freedom UI?

Any help or code examples would be appreciated. Thanks in advance!

Like 0

Like

1 comments

Open the code for the page and locate the Password field in the viewConfigDiff. Change the line: 

"type": "crt.Input"

To the following: 

"type": "crt.PasswordInput"

Ryan

Show all comments