Hi team,

 

When my screen resolution is @ 90% then see the below screenshot : 

 

But when screen resolution is @ 100 % then : 

 

Can anyone please help me to understand why it is happening?

More Information : Field in front of "Other" checkbox have hidden title. 

 

Many thanks in advance!

Like 1

Like

1 comments

Hello Akshit, 

The mentioned issue may occur if you have located the fields too close to each other in the Section wizard. 

I would like to suggest you to double-check how the fields are placed in the Section Wizard and make sure there is at least one "cell" of free space between them as on the attached screenshot:

If needed, please apply the changes, save them and re-login to the instance. The issue should not persist.

Should you have any questions, please let us know!

Best regard,

Anastasiia

Show all comments

Hi Team,

 

In the business scenarios there are fields like ''Business Unit of User'' which should be auto-populated based on the business unit  of the current system user. Now for this I believe that there should be are record in the system for that user[In Contact section] having Business unit information. 

 

Our customers wants SSO Integration between Azure AD and Creatio. I want to understand does SSO Integration Creates users in creatio automatically because I think If system users record would not be created in Creatio then we won't be able to achieve the above mentioned scenarios. Am I correct?



For creating/updating system users records in Creatio, Do we need to set up Just In time provisioning with SSO? 

Like 0

Like

1 comments

Hello Akshit, 

 

The described functionality can be achieved with a help of Just-In-Time User Provisioning. Please find more detailed information about it in the below article:

https://academy.creatio.com/docs/user/setup_and_administration/user_and…

 

Best regards, 

Anastasiia

 

Show all comments

Hi, Account and

In the Contact section, I add a text column with the section wizard and press the save button, but I get the error you see below.

System designer -> System settings -> Current package. I provided the 'custom' control.

 

File attachments
Like 0

Like

9 comments

Hello Aygen,

 

Probably the Package is locked. Please make sure, that the package that you set up in the 'current package' system setting is unlocked, 



Best regards,

Bogdan

Hi Bogdan, Thank you for the answer.

I'm checking but is there a section here that I need to change? 

 

 

Access for modification for internal users --> Can manage configuration elements

 

Aygen Ergen,

 

 

Could you please send us a screenshot of the 'Advanced settings' section? 

What exactly should I show?

 

 

Aygen Ergen,

 If the Package is unlocked, it's Yellow and on top of the package-list.

But now your package Custom is locked and grey.



Did you Export the package and then re-install it?

Julius,

Unsuccessful. What can be the problem?

 

 

 

Sorry for the unclear answer. I only meant to ask if you had done this, as a question. I did not want to suggest you do this as you are really not supposed to do that! I believe it will lead to package being locked, since it's an external third-party package when being installed from file.

Was this package created on the same environment/instance you are using?



I suggest you create a new Package and move everything from the old locked package into the new one. If that's possible.

Otherwise, ask the support department to unlock it for you.

Thank you for answer

 

Aygen Ergen,

 

The error depicts the object (Account) doesn't have edit access.

Please check the object permission of Account here,



Step 1, Select object permission from the homepage.





Step 2: Select account and check its permission setup







Best Regards,

Bhoobalan Palanivelu.

Show all comments

Hello, I created a lookup in the Contact section. I added data into it from the Lookups section. I got a foreign key error while selecting the data entered in the Contact section. I updated the table I created from the Configuration section. Again nothing happened. I deleted Lookup. I removed the relevant column from the contact table. I wanted to delete the relevant section in Configuration, but I got the error "Unable to delete item, because there are items that depend on it". I think I removed the relevant dependencies. How can I learn? Now the system is constantly logout.

Like 0

Like

3 comments

Hello, 

 

Please provide us with a screenshot of the full error message, so we'll be able to advise you accordingly. 

 

Best regards, 

Anastasiia

 When I try to open it or the update, it crashes and logout of the system. 

Aygen Ergen,

 

 

Please try to Update the DB structure for the object that has an error as shown on the screenshot below:

 

And after that generate the source code for all schemas and "Compile all" from the Configuration section. It should resolve the issue. 

Best regards, 

Anastasiia

Show all comments

Hi Community,

 

I want to override qualify button method in Leads section and check if some of the fields have appropriate value. If not, I want to stop the lead qualification process. Can someone help me in achieving the same?

Thanks,

Gokul

 

 

Like 0

