Hi Expert ,

    I am trying to use Creatio api with basic authentication . I am following below links :

    https://documenter.getpostman.com/view/10204500/SztHX5Qb#46f97170-d66d-…;

    

    NotWorking in PostMan : As per documention it's not working  in postman. Stored BPMCSRF value from Response Header Cookie of Token Request and call get api with BPMCSRF / ForceUseSession  headers key with it's value .Removed cookies from get request. Send the the get request it's giving a html response without any error details.

    

    Working in PostMan : In PostMan Send Token request then send get request (https://steuler.creatio.com/0/odata/Product?$top=1) without set any Header keys it's working fine. In this scenario i can see token request response header cookie values are sending bydefault by Postman in the get request.

    NotWorking in Consol Application : As per 2nd scenario i am trying to send a Get api request with token generate Response header cookies values but it's showing html error without any error details

    NotWorking in Consol Application : As per documentation Stored BPMCSRF value from Response Header Cookie of Token Request and call get api with BPMCSRF / ForceUseSession  headers key with it's value .But showing html error without any error details.

    i have attached my screen shots for reference.From my side any configuraration need to be changed Creation envionment for that my scenario  Can you give me any proper documents which i can follow and will be worked ?

    below is my console application code :

                // Create HttpClient

                using (HttpClient httpClient = new HttpClient())

                {

                    // Create HttpRequestMessage

                    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, @"https://steuler.creatio.com/0/odata/Product?$top=1");

                    // Set request headers

                    request.Headers.Add("Accept", "application/json");

                    request.Headers.Add("ForceUseSession", "true");

                    request.Headers.Add("BPMCSRF", "YtuvyS.WPYmW5BChY5anK.");

                    // Send the request

                    HttpResponseMessage response =  httpClient.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();

                    // Check response status

                    if (response.IsSuccessStatusCode)

                    {

                        string responseData =  response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();

                    }

                 }

 

Thanks and Regards

Surajit Kundu

Like 0

Like

2 comments

I don't see in your code the call to authenticate. I assume that you're previously calling /ServiceModel/AuthService.svc/Login somewhere to get the BPMCSRF value? See https://documenter.getpostman.com/view/10204500/SztHX5Qb#46f97170-d66d-…

Note, the BPMCSRF value doesn't last forever, so it does need to be a recently obtained value. 

This article shows the complete steps for executing requests via Postman which might help: https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

Ryan

Ryan Farley,

Hi 

      Thanks for your reply . Below is my token generation code from where i have taken cookies value for my 2nd request .Before i have not attached that token generation part as these is working fine. In postman it's working fine using Cookies based authentication.In my Console application i am sending all the Cookies (BPMLOADER, .ASPXAUTH, BPMCSRF, and UserName) as a Header Key and value in further requests to Creatio services that use cookie-based authentication but it's showing Html Error ?

 static async Task<Dictionary<string, string>> TokenGenerateDictionary()

        {

            var headerCookies = new Dictionary<string, string>();                 

                using (var client = new HttpClient())

                {

                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    using (var request = new HttpRequestMessage(HttpMethod.Post, @"https://steuler.creatio.com/ServiceModel/AuthService.svc/Login"))

                    {

                        request.Content = new StringContent($"{{\"UserName\":\"ram\",\"UserPassword\":\"abcd\"}}", Encoding.UTF8, "application/json");

                        var response = client.SendAsync(request).Result;

                        var responseString = await response.Content.ReadAsStringAsync();

                        JObject responseJson = JObject.Parse(responseString);

                        int code = (int)responseJson["Code"];

                        if (code == 0 && response.IsSuccessStatusCode)

                        {

                            foreach (string setCookieHeader in response.Headers.GetValues("set-cookie"))

                            {

                                 string[] cookies = setCookieHeader.Split(';');

                                if (cookies.Length > 0)

                                {

                                    string[] keyValue = cookies[0].Trim().Split('=');

                                    if (keyValue.Length == 2)

                                    {

                                        string key = keyValue[0];

                                        string value = keyValue[1];

                                        if (!headerCookies.Keys.Contains(key))

                                            headerCookies.Add(key, value);

                                    }

                                }

                            }

                         }

                    }

                }

            return headerCookies;

        }



