diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/communities-carousel/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/communities-carousel/index.js
index ca5fe4f78..426c93fe7 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/communities-carousel/index.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/communities-carousel/index.js
@@ -8,8 +8,7 @@
 import React from "react";
 import ReactDOM from "react-dom";
 import CommunitiesCarousel from "./CommunitiesCarousel";
-import { OverridableContext } from "react-overridable";
-import { overriddenComponents } from "./override";
+import { OverridableContext, overrideStore } from "react-overridable";
 
 const communitiesCarouselContainer = document.getElementById("communities-carousel");
 const title = communitiesCarouselContainer.dataset.title;
@@ -18,6 +17,8 @@ const intervalDelay = parseInt(communitiesCarouselContainer.dataset.intervalDela
 const animationSpeed = parseInt(communitiesCarouselContainer.dataset.animationSpeed);
 const defaultLogo = communitiesCarouselContainer.dataset.defaultLogo;
 
+const overriddenComponents = overrideStore.getAll();
+
 ReactDOM.render(
   <OverridableContext.Provider value={overriddenComponents}>
     <CommunitiesCarousel
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/communities-carousel/override.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/communities-carousel/override.js
deleted file mode 100644
index a1abf5bb4..000000000
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/communities-carousel/override.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is part of CDS RDM
-// Copyright (C) 2022 CERN.
-//
-// CDS RDM is free software; you can redistribute it and/or modify it
-// under the terms of the MIT License; see LICENSE file for more details.
-
-export const overriddenComponents = {};
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/search.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/search.js
index 39a3cc4de..1bdeb7ae4 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/search.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/search.js
@@ -15,7 +15,7 @@ import {
 import { i18next } from "@translations/invenio_communities/i18next";
 import React from "react";
 import { GridResponsiveSidebarColumn } from "react-invenio-forms";
-import { parametrize } from "react-overridable";
+import { parametrize, overrideStore } from "react-overridable";
 import { Count, ResultsList, SearchBar, Sort, withState } from "react-searchkit";
 import { Button, Card, Container, Grid, Input, Segment } from "semantic-ui-react";
 import { ComputerTabletCommunitiesItem } from "./communities_items/ComputerTabletCommunitiesItem";
@@ -26,6 +26,8 @@ import {
 } from "@js/invenio_search_ui/components";
 import PropTypes from "prop-types";
 
+const appName = "InvenioCommunities.Search";
+
 function ResultsGridItemTemplate({ result }) {
   return (
     <Card fluid href={`/communities/${result.slug}`}>
@@ -228,10 +230,13 @@ export const CommunitiesSearchLayout = (props) => {
             open={sidebarVisible}
             onHideClick={() => setSidebarVisible(false)}
             // eslint-disable-next-line react/no-children-prop
-            children={<SearchAppFacets aggs={config.aggs} />}
+            children={<SearchAppFacets aggs={config.aggs} appName={appName} />}
           />
           <Grid.Column mobile={16} tablet={16} computer={12}>
-            <SearchAppResultsPane layoutOptions={config.layoutOptions} />
+            <SearchAppResultsPane
+              layoutOptions={config.layoutOptions}
+              appName={appName}
+            />
           </Grid.Column>
         </Grid.Row>
       </Grid>
@@ -248,15 +253,22 @@ const ContribSearchAppFacetsWithConfig = parametrize(ContribSearchAppFacets, {
 });
 
 const defaultComponents = {
-  "BucketAggregation.element": RDMBucketAggregationElement,
-  "BucketAggregationValues.element": ContribBucketAggregationValuesElement,
-  "SearchApp.facets": ContribSearchAppFacetsWithConfig,
-  "ResultsList.item": ResultsItemTemplate,
-  "ResultsGrid.item": ResultsGridItemTemplate,
-  "SearchApp.layout": CommunitiesSearchLayout,
-  "SearchBar.element": CommunitiesSearchBarElement,
-  "SearchApp.results": CommunitiesResults,
+  [`${appName}.BucketAggregation.element`]: RDMBucketAggregationElement,
+  [`${appName}.BucketAggregationValues.element`]: ContribBucketAggregationValuesElement,
+  [`${appName}.SearchApp.facets`]: ContribSearchAppFacetsWithConfig,
+  [`${appName}.ResultsList.item`]: ResultsItemTemplate,
+  [`${appName}.ResultsGrid.item`]: ResultsGridItemTemplate,
+  [`${appName}.SearchApp.layout`]: CommunitiesSearchLayout,
+  [`${appName}.SearchBar.element`]: CommunitiesSearchBarElement,
+  [`${appName}.SearchApp.results`]: CommunitiesResults,
 };
 
+const overriddenComponents = overrideStore.getAll();
+
 // Auto-initialize search app
-createSearchAppInit(defaultComponents);
+createSearchAppInit(
+  { ...defaultComponents, ...overriddenComponents },
+  true,
+  "invenio-search-config",
+  true
+);
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/components.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/components.js
index 11bcb4ea5..bc75d96d7 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/components.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/components.js
@@ -124,7 +124,7 @@ CommunityRecordResultsGridItem.propTypes = {
   result: PropTypes.object.isRequired,
 };
 
-export const CommunityRecordSearchAppLayout = ({ config }) => {
+export const CommunityRecordSearchAppLayout = ({ config, appName }) => {
   const [sidebarVisible, setSidebarVisible] = React.useState(false);
 
   return (
@@ -174,10 +174,13 @@ export const CommunityRecordSearchAppLayout = ({ config }) => {
             open={sidebarVisible}
             onHideClick={() => setSidebarVisible(false)}
             // eslint-disable-next-line react/no-children-prop
-            children={<SearchAppFacets aggs={config.aggs} />}
+            children={<SearchAppFacets aggs={config.aggs} appName={appName} />}
           />
           <Grid.Column mobile={16} tablet={16} computer={12}>
-            <SearchAppResultsPane layoutOptions={config.layoutOptions} />
+            <SearchAppResultsPane
+              layoutOptions={config.layoutOptions}
+              appName={appName}
+            />
           </Grid.Column>
         </Grid.Row>
       </Grid>
@@ -187,6 +190,11 @@ export const CommunityRecordSearchAppLayout = ({ config }) => {
 
 CommunityRecordSearchAppLayout.propTypes = {
   config: PropTypes.object.isRequired,
+  appName: PropTypes.string,
+};
+
+CommunityRecordSearchAppLayout.defaultProps = {
+  appName: "",
 };
 
 export const CommunityRecordSingleSearchBarElement = withState(
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/index.js
index f80fe4396..db54f2287 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/index.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/index.js
@@ -15,27 +15,45 @@ import {
   CommunityRecordSearchBarElement,
   CommunityToggleComponent,
 } from "./components";
-import { parametrize } from "react-overridable";
+import { parametrize, overrideStore } from "react-overridable";
 import {
   ContribSearchAppFacets,
   ContribBucketAggregationElement,
   ContribBucketAggregationValuesElement,
 } from "@js/invenio_search_ui/components";
 
+const appName = "InvenioCommunities.DetailsSearch";
+
 const ContribSearchAppFacetsWithConfig = parametrize(ContribSearchAppFacets, {
   toogle: true,
 });
 
-createSearchAppInit({
-  "BucketAggregation.element": ContribBucketAggregationElement,
-  "BucketAggregationValues.element": ContribBucketAggregationValuesElement,
-  "ResultsGrid.item": CommunityRecordResultsGridItem,
-  "EmptyResults.element": CommunityEmptyResults,
-  "ResultsList.item": CommunityRecordResultsListItem,
-  "SearchApp.facets": ContribSearchAppFacetsWithConfig,
-  "SearchApp.layout": CommunityRecordSearchAppLayout,
-  "SearchBar.element": CommunityRecordSearchBarElement,
-  "Count.element": CommunityCountComponent,
-  "Error.element": CommunityErrorComponent,
-  "SearchFilters.Toggle.element": CommunityToggleComponent,
-});
+const CommunityRecordSearchAppLayoutWAppName = parametrize(
+  CommunityRecordSearchAppLayout,
+  {
+    appName: appName,
+  }
+);
+
+const defaultComponents = {
+  [`${appName}.BucketAggregation.element`]: ContribBucketAggregationElement,
+  [`${appName}.BucketAggregationValues.element`]: ContribBucketAggregationValuesElement,
+  [`${appName}.ResultsGrid.item`]: CommunityRecordResultsGridItem,
+  [`${appName}.EmptyResults.element`]: CommunityEmptyResults,
+  [`${appName}.ResultsList.item`]: CommunityRecordResultsListItem,
+  [`${appName}.SearchApp.facets`]: ContribSearchAppFacetsWithConfig,
+  [`${appName}.SearchApp.layout`]: CommunityRecordSearchAppLayoutWAppName,
+  [`${appName}.SearchBar.element`]: CommunityRecordSearchBarElement,
+  [`${appName}.Count.element`]: CommunityCountComponent,
+  [`${appName}.Error.element`]: CommunityErrorComponent,
+  [`${appName}.SearchFilters.Toggle.element`]: CommunityToggleComponent,
+};
+
+const overriddenComponents = overrideStore.getAll();
+
+createSearchAppInit(
+  { ...defaultComponents, ...overriddenComponents },
+  true,
+  "invenio-search-config",
+  true
+);
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/components/bulk_actions/SearchResultsBulkActions.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/components/bulk_actions/SearchResultsBulkActions.js
index 1f794e014..deaf45647 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/components/bulk_actions/SearchResultsBulkActions.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/components/bulk_actions/SearchResultsBulkActions.js
@@ -60,7 +60,7 @@ export class SearchResultsBulkActions extends Component {
     }));
 
     return (
-      <Overridable id="SearchResultsBulkActionsManager.layout">
+      <Overridable id="InvenioCommunities.SearchResultsBulkActionsManager.layout">
         <div className="flex">
           <Checkbox
             className="align-self-center mr-10"
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/components/bulk_actions/SearchResultsBulkActionsManager.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/components/bulk_actions/SearchResultsBulkActionsManager.js
index 8b74c3ba5..fa9c0ee03 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/components/bulk_actions/SearchResultsBulkActionsManager.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/components/bulk_actions/SearchResultsBulkActionsManager.js
@@ -55,7 +55,7 @@ class SearchResultsBulkActionsManager extends Component {
     const { children } = this.props;
     const { allSelected, selectedCount } = this.state;
     return (
-      <Overridable id="SearchResultsBulkActionsManager.layout">
+      <Overridable id="InvenioCommunities.SearchResultsBulkActionsManager.layout">
         <BulkActionsContext.Provider
           value={{
             bulkActionContext: this.selected,
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/InvitationsSearchLayout.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/InvitationsSearchLayout.js
index f7e14b8b1..32680fc35 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/InvitationsSearchLayout.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/InvitationsSearchLayout.js
@@ -19,8 +19,14 @@ import { SearchFilters } from "@js/invenio_search_ui/components/SearchFilters";
 
 export class InvitationsSearchLayout extends Component {
   render() {
-    const { config, roles, rolesCanInvite, community, communityGroupsEnabled } =
-      this.props;
+    const {
+      config,
+      roles,
+      rolesCanInvite,
+      community,
+      communityGroupsEnabled,
+      appName,
+    } = this.props;
 
     const filtersClass = new Filters(roles);
     const customFilters = filtersClass.getInvitationFilters();
@@ -50,7 +56,7 @@ export class InvitationsSearchLayout extends Component {
           <FilterLabels ignoreFilters={["is_open"]} />
         </div>
 
-        <SearchAppResultsPane layoutOptions={config.layoutOptions} />
+        <SearchAppResultsPane layoutOptions={config.layoutOptions} appName={appName} />
       </>
     );
   }
@@ -62,4 +68,9 @@ InvitationsSearchLayout.propTypes = {
   rolesCanInvite: PropTypes.object.isRequired,
   community: PropTypes.object.isRequired,
   communityGroupsEnabled: PropTypes.bool.isRequired,
+  appName: PropTypes.string,
+};
+
+InvitationsSearchLayout.defaultProps = {
+  appName: "",
 };
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/index.js
index fb55a3ad5..fd62e856d 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/index.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/index.js
@@ -7,7 +7,7 @@
  */
 
 import { createSearchAppInit } from "@js/invenio_search_ui";
-import { parametrize } from "react-overridable";
+import { parametrize, overrideStore } from "react-overridable";
 import { DropdownSort } from "@js/invenio_search_ui/components";
 import { InvitationsContextProvider as ContextProvider } from "../../api/invitations/InvitationsContextProvider";
 import { InvitationResultItem } from "./InvitationResultItem";
@@ -30,6 +30,8 @@ const communitiesAllRoles = JSON.parse(dataAttr.communitiesAllRoles);
 const communitiesRolesCanInvite = JSON.parse(dataAttr.communitiesRolesCanInvite);
 const permissions = JSON.parse(dataAttr.permissions);
 
+const appName = "InvenioCommunities.InvitationsSearch";
+
 const communityGroupsEnabled = JSON.parse(dataAttr.communityGroupsEnabled);
 
 const InvitationResultItemWithConfig = parametrize(InvitationResultItem, {
@@ -43,6 +45,7 @@ const InvitationsSearchLayoutWithConfig = parametrize(InvitationsSearchLayout, {
   community: community,
   permissions: permissions,
   communityGroupsEnabled: communityGroupsEnabled,
+  appName: appName,
 });
 
 const InvitationsContextProvider = parametrize(ContextProvider, {
@@ -50,25 +53,27 @@ const InvitationsContextProvider = parametrize(ContextProvider, {
 });
 
 const defaultComponents = {
-  "ResultsList.item": InvitationResultItemWithConfig,
-  "SearchApp.layout": InvitationsSearchLayoutWithConfig,
-  "SearchBar.element": InvitationsSearchBarElement,
-  "SearchApp.results": InvitationsResults,
-  "ResultsList.container": InvitationsResultsContainer,
-  "Sort.element": DropdownSort,
-  "RequestStatus.layout.submitted": SubmitStatus,
-  "RequestStatus.layout.deleted": DeleteStatus,
-  "RequestStatus.layout.accepted": AcceptStatus,
-  "RequestStatus.layout.declined": DeclineStatus,
-  "RequestStatus.layout.cancelled": CancelStatus,
-  "RequestStatus.layout.expired": ExpireStatus,
+  [`${appName}.ResultsList.item`]: InvitationResultItemWithConfig,
+  [`${appName}.SearchApp.layout`]: InvitationsSearchLayoutWithConfig,
+  [`${appName}.SearchBar.element`]: InvitationsSearchBarElement,
+  [`${appName}.SearchApp.results`]: InvitationsResults,
+  [`${appName}.ResultsList.container`]: InvitationsResultsContainer,
+  [`${appName}.Sort.element`]: DropdownSort,
+  [`${appName}.RequestStatus.layout.submitted`]: SubmitStatus,
+  [`${appName}.RequestStatus.layout.deleted`]: DeleteStatus,
+  [`${appName}.RequestStatus.layout.accepted`]: AcceptStatus,
+  [`${appName}.RequestStatus.layout.declined`]: DeclineStatus,
+  [`${appName}.RequestStatus.layout.cancelled`]: CancelStatus,
+  [`${appName}.RequestStatus.layout.expired`]: ExpireStatus,
 };
 
+const overriddenComponents = overrideStore.getAll();
+
 // Auto-initialize search app
 createSearchAppInit(
-  defaultComponents,
+  { ...defaultComponents, ...overriddenComponents },
   true,
   "invenio-search-config",
-  false,
+  true,
   InvitationsContextProvider
 );
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/components/MembersSearchLayout.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/components/MembersSearchLayout.js
index 682604cbb..6cba28175 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/components/MembersSearchLayout.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/components/MembersSearchLayout.js
@@ -16,7 +16,7 @@ import PropTypes from "prop-types";
 
 export class MembersSearchLayout extends Component {
   render() {
-    const { config, roles } = this.props;
+    const { config, roles, appName } = this.props;
     const filtersClass = new Filters(roles);
     const customFilters = filtersClass.getMembersFilters();
     return (
@@ -36,7 +36,7 @@ export class MembersSearchLayout extends Component {
           <FilterLabels />
         </div>
 
-        <SearchAppResultsPane layoutOptions={config.layoutOptions} />
+        <SearchAppResultsPane layoutOptions={config.layoutOptions} appName={appName} />
       </>
     );
   }
@@ -45,4 +45,9 @@ export class MembersSearchLayout extends Component {
 MembersSearchLayout.propTypes = {
   config: PropTypes.object.isRequired,
   roles: PropTypes.array.isRequired,
+  appName: PropTypes.string,
+};
+
+MembersSearchLayout.defaultProps = {
+  appName: "",
 };
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/manager_view/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/manager_view/index.js
index f671dd6c0..1690ab862 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/manager_view/index.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/manager_view/index.js
@@ -7,7 +7,7 @@
  */
 
 import { createSearchAppInit } from "@js/invenio_search_ui";
-import { parametrize } from "react-overridable";
+import { parametrize, overrideStore } from "react-overridable";
 import { DropdownSort } from "@js/invenio_search_ui/components";
 import { memberVisibilityTypes } from "../";
 import { MembersSearchBarElement } from "../../components/MembersSearchBarElement";
@@ -24,6 +24,8 @@ const communitiesAllRoles = JSON.parse(dataAttr.communitiesAllRoles);
 const community = JSON.parse(dataAttr.community);
 const permissions = JSON.parse(dataAttr.permissions);
 
+const appName = "InvenioCommunities.ManagerSearch";
+
 const ManagerMembersResultItemWithConfig = parametrize(ManagerMembersResultItem, {
   config: {
     rolesCanUpdate: communitiesRolesCanUpdate,
@@ -50,23 +52,26 @@ const MembersSearchAppContext = parametrize(MembersSearchAppContextCmp, {
 
 const MembersSearchLayoutWithConfig = parametrize(MembersSearchLayout, {
   roles: communitiesAllRoles,
+  appName: appName,
 });
 
 const defaultComponents = {
-  "ResultsList.item": ManagerMembersResultItemWithConfig,
-  "ResultsGrid.item": MembersResultsGridItem,
-  "SearchApp.layout": MembersSearchLayoutWithConfig,
-  "SearchBar.element": MembersSearchBarElement,
-  "SearchApp.results": MembersResults,
-  "ResultsList.container": ManagerMembersResultContainerWithCommunity,
-  "Sort.element": DropdownSort,
+  [`${appName}.ResultsList.item`]: ManagerMembersResultItemWithConfig,
+  [`${appName}.ResultsGrid.item`]: MembersResultsGridItem,
+  [`${appName}.SearchApp.layout`]: MembersSearchLayoutWithConfig,
+  [`${appName}.SearchBar.element`]: MembersSearchBarElement,
+  [`${appName}.SearchApp.results`]: MembersResults,
+  [`${appName}.ResultsList.container`]: ManagerMembersResultContainerWithCommunity,
+  [`${appName}.Sort.element`]: DropdownSort,
 };
 
+const overriddenComponents = overrideStore.getAll();
+
 // Auto-initialize search app
 createSearchAppInit(
-  defaultComponents,
+  { ...defaultComponents, ...overriddenComponents },
   true,
   "invenio-search-config",
-  false,
+  true,
   MembersSearchAppContext
 );
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/member_view/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/member_view/index.js
index f6e8bd5aa..4a7f15066 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/member_view/index.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/member_view/index.js
@@ -7,7 +7,7 @@
  */
 
 import { createSearchAppInit } from "@js/invenio_search_ui";
-import { parametrize } from "react-overridable";
+import { parametrize, overrideStore } from "react-overridable";
 import { DropdownSort } from "@js/invenio_search_ui/components";
 import { memberVisibilityTypes } from "../";
 import { MembersSearchBarElement } from "../../components/MembersSearchBarElement";
@@ -24,6 +24,8 @@ const communitiesRolesCanUpdate = JSON.parse(dataAttr.communitiesRolesCanUpdate)
 const permissions = JSON.parse(dataAttr.permissions);
 const community = JSON.parse(dataAttr.community);
 
+const appName = "InvenioCommunities.MemberSearch";
+
 const ManagerMembersResultItemWithConfig = parametrize(ManagerMembersResultItem, {
   config: {
     rolesCanUpdate: communitiesRolesCanUpdate,
@@ -38,23 +40,26 @@ const MembersSearchAppContext = parametrize(MembersSearchAppContextCmp, {
 
 const MembersSearchLayoutWithConfig = parametrize(MembersSearchLayout, {
   roles: communitiesAllRoles,
+  appName: appName,
 });
 
 const defaultComponents = {
-  "ResultsList.item": ManagerMembersResultItemWithConfig,
-  "ResultsGrid.item": MembersResultsGridItem,
-  "SearchApp.layout": MembersSearchLayoutWithConfig,
-  "SearchBar.element": MembersSearchBarElement,
-  "SearchApp.results": MembersResults,
-  "ResultsList.container": MembersResultsContainer,
-  "Sort.element": DropdownSort,
+  [`${appName}.ResultsList.item`]: ManagerMembersResultItemWithConfig,
+  [`${appName}.ResultsGrid.item`]: MembersResultsGridItem,
+  [`${appName}.SearchApp.layout`]: MembersSearchLayoutWithConfig,
+  [`${appName}.SearchBar.element`]: MembersSearchBarElement,
+  [`${appName}.SearchApp.results`]: MembersResults,
+  [`${appName}.ResultsList.container`]: MembersResultsContainer,
+  [`${appName}.Sort.element`]: DropdownSort,
 };
 
+const overriddenComponents = overrideStore.getAll();
+
 // Auto-initialize search app
 createSearchAppInit(
-  defaultComponents,
+  { ...defaultComponents, ...overriddenComponents },
   true,
   "invenio-search-config",
-  false,
+  true,
   MembersSearchAppContext
 );
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/PublicMembersSearchLayout.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/PublicMembersSearchLayout.js
index f421cd5a7..938a4613e 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/PublicMembersSearchLayout.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/PublicMembersSearchLayout.js
@@ -27,11 +27,11 @@ const PublicViewSearchBar = () => {
 
 export class PublicMembersSearchLayout extends Component {
   render() {
-    const { config } = this.props;
+    const { config, appName } = this.props;
     return (
       <>
         <PublicViewSearchBar />
-        <SearchAppResultsPane layoutOptions={config.layoutOptions} />
+        <SearchAppResultsPane layoutOptions={config.layoutOptions} appName={appName} />
       </>
     );
   }
@@ -39,4 +39,9 @@ export class PublicMembersSearchLayout extends Component {
 
 PublicMembersSearchLayout.propTypes = {
   config: PropTypes.object.isRequired,
+  appName: PropTypes.string,
+};
+
+PublicMembersSearchLayout.defaultProps = {
+  appName: "",
 };
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/index.js
index 5e92cd332..be750d46a 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/index.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/index.js
@@ -8,6 +8,7 @@
 
 import { createSearchAppInit } from "@js/invenio_search_ui";
 import { DropdownSort } from "@js/invenio_search_ui/components";
+import { overrideStore, parametrize } from "react-overridable";
 
 import { PublicMembersResultsItem } from "./PublicMembersResultItem";
 import { MembersSearchBarElement } from "../../components/MembersSearchBarElement";
@@ -17,16 +18,29 @@ import { PublicMembersResultsContainer } from "./PublicMembersResultContainer";
 import { PublicMembersSearchLayout } from "./PublicMembersSearchLayout";
 import MembersEmptyResults from "../components/MembersEmptyResults";
 
+const appName = "InvenioCommunities.PublicSearch";
+
+const PublicMembersSearchLayoutWithConfig = parametrize(PublicMembersSearchLayout, {
+  appName: appName,
+});
+
 const defaultComponents = {
-  "ResultsList.item": PublicMembersResultsItem,
-  "ResultsGrid.item": MembersResultsGridItem,
-  "SearchApp.layout": PublicMembersSearchLayout,
-  "SearchBar.element": MembersSearchBarElement,
-  "SearchApp.results": MembersResults,
-  "ResultsList.container": PublicMembersResultsContainer,
-  "EmptyResults.element": MembersEmptyResults,
-  "Sort.element": DropdownSort,
+  [`${appName}.ResultsList.item`]: PublicMembersResultsItem,
+  [`${appName}.ResultsGrid.item`]: MembersResultsGridItem,
+  [`${appName}.SearchApp.layout`]: PublicMembersSearchLayoutWithConfig,
+  [`${appName}.SearchBar.element`]: MembersSearchBarElement,
+  [`${appName}.SearchApp.results`]: MembersResults,
+  [`${appName}.ResultsList.container`]: PublicMembersResultsContainer,
+  [`${appName}.EmptyResults.element`]: MembersEmptyResults,
+  [`${appName}.Sort.element`]: DropdownSort,
 };
 
+const overriddenComponents = overrideStore.getAll();
+
 // Auto-initialize search app
-createSearchAppInit(defaultComponents);
+createSearchAppInit(
+  { ...defaultComponents, ...overriddenComponents },
+  true,
+  "invenio-search-config",
+  true
+);
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/index.js
index 12e3eb080..e2f942311 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/index.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/index.js
@@ -8,7 +8,7 @@
 
 import React from "react";
 import { createSearchAppInit } from "@js/invenio_search_ui";
-import { parametrize } from "react-overridable";
+import { parametrize, overrideStore } from "react-overridable";
 import {
   LabelTypeSubmission,
   LabelTypeInvitation,
@@ -45,6 +45,8 @@ import {
 
 const domContainer = document.getElementById("communities-request-search-root");
 
+const appName = "InvenioCommunities.RequestSearch";
+
 const community = JSON.parse(domContainer.dataset.community);
 
 const RequestsResultsGridItemTemplateWithCommunity = parametrize(
@@ -75,6 +77,10 @@ const RequestCancelModalTriggerWithConfig = parametrize(RequestCancelModalTrigge
   className: "ml-5",
 });
 
+const RequestsSearchLayoutWAppName = parametrize(RequestsSearchLayout, {
+  appName: appName,
+});
+
 const CommunitySubmission = () => (
   <LabelTypeSubmission className="primary" size="small" />
 );
@@ -96,30 +102,38 @@ const Cancelled = () => <LabelStatusCancel className="neutral" size="small" />;
 const Expired = () => <LabelStatusExpire className="expired" size="small" />;
 
 const defaultComponents = {
-  "BucketAggregation.element": ContribBucketAggregationElement,
-  "BucketAggregationValues.element": ContribBucketAggregationValuesElement,
-  "SearchApp.facets": ContribSearchAppFacets,
-  "ResultsList.item": RequestsResultsItemTemplateWithCommunity,
-  "ResultsGrid.item": RequestsResultsGridItemTemplateWithCommunity,
-  "SearchApp.layout": RequestsSearchLayout,
-  "SearchApp.results": RequestsResults,
-  "SearchBar.element": RecordSearchBarElement,
-  "EmptyResults.element": RequestsEmptyResultsWithState,
-  "RequestTypeLabel.layout.community-submission": CommunitySubmission,
-  "RequestTypeLabel.layout.community-invitation": CommunityInvitation,
-  "RequestStatusLabel.layout.submitted": Submitted,
-  "RequestStatusLabel.layout.deleted": Deleted,
-  "RequestStatusLabel.layout.accepted": Accepted,
-  "RequestStatusLabel.layout.declined": Declined,
-  "RequestStatusLabel.layout.cancelled": Cancelled,
-  "RequestStatusLabel.layout.expired": Expired,
-  "RequestActionModalTrigger.accept": RequestAcceptModalTriggerWithConfig,
-  "RequestActionModalTrigger.decline": RequestDeclineModalTriggerWithConfig,
-  "RequestActionModalTrigger.cancel": RequestCancelModalTriggerWithConfig,
-  "RequestActionButton.cancel": RequestCancelButton,
-  "RequestActionButton.decline": RequestDeclineButton,
-  "RequestActionButton.accept": RequestAcceptButton,
+  [`${appName}.BucketAggregation.element`]: ContribBucketAggregationElement,
+  [`${appName}.BucketAggregationValues.element`]: ContribBucketAggregationValuesElement,
+  [`${appName}.SearchApp.facets`]: ContribSearchAppFacets,
+  [`${appName}.ResultsList.item`]: RequestsResultsItemTemplateWithCommunity,
+  [`${appName}.ResultsGrid.item`]: RequestsResultsGridItemTemplateWithCommunity,
+  [`${appName}.SearchApp.layout`]: RequestsSearchLayoutWAppName,
+  [`${appName}.SearchApp.results`]: RequestsResults,
+  [`${appName}.SearchBar.element`]: RecordSearchBarElement,
+  [`${appName}.EmptyResults.element`]: RequestsEmptyResultsWithState,
+  [`${appName}.RequestTypeLabel.layout.community-submission`]: CommunitySubmission,
+  [`${appName}.RequestTypeLabel.layout.community-invitation`]: CommunityInvitation,
+  [`${appName}.RequestStatusLabel.layout.submitted`]: Submitted,
+  [`${appName}.RequestStatusLabel.layout.deleted`]: Deleted,
+  [`${appName}.RequestStatusLabel.layout.accepted`]: Accepted,
+  [`${appName}.RequestStatusLabel.layout.declined`]: Declined,
+  [`${appName}.RequestStatusLabel.layout.cancelled`]: Cancelled,
+  [`${appName}.RequestStatusLabel.layout.expired`]: Expired,
+  [`${appName}.RequestActionModalTrigger.accept`]: RequestAcceptModalTriggerWithConfig,
+  [`${appName}.RequestActionModalTrigger.decline`]:
+    RequestDeclineModalTriggerWithConfig,
+  [`${appName}.RequestActionModalTrigger.cancel`]: RequestCancelModalTriggerWithConfig,
+  [`${appName}.RequestActionButton.cancel`]: RequestCancelButton,
+  [`${appName}.RequestActionButton.decline`]: RequestDeclineButton,
+  [`${appName}.RequestActionButton.accept`]: RequestAcceptButton,
 };
 
+const overriddenComponents = overrideStore.getAll();
+
 // Auto-initialize search app
-createSearchAppInit(defaultComponents);
+createSearchAppInit(
+  { ...defaultComponents, ...overriddenComponents },
+  true,
+  "invenio-search-config",
+  true
+);
diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/requests.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/requests.js
index d2599d53b..95fcc91c9 100644
--- a/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/requests.js
+++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/requests.js
@@ -253,7 +253,7 @@ export const RequestStatusFilter = withState(RequestStatusFilterComponent);
 
 export const RequestsSearchLayout = (props) => {
   const [sidebarVisible, setSidebarVisible] = React.useState(false);
-  const { config } = props;
+  const { config, appName } = props;
   return (
     <Container>
       <Grid>
@@ -291,10 +291,13 @@ export const RequestsSearchLayout = (props) => {
             open={sidebarVisible}
             onHideClick={() => setSidebarVisible(false)}
             // eslint-disable-next-line react/no-children-prop
-            children={<SearchAppFacets aggs={config.aggs} />}
+            children={<SearchAppFacets aggs={config.aggs} appName={appName} />}
           />
           <Grid.Column mobile={16} tablet={16} computer={12}>
-            <SearchAppResultsPane layoutOptions={config.layoutOptions} />
+            <SearchAppResultsPane
+              layoutOptions={config.layoutOptions}
+              appName={appName}
+            />
           </Grid.Column>
         </Grid.Row>
       </Grid>
@@ -304,6 +307,11 @@ export const RequestsSearchLayout = (props) => {
 
 RequestsSearchLayout.propTypes = {
   config: PropTypes.object.isRequired,
+  appName: PropTypes.string,
+};
+
+RequestsSearchLayout.defaultProps = {
+  appName: undefined,
 };
 
 export const RequestsEmptyResults = ({
diff --git a/invenio_communities/templates/semantic-ui/invenio_communities/details/members/invitations.html b/invenio_communities/templates/semantic-ui/invenio_communities/details/members/invitations.html
index 23a56e3d1..8b598c6a3 100644
--- a/invenio_communities/templates/semantic-ui/invenio_communities/details/members/invitations.html
+++ b/invenio_communities/templates/semantic-ui/invenio_communities/details/members/invitations.html
@@ -28,7 +28,7 @@
       data-communities-roles-can-invite='{{ roles_can_invite | tojson }}'
       data-permissions='{{ permissions | tojson }}'
       data-invenio-search-config='{{
-        search_app_communities_invitations_config(app_id="communities-invitations-search",
+        search_app_communities_invitations_config(app_id="InvenioCommunities.InvitationsSearch",
         endpoint=community["links"]["invitations"]) | tojson }}'>
     </div>
   </div>
diff --git a/invenio_communities/templates/semantic-ui/invenio_communities/details/members/members.html b/invenio_communities/templates/semantic-ui/invenio_communities/details/members/members.html
index dfd2f55cb..67edb69bd 100644
--- a/invenio_communities/templates/semantic-ui/invenio_communities/details/members/members.html
+++ b/invenio_communities/templates/semantic-ui/invenio_communities/details/members/members.html
@@ -10,26 +10,23 @@
 {% extends "invenio_communities/details/members/base.html" %}
 
 {% if permissions.can_members_manage %}
-  {% set bundle = webpack['invenio-communities-members-manager.js'] %}
   {% set search_endpoint = community["links"]["members"] %}
+  {% set bundle = webpack['invenio-communities-members-manager.js'] %}
+  {% set app_id = "InvenioCommunities.ManagerSearch" %}
 {% elif permissions.can_members_search %}
-  {% set bundle = webpack['invenio-communities-members.js'] %}
   {% set search_endpoint = community["links"]["members"] %}
+  {% set bundle = webpack['invenio-communities-members.js'] %}
+  {% set app_id = "InvenioCommunities.MemberSearch" %}
 {% elif permissions.can_members_search_public %}
-  {% set bundle = webpack['invenio-communities-members-public.js'] %}
   {% set search_endpoint = community["links"]["public_members"] %}
+  {% set bundle = webpack['invenio-communities-members-public.js'] %}
+  {% set app_id = "InvenioCommunities.PublicSearch" %}
 {% endif %}
 
 
 {% block javascript %}
 {{ super() }}
-{% if permissions.can_members_manage %}
-  {{ webpack['invenio-communities-members-manager.js'] }}
-{% elif permissions.can_members_search %}
-  {{ webpack['invenio-communities-members.js'] }}
-{% elif permissions.can_members_search_public %}
-  {{ webpack['invenio-communities-members-public.js'] }}
-{% endif %}
+{{ bundle }}
 {% endblock javascript %}
 
 {% set active_members_menu_item = 'members' %}
@@ -38,7 +35,7 @@
 {% block settings_body %}
 <div class="thirteen wide computer sixteen wide tablet sixteen wide mobile column">
     <div id="community-members-search-root"
-      data-invenio-search-config='{{ search_app_communities_members_config(app_id="community-members-search", endpoint=search_endpoint) | tojson }}'
+      data-invenio-search-config='{{ search_app_communities_members_config(app_id=app_id, endpoint=search_endpoint) | tojson }}'
       data-community='{{ community | tojson }}'
       data-communities-all-roles='{{ config.COMMUNITIES_ROLES | tojson }}'
       data-communities-roles-can-update='{{ roles_can_update | tojson }}'
diff --git a/invenio_communities/templates/semantic-ui/invenio_communities/details/requests/index.html b/invenio_communities/templates/semantic-ui/invenio_communities/details/requests/index.html
index 0479883c9..fbdb8096b 100644
--- a/invenio_communities/templates/semantic-ui/invenio_communities/details/requests/index.html
+++ b/invenio_communities/templates/semantic-ui/invenio_communities/details/requests/index.html
@@ -25,7 +25,7 @@
     id="communities-request-search-root"
     class="rel-mt-2"
     data-community='{{ community | tojson }}'
-    data-invenio-search-config='{{ search_app_communities_requests_config(app_id="communities-requests-search", endpoint=community.links.requests) | tojson }}'>
+    data-invenio-search-config='{{ search_app_communities_requests_config(app_id="InvenioCommunities.RequestSearch", endpoint=community.links.requests) | tojson }}'>
   </div>
   {%- endblock requests_body %}
 {%- endblock page_body %}
diff --git a/invenio_communities/templates/semantic-ui/invenio_communities/search.html b/invenio_communities/templates/semantic-ui/invenio_communities/search.html
index 2414a6a31..2f8425979 100644
--- a/invenio_communities/templates/semantic-ui/invenio_communities/search.html
+++ b/invenio_communities/templates/semantic-ui/invenio_communities/search.html
@@ -23,6 +23,6 @@ <h3 class="ui header">{{_("Communities")}}</h3>
   </div>
 </div>
 <div id="communities-search" class="rel-mt-3" data-invenio-search-config='{{
-    search_app_communities_config(app_id="communities-search") | tojson }}'>
+    search_app_communities_config(app_id="InvenioCommunities.Search") | tojson }}'>
 </div>
 {%- endblock page_body %}