Skip to content

fix(workday-da): emit response data from Workday READ topics so DA agents return results#522

Merged
AdwaitRaut merged 1 commit into
microsoft:mainfrom
AdwaitRaut:add-send-activity-workday-da-read-topics
Jun 9, 2026
Merged

fix(workday-da): emit response data from Workday READ topics so DA agents return results#522
AdwaitRaut merged 1 commit into
microsoft:mainfrom
AdwaitRaut:add-send-activity-workday-da-read-topics

Conversation

@AdwaitRaut

@AdwaitRaut AdwaitRaut commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

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 trailing SendActivity that 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 / ServiceNowHRSDGetUserCases and DAIT / ServiceNowITSMGetUserTickets).

Topic Variable emitted
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:

  • The correct topic was triggered.
  • The Power Automate flow returned successfully.
  • The data was populated into the topic's final variable.

Affected user queries include:

  • "What's my vacation balance?" / "How many PTO days do I have?"
  • "Show my profile" / "Show my contact information" / "Show my education history" / "Show my job information"
  • "How long have my reports been in their position?" / "When are my reports' service anniversaries?"
  • "What are my reports' company codes / cost centers / job functions?"

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 via SendActivity is 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.actions in each affected READ topic, emitting the topic's final response variable:

- kind: SendActivity
  id: sendActivity_<6chars>
  activity: |-
    Here is your <scenario> information:
    {Topic.<finalVariable>}

For the Manager direct-report topics (CompanyCode / CostCenter / Jobtaxanomy), the new SendActivity sits at the end of beginDialog.actions at the outermost level, so the existing "no access" branch's EndDialog short-circuits before reaching it — no double-emit on the access-denied path.

All new SendActivity nodes use the repo-standard sendActivity_<6 alphanumeric chars> id convention for consistency with existing nodes.

Scope

10 topic.yaml files; no other files touched. All files parse as valid YAML.

…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>
@AdwaitRaut AdwaitRaut requested a review from a team as a code owner June 9, 2026 03:25

@nkemms nkemms left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@AdwaitRaut AdwaitRaut merged commit 03a6ed6 into microsoft:main Jun 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants