Issue
Dependent controls (such as radio button options and an associated comment box) do not render on a subsequent screen after a checkbox or radio button selection, even though the case has progressed to the relevant stage.
Symptoms
After selecting a checkbox on a case screen, the radio button options and associated comment box on the subsequent screen do not appear. A mandatory validation message typically worded as Additional Concern Information is required blocks case submission, with no corresponding input field visible to satisfy it. This issue may affect some users consistently while others on the same case type and navigation path are unaffected.
No error is displayed in the UI. Tracer confirms that the Data Transform responsible for populating the thread-level data page bound to the radio button control does not execute. The data page is absent from the clipboard for affected users.
Steps to reproduce
- Configure a radio button control with a Click event action set containing all of the following:
- A Run Script action (for example, disable()) as the first action.
- A Refresh This Section action with a When condition set to Inactive (optionally combined with a property check), and a Data Transform configured within that refresh action to populate a thread-level data page.
- One or more additional Refresh This Section or Refresh Other Section actions following the first refresh.
- A second Run Script action (for example, enable()) as the final action.
- Navigate to the screen containing the radio button and interact with the upstream checkbox control.
- Observe that the radio button options and the dependent comment box do not render.
- Observe that a mandatory validation message appears referencing a field not visible on the screen.
- Open Tracer and confirm that the Data Transform configured within the Refresh This Section action does not appear in the execution trace.
Root Cause
Pega evaluates action set conditions when the section renders, not as each action executes. Because the clicked control still has focus, an Inactive condition evaluates to false, so the gated Refresh This Section action and its Data Transform do not run. The action set also risks interruption because refreshing the embedded section can remove its JavaScript functions, while duplicate refreshes can leave stale UI elements.
This is standard, release-independent platform behavior, not a defect. The diagnosis was confirmed when the Data Transform failed to run in Tracer, the resulting data page was absent from Tracer and the clipboard for affected users, and removing the condition restored rendering in Staging and Production.
Solution
Do not gate an action's condition on a focus/activity state of the same control that triggered the action set, since that state cannot change within the same evaluation. As a more robust pattern, move any message or content display logic into a separate embedded section rather than relying on conditional section refreshes tied to the triggering control's own focus state.
Local change
Remove the When = Inactive condition from the Refresh This Section action that carries the Data Transform. This allows the Data Transform to execute when the radio button is clicked, populates the required thread-level data page, and restores rendering of the radio button options and dependent comment box.
To prevent recurrence, apply the following best-practice changes:
- Remove the conflicting condition. Do not apply an Inactive condition to an action set triggered by a Click event on the same control.
- Relocate JavaScript function definitions. Move disable() and enable() out of embedded sections and into a JavaScript rule file attached to the portal harness, or into the UserWorkForm section. This ensures the functions load once at portal level and are not regenerated during section refreshes.
- Eliminate duplicate Refresh This Section actions. Remove the second Refresh This Section action targeting the same section within the same action set.
- Use Run Data Transform for processing logic. Use a dedicated Run Data Transform action rather than embedding a Data Transform within a Refresh This Section action.
- Do not gate actions on state set within the same action set. Conditions are evaluated at render time. Do not design conditions that depend on state changed by earlier actions in the same set.
References
Understanding section refreshes and their effects on accessibility in Traditional UI