I have 2 environments of Creatio CRM full bundle.

I have created my package in environment 1 which has version 7.16.0. I have committed to SVN server. 

Now I have another environment environment 2 in which I want to install package from SVN repository but it has downgraded version 7.15.4.

 

The package has all custom objects. All the objects have very simple connections and it only depends on ProductCore package.

 

I want to know if it is possible to install this package to another Env 2 which has a downgraded version.

Like 0

Like

2 comments

Dear Ramnath, 



We recommend to transfer packages between environments deployed on the same version of Creatio in order to avoid unexpected issues after or during the process. 

You can follow this update guide where updating process is described:

https://academy.creatio.com/documents/update-guide



Please update your second website to the same version as the first one before transferring any packages between them. 



Kind regards,

Roman

Hi Roman,

These both environments are demo environments. 

It is not possible to upgrade.

Show all comments

Hi, 

 

Hope someone can help me with replicating OrdersProducts in Quotes Section. I have tried that and while click on + icon products are not displaying.

 

Thank you.

Like 0

Like

7 comments

Dear Sushma,

The logic of the Product detail is implemented in OrderPage so if you page ss inherited from the BaseModulePage base page it will not work. You can investigate order page schema code to copy it to your new section or try the following example (the page should be modified according to the settings of your detail, otherwise it will not work):

define("UsrOrder3Page", ["EntityProductCountMixin"], function() {

    return {

        entitySchemaName: "Order",

        messages: {

            "GetOrderProductSummary": {

                mode: Terrasoft.MessageMode.PTP,

                direction: Terrasoft.MessageDirectionType.SUBSCRIBE

            },

            "UpdateOrderProductSummary": {

                mode: Terrasoft.MessageMode.PTP,

                direction: Terrasoft.MessageDirectionType.PUBLISH

            },

        },

        mixins: {

            EntityProductCountMixin: "Terrasoft.EntityProductCountMixin"

        },

        attributes: {

            "Currency": {

                dataValueType: Terrasoft.DataValueType.ENUM,

                lookupListConfig: {

                    columns: ["Division", "ShortName", "Symbol"]

                }

            },

            "AmountAndCurrency": {

                dependencies: [

                    {

                        columns: ["Amount", "Currency"],

                        methodName: "updateOrderProductSummary"

                    }

                ]

            },

            "IsPaymentAmountLargerThanAmount": {

                dataValueType: this.Terrasoft.DataValueType.BOOLEAN,

                type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                value: false,

                dependencies: [

                    {

                        columns: ["PaymentAmount", "Amount"],

                        methodName: "setIsPaymentAmountLargerThanAmount"

                    }

                ]

            }

        },

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

        details: /**SCHEMA_DETAILS*/{

            ProductInProductsTab: {

                schemaName: "OrderProductDetailV2",

                entitySchemaName: "OrderProduct",

                filter: {

                    masterColumn: "Id",

                    detailColumn: "Order"

                },

                subscriber: {methodName: "refreshAmount"},

                defaultValues: {

                    Currency: {masterColumn: "Currency"},

                    CurrencyRate: {masterColumn: "CurrencyRate"}

                }

            }

        }/**SCHEMA_DETAILS*/,

        businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,

        methods: {

            refreshAmount: function() {

                this.updateAmount(function() {

                    this.updateOrderProductSummary();

                }, this);

            },

            subscribeSandboxEvents: function() {

                this.callParent(arguments);

                this.sandbox.subscribe("GetOrderProductSummary", this.getProductSummaryConfig, this,

                    [this.getDetailId("ProductInProductsTab")]);

            },

            updateOrderProductSummary: function() {

                this.sandbox.publish("UpdateOrderProductSummary", null,

                    [this.getDetailId("ProductInProductsTab"), this.getDetailId("ProductInResultsTab")]);

            },

            getProductSummaryConfig: function() {

                var currency = this.get("Currency") || {};

                return {

                    count: this.get("ProductCount"),

                    currency: currency.Symbol,

                    amount: this.get("Amount")

                };

            },

            setIsPaymentAmountLargerThanAmount: function() {

                var paymentAmount = this.get("PaymentAmount");

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

                var isLarger =

                    this.isNotEmpty(paymentAmount) &&

                    this.isNotEmpty(amount) &&

                    (paymentAmount > amount);

                this.set("IsPaymentAmountLargerThanAmount", isLarger);

            },

            onSaved: function() {

                this.callParent(arguments);

                var config = arguments[arguments.length - 1];

                if (config && config.isSilent) {

                    return;

                }

                this.updateAmountAfterSave("ProductInProductsTab",

                    function() {

                        this.updateDetail({detail: "ProductInResultsTab"});

                        this.updateOrderProductSummary();

                    },

                    this

                );

            },

            loadEntity: function(primaryColumnValue, callback, scope) {

                scope = scope || this;

                this.callParent([primaryColumnValue, function() {

                    this.setIsPaymentAmountLargerThanAmount();

                    this.setProductCount(primaryColumnValue, callback, scope);

                }, scope]);

            },

            getProductCountInEntityColumnName: function() {

                return "ProductCount";

            },

            setColumnValues: function(entity) {

                this.callParent(arguments);

                this.updateProductsCount(entity);

            },



            modifyAmountESQ: function(esq) {

                this.mixins.ProductEntryPageUtils.modifyAmountESQ.apply(this, arguments);

                this.addProductsCountColumn(esq);

            },

            updateAmountColumnValues: function(entity) {

                this.mixins.ProductEntryPageUtils.updateAmountColumnValues.apply(this, arguments);

                this.updateProductsCount(entity);

            },

            addProductsCountColumn: function(esq) {

                esq.addAggregationSchemaColumn("[OrderProduct:Order].Id",

                        this.Terrasoft.AggregationType.COUNT, "ProductCount");

            },

            updateProductsCount: function(entity) {

                var countColumn = "ProductCount";

                this.setColumnValue(countColumn, entity.get(countColumn), {preventValidation: true});

            }

        },

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

        diff: /**SCHEMA_DIFF*/[

            {

                "operation": "insert",

                "name": "ProductInProductsTab",

                "values": {

                    "itemType": 2,

                    "markerValue": "added-detail"

                },

                "parentName": "Tab0686e409TabLabel", //detail placement

                "propertyName": "items",

                "index": 0

            }

        ]/**SCHEMA_DIFF*/

    };

});

