Hello Team.

I start BP on the client:

processArgs = {

                sysProcessName : "UsrSomeProcess" ,

                parameters : {

                    UsrParam : paramValue ,

                } ,

                callback : this . someProcessCallback ,

                scope : this

            } ;

            ProcessModuleUtilities. executeProcess ( processArgs )

Question: How to get the value of the output parameters of the running BP in the callback?

 

Like 0

Like

1 comments

The ProcessModuleUtilities module doesn't provide any ability to get output params in the callback. A process could take seconds, minutes, or days to complete, so the callback isn't executing when the process is complete, it's executing when it's been successfully started.

To get the params from the process you'll need to use a script task in the process to send them in a message to the front end UI and then wire up code to listen for that message. You can see an article how to do that here: 

https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

Ryan

Show all comments

Hi Team,

I'm trying to call hierarchical copying from the front-end of my Creatio application, but I'm having some trouble. I've read in the Creatio documentation that I should use the callService() method, but I'm not sure how to use it correctly.

I saw an example in the documentation that uses the "ProductBankCustomerJourney" package and the "ProductConditionDetailV2" schema, but I can't seem to find these in my application.

Can anyone provide me with some guidance on how to call hierarchical copying from the front-end of my Creatio application? Any help or advice would be greatly appreciated.

Thanks in advance!

Like 0

Like

1 comments

Hello,

 

This package is a part of the bank-sales-bank-customer-journey installation files so probably that's why you cannot find it in your app. It would be easier to get such a demo or onsite installation files and review the logic there. Here are the methods from the ProductConditionDetailV2 schema:

getCopyRecordConfig: function() {
                return {
                    serviceName: "HierarchyDataCopyingService",
                    methodName: "CreateRecordCopy",
                    data: {
                        schemaName: this.entitySchemaName,
                        recordId: this.$ActiveRow
                    },
                    scope: this
                };
            },
...
copyRecordServiceCallback: function(response) {
                response = response || {};
                response = response.CreateRecordCopyResult || {};
                this.hideBodyMask();
                if (!response.success) {
                    var errorMessage = this.extractErrorMessage(response);
                    this.showInformationDialog(errorMessage);
                    return;
                }
                const copiedRecordId = response.recordId;
                this.openCard(configurationEnums.CardStateV2.COPY, this.Terrasoft.GUID_EMPTY, copiedRecordId);
            },
...
validateConditionsDueDateCallback: function(result) {
                if (result.success) {
                    this.callCopyRecordService();
                    return;
                }
                this.showInformationDialog(result.message);
            },
....
copyRecord: function() {
                this.isCanCopyRecord(function(isCan) {
                    if (!isCan) {
                        var denyMessage = this.get("Resources.Strings.RecordRightsErrorMessage");
                        this.showInformationDialog(denyMessage);
                        return;
                    }
                    this.validateConditionsDueDate(this.validateConditionsDueDateCallback, this);
                }, this);
            },
 
....
 
callCopyRecordService: function() {
                this.showBodyMask();
                var config = this.getCopyRecordConfig();
                this.callService(config, this.copyRecordServiceCallback, this);
            },

The chain is: copyRecord -> validateConditionsDueDate -> validateConditionsDueDateCallback -> callCopyRecordService -> getCopyRecordConfig -> copyRecordServiceCallback.

 

To call the service the config is used:

serviceName: "HierarchyDataCopyingService",
					methodName: "CreateRecordCopy",
					data: {
						schemaName: this.entitySchemaName,
						recordId: this.$ActiveRow
					},

and the actual call is performed:

this.callService(config, this.copyRecordServiceCallback, this);

callback function determines what should be done once the service response is received.

Show all comments

Hi Creatio community,

 

While creating a list page or form page in FreedomUI, we noticed that the option to view the changelog is not present even after enabling changelog for that particular object. 

 

We would like to know how to get this option in the form page (edit page) like in the previous versions. 

 

 

 

Thanks in advance.

 

Regards,

Abilash.S

Like 2

Like

7 comments
Best reply

Hi Abilash,

As far as I'm aware, this custom action is not yet available out of the box. I would assume in version 8.1 it would be present.

One workaround would be to call a handler to navigate to another URL, where you can construct the url for the specific change log of that record.

Hi Abilash,

As far as I'm aware, this custom action is not yet available out of the box. I would assume in version 8.1 it would be present.

One workaround would be to call a handler to navigate to another URL, where you can construct the url for the specific change log of that record.

