Skip to content

[Entity Analytics][Lead Generation][2] Add Risk, Temporal State, and behavorial observation modules#256156

Merged
abhishekbhatia1710 merged 32 commits intoelastic:mainfrom
abhishekbhatia1710:ea-15947-observation-modules
Mar 27, 2026
Merged

[Entity Analytics][Lead Generation][2] Add Risk, Temporal State, and behavorial observation modules#256156
abhishekbhatia1710 merged 32 commits intoelastic:mainfrom
abhishekbhatia1710:ea-15947-observation-modules

Conversation

@abhishekbhatia1710
Copy link
Copy Markdown
Contributor

@abhishekbhatia1710 abhishekbhatia1710 commented Mar 5, 2026

Summary

This PR adds three pluggable observation modules to the lead generation pipeline. Each module collects signals about entities (users and hosts) from different data sources. The engine combines these observations to score and rank leads, and uses them when generating titles, tags, and chat recommendations.

  • Risk Analysis : Uses current risk scores on entity records and (where available) risk score history. Flags entities that are high- or critical-risk, and those with meaningful risk increases over 24 hours, 7 days, or 90 days. Privileged entities with elevated risk are called out separately.

  • Temporal State Analysis : Looks at how entity state changes over time. Right now it focuses on privilege escalation: entities that were not privileged in the past but are privileged in the latest view (using Entity Store history). Other temporal signals (e.g. investigation status, watchlist) are left as hooks for later.

  • Behavorial Analysis : Uses security alerts tied to each entity over a 7 day window. It highlights severity (critical/high vs medium vs low), alert volume spikes, and cases where many distinct detection rules fire on the same entity (multi-tactic style activity).

All three modules are registered with the lead generation engine and contribute to the same pipeline: entity retrieval -> observation collection -> scoring -> grouping and synthesis. No new API surface; this builds on the existing generate/find lead routes and the foundation from #255272.

Till the foundation PR gets merge, use the below comparison link to only see the changes for observation modules

abhishekbhatia1710/kibana@ea-15946-lead-gen-foundation...ea-15947-observation-modules

Testing Steps :

The POST /internal/entity_analytics/leads/generate and GET /internal/entity_analytics/leads  are only available for now.

  1. Entity Store V2 enabled with some user/host entities.
  2. Risk Engine enabled and risk score data (for the risk analysis module to find scores). (document generator)
  3. Some detection rules firing alerts against those entities (for the alert analysis module). (This i created using gemini)

Then call POST /internal/entity_analytics/leads/generate. Generated leads show up via GET /internal/entity_analytics/leads.

Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

  • Flaky Test Runner was used on any tests changed
  • The PR description includes the appropriate Release Notes section, and the correct release_note:* label is applied per the guidelines
  • Review the backport guidelines and apply applicable backport:* labels.

@abhishekbhatia1710 abhishekbhatia1710 self-assigned this Mar 5, 2026
@abhishekbhatia1710 abhishekbhatia1710 added backport:skip This PR does not require backporting release_note:feature Makes this part of the condensed release notes Team:Entity Analytics Security Entity Analytics Team v9.4.0 labels Mar 5, 2026
…ation directory and fix nested mappings

- Move all code from entity_lead_generation/ into lead_generation/ to
  eliminate duplicate directory structures between foundation and
  observation modules PRs
- Change entities and observations mapping from nested to object since
  we don't query multiple fields of array elements simultaneously
- Merge barrel exports and update all import paths
@abhishekbhatia1710 abhishekbhatia1710 marked this pull request as ready for review March 9, 2026 08:18
@abhishekbhatia1710 abhishekbhatia1710 requested review from a team as code owners March 9, 2026 08:18
@abhishekbhatia1710 abhishekbhatia1710 requested a review from ymao1 March 9, 2026 08:18
@elasticmachine
Copy link
Copy Markdown
Contributor

Pinging @elastic/security-entity-analytics (Team:Entity Analytics)

…modules

# Conflicts:
#	x-pack/solutions/security/plugins/security_solution/common/entity_analytics/lead_generation/constants.ts
#	x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/lead_generation/index.ts
#	x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/lead_generation/observation_modules/index.ts
Copy link
Copy Markdown
Contributor

@ymao1 ymao1 left a comment

Choose a reason for hiding this comment

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

Did a first pass code review. Left a comment about reading all the entities into memory and a few places where unit tests would be great. Maybe there is a plan to add functional tests in a followup?

abhishekbhatia1710 and others added 6 commits March 10, 2026 13:20
…persistLeads

- Replace hardcoded alerts index pattern with DEFAULT_ALERTS_INDEX scoped
  to the current spaceId for proper data isolation
- Add size/from query parameters to GET /leads with Zod validation
  (default 50, max 200) and track_total_hits for accurate totals
- Export and add unit tests for persistLeads (bulk upsert + stale cleanup)
  and formatLeadForResponse

Addresses review comments from elastic#256156
Engine tests (16):
- Pipeline: empty entities, no observations, disabled modules, module
  errors, maxLeads cap, minObservations threshold
- Priority scoring: severity rank formula (low=1, medium=3, high=5,
  critical=7), count bonus capped at +4, overall cap at 10
- Output: priority ordering, staleness, chatRecommendations

Risk score module tests (12):
- Current risk level tiers (critical/high/medium/low thresholds)
- Privileged entity bonus (privileged + high risk → critical)
- Risk escalation detection from time-series history
- Entities without risk data are skipped

Temporal state module tests (6):
- Privilege escalation detection from entity snapshots
- Already-privileged entities produce no observation
- Non-privileged entities skip ES query entirely
- Multi entity-type handling, error resilience

Behavioral analysis module tests (13):
- Severity tier selection (critical > high > medium > low)
- Alert volume spike thresholds (10 = medium, 30 = high)
- Multi-tactic detection (3 rules = high, 6 = critical)
- Enabled/disabled based on alertsIndexPattern, error handling

Addresses review comments from elastic#256156
Limits fields fetched from Entity Store to only those needed by
observation modules (identity, risk, attributes, behaviors, lifecycle).
Excludes large nested fields like raw log data that are not used in
the lead generation pipeline.