Request Get Operation send cookies in Header Key :

         var tokenHeaderCookiesData = TokenGenerateDictionary().ConfigureAwait(false).GetAwaiter().GetResult(); 

         string requestUri = @"https://steuler.creatio.com/0/odata/Product?$top=1";

         using (HttpClient httpClient = new HttpClient())

                {

                    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUri);

                    foreach (string key in tokenHeaderCookiesData.Keys)

                    {

                        //BPMLOADER, .ASPXAUTH, BPMCSRF, and UserName

                        if (key== "BPMLOADER" || key == ".ASPXAUTH" || key == "BPMCSRF" || key == "UserName")

                           request.Headers.Add(key, tokenHeaderCookiesData[key]);

                    }

                    HttpResponseMessage response =  httpClient.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();

                    string responseData =  response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();

                }

   



Html Error Response with status OK:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" culture="en-US">

<head><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><meta name="fontiran.com:license" content="LAXSN" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>

    Creatio

</title>

    <style>

        .font-preload {

            position: absolute;

            opacity: 0;

        }

        .font-preload-open-sans {

            font-family: "Bpmonline Open Sans";

        }

        .font-preload-open-sans-light {

            font-family: "Bpmonline Open Sans Light";

        }

        .font-preload-open-sans-bold {

            font-family: "Bpmonline Open Sans Bold";

        }

    </style>

<script type="text/javascript" src="https://steuler.creatio.com//core/8dc3ccad339641a4ecd1ecb0b57f017d/Terr…"></script>

<script type="text/javascript" src="https://steuler.creatio.com/api/ClientScript/GenerateLoginScripts"></script>

<script type="text/javascript" src="https://steuler.creatio.com//core/057665f97324038f6c7c326b6734de6b/requ…" data-main="https://steuler.creatio.com//core/0fbfa51b1de27f89696f0f8d31da5f16/Terr…" async></script>

<script type="text/javascript"></script>

</head>

<body>

    <div class="font-preload">

        <span class="font-preload-open-sans">_</span>

        <span class="font-preload-open-sans-light">_</span>

        <span class="font-preload-open-sans-bold">_</span>

    </div>

    <form name="IndexForm" method="post" action="./NuiLogin.aspx?ReturnUrl=%2f0%2fodata%2fProduct%3f%24top%3d1&amp;%24top=1" id="IndexForm">

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="+mvmSAOrSFVSNU1VvvnnAv5lt45aMHGRIkN033uMqlv/X2Fn2421RrzZayJqLBBTzwEnVTCtLeOrFnkbGP1c32c1p4dJwgJeute2MMWvNkRY1wHA" />

<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="0BFA92C5" />

    </form>

</body>

</html>

 

Thanks 

Surajit Kundu

Show all comments

How to create a new custom package in Creatio ?

I am working on the Analyst Certification

Like 0

Like

9 comments

Before creating the package set the prefix for new schemas and the package in System settings and reload the browser cache.

From the Application Hub select '+ New application', and select the Custom template.

There are a few things you need to do after creating a new package:

Set the current package system setting to the new package so that changes are saved to the new package.

See also Useful changes to make in any new development system for Creatio (formerly bpm’online) | Customer FX

Set your password in System users.

Set time zone and culture information in your profile.

 

 

 

Thanks, I will go through the steps and let you know.

 

Hello,

 

We recommend you take a look at the article below:

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

 

There you will find the whole process of creating the custom package.

Whoahh!! Many thanks!

 

Gareth Osler,

Before creating the package set the prefix for new schemas and the package in System settings and reload the browser cache. I do not see it in "System Settings"...

Hello Gareth, I cannot find this "System setting-prefix for new schemas"

André Thouin,

In system settings search for:

Prefix for schemas and packages name

SchemaNamePrefix

