Hi community , 

 

I find it a little difficult to figure out how to implement the freedom ui component configuration in my page, even if Creatio documentation lists it all:

 https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/mobile-development/customization/freedom-ui/customize-page/references/common-components

The "UsrMobileUsrLeaveRequestRecordPageSettingsWorkplace2" client module is attached to this mobile page for a custom section that I designed called "UsrLeaveRequest."
How do I proceed about adding a custom button to this edit page now? 

 

[
    {
        "operation": "insert",
        "name": "settings",
        "values": {
            "entitySchemaName": "UsrLeaveRequest",
            "details": [],
            "columnSets": [],
            "localizableStrings": {
                "SocialMessageDetailCaptionUsrLeaveRequest_caption": "Feed",
                "AttachmentsDetailCaptionUsrLeaveRequest_caption": "Attachments",
                "primaryColumnSetUsrLeaveRequest_caption": "General information",
                "UsrEmployeV2_DetailStandardDetailUsrLeaveRequest_caption": "Employees detail"
            },
            "settingsType": "RecordPage",
            "operation": "insert",
 
        }
    },
    {
        "operation": "insert",
        "name": "SocialMessageDetailV2StandardDetail",
        "values": {
            "caption": "SocialMessageDetailCaptionUsrLeaveRequest_caption",
            "entitySchemaName": "SocialMessage",
            "showForVisibleModule": true,
            "filter": {
                "detailColumn": "EntityId",
                "masterColumn": "Id"
            },
            "operation": "insert"
        },
        "parentName": "settings",
        "propertyName": "details",
        "index": 0
    },
    {
        "operation": "insert",
        "name": "AttachmentsFlutterDetailStandardDetail",
        "values": {
            "caption": "AttachmentsDetailCaptionUsrLeaveRequest_caption",
            "entitySchemaName": "SysFile",
            "filter": {
                "detailColumn": "RecordId",
                "masterColumn": "Id"
            },
            "operation": "insert"
        },
        "parentName": "settings",
        "propertyName": "details",
        "index": 1
    },
    {
        "operation": "insert",
        "name": "UsrEmployeV2_DetailStandardDetail",
        "values": {
            "caption": "UsrEmployeV2_DetailStandardDetailUsrLeaveRequest_caption",
            "entitySchemaName": "Employee",
            "filter": {
                "detailColumn": "Manager",
                "masterColumn": "UsrApplicant"
            },
            "detailSchemaName": "UsrEmployeV2_Detail",
            "operation": "insert"
        },
        "parentName": "settings",
        "propertyName": "details",
        "index": 2
    },
    {
        "operation": "insert",
        "name": "primaryColumnSet",
        "values": {
            "items": [],
            "rows": 1,
            "entitySchemaName": "UsrLeaveRequest",
            "caption": "primaryColumnSetUsrLeaveRequest_caption",
            "position": 0,
            "operation": "insert"
        },
        "parentName": "settings",
        "propertyName": "columnSets",
        "index": 0
    },
    {
        "operation": "insert",
        "name": "42d4b33c-f361-44d4-92cd-07e8db664fca",
        "values": {
            "row": 0,
            "content": "Leave Request No.",
            "columnName": "UsrLeaveReaquestNo",
            "dataValueType": 1,
            "operation": "insert"
        },
        "parentName": "primaryColumnSet",
        "propertyName": "items",
        "index": 0
    },
    {
        "operation": "insert",
        "name": "0d5ca981-1558-4e4d-b1a2-2b2b9dbd422c",
        "values": {
            "row": 1,
            "content": "End Date",
            "columnName": "UsrEndDate",
            "dataValueType": 8,
            "operation": "insert"
        },
        "parentName": "primaryColumnSet",
        "propertyName": "items",
        "index": 1
    },
    {
        "operation": "insert",
        "name": "2013f978-c87f-4896-96be-5383cfd044e3",
        "values": {
            "row": 2,
            "content": "Start Date",
            "columnName": "UsrStartDate",
            "dataValueType": 8,
            "operation": "insert"
        },
        "parentName": "primaryColumnSet",
        "propertyName": "items",
        "index": 2
    },
    {
        "operation": "insert",
        "name": "266417d3-f847-4386-af45-2674e9e779bb",
        "values": {
            "row": 3,
            "content": "Applicant",
            "columnName": "UsrApplicant",
            "dataValueType": 10,
            "operation": "insert"
        },
        "parentName": "primaryColumnSet",
        "propertyName": "items",
        "index": 3
    },
    {
        "operation": "insert",
        "name": "1655829d-ce75-476c-9350-ce2696ecbf6d",
        "values": {
            "row": 5,
            "content": "Reason",
            "columnName": "UsrReason",
            "dataValueType": 1,
            "operation": "insert"
        },
        "parentName": "primaryColumnSet",
        "propertyName": "items",
        "index": 4
    },
    {
        "operation": "insert",
        "name": "9f677f71-3322-4e75-9938-69ca4e1c650f",
        "values": {
            "row": 6,
            "content": "Status",
            "columnName": "UsrStatus",
            "dataValueType": 10,
            "operation": "insert"
        },
        "parentName": "primaryColumnSet",
        "propertyName": "items",
        "index": 5
    },
    {
        "operation": "insert",
        "name": "3d874029-b467-4d7b-9eb0-d2ebfbe20403",
        "values": {
            "row": 7,
            "content": "Working Days Count",
            "columnName": "UsrWorkingDaysCount",
            "dataValueType": 4,
            "operation": "insert"
        },
        "parentName": "primaryColumnSet",
        "propertyName": "items",
        "index": 6
    },
    {
        "operation": "insert",
        "name": "bc0d7d7e-ffdf-44a5-98b3-0a10094341e2",
        "values": {
            "row": 4,
            "content": "Applicant.Manager",
            "columnName": "UsrApplicant.Manager",
            "dataValueType": 10,
            "operation": "insert"
        },
        "parentName": "primaryColumnSet",
        "propertyName": "items",
        "index": 7
    }
]

 

Like 0

Like

2 comments

Hello,
In order to add a button to a mobile page you need to modify the viewConfigDiff element. In your code it is missing, so you should add it manually in the "settings" element:

{
    "operation": "insert",
    "name": "settings",
    "values": {
        ---
        "viewConfigDiff": "[]"
    }
}

Here is an example of adding a new tab to the page:

"viewConfigDiff": "[{\"operation\":\"insert\",\"name\":\"LeadDecisionsPaths_Tab\",\"parentName\":\"Lead_Tabs\",\"propertyName\":\"items\",\"values\":{\"position\":2,\"text\":\"DecisionsPaths_Caption\",\"body\":{}}}]"

The button should be added similarly. 

Jimmy Meijon,

You can find an instruction on how to add a button and its logic in this article.

Show all comments

Is it possible to specify mask IDs when showing & hiding body masks while data loads? I'm asking as it seems like my body mask is being hidden by some other process before the process I want the mask to show for has completed, so it grants the user the ability to control the page before it's ready.

 

What I was thinking is that if the body mask was given some ID when shown using showBodyMask, only a hideBodyMask specifying that same ID would hide the body mask - any others doing the same may make their own body mask hidden, but if any of them still remained, you would still see the loading spinner. For some reason I seem to remember this being possible in Classic UI, but I can't remember exactly or find the examples.

Like 0

Like

3 comments
Best reply

It was possible to get the mask Id in classic (it is returned from MaskHelper.ShowBodyMask()), but I don't believe that had any impact on something else not hiding the mask. As far as I am aware, that was only used to get the mask so you could display or change the message (the Freedom UI mask doesn't have a message, only the spinner)

It was possible to get the mask Id in classic (it is returned from MaskHelper.ShowBodyMask()), but I don't believe that had any impact on something else not hiding the mask. As far as I am aware, that was only used to get the mask so you could display or change the message (the Freedom UI mask doesn't have a message, only the spinner)

Makes sense, must have been mis-remembering then, cheers Ryan. Would be nice to be able to show & hide specific body masks, as sometimes there will be multiple sets of data loading in in parallel, with no guarantees of which will finish first/last.