Angela Reyes,

Thank you for your help.  I successfully replicated that functionality. But Currency is not updating in ProductsSection when currency is changed in maing page.

sushma,

Can you please specify how it is not updated? Do you mean the currency that is specified in the price list? 

Angela Reyes,

There is multicurrency amount field in Quote page wich is sum of amounts of all products of detail and is not working as expected. when changing currency of amount field in quote page and click on save getting error as shown in attachment.

sushma,

It is hard to find the reason of this error as it is a custom object and there is no information in the pop-up. Try to debug (

https://academy.creatio.com/documents/technic-sdk/7-15/client-code-debugging) the application using developer tools to locate what causes this error. 

when trying to debug when i change 

 "Currency": {

                dataValueType: Terrasoft.DataValueType.ENUM,

                lookupListConfig: {

                    columns: ["Division", "ShortName", "Symbol"]

                }

            },

to  "Currency": {

                dataValueType: Terrasoft.DataValueType.LOOKUP,

                lookupListConfig: {

                    columns: ["Division", "ShortName", "Symbol"]

                }

            },

Error is not coming as it says when updating there is mismatch with datatype of currency. But still detail is not updating when currency is changed and total amount is not updating based on sum of amounts of all products

sushma,

why are you trying to change currency to lookup type? It should remain ENUM

Show all comments

For instance, I have a column Account.UsrFlagTemp.

I don't need it anymore and I want to delete it.

But I want to search through all the processes to find out if any process still uses it.

Is there a way to do it automatically?

This is the cloud version.

Like 0

Like

1 comments

Hello Yuriy,

 

We do not recommend to delete columns in general, if you do not need this column you can set its usage mode to "none". If any process in your system reads all columns from the Account object this process will stop working after the column is removed even if the column itself is not used. 



This is why it is better to change usage mode in the column setup in the configuration. 

 

Best regards,

Angela

Show all comments

I have read this article regarding adding multiple value to a detail.

Link - https://academy.creatio.com/documents/technic-sdk/7-15/adding-multiple-records-detail

 

 

But I do not understand these variable values. The opportunity and contact are the sections that are already created in the system. I want to know what values should I put in custom detail schema.

 

Details of Objects (every object is custom) -

  1. Client section with a detail of Partners
  2. Partners detail is made from Partner section

I want to change the Partner detail in Client to add multiple records. But I do not understand what should be the values of rootEntitySchemaName, rootColumnName, relatedEntitySchemaName, relatedColumnName.

 

Can anyone please help in this matter?

 

Thanks 

Ram

Like 0

Like

4 comments
Best reply

Hello Ramnath,

 

rootEntitySchemaName is the name of the parent object. This is likely the object for the page where the detail is located, so if the detail is on the Account page, this would be Account

 

rootColumnName is the name of the column on the detail object that relates it to the parent object. In the example of being on the Account page, this would be the name of the column on the detail object that is the account lookup, such as UsrAccount

 

relatedEntitySchemaName is the name of the object you're looking up to add to the detail. So, if the lookup is looking up contacts, this would be Contact

 

relatedColumnName is the name of the column on the detail object that the result from the lookup is stored in. So in the example of looking up contacts, this would be a contact lookup on the detail object, such as UsrContact.

 

Maybe this article will help? https://customerfx.com/article/adding-to-a-detail-from-a-lookup-in-crea…

 

Ryan

Hello Ramnath,

 

rootEntitySchemaName is the name of the parent object. This is likely the object for the page where the detail is located, so if the detail is on the Account page, this would be Account

 

rootColumnName is the name of the column on the detail object that relates it to the parent object. In the example of being on the Account page, this would be the name of the column on the detail object that is the account lookup, such as UsrAccount

 

relatedEntitySchemaName is the name of the object you're looking up to add to the detail. So, if the lookup is looking up contacts, this would be Contact

 

relatedColumnName is the name of the column on the detail object that the result from the lookup is stored in. So in the example of looking up contacts, this would be a contact lookup on the detail object, such as UsrContact.

 

Maybe this article will help? https://customerfx.com/article/adding-to-a-detail-from-a-lookup-in-crea…

 

Ryan

Ryan,

 

Thanks for helping me out.

 

Please guide me in this situation more.

Overview of whole scenario

I created a custom detail in a custom section.  I have created a Section Contacts (neither base object nor replacing object, It is custom made) and Clients Section. Clients section has a detail Contacts. The detail's object name is the Contacts section.

 

Section Page - UsrClients

Detail object - UsrContacts (has lookup of UsrClient for connecting record to UsrClients with other inherited columns present in UsrContacts)

 

Now the name will be

rootEntitySchemaName - UsrClients (section page object name)

rootColumnName - UsrClient  (the referencing lookup present in UsrContacts)

relatedEntitySchemaName - UsrContacts (Section page from where records will be read)

relatedColumnName - UsrContact (lookup present in detail)

 

Now the problem is how can I create a lookup pointing to the same object on which detail is build.

Lookup points to UsrContacts and detail is also created on UsrContacts.

 

RAMNATH SHARMA,

 

The detail should be a separate object. Like in the example on the academy, OpportunityContact object on which the detail is built on contains Opportunity and Contact columns. In your case, you would need to create a separate object for the detail that would contain UsrClients and UscrContacts columns, and build the detail on this object. 

Dennis Hudson,

 

Yes, you are right. I have created a new object with 2 looks fields to add this functionality. And it works.

Thanks

Show all comments

I need to have the total price with tax (Quebec taxes) but it doesn't work. I can see the tax amount but it's not added to the total amount of the order. 

1. I defined the tax value in "Taxes lookup" (See screenshot)

2. I have Price includes taxes set to have the tax in the total 

3. I defined quebec taxes as default tax in system settings

 

I'm I missing anything ??

Like 0

Like

4 comments

Sanae ADRAR,

 

Hello,

 

Seems that due to your business task you need to disable the system setting. Please disable the system setting, relogin to the system, create new order, add a product there and check the result.

 

Best regards,

Oscar

Oscar Dylan,

Wow it's working !! Thank you Oscar !

Show all comments

Hi Community, 

I have two questions about mobile app usage : 

1. Where can we have access to emails using the mobile app

2. Same question about changing lead or opportunity stages, We don't see them in the mobile app. How can we have the same view of stages in the mobile app as in the web page. 

 

Thank you 

 

Like 0

Like

2 comments

Hello!

 

1) As far as I know, the mobile app is not the best option for working with emails since email app could handle this task much better. You can create a detail from the activity object to view them. If you want to send emails it will be better to use mailbox application.

 

