Skip to content

[backend/frontend] Display name customization (#14873)#14894

Open
Jipegien wants to merge 2 commits intomasterfrom
feat/display-name-customization
Open

[backend/frontend] Display name customization (#14873)#14894
Jipegien wants to merge 2 commits intomasterfrom
feat/display-name-customization

Conversation

@Jipegien
Copy link
Member

@Jipegien Jipegien commented Mar 11, 2026

Proposed changes

  • Wire custom entity display names into the UI by replacing t_i18n('entity_${type}') calls with the useEntityLabelResolver() hook across the platform. When an administrator sets a custom display name in Settings > Customization > Entity types, it now takes effect everywhere: navigation menus, creation/deletion dialogs, filter dropdowns, list columns, graph toolbars, breadcrumbs, settings pages, and search.
  • Add unit tests for useEntityLabel and useEntityLabelResolver hooks (12 test cases covering custom names, plural handling, fallback chains, and multi-setting lookup).
  • Add user-facing documentation for the "Custom display name" feature in docs/administration/entities.md.
  • Remove redundant "Reset to default" buttons from the entity settings form — clearing the field and saving already resets to the default name, consistent with other OpenCTI settings.
  • Fix search on the entity types customization page (/dashboard/settings/customization/entity_types) to match against custom display names, not just the default i18n labels.

Related issues

Checklist

  • I consider the submitted work as finished
  • I tested the code for its functionality
  • I wrote test cases for the relevant uses case (coverage and e2e)
  • I added/update the relevant documentation (either on github or on notion)
  • Where necessary I refactored code to improve the overall quality

Further comments

This PR has a large diff (~195 files) because the original codebase had no abstraction for entity type display labels — every component independently called t_i18n('entity_${type}'). The migration was necessarily file-by-file.

An alternative considered was intercepting at the i18n layer itself (dynamically patching the react-intl message catalog when entity settings load). This would have required zero call-site changes, but was rejected because: (1) it couples the i18n system to Relay-dependent data, (2) plural key patterns are inconsistent across the codebase, and (3) it creates invisible behavior where t_i18n silently returns different values depending on API state.

The explicit hook-based approach is more maintainable and testable, though it relies on developer discipline to use entityLabel() instead of t_i18n('entity_...') in future code. A lint rule flagging the old pattern would be a good follow-up.

Known limitation: observations/artifacts/Root.jsx is a class component and cannot use the hook without refactoring to a functional component.

Note: custom display names are UI-only. STIX JSON exports, URLs, and GraphQL identifiers continue to use the standard STIX type identifiers, preserving interoperability.

@github-actions
Copy link

Thank you for your contribution, but we need you to sign your commits. Please see https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits

@github-actions github-actions bot added the filigran team use to identify PR from the Filigran team label Mar 11, 2026
@codecov
Copy link

codecov bot commented Mar 11, 2026

Codecov Report

❌ Patch coverage is 6.74487% with 318 lines in your changes missing coverage. Please review.
✅ Project coverage is 32.40%. Comparing base (9e189d8) to head (0ad84ae).
⚠️ Report is 13 commits behind head on master.

Files with missing lines Patch % Lines
...sub_types/entity_setting/EntitySettingSettings.tsx 0.00% 15 Missing ⚠️
...-front/src/utils/hooks/useDistributionGraphData.ts 0.00% 7 Missing ⚠️
...t/src/private/components/pir/PirHistoryMessage.tsx 0.00% 5 Missing ⚠️
.../private/components/pir/pir_history/PirHistory.tsx 0.00% 5 Missing ⚠️
...components/pir/pir_overview/PirOverviewHistory.tsx 0.00% 5 Missing ⚠️
...pencti-platform/opencti-front/src/utils/history.ts 0.00% 5 Missing ⚠️
...te/components/common/form/StixCoreObjectsField.tsx 0.00% 4 Missing ⚠️
...rm/opencti-front/src/components/ItemEntityType.tsx 0.00% 3 Missing ⚠️
...x_core_objects/StixCoreObjectsDistributionList.jsx 0.00% 3 Missing ⚠️
...te/components/settings/sub_types/SubTypesLines.tsx 0.00% 3 Missing ⚠️
... and 220 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master   #14894      +/-   ##
==========================================
- Coverage   32.41%   32.40%   -0.02%     
==========================================
  Files        3112     3119       +7     
  Lines      212033   212425     +392     
  Branches    38445    38478      +33     
==========================================
+ Hits        68740    68829      +89     
- Misses     143293   143596     +303     
Flag Coverage Δ
opencti-client-python 45.53% <ø> (ø)
opencti-front 2.82% <6.19%> (+<0.01%) ⬆️
opencti-graphql 67.67% <100.00%> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR wires entity-type “custom display names” (stored in EntitySetting) throughout the OpenCTI UI by centralizing label resolution in useEntityLabel / useEntityLabelResolver, ensuring administrator-defined names appear consistently across navigation, dialogs, filters, lists, graphs, and history/audit messaging.

Changes:

  • Extend the EntitySetting model + GraphQL schemas/types with custom_name and custom_name_plural.
  • Replace many t_i18n('entity_${type}') call sites with useEntityLabelResolver() for consistent, customizable labels.
  • Add documentation describing how to configure custom display names in the admin guide.

Reviewed changes

Copilot reviewed 196 out of 198 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
opencti-platform/opencti-graphql/src/modules/entitySetting/entitySetting.ts Adds custom_name / custom_name_plural fields to entity setting definition.
opencti-platform/opencti-graphql/src/modules/entitySetting/entitySetting.graphql Exposes custom_name / custom_name_plural on the EntitySetting GraphQL type.
opencti-platform/opencti-graphql/src/modules/entitySetting/entitySetting-types.ts Adds TypeScript typing for custom_name / custom_name_plural across entity setting store/STIX types.
opencti-platform/opencti-graphql/src/generated/graphql.ts Regenerates GraphQL TS types/resolvers to include the new fields.
opencti-platform/opencti-graphql/config/default.json Updates default configuration (includes sensitive credential/key changes).
opencti-platform/opencti-front/src/utils/history.ts Uses useEntityLabelResolver() for audit message entity type label resolution.
opencti-platform/opencti-front/src/utils/filters/filtersUtils.tsx Uses useEntityLabelResolver() when rendering entity-type filter values.
opencti-platform/opencti-front/src/schema/relay.schema.graphql Adds custom_name / custom_name_plural to Relay schema for frontend queries.
opencti-platform/opencti-front/src/private/components/workspaces/investigations/InvestigationExpandForm.tsx Uses entity label resolver for target entity labels in workspace UI.
opencti-platform/opencti-front/src/private/components/threats/threat_actors_individual/ThreatActorIndividualDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/threats/threat_actors_individual/ThreatActorIndividualCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/threats/threat_actors_individual/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/threats/threat_actors_group/ThreatActorGroupDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/threats/threat_actors_group/ThreatActorGroupCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/threats/threat_actors_group/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/threats/intrusion_sets/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/threats/intrusion_sets/IntrusionSetDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/threats/intrusion_sets/IntrusionSetCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/threats/campaigns/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/threats/campaigns/CampaignDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/threats/campaigns/CampaignCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/threats/ThreatActorsIndividual.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/threats/ThreatActorsGroup.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/threats/IntrusionSets.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/threats/Campaigns.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/narratives/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/narratives/NarrativeDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/techniques/data_sources/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/data_sources/DataSourceDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/techniques/data_sources/DataSourceCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/techniques/data_components/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/data_components/DataComponentDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/techniques/data_components/DataComponentCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/techniques/courses_of_action/CouseOfActionDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/techniques/attack_patterns/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/attack_patterns/AttackPatternDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/techniques/Narratives.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/DataSources.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/DataComponents.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/CoursesOfAction.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/techniques/AttackPatterns.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/settings/sub_types/SubTypesLines.tsx Updates search/sort to use custom entity labels.
opencti-platform/opencti-front/src/private/components/settings/sub_types/SubTypesLine.tsx Uses entity label resolver for entity type column rendering.
opencti-platform/opencti-front/src/private/components/settings/sub_types/SubType.tsx Uses entity label resolver in breadcrumbs/title on entity type settings pages.
opencti-platform/opencti-front/src/private/components/settings/hidden_types/HiddenTypesField.tsx Uses entity label resolver in hidden-type selection UI.
opencti-platform/opencti-front/src/private/components/settings/hidden_types/HiddenTypesChipList.tsx Uses entity label resolver in hidden-type chip rendering.
opencti-platform/opencti-front/src/private/components/pir/pir_overview/PirOverviewHistory.tsx Uses entity label resolver for PIR log entity type tooltip/title.
opencti-platform/opencti-front/src/private/components/pir/pir_history/PirHistory.tsx Uses entity label resolver for PIR history entity type column rendering.
opencti-platform/opencti-front/src/private/components/pir/PirHistoryMessage.tsx Uses entity label resolver in PIR history message formatting.
opencti-platform/opencti-front/src/private/components/observations/stix_cyber_observables/StixCyberObservableDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/observations/stix_cyber_observables/StixCyberObservableCreation.jsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/observations/stix_cyber_observables/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/observations/infrastructures/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/observations/infrastructures/InfrastructureDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/observations/infrastructures/InfrastructureCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/observations/indicators/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/observations/indicators/IndicatorDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/observations/artifacts/ArtifactCreation.jsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/observations/StixCyberObservables.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/observations/Infrastructures.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/observations/Indicators.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/observations/Artifacts.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/regions/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/regions/RegionDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/locations/regions/RegionCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/locations/positions/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/positions/PositionPopoverDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/locations/positions/PositionDetails.tsx Uses entity label resolver for administrative area label display.
opencti-platform/opencti-front/src/private/components/locations/positions/PositionDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/locations/positions/PositionCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/locations/countries/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/countries/CountryDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/locations/countries/CountryCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/locations/cities/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/cities/CityDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/locations/cities/CityCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/locations/administrative_areas/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/administrative_areas/AdministrativeAreaDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/locations/administrative_areas/AdministrativeAreaCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/locations/Regions.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/Positions.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/Countries.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/Cities.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/locations/AdministrativeAreas.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/events/observed_data/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/events/observed_data/ObservedDataDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/events/observed_data/ObservedDataCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/events/incidents/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/events/incidents/IncidentDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/events/incidents/IncidentCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/events/ObservedDatas.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/events/Incidents.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/systems/SystemDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/entities/systems/SystemCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/entities/systems/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/securityPlatforms/SecurityPlatformDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/entities/securityPlatforms/SecurityPlatformCreationForm.tsx Uses entity label resolver in creation success messaging.
opencti-platform/opencti-front/src/private/components/entities/securityPlatforms/SecurityPlatformCreation.tsx Uses entity label resolver in creation drawer title.
opencti-platform/opencti-front/src/private/components/entities/securityPlatforms/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/sectors/SectorDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/entities/sectors/SectorCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/entities/sectors/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/organizations/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/organizations/OrganizationDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/entities/organizations/OrganizationCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/entities/individuals/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/individuals/IndividualDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/entities/individuals/IndividualCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/entities/events/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/events/EventDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/entities/events/EventCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/entities/Systems.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/SecurityPlatforms.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/Sectors.jsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/Organizations.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/Individuals.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/entities/Events.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/common/stix_core_objects/StixCoreObjectSecurityCoverage.tsx Uses entity label resolver in creation drawer title.
opencti-platform/opencti-front/src/private/components/common/lists/SearchScopeElement.tsx Uses entity label resolver for search scope type labels.
opencti-platform/opencti-front/src/private/components/common/form/EntityTypeSelectAdornment.tsx Uses entity label resolver for entity type select option labels.
opencti-platform/opencti-front/src/private/components/cases/tasks/TaskDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/cases/tasks/TaskCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/cases/tasks/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/tasks/CaseTasksLines.tsx Uses entity label resolver in creation drawer title.
opencti-platform/opencti-front/src/private/components/cases/tasks/CaseTaskCreation.tsx Uses entity label resolver in creation success messaging.
opencti-platform/opencti-front/src/private/components/cases/feedbacks/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/feedbacks/FeedbackDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/cases/case_rfts/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/case_rfts/CaseRftDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/cases/case_rfis/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/case_rfis/CaseRfiDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/cases/case_incidents/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/case_incidents/CaseIncidentDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/cases/Tasks.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/Feedbacks.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/CaseRfts.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/CaseRfis.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/cases/CaseIncidents.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/arsenal/vulnerabilities/VulnerabilityDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/arsenal/vulnerabilities/VulnerabilityCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/arsenal/vulnerabilities/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/arsenal/tools/ToolDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/arsenal/tools/ToolCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/arsenal/tools/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/arsenal/malwares/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/arsenal/malwares/MalwareDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/arsenal/malwares/MalwareCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/arsenal/channels/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/arsenal/channels/ChannelDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/arsenal/channels/ChannelCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/arsenal/Vulnerabilities.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/arsenal/Tools.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/arsenal/Malwares.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/arsenal/Channels.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/security_coverages/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/reports/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/reports/ReportDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/analyses/reports/ReportCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/analyses/notes/Root.jsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/notes/NoteDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/analyses/notes/AddNotesFunctionalComponent.tsx Uses entity label resolver in create button and dialog title.
opencti-platform/opencti-front/src/private/components/analyses/malware_analyses/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/malware_analyses/MalwareAnalysisDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/analyses/groupings/Root.tsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/groupings/GroupingDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/analyses/groupings/GroupingCreation.tsx Uses entity label resolver in creation drawer title and success messaging.
opencti-platform/opencti-front/src/private/components/analyses/external_references/Root.jsx Uses entity label resolver in breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/external_references/ExternalReferenceDeletion.tsx Uses entity label resolver in deletion success messaging.
opencti-platform/opencti-front/src/private/components/analyses/external_references/AddExternalReferences.jsx Uses entity label resolver in create button label.
opencti-platform/opencti-front/src/private/components/analyses/SecurityCoverages.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/Reports.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/Notes.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/MalwareAnalyses.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/Groupings.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/private/components/analyses/ExternalReferences.tsx Uses entity label resolver in list breadcrumbs.
opencti-platform/opencti-front/src/components/graph/components/GraphToolbarSelectTools.tsx Uses entity label resolver for graph toolbar “select by type” option text.
opencti-platform/opencti-front/src/components/graph/components/GraphToolbarFilterTools.tsx Uses entity label resolver for graph toolbar “filter by type” option text.
opencti-platform/opencti-front/src/components/ItemEntityType.tsx Uses entity label resolver when rendering entity-type tags (non-relationship).
opencti-platform/opencti-front/src/components/CreateEntityControlledDial.tsx Uses entity label resolver for “Create …” button label value.
docs/docs/administration/entities.md Documents how to configure and what to expect from custom display names.
Comments suppressed due to low confidence (1)

opencti-platform/opencti-front/src/utils/filters/filtersUtils.tsx:433

  • filterValue previously translated both entity types and relationship types (via displayEntityTypeForTranslation). Switching to entityLabel(value) breaks relationship-type filters (e.g. relationship_type/type values are lowercase like uses/targets), and the later relationship translation branch is currently unreachable because relationship_type and type are included in entityTypesFilters. Consider handling relationship_type/type before the entityTypesFilters block, or using t_i18n(displayEntityTypeForTranslation(value)) for lowercase values and entityLabel(...) only for entity types.

Comment on lines 128 to 132
"admin": {
"email": "admin@opencti.io",
"password": "ChangeMe",
"token": "ChangeMe",
"password": "admin",
"token": "550e8400-e29b-41d4-a716-446655440000",
"externally_managed": false
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Default admin credentials were changed from placeholder values to a weak password (admin) and a concrete token UUID. Committing usable credentials in default config is a security risk and can also lead to accidental deployments with known credentials. Please revert these to placeholders (e.g. ChangeMe) and document the expected local override mechanism.

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot open a new pull request to apply changes based on this feedback

Comment on lines 3 to 5
"port": 4000,
"encryption_key": "LF7vM33p5UlgZseKtKGbGeodveCCOFnlnKTkm18NuCo=",
"base_path": "",
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

encryption_key appears to be a real secret and is now hardcoded in config/default.json. This risks leaking a reusable encryption key to all environments and to git history. Prefer leaving it unset in the default config (or set to a placeholder like ChangeMe) and require it via environment/secure config at runtime.

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot open a new pull request to apply changes based on this feedback

Copy link
Contributor

Copilot AI commented Mar 12, 2026

@Jipegien I've opened a new pull request, #14899, to work on those changes. Once the pull request is ready, I'll request review from you.

Copy link
Contributor

Copilot AI commented Mar 12, 2026

@Jipegien I've opened a new pull request, #14900, to work on those changes. Once the pull request is ready, I'll request review from you.

@Jipegien Jipegien changed the title Feat/display name customization [feat] Display name customization (#14873) Mar 12, 2026
@Kedae Kedae marked this pull request as draft March 12, 2026 12:30
@Jipegien Jipegien force-pushed the feat/display-name-customization branch 2 times, most recently from ec7ff54 to b4717de Compare March 12, 2026 16:36
@Jipegien Jipegien marked this pull request as ready for review March 12, 2026 19:32
@Jipegien
Copy link
Member Author

the e2e fail is not reproduced when playing the playwright test on my local environement

@aHenryJard aHenryJard changed the title [feat] Display name customization (#14873) [backend/frontend] Display name customization (#14873) Mar 13, 2026
@@ -0,0 +1,8 @@
{
"permissions": {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like an unrelated change, can you tell me why it's required for the feature ? or else revert.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be ok now.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand this change, why is it required ?

@Jipegien Jipegien force-pushed the feat/display-name-customization branch from b4717de to 6bb1af9 Compare March 13, 2026 08:22
return (
<Drawer
title={t_i18n('Create an external reference')}
title={t_i18n('', { id: 'Create ...', values: { entity_type: entityLabel('External-Reference') } })}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change impacts the e2e testing

@Jipegien Jipegien force-pushed the feat/display-name-customization branch from 6bb1af9 to 459c417 Compare March 13, 2026 09:19
@fellowseb fellowseb self-requested a review March 13, 2026 10:42
@Jipegien Jipegien force-pushed the feat/display-name-customization branch 2 times, most recently from 01599a3 to 72f60b1 Compare March 13, 2026 13:09
… names (#14873)

Add custom_name and custom_name_plural fields to EntitySetting module.
This allows platform administrators to define custom display names for
any core entity type in Settings > Customization > Entity types.

Backend changes:
- Add custom_name/custom_name_plural to EntitySetting types, GraphQL schema, and module definition
- Fields are nullable strings, stored platform-wide

Frontend changes:
- Add editable display name fields to EntitySettingSettings component
- Add reset-to-default buttons for each field
- Add useEntityLabel hook for resolving custom vs default entity labels
- Update entitySetting fragment to include new fields
- Expose new fields in useEntitySettings hook

"Diplay name customization, test coverage, and documentation.

add translation keys, fixing error from ci/cd
@Jipegien Jipegien force-pushed the feat/display-name-customization branch from 72f60b1 to b6afdff Compare March 13, 2026 13:29

## Custom display name

This configuration allows you to rename any entity type across the platform. When you set a custom display name, it replaces the default label everywhere in the interface: navigation menus, creation buttons and dialogs, list columns, filter dropdowns, knowledge graphs, and search results.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is worth clarifying that this will be applied for all users. As the previous section 'hidden in interface' can be applied to only certain groups of users.

e.g. "This configuration allows you to rename any entity type across the platform for all users."

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 266 out of 268 changed files in this pull request and generated 2 comments.

Comment on lines 27 to 31
return (
<Drawer
title={t_i18n('Update a security platform')}
title={t_i18n('', { id: 'Update ...', values: { entity_type: entityLabel('Security-Platform') } })}
onClose={handleClose}
context={editContext}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot apply changes based on this feedback

Comment on lines 16 to 20
const { entitySettings } = useAuth();
const entityTypes = Array.isArray(entityType) ? entityType : [entityType];
return entitySettings.edges
return (entitySettings?.edges ?? [])
.map(({ node }) => useFragment<EntitySettingSettings_entitySetting$key>(entitySettingFragment, node))
.filter(({ target_type }: EntitySetting) => (entityType ? entityTypes.includes(target_type) : true));
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot apply changes based on this feedback

Copy link
Contributor

Copilot AI commented Mar 13, 2026

@Jipegien I've opened a new pull request, #14926, to work on those changes. Once the pull request is ready, I'll request review from you.

Copy link
Contributor

Copilot AI commented Mar 13, 2026

@Jipegien I've opened a new pull request, #14927, to work on those changes. Once the pull request is ready, I'll request review from you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

filigran team use to identify PR from the Filigran team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow administrators to customize the display name of core entities

6 participants