API
webservice
Studio_Creatio
8.0

Hello.

I have a web services API that requires an Id and an hmac generated with the request parameters and an API Key to be placed in its authorization header.

Is there a way to obtain the call body to perform the HMAC?

In postman I have been able to make the call successfully with a pre-request which is the following:

 

const apiKey = pm.collectionVariables.get("apiKey");;
const webId = pm.collectionVariables.get("webId");
const crypto = require('crypto-js');
 
if(pm.request.method === 'POST') {
 
    const parsedBody = JSON.parse(pm.request.body.raw);
    const jsonParams = JSON.stringify(parsedBody);
 
    // Create HMAC
 
    const hmac = crypto.HmacSHA256(jsonParams, apiKey);
    const hmacb64 = crypto.enc.Base64.stringify(hmac);
 
    // Set computed HMAC as an environment variable (or you could add it directly to the headers)
    pm.environment.set('hmacb64', hmacb64);
 
    // Construct the Authorization header
    const authorizationHeader = "signmage " + webId + ":" + hmacb64;
    pm.environment.set('Authorization', authorizationHeader);
} else if(pm.request.method === 'GET') {
 
    const url = pm.request.url.getPathWithQuery();
 
    const hmac = crypto.HmacSHA256(url, apiKey);
    const hmacb64 = crypto.enc.Base64.stringify(hmac);
 
    // Set computed HMAC as an environment variable (or you could add it directly to the headers)
    pm.environment.set('hmacb64', hmacb64);
 
    // Construct the Authorization header
    const authorizationHeader = "signmage " + webId + ":" + hmacb64;
    pm.environment.set('Authorization', authorizationHeader);
}

 


But in Creatio I'm a little lost if it's possible to do something similar.

I would appreciate it if you could help me know if this is possible. Thank you.

Like 1

Like

2 comments

Hello Laura,

Thank you for your question.

I have contacted our R&D team regarding when this functionality will be implemented in our system. The HMAC-SHA256 signature is planned to be implemented with the 8.3 release. Currently, there is no built-in API to use HMAC.

Hope this helps.

Hello,

Creatio does not natively provide built-in functionality for generating HMAC-SHA256 signatures directly within its platform. However, you can implement HMAC-SHA256 signature generation in Creatio by leveraging custom development or external tools.

Show all comments
Studio_Creatio
8.0

Hi Community. 
I have this piece of code: 

segmentationBatch is List 

but postgres throws an error that it can't compare uuid with uuid[] - which is understandable, but how do I pass a list of Id's into the update? 

Has anyone came accross this issue? 

 

P.S. I need it that way because it's a batch of records that I need to update and I need to keep those Id's for the following logic so I cannot rebuild the filtering criteria here.

var update = new Update(UserConnection, EntitySchemaName)
                .Set("UsrProfitCenter", Column.Parameter(segmentation.ProfitCenter))
                .Where("Id").In(Column.Parameter(segmentationBatch)) as Update;
            return update.Execute();
Like 0

Like

1 comments

Upd: 
Figured it out myself

 

 .Where("Id").In(Column.Parameters(segmentationBatch))
Show all comments

When we set up a filter on the List page of the web interface, it works on the web interface but not on the mobile interface.

Filtering is not working in the Creatio Mobile (Freedom UI)

Could  you please let us know, how can we setup filter in mobile.

Like 0

Like

3 comments

Hello,
 

Unfortunately, the quick filtering options on mobile are currently only available in the Classic UI. We recognize the importance of this feature and are actively working on implementing it in Freedom UI.

Dymytriy Vykhodets,

 

Thank you for your clarification. 

Hi Dymytriy Vykhodets,

Is this Mobile app filter implemented in the Freedom UI?

Please let us know we have the requirement in our project.

 

Show all comments

Hi.

 

I have this simple BP that has a Guid parameter which represents the Id of a real file inside the system. I take this file into a "Process file" element and tries to save it inside a specific Contact's attachment detail:

 

Then, in another "Process file" element up next, I take that file created inside the Contact's attachment detail in order to use it in the "Send Email" element:

 

 

However, upon checking both the email Activity created from this BP, as well as the Process log for this BP, nothing is attached:

Also, the resulting file collection from the second "Process File" element seems to be empty as well:

 

 

What am I doing wrong? I feel like this should work, it's a pretty simple example.

 

Thanks in advance,

Laurentiu

Like 1

Like

1 comments

Your account attachments/files could be using one of two file locations/objects. With Freedom UI a generic " attached file" object was introduced that could be used with any object. However, many objects have specific file/attachments objects, such as "Account files", or "Contact files" (sometimes those are named "File and link of account"). Make sure that you're using the correct object based on what you have on the screens. To check this, open the page in the designer and click on the attachments list, you'll see the object the page is actually using there in the "File storage location" property. 

Ryan

Show all comments

Hi All, 

 

Greetings!

Attaching my source code file.

 

UsrDate -> Date 

UsrStartTime -> Time

CreatedOn -> Date/Time

 

I am getting following error in few records - 

Worklogs Integrations synchronized with errors: {"bd455ee2-8f6e-4aed-bafc-890304110ac3":"SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.","3d4508d8-bf40-48b4-ab65-d836c7c0b3da":"SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM."}

screenshot from the source code is below - 


Screenshot of the record is below - 

 

 

Is it because Start time is NULL ?

If yes how can I handle this in the code so that the records gets synchronized with NULL ?


 

Thanks.

File attachments
Like 0

Like

1 comments

Hello.

I tried to do replicate the same situation. Activity table has a column SendDate which might be null. In business process i created a script task with the following code: 1

The result i got:
1
The values of SendDate columns in my Activity table were all null. All these values became the min value of datetime (1/1/0001 12:00:00 AM).

Your error message says that the datetime type in SQL Server has a limited range for dates it can store, specifically from January 1, 1753, to December 31, 9999. In .NET, the default value for DateTime is DateTime.MinValue, which is January 1, 0001. This default value is far outside the valid range for SQL Server's DateTime type.

After analyzing source code you provided i suggest taking a look at those lines of code and changing your sql command parameter types to SqlDbType.DateTime2:

insertCommand.Parameters.AddWithValue("@usrDate"...
insertCommand.Parameters.AddWithValue("@usrStartTime"...
insertCommand.Parameters.AddWithValue("@createdOn"...

Hope this helps

Show all comments
FreedomUI
Freedom_UI
Studio_Creatio
columns
detail
Expanded_List
8.0

Hello, I have a [Object A] form page where I have an Expanded List (detail) inside it [Object B] created. In [Object B] I need to have multiple records, so now I need to make a relationship between [Object A] and [Object B], but the app doesn't show me a relationship between IDs or anything like that.

I've already tried manually creating a Lookup inside [Object B] pointing to [Object A], but I was wondering if there's a better way to do it?

Like 1

Like

1 comments
Best reply

Hello,

You need to create one-to-many relations between these objects. To do this, you need to create a lookup column in each object that will refer to another object. After that, you will be able to use filters and relationships to display and customize the necessary lists.
You can't do it using no-code elements because this connection is set up at the object level.

Hello,

You need to create one-to-many relations between these objects. To do this, you need to create a lookup column in each object that will refer to another object. After that, you will be able to use filters and relationships to display and customize the necessary lists.
You can't do it using no-code elements because this connection is set up at the object level.

Show all comments
TRYING_TO_DISPLAY_DETAIL_IN_A_MODAL
Studio_Creatio
8.0

Hello.

Question: Is it not possible to add Virtual Detail in Modal?

I tried to add a Virtual detail in a Modal, but it do not shows Detail.
In Contact Page I have Virtual Detail and after clicking in row I open Modal where I added  Virtual Detail but it do not shows and there  are no errors also in Console.

This is A Modal after clicking in row and its empty.

 

Code For Modal:

define("UsrCreateVirtualFinancialAccountsModalPage", ["ModalBox", "css!UsrCustomStylesCss"], function(ModalBox, UsrCustomStylesCss) {
	return {
		attributes: {
 
		},
		messages: {
			"DataFromModal": {
				mode: Terrasoft.MessageMode.PTP,
				direction: Terrasoft.MessageDirectionType.BIDIRECTIONAL
			}
		},
		methods:{
			init: function(callback, scope) {
				this.callParent(arguments);
            	console.log('test')
			},
		},
		details: /**SCHEMA_DETAILS*/{
			"UsrFinancialAccountsVirtualDetail": {
				"schemaName": "UsrFinancialAccountsVirtualDetail"
			},
		},
		diff: [
			{
				"operation": "insert",
				"name": "MyContainer",
				"propertyName": "items",
				"values": {
					"itemType": Terrasoft.ViewItemType.CONTAINER,
					"items": []
				}
			},
			{
				"operation": "insert",
				"name": "MyGridContainer",
				"parentName": "MyContainer",
				"propertyName": "items",
				"values": {
					"itemType": Terrasoft.ViewItemType.GRID_LAYOUT,
					"items": []
				}
			}, 
 
			{
				"operation": "insert",
				"name": "UsrFinancialAccountsVirtualDetail",
				"values": {
					"itemType": 2,
					"markerValue": "added-detail"
				},
				 "layout": {
                        "column": 0,
                        "colSpan": 25,
 
                        "row": 5,
                        "rowSpan": 5
                    },
				"parentName": "MyGridContainer",
				"propertyName": "items",
				"index": 1
			},
		]
	};
});
Like 0

Like

1 comments

Hello. 
I implemented similar logic but instead of opening a modal page, i open card for the detail. In case section i added a test detail. When double clicking on a record in this detail onGridRowDoubleClick method is called which set values of record to sessionStorage and opens a UsrTestCardPage. Than init method is called while page is initializing which sets the field values.

Card schema:
 define("UsrTestCardPage", [], function() {
    return {
        entitySchemaName: "UsrTestDetail",
        attributes: {},
        modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
        methods: {
            init: function() {
                this.callParent(arguments);
                this.getSessionStorage();
            },
            
            getSessionStorage: function() {
                var UsrName_SessionValue = sessionStorage.getItem("UsrName_Session");
                var UsrIntColumn_SessionValue = sessionStorage.getItem("UsrIntColumn_Session");
                var Id_SessionValue = sessionStorage.getItem("Id_Session");
                this.set("UsrName", UsrName_SessionValue);
                this.set("UsrIntColumn", UsrIntColumn_SessionValue);
                this.set("Id", Id_SessionValue);
            }
        },
        dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
        diff: /**SCHEMA_DIFF*/[
            {
                "operation": "insert",
                "name": "UsrName2a0f6821-93ff-4f8b-a8c0-e58bb9032171",
                "values": {
                    "layout": {
                        "colSpan": 24,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "ProfileContainer"
                    },
                    "bindTo": "UsrName"
                },
                "parentName": "ProfileContainer",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "INTEGER406f5583-84ac-4659-9ff8-46b9c72de82a",
                "values": {
                    "layout": {
                        "colSpan": 24,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 1,
                        "layoutName": "ProfileContainer"
                    },
                    "bindTo": "UsrIntColumn",
                    "enabled": true
                },
                "parentName": "ProfileContainer",
                "propertyName": "items",
                "index": 1
            },
            {
                "operation": "insert",
                "name": "LOOKUPcb467c2f-f352-4ac0-90ea-f25c2ed22119",
                "values": {
                    "layout": {
                        "colSpan": 24,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 2,
                        "layoutName": "ProfileContainer"
                    },
                    "bindTo": "UsrCase",
                    "enabled": true,
                    "contentType": 5
                },
                "parentName": "ProfileContainer",
                "propertyName": "items",
                "index": 2
            }
        ]/**SCHEMA_DIFF*/
    };
});

 

 

Detail schema:


Hope this helps

Show all comments
filter
Studio_Creatio
8.0

Hello
Is there any possibility to show in a filter only the legal entities that I select in advance?

For example, in the "Branch" lookup, I would like to see only the legal entities with a property set by me, not all of the LE.

 

Like 2

Like

2 comments

Hello,

Unfortunately, the basic functionality of the platform doesn't allow you to filter values specified by you. However, we've registered this idea in our R&D team backlog for consideration and implementation in future application releases. Thank you for helping us to improve our product.

Great idea :) It's like also making sure some inactive values are not only inactive in dropdowns, but also in filters. 

Show all comments

Hi

I am currently working on a functionality within our Creatio system where I need to open a mini page that is part of the Classic UI by clicking a button in a Freedom UI section. Despite my efforts, I have encountered some challenges in achieving this integration.

 

Could you please provide guidance or any relevant documentation on how to successfully link and open a Classic UI mini page from a button click within a Freedom UI section? 

 

Any tips or best practices you could share would be greatly appreciated.

 

Thank You.

Like 1

Like

2 comments

Hi Satyam, 
You can try using crt.7XRequest with action 'EditRecord'/ 'AddRecord'. Please see this article on community : https://community.creatio.com/questions/base-function-lookup-value-clic…

Yurii Sokil,

The Terrasoft modules are also still available. You can use the same code as in classic UI, something like this will work in a Freedom UI request: 

Terrasoft.MiniPageListener.open({
	parameters: {
		entitySchemaName: "Activity"
	},
	valuePairs: [
		{ name: "Type", value: "fbe0acdc-cfc0-df11-b00f-001d60e938c6" },
		{ name: "Contact", value: contactId },
		{ name: "Account", value: accountId }
	],
	miniPageSchemaName: "ActivityMiniPage",
	operation: Terrasoft.ConfigurationEnums.CardOperation.ADD,
	showDelay: 0,
	miniPageSourceSandboxId: null
});

Ryan

Show all comments
dependencies
cyclicdependencies
current_package
auto generated
Studio_Creatio
8.0

Hello all,

 

Is there any way yet to disable Creatio automatically generating packagess and adding dependencies? It seems to completely disregard my current package system setting and Creatio's assigns dependencies to go in circles which then takes more time for me to clean up. Half the time when I remove dependencies, I go back to make a save in a package and Creatio assigns more dependencies that I don't want.

 

I end up with so much junk packages in the database with nonsense App_ues323 names and I can't find a way to turn it off.

Like 3

Like

5 comments

Hi Kevin, you need to disable the Feature called UseSchemaDesignPackageUIdByHierarchy. In yor instance must add this "/0/Shell/#Section/AppFeature_ListPage" after cretio.com to open the Features Page, search the feature, disable (turning off the “Is enabled” and “Is enabled for current user”), save and click on  button "Clear Cache".

 

Regards

Julio Falcón

Julio.Falcon_Nodos,

Are there any caveats to doing this Julio?

Gareth Osler,

This basically just reverts the behavior to use the "Current Package" system setting, even for all Freedom UI stuff. I have more info on that here: https://customerfx.com/article/reverting-the-behavior-for-saving-pages-in-the-creatio-freedom-ui-designer-to-use-current-package-setting/

Ryan

Hello!

 

The new package is creating if changes have been made to the application, but its main package is locked.

 

When developing an application, you can force the application not to create a new empty package, but to save changes to the package you created.
This can be done by disabling the UseSchemaDesignPackageUIdByHierarchy system feature - it is responsible for the logic of checking and creating a new package for the application, as well as the CurrentPackageId system setting and the Installed application and Package lookups. 


Now you will need to specify the package (recommended Custom) in the CurrentPackageId setting.

Please check this article it will explain everything in a clean manner

Fixing Creatio's Auto-Generated Packages: A Precise, Step-by-Step Guide | AavishkarIT

Show all comments