André Thouin,

Thanks @gareth

Thanks @mariia

Show all comments

Hello,

today i did a process publishing on our test instance (version 8.1.2.3914),

an error showed up after that :

[{"Line":98,"Column":91,
"ErrorNumber":"CS0618",
"ErrorText":"'SecureActivityEmailSender' is obsolete: 'Use SecureActivityEmailSenderBase class. The current class is left for backward compatibility'",
"IsWarning":true,
"FileName":"D:\\App\\*****\\Terrasoft.WebApp\\Terrasoft.Configuration\\Autogenerated\\Src\\ActivityEmailMessagePublisher.EmailMessagePublisher.cs"},
{"Line":28,
"Column":92,
"ErrorNumber":"CS0618",
"ErrorText":"'SecureActivityEmailSender' is obsolete: 'Use SecureActivityEmailSenderBase class. The current class is left for backward compatibility'",
"IsWarning":true,"FileName":"D:\\App\\******\\Terrasoft.WebApp\\Terrasoft.Configuration\\Autogenerated\\Src\\EmailSendService.CrtNUI.cs"}]

The error is about EmailSendService and i'm surprised as my process do not send any email..

 

Should i worry about this ?

 

Regards,

Patrice

 

Like 0

Like

2 comments
Best reply

Hello Patrice,

 

The message you have received is not an error but a warning about the method's obsolescence (it means that the method will be removed in future versions). This warning appeared as a result of the schemas' compilation, which started because of publishing the process. However, for the current version of the application, these warnings do not pose any threat, and the compilation can be considered successful.

 

The "SecureActivityEmailSender" method is used for generating a token when sending an email. Inspite of the fact that you didn't use it in the specific process, the warning might be triggered by the other schemas that were affected during the compilation process.

 

Best regards,

Natalia

Hello Patrice,

 

The message you have received is not an error but a warning about the method's obsolescence (it means that the method will be removed in future versions). This warning appeared as a result of the schemas' compilation, which started because of publishing the process. However, for the current version of the application, these warnings do not pose any threat, and the compilation can be considered successful.

 

The "SecureActivityEmailSender" method is used for generating a token when sending an email. Inspite of the fact that you didn't use it in the specific process, the warning might be triggered by the other schemas that were affected during the compilation process.

 

Best regards,

Natalia

Thank you Natalia,

 

i was a bit worried as i never encountered this kind of obsolescence messages in Creatio !

 

Best regards,

Patrice

 

Show all comments

Hello,

is it possible to make a printout for all selected activities (not only one records), where all images from attachments are printed under each activity?

Field sales users want to generate visit report in word or pdf document

 

Thank you!

Vladimir

Like 1

Like

1 comments

Hello!

 

Reports can be modified via our BPM tools in various ways. The element that might help with your issue is the Process file process element. 

More about using it in your reports you can find in the article: https://academy.creatio.com/docs/8.x/no-code-customization/bpm-tools/pr…

 

We hope this helps!

Show all comments

I'm trying to set a page rule that sets the value of a date field. This was possible in classic UI using a formula value but I can't seem to enter it the same in Freedom UI. 

 

The scenario is simple, if field #1 has a value, the page rule timestamps the current date time in field #2. 

 

Can anyone help instruct on how to do this?

Like 0

Like

1 comments

According to the roadmap this is coming soon. It mentions ability to set things in rules such as:

Set the following field values: system setting, system variable, value from another field.

It's listed as Q1 2024 - however, we're already in April. Not sure which specific version. 

Ryan

Show all comments

Hi all,



i read about using installment plan template in Order page from sales tools documentation. i use crm bundles demo in freedom ui for the environment. i found the pre template lookup but can't find the selection/dropdown to use it in "installment plan" detail. anybody know how to use this pre template in order form page (installment plan detail)?

Like 1

Like

1 comments
Best reply

Hello,

 

We have declined to incorporate this functionality within the Order and Contract Management application. The utilization of this detail within the application is accompanied by existing logic, and as of now, there are no plans to integrate it.

 

