Narrowed scope of #2629.
Today
Primary walls (Applications, Services, Marketplace) aggregate apps / instances / offerings across all connected CFs. CF / Org / Space dropdowns exist on each wall. When CF = "All", the Org dropdown aggregates orgs across CFs but dedupes by guid — seen.set(o.guid, o.name) at src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app/cf-apps-signal-config.service.ts:233 (and equivalents in services / marketplace configs). The predicate matches by guid: if (org && app.orgGuid !== org) return false; at :314.
Result: an org named platform in prod and another named platform in staging appear as two indistinguishable-looking entries in the Org dropdown. Picking one filters to that single CF's org.
What to change
When selectedCnsi === null:
orgOptions and spaceOptions dedupe by name rather than guid (seen.set(o.name, o.name)); option value becomes the name.
- Filter predicate matches by name in that mode:
app.orgName !== org and app.spaceName !== space instead of guid-equality.
- When
selectedCnsi !== null, behavior unchanged — pick a CF, see its orgs, filter by guid.
Apply to
cf-apps-signal-config.service.ts (Applications wall)
cf-service-instances-signal-config.service.ts (Services wall)
cf-service-offerings-signal-config.service.ts (Marketplace)
Plus tests covering: All-CF dedupe collapses identical names, single-CF mode unchanged, locked-space-scope unaffected.
Edge cases
- Case sensitivity — pick a stance (
platform vs Platform). Recommend case-insensitive match for permissive behavior.
- Naming convention divergence —
platform-prod vs platform won't unify; out of scope for this ticket. Document that this fix unifies exact (or normalized) name matches; naming guidance is separate.
- Whitespace / unicode normalization — match-by-name is fragile to invisible characters; consider a normalized comparison (
trim() + normalize('NFC') at minimum).
Scope
Three frontend signal-config services + tests. Half-day estimate.
Narrowed scope of #2629.
Today
Primary walls (Applications, Services, Marketplace) aggregate apps / instances / offerings across all connected CFs. CF / Org / Space dropdowns exist on each wall. When CF = "All", the Org dropdown aggregates orgs across CFs but dedupes by guid —
seen.set(o.guid, o.name)atsrc/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app/cf-apps-signal-config.service.ts:233(and equivalents in services / marketplace configs). The predicate matches by guid:if (org && app.orgGuid !== org) return false;at:314.Result: an org named
platformin prod and another namedplatformin staging appear as two indistinguishable-looking entries in the Org dropdown. Picking one filters to that single CF's org.What to change
When
selectedCnsi === null:orgOptionsandspaceOptionsdedupe by name rather than guid (seen.set(o.name, o.name)); option value becomes the name.app.orgName !== organdapp.spaceName !== spaceinstead of guid-equality.selectedCnsi !== null, behavior unchanged — pick a CF, see its orgs, filter by guid.Apply to
cf-apps-signal-config.service.ts(Applications wall)cf-service-instances-signal-config.service.ts(Services wall)cf-service-offerings-signal-config.service.ts(Marketplace)Plus tests covering: All-CF dedupe collapses identical names, single-CF mode unchanged, locked-space-scope unaffected.
Edge cases
platformvsPlatform). Recommend case-insensitive match for permissive behavior.platform-prodvsplatformwon't unify; out of scope for this ticket. Document that this fix unifies exact (or normalized) name matches; naming guidance is separate.trim()+normalize('NFC')at minimum).Scope
Three frontend signal-config services + tests. Half-day estimate.