Hello,
Your idea has been registered to our R&D team, thank you for providing us with new ways to improve.

Show all comments

Hi community ,

I have created a replacing schema for "Base Page Template" and added a button , now I wanted that button to show up in every freedom ui page in every section .

Like 1

Like

1 comments

Hello!

 

This must be enough for formpages. But you will also need to add this Button to ListFreedomTemplate because it can override some changes from "Base Page Template". Also, I would recommend to run fully generate schema source and compile all actions.

Show all comments

Good day, colleagues.

 

IProcessExecutor processExecutor = _userConnection.ProcessEngine.ProcessExecutor;
return processExecutor.Execute("VERY_IMPORTANT_PROCESS", valuesDictionary);

 

In context of my question, this simple script have multiple calling from different users (sessions) in one period of time. So i need to use Supervisor UserConnection to clarify "VERY_IMPORTANT_PROCESS" logging. Is it possible? Any workarounds?

 

 

 

Like 0

Like

4 comments
Best reply

Hello,

 

Something similar was implemented in the RunSendEmailToCaseGroupV2 business process:

UserConnection userConnection = UserConnection;
if (userConnection.CurrentUser.ConnectionType == UserType.SSP) {
	userConnection = userConnection.AppConnection.SystemUserConnection;
}
...

Here the system checks if the current user is an external user and if so - replaces the userConnection with systemUserConnection (which is a Supervisor user).

 

You can try the same approach in your code to make sure the business process is called under the Supervisor user.

Hello,

 

Something similar was implemented in the RunSendEmailToCaseGroupV2 business process:

UserConnection userConnection = UserConnection;
if (userConnection.CurrentUser.ConnectionType == UserType.SSP) {
	userConnection = userConnection.AppConnection.SystemUserConnection;
}
...

Here the system checks if the current user is an external user and if so - replaces the userConnection with systemUserConnection (which is a Supervisor user).

 

You can try the same approach in your code to make sure the business process is called under the Supervisor user.

Oleg Drobina,

Thx for anser.

So, when i use SystemUserConnection from NOT an admin user session i get all CRUD operaions without security?

Because i see "current user" in process log.

Alexey,

 

Yes, this should be so. If it's not sufficient, then the whole approach with the desired functionality should be changed.

Thx

Show all comments

Hi community, 

Could you please help with setting up logging for any actions done by the user specifically, view Contacts/Accounts pages, details?

 

Thanks

Like 0

Like

4 comments

Hi Mariam, 

 

To enable logging for specific actions, navigate to the Settings menu located in the upper-right corner and select Change Log under the Users and Administration section. From there, you can configure and monitor activity for specific objects. Please note that this feature allows you to track any actions performed by users, rather than activities solely related to viewing. Unfortunately, it is not possible to monitor this type of activity without direct user interaction.

 

Hello Hanna, thanks for the response. In case user does no change to the page, but just views data related to some object, will Change log record and keep this info for further access and monitoring of user's activities?

 

No, the change log only shows the records that were modified. Unfortunately, it won't show who has just viewed the record and didn't do anything 

Thanks, Hanna. Are there any plans at Creatio end to implement such possibility, i.e. show who just reviewed the records?

Show all comments

I need urgent help from Creatio support - I have emailed support@creatio.com 

All users of our domain are unable to access for more than 3hours.

It keeps stating we have entered an incorrect username and password - this is not possible for all users across all of our offices, I know for certain my credentials are correct.

 

Support have not responded to my email.

How do I escalate to get a response?

Like 0

Like

3 comments

Hello,

 

Please try to send another email to support@creatio.com, make sure that you have entered correct mailbox address, or try to send an email from a different address so we could process your request.

They have come back to me now thank you.

Try directly by success portal, there you can specify, in this case, the highest priority 

Show all comments

Hello All, 

is there a way to add a custom Quick filter? let say in the email i want to have a quick filter that has the values of all recipients 

Like 0

Like

3 comments

Hello,

You can check this community post 
https://community.creatio.com/questions/how-add-timeline-filters

Best regards,
Antonii

Hello,

I have reviewed the documents, but I would like to add a new filter element to the existing filter component, similar to the "Owner" quick filter. Is there a way to achieve this?

Thanks in advance

Hello,
Currently, no options exist to add your quick filter to a timeline component. However, this logic is planned to be added in the future releases and our R&D team is working on it.

Show all comments

Hello,

 

is it possible to define start of scheduled process not in process itself (with Start timer element), but in some system settings or lookup, for example? 

How to start process at that time?

 

Thank you!

Vladimir

Like 2

Like

3 comments

Hello!


To determine when a timer will trigger, there are only three possible ways:

Check the timer configuration in the process settings.

Look at the process properties for details about the timer.

Execute a query on the database tables QRTZ_TRIGGERS and QRTZ_CRON_TRIGGERS.


There is no way to view this information through system settings.


If you need to trigger the process manually, you can find more information about our API at the following link:
Creatio API Documentation - Terrasoft.Core.Scheduler - https://academy.creatio.com/api/netcoreapi/8.0.0/api/Terrasoft.Core.Scheduler.html


Best regards, 
Orkhan

Orkhan,

I don't need to determine when a timer will trigger.
I need to start business process by some external timer (not starting signal), cause time of start should be calculated, not static

 

Kind regards,

Vladimir

Hello,

 

To achieve the desired functionality, the client can follow these steps:

Create a custom object:

Add a StartDate column to store the date when the process should begin.
Design the process as illustrated in the provided diagram:

Configure the process to trigger when the StartDate column is updated.

Add logic to read the value of the StartDate column.
Calculate the wait time in seconds using a formula such as (StartDate - DateTime.Now()).TotalSeconds.
Use an intermediate timer to wait for the computed number of seconds.
After the wait time, proceed to start the process.

Show all comments

I need to read all the filters of all the entities via odata. 

https://XXXXXXXX-se-m-se-demo.creatio.com/0/odata/FolderTree

 

When I run the above URL in the browser, it gives me the names of all the folders of all the objects of creatio. I need to fetch the dataset, which is returned by the folder name of the object.

 

 

For example, in the above screenshot, the filter name is "My overdue cases." I need to create or construct a query or Postman URL that will give me all the cases returned by the "My overdue cases" folder tree.

I run below URL in the Postman.
{{BaseURI}}/0/odata/FolderTree(c651a067-8639-f779-0323-e1133cc4cb76)/FilterData

It gave me below response. 


 

However, I cannot identify how to fetch all the cases returned by the "My overdue cases" folder tree.

 

Any help in this matter would be greatly appreciated. 

Like 0

Like

1 comments

One option would be to look at the network tab of dev tools when using Creatio client, you'll see it accessing data using a SelectQuery - what you posted above would be used as the filter for that SelectQuery - you could do the same POST externally. 

Another option, would be to create a custom configuration service to retrieve the records in a filter. The code for the config web service would deserialize the filters, do an ESQ and return the records from the ESQ. You can see how to deserialize the filters in server side C# here: https://customerfx.com/article/programmatically-using-section-folder-filters-in-processes-or-server-side-code-in-creatio/

Ryan

Show all comments

Hi Team,

 

I created and tested campaigns in lower environment and migrated them to upper environment. I have been able to map campaign record and flow in upper environment; but when I trigger the campaign in upper enviorment, it is not picking up the audience at all. To check if it's a campaign filter issue, I removed all the filters so that campaign picks up the entire contact list; but the problem still persisted. What can be done to resolve this issue? Thanks for your help!

Like 0

Like

1 comments

Hello!
 

We have consulted with our R&D team and due to the fact that the process of campaign transfer is technically very complex and involves many interdependent elements, the recommended procedure is to create campaigns directly on the production environment. At the moment, the system does not support the full transfer of campaigns between two sites. 

We have already submitted a request to our R&D team and they are reviewing the possibility of introducing improvements to the logic of transferring campaigns in future versions of Creatio.

Best regards, 
Anton

Show all comments