Hi!

 

At the moment, Freedom UI doesn't have a quick way to go to the Change Log. This should be available in new versions. 

 

A workaround would be to call a handler to navigate to another URL.

 

Regards, Anton 

 

Is there any update on this? I can't see the change log option in a recently created 8.1 free cloud environment after turning it on for an object, nor an action that would correspond to it similar to what the Access Rights has for that button.

Hi,

Any news on this?

we also need to view change log.



As a temporary solution, is it possible to turn on the change log and view the changes in a lookup?

If yes, what object should be used to view the changes?

Thanks,

Luis

+1

There's been an update on this - in release 18.2 there's a possibility to add a button with an action "Change log" - it can open a page with a change log for the record or entire object. The only thing is that it is still the old design and the button opens a new tab, so it's not visible on the record itself.

Jarema Pyziak,

In the roadmap, it says you can view change log "live", is it what you have described here above ?

Show all comments

Hello community,

I have a use case where i need to grant access rights to new owner in Lead when the owner gets changed.I want to remove the access rights of the old owner.

By default, Creatio grants maximum access permissions to record author and the record owner.

I have tried to give access to the new owner and revoke the access permission to old owner using Change access right Business process element . Since the old owner is the record author ,that user can able to see ,edit,delete the record .I want to remove the access rights of the old owner. 

Can anyone help me on this ?

Like 1

Like

1 comments

Hi!

 

If you remove all roles/users from default permissions (managed by records access rule settings), users who created the record and records owner will still be able to see/edit/delete the record. 

 

To change this behavior, there are several options: 

- open the record in the System Designer and set the rule for the author to grant himself the rights for "not reading" the record

 

- the database command to remote the specific rights in the sys[object]right table. You can check some details on the example of granting the rights and change the logic of the provided script: https://community.creatio.com/questions/there-way-provide-record-creato…

Here are some more details on how these system tables impact the record permissions: https://community.creatio.com/articles/what-database-tables-should-i-ta…

- design a business process with the "Change access" element to remove the rights from the record author

 

Hope this info helps you with the described case.

Show all comments

Hi Community,

Is there any possibility to put an image as a background in the Creatio Login Page ?

Example

Best regards,

Sasori

Like 0

Like

5 comments
Best reply

Hi Sasori,

 

It's possible, but proper css should be created:

what was done is adding the image to NuiLogin.aspx page css (add body elemnt there):

<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";
		}
		body {
			background-image: url("783px-Test-Logo.svg.png");
		}
	</style>

and put this image to the root directory of app binary files. Only css should be modified in case you don't need to repeat this image and to set the size for it.

Hi Sasori,

 

It's possible, but proper css should be created:

what was done is adding the image to NuiLogin.aspx page css (add body elemnt there):

<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";
		}
		body {
			background-image: url("783px-Test-Logo.svg.png");
		}
	</style>

and put this image to the root directory of app binary files. Only css should be modified in case you don't need to repeat this image and to set the size for it.

Oleg Drobina,

Thanks for the explanation Oleg, 

I tried all the steps but still the image is not showing in the background of the login page.

1- Modified NuiLogin.aspx file (path : inetpub\wwwroot\creatio\Login)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NuiLogin.aspx.cs" Inherits="Terrasoft.WebApp.Loader.Login.NuiLogin" %>
 
<!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="<%= PageDirection %>" culture="<%= LanguageCultureName %>">
<head runat="server">
	<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";
		}
		body {
			background-image: url("test.png");
		}
	</style>
</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 id="IndexForm" runat="server">
	</form>
</body>
</html>

1- Added test.png image file in ( path - inetpub\wwwroot\creatio\)

Sasori Oshigaki,

 

Strange, this approach worked in my local app perfectly. Maybe there is an error message in the console when trying to reach the Login page and it will provide more details? Or maybe the image is empty? Also try restarting the application in IIS.

Oleg Drobina,

Just fixed it Oleg

The mistake was the path of the image ( got it from console window)

The image should be placed under this path :

inetpub\wwwroot\creatio\Login

Thanks a lot for the help

Sasori

Sasori Oshigaki,

 

hm, in my case it requested the root directory of the app when I was testing it. Anyway, it's good that the console message answered the question!

Show all comments

Hi Community,

 

I've created a detail in FreedomUI that adds attachments to the SysFile table. But upon upload, I can see the newly added file in the detail only after reloading the whole page. 

 

 