2) To see or edit stages you can add "stage" field to the edit page in the mobile app. If you mean DCM panel then, unfortunately, this functionality is not supported, however, this functionality may be added in the upcoming releases

 

Best regards,

Angela

 

Clear. Thank you !!

Show all comments

Hi everybody,

 

I'm trying to introduce a method that when selecting an element from the grid, it saves the id of an attribute in a variable I created and when I delete that same record it has to start a process.

However, when I run all this pops up this error.

This is the code i implemented in order to achieve this.

Thanks in advance.

 

Best regards,

Pedro Pinheiro

Like 1

Like

2 comments
Best reply

The order of the modules at the top doesn't match/line up. You have this:

define("imdSchema10Detail", ["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities", "ProcessModuleUtilities"] function(ProcessModuleUtilities) {

You're actually getting ConfigurationGrid loaded into the ProcessModuleUtilities param since it's the first AMD module listed, which will go into the first param. You need to change the order to this:

define("imdSchema10Detail", ["ProcessModuleUtilities", "ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"] function(ProcessModuleUtilities) {

Ryan 

The order of the modules at the top doesn't match/line up. You have this:

define("imdSchema10Detail", ["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities", "ProcessModuleUtilities"] function(ProcessModuleUtilities) {

You're actually getting ConfigurationGrid loaded into the ProcessModuleUtilities param since it's the first AMD module listed, which will go into the first param. You need to change the order to this:

define("imdSchema10Detail", ["ProcessModuleUtilities", "ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"] function(ProcessModuleUtilities) {

Ryan 

Ryan Farley,

​​​​​​The solution you provided is working. 

 

Thank you.

 

Best regards,

Pedro Pinheiro

Show all comments

If we change the status of an activity to closed, it still shows up in the related account as not completed (in the DCM part). How do we make the system see these activities as closed? 

 

Right now they only dissapear when they go to the account and click complete.

 

I tried looking at the complete request in the network console, but all I see is that it sets the activity status to the same status it had before: https://prnt.sc/rj40so 

Like 0

Like

5 comments

Hi Jonas!

 

How are your completing activities? Can you record a video of this behaviour? 

Angela Reyes,

Not really. We have created a second lookup that is more granular and maps to the Activity.Status in client code. When they select a value from this lookup, we set Activity.Status behind the scenes. However, when I check the database after these operations, Activity.Status is set to Closed.

 

This is the same status that I can see being used by the Dcm module. We want to have the same behaviour as when you would click the complete button in this screen: https://prnt.sc/rj5a24 and then click save.

Jonas Van der Aa,

and how is the status changed to Closed then? 

Angela Reyes,

This code in ActivityPageV2

 

syncActivityAndVisitStatus: function() {
				if (this.isVisit() === false) {
					return;
				}
 
				var visitStatus = this.get("UsrVisitStatus").value;
 
				this.console.trace("Visit status = " + this.get("UsrVisitStatus").displayValue);
				const tracePrefix = "Set activity status to ";
 
				switch (visitStatus) {
					case "33e7d31f-9e8b-4e36-b716-8b49370a6b1e": //Visit Scheduled
						this.set("ActivityStatus", this._createLookup("Not started", "384d4b84-58e6-df11-971b-001d60e938c6"));
						this.console.trace(tracePrefix + "Not Started");
						break;
					case "3e023a20-474d-426d-9a3e-73e25db47ea3": //Close & Notify
						this.set("ActivityStatus", this._createLookup("Completed","4bdbb88f-58e6-df11-971b-001d60e938c6"));
						this.console.trace(tracePrefix + "Completed");
						break;
					default: // everything else
						this.set("ActivityStatus", this._createLookup("In Progress", "394d4b84-58e6-df11-971b-001d60e938c6"));
						this.console.trace(tracePrefix + "In Progress");
				}
			},

This method is triggered by the following attribute:

			"ActivityStatus": {
				dependencies: [{
					columns: ["UsrVisitStatus"],
					methodName: "syncActivityAndVisitStatus"
				}]
			},

 

Dear Jonas,

 

In order to provide you with a proper solution, please tell us how the “_createLookup” function works. I could not find the source code of the function, so it should be your custom function. Looking forward to your reply.

 

Best regards,

Norton

Show all comments

Right now when I make a rule, my users can click past the screen that tells them they are making a duplicate. I want to make one of the contact rules not overridable. I don't see how to do that on the duplicate rule set up screen. 

 

Any thoughts?

Like 0

Like

3 comments
Best reply

Dear Heather,

 

Thank you for clarification.

It is not possible to prevent users from ignoring this message. The only option is to run the duplicate search later to find all duplicates created by users and merge them.

 

Regards,

Dean

Dear Heather,

 

Unfortunately, there is no such feature that would prevent the users from editing some particular duplicates search rule. However, you can restrict your users from accessing the rules section. You need to remove the user from CanManageDuplicatesRules operation permission. After that, when trying to access the duplicate search rules section, the user will not be able to open it and will see this notification:

Note, if your different user is a member of the System Administrators role, he will still be able to access the section since it is not possible to restrict the administrators access level.

 

Regards,

Dean

Hi Dean- 

I'm not worried about someone editing my rule. I am trying to make users stop making duplicates. 

Right now when the system senses a duplicate - it creates a pop-up that says its a duplicate. My users have two options at that point. They can keep going and still create the duplicate or go back to the starting screen. I don't want them to be able to ignore the duplicate warning. 

 

 

 

 

Dear Heather,

 

Thank you for clarification.

It is not possible to prevent users from ignoring this message. The only option is to run the duplicate search later to find all duplicates created by users and merge them.

 

Regards,

Dean

Show all comments

I'm using  CRM Version 7.15.3.1649(latest) cloud login and installed 'Zoom Meeting Connector for Creatio' plugin before meeting schedule as well. (Sales --> Activities -->New Task)

I created the task with 'Create Zoom Meeting'  and once it saved this error is popped up 'Unexpected character encountered while parsing value: <. Path '', line 0, position 0.'  as in below screenshot. Could you please help me to fix the issue.

Like 0

Like

3 comments

Hi Anusha,

 

the error has appeared in the 7.15.3 version. Zoom users weren't automatically imported to Creatio and a Zoom meeting can't be exported correctly. Please use the Creatio product of the 7.15.2 version. The responsible team needs time to fix the issue on the 7.15.3 version.

Thanks for the quick response. Could you please instruct me how to revert 7.15.2 version. I'm using could login of the CRM enterprise trial version.

Dear community,

I got this error while I was configuring the API Secret of Zoom App. 

 

 

I've just inserted the value but it didn't work. 

I'm using a 7.18.1 version of Creatio to test the integration, but in this way I'm not able to configure it. 

 

What's wrong?

 

Thank you in advance. 

 

Show all comments