Looks like there is an error in the add-on https://marketplace.creatio.com/template/creating-quotes-opportunities I just installed the plugin into our instance and I tried to add the section Quotes into the Workplace Sales. But it doesn’t get added. When I checked the inspect element in the browser it shows the below error

need some help to fix this issue

Like 0

Like

2 comments
Best reply

Hi Ganesh,



We recommend using the following order of actions: first, add any basic section to the workplace, and only after that try adding the 'Quotes' section.

 

This should help.

Hi Ganesh,



We recommend using the following order of actions: first, add any basic section to the workplace, and only after that try adding the 'Quotes' section.

 

This should help.

Thanks it worked. :) 

Show all comments

I have some strings in email template, separated by Newlines:

Text1
 
Text3

 

Depending on a condition, Text2 could be added between:

Text1
 
Text2
 
Text3

 

To achieve this, I add [#UsrText2#] custom macros field of type string:

Text1
 
[#UsrText2#]Text3

 

But I can't can't make [#UsrText2#] contain NewLine. So result is:

Text1
 
Text2Text3

 

Email is sent with business process automatically.

How could I add a Newline? Neither Environment.NewLine nor \r\n, \n work.

Text1 and Text3 could also be dependent on conditions, so I don't want multiple templates for different combination of conditions.

Like 0

Like

5 comments
Best reply

Amazing!

Solved with <br/>

 

Yes. You make different Blocks.

Then you show the Block that matches the recipients information.

One block is

Text1   [#UsrText2#] Text3

Next block is

Text1   Text2 Text3

Then you just set them up so either one or the other is used with conditions.

Dear Yuriy,

 

If this email is sent via business process it will be easier to just create several conditional flows based on record conditions and create a template for each condition. Since there is no option to set up dynamic HTML in the template this will be the best option.

 

Best regards,

Angela

Angela Reyes,

This is what I'm afraid of. We have a minimum of 2 conditions. They will give 4 different templates. If one more condition is added, there will be 8 templates and 8 flows. But we really need these lines separated by newline. Each optional string needs to have 2 Newlines. This is the desired result:

Text1
 
Text2(optional)
 
Text3
 
Text4(optional)
 
Text5

What I get currently:

Text1
 
Text2Text3
 
Text4Text5

 

Julius,

Thank you Julius, I didn't say, email is sent automatically with a business process.

Amazing!

Solved with <br/>

Show all comments

Hi All, 

 

I have a couple of question regarding Creatio Cloud that I couldn't find the answer in the documentation.

  1. Is the cloud application backed up regularly? Is this Enabled by default or do we need to ask support? what's the backup frequency?
  2. What is the Disaster recovery process for Creatio Cloud?
  3. When deploying a package, either from marketplace or a custom built one, is it advisable to request a DB backup? What would be the recommended deployment process?

Apologies if these questions are already covered in the documentation.

 

Thanks,

Tiago

 

Like 2

Like

3 comments
Best reply

Hello Tiago, 

 

1. A differential backup of a cloud instance is being created automatically every day, a full back - once a week: full backup - on Saturday, differential backup - on other days. The backup also can be done per your request at a specific time. 

2. Our backup protection against catastrophic events is provided by transferring the backup to Amazon Simple Storage Service (S3). The recovery process for backups of <7 days usually takes 2-8 hours depending on a backup volume. The backup retention period is 90 days. 

3. You can install marketplace and custom packages via the system interface, but we recommend submitting a request to Creatio support team in case you would like to install custom packages as we automatically create a backup of a cloud website before the package is being installed and can promptly recover the website in case any issues occur. 

 

Please, let us know in case any further information is required. 

 

Best regards, 

Olga. 

Hello Tiago, 

 

1. A differential backup of a cloud instance is being created automatically every day, a full back - once a week: full backup - on Saturday, differential backup - on other days. The backup also can be done per your request at a specific time. 

2. Our backup protection against catastrophic events is provided by transferring the backup to Amazon Simple Storage Service (S3). The recovery process for backups of <7 days usually takes 2-8 hours depending on a backup volume. The backup retention period is 90 days. 

3. You can install marketplace and custom packages via the system interface, but we recommend submitting a request to Creatio support team in case you would like to install custom packages as we automatically create a backup of a cloud website before the package is being installed and can promptly recover the website in case any issues occur. 

 

Please, let us know in case any further information is required. 

 

Best regards, 

Olga. 

Olga Avis,

Hi Olga,

how can i restore a backup? I need a restore of a state ~10 days ago.

Best regards,

Wolf

Hello Wolf Galetzki,

 

If you would like to restore the website from the backup, please, contact our Technical support team at support@creatio.com. We kindly ask you to specify the website URL and the date of the backup creation.

 

Please, let us know in case you have any further questions. 

 

Best regards, 

Olga. 

Show all comments

Dear mates,

I can not find why, on my development environment, my Put oData Call return me an permission error:

403 - Forbidden: Access is denied

You do not have permission to view this directory or page using the credentials that you supplied.

The rights are the same that on our production environment and it's working fine in production.

Does anybody have an idea to solve this issue please.

Thank you,

Nicolas

Like 0

Like

2 comments

Dear Nicolas, 

 

403 error means that you are not passing all needed authentication cookies and headers in the request. Please make sure that you are calling Auth service with correct credentials and that you use all necessary cookies and headers that you receive from the response(.ASPXAUTH, BPMCSRF): 

https://academy.creatio.com/documents/technic-sdk/7-16/authentication-external-requests

https://academy.creatio.com/documents/technic-sdk/7-16/executing-odata-queries-using-fiddler

 

Best regards, 

Dennis 

Thank you Denis,

 

You are right, so i will check my functions.

 

Have a nice day

Show all comments

Hello team,

We are encountering the following exception while dealing with UserConnection.

System.ServiceModel.ServiceActivationException: Set AspNetCompatibilityEnabled true

   at Terrasoft.Web.Common.BaseService.get_UserConnection()

   at Terrasoft.Configuration.UsrDeliqDBEntry.UsrdeliqDBEntry.d__7.MoveNext()

Could you please let us know if we are missing anything?

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class UsrdeliqDBEntry : BaseService
{
 
 	private readonly UsrLogger usrLogger = UsrLogger.Instance;
    private Guid transRefId { get; set; }
    Guid intendedUserId= Guid.Empty;
 
 
		[OperationContract]
       [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = 
 WebMessageBodyStyle.Wrapped,
       ResponseFormat = WebMessageFormat.Json)]
		public async Task<string> saveCheckIndatabase(string documentId, string documentType, string customerId, Guid transRefId, Guid currentUserId)
        {
         var logger = global::Common.Logging.LogManager.GetLogger("MyLogger");
 
       try
       {var intendedUserSelect= new Select(UserConnection)
                 							 .Column("Id")
                 							 .From("SysAdminUnit")
                 							 .Where("ContactId").IsEqual(Column.Parameter(currentUserId))
                                 			  as Select;
            intendedUserId = intendedUserSelect.ExecuteScalar<Guid>();
       }
       catch(Exception e)
       {
       	logger.Info("Exception ="+ e.ToString());
       }

 

Like 0

Like

3 comments

Hello Shivani,

 

Please see this community post https://community.creatio.com/questions/generate-and-send-printable-email-started-timer where the same problem was discussed. 

 

Best regards,

Oscar

Oscar Dylan,

Looks like my case is different. How do I get UserConnection in a source code schema which is being called from another webservice configuration?

Shivani Lakshman,

 

Judging from your last comment you are calling this method, not like a web service but rather like a regular method of the class. Such an issue occurs when you are trying to obtain UserConnection in the code that runs in the background (in case of the article that Oscar has sent previously it happens because after timer element the process is executed in the background). You can try to pass userConnection to the method itself from where you call it. Also, you can try getting userConnection in the following way: 

private SystemUserConnection _systemUserConnection;
        private SystemUserConnection SystemUserConnection
        {
            get
            {
                return _systemUserConnection ?? (_systemUserConnection = (SystemUserConnection) AppConnection.SystemUserConnection);
            }
        }

 

 

Best regards, 

Dennis 

Show all comments

Hi. I am using C# decimal functions such as Math.Abs, Math.Round, etc. in a method on a page edit module, but it is not accepted. why is that?

Like 1

Like

4 comments

Dear Ricardo,

 

In order to use the static “Math” class in C# code you should add the “System” namespace to the file:

 

using System;

 

If the issue still exists, please provide us with a source code of the module and the error message. It will help us to analyze the issue in more details.

 

Additionally, please find more information about the “Math” class in the article by the link below:

 

https://docs.microsoft.com/en-us/dotnet/api/system.math?view=netcore-3.1

 

Best regards,

Norton

Norton Lingard,

Thanks for your prompt reply.

the code follows.

Where exactly in the code should I insert "using System; " ?

 

+++++++++++++++++++++++

define("FinJournal1Page", [], function() {

    return {

        entitySchemaName: "FinJournal",

        attributes: {

            "FinJrnNetAmount": {

                dataValueType: Terrasoft.DataValueType.FLOAT,

                dependencies: [

                    {

                        columns: ["FinJrnAmount"],

                        methodName: "calculateNetValue"

                    }

                ]

            }

        },

        modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,

        details: /**SCHEMA_DETAILS*/{

            ...

        }/**SCHEMA_DETAILS*/,

        businessRules: /**SCHEMA_BUSINESS_RULES*/{

            ... 

        }/**SCHEMA_BUSINESS_RULES*/,

        methods: {

            onEntityInitialized: function() {

                // Method parent implementation is called.

                    this.callParent(arguments);

                    this.calculateNetValue();

            },

                

                calculateNetValue: function() {

                //

                // MATH USE EXAMPLE

                //

                var amount = this.get("FinJrnAmount");

                if (!amount) {

                    amount = 0;

                }

                var absAmount = Math.Abs(amount) ;

                result = Math.Round(absAmount * 0.015, 2);

                this.set("FinJrnNetAmount", result);

            }

        },

        dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,

        diff: /**SCHEMA_DIFF*/[

            ...

        ]/**SCHEMA_DIFF*/

    };

});

+++++++++++++++++++++++

Best Regards,

Dear Ricardo,

 

It is impossible to use C# code inside JS code. Please note that it exists similar “Math” object in JS language. Please find more information about it in the article by the link below:

 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math

 

 Best regards,

Norton

Working fine now . Thanks

Show all comments

Recently, in Creatio version 7.14.3.1686, we are encountering the error "TypeError: ProcessModuleUtilities.executeProcess is not a function". The code implementation regarding  "Cancel" button for Activity related tasks was done a month ago and was working perfectly fine, now I happen to see this error at the code "UsrActivityDashboardModel" attached here as text file. Though this was working fine until yesterday, I am getting the type error today. Kindly help me debug the same. We have implemented the same in our client environments and some of the env started throwing this error.

 

DB: oracle 12.1.0

Creatio : 7.14.3.1686

Like 0

Like

3 comments

Hello Dharini, 



 

First of all I have another error when I switched to not debug mode, and the cause of this error also could be a reason of your error (in debug mode all works properly).



Apart from that, you have some wrong dependencies in schema UsrActivityDashboardModel, you should replace EntityDashboardItemViewModel with ActivityDashboardItemViewModel 

Also you can replace

ProcessModuleUtilities.executeProcess(args);

with

ProcessModuleUtilities.runProcess("UsrCancelButtonBP",

{ RecordId: IdParameter } ,callback, scope);

Where callback - is a function which will execute after a process completion (you can specify Terrasoft.emptyFn), scope parameter is the scope in which callback will execute (usually this).



Kind regards,

Roman

Roman Brown,

I require help regarding the implementation of callback,scope. My code is as follows,

OnRejectButtonClick: function() {

                 this.console.log("Reject Button..");

                this.console.log(this.get("Id"));

                var IdParameter = this.get("Id");

                var args = {

                    sysProcessName: "UsrCancelButtonBP",

                    parameters: {

                        RecordId: IdParameter

                    }

                };

                ProcessModuleUtilities.executeProcess(args);

            },

Also I would like to know why ProcessModuleUtilities.executeProcess(args) is not working though I have added the dependencies related to ProcessModuleUtilities. Could you please provide an insight on this? 

 

define("UsrActivityDashboardModel",["ActivityDashboardItemViewModel", "ActivityDashboardItemViewModelResources", "ProcessModuleUtilities",
        "ConfigurationConstants", "MiniPageUtilities"],
    function(resources, ProcessModuleUtilities, ConfigurationConstants) {
        Ext.define("Terrasoft.configuration.UsrActivityDashboardModel", {
            extend: "Terrasoft.ActivityDashboardItemViewModel",
            alternateClassName: "Terrasoft.UsrActivityDashboardModel",
            entitySchemaName : "Activity",
 
            Ext: null,
            sandbox: null,
            Terrasoft: null,
 
 
 
            columns: {
                /**
                 * Process element identifier.
                 */
                "ProcessElementId": {
                    type: Terrasoft.ViewModelColumnType.ENTITY_COLUMN,
                    dataValueType: Terrasoft.DataValueType.STRING
                },
                /**
                 * Indicates if button "Execute" was clicked.
                 */
                "ExecuteButtonClick": {
                    type: Terrasoft.ViewModelColumnType.ENTITY_COLUMN,
                    dataValueType: Terrasoft.DataValueType.BOOLEAN
                },
                "RejectButtonClick": {
                    type: Terrasoft.ViewModelColumnType.ENTITY_COLUMN,
                    dataValueType: Terrasoft.DataValueType.BOOLEAN
                }
            },
 
 
 
            /**
             * @inheritdoc Terrasoft.BaseDashboardItemViewModel#initIconSrc
             * @overridden
             */
            initIconSrc: function() {
                var iconSrc = resources.localizableImages.IconImage;
                this.set("IconSrc", iconSrc);
            },
 
 
 
            /**
             * @inheritdoc Terrasoft.EntityDashboardItemViewModel#addQueryColumns
             * @overridden
             */
            addQueryColumns: function(esq) {
                this.callParent(arguments);
                esq.addColumn("Title", "Caption");
                esq.addColumn("Type");
                esq.addColumn("StartDate", "Date");
                esq.addColumn("Owner.Name", "Owner");
                esq.addColumn("ProcessElementId");
            },
 
 
 
            /**
             * @inheritdoc Terrasoft.BaseDashboardItemViewModel#getProcessElementUId
             * @overridden
             */
            getProcessElementUId: function() {
                return this.get("ProcessElementId");
            },
 
 
 
            /**
             * @inheritdoc Terrasoft.BaseDashboardItemViewModel#execute
             * @overridden
             */
            execute: function(options) {
                var elementUId = this.get("ProcessElementId");
                var recordId = this.get("Id");
                var schemaName = this.get("EntitySchemaName");
                if (!this._isEmailActivity() &amp;&amp; this.isActivity() &amp;&amp; this.hasMiniPage(schemaName)) {
                    this.showMiniPage(options);
                    return;
                }
                var config = {
                    procElUId: elementUId,
                    recordId: recordId,
                    scope: this,
                    parentMethodArguments: arguments,
                    parentMethod: this.getParentMethod()
                };
                if (ProcessModuleUtilities.tryShowProcessCard.call(this, config)) {
                    return;
                }
                this.callParent(arguments);
            },
 
 
 
            /**
             * Returns true if it is task activity entity.
             * @private
             * @return {Boolean} True if it is task activity entity.
             */
            isActivity: function() {
                var executionData = this.get("ExecutionData");
                var schemaName = this.get("EntitySchemaName");
                return this.Ext.isEmpty(executionData) ||
                    (executionData &amp;&amp; schemaName === executionData.entitySchemaName);
            },
 
            ////TODO #CRM-33987
            /**
             * Returns if current activity is email.
             * @returns {Boolean} Returns if current activity is email.
             */
            _isEmailActivity: function() {
                var activityTypes = ConfigurationConstants.Activity.Type;
                var typeLookup = this.get("Type");
                return typeLookup.value === activityTypes.Email;
            },
 
 
 
            /**
             * @inheritdoc Terrasoft.BaseDashboardItemViewModel#onExecuteButtonClick
             * @overridden
             */
            onExecuteButtonClick: function() {
                this.set("ExecuteButtonClick", true);
                this.callParent(arguments);
            },
 
            OnRejectButtonClick: function() {
            	 this.console.log("Reject Button..");
				this.console.log(this.get("Id"));
				var IdParameter = this.get("Id");
				var args = {
                    sysProcessName: "UsrCancelButtonBP",
                    parameters: {
                        RecordId: IdParameter
                    }
                };
                ProcessModuleUtilities.executeProcess(args);
			},
 
            /**
             * @inheritdoc Terrasoft.BaseDashboardItemViewModel#onCaptionClick
             * @overridden
             */
            onCaptionClick: function() {
                this.set("ExecuteButtonClick", false);
                this.callParent(arguments);
            },
 
 
 
            /**
             * @inheritdoc Terrasoft.MiniPageUtilities#openMiniPage
             * @overridden
             */
            openMiniPage: function(config) {
                if (this.get("ExecuteButtonClick")) {
                    var status = {
                        name: "ActivityMiniPageStatus",
                        value: "Done"
                    };
                    if (config &amp;&amp; this.Ext.isArray(config.valuePairs)) {
                        config.valuePairs.push(status);
                    } else {
                        config.valuePairs = [status];
                    }
                }
                this.callParent(arguments);
            }
        });
    });

 

Show all comments

While updating from repository in my local instance, I am getting the following error,

 

Error

An error has occurred when working with the repository

Failed to run the WC DB work queue associated with '\xxxxxxxxxxxxxxx', work item 23955 (file-install Schemas/UsrBPMCustomerOppurtunity/UsrBPMCustomerOppurtunity.cs 1 0 1 1)

SvnErrorCode: SVN_ERR_WC_BAD_ADM_LOG

RootCause: The system cannot find the path specified.

 

But there were no changes made to repository or repository path. Kindly help me with the above issue.

 

DB: Oracle 12.1.0

SVN: Visual SVN server with Tortoise SVN client

Like 0

Like

9 comments

 

 

Grigoriy,

I have a doubt regarding the commands -

delete from work_queue and svn clean up 

Could you please clarify whether running these commands will clean all work queues related to other SVN projects because there are several other projects running in the SVN server and clearing the work queue will create problems.

Hello!

 

1. You should export local changes to .md files (if there are any)

https://academy.creatio.com/documents/technic-sdk/7-16/schema-export-and-import

2. Click the "Restore from repository" button. Note, this step will revert all local changes not committed to the repository.

 

Please, let us know in case any further information is required. 

 

Best regards,

Olga. 

Olga Avis,

I have problem connecting to SVN repository so "Restore from repository" did not work. I tried this as a first step and then writing here seeking help.

I need help in how to do an SVN clean up with Visual SVN Server. I could not locate the .svn\wc.db as given in the post https://stackoverflow.com/questions/22362823/failed-to-run-the-wc-db-work-queue-associated-with-file

DhariniS,

 

The issue can be connected to the SVN repository itself.  Could you please try to use Tortoise SVN cleanup

If a Subversion command cannot complete successfully, perhaps due to server problems, your working copy can be left in an inconsistent state. In that case you need to use TortoiseSVN → Cleanup on the folder. It is a good idea to do this at the top level of the working copy.

 

Please, let us know in case it does not help you. 

 

Best regards,

Olga. 

Olga Avis,

Even after doing TotoiseSVN -> Cleanup on the folder (after check out from SVN), I am still getting the same error.

Please help.

Dear DhariniS,

 

Most probably, the issue is related to the authorization. Your saved authorization is stored by default in the C:\Windows\Temp folder, and files from there are sometimes lost. Please try changing the “sourceControlAuthPath” and “defPackagesWorkingCopyPath” parameters in ConnectionStrings on the path from where the data will not be lost (e.g., the booth folder itself). Please see the example below:

 

<add name="defPackagesWorkingCopyPath" connectionString="C:\inetpub\wwwroot\bpmOnline\Terrasoft.WebApp\Terrasoft.Configuration\Pkg" /> 

<add name="sourceControlAuthPath" connectionString="C:\inetpub\wwwroot\bpmOnline\Terrasoft.WebApp\svn" />

 

 

(The svn folder for the “sourceControlAuthPath” parameter must be created).

After that, log on to the storage through the configuration.

 

If the issue still exist, please try to find the local svn database for this package and clear the “WORK_QUEUE” table. The database is on the following path:

 

C:\Windows\Temp\<web-site number>\<IIS user>\Default\TerrasoftPackages\<Package>\.svn\wc.db.

 

Best regards,

Norton

Norton Lingard,

I tried the same but I am getting the following error on doing "Update from Repository",

 

Invalid descriptor: Could not find a part of the path 'C:\TESTUSER71\7.14.3.1686_SalesEnterprise_Marketing_ServiceEnterprise_Softkey_Oracle_ENU\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\Safaricom_SFA_LeadToCash\Schemas\MobileAccountGridPageSettingsDefaultWorkplace\MobileAccountGridPageSettingsDefaultWorkplace.js'. Path: C:\TESTUSER71\7.14.3.1686_SalesEnterprise_Marketing_ServiceEnterprise_Softkey_Oracle_ENU\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\Safaricom_SFA"

Attaching the screenshot here.

Dear DhariniS,

 

Unfortunately, it is difficult to determine the root cause of the issue without having an access to the instance and to the config files. Therefore, in order to resolve the issue please try to repeat all steps that were suggested in this post.

 

Best regards,

Norton

Show all comments

I am facing an issue in opportunities section where the case life cycle is not loading and in the console,  getting the error "Uncaught TypeError : type c is not a constructor". We have been facing the issue for a long time intermittently. Request help in resolving this.

 

Note: 

DB : Oracle Db 12.1.0

Creatio : Creatio Marketing,Sales,Services 7.14

Like 0

Like

4 comments

Dear Dharini, 

 

To find out the source of this issue please debug the application code to find on which code element the system tries to use "c" as a constructor: https://academy.creatio.com/documents/technic-sdk/7-16/client-code-debugging

 

Best regards,

Angela

Angela Reyes, 

Sure let me update here with the debug results.

 Hi Angela, while debuging I am getting the at the code attached here as screenshot

DhariniS,

We checked the result of debugging you provided and contacted our developer's team to provide you with a piece of advice about the issue you faced but unfortunately, it is quite hard to analyse this behaviour. We recommend you to contact Creatio Support team or your manager for advisory hours to receive more constructive suggestions about this particular error message. If you find more details during additional debugging feel free to share your results here. 

 

Best regards,

Angela

Show all comments

Hi All,

I've noticed something strange happening when notifications are created by a portal user and assigned to a Creatio user.

I've created a business Process, triggered when a lead is created in the Partner Portal by a Partner user. This process creates and assigns a notification to the partner manager. 

When a lead is created, the partner manager gets the indication he has a new notification, however when he checks the notification section no new notifications are present.

If the partner manager then triggers a process that creates a new notification assigned to itself (ex: Create Opportunity from Lead v7.8.0), a notification is created plus the previous expected notification is also shown.

Both notifications work fine and navigate to the correct record as expected. It feels like the issue is just with showing the notification. 

 

As anyone seen anything like it? 

 

Thanks,

Tiago

 

Like 0

Like

4 comments

How do you add a notification? Give the code or іschema process?

Hi Grigoriy, 

 

I created the following business process.

This process is triggered by a Portal user and creates a notification (step: Notify Partner Owner) assigned to the the partner owner, an internal user. 

I've copied the Step: notify Partner Owner from Business Process: Create Opportunity from Lead v7.8.0 > Step: Opportunity Notification. 

 

The Notification is created, just not shown until the Internal user triggers a process that creates a notification. 

 

 

 

Best regards,

Tiago

Tiago Carvalho,

Dear Tiago,

 

Can you please specify if the portal user can view notifications in notification panel? Or you expecting only popup?

 

Best regards,

Angela

Hi Angela,

 

The Portal user can't view notifications in the notification panel.

However the notification is addresses to the portal user manager (a company user) who can see the notifications. 

 

This user, see the warning that a there's a new notification. 

 

but when opening no new notification is shown. 

 

If this user triggers then triggers Business the Process: Create Opportunity from Lead v7.8.0. The process creates a new notification (Opportunities) and the previous hidden notifications are shown (Leads). 

 

I hope it makes sense.

 

Thanks,

Tiago

 

 

Show all comments