I tried to reload the detail on upload using the following code but it didn't work:

 



{

                request:"crt.UploadFileRequest",

                handler:async (request, next) =>{

                    console.log("new record");

                    await next?.handle(request);



                    const handlerChain = sdk.HandlerChainService.instance;

                    for(var i = 0;i<2;i++)

                    {

                        await handlerChain.process({

                                                    type: "crt.LoadDataRequest",

                                                    $context: request.$context,

                                                    config: {

                                                        loadType: "reload"

                                                    },

                                                    dataSourceName: "DataGrid_0b46u59DS"

                                                });

                    }



                }

},

 

I would like to see the file in the detail as soon as its uploaded. 

 

Thanks in advance for any help!

 

Regards,

Abilash.S

 

 

 

 

Like 1

Like

2 comments

Hello,

Please try reloading using this code

setInterval(async ()=&gt;{
                                const handlerChain = sdk.HandlerChainService.instance;
                                await handlerChain.process({
                                    type: 'crt.LoadDataRequest',
                                       $context: request.$context,
                                    config: {
                                        loadType: 'reload'
                                    },
                                    dataSourceName: '{Your Data Source}'
                                });                        
                            }, 1000);

 

Hello,

You can still use that approach, or you can add a standard attachment component.

Show all comments

Hello community,

Can we have conditions for mini page for one particular edit page when we have multiple edit pages?

 

Thank you in advance 

Yasaswini I 

Like 0

Like

3 comments

Hello, 

 

Could you please elaborate a bit on your task or provide us with a screenshot of what should be implemented?



Best regards,

Anastasiia

 

I need mini page for only Enterprise edit page. 



Yasaswini I

Yasaswini Indurthi,

 

there is only relation between the mini page and the whole section page, so, unfortunately, there is no possibility to create separate miini cards for every edit page of the section.

 

As a result - there can only be one mini page for the section.

 

Regards,

Gleb.

Show all comments

In configuration page, page keeps on loading when I open the properties of the package / compile / package dependency diagram etc.

Like 0

Like

6 comments

Hello,

 

Is there any specific error on UI or in browser console?



Best regards,

Anastasiia

Anastasiia Zhuravel,

Hello,

there is no error in console. it keeps on loading.

Regards,

Sudhakar J.

SUDHAKAR JANGAM,



Hi,



Please contact support team via support@creatio.com as it's hard to identificate the root cause of the issue with no access to the site. 



Best regards,

Anastasiia

Anastasiia Zhuravel,

 

Hi, 

Following error is coming in browser console:

WebitelModule.js:1577  WebSocket connection to 'wss://webitel-switch.creatio.com:8082/' failed: 

connect @ WebitelModule.js:1577

WebitelModule.js:16 ========WebSocket Status========

WebitelModule.js:17 Status: 3

WebitelModule.js:1591  Event {isTrusted: true, type: 'error', target: WebSocket, currentTarget: WebSocket, eventPhase: 2, …}

that._webSocket.onerror @ WebitelModule.js:1591

De @ polyfills.20e0161dc33d636e.js:17

invokeTask @ polyfills.20e0161dc33d636e.js:11

onInvokeTask @ 651.a730b9316c400eb2.js:51

invokeTask @ polyfills.20e0161dc33d636e.js:11

runTask @ polyfills.20e0161dc33d636e.js:11

invokeTask @ polyfills.20e0161dc33d636e.js:11

F @ polyfills.20e0161dc33d636e.js:36

x @ polyfills.20e0161dc33d636e.js:36

WebitelModule.js:16 ========WebSocket Status========

WebitelModule.js:17 Status: 3

WebitelModule.js:1595 WebSocket conection closed

all-combined.js?v=8.0.8.4758:41 2023-05-04 15:42:36,0536 [Telephony] "Disconnected"

WebitelModule.js:1603 will reconnect in 640 sec.

 

Regards,

Sudhakar Jangam

SUDHAKAR JANGAM,

 

Please register this issue for our support team directly at support@creatio.com so we could investigate it properly.

Ziad Kaka,

Please note that this issue can be solved via registering a case directly for our Creatio Support team at support@creatio.com.

Show all comments

Hello,



We're dealing with a use-case in which our client has multiple email domains- in excess of 10 and want to use multiple email ids (that belong to those domains) while sending out bulk/ trigger emails. Is this possible on Creatio Marketing Cloud and if yes, is there a limit on the number of email domains that can be set up?



