diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_entity_analytics_status.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_entity_analytics_status.test.ts index 2291ae02c3e35..66888ecdcdeba 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_entity_analytics_status.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_entity_analytics_status.test.ts @@ -190,6 +190,17 @@ describe('deriveEntityAnalyticsStatus', () => { describe('entity store v2 (entity store is sole status driver)', () => { const v2Base = { ...base, isEntityStoreV2Enabled: true }; + it('returns enabled when V2 is enabled and store=running even if V1 feature flag is disabled', () => { + expect( + deriveEntityAnalyticsStatus({ + ...v2Base, + isEntityStoreFeatureFlagDisabled: true, + riskEngineStatus: RiskEngineStatusEnum.NOT_INSTALLED, + entityStoreStatus: 'running', + }) + ).toBe('enabled'); + }); + it('returns enabled when store=running regardless of risk engine status', () => { expect( deriveEntityAnalyticsStatus({ diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_entity_analytics_status.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_entity_analytics_status.ts index c9349371dd0c9..921112e8fe509 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_entity_analytics_status.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_entity_analytics_status.ts @@ -88,6 +88,17 @@ export const deriveEntityAnalyticsStatus = ({ return 'enabling'; } + // V2 supersedes the V1 experimental feature flag — check it first + if (isEntityStoreV2Enabled) { + if (entityStoreStatus === 'installing') { + return 'enabling'; + } + if (entityStoreStatus === 'error') { + return 'error'; + } + return deriveEntityStoreOnlyStatus(entityStoreStatus); + } + if (isEntityStoreFeatureFlagDisabled) { return deriveRiskEngineOnlyStatus(riskEngineStatus); } @@ -100,10 +111,6 @@ export const deriveEntityAnalyticsStatus = ({ return 'error'; } - if (isEntityStoreV2Enabled) { - return deriveEntityStoreOnlyStatus(entityStoreStatus); - } - return deriveCombinedStatus(riskEngineStatus, entityStoreStatus); }; diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_toggle_entity_analytics.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_toggle_entity_analytics.ts index 41d8639162c41..e0cf960afdb38 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_toggle_entity_analytics.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_toggle_entity_analytics.ts @@ -165,8 +165,9 @@ export const useToggleEntityAnalytics = ({ setIsToggling(true); try { const riskOn = riskEngineStatus === RiskEngineStatusEnum.ENABLED; - const storeOn = - !isEntityStoreFeatureFlagDisabled && entityStoreStatus === StoreStatusEnum.running; + const storeOn = isEntityStoreV2Enabled + ? entityStoreStatus === StoreStatusEnum.running + : !isEntityStoreFeatureFlagDisabled && entityStoreStatus === StoreStatusEnum.running; if (isEntityStoreV2Enabled) { if (storeOn) {