Hello,

I am trying to add the a currency lookup column to the country object, as it will be very helpful a specific use case we have to be able to know which countries use which currency. I have already created a new package with a replacing object to add the column, but now whenever I try to import the list of countries I get the following error:

The same error comes up when trying to bind the data via configuration as shown below:

You can see behind this message that it correctly adds the column from the replacing object I created, but it won't allow me to save it.

 

Any help in understanding what I am doing wrong would be very helpful.

 

Thanks in advance!

Like 0

Like

1 comments
Best reply

It turns out the problem was that I did not publish the new object before compilation. After publishing and compiling once more the lookup works correctly with the new column!

It turns out the problem was that I did not publish the new object before compilation. After publishing and compiling once more the lookup works correctly with the new column!

Show all comments

Problem Description
I'm trying to integrate an external .NET library (Npgsql) into my custom Creatio package to connect with a PostgreSQL database. However, I'm encountering version compatibility issues with System.Runtime.

 Current Setup
- Package Name: UsrWebServiceLog
- Target Library: Npgsql
- Current Error:
 

Assembly 'Npgsql' with identity 'Npgsql, Version=8.0.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7' uses 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Runtime'

 What I've Tried
1. Adding the library reference directly to my package project
2. Attempting to use an older version of the library
3. Adding System.Runtime reference

 Questions
1. What is the correct approach to include external .NET libraries in a Creatio custom package?
2. Are there specific version requirements or limitations I should be aware of?
3. Should the library be installed at the workspace level or package level?
4. Is there a specific location where external DLLs should be placed?

 Code Context
I'm trying to implement a web service that connects to PostgreSQL:

namespace Terrasoft.Configuration.UsrPostgressConnection
{
   [ServiceContract]
   public class UsrPostgressConnection : BaseService
   {
       // Service implementation
   }
}

Any guidance on best practices for managing external .NET dependencies in Creatio would be greatly appreciated. Thank you in advance!

 Environment Details
- Creatio Version: 8.1.3
- Development Environment: On-site
- .NET Framework Version: 4.7.2

Like 1

Like

2 comments

Hello!

 

Actually this issue occurs because Npgsql assembly (version 8.0.5) depends on System.Runtime version 8.0.0, which is a newer version than the System.Runtime the version currently referenced in your project.

 

.NET Framework 4.7.2 does not support System.Runtime version 8.0.0, as this version of System.Runtime is associated with .NET 8, which is part of the .NET (formerly .NET Core) family, not .NET Framework.

The highest System.Runtime version that .NET Framework 4.7.2 supports is within the 4.x series. .NET 8.0 and its libraries, including System.Runtime version 8.0.0, are compatible only with .NET Core 8 / .NET 8 or higher.

Kyrylo Atamanenko,

According to your suggestion, it might function if I use an older version of the Npgsql driver.

Show all comments

Hi community,

I’m working on a custom web service in Creatio that connects to an external PostgreSQL database deployed on Neon. My goal is to query data from this external database, acting like a custom ORM. However, I’m running into an issue with using the Npgsql package inside Creatio’s source code.

 

I’ve added the necessary references, but I keep getting the following error:

The type or namespace name 'Npgsql' could not be found (are you missing a using directive or an assembly reference?)

 

I’ve already added the Npgsql.dll to the Terrasoft.web/bin folder and modified the web.config to include a binding redirect for Npgsql. After restarting the IIS server and flushing Redis, I now get a 'System.Data.Common' assembly error.

Here’s the code I’m using:

using Npgsql;
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;
using System.Data;
using System.Collections.Generic;
using Terrasoft.Core;
using Terrasoft.Web.Common;
 
namespace Terrasoft.Configuration
{
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class PostgresService : BaseService
    {
        private string connectionString;
 
        public PostgresService()
        {
            // PostgreSQL connection string
            connectionString = "Host=your_host;Port=5432;Database=your_database;Username=your_username;Password=your_password";
        }
 
        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetData")]
        public List<Dictionary<string, object>> GetData()
        {
            var result = new List<Dictionary<string, object>>();
            try
            {
                using (var connection = new NpgsqlConnection(connectionString))
                {
                    connection.Open();
                    string sql = "SELECT * FROM users LIMIT 100";
 
                    using (var cmd = new NpgsqlCommand(sql, connection))
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var row = new Dictionary<string, object>();
                            for (int i = 0; i < reader.FieldCount; i++)
                            {
                                row.Add(reader.GetName(i), reader.GetValue(i));
                            }
                            result.Add(row);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"Error retrieving data: {ex.Message}");
            }
 
            return result;
        }
 
 
 
    }
}

 

Like 1

Like

1 comments

Hello,

 

Please revert all the changes and perform the setup in the following manner:

 

  1. 1) Deploy another website that will be used as a mediator between the custom PostgreSQL database and your local Creatio app.
  2. 2) Create an endpoint in this separate server that can be accessed either via POST\GET request and that can receive some parameters in the request body.
  3. 3) Create a code in this separate server that will communicate with the custom PostgreSQL server in some method (that will be used as an endpoint to be called).
  4. 4) Call this endpoint from the webservice in local Creatio app and get data from the database as a JSON string and then process it as you need in the local Creatio app.
Show all comments

Hello Creatio Community,

I am working on a project where I need to either replace or override an existing Creatio web service with a custom implementation. Specifically, I want to extend or modify the functionality of a base Creatio web service (e.g., CallServiceSchemaService) to fit my business requirements.

Here’s what I want to achieve:

  • Create a custom web service in a separate package without affecting the existing functionality of the base service.
  • Either extend the existing service (if possible) or completely replace it with my custom implementation.
  • I want to customize the behavior of how service requests and responses are handled, while ensuring that all references to the original service use my new service.

Questions:

  1. What is the best approach to achieve this in Creatio? Should I extend or replace the service, and what are the steps to do so?
  2. How can I ensure that the system references my custom service in place of the base service without breaking existing functionality?
  3. Are there any best practices or limitations I should keep in mind when implementing custom web services in Creatio?

I would appreciate any guidance, examples, or documentation that can help me with this process.

Thank you!

Like 0

Like

1 comments
Best reply

Hi,

 

We would recommend not to redo the standard web service page, but to set up a custom service.

Here are the options for configuring the integration:

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/architecture/development-in-creatio/integrations

Hi,

 

We would recommend not to redo the standard web service page, but to set up a custom service.

Here are the options for configuring the integration:

https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/architecture/development-in-creatio/integrations

Show all comments

I am trying to open a page for an object that I have created in a business process, but the page isn't showing up in the dropdown menu for the "Open edit page" process element.

 

The closest I have come to a solution is on this post from 2020, where someone said that in order for it to show up you need to use "out-of-the-box" or "standard" tools to create the page and not development tools. 

 

What are these tools that I can use to create a freedom UI page that will show up?

 

The method I used to create the page which isn't showing up is by clicking on the "+" sign on the "Pages" tab of the object editing page.

 

Edit: To clarify, I'm looking to have a modal page appear as part of the process. If I create a new freedom UI section, the auto generated page will appear in the "Open edit page" dropdown, but no other pages I create for it afterwards will.

Like 0

Like

3 comments

Hello,

Can you please provide screenshots of the configured business process?

Malika,

 

Here is a screenshot of the process element in question. I am trying to have the modal page show up instead, but I do not know what I am doing wrong.

Hello,

 

During case execution, the Open edit page case element will display the edit page of a new or existing Creatio section record. For example, open an account page to view or edit the account information as part of the case.

 

If you need to open a modal page, you can use the Pre-configured page process element.

Show all comments

Hello!
I have encountered such problems, maybe someone knows how to solve them?

There is a configured queue and a process that processes a queue item.

 

 

The first problem is that when opening the Cases_FromPage page the Case state is not loaded into the progress bar

 

 

The second problem I encountered is that it is necessary to close the page automatically and terminate the process element so that the queue element is considered processed, but this problem is solved with the help of this request:

{
	request: "crt.HandleViewModelInitRequest",
	handler: async function(request, next) {
		this.applyMethods(request.$context);
		await next.handle(request);					
	},
	applyMethods: function(context) {
		let methods = {
			closeProcessElement: async function() {
				const state = window.history.state;
				if (state && state.isProcessCardInChain && state.executionData && state.executionData.isOpened) {
					const executionData = state.executionData;
					const result = await context.executeRequest({
						type: "crt.CompleteProcessElementRequest",
						processElementUId: executionData.currentProcElUId,
						$context: context
					});
				}
			}
		};
		Ext.apply(context, methods);
	}
},

 

But another problem arose when changing the Case stage, in this case manually, the page doesn't always close.

I noticed that this behaviour on those stages where DCM has elements of activity creation.

In my case here:

When changing the stage from Waiting for Evaluation to Evaluation, the page should have closed.

The crt.CompleteProcessElementRequest request was executed.

Who knows what could be the problem?
Thanks!

Like 0

Like

1 comments

Hello,

 

Please contact our support team directly at support@creatio.com and make sure to describe each problem in a separate request so we could properly analyze and process these issues.

Show all comments

Hello,

 

In the classic UI, there is an element that allows you to send emails, chat, etc. that is towards the top of the page by default and looks like the following screenshot:

next steps communication pannel

How can I get the same functionality in Freedom UI? I am specifically asking because I am trying to use the Twilio SMS Connector app (the rightmost icon), and can't seem to figure out how you are supposed to manually send a text message in Freedom UI pages outside of this option other than building a business process from scratch. If I need to I can do so, but if there is already a solution I would prefer to use that.

 

Thanks in advance for any and all help!

Like 1

Like

1 comments
Best reply

Hello!

There are no plans to add channels in the near future, but it may be available as a Marketplace add-on in the future.

We have registered your request for implementation in future releases. However, you can still use the classic UI if Freedom doesn't meet your needs for various reasons.

If you have any additional questions, please reply to this email. We'll be happy to assist you.

Best regards,
Anton

Hello!

There are no plans to add channels in the near future, but it may be available as a Marketplace add-on in the future.

We have registered your request for implementation in future releases. However, you can still use the classic UI if Freedom doesn't meet your needs for various reasons.

If you have any additional questions, please reply to this email. We'll be happy to assist you.

Best regards,
Anton

Show all comments

I have a record that I'm trying to delete, but just as the title says, the system is telling me that I do not have the rights to any CRUD operations despite me being the system user and making sure that I have full operation permissions on the object.

 

The specific object in question is the AppValidation object from the FinAppLending package. The record was created automatically by a business process. Is there something I'm missing that will allow me to do anything with this object?

 

Thanks in advance!

Like 0

Like

4 comments
Best reply

Hello,
 

Having verified all information, we inform you that in order to work with the Validation object, you must need the finserv lending creatio license, which grants you access to modify the Validation object.

So please check if you have this license.

Hello,

Do you have a license finserv lending creatio app assigned to your user?

Malika,

Yes, I have all available licenses in my system and I am marked as the system user, so I have full access permissions for everything already. 

Hello,
 

Having verified all information, we inform you that in order to work with the Validation object, you must need the finserv lending creatio license, which grants you access to modify the Validation object.

So please check if you have this license.

Malika,

 

Thank you for your help

Show all comments

In the default Addresses expanded list, there is a column called "Full address" which combines all of the different parts of the contact address object into one, and cannot be edited directly, such as in the following screenshot.

I'm having trouble figuring out how this is implemented, as I would like to do something similar for another object. Any help would be appreciated, because I cannot seem to think of a search term that would pull up a relevant article on the subject.

 

Thanks in advance for any help!

Like 1

Like

4 comments
Best reply

That is implemented in BaseAddressEventListener. It’s basically an entity event listener class. See more about those here: https://customerfx.com/article/adding-code-to-listen-for-entity-events-in-creatio/

Ryan

That is implemented in BaseAddressEventListener. It’s basically an entity event listener class. See more about those here: https://customerfx.com/article/adding-code-to-listen-for-entity-events-in-creatio/

Ryan

Obviously, you can do that pretty easily with a process too. 

I imagine that I'll also have to code in the fact that it's non-editable?

That is just a rule at the object level

Ryan

Show all comments

As the title says, we sometimes need to disable buttons while still showing them - something which was easy to do in Classic UI. Is there any way of doing so in Freedom UI? I can't see any examples in OOTB Freedom UI areas, anywhere that does have disabled buttons OOTB are in Classic UI sections (e.g. the "Finish session" button on the System User page on the Access Rules tab when no record is selected).

Like 1

Like

4 comments
Best reply

Classic UI buttons have a property 'enabled'
Freedom UI buttons have a property 'disabled'

Hi Harvey, 

Does it not work to bind an attribute to the enabled property of a button and set as true/false? I've not tried that, but I assume it would work? Have you already tried that?

Ryan

Classic UI buttons have a property 'enabled'
Freedom UI buttons have a property 'disabled'

Huh, not sure how I missed that, could've sworn I tried doing that! Thanks both.

As a note, the only way I could find to put some kind of hint/tooltip on the button when it's disabled is by using the "title" property, which gives you a standard browser tooltip display when hovering the mouse over the button. And binding that to an attribute that you change to be blank when the button is enabled.

Show all comments