Thank you

Like 0

Like

1 comments

I am trying to access a local Creatio instance(deployed in Localhost port 9010 ) from Android Studio Emulator. I am using the URL  10.0.2.2 to access my actual machine based on

https://stackoverflow.com/questions/5528850/how-do-you-connect-localhost-in-the-android-emulator)

While Logging in I get an error

While Debugging:

Exception

Type: Terrasoft.SyncException
Message: An error occurred while synchronizing
Stack trace: 
Class.logException(terrasoft-all-combined.js:7325:45)
Class.error(terrasoft-all-combined.js:7332:12)
Function.processFailure(terrasoft-all-combined.js:36689:24)
terrasoft-all-combined.js:36760:20
Object.callbackFromNative(cordova.js:295:52)
processMessage(cordova.js:1081:17)
processMessages(cordova.js:1104:9)
pollOnce(cordova.js:973:9)
pollOnceFromOnlineEvent(cordova.js:960:5)
Type: Terrasoft.Exception
Message: Could not complete request
Stack trace: 
com.creatio.core.net.RequestException: Could not complete request
	at com.creatio.core.net.RequestExceptionFactory.create(RequestExceptionFactory.java:28)
	at com.creatio.core.net.Request.getRequestException(Request.java:418)
	at com.creatio.core.net.Request.post(Request.java:355)
	at com.creatio.core.net.RequestItem.execute(RequestItem.java:30)
	at com.creatio.core.net.RequestManager.doExecuteRequest(RequestManager.java:181)
	at com.creatio.core.net.RequestManager.executeRequest(RequestManager.java:173)
	at com.creatio.core.net.RequestManager.post(RequestManager.java:87)
	at com.creatio.core.net.RequestManager.post(RequestManager.java:75)
	at com.creatio.core.service.Service.post(Service.java:133)
	at com.creatio.core.service.MobileMetadataService.load(MobileMetadataService.java:52)
	at com.creatio.app.sync.MetadataSyncAdapter.downloadMetadata(MetadataSyncAdapter.java:225)
	at com.creatio.app.sync.MetadataSyncAdapter.loadMetadata(MetadataSyncAdapter.java:86)
	at com.creatio.app.sync.MetadataSyncAdapter.startSync(MetadataSyncAdapter.java:57)
	at com.creatio.app.sync.SyncAdapter.synchronize(SyncAdapter.java:55)
	at com.creatio.app.sync.AppSyncAdapter.runSyncAdapter(AppSyncAdapter.java:121)
	at com.creatio.app.sync.AppSyncAdapter.syncMetadata(AppSyncAdapter.java:296)
	at com.creatio.app.sync.AppSyncAdapter.syncAllMetadata(AppSyncAdapter.java:153)
	at com.creatio.app.sync.AppSyncAdapter.startSync(AppSyncAdapter.java:60)
	at com.creatio.app.sync.SyncAdapter.synchronize(SyncAdapter.java:55)
	at com.creatio.app.sync.SyncRunner.runItem(SyncRunner.java:259)
	at com.creatio.app.sync.SyncRunner.doRun(SyncRunner.java:250)
	at com.creatio.app.sync.SyncRunner.run(SyncRunner.java:129)
	at com.creatio.app.sync.SyncRunner.run(SyncRunner.java:101)
	at com.creatio.cordova.plugin.tssynchronization.TSSynchronizationPlugin.runSync(TSSynchronizationPlugin.java:102)
	at com.creatio.cordova.plugin.tssynchronization.TSSynchronizationPlugin.syncApp(TSSynchronizationPlugin.java:356)
	at com.creatio.cordova.plugin.tssynchronization.TSSynchronizationPlugin.lambda$execute$6$com-creatio-cordova-plugin-tssynchronization-TSSynchronizationPlugin(TSSynchronizationPlugin.java:67)
	at com.creatio.cordova.plugin.tssynchronization.TSSynchronizationPlugin$$ExternalSyntheticLambda6.run(Unknown Source:6)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)
Caused by: java.net.ProtocolException: Expected leading [0-9a-fA-F] character but was 0x9d
	at com.android.okhttp.internal.http.Http1xStream$ChunkedSource.readChunkSize(Http1xStream.java:463)
	at com.android.okhttp.internal.http.Http1xStream$ChunkedSource.read(Http1xStream.java:437)
	at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:372)
	at java.io.FilterInputStream.read(FilterInputStream.java:133)
	at java.io.PushbackInputStream.read(PushbackInputStream.java:186)
	at com.creatio.core.util.StreamUtils.writeToOutputStream(StreamUtils.java:32)
	at com.creatio.core.net.DownloadRequest.readResponseInputStream(DownloadRequest.java:68)
	at com.creatio.core.net.Request.connect(Request.java:65)
	at com.creatio.core.net.Request.post(Request.java:340)
	... 27 more
 
Type: Terrasoft.Exception
Message: Expected leading [0-9a-fA-F] character but was 0x9d
Stack trace: 
java.net.ProtocolException: Expected leading [0-9a-fA-F] character but was 0x9d
	at com.android.okhttp.internal.http.Http1xStream$ChunkedSource.readChunkSize(Http1xStream.java:463)
	at com.android.okhttp.internal.http.Http1xStream$ChunkedSource.read(Http1xStream.java:437)
	at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:372)
	at java.io.FilterInputStream.read(FilterInputStream.java:133)
	at java.io.PushbackInputStream.read(PushbackInputStream.java:186)
	at com.creatio.core.util.StreamUtils.writeToOutputStream(StreamUtils.java:32)
	at com.creatio.core.net.DownloadRequest.readResponseInputStream(DownloadRequest.java:68)
	at com.creatio.core.net.Request.connect(Request.java:65)
	at com.creatio.core.net.Request.post(Request.java:340)
	at com.creatio.core.net.RequestItem.execute(RequestItem.java:30)
	at com.creatio.core.net.RequestManager.doExecuteRequest(RequestManager.java:181)
	at com.creatio.core.net.RequestManager.executeRequest(RequestManager.java:173)
	at com.creatio.core.net.RequestManager.post(RequestManager.java:87)
	at com.creatio.core.net.RequestManager.post(RequestManager.java:75)
	at com.creatio.core.service.Service.post(Service.java:133)
	at com.creatio.core.service.MobileMetadataService.load(MobileMetadataService.java:52)
	at com.creatio.app.sync.MetadataSyncAdapter.downloadMetadata(MetadataSyncAdapter.java:225)
	at com.creatio.app.sync.MetadataSyncAdapter.loadMetadata(MetadataSyncAdapter.java:86)
	at com.creatio.app.sync.MetadataSyncAdapter.startSync(MetadataSyncAdapter.java:57)
	at com.creatio.app.sync.SyncAdapter.synchronize(SyncAdapter.java:55)
	at com.creatio.app.sync.AppSyncAdapter.runSyncAdapter(AppSyncAdapter.java:121)
	at com.creatio.app.sync.AppSyncAdapter.syncMetadata(AppSyncAdapter.java:296)
	at com.creatio.app.sync.AppSyncAdapter.syncAllMetadata(AppSyncAdapter.java:153)
	at com.creatio.app.sync.AppSyncAdapter.startSync(AppSyncAdapter.java:60)
	at com.creatio.app.sync.SyncAdapter.synchronize(SyncAdapter.java:55)
	at com.creatio.app.sync.SyncRunner.runItem(SyncRunner.java:259)
	at com.creatio.app.sync.SyncRunner.doRun(SyncRunner.java:250)
	at com.creatio.app.sync.SyncRunner.run(SyncRunner.java:129)
	at com.creatio.app.sync.SyncRunner.run(SyncRunner.java:101)
	at com.creatio.cordova.plugin.tssynchronization.TSSynchronizationPlugin.runSync(TSSynchronizationPlugin.java:102)
	at com.creatio.cordova.plugin.tssynchronization.TSSynchronizationPlugin.syncApp(TSSynchronizationPlugin.java:356)
	at com.creatio.cordova.plugin.tssynchronization.TSSynchronizationPlugin.lambda$execute$6$com-creatio-cordova-plugin-tssynchronization-TSSynchronizationPlugin(TSSynchronizationPlugin.java:67)
	at com.creatio.cordova.plugin.tssynchronization.TSSynchronizationPlugin$$ExternalSyntheticLambda6.run(Unknown Source:6)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:919)

 

Like 0

Like

1 comments

Hello,

Unfortunately, we cannot help you with this problem because we don't use local environments via Android Studio. But, I can say that this is in fact possible. I managed to connect to localhost using 10.0.2.2.

Please take a closer look at the article you provided, maybe you missed some setting.

Also, look at this post, I hope it can help you fix this error.

Show all comments