Restrict Global Search filter/dropdown where users can select which column/field to search on.

Hi everyone,

I have a question regarding the Global Search functionality in Creatio.

In Global Search, there is currently a dropdown/list that allows the user to select the column/field on which the search should be performed.

I would like to customize this behavior so that:

  • The search is always performed on one specific column/field.
  • The user should not be able to select a different column.
  • Ideally, the column-selection dropdown/list should be hidden or removed from the Global Search UI.
  • The existing Global Search functionality should continue to work using only the specified column.

Is there a supported configuration or Freedom UI customization that allows us to fix the Global Search to a particular column and remove the column-selection option?

If customization is required, could someone please suggest the recommended approach or the relevant schema/component that controls this dropdown?

Thanks in advance!

Like 0

Like

1 comments

Hi,

The column-selection dropdown is not part of Global Search — it belongs to the crt.SearchFilter ("Search") component on Freedom UI list pages. Real Global Search (the shell header box → GlobalSearchResultPage) has no column selector at all, only a section filter, and nothing configurable changes that. There is no supported switch (feature, system setting, or designer property) that pins the list search to one column or hides the selector — but it can be done declaratively in the page schema, no custom handler needed.

Recommended customization (Creatio 8.3.4+ / 10.x)

In the list page schema (Freedom UI Designer → source code, or the package schema), e.g. Contacts_ListPage / your Usr…_ListPage. Example pins search to Email:

viewConfigDiff — merge into the existing element:

{
  "operation": "merge",
  "name": "SearchFilter",
  "values": {
    "columnsGroupsConfig": { "columnsGroups": [] },
    "_filterOptions": {
      "expose": [{
        "attribute": "SearchFilter_Items",
        "converters": [{ "converter": "crt.SearchFilterAttributeConverter", "args": ["Items"] }]
      }],
      "from": ["SearchFilter_SearchValue", "SearchFilter_FixedColumnsGroups"]
    }
  }
}

viewModelConfigDiff (or viewModelConfig.attributes if the schema uses that form — they are mutually exclusive):

{
  "operation": "merge",
  "path": ["attributes"],
  "values": {
    "SearchFilter_FixedColumnsGroups": {
      "value": [{
        "group":   { "name": "Items", "caption": "Items" },
        "columns": [{ "name": "Email", "caption": "Email" }]
      }]
    }
  }
}

Why it works: a truthy columnsGroupsConfig in the schema makes the preprocessor skip its own binding; with zero columns showColumnsGroups is false, so the icon is never rendered and the component/handler paths tolerate empty groups. The exposed SearchFilter_Items attribute now derives from the constant groups, so every search builds a filter over exactly Email, and the Items data source reloads (loadOnChange). Creatio itself ships a literal columnsGroupsConfig on ConfActivityLog_ListPage, so the pattern is supported metadata, not a hack.

Gotchas (each verified):

  • Use exactly {"columnsGroups": []} — an empty {} throws in showColumnsGroups.
  • group.name must equal the converter arg / grid items attribute (Items on standard section pages; on other pages check the page's existing _filterOptions, e.g. AddressList). A wrong group name silently disables filtering; a wrong column name yields zero rows.
  • Column must be a text/lookup/numeric column of the entity; it does not need to be displayed in the grid.
  • Every attribute listed in from must exist, otherwise SearchFilter_Items never emits.

8.3.0 (and earlier 8.x): the preprocessor overwrites columnsGroupsConfig unconditionally unless the schema also defines valueChange. Add to the same merge:

"valueChange": {
  "request": "crt.SearchFilterColumnsGroupsRequest",
  "params": {
    "value": "@event.value",
    "searchFilterColumnsGroups": "@event.columnsGroups",
    "searchFilterGroups": [{ "filterAttributeName": "SearchFilter_Items", "viewAttributeName": "Items" }],
    "searchValueAttributeName": "SearchFilter_SearchValue",
    "searchFilteredColumnAttributeName": "SearchFilter_SearchFilteredColumn",
    "searchFilteredColumnsGroupsAttributeName": "SearchFilter_FilteredColumnsGroups"
  }
}

Lighter alternative if hiding isn't required: keep the default _filterOptions and set a literal columnsGroupsConfig with one group/one column (+ "primaryColumnName": "Email"). The icon stays, but the menu offers only that column (the "All" option needs >1 column).

If you really mean Elasticsearch Global Search

No per-query column choice exists anywhere in the stack (GlobalSearchService.Search(queryString, sectionEntityName, …)). The only column-level control is the GlobalSearchIndexedDataConfig system setting (exclude schemas/columns from indexing; needs re-indexing) plus relevance settings GlobalSearchDefaultEntityWeight, GlobalSearchDefaultPrimaryColumnWeight, UseInexactGlobalSearch, GlobalSearchShouldMatchPercent (Global search). Restricting it to one column would mean excluding every other column from the index — technically possible, not a UI option.

Show all comments