Chapter 06 — Location Filters¶
Goal: scope Fusion's Search/Explore experience to only your own graph, and understand why the filter points at the solution model, not the enterprise model.
6.1 [INFO] Why location filters exist¶
A CDF project can host many data models and many participants' data side by side.
Without a location filter, opening Search/Explore shows everything the model
allows — every participant's TRN-FPSO, all at once, indistinguishable from each
other except by inspecting the space of every node. A location filter gives end
users (and you, in Chapter 17's aha-moment walkthrough)
a named, scoped entry point: "show me only this instance space, through this data
model."
This is a UI/consumption-time filter, not a security boundary — it does not replace access-control groups. Think of it as "which curated view does a user land on," not "what can a user access."
6.2 [INFO] Why it points at the solution model¶
Recall section 3.4: MaintenanceInsight is the narrow, curated surface for one use
case; TrainingCore is the broad enterprise surface. A location filter is a
product decision about what an end user should land on — and the answer is
almost always the narrow, purpose-built surface, not the broad enterprise one.
Pointing it at the enterprise model here would hand every viewer the full 10-view
surface (including 3D CAD views this use case doesn't need) instead of the 8-view
"Rotating-Equipment Maintenance Insight" product you actually built for.
⚠️ [COMMON MISTAKE] Pointing your location filter at TrainingCore because
"it has more stuff." More views is not more useful to the end user you're building
for — it's noise relative to the one use case the solution model was designed around.
6.3 [WRITE] Your location filter¶
📝 [WRITE] training/modules/participants/<YOURNAME>/locations/loc_<YOURNAME>_TRN.LocationFilter.yaml
externalId: loc_<YOURNAME>_TRN
name: TRN FPSO - <YOURNAME>
description: Hands-on training location for <YOURNAME>.
dataModelingType: DATA_MODELING_ONLY
instanceSpaces:
- isp_<YOURNAME>_TRN
dataModels:
- space: ssp_<YOURNAME>_MaintenanceInsight_sdm
externalId: MaintenanceInsight
version: v1.0.0
🔧 [CHANGE] Every <YOURNAME> — externalId, name, description,
instanceSpaces, and the dataModels space reference. dataModelingType,
dataModels[].externalId, and dataModels[].version stay literal.
| Key | Meaning |
|---|---|
dataModelingType: DATA_MODELING_ONLY |
This location is scoped purely to the Data Modeling Service — no classic assets/events fallback. Correct for this lab since everything lives in the model |
instanceSpaces |
Which instance space(s) this location shows — yours, and only yours |
dataModels |
Which data model(s) define the view surface a user sees inside this location — your solution model, per section 6.2 |
6.4 [ACTION] Build, deploy, verify¶
uv run cdf build --config-yaml training/config.<YOURNAME>-training.yaml
uv run cdf deploy --cdf-project <your-cdf-project> --dry-run --include locations
uv run cdf deploy --cdf-project <your-cdf-project> --include locations
✅ [VERIFY] In Fusion, open Search/Explore → switch location to "TRN FPSO -
<YOURNAME>". You should see exactly your own 8 assets and nothing from any other
participant. If you see other people's data, or none of your own, your
instanceSpaces value is wrong — re-check it matches isp_<YOURNAME>_TRN exactly.
📚 [DOCS] https://docs.cognite.com/cdf/dm/ (search "location filter" — this is a
newer Toolkit resource type; confirm the current field names against
https://docs.cognite.com/llms.txt if this section of the docs has moved by the time
you read this).
⚠️ [COMMON MISTAKE] Building the location filter before Chapter 03's data model
is deployed. The Toolkit will complain it can't resolve MaintenanceInsight
— location filters are a downstream, scoping resource, never the first thing you
deploy.
Gate¶
Do not proceed to Chapter 07 until:
- Your location filter deploys and appears in Fusion's location switcher
- Selecting it shows exactly your 8 assets, no more, no less
- You can explain, in one sentence, why it points at the solution model and not the enterprise model
- 📓 You have added your two or three lines for this chapter to
participants/<YOURNAME>/NOTES.md— now, not tonight