fix(workday-da): emit response data from Workday READ topics so DA agents return results#522
Merged
AdwaitRaut merged 1 commit intoJun 9, 2026
Conversation
…ents surface results DA (Declarative Agent) topics do not pass topic output variables back to Sydney. WorkdayDA READ topics that retrieve data into a Topic.* variable and end the dialog without an explicit SendActivity appear empty to the orchestrator, producing "no results found" replies even when the underlying Power Automate flow returns data correctly. Mirrors the pattern landed in the internal ESSVivaCopilot ADO solutions for the same root cause (DAHR / ServiceNowHRSDGetUserCases and DAIT / ServiceNowITSMGetUserTickets). Adds a trailing SendActivity that emits the final response variable on ten WorkdayDA READ topics: EmployeeScenarios/EmployeeGetVacationBalance -> Topic.VacationBalance EmployeeScenarios/WorkdayGetUserProfile -> Topic.finalizedData EmployeeScenarios/WorkdayGetContactInformation -> Topic.finalizedContactInformation EmployeeScenarios/WorkdayGetEducation -> Topic.FinalizedEducationData EmployeeScenarios/WorkdayEmployeesviewtheirjobtaxonomy -> Topic.jobFunctionData ManagerScenarios/WorkdayGetManagerReporteesTimeInPosition -> Topic.workdayResponseTableWithTimeInPosition ManagerScenarios/WorkdayManagerServiceAnniversary -> Topic.workdayResponseTable ManagerScenarios/WorkdayManagersdirect-CompanyCode -> Topic.workdayResponseTable ManagerScenarios/WorkdayManagersdirect-CostCenter -> Topic.workdayResponseTable ManagerScenarios/WorkdayManagersdirect-Jobtaxanomy -> Topic.workdayResponseTable For the Manager direct-report topics (CompanyCode / CostCenter / Jobtaxanomy), the new SendActivity sits at the end of beginDialog.actions so it only fires on the success path; the existing "no access" branch short-circuits via EndDialog before reaching it. All new SendActivity nodes use the repo-standard sendActivity_<6chars> id naming convention. Carve-outs (skipped intentionally, matching the upstream pattern): - Nested-call topics that delegate to another emitting topic (would double-emit). - Topics that already render the response via an Adaptive Card. - WRITE topics (Add / Update / Manage / Request / Give) — they already surface success/failure via existing SendActivity branches. Scope: 10 topic.yaml files; no other files touched. All files parse as valid YAML. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
WorkdayDA READ topics retrieve their answer into a
Topic.*variable and end the dialog. In a Declarative Agent (DA) context, the orchestrator does not read topic output bindings, so Sydney sees an empty result and replies "no results found" even when the underlying Power Automate flow returned the data correctly. Appending a trailingSendActivitythat emits the topic's final response variable surfaces the data to Sydney for summarization.This applies the same fix pattern used in the internal Microsoft ESS Declarative Agent solutions for the equivalent ServiceNow READ topics (DAHR /
ServiceNowHRSDGetUserCasesand DAIT /ServiceNowITSMGetUserTickets).EmployeeScenarios/EmployeeGetVacationBalance{Topic.VacationBalance}EmployeeScenarios/WorkdayGetUserProfile{Topic.finalizedData}EmployeeScenarios/WorkdayGetContactInformation{Topic.finalizedContactInformation}EmployeeScenarios/WorkdayGetEducation{Topic.FinalizedEducationData}EmployeeScenarios/WorkdayEmployeesviewtheirjobtaxonomy{Topic.jobFunctionData}ManagerScenarios/WorkdayGetManagerReporteesTimeInPosition{Topic.workdayResponseTableWithTimeInPosition}ManagerScenarios/WorkdayManagerServiceAnniversary{Topic.workdayResponseTable}ManagerScenarios/WorkdayManagersdirect-CompanyCode{Topic.workdayResponseTable}ManagerScenarios/WorkdayManagersdirect-CostCenter{Topic.workdayResponseTable}ManagerScenarios/WorkdayManagersdirect-Jobtaxanomy{Topic.workdayResponseTable}Problem
Queries against these WorkdayDA READ topics consistently returned "no results found" in the Declarative Agent when invoked from Sydney, even though:
Affected user queries include:
Root cause
DA orchestration does not pass topic output variables back to the model. A topic that sets data into a
Topic.*variable and ends the dialog without explicitly emitting it viaSendActivityis invisible to Sydney — the orchestrator receives no content and produces a generic empty reply. The Power Automate flow result is correct; it simply never reaches the LLM.The fix pattern was first identified and resolved in the internal Microsoft ESS Declarative Agent solutions for the equivalent ServiceNow topics; this PR mirrors the same shape across the WorkdayDA samples.
Fix
Append the following node at the end of
beginDialog.actionsin each affected READ topic, emitting the topic's final response variable:For the Manager direct-report topics (CompanyCode / CostCenter / Jobtaxanomy), the new
SendActivitysits at the end ofbeginDialog.actionsat the outermost level, so the existing "no access" branch'sEndDialogshort-circuits before reaching it — no double-emit on the access-denied path.All new
SendActivitynodes use the repo-standardsendActivity_<6 alphanumeric chars>id convention for consistency with existing nodes.Scope
10
topic.yamlfiles; no other files touched. All files parse as valid YAML.