Like

5 comments

Hi Gokul,

 

As I already stated here the method that is called upon the "Qualify" button click is onLeadManagementButtonClick (for the LeadPageV2 module).  In the LeadSectionV2 the method is onLeadManagementSectionButtonClick. You can override both methods in the replaced modules: in LeadPageV2 you can add additional this.get(Column)!= check and then call parent method and in the LeadSectionV2 you need to get ActiveRow and perform an ESQ select query to check if the record by ActiveRow has the data needed to start the process.

 

Best regards,

Oscar

Oscar Dylan,

Thank you  for the reply. In case of section page as told I am running an esq. How can i call parent method based on execution of esq?

onLeadManagementSectionButtonClick:function(){
	activeRowId = this.get("ActiveRow");
	var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
		rootSchemaName: "Lead"
	});
	esq.addColumn("Id");
	esq.addColumn("Account");
	esq.addColumn("Email");
	esq.getEntity(activeRowId, function (result) {
		if (result.success) {
			var account = result.entity.values.Account;
			var email = result.entity.values.Email;
			if(account==='' || email==='')
			{
				Terrasoft.showErrorMessage("error msg");
			}
			else
			{
				//call parent method
				this.callParent(arguments);
			}
 
	  }
	}, this);
},	

 

S Gokul Aditya,

 

ESQ is asynchronous so you won't be able to call the parent method. But we can do it in another way. Try this code:

onLeadManagementSectionButtonClick: function() {
				var gridData = this.get("GridData");
				var activeRow = this.get("ActiveRow");
				var activeRowGridData = gridData.get(activeRow);
				var activeRowGridDataAccount = activeRowGridData.get("Account");
				var activeRowGridDataEmail = activeRowGridData.get("Email");
				if (!activeRowGridDataAccount || !activeRowGridDataEmail) {
					Terrasoft.showErrorMessage("error msg");
					return;
				}
				this.callParent(arguments);
			}

But in this case you will have to display both account and email columns in the lead section grid:

This approach works on my side, should also work on your end.

 

Best regards,

Oscar

Oscar Dylan,

thanks for the quick reply. I have few more such fields to be checked. Can it be done without adding columns to the section grid?

S Gokul Aditya,

 

Not sure, the code should be debugged to find out the proper way of the customer's business task completeness. I just gave an example, the final implementation can differ.

Show all comments

Hi Community,

 

To test the HAProxy, I've installed two Creatio Applications on my virtual machine, using Docker. Each instance can be access through a specific container address.

 

I've successfully configured HAProxy by following this guide (https://academy.creatio.com/docs/user/on_site_deployment/deployment_additional_setup/application_server_web_farm_shortcut/application_server_web_farm). If I stop one of the containers, the HAProxy sends the requests to the other container, as expected. However, when both containers are up and running, I cannot pass through the login page.

 

I need help to understand:

What is the cause of such behaviour?

What are the possible solutions to solve this problem?

Will this problem occur if each instance is in a separated machine?

 

Note: I’ve notice on other tests that when I have two Creatio instances on the same machine I can only be logged one at the time. Maybe this is related to the problem.

 

Best Regards,

Pedro Pinheiro

Like 1

Like

3 comments

I think I’ve managed to solve this problem. In some applications we need to ensure that the user must be connected to the same server during the whole session. So, to allow this I changed the Load Balance Algorithm to source.

frontend front
     maxconn 10000
     #Using these ports for binding
     bind *:80
     bind *:443
     #Convert cookies to be secure
     rspirep ^(set-cookie:.*)  \1;\ Secure
     default_backend creatio
 
backend creatio
     #set balance type
     balance source       
     server node_1 nodeserver1:80 check weight 2
     server node_2 nodeserver2:80 check weight 1

The problem was solved, but I don't know if this is the correct way to solve it. I would like to hear some feedback. Thank you.

 

Best Regards,

Pedro Pinheiro

Hi Pedro, 



We generally recommend using round-robin, as it's optimal in most cases, but the "source" algorithm is working as well. 

As for why the log-in issue happened: it's hard to say definitely, but on of the options is if the machinekey is different on different nodes - it won't let you log in. 

 

Best regards,

Yurii.

Hi Yurii Sokil,

 

I moved this infrastructure to a Linux server. In this server I have the same two instances but with different ports instead of docker containers. How can I generate this "machinekey”?

 

The documentation only explains how to generate them on windows servers, through  PowerShell.

 

Best Regards,

Pedro Pinheiro

Show all comments

Hi Community, 

 

I have to use Odata of Creatio environment from Postman using OAuth 2.0 authentication. For that, I have followed a Tech hour session of Creatio Trainers.

Tech Hour - Integrate like a boss with Creatio, part 2 (Odata)

 

But, while generating token at 38:10, I am not getting token in a response instead of that I am getting some HTML code like below.

 

 

Please suggest and help how to get token and if I am missing something. :)

Thanks in Advance.

Like 0

Like

4 comments

Hi Patrik,

 

Can you please provide a complete HTML-code from the response? There should be some description of the response at the bottom.

 

Best regards,

Oscar

Hi Oscar,

 

Below is the complete HTML-code.

 

<!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">

        Terrasoft = window.Terrasoft || {};

Terrasoft.appFramework = "NETFRAMEWORK";

Terrasoft.coreVersion = "7.18.5.1500";

Terrasoft.useClientPerformanceLogger = false;

Terrasoft.configuration = Terrasoft.configuration || {};

Terrasoft.configuration.Structures = Terrasoft.configuration.Structures || {};

Terrasoft.useParallelSchemaBuilding = true;

Terrasoft.showSessionEndNotification = false;

Terrasoft.useWebSocketKeepAlive = true;

Terrasoft.useStaticFileContent = true;

Terrasoft.usePackageFileContent = true;

Terrasoft.useGenerateModulePathes = true;

Terrasoft.useNewRightsManagement = true;

Terrasoft.useOffsetFetchPaging = false;

Terrasoft.useMarkerValue = true;

Terrasoft.enablePerformanceManager = false;

Terrasoft.useSecureSettingsOnClient = false;

Terrasoft.useSchemaUniqueNameRandomGenerator = true;

Terrasoft.disableAspxErrorPage = true;

Terrasoft.useAsyncStaticContentGeneration = true;

var FileAPI = {

    staticPath: "https://050800-studio.creatio.com//Resources/ui/FileAPI/",

    flashUrl: "https://050800-studio.creatio.com//Resources/ui/FileAPI/FileAPI.flash.s…",

    flashImageUrl: "https://050800-studio.creatio.com//Resources/ui/FileAPI/FileAPI.flash.i…" };

Terrasoft.storesConfig = [];

Terrasoft.storesConfig.push({levelName: 'ClientPageSession', type: 'Terrasoft.MemoryStore', isCache: true});

Terrasoft.storesConfig.push({levelName: 'Domain', type: 'Terrasoft.LocalStore', isCache: true});

if(Terrasoft.StoreManager){

    Terrasoft.StoreManager.registerStores(Terrasoft.storesConfig);

}

Terrasoft.loaderBaseUrl = "https://050800-studio.creatio.com/";

Terrasoft.workspaceBaseUrl = "https://050800-studio.creatio.com/";

Terrasoft.coreModulesPath = 'core/hash/';Terrasoft.app = Terrasoft.app || {};

Terrasoft.app.config = Terrasoft.app.config || {};

Terrasoft.app.config.staticFileContent = Terrasoft.app.config.staticFileContent || {};

Terrasoft.app.config.staticFileContent.imagesRuntimePath = 'conf/content/img';

Terrasoft.app.config.staticFileContent.schemasRuntimePath = 'conf/content';

Terrasoft.app.config.staticFileContent.resourcesRuntimePath = 'conf/content/resources';



 

Terrasoft.showSelfRegistrationLink = true;

    </script>

    <script type="text/javascript">

        window.workspaceCount = 0;

window.supportInfo = [];

window.supportInfoCaption = 'Technical support';

window.importantLinks = [];

window.importantLinksCaption = 'Important links';

window.productVersion = '7.18.5.1500';

window.loginTimeout = '30000';

var Terrasoft = Terrasoft || {};

window.isNtlmLoginVisible = false;

window.isOpenIdLoginVisible = false;

window.loginPageWidgetInfo = {visible: true, src: 'https://www.bpmonline.com/page/creatio/widget'}

window.unsupportedBrowserInfo = { visible: true }

window.loginImageUrl = '/terrasoft.axd?s=nui-binary-syssetting&r=LogoImage&source_hash=98b1b8112110361c36b8ab70d88db296';