However, I will register such idea.

Hello,

 

We have declined to incorporate this functionality within the Order and Contract Management application. The utilization of this detail within the application is accompanied by existing logic, and as of now, there are no plans to integrate it.

 

However, I will register such idea.

Show all comments

Hi Everyone,

 

We have to automate our leads process from our website. We have an Inquiry from on website and we want to automate that form on Creatio when ever that form is filled, that lead should be created on Creatio? I want to know if that is possible and whether I need any coding for that or if it can be done with No-Code? Kindly let me now steps. There are only like 5 simple fields, nothing complex.

Like 0

Like

3 comments

Hello!



You can use a landing page for this task. You will need to add the automatically generated integration code to your website form. How to do this is described in detail here:



https://academy.creatio.com/docs/7-17/user/crm_tools/landing_pages_and_…



Best regards,

Anton

Anton Starikov,

HI Anton,

 

Thanks for reply. Is this Landing page module available in Sales creatio? 

Hassan Tariq,

Yes, just add the section to the workplace

Show all comments

We use Creatio 7.18.

I am trying to setup a FastReport as part of which I am trying to populate a table with Reportees of the current user.

I used below to get current user id, but it returns “Supervisor” user (reference - https://community.creatio.com/questions/terrasoftsysvaluecurrentuservalue-equivalent-c).

Can anyone help with the correct way to get Current user Id in Source Code for Data Provider class to setup FastReport?

 

var appConnection = HttpContext.Current.Application["AppConnection"] as AppConnection;

var currentUser = appConnection.SystemUserConnection.CurrentUser;

var userId = currentUser.Id;

Like 0

Like

2 comments

App connection always returns "Supervisor" since this user is a system operations user. If you need to get the current user who manually triggered report generation and the custom code you need to use the same approach but with using UserConnection instead of appConnection (as Ryan described in his first example):

var currentUser = UserConnection.CurrentUser;
var userId = currentUser.Id;
var userName = currentUser.Name;

Or maybe I didn't understand the required result:)

Oleg Drobina,

My bad! I misunderstood his statement. Since I was trying it out in a source code schema and not a script task, I only tried using the 2nd method. The 1st method correctly returns the required information. Thanks for pointing that out, Oleg!

Show all comments

Hi! Is it possible to handle exception in a process? For example if there is an error on "delete something" step occur we proceed to next step without stoping all process.

Like 0

Like

1 comments
Best reply

Dear Andrii,

Unfortunately, we cannot handle exceptions with standard tools in actual versions of applications. Thank you for bringing this aspect to our attention. We will create an idea for the development team so they can consider implementing such functionality in future versions of our application.

If you're talking about custom C# code and Script tasks, you can use basic try/catch constructs there to handle exceptions.

To track errors in business processes, you can create a new business process. It is described on the Creatio Community at the following link: https://community.creatio.com/questions/exception-handlng-business-procecss.

Thank You!

Dear Andrii,

Unfortunately, we cannot handle exceptions with standard tools in actual versions of applications. Thank you for bringing this aspect to our attention. We will create an idea for the development team so they can consider implementing such functionality in future versions of our application.

If you're talking about custom C# code and Script tasks, you can use basic try/catch constructs there to handle exceptions.

To track errors in business processes, you can create a new business process. It is described on the Creatio Community at the following link: https://community.creatio.com/questions/exception-handlng-business-procecss.

Thank You!

Show all comments

Hello,

 

we use Web service element in our business process, where we set several parameters. For logging purposes we need to get JSON of request body, but there is no such option (I see only Response body)



How can we get request body from the Web service element?



Thanks.

Vladimir

Like 0

Like

3 comments

Hello,

Unfortunately, Web service element doesn't directly expose the request body for logging within the element itself. 

 

Hello, 

 

and no hidden workaround? Or any methods, which are used from request body generation, that we could use as well?



Kind regards,

Vladimir

Hello Vladimir,



You can try to use Telerik Fiddler tool to capture requests that are being sent.

Show all comments