Conversation
BPM Company
NL
Last activity: 2 Dec 2025 2:25 EST
How to handle sibling references in Constellation UI without assignment submission?
I’m working on a Constellation UI scenario where a dropdown needs to display values from sibling elements inside .Questions().Fields(). The user should be able to add new questions and fields and immediately select them - without submitting the assignment.
Here’s the challenge:
- Starting with Pega 24.1, data pages invoked from Constellation UI run in an atomic requestor context and do not have access to the case clipboard. This means the data page cannot directly reference case properties unless we pass them explicitly.
- The dropdown source is a data page, but since there’s no case context, I serialize
.Questions().Fields()into JSON usingpyRefreshDataand pass it as a parameter (RefFieldsJson). The data page deserializes this JSON and builds the dropdown options. - This fails during interactive refresh call. Why? Because
RefFieldsJsonis hidden and computed, not user-edited, so it’s excluded from the client-server payload. Pega ConstellationJS client only sends properties that are:- Defined in the view model
- Editable (not read-only/hidden)
- Updated by the user

As a result, the data page loses context during submit, and the save operation breaks.
What I’ve considered
- Forcing hidden properties into the payload (developing custom DX component) - rejected (risk of data inconsistency and unpredictable merges).
- Saving data on every refresh - rejected (violates volatile data principle and risks overwriting in-flight edits).
Questions for the community
- Why does the atomic context exclude case data even when the source is case-derived?
- Are there best practices or patterns for passing dynamic context in Constellation UI without breaking its principles?
My thoughts on possible improvements
- Native support for optimized JSON context passing: A declarative way to define structured JSON properties that Constellation automatically serializes and includes in refresh and submit payloads.
- Optional case-context inheritance for data pages: A toggle for scenarios where the data source is inherently tied to the case.
- Clearer documentation: Especially around property lifecycle during refresh and submit, and how
pyRefreshDatafits into this flow.
Has anyone faced this challenge? How did you solve it? Do you see better approaches or agree that platform-level enhancements are needed?