window.productVersion = '7.18.5.1500';

    </script>

    <script type="text/javascript"

        src="https://050800-studio.creatio.com//core-sl/851526dc5db90435038b708f7ad9…"></script>

    <script type="text/javascript">

        Terrasoft.loginUrl = 'https://050800-studio.creatio.com/ServiceModel/AuthService.svc/Login';

Terrasoft.ntlmLoginUrl = 'https://050800-studio.creatio.com/Login/NuiLogin.aspx?ntlmlogin';

Terrasoft.changePasswordUrl = 'https://050800-studio.creatio.com/ServiceModel/AuthService.svc/DoChange…';

Terrasoft.simpleLoginTag = "simplelogin";

Terrasoft.loginModulePath = 'https://050800-studio.creatio.com//core/cab68cf981c5c57700bb51729bd6695…';

    </script>

    <script type="text/javascript"

        src="https://050800-studio.creatio.com//core/db7fe0930e6258f01fb73405039cc9a…">

    </script>

    <script type="text/javascript"

        src="https://050800-studio.creatio.com//core/a2de79ad7a40d8fc81723c5ec4924f6…">

    </script>

    <script type="text/javascript">

        Terrasoft.configurationContentHash = "e5c44fb36af042b9bd061eabf982e95f";

Terrasoft.fileContentDescriptorsFileExists = true;

Terrasoft.fileContentBootstrapsFileExists = true;

Terrasoft.currentUserCultureName = "en-US";

    </script>

    <script type="text/javascript"

        src="https://050800-studio.creatio.com//core/82582be2ea4244b8799f21ef78fd6a7…">

    </script>

    <link rel="stylesheet" type="text/css"

        href="https://050800-studio.creatio.com//core/618184e4bd438f8c5e43aa74aff1464…" />

    <link href="../terrasoft.axd?s=nui-binary-syssetting&r=FaviconImage&source_hash=b05a750c6b433c4fc47050e3d539139e"

        rel="shortcut icon" type="image/vnd.microsoft.icon" />

    <script type="text/javascript"

        src="https://050800-studio.creatio.com//core/057665f97324038f6c7c326b6734de6…"></script>

    <script type="text/javascript">

        requirejs.config({

    'paths': {

        'require-config': 'https://050800-studio.creatio.com//core/c3b382519da9b15e207de6d13b5f07b…',

        'require-url-config': 'https://050800-studio.creatio.com//core/967b00f40245f346c0fb1e09d597be5…',

        'core-base': 'https://050800-studio.creatio.com//core/d17ef52258a059bbfe965f70e14a892…',

        'bootstrap': 'https://050800-studio.creatio.com//core/6290cba0af7874034f1ec28936bca13…',

        'performanceLogger': 'https://050800-studio.creatio.com//core/cf23c4ee65b1c47840a78249f048d9e…',

        'performancecountermanager': 'https://050800-studio.creatio.com//core/e79de66acd39442acc1377a3c171086…',

        'rxjs': 'https://050800-studio.creatio.com//core/3af6aa89d5864381a3fd9f1fe6785da…',

        'process-designer-component': 'https://050800-studio.creatio.com//core/5119e9df4aca8914fabf4effd4b3ee4…',

        'voice-to-text-component': 'https://050800-studio.creatio.com//core/9df4cfbb9e9b64ef08efce6d7b673e3…',

        'jQuery': 'https://050800-studio.creatio.com//core/f7072c6fb890cf46ab0e415e1c5edc0…',

        'ckeditor-base': 'https://050800-studio.creatio.com//core/35294e09797b9d02519ddb8ec253cc6…',

        'html2canvas': 'https://050800-studio.creatio.com//core/6bd482f253bafa6d551a21a9d1c5158…',

        'login-view-utils': 'https://050800-studio.creatio.com//core/dac89c851a756ef023c909a162fe1bd…',

        'configuration-loader': 'https://050800-studio.creatio.com//core/2a08fc37afe007049254c67723a07b7…',

        'configuration-bootstraps': 'https://050800-studio.creatio.com//core/0b716942a363fd530c825a6916ea3eb…',

        'loadbootstrap': 'https://050800-studio.creatio.com//core/fb69c3378bd3bdd1dcaab52942c87fa…',

        'chartjs': 'https://050800-studio.creatio.com//core/35da68cdf95e9468e2d8a3402ba2990…',

        'chartjs-label': 'https://050800-studio.creatio.com//core/0465154f993989d21ccc58b60b5eff8…',

        'chartjs-defaults': 'https://050800-studio.creatio.com//core/f5dcdb1296b21c01cb66773578fcdbd…',

        'chartjs-funnel': 'https://050800-studio.creatio.com//core/1d50b71dc2141b3e6bf11233f3110a0…',

        'chartjs-gauge': 'https://050800-studio.creatio.com//core/c69beeddee9d58074a185ac35ead686…',

        'user-agent': 'https://050800-studio.creatio.com//core/7b46df63a446479bad7a010aefae6d4…',

        'user-agent-parser': 'https://050800-studio.creatio.com//core/796eff62f0f726654cfc29d4a77df33…',

        'ng-core': 'https://050800-studio.creatio.com//core/6cb28d63fbb28f9a3377feea3f9d820…',

        'ng-loader': 'https://050800-studio.creatio.com//core/6eada957e17a6e76a7090421502adbb…',

        'ng-scripts': 'https://050800-studio.creatio.com//core/30950c16db19b349981dd6cd0b66a3b…',

        'ng-polyfills-es5': 'https://050800-studio.creatio.com//core/83382b3fa36e6adf19d56492fa6ed49…',

        'ng-polyfill-webcomp': 'https://050800-studio.creatio.com//core/ba560325babea1d1f73bcc2b076e626…',

        'numeral': 'https://050800-studio.creatio.com//core/b3ac42fc2efdd8256803f41aab70211…',

        '@creatio/sdk': 'https://050800-studio.creatio.com//core/091860f68bd3d2e237f482f14c45829…'

    },

    'shim': {

        'chartjs-label': {

            'deps': [

                'chartjs'

            ]

        },

        'chartjs-defaults': {

            'deps': [

                'chartjs-label'

            ]

        },

        'chartjs-funnel': {

            'deps': [

                'chartjs'

            ]

        },

        'chartjs-gauge': {

            'deps': [

                'chartjs'

            ]

        },

        'user-agent': {

            'deps': [

                'user-agent-parser'

            ]

        },

        'ng-core': {

            'deps': [

                'ng-loader'

            ]

        },

        'ng-loader': {

            'deps': [

                'ng-scripts'

            ]

        },

        'ng-scripts': {

            'deps': [

                'ng-polyfills-es5',

                'ng-polyfill-webcomp'

            ]

        },

        'process-designer-component': {

            'deps': [

                'ng-core'

            ]

        },

        'voice-to-text-component': {

            'deps': [

                'ng-core'

            ]

        }

    }

});

