Skip to content

CPS tech preview#5498

Draft
shainaraskas wants to merge 20 commits intomainfrom
cps-tech-preview
Draft

CPS tech preview#5498
shainaraskas wants to merge 20 commits intomainfrom
cps-tech-preview

Conversation

@shainaraskas
Copy link
Collaborator

Summary

Generative AI disclosure

  1. Did you use a generative AI (GenAI) tool to assist in creating this contribution?
  • Yes
  • No

@shainaraskas shainaraskas changed the title Cps tech preview CPS tech preview Mar 13, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 13, 2026

Vale Linting Results

Summary: 2 warnings found

⚠️ Warnings (2)
File Line Rule Message
explore-analyze/query-filter/languages/esql-kibana.md 273 Elastic.Spelling 'autocompletes' is a possible misspelling.
explore-analyze/visualize/maps.md 74 Elastic.DontUse Don't use 'just'.

The Vale linter checks documentation changes against the Elastic Docs style guide.

To use Vale locally or report issues, refer to Elastic style guide for Vale.

## Summary

Adds a "Use data sources with CPS" section to the data views page
(`data-views.md`), explaining how data views interact with cross-project
search:

- When CPS is active, the data view creation form previews matching
indices from linked projects based on the current CPS scope.
- The data view itself does not store the CPS scope — at query time, the
active scope determines which linked projects are searched.
- Users can restrict scope using qualified expressions in the index
pattern (e.g. `project_alpha:logs-*`, `_origin:logs-*`), or project
routing in queries.

Positioned after the existing CCS section as the serverless equivalent.

Closes elastic/docs-content-internal#687

## Test plan

- [x] Verify the page builds correctly at
`explore-analyze/find-and-organize/data-views`
- [x] Confirm `applies_to` tags render properly (serverless preview /
stack unavailable)
- [ ] Check cross-links to CPS pages resolve correctly

## Generative AI disclosure

1. Did you use a generative AI (GenAI) tool to assist in creating this
contribution?
- [x] Yes
- [ ] No

2. If you answered "Yes" to the previous question, please specify the
tool(s) and model(s) used (e.g., Google Gemini, OpenAI ChatGPT-4, etc.).

Tool(s) and model(s) used: Claude (Cursor)
## Summary

Adds a dedicated "Managing CPS scope in your project apps" overview page
(`cross-project-search-manage-scope.md`) under
`explore-analyze/cross-project-search/`:

- **Scope hierarchy**: introduces the three levels of CPS scope control
(space default, session scope, query-level override) upfront.
- **Scope selector**: describes the CPS scope selector in the header,
its options (This project, All projects), and session persistence
behavior.
- **Query-level overrides**: documents how to override the scope using
`SET project_routing` or qualified index expressions in ES|QL `FROM`
commands, with a concrete ES|QL example.
- **Availability matrix**: table showing which apps support the CPS
scope selector and query-level overrides, covering 10 apps (Discover,
Dashboards, Lens, Maps, Vega, Rules, Dev Tools, ML Data Visualizer,
Streams, Agent Builder).
- **Related pages**: links to CPS overview, project routing, search
behavior, admin configuration, ES|QL in Kibana, and the ES|QL CPS
reference (cross-link to elasticsearch repo).

Closes elastic/docs-content-internal#850
Closes elastic/docs-content-internal#852
Closes elastic/docs-content-internal#853

## Known issues (preview)

- **ES|QL editor underlines qualified index names as "unknown index"**:
When using qualified expressions like
`project_alias:kibana_sample_data_ecommerce` in an ES|QL `FROM` command,
the editor flags the index as unknown (red underline), but the query
executes successfully and returns correct results. This appears to be a
client-side validation gap in the ES|QL editor that doesn't yet account
for CPS qualified expressions. Likely to be fixed before GA.
- **`_origin:` qualified expression not working**: Using `FROM
_origin:index_name` to target only the origin project does not work in
the current preview, despite being documented in the ES|QL CPS
reference. This may be a not-yet-implemented feature.

## Test plan

- [x] Verify the page builds correctly
- [x] Verify scope selector behavior (session persistence, space default
as fallback) against Kibana source
- [x] Verify Rules row (read-only scope) against Kibana source
- [x] Verify qualified expressions work in ES|QL FROM (tested with real
linked project)
- [x] Verify SET project_routing works in ES|QL (tested with real linked
project)
- [x] Cross-links validated (all resolve to existing pages/anchors on
feature branches)
- [x] Content type check: passes overview guidelines (type field,
required elements, best practices)

## Generative AI disclosure

1. Did you use a generative AI (GenAI) tool to assist in creating this
contribution?
- [x] Yes
- [ ] No

2. If you answered "Yes" to the previous question, please specify the
tool(s) and model(s) used (e.g., Google Gemini, OpenAI ChatGPT-4, etc.).

Tool(s) and model(s) used: Claude (Cursor)

---------

Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com>
## Summary

Updates the shared Inspector snippet (`_snippets/inspect-request.md`) to
mention CPS alongside CCS in the "Clusters and shards" tab description.
When either feature is active, this tab shows the remote clusters or
linked projects that were searched.

Also fixes an inaccuracy: the tab *is* available for ES|QL queries
(confirmed via manual testing with CPS), so the limitation note now only
mentions Vega visualizations.

Since this is a shared snippet, the change automatically applies to both
the Discover and Dashboards documentation pages.

Closes elastic/docs-content-internal#686

## Test plan

- [x] Verify the snippet renders correctly in both
`explore-analyze/dashboards/using` and
`explore-analyze/discover/discover-get-started`
- [x] Confirm "Clusters and shards" tab works with ES|QL queries when
CPS is active
- [x] Check cross-links to CCS and CPS pages resolve correctly

## Generative AI disclosure

1. Did you use a generative AI (GenAI) tool to assist in creating this
contribution?
- [x] Yes
- [ ] No

2. If you answered "Yes" to the previous question, please specify the
tool(s) and model(s) used (e.g., Google Gemini, OpenAI ChatGPT-4, etc.).

Tool(s) and model(s) used: Claude (Cursor)

Made with [Cursor](https://cursor.com)
…zations (#5424)

## Summary

Adds CPS project routing documentation to the ES|QL pages:

**ES|QL in Kibana** (`esql-kibana.md`):
- New "Search across linked projects with SET project_routing" section
- Documents the `SET project_routing` syntax, autocomplete values
(`_alias:_origin`, `_alias:*`), tag-based expressions, and named project
routing expressions
- Notes the Custom CPS scope badge behavior on dashboard panels

**ES|QL visualizations** (`esorql.md`):
- New "Query data from multiple projects" subsection under "Create from
dashboard"
- Explains that `SET project_routing` in an ES|QL visualization triggers
a Custom CPS scope badge on the dashboard panel

Closes elastic/docs-content-internal#685

## Test plan

- [ ] Verify pages build correctly at
`explore-analyze/query-filter/languages/esql-kibana` and
`explore-analyze/visualize/esorql`
- [ ] Confirm `applies_to` tags render properly (serverless preview /
stack unavailable)
- [ ] Check cross-links to CPS pages resolve correctly (depend on
sibling CPS branches)
- [ ] Test `SET project_routing` autocomplete in ES|QL editor with CPS
enabled

## Generative AI disclosure

1. Did you use a generative AI (GenAI) tool to assist in creating this
contribution?
- [x] Yes
- [ ] No

2. If you answered "Yes" to the previous question, please specify the
tool(s) and model(s) used (e.g., Google Gemini, OpenAI ChatGPT-4, etc.).

Tool(s) and model(s) used: Claude (Cursor)

Made with [Cursor](https://cursor.com)
## Summary

Adds CPS documentation to the dashboard pages, split by audience:

**For dashboard viewers** (`using.md`):
- New "View data from multiple projects" subsection under "Search and
filter your dashboard data"
- Explains how the CPS scope selector controls which projects the
dashboard queries
- Documents the "Custom CPS scope" badge on panels that use project
routing

**For dashboard creators** (`create-dashboard.md`):
- Adds **Store CPS scope with dashboard** to the settings list (step 5)
and save options (step 6)
- Restructures the save step with a comprehensive list of all save
options
- Updated screenshot of the save dialog

Closes elastic/docs-content-internal#690
Closes elastic/docs-content-internal#691

## Test plan

- [x] Verify pages build correctly at `explore-analyze/dashboards/using`
and `explore-analyze/dashboards/create-dashboard`
- [x] Confirm `applies_to` tags render properly (serverless preview /
stack unavailable)
- [x] Check cross-links to CPS pages resolve correctly (depend on
sibling CPS branches)
- [x] Verify "Store CPS scope with dashboard" label matches Kibana UI
(confirmed, fix in elastic/kibana#259142)

## Generative AI disclosure

1. Did you use a generative AI (GenAI) tool to assist in creating this
contribution?
- [x] Yes
- [ ] No

2. If you answered "Yes" to the previous question, please specify the
tool(s) and model(s) used (e.g., Google Gemini, OpenAI ChatGPT-4, etc.).

Tool(s) and model(s) used: Claude (Cursor)

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Nastasha Solomon <nastasha.solomon@elastic.co>
Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com>
Add missing .md extension to elasticsearch:// cross-links
pointing to the SET command reference page.

Made-with: Cursor
Replace references to the old cross-project-search-link-projects.md
path with the new deploy-manage/ location.

Made-with: Cursor
## Summary

Adds a new "Search across linked projects" section to the Maps page
(`maps.md`), explaining that:

- Maps supports CPS with an editable project picker scope
- Vector layers and joins pull data from linked projects based on the
current CPS scope
- Map panels in dashboards display a "Custom CPS scope" badge when
layers use specific project routing

Closes elastic/docs-content-internal#851

## Test plan

- [ ] Verify the page builds correctly at
`explore-analyze/visualize/maps`
- [ ] Confirm `applies_to` tags render properly (serverless preview /
stack unavailable)
- [ ] Check cross-links to CPS and dashboard pages resolve correctly

## Generative AI disclosure

1. Did you use a generative AI (GenAI) tool to assist in creating this
contribution?
- [x] Yes
- [ ] No

2. If you answered "Yes" to the previous question, please specify the
tool(s) and model(s) used (e.g., Google Gemini, OpenAI ChatGPT-4, etc.).

Tool(s) and model(s) used: Claude (Cursor)

Made with [Cursor](https://cursor.com)
## Summary

Adds a new "Cross-project search scope for rules" section to the
alerting rules page (`create-manage-rules.md`), explaining that:

- Alerting rules query data across linked projects based on the
**space-level CPS scope**, not a per-rule setting
- The project picker on rule pages is read-only -- to change which
projects a rule queries, update the space's CPS configuration

This reflects the actual implementation, which differs from the original
issue description (no per-rule CPS scope selector).

Closes elastic/docs-content-internal#688

## Test plan

- [ ] Verify the page builds correctly at
`explore-analyze/alerting/alerts/create-manage-rules`
- [ ] Confirm `applies_to` tags render properly (serverless preview /
stack unavailable)
- [ ] Check cross-links to CPS pages resolve correctly

## Generative AI disclosure

1. Did you use a generative AI (GenAI) tool to assist in creating this
contribution?
- [x] Yes
- [ ] No

2. If you answered "Yes" to the previous question, please specify the
tool(s) and model(s) used (e.g., Google Gemini, OpenAI ChatGPT-4, etc.).

Tool(s) and model(s) used: Claude (Cursor)

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Nastasha Solomon <nastasha.solomon@elastic.co>
Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com>
Remove #cps-project-routing fragment from links (page title heading
is not a linkable anchor) and update redirected references to
cps-config-link-and-manage.md.

Made-with: Cursor
Sort availability table alphabetically and link session scope
bullet to the scope selector section.

Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants