Время создания
Filters
angular
component
custom_components
show image

I’d like to share a custom Angular component I developed for Creatio that allows rendering images directly from Base64-encoded strings.

This component is especially useful in scenarios where images are stored or transmitted as Base64 (for example, through APIs, document services, or external integrations), and need to be displayed seamlessly within the UI without additional processing.

🔹 Key features:

  • Accepts Base64 strings as input
  • Dynamically renders images in the UI
  • Lightweight and easy to integrate into existing pages
  • Helps avoid file handling or temporary storage

This approach has proven useful to simplify image handling and streamline UI integrations in different use cases.

Happy to share more details or implementation insights if anyone is working on something similar!

Like 0

Like

Share

0 comments
Show all comments

Hi everybody,

I think this might be useful for development. The task is the following: how can I dynamically change the options of a dynamic filter based on another quick filter (or another parameter)? For example, on a certain page I have a dropdown parameter "City", and a quick filter for Owner that should respect the selected city. If no city is selected, the quick filter should display all records

Here is an example:

What needs to be achieved: if a city is selected in the City dropdown, then the Owner quick filter should display only those contacts whose city matches the selected value. If no city is selected, the quick filter should show all contacts

The code:

This calls crt.LoadDataRequest for the quick filter after the "City" value had changed. 

{
	request: "crt.HandleViewModelAttributeChangeRequest",
		handler: async (request, next) => {
			if (request.attributeName === "ContactDS_City_zsoqmn6") {
				await request.$context.executeRequest({
				    type: "crt.LoadDataRequest",
				    $context: request.$context,
				    config: {
				        loadType: "reload",
				        useLastLoadParameters: true
				    },
				    dataSourceName: "OwnerQuickFilter_ComboBox_List_DS"
				});
			}
		}
	}

And this reloads quick filter dataset depending on the current conditions (in our case includes owner filtration by the owner's city):

{
	request: "crt.LoadDataRequest",
	handler: async (request, next) => {
 
		if (request.dataSourceName === "OwnerQuickFilter_ComboBox_List_DS") {
			const filter = new sdk.FilterGroup();
			const selectedCity = await request.$context.ContactDS_City_zsoqmn6;
			if (selectedCity) {
				await filter.addSchemaColumnFilterWithParameter(
			        sdk.ComparisonType.Equal, 
			        "City", 
			        selectedCity.value
			    );
			} else {
				await filter.addSchemaColumnIsNotNullFilter("Id");
			}
			const newFilter = Object.assign({}, filter);
			newFilter.items = filter.items;
			if (!request.parameters) {
				request.parameters = [];
			}
			request.parameters.push({
				type: "filter",
				value: newFilter
			});
		}
		return await next?.handle(request);
	}
}

The result:

a) Some City was selected:

b) Nothing was selected

Like 1

Like

Share

0 comments
Show all comments
marketplace
marketplace_updates

We’re excited to announce the launch of a new section on the Creatio Marketplace — Blog.

This new space is designed to keep our ecosystem informed, inspired, and connected. Visitors can now explore the latest Marketplace news in one place, including:

  Updates on new features and product enhancements

  Announcements of new partners joining the ecosystem

  Customer success stories showcasing real business impact

Gain practical guidance

The Blog is also a new opportunity for you

We invite our partners to share exclusive insights on how your solutions help customers solve real challenges and achieve measurable results. Whether it’s a compelling use case, a unique implementation story, or a best practice worth highlighting — your expertise can bring value to the entire community.

 

Have an idea for a story?

Pitch your story to the Marketplace team  >>

Creatio 8.3 Twin Release

 

Let’s grow the Marketplace together — by sharing knowledge, celebrating success, and highlighting innovation across our ecosystem.

EXPLORE INSIGHTS

Like 6

Like

Share

4 comments

This is great, thanks for this. I would prefer more details about the new and updated add-ons in the marketplace in the blog, rather than marketplace news and announcements. I go to the marketplace often, just to see what is new. I do hope this blog will be used for that type of info. 

Also, it doesn't appear that there is an RSS feed for the blog yet. Is that something that will be coming? Maybe also a separate RSS feed for the "what's new/updated" in the marketplace, like what we now have for the Academy articles?

Hi Ryan Farley,

Thank you so much for the quick feedback on our new initiative — we really appreciate it.

It’s especially valuable for us right now, since we’re actively gathering feedback from the ecosystem to understand better what kind of content would be most useful. 
Your suggestion to include more details on new and updated Marketplace add-ons is very helpful, and we can definitely see how such updates would add more value for frequent Marketplace visitors like you.

As for the RSS feed, it’s not available at the moment. That said, your feedback is important and will help us better prioritize this need in our backlog, including the idea of a dedicated feed for new and updated Marketplace items.

Thanks again for taking the time to share this with us.

 

This blog is great addition indeed! 

I also agree with Ryan, some more specific functionalities allowing to more easily search / get / receive information for new addons and updated addons will be great ! (Quite a manual process digging regularly in the marketplace to figure out what's new and updated and the moment). 

Damien Collot,

Thank you so much for calling this out — I truly appreciate your interest and thoughtful attention!

It’s really exciting to see it resonate with the community. 
Feedback like yours means a lot and motivates us even more.

Show all comments
Kanban
inlineEditing
FreedomUI

Syntech Kanban Board 4.1 — What's New

We're releasing a major update to Syntech Kanban Board for Creatio Freedom UI. Version 4.1 focuses on three things: performance, team communication, and faster data entry — all without leaving the board.

Lazy Loading

Cards now load progressively as you scroll each column. No delays on board open, even with thousands of records in the pipeline. Server-side pagination runs independently per column, keeping memory usage low and the UI snappy.

Chat & Activity Feed on Cards

Each card now has a built-in activity feed — a full conversation thread tied directly to the record. It supports:

  • @mentions to notify teammates
  • file attachments right in the thread
  • a chronological feed of all activity on the record

No need to open the full record page just to leave a comment or loop someone in.

Author Avatars

Responsible person avatars are now displayed directly on cards. At a glance, you can see who owns what — without reading a single field label.

Inline Field Editing

Click any field on a card to edit it in place. Supported types include text, dates, boolean toggles, and lookup fields with live search. No modals, no page navigation, no friction.

Updated UI

The component received a visual refresh: cleaner card layout, refined typography, polished icons, and tighter alignment with the Creatio Freedom UI design language.

Syntech Kanban Board is available at Marketplace https://marketplace.creatio.com/app/syntech-kanban-view-creatio

Like 2

Like

Share

0 comments
Show all comments

When working with external integrations and web services, it's common to store JSON responses in text fields within Creatio. The problem? Reading raw JSON in a plain text field is painful for end users.

I built a custom Angular component that renders any JSON string as an interactive, collapsible tree — directly inside a Freedom UI page.

What it does:
• Displays JSON as an expandable/collapsible tree
• Color-codes data types (strings, numbers, booleans, nulls)
• Expand all / Collapse all buttons
• Dark theme with encapsulated styles

The interesting part — Property binding
The trickiest part of the development was figuring out how passes properties to custom Angular elements. The key was using the @CrtInput decorator with propertyBindable: true, which tells the framework that the property accepts binding from the viewModel. Once that was in place, the component binds cleanly to any viewModel attribute using standard Freedom UI syntax.

This means you can feed it data from entity fields, external service responses, or values computed in handlers — all without touching the component itself.

If you're working with JSON data in Creatio and want to give your users a better experience, feel free to reach out via direct message.

Like 5

Like

Share

1 comments

This looks great 👍🏻

Show all comments