require(['loadbootstrap'], function() {});

    </script>

    <script type="text/javascript"

        src="https://050800-studio.creatio.com//core/f7072c6fb890cf46ab0e415e1c5edc0…"></script>

    <script type="text/javascript">

        console.warn('Creatio Debug mode is OFF. To switch ON use following code');

console.log('Terrasoft.SysSettings.postPersonalSysSettingsValue("IsDebug", true)');

Terrasoft.isDebug = false;

    </script>

    <script type="text/javascript">

        Terrasoft.DataValueTypeRange = {INTEGER: {maxValue:2147483647,minValue:-2147483648},FLOAT: {maxValue:79228162514264337593543950335,minValue:-79228162514264337593543950335},DATE_TIME: {maxValue:"9999-12-31T23:59:59.999",minValue:"0001-01-01T00:00:00.000"}};

    </script>

    <script type="text/javascript">

        Terrasoft.isSspInReadonlyMode = false;

    </script>

    <script type="text/javascript">

        let authErrorExceptions = Terrasoft.AuthErrorExceptions = {};

authErrorExceptions[4] = 'Access denied. Contact your system administrator';

authErrorExceptions[5] = 'Your password has expired. Re-set your password';

authErrorExceptions[10] = 'Time zone is invalid.';

authErrorExceptions[0] = 'Authorization failed';

    </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=%2fconnect%2ftoken" id="IndexForm">

        <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="eMuh9ihakhnX/zUqq7lTE6+Qjxg4SzesoxXF7ONcAMizlm2gDp+Gio00ugTgWm/AlwErvFthXa/vJl5/6RJTQJDAIj954pdUbX8rQ4ykxxFP9iqA" />

 

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

    </form>

</body>

 

</html>

Pratik Sanghani,

 

Thank you! This message is usually returned in case you are not authenticated. Did you use UserName and UserPassword as a ClientId and ClientSecret and used Basic Auth? And also are you passing a form-data grant_type key in the headers and also using the identity service URL as an endpoint to send request?

 

Best regards,

Oscar

Oscar Dylan,

 

Thank you for the Help. It is working fine for me as well. I was not using the identity service URL as an endpoint earlier. :)

Show all comments

Hi Community,

 

I was trying to build one scenario - On Error come during process execution i.e. System shows Error in Process Log Section, I want to log it in another Custom section and Create new record there. 

For this, I created a business process that can be triggered on the Change in Process Log Object. But that process is not getting triggered. Please guide me here? How to do it correctly?

 

Like 0

Like

3 comments

Dear Pratik,



Please note that our application doesn't support designing business processes that are triggered by a modification in system objects. The core of business process mechanisms works on low-level API which doesn't support start signal's functionality. This is done in order to avoid any kind of accidents with business process mechanisms and also for performance maintaining reasons.

 

However, you can try designing a process that runs, for example, every day and checks Process log records for errors, and then sends this information to a specific mailbox.

 

Kind regards,

Mira

Hi Pratik,

I had a similar issue, and that's the solution I came up with: 

My process is scheduled to run every 4 hours and the read data searches for process marked with the "Error" status, which name starts with a custom prefix (that I assigned to identify my processes). The subprocess is used to log the error in another custom section.

Hope it helps! 

Hi Mira and Federica Cattani,



Thanks for the help and explanation. 

Show all comments

Hello,

I am trying to validate a record before it gets inserted into the DB using entity events layer :  public override void OnInserting(object sender, EntityBeforeEventArgs e);

 

If the validation fails, I would like to display a message to the user. Is there a built in method like set validation message or something? I understand this can be done through Web socket but I would prefer if I am able to use a built in validator.

 

Thanks

Like 0

Like

2 comments
Best reply

Hello Shivani,

You can simply throw an exception from the event and it will halt the insert process and display the exception message to the user.

An an example, this OnInserting event checks to ensure the Also known as field is not empty:

using System;
using Terrasoft.Core.Entities;
using Terrasoft.Core.Entities.Events;
 
namespace FX.EntityEventListeners
{
    [EntityEventListener(SchemaName = "Account")]
    public class UsrAccountEntityEvents : BaseEntityEventListener
    {
        public override void OnInserting(object sender, EntityBeforeEventArgs e)
        {
            base.OnInserting(sender, e);
            var account = (Entity)sender;
 
            if (string.IsNullOrEmpty(account.GetTypedColumnValue&lt;string&gt;("AlternativeName"))) 
            {
                throw new Exception("Also known as cannot be blank");
            }
        }
    }
}

This displays this message when the user inserts an account without this field populated:

Ryan

Hello Shivani,

You can simply throw an exception from the event and it will halt the insert process and display the exception message to the user.

An an example, this OnInserting event checks to ensure the Also known as field is not empty:

using System;
using Terrasoft.Core.Entities;
using Terrasoft.Core.Entities.Events;
 
namespace FX.EntityEventListeners
{
    [EntityEventListener(SchemaName = "Account")]
    public class UsrAccountEntityEvents : BaseEntityEventListener
    {
        public override void OnInserting(object sender, EntityBeforeEventArgs e)
        {
            base.OnInserting(sender, e);
            var account = (Entity)sender;
 
            if (string.IsNullOrEmpty(account.GetTypedColumnValue&lt;string&gt;("AlternativeName"))) 
            {
                throw new Exception("Also known as cannot be blank");
            }
        }
    }
}

This displays this message when the user inserts an account without this field populated:

Ryan

 

Thanks Ryan! This works!

Show all comments

I'm looking to see if Creatio supports the concept of Sub-Orders. In this case, a "master order" would be linked to two or more other orders. The Master Order would be basically readonly and the product line items and discounts would be automatically updated with suborder line items and discounts as the suborders were updated.

 

The use case we have is when a customer needs two separate invoices for products (due to customer invoicing restrictions) but the implementation team needs the orders combined into a single work order.

Like 1

Like

0 comments
Show all comments