Addresses memory concern from review comment on elastic#256156
The Entity Store V2 EUID PR (elastic#250951) is merged. This migrates the
lead generation pipeline from V1 per-entity-type indices to V2's
unified index pattern (.entities.v2.latest.security_{namespace}).

- fetchAllEntityStoreRecords now queries a single V2 index instead
  of looping over separate user/host V1 indices
- entityRecordToLeadEntity falls back to entity.id (EUID) when
  entity.name is absent
- temporal_state_module uses V2 history snapshot pattern and filters
  by entity.type/entity.name instead of V1 entity-type-specific fields
- De-duplicated entityToKey by importing from shared utils
- Added unit tests for fetchAllEntityStoreRecords, entityRecordToLeadEntity,
  and getEntityStoreLatestIndex
…ULT_ALERTS_INDEX

DEFAULT_ALERTS_INDEX is not re-exported from the common barrel.
Use the existing getAlertsIndex(spaceId) from entity_analytics/utils
which encapsulates the same pattern.
Copy link
Copy Markdown
Contributor

@ymao1 ymao1 left a comment

Choose a reason for hiding this comment

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

LGTM. Thanks for addressing my comments. The primary followup that I don't want to get lost in all the comments is breaking down the entity query so we're not bringing all entities back into memory unnecessarily.

abhishekbhatia1710 and others added 4 commits March 24, 2026 15:48
… modules

- Delete llm_synthesize.ts and all chatModel/InferenceChatModel plumbing
- Fix buildDescription joining with \n instead of space
- Fix usedTitleTracker: move from module-level mutable state to local scope
- Fix staleness at generation time: hardcode 'fresh' (real calc at read time)
- Export calculateStaleness for use by GET route
- Remove dead PATTERN_CATALOG entries (investigation_status, watchlist_inclusion,
  bare risk_escalation, low_risk_score)
- Inline groupByObservationPattern stub and buildRuleBasedTitle
- Pre-build observationsByEntityId map to avoid O(N×M) filter scans
- Fix groupEntitiesByType spread-in-reduce with push-based loop
- Parallelize risk score time-series queries with Promise.all
- Remove low_risk_score tier from risk score module
- Remove deprecated createAlertAnalysisModule alias
…on-modules' of github.com:abhishekbhatia1710/kibana into ea-15947-observation-modules
abhishekbhatia1710 and others added 3 commits March 24, 2026 21:07
…ionEnabled

- Remove chatModel / InferenceChatModel / connectorId from generate_leads
  route since LLM synthesis was removed in an earlier refactor commit
- Rename entityThreatHuntingEnabled → leadGenerationEnabled to match the
  current experimental feature flag name
Return early from persistLeads when the leads array is empty.
Previously the deleteByQuery ran unconditionally, deleting all
existing leads in the index because no documents carried the new
executionId.
abhishekbhatia1710 and others added 2 commits March 25, 2026 13:18
Revert the early return when leads is empty. The gap-free replace
pattern requires deleteByQuery to run unconditionally so stale docs
from previous executions are cleaned up even when the engine produces
zero leads. Only the bulk upsert is guarded by leads.length > 0.
@elasticmachine
Copy link
Copy Markdown
Contributor

💚 Build Succeeded

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
securitySolution 9257 9258 +1

History

cc @abhishekbhatia1710

@abhishekbhatia1710 abhishekbhatia1710 merged commit a56a8dc into elastic:main Mar 27, 2026
19 checks passed
abhishekbhatia1710 added a commit that referenced this pull request Mar 27, 2026
…t to get data for lead generation (#256628)

## Summary

- Introduces a shared **Entity Retriever** that centralises Entity Store
V2 fetching, paginated via `search_after` for all users/hosts, or
targeted by name, replacing duplicated inline logic in the
generate-leads route
- Introduces an **Entity Enricher** that pre-fetches risk score history
(90-day daily averages), alert summaries (severity breakdown, top rules,
top alerts), asset criticality, and privileged status for a batch of
entities
- Refactors the generate-leads route to delegate entity fetching to the
retriever, removing ~70 lines of inline code
- Updates the barrel file to export both new services and their types


Closes : elastic/security-team#15948

This PR is 3rd part of the lead generation feature being built under the
[Entity Analytics Lead Generation
epic](elastic/security-team#14401). It builds
on the foundation and observation modules from #255272 and #256156.

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
abhishekbhatia1710 added a commit to abhishekbhatia1710/kibana that referenced this pull request Mar 27, 2026
…n LLM prompt

- Replace `computeStaleness(now, now)` with literal `'fresh'` since staleness
  is recalculated at read time in LeadDataClient
- Add anti-hallucination instruction for rule names in LLM synthesis prompt
- Rename alert_analysis_module/ to behavioral_analysis_module/ to match
  MODULE_ID = 'behavioral_analysis' (restoring consistency from PR elastic#256156)
- Remove deprecated createAlertAnalysisModule alias
- Update all import paths to reference behavioral_analysis_module
kelvtanv pushed a commit to kelvtanv/kibana that referenced this pull request Mar 27, 2026
…t to get data for lead generation (elastic#256628)

## Summary

- Introduces a shared **Entity Retriever** that centralises Entity Store
V2 fetching, paginated via `search_after` for all users/hosts, or
targeted by name, replacing duplicated inline logic in the
generate-leads route
- Introduces an **Entity Enricher** that pre-fetches risk score history
(90-day daily averages), alert summaries (severity breakdown, top rules,
top alerts), asset criticality, and privileged status for a batch of
entities
- Refactors the generate-leads route to delegate entity fetching to the
retriever, removing ~70 lines of inline code
- Updates the barrel file to export both new services and their types


Closes : elastic/security-team#15948

This PR is 3rd part of the lead generation feature being built under the
[Entity Analytics Lead Generation
epic](elastic/security-team#14401). It builds
on the foundation and observation modules from elastic#255272 and elastic#256156.

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
SoniaSanzV pushed a commit to SoniaSanzV/kibana that referenced this pull request Mar 30, 2026
…t to get data for lead generation (elastic#256628)

## Summary

- Introduces a shared **Entity Retriever** that centralises Entity Store
V2 fetching, paginated via `search_after` for all users/hosts, or
targeted by name, replacing duplicated inline logic in the
generate-leads route
- Introduces an **Entity Enricher** that pre-fetches risk score history
(90-day daily averages), alert summaries (severity breakdown, top rules,
top alerts), asset criticality, and privileged status for a batch of
entities
- Refactors the generate-leads route to delegate entity fetching to the
retriever, removing ~70 lines of inline code
- Updates the barrel file to export both new services and their types


Closes : elastic/security-team#15948

This PR is 3rd part of the lead generation feature being built under the
[Entity Analytics Lead Generation
epic](elastic/security-team#14401). It builds
on the foundation and observation modules from elastic#255272 and elastic#256156.

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
abhishekbhatia1710 added a commit to abhishekbhatia1710/kibana that referenced this pull request Mar 31, 2026
Resolve conflicts after PRs elastic#255272 (Foundation), elastic#256156 (Observation
Modules), elastic#256628 (Entity Retrieval), and elastic#257046 (CRUD API Routes)
were merged into main.

Key resolutions:
- Keep main's authoritative versions of observation modules with
  data-driven tier tables and RiskScoreDataClient integration
- Add scheduling-specific weight properties to module configs
- Wire RiskScoreDataClient through RunPipelineParams via dependency
  injection (route uses context, task creates from CoreStart)
- Preserve main's .keyword suffix fixes in lead_data_client ES queries
- Keep scheduling branch's single-file behavioral_analysis_module
  (consolidated from subdirectory structure) and remove stale subdir
- Delete generate_leads.test.ts (coverage moved to run_pipeline.test.ts)
- Preserve Task Manager registration, enable/disable route wiring,
  and run_pipeline shared orchestration from scheduling branch

Note: pre-commit hook bypassed because ESLint failures are from
upstream kbn-evals-suite-significant-events package (pre-existing
in main), not from lead generation changes.
jeramysoucy pushed a commit to jeramysoucy/kibana that referenced this pull request Apr 1, 2026
…behavorial observation modules (elastic#256156)

## Summary

This PR adds three pluggable observation modules to the lead generation
pipeline. Each module collects signals about entities (users and hosts)
from different data sources. The engine combines these observations to
score and rank leads, and uses them when generating titles, tags, and
chat recommendations.

- **Risk Analysis** : Uses current risk scores on entity records and
(where available) risk score history. Flags entities that are high- or
critical-risk, and those with meaningful risk increases over 24 hours, 7
days, or 90 days. Privileged entities with elevated risk are called out
separately.

- **Temporal State Analysis** : Looks at how entity state changes over
time. Right now it focuses on **privilege escalation**: entities that
were not privileged in the past but are privileged in the latest view
(using Entity Store history). Other temporal signals (e.g. investigation
status, watchlist) are left as hooks for later.

- **Behavorial Analysis** : Uses security alerts tied to each entity
over a 7 day window. It highlights severity (critical/high vs medium vs
low), alert volume spikes, and cases where many distinct detection rules
fire on the same entity (multi-tactic style activity).

All three modules are registered with the lead generation engine and
contribute to the same pipeline: entity retrieval -> observation
collection -> scoring -> grouping and synthesis. No new API surface;
this builds on the existing generate/find lead routes and the foundation
from elastic#255272.

Till the foundation PR gets merge, use the below comparison link to only
see the changes for observation modules


abhishekbhatia1710/kibana@ea-15946-lead-gen-foundation...ea-15947-observation-modules


Testing Steps : 

The `POST /internal/entity_analytics/leads/generate` and `GET
/internal/entity_analytics/leads`  are only available for now.

1. Entity Store V2 enabled with some user/host entities.
2. Risk Engine enabled and risk score data (for the risk analysis module
to find scores). (document generator)
3. Some detection rules firing alerts against those entities (for the
alert analysis module). (This i created using gemini)

Then call `POST /internal/entity_analytics/leads/generate`. Generated
leads show up via `GET /internal/entity_analytics/leads`.


### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
jeramysoucy pushed a commit to jeramysoucy/kibana that referenced this pull request Apr 1, 2026
…t to get data for lead generation (elastic#256628)

## Summary

- Introduces a shared **Entity Retriever** that centralises Entity Store
V2 fetching, paginated via `search_after` for all users/hosts, or
targeted by name, replacing duplicated inline logic in the
generate-leads route
- Introduces an **Entity Enricher** that pre-fetches risk score history
(90-day daily averages), alert summaries (severity breakdown, top rules,
top alerts), asset criticality, and privileged status for a batch of
entities
- Refactors the generate-leads route to delegate entity fetching to the
retriever, removing ~70 lines of inline code
- Updates the barrel file to export both new services and their types


Closes : elastic/security-team#15948

This PR is 3rd part of the lead generation feature being built under the
[Entity Analytics Lead Generation
epic](elastic/security-team#14401). It builds
on the foundation and observation modules from elastic#255272 and elastic#256156.

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
paulinashakirova pushed a commit to paulinashakirova/kibana that referenced this pull request Apr 2, 2026
…behavorial observation modules (elastic#256156)

## Summary

This PR adds three pluggable observation modules to the lead generation
pipeline. Each module collects signals about entities (users and hosts)
from different data sources. The engine combines these observations to
score and rank leads, and uses them when generating titles, tags, and
chat recommendations.

- **Risk Analysis** : Uses current risk scores on entity records and
(where available) risk score history. Flags entities that are high- or
critical-risk, and those with meaningful risk increases over 24 hours, 7
days, or 90 days. Privileged entities with elevated risk are called out
separately.

- **Temporal State Analysis** : Looks at how entity state changes over
time. Right now it focuses on **privilege escalation**: entities that
were not privileged in the past but are privileged in the latest view
(using Entity Store history). Other temporal signals (e.g. investigation
status, watchlist) are left as hooks for later.

- **Behavorial Analysis** : Uses security alerts tied to each entity
over a 7 day window. It highlights severity (critical/high vs medium vs
low), alert volume spikes, and cases where many distinct detection rules
fire on the same entity (multi-tactic style activity).

All three modules are registered with the lead generation engine and
contribute to the same pipeline: entity retrieval -> observation
collection -> scoring -> grouping and synthesis. No new API surface;
this builds on the existing generate/find lead routes and the foundation
from elastic#255272.

Till the foundation PR gets merge, use the below comparison link to only
see the changes for observation modules


abhishekbhatia1710/kibana@ea-15946-lead-gen-foundation...ea-15947-observation-modules


Testing Steps : 

The `POST /internal/entity_analytics/leads/generate` and `GET
/internal/entity_analytics/leads`  are only available for now.

1. Entity Store V2 enabled with some user/host entities.
2. Risk Engine enabled and risk score data (for the risk analysis module
to find scores). (document generator)
3. Some detection rules firing alerts against those entities (for the
alert analysis module). (This i created using gemini)

Then call `POST /internal/entity_analytics/leads/generate`. Generated
leads show up via `GET /internal/entity_analytics/leads`.


### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
paulinashakirova pushed a commit to paulinashakirova/kibana that referenced this pull request Apr 2, 2026
…t to get data for lead generation (elastic#256628)

## Summary

- Introduces a shared **Entity Retriever** that centralises Entity Store
V2 fetching, paginated via `search_after` for all users/hosts, or
targeted by name, replacing duplicated inline logic in the
generate-leads route
- Introduces an **Entity Enricher** that pre-fetches risk score history
(90-day daily averages), alert summaries (severity breakdown, top rules,
top alerts), asset criticality, and privileged status for a batch of
entities
- Refactors the generate-leads route to delegate entity fetching to the
retriever, removing ~70 lines of inline code
- Updates the barrel file to export both new services and their types


Closes : elastic/security-team#15948

This PR is 3rd part of the lead generation feature being built under the
[Entity Analytics Lead Generation
epic](elastic/security-team#14401). It builds
on the foundation and observation modules from elastic#255272 and elastic#256156.

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip This PR does not require backporting release_note:feature Makes this part of the condensed release notes Team:Entity Analytics Security Entity Analytics Team v9.4.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants