I'm currently using the trial version of Sales Creatio in Chrome and would like to integrate Gmail for better email management. Could someone guide me through the steps or provide tips on how to successfully integrate Gmail with Creatio? Any insights on best practices or potential pitfalls to watch out for would be greatly appreciated!
In order to add a gmail account you need to create an app specific password (which means you'll also need 2 factor authentication enabled in gmail also). Then, when adding the gmail account in Creatio you'll provide the app specific password instead of your real one. See https://support.google.com/mail/answer/185833?hl=en
Despite already using an app-specific password, I'm still encountering errors when trying to integrate Gmail with Creatio. What steps should I take to resolve this issue?
1. Please make sure you are using the correct parameters for the Google mail server.
2. Ensure that the web server of the application and the Email listener server have access to the Gmail server.
3. If you're using a local environment, please verify that the microservice is properly deployed and configured.
4. More information regarding the authorization error can be found in the logs of the application and microservice when attempting to add the mailbox.
5. If you are using the site in the Cloud and the mail service parameters are correct, please contact our support for further analysis. (Support@creatio.com)
I often use backend validation in Creatio - I prevent saving a record and throw an exception from an event listener. It works like a charm, but as a result, the end user sees only a toast message, which is small and disappears after a moment, so it's easy to overlook. Is it possible to intercept such an error and display a normal confirmation popup, instead of thisone?
It would be great if there is a generic solution, which doesn't require me to change all of my validations.
As an alternative you can use websockets to implement your logic.
Here i created a custom section and a clientMessageBridge as described in this article. In this section i created a Test Field. To subscribe to message broadcasting in the HandleViewModelInitRequest handler i used schema attribute to store a function that will be called whenever a message is published. Also note, that you should unsubscribe from websocket connection when your view is destroyed. To do this please don't forget to implement such logic in HandleViewModelDestroyRequest handler.
On the form page when user clicks Save button a custom MyCustomRequest handler is called. In this handler i realized the following logic: call a business process (where i pass Test Field value as well as expected business process parameter value) -> if there is no validation error that is passed back from business process (hasValidationErrors property) i call SaveRecordRequest request -> if there is an error - the SaveRecordRequest is not performed.
Also the function that is triggered when a websocket message is broadcasted does open a pop-up which displays error message.
Here is an example:
And the outcome:
Hope this helps and let me know if you have any question left.
Hello, Please specify where exactly you need a drop-down menu; Please provide us with the screenshots of the Classic UI functionality that you want in Freedom UI.
I believe Stefano is referring to a lookup displayed as a drop down. I would love to know if those can be sorted as well. They're typically sorted in alphabetical order, any of my attempts to change the order in the load request don't work.
I have decided to take a quick look at this and managed to get it working.
For example, adding this handler on the Accounts_FormPage should filter the "Type" by "Id" descending.
(In the code block change the ">" to ">", can't seem to fix this in the reply editor)
{
request:"crt.HandleViewModelInitRequest",
handler: async (request, next)=>{
let sortingConfigList = await request.$context.Type_List_Sorting;
let firstSortingConfig = sortingConfigList[0];
firstSortingConfig.columnName="Id";
firstSortingConfig.direction="desc";//desc or ascreturn next?.handle(request);}}
So the page context attribute we need to change is attributecode_List_Sorting. This is a list of "order configurations" (so you can order by multiple columns for example) So we just need to get the first item in this list and change the columnName from Name to whatever other field we need to order on And we can optionally change the direction property to "desc" to order descending (it is "asc" by default).
{
request:"crt.HandleViewModelInitRequest",
handler: async (request, next)=>{// 1.- Typo Empresa
let sortingConfigListType = await request.$context.Type_List_Sorting;
let firstSortingConfigType = sortingConfigListType[0];
firstSortingConfigType.columnName="NdosOrdenarPor";// Campo nuevo creado en AccountType
firstSortingConfigType.direction="asc";//desc or asc// 2.- Nro de Empleados
let sortingConfigListEmployeesNumber = await request.$context.EmployeesNumber_List_Sorting;
let firstSortingConfigEmployeesNumber = sortingConfigListEmployeesNumber[0];
firstSortingConfigEmployeesNumber.columnName="Position";
firstSortingConfigEmployeesNumber.direction="asc";//desc or asc// 3.- Annual revenue/Facturacion anual
let sortingConfigListAnnualRevenue = await request.$context.AnnualRevenue_List_Sorting;
let firstSortingConfigAnnualRevenue = sortingConfigListAnnualRevenue[0];
firstSortingConfigAnnualRevenue.columnName="FromBaseCurrency";
firstSortingConfigAnnualRevenue.direction="asc";//desc or ascreturn next?.handle(request);},
}
Our need is the possibility link manually an incoming email to the a custom 'object' (a custom object developed in our project). We are not able to add this object in the OOTB panel for linking manually an email to an object (please refer to below image).
The custom section needs to have support for Activities. This basically means that it has a lookup on the Activity object and is added to the EntityConnection table. I believe the Section Wizard and also adding Freedom UI sections does this now for new sections. For older objects (or objects not exposed as sections) you can follow the steps here: https://customerfx.com/article/how-to-add-activities-to-a-custom-section-in-creatio/
The custom section needs to have support for Activities. This basically means that it has a lookup on the Activity object and is added to the EntityConnection table. I believe the Section Wizard and also adding Freedom UI sections does this now for new sections. For older objects (or objects not exposed as sections) you can follow the steps here: https://customerfx.com/article/how-to-add-activities-to-a-custom-section-in-creatio/
Hello, I have some questions about lists in Creatio Freedom UI.
1. Is there any way to make a field read-only on a list while allowing it to be edited from the form page? I tried to use object-level business rules, but I couldn't disable the field only on the list. Fields are not available in the page-level business object on the list view. 2. Is it possible to add a custom validation for some fields on the list? 3. Is it possible to handle every field change, like on a form page? Some of my fields are being calculated live on the form page, using `crt.HandleViewModelAttributeChangeRequest`. I'd like to do the same on the list page or at least make those fields read-only on the list page. 4. I found a crt.SaveRecordsRequest request during debugging that allows me to review user changes before saving. But when I try to open a mini page using request.$context.executeRequest, nothing happens. 5/ Do you know of any more helpful requests related to lists? I found some more, like `crt.SaveDataRequest`, but it seems to have a restricted scope, so I can't add my own handler for it.
Hey, 1.Yes you can deselect the inline editing of records option in the designer page for the detail. 2.Yes it is possible through code - but can you pls elaborate on what you mean by custom? 3.No you can't do the live calculation on the list page
Regarding your forth question. The following code should work Note that you also need to add @creatio-devkit/common library to your module dependencies as well as pass parameter it's function. You can find some examples of how to open a page in custom handler here.
Regarding you fifth question. Could you please clarify and provide example on how you are implementing your logic?
I am applying a complex filter to a page using the "Apply filter by page data" option. I set up two parameter filters, but they are logically connected by an AND condition. Is there a way to construct these filters allowing for complex structures?
In the List Settings below, I need the results from more than one filter condition, more than just Account.ID=Opportunity.Account.
Adding a second filter is possible, but the two filters are intrinsically connected by an AND operator, and there is no obvious way to specify a complex filter here.
Unfortunately, currently, it is not possible to display the names of all required fields that are not filled in. We've registered it in our R&D team backlog for consideration and implementation in future application releases.
I assume you're referring to the caption? You can change the caption for the button by opening the edit page schema (for example, AccountPageV2) and find the localizable string (on the left side) "SaveButtonCaption" then give it a new value.
I assume you're referring to the caption? You can change the caption for the button by opening the edit page schema (for example, AccountPageV2) and find the localizable string (on the left side) "SaveButtonCaption" then give it a new value.
Thanks Ryan, that worked when creating a new record. When I click New to add a new record the save button became Submit, but when editing the existing record the button appeared to be "Save" again. How to make it Submit on adding and editing a record.