Dear,

In the timelines, base64 images are not display correctly :

Timeline image

Has anyone ever had this problem?

Thank you !
Nicolas

 

Like 0

Like

3 comments
Best reply

Hello,

This is a known issue related to base64-encoded images. 

They aren't supported in most web email clients (including Gmail) and are completely blocked in Outlook. Apple Mail is one of the few clients that does support them. Such emails also influence the site's performance, as the email size becomes larger if it contains base64 images. 

We have a few recommendations for you on how to avoid this behavior: 

1. Increase the system setting (create it if it doesn't exist) for LargeSizeEmailValue and LargeSizeEmailValueInFreedomUI. 

2. Enable LargeEmailsInTimeline.DisableEmailPreviewLoader feature. 

Please, consider replacing base64-encoded images with others, to improve the overall performance value of your emails. 

Best regards,
Ivan

Hello,

This is a known issue related to base64-encoded images. 

They aren't supported in most web email clients (including Gmail) and are completely blocked in Outlook. Apple Mail is one of the few clients that does support them. Such emails also influence the site's performance, as the email size becomes larger if it contains base64 images. 

We have a few recommendations for you on how to avoid this behavior: 

1. Increase the system setting (create it if it doesn't exist) for LargeSizeEmailValue and LargeSizeEmailValueInFreedomUI. 

2. Enable LargeEmailsInTimeline.DisableEmailPreviewLoader feature. 

Please, consider replacing base64-encoded images with others, to improve the overall performance value of your emails. 

Best regards,
Ivan

Hello Ivan,

We will follow your recommendation and host our images on external servers, this will also improve our deliverability.

I added the LargeSizeEmailValueInFreedomUI parameter to the system settings but now when I click on "see more" I have an error in the console (image attached) and the system does not show me more of the email.

See more

Otherwise, could you please tell me how to enable the LargeEmailsInTimeline.DisableEmailPreviewLoader setting? I can't find it.

Thank you Yvan !

 

Hello,

To add a feature that is missing, navigate to https://SITENAME.creatio.com/0/Flags, then just click "New" button and add feature by code.

Article regarding features on our Academy:
https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platform/platform-customization/interface-control-tools/existing-feature/overview#title-3459-1

Best regards,
Ivan

Show all comments

Dear All,

Could you please advise on how to filter the timeline using Advanced Filters?

My use case is to filter messages posted on the Account timeline via a folder on the Account list page. Additionally, I would like to know if it's possible to create a section that displays all Feed messages.

I’ve already tried searching for relevant keywords (such as social, message, channel) in the Advanced Filters on the Account section, but haven’t found anything related.

I would greatly appreciate your support!

Best regards,
Jacek 

Like 0

Like

5 comments

Hello,

Could you please describe your business idea in more detail, what logic exactly do you need to achieve?

Hi Mira,

I'd like to filter feed messages entered on Account timeline using advanced filters/ folders in the Account section. 

So, in advanced filters I'd like to select object (e.g. Feed?), quantity, and then filter message text using 'contains' logical value.

Could you let me know if this is possible and how best to set it up?

Best regards,
Jacek

Hello,

Thank you, could you please also describe your business idea behind, what are you trying to achieve by such a setup?

Hi Mira, 

Firstly, maybe I will clarify that this is about a FUI configuration. What I am looking to do is just to filter the data entered as Feed messages. We will treat Feed similarly as Notes, but with an additional ability to upload attachments, so I'd like to be able to filter the data there on a higher (Account list page view) level. 

Thanks!
Jacek

Assuming what you're after is to see accounts with feed/timeline activity, for example, see which accounts have new activity this week. However, a filter like this will show accounts with activity/messages, not the activity/messages itself. 

Feed messages are object SocialMessage (title: Message/comment), however, they don't have a direct lookup to accounts since they are generic for any entity (the record stores the account Id in a generic EntityId column, not a lookup to the account). This is why they don't show in the list of objects related to accounts. To use this object in this way, I typically create a view to directly relate account feed records to the account so it can be used in filters. Not sure if it's possible to use in an account filter without that. 

Note, this would only account for Feed messages, however. If you want all timeline entries, that would come from several different sources (Case, Order, Opportunity, Activity, SysFile, etc) 

Show all comments

Dear mates,

We're having display issues with the timelines in the accounts and contacts sections, apparently related to JavaScript errors.
I tried deleting and restoring the timelines on the section pages, but the JavaScript error reappears.
Here's the errors: 

1-Error decoding value from JSON string
2-Cannot read properties of null

Freedom timeline errors

Every time we click on an object in the timeline this error appears and the objects in the selector are not selected.

Does anyone have any ideas on how to fix this problem?

Thank you !
Nicolas

Like 0

Like

1 comments

Hello,

Please register this issue with our Support team directly via support@creatio.com so we could analyze it properly.

Show all comments

Dear,

 

I would like to filter activities in the timeline by activity category :

do not display activities if their category corresponds to a given value.

 

I haven't found any articles or requests in the community to do this. I can not find where to apply this filter on the timeline object.

 

Thank you !

Nicolas

Like 0

Like

1 comments

Dear,

 

Thank you for reaching out to us.

 

Unfortunately, in the current system configuration, such an option for advanced filters is not available for the Timeline.

 

However, we have submitted a request to our R&D team to explore the possibility of implementing this feature in future versions of the system.

 

Please let us know if you have other questions.

 

Have a nice day!

Show all comments

Hi everyone,

 

We have a custom section, and we’d like to enhance it by adding a timeline that includes a custom object.

 

Is it possible to include a custom object in the timeline? For example, alongside Tasks, Emails, etc., we’d like to display data from our custom object as well.

 

Additionally, is there a way to customize how one of the existing objects is displayed in the timeline or modify which fields are shown? For instance, in the case of the Opportunity tile, can we change the fields that are displayed?

 

Any guidance or documentation on these topics would be greatly appreciated.

 

Thanks in advance!

Like 0

Like

1 comments

Hello,

 

Both tasks are possible to implement. However, it will include slight low-code development in your system.

Here are the few articles that can be helpful in fulfilling your tasks:

Customize the Timeline component

Customize timeline

Create the Timeline tab tiles bound to custom section

Show all comments

We want to add filters in the same way that you can add them to lookups using code on the page, as there isn't a no-code way to configure additional filters for Timeline components. In our case, it's filtering out non-completed Activity records from the Timeline. We don't seem to be able to using similar methods to lookups though (i.e. adding custom code to the crt.LoadDataRequest handler. Has anyone found a way to add such a filter? It looks like all the Timeline code is in the 9351.xxxxxxx JS file.

Like 0

Like

3 comments

Hello,
We must say that the ability to add filters to a timeline is under development. Unfortunately, we cannot tell when it will be added.

Hi , Any update on this , we have a requirement to add a recipient filter inside timeline component , any idea

Pranshu Basak,

 

Hello,

This feature is currently in the planned stage, but no estimates for its release are available at the moment.

Show all comments

Is it possible to restrict the "Owner" filter for Timeline components to only show Contacts which match a specific filter condition? We are currently seeing every Contact as an option, but for us this should be restricted to only Contacts which have a User record associated with them, and ideally we'd want to add some more customisation to the filter options beyond this.

Like 0

Like

9 comments
Best reply

I've discovered that it's possible to add this using code. To do so, you need to override the crt.LoadDataRequest handler and use the following code:

{
	request: "crt.LoadDataRequest",
	handler: async (request, next) => {
		// Filter Timeline's Owner filter to just Contacts with a User record
		if(request.dataSourceName === "ByOwnerQuickFilterInTimeline_xi3lpgm_ComboBox_List_DS") {
			const filter = new sdk.FilterGroup();
			await filter.addExistsFilter("[SysAdminUnit:Contact:Id].Id");
 
			// workaround for filters
			const newFilter = Object.assign({}, filter);
			newFilter.items = filter.items;
 
			request.parameters.push({
				type: "filter",
				value: newFilter
			});
		}
 
		return await next?.handle(request);
	}
},

You have to replace the name of the Timeline component in the above code from Timeline_xi3lpgm to whatever the component is called on your page.

Hello Harvey,



There is no such option for now, however, we've registered it in our R&D team backlog for consideration and implementation in future application releases.

 

Thank you for helping us to improve our product. 

Thanks Bogdan, it's definitely a feature that's needed - having every Contact show up in the Owner filter with no way to change this on a CRM platform isn't ideal.

I've discovered that it's possible to add this using code. To do so, you need to override the crt.LoadDataRequest handler and use the following code:

{
	request: "crt.LoadDataRequest",
	handler: async (request, next) => {
		// Filter Timeline's Owner filter to just Contacts with a User record
		if(request.dataSourceName === "ByOwnerQuickFilterInTimeline_xi3lpgm_ComboBox_List_DS") {
			const filter = new sdk.FilterGroup();
			await filter.addExistsFilter("[SysAdminUnit:Contact:Id].Id");
 
			// workaround for filters
			const newFilter = Object.assign({}, filter);
			newFilter.items = filter.items;
 
			request.parameters.push({
				type: "filter",
				value: newFilter
			});
		}
 
		return await next?.handle(request);
	}
},

You have to replace the name of the Timeline component in the above code from Timeline_xi3lpgm to whatever the component is called on your page.

Harvey Adcock,

good find, thanks!

You should mark your own answer as solution ;)

Harvey Adcock,

Well done! Thanks for sharing this Harvey. 

Also, if you've moved to 8.1.1 you no longer need the filters workaround - it's finally working properly in 8.1.1, just thought I'd mention.

Ryan

Ryan Farley,

Ahh great to hear, thanks for the info Ryan - and thanks for spreading the info about that workaround in the first place!

I'd like to share my solution on lookup filtering.

We wanted to have only contacts from our company and in certain functional role.

{
	request: "crt.LoadDataRequest",
	handler: async (request, next) => {
		if (request.dataSourceName !== "FbContact_List_DS") {
			return await next?.handle(request);
		}
 
		const ourCompanyFilter = new sdk.CompareFilter(
			sdk.ComparisonType.Equal, 
			new sdk.ColumnExpression({
				columnPath: "Account.Type"
			}), 
			new sdk.ParameterExpression({
				value: Constants.AccountType.OurCompany
			})
		);
 
		const funcRoleFilter = new sdk.CompareFilter(
			sdk.ComparisonType.Equal, 
			new sdk.ColumnExpression({
				columnPath: "[SysAdminUnit:Contact:Id].[SysUserInRole:SysUser:Id].SysRole.Id"
			}), 
			new sdk.ParameterExpression({
				value: Constants.FunctionalRole.MyCustomFunctionalRole
			})
		);
 
		request.parameters.push({
			type: sdk.ModelParameterType.Filter,
			value: ourCompanyFilter
		});
 
		request.parameters.push({
			type: sdk.ModelParameterType.Filter,
			value: funcRoleFilter
		});
 
		return await next?.handle(request);
	}
}

 

Alex Zaslavsky,

Interesting, it hadn't occurred to me to push multiple filters to the parameters. I've always added the multiple filters to a FilterGroup and then added the group to the parameters. I guess it's an array for a reason :) Nice to know it works that way as well.

Ryan

Hello , 

Can we set a current user as a default in timeline quickfilter ? 

Show all comments

Hi,



I am trying to add a new entry in the following because I enrolled a new Activity Type: Notes.



Do you know how to modify this, addon?



Below is the TimelineEntityValues where I want to add another entry.

 

Like 2

Like

4 comments

Hello Solem,

To make changes to the addon, you can modify the Modifications package node of the addon structure.

There is an article in Creatio Academy with an example of how you can customize the Timeline component: https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…

Hello Artem and Solem,
When i try to save the update made into the modification package i get the following error :
Unable to save changes for item "CallTimelineEntity". It is either created by third-party publisher or installed from the file archive

how can i correct this problem ?

 

LÉZORAY Nicolas,


Hello, 

For my case, I was trying to add a new option menu in the timeline so I ended up editing the Timeline through updating the database value for that timeline to enroll my new activity.type

Solem Khn,

Hello Solem,

It works on Freedom with the doc provide by Artem.

On Classic i used to modify the database but this way doesn't works on Freedom, is not it ?

Show all comments

Is it possible within Freedom UI to trigger a refresh of the Timeline/Feed/Next Steps components using JS? We seem to have an issue where the "Enable live data update" option does not seem to be working in Creatio CRM 8.1 for our Activities on certain pages, and while we've raised a support request for this, we were trying to find a workaround by manually updating the components from code for a specific use case, but we can't see what the data source is called for these types of components. Does anybody know what it would be? I presume refreshing the PDS would refresh them, but this seems heavy handed and might end up with data being lost on the main form page while the data actually being refreshed is just a child entity, so I would expect it to have its own data source.

Like 4

Like

4 comments

+1

Hello Harvey and Damien!

In Freedom UI Pages, the structure of the page is different and along with this a new way to refresh anything on the page. In this article you can find the way to achieve your goal:

https://customerfx.com/article/refreshing-reloading-page-or-list-data-on-a-creatio-freedom-ui-page/

Here's example of handler which you can use:

handlers: /**SCHEMA_HANDLERS*/[
 {
  request: "crt.HandleViewModelAttributeChangeRequest"/* The custom implementation of the system query handler. */
  handler: async (request, next) => {
   await next?.handle(request); 
   if (request.attributeName === 'Your Attribute Name' )
   {
    const handlerChain = sdk.HandlerChainService.instance;
    await handlerChain.process({
     type: 'crt.LoadDataRequest', $context: request.$context,
     config: { loadType: 'reload' },
    dataSourceName: 'Data Source Of Obj You Want To Refresh'
    });   
   }
  }
 },

You may also find this article useful:

https://customerfx.com/article/receiving-server-side-messages-in-a-creatio-freedom-ui-page/

 

Anhelina,

 

How can we find what the data source is for a component like a Timeline or Next Steps component though? The article suggests looking at the modelConfig elements in the page code, but none of these seem to relate to the timeline or timeline tiles. I expect there is some data source being created behind the scenes but finding out what it's called is the main problem for applying the theory of being able to reload anything on the page as is suggested.

 

Many thanks,

Harvey

Hello guys!
I have been having some kind of similar issue in my code where the next steps component does not reload. Could anyone please share the dataSourceName of the next steps component or how to find it.
Thank you!
Joan

Show all comments

Hello community,

 

I am trying to bring timeline for custom section. I have created a record in TimelinePageSettings table. To update the data i used the below script. So when i am using the full json ,timeline tab is not showing on the UI. When i am using the json with only SocialMessage it is working properly for messages. I have checked appending Id to reference column name but it didnt work .  I might be missing a step , please help me out.

 

 

UPDATE TimelinePageSetting

SET Data = CONVERT(varbinary, '[

  {

    "entityConfigKey": "706f803d-6a30-4bcd-88e8-36a0e722ea41",

    "entitySchemaName": "Activity",

    "referenceColumnName": "UsrCreditCheck",

    "masterRecordColumnName": "Id"

  },

  {

    "entityConfigKey": "09a70391-b767-40ab-97b8-6d1b538adbe6",

    "entitySchemaName": "Activity",

    "typeColumnName": "Type",

    "typeColumnValue": "e2831dec-cfc0-df11-b00f-001d60e938c6",

    "referenceColumnName": "UsrCreditCheck",

    "masterRecordColumnName": "Id"

  },

{

    "entityConfigKey": "35b5c45f-36e7-450f-a282-81c56624d29e",

    "entitySchemaName": "SocialMessage",

    "referenceColumnName": "EntityId",

    "masterRecordColumnName": "Id"

  },

  {

    "entityConfigKey": "aeca6df0-5c89-4066-bdfa-eff486ae8fed",

    "entitySchemaName": "Call",

    "referenceColumnName": "UsrCreditCheck",

    "masterRecordColumnName": "Id"

  },

  {

    "entityConfigKey": "59de07a7-28dd-4dc9-a106-a07cb9981423",

    "entitySchemaName": "UsrCreditCheckFile",

    "typeColumnName": "Type",

    "typeColumnValue": "529bc2f8-0ee0-df11-971b-001d60e938c6",

    "referenceColumnName": "UsrCreditCheck",

    "masterRecordColumnName": "Id"

  },

 

  {

    "entityConfigKey": "09a6dad5-036b-4075-a813-e8278a5360ea",

    "referenceColumnName": "UsrCreditCheck",

    "typeColumnName": "Type",

    "typeColumnValue": "539bc2f8-0ee0-df11-971b-001d60e938c6",

    "entitySchemaName": "UsrCreditCheckFile",

    "masterRecordColumnName": "Id"

  },

  {

    "entityConfigKey": "a5900576-dca5-4d82-aed3-91c8909a3028",

    "entitySchemaName": "Document",

    "referenceColumnName": "UsrCreditCheck",

    "masterRecordColumnName": "Id"

  }

]')

WHERE Id = 'D15FD665-AAD3-4AC7-8F1A-54DC5342E616';

 

Like 1

Like

1 comments

Hello,

 

You need to create a custom item view module based on the Contact object and add it to the Leads section. Please use this article as a reference where the same task is described using a custom "Books" section added as timeline item to the "Accounts" section.

Show all comments