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

Community site session details

Session Id :
Customer experience | Sales, Customer Insights,...
Unanswered

How to relate custom entity to Copilot conversations in D365 Customer Service?

(0) ShareShare
ReportReport
Posted on by 1

Hello,

I have the following scenario in Dynamics 365 Customer Service:

A user manages customer support through a custom entity called Tickets. During the management process, the user may consult Copilot to assist with queries related to the ticket. The user can handle multiple tickets in parallel, and sometimes may not use Copilot at all during ticket management.

I need to find a way to relate or associate each Copilot conversation, stored in the msdyn_copilottranscriptdata entity, to the corresponding Ticket record. This would ensure that conversations are correctly linked to the ticket being managed, even when multiple tickets are open or when Copilot usage is optional.

What is the recommended approach to create a relationship between my custom Ticket entity and the msdyn_copilottranscriptdata entity?
Are there any official Microsoft guidelines or best practices for extending Copilot conversations to custom entities like Tickets?
 
Any guidance, examples, or references to official documentation would be very helpful.

Thank you!

I have the same question (0)
  • MVP-Daniyal Khaleel Profile Picture
    665 on at
    How to relate custom entity to Copilot conversations in D365 Customer Service?
    Make transcripts relate to tickets one-to-many:
    One Ticket ,many Copilot transcripts
    This is the simplest mental model: a transcript belongs to a single ticket, a ticket can have many transcripts.
    There are two main ways to implement that depending on whether you can extend the msdyn_copilottranscriptdata table directly.
    using automate flow
    Trigger: When a row is added (msdyn_copilottranscriptdata)
    Initialize variable ticketId = null
    If msdyn_sessionid (or msdyn_customsessionid) is present:
    Dataverse Get rows from new_copilotsessionmapping where sessionid = trigger.msdyn_sessionid → set ticketId
    If ticketId still null:
    Dataverse List rows Ticket where owner = trigger.createdby and state = active and modifiedon within last 15 minutes → if single result set ticketId
    If ticketId found:
    If Option A: Update row (msdyn_copilottranscriptdata) set new_ticketid = ticketId
    Else Option B: Create row (new_copilottranscriptlink) with new_ticket = ticketId and new_transcriptid = trigger.msdyn_copilottranscriptdataid

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

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Pallavi Phade – Community Spotlight

We are honored to recognize Pallavi Phade as our Community Spotlight honoree for…

Leaderboard > Customer experience | Sales, Customer Insights, CRM

#1
MVP-Daniyal Khaleel Profile Picture

MVP-Daniyal Khaleel 120

#1
Tom_Gioielli Profile Picture

Tom_Gioielli 120 Super User 2025 Season 2

#3
#ManoVerse Profile Picture

#ManoVerse 56

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans