- Shipped
- August 9, 2026 at 1:46 AM UTC
- Author
- Kamo
- Commit
- 698ae2c
resolveAll() omits the deprecated aliases that share an id with a live app (DOC_MANAGER/DOCS, AI_CHAT/AI_SUPPORT), because those have no catalog row of their own. Every consumer here looped over ServiceType.values() and dereferenced catalog.get(st), so those two constants returned null — an NPE on the account Apps page, the /available endpoint, the platform catalog tab, and org auto-provisioning. They iterate the resolved map instead, which cannot produce a key the map has no entry for. serializeFeatures additionally tolerates a null entry rather than throwing, and now does one lookup instead of five.