web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Copilot Studio / Dataverse knowledge in...
Copilot Studio
Suggested Answer

Dataverse knowledge in a Prompt action returns one row as 3 separate JSON objects

(1) ShareShare
ReportReport
Posted on by 20

Hi all,

In a Copilot Studio Prompt action (GPT-4.1 mini) I'm using a Dataverse table as the knowledge source. When I check the "Knowledge used" output, I notice that a single Dataverse row is returned as ~3 separate JSON objects that all share the same tls_tlssummaryid, with the columns split across those objects instead of appearing in one record (see screenshot). So ~30 rows show up as ~90 objects, and fields I need together (e.g. summarytext and contenttype) can land in different objects.

To get correct answers and citations, I currently add an instruction telling the model to merge all objects sharing the same tls_tlssummaryid into one record before answering.

My questions:

  1. If merging in the prompt is the only way, is that the recommended approach, or it is not required to specify it?
  2. Is this batched/fragmented retrieval expected behavior, and what causes it?
  3. Is there a setting to return one object per row, or do I always have to merge in the prompt?

Would appreciate any expert guidance.

Screenshot of the "Knowledge used" payload attached.

Thanks in advance!

I have the same question (0)
  • Suggested answer
    Mahesh Chintha Profile Picture
    168 on at
    Yes, this is expected. Copilot Studio often retrieves and chunks Dataverse content for grounding, so a single row may appear as multiple objects with the same record ID. As far as I know, there isn't a setting to force a 1:1 row-to-object return. If you need fields from the same record to stay together for accurate reasoning/citations, instructing the model to merge objects by tls_tlssummaryid is a reasonable approach. We follow the deduplicate approach as part of post validation.
  • Suggested answer
    Ashlesha-MSFT Profile Picture
    Microsoft Employee on at
    Hi, thanks for sharing such a clear repro. What you are seeing is understandable.
     
    Based on current Microsoft documentation and typical Copilot Studio retrieval behavior, this looks consistent with chunked retrieval for knowledge grounding, not a strict one-row-to-one-object return contract for Prompt action knowledge payloads.
     
    Suggested answer to your questions:
    1. Is merge logic in the prompt required?  
    It is not formally documented as mandatory, but your approach to merge objects by the shared row key before answering is a valid and practical workaround.
    2. Is fragmented retrieval expected?  
    Yes, this can happen in retrieval-augmented grounding scenarios, where knowledge is retrieved as chunks rather than guaranteed full rows.
    3. Is there a setting to force one object per Dataverse row?  
    I am not aware of an official Copilot Studio setting that guarantees that output shape in Prompt action Knowledge used.
     
    What I recommend:
    1. Keep the merge-by-id instruction in the prompt.
    2. Add a rule for missing fields after merge, for example: if summarytext or contenttype is still missing, state that explicitly.
    3. If possible, reduce very wide row payloads to lower fragmentation risk.
    4. Raise a support ticket with your sample payload if you need Microsoft confirmation whether this is by design for your tenant/model path.
  • Suggested answer
    Valantis Profile Picture
    6,939 on at
     
    Your merge-by-id instruction is the right approach.
    One optimization to reduce fragmentation: in Dataverse, create a calculated or formula column that concatenates the fields you need together (e.g. contenttype + " | " + summarytext) into a single column. When retrieval chunks the row, the fields that logically belong together travel in the same chunk because they're stored as one column value rather than separate columns.

    This is the most reliable way to reduce split-field situations without relying on the model to merge them correctly every time. Fewer wide columns = fewer chunk splits.
     
      Best regards,

    Valantis   ✅ If this helped solve your issue, please Accept as Solution so others can find it quickly.

    ❤️ If it didn’t fully solve it but was still useful, please click “Yes” on “Was this reply helpful?” or leave a Like :).

    🏷️ For follow-ups  @Valantis.

    📝 https://valantisond365.com/ 💼 LinkedIn ▶️ YouTube

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Congratulations to the June Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Copilot Studio

#1
sannavajjala87 Profile Picture

sannavajjala87 160 Super User 2026 Season 1

#2
11manish Profile Picture

11manish 145

#3
Haque Profile Picture

Haque 121

Last 30 days Overall leaderboard