Hello everyone,

 

Could anyone share the link to the self-assessment cases that can help me prepare for the Creatio Analyst Certification Test?

 

I would really appreciate your help!

 

Thank you!

 

Juan Carlos

Like 0

Like

3 comments

The link to the self-assessment alternative answer questions is here, Certification & Tests | Creatio Academy.

 

There are no practical assignments that you can practice in advance.

Thank you, @Gareth Osler! 

Should I select Sales, Marketing, or Service? 

I just completed the CREATIO ADMINISTRATION AND CONFIGURATION guided training.

Should I select Sales, Marketing, or Service? 

That depends on which Creatio product you wish to develop "technical skills and expertise" in.

 

Show all comments

Can anybody help me configure Notes and Attachments element in Form Page designer?

Like 0

Like

2 comments

Hello community,

 

I'm trying to use terrasoft.axd to download an image that is loaded as a system setting.
I am using the following query string /terrasoft.axd?s=nui-binary-syssetting&r=Glbxxx
where Glbxxx is the system setting code.
I don't understand why some calls return the correct image and others return a http error 401 (access denied).

Like 0

Like

2 comments

Hello. 

The 401 Unauthorized error you are encountering is not related to access rights (Access Denied) but rather to session authentication. This happens because your session expired or was not active at the moment you made the request. As a result, the system does not recognize your authentication and returns a 401 Unauthorized response. 

This is not an issue with the terrasoft.axd endpoint itself, but rather an authentication problem. We recommend checking whether your session is still active when making the request and re-authenticating if needed.

 For more details, you can refer to the official HTTP 401 documentation: MDN - 401 Unauthorized

Best regards,
Antonii.

Hello Antonii,

In the Creatio login page the logo in the top is downloaded using the following link 
https://xxx.creatio.com/terrasoft.axd?s=nui-binary-syssetting&r=LogoImage"
when I navigate to the login page the user doesn't have an active session, so could you explain how it works?

 

Show all comments

Hello Everyone,

 

I want to implement a functionality on a web page where a Phone Number field is used to retrieve customer data. When a phone number is entered and submitted:

 

  1. If a matching customer record exists in Creatio, the page should automatically populate with the customer’s details.
  2. If no record is found, a new customer record should be created in Creatio.
  3.  

Is this functionality achievable? Any guidance would be appreciated!

Thanks in advance.

Like 0

Like

4 comments

You’d have to create the webpage using Creatio’s OData or DataService API to read/retrieve the data to accomplish this. 
 

Any idea if this can be implemented in NoCode with the new landing page builder of Creatio 8.2.2 ? 😊

Otherwise @Creatio --> a guidance on this matter would be great  (Based on phone number or email ;) ) ! 

Damien Collot,

It is not. The new landing page designer is basically just a visual designer to generate the html. There is an optional feature you can enable to publish the html, which basically uploads the html to a free landing page host (can’t remember which one at the moment)

:(

Show all comments

How can I capture the newly changed field value before saving a record in a crt.SaveRecordRequest in Creatio Freedom UI? Currently, I am getting the old value instead of the new one.

Like 0

Like

4 comments

You can just retrieve them as below, which will get their current value at the time of the save. 

const val = await request.$context.AttributeName;

Alternatively you could use a change request handler, which gives you both the new and old values as properties of the request. See https://customerfx.com/article/responding-to-an-event-when-a-field-is-changed-on-a-creatio-freedom-ui-page/

Ryan

Ryan Farley writes:

You can just retrieve them as below, which will get their current value at the time of the save. 

const val = await request.$context.AttributeName;

i ' m Querying Data Using Filter Conditions via the Model Class in the save handler request . that s whey i only get the old value..

 

How can i use the change field event request handler in the save request handler??

If you are looking into the direct way to get changed attributes values in the SaveRecordRequest - there is none documented on our side. But you can use HandleViewModelAttributeChangeRequest where request has the oldValue and value properties, save the original values of needed attributes into the separate parameters and use these parameters in your task.

Show all comments

Full requirement is 
 


Have 4 widgets and Global Area

Each Widgets calls behind the scene API with one key that is present in the global Area

Present that data in the widget

Now each widget can be consider as Page -- 

Now how easily create Page which invokes API and dispaly -- if API is returning 10 or so parameter do we need to create manually the page and have items and map items to API return value

Like 0

Like

5 comments

In order to display the result of the API call on the widget you will have to create the custom widget and implement the API call for retrieving necessary data in its source code. The key from Global area that will be used for calling the API you can send to your custom widget as a parameter. Also in custom widget configuration you will have to define "items" list that will represent the structure of the data you want to display. When the API call returns the result you will have to parse it and map to the corresponding columns in widget ViewModel.

You can find the detailed explanation and the example of custom widget implementation in the following article
https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/8.1/platform-customization/classic-ui/dashboard-widgets/examples/add-a-dashboard-widget

Hi thanks 

Widget is more of data view (list / form) 
Page will not have any backend data connected

Currently it's not possible to display API call result in List component on the page.

 

If you want to display API call result on the page you can add the custom attributes to your page, save the parsed response there and then bind the attributes to the labels on the page to make it visible.

 

Here is the example of the attribute:

 

viewModelConfigDiff: /**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/[
...
	{
		"operation": "merge",
		"path": ["attributes"],
		"values": {
			"MyAttrubute": { "value": "" }
		}
	}
]/**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/

 

and how you can set its value using the response from API call:

 

handlers: /**SCHEMA_HANDLERS*/[
	{
		request: "crt.HandleViewModelResumeRequest",
		handler: async (request, next) => {
			await next?.handle(request);       
			const url = 'https://open.er-api.com/v6/latest/USD';
			fetch(url).then(response => {
   				if (!response.ok) {
					return Promise.reject('Failed to load data: ' + response.statusText);
				}
 				return response.json();
			}).then(data => {
				request.$context.MyAttrubute = 'Rates: '+ JSON.stringify(data.rates);
			}).catch(error => {
				console.error('Error:', error);
			});
		}
	}
]/**SCHEMA_HANDLERS*/

 

 

Also you can find some useful information in these articles:

https://customerfx.com/article/using-custom-attributes-on-a-creatio-freedom-ui-page/

https://customerfx.com/article/binding-data-to-labels-on-a-page-in-crea…

THANKS -- wish there is way to invoke a business process with UI page value passed as parameters 

One question for the above method with handler the API call will be made from the client end -- wanted it to be done from server end (this way we can whitelist creatio iP range and only allow calls from those servers only)

 

Show all comments

I have a business process calling some subprocesses, and it should then open a new record page.  but for some reason, the page doesn't open, and the process is left in the running state. does anybody know what can prevent opening a page?

Like 0

Like

2 comments

Check the start of the process (select the green start where the process begins) and make sure it does not have the "run in background" option checked. 

I've checked that, and it's not checked. I did some further analysis, and the record is created and i can open it, it only doesn't want to open during the process flow. Furthermore, if I run the process under my colleague's credentials, the record does open. So, one would think it's a permission problem, although we both have the same permissions, we both have the system administrator role, and i can open the record 'manually'...

Show all comments

Hi Creatio Community,

 

I am looking to consume my own or an external API that returns a JSON response and embed an IFRAME inside a Creatio Freedom UI page to display the relevant data.

 

My Goal:

Call an API that responds with JSON data.

Display the API response inside an IFRAME in Freedom UI.

Ensure the IFRAME updates dynamically based on API data.

  •  

My Questions:

  1. What is the best way to embed an IFRAME inside a Freedom UI page?
  2. How can I dynamically set the IFRAME's src based on API response data?
  3. Are there any security or CORS restrictions I should be aware of when using an external API?

     

If anyone has experience implementing this in Freedom UI or has sample configurations, I'd love to hear your insights!

 

Thanks in advance!

Like 0

Like

1 comments
Best reply

You can see an example of embedding an IFRAME and setting the src of the IFRAME dynamically here: https://customerfx.com/article/embedding-an-iframe-on-a-creatio-freedom-ui-page/

However, an IFRAME cant just display data from an API. An IFRAME simply embeds another page, it would be the responsibility of the page you're embedding to retrieve and display the API data. 

You could however, use a similar approach to the article for creating an IFRAME and just have that component retrieve the API data and render out HTML as needed. Alternatively, you could create a full Angular component that retrieves and displays the API data, which is likely a better route anyway. See https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/front-end-development/freedom-ui/remote-module/implement-a-remote-module/overview 

As for CORS restrictions, that would be something imposed (or not) by the API, not Creatio.

Ryan

You can see an example of embedding an IFRAME and setting the src of the IFRAME dynamically here: https://customerfx.com/article/embedding-an-iframe-on-a-creatio-freedom-ui-page/

However, an IFRAME cant just display data from an API. An IFRAME simply embeds another page, it would be the responsibility of the page you're embedding to retrieve and display the API data. 

You could however, use a similar approach to the article for creating an IFRAME and just have that component retrieve the API data and render out HTML as needed. Alternatively, you could create a full Angular component that retrieves and displays the API data, which is likely a better route anyway. See https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/front-end-development/freedom-ui/remote-module/implement-a-remote-module/overview 

As for CORS restrictions, that would be something imposed (or not) by the API, not Creatio.

Ryan

Show all comments

I'm installing Creatio 8.2.2 Studio MSSQL, but after everything is done, I get an error when logging in

 

Error: System.Exception: Library e_sqlite3 not found

 

https://prnt.sc/ds1ZddIu8vdx

Like 1

Like

3 comments

According to the post below, it could be that you need to possibly modify the permissions of the folders under Terrasoft.WebApp. See https://community.creatio.com/questions/error-logging-local-deployment-creatio

Ryan

Ryan Farley,

Still getting the same error, i think that is different case maybe

System.Exception: Library e_sqlite3 not found\r\nplat: win\r\nsuffix: DLL\r\npossibilities (3):\r\n

Ryan Farley,

 

Ahmad Bagus Ariyanto,

 

Tomasz Sawicki,


 

Greetings!
 

The error you're encountering is related to your system being unable to find or load the e_sqlite3 library. This can be caused by several reasons. Please note that this issue is not related to the Creatio system itself but rather to a Microsoft component.


This article might help you: Microsoft.Data.Sqlite library 'e_sqlite3' not found:

https://stackoverflow.com/questions/65750542/microsoft-data-sqlite-library-e-sqlite3-not-found
 

Below are a few steps that may help resolve the issue (please note that these are general recommendations, and since the issue is related to Microsoft components 
https://www.nuget.org/packages, you might also find assistance on forums or by contacting Microsoft support):


1. Make sure the e_sqlite3 library is present.
 

2. Install or update the SQLitePCLRaw.bundle_e_sqlite3 package. You can do this via the NuGet Package Manager using the following command: 
 

Install-Package SQLitePCLRaw.bundle_e_sqlite3

https://www.nuget.org/packages/SQLitePCLRaw.bundle_e_sqlite3/
 

3. Ensure that your target platform is compatible with the library. For example, if you're building for x86, make sure you’re using the correct version of the library (x86 or x64).
 

Installing or updating the package via command line (cmd):

1. Open the command prompt:  
On Windows, press Win + R, type cmd, and press Enter.

2. Navigate to your project directory: Use the cd command to change to the folder where your project is located. 

For example, cd path\to\your\project

3. Install or update the package: If you have NuGet CLI installed, you can run: 

nuget install SQLitePCLRaw.bundle_e_sqlite3 

However, if you're using .NET Core or .NET 5/6/7, it’s recommended to use the dotnet CLI instead: 

dotnet add package SQLitePCLRaw.bundle_e_sqlite3 

This command will automatically add the package to your project and update the .csprojfile.


Example commands:
 

1. Navigate to your project directory:
 cd C:\Projects\MyApp


2. Install the package: dotnet add package SQLitePCLRaw.bundle_e_sqlite3


After successful execution, dotnet will download and install the package. If everything goes well, you’ll see a message confirming the package has been added to your project.

Regards,
Orkhan

Show all comments

Hello,

 

I have a master record and a detail where I allow inline editing. Making changes on the detail triggers an update on the master record. Because the table behind the master record has live updates, the changes are immediately reflected on the master record. 

All that logic works fine. The issue I have is that if the user makes changes to the master record and then changes to the detail (like adding a new detail, deleting or editing an existing one,) the changes on the master record are not saved,.

Is there any way to save the master record when the user saves the detail changes?

Thanks,
Jose

Like 0

Like

1 comments
Best reply

Hello,

Thank you for your request. Unfortunately, it is not possible to change this behavior using custom methods.
 

As a workaround, you can achieve this using development methods.

To achieve this you can to implement custom handlers for two requests:


1. When saving changes in the detail list (crt.SaveRecordsRequest)

First, execute the default logic for saving the detail records.

Then, trigger crt.SaveRecordRequest to ensure that the master record is also saved.
 

Be careful not to confuse the requests—crt.SaveRecordsRequest is for saving multiple records, while crt.SaveRecordRequest is for a single record.
 

2. When deleting records from the detail list (crt.HandleModelEventRequest)

Execute the default logic first.

Then, check if request.modelEvent.type === 'delete'.

If it is a delete operation, trigger crt.SaveRecordRequest to save the master record as well.

Hello,

Thank you for your request. Unfortunately, it is not possible to change this behavior using custom methods.
 

As a workaround, you can achieve this using development methods.

To achieve this you can to implement custom handlers for two requests:


1. When saving changes in the detail list (crt.SaveRecordsRequest)

First, execute the default logic for saving the detail records.

Then, trigger crt.SaveRecordRequest to ensure that the master record is also saved.
 

Be careful not to confuse the requests—crt.SaveRecordsRequest is for saving multiple records, while crt.SaveRecordRequest is for a single record.
 

2. When deleting records from the detail list (crt.HandleModelEventRequest)

Execute the default logic first.

Then, check if request.modelEvent.type === 'delete'.

If it is a delete operation, trigger crt.SaveRecordRequest to save the master record as well.

Show all comments