> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Dynamics 365 overview

> Hand off AI conversations into Microsoft Dynamics 365 as incidents or Omnichannel live work items your reps already work.

OpenCX connects to **Microsoft Dynamics 365 Customer Service** so handoffs land where your reps already work. Chat channels (web, SMS, WhatsApp) flow into <Tooltip tip="Dynamics 365 Omnichannel for Customer Service — a real-time agent workspace where live work items appear as chats, not cases.">Omnichannel for Customer Service</Tooltip> as live work items; phone and email flow into Dynamics as <Tooltip tip="A Dataverse case record (entity: incident). Holds transcript, priority, owner, queue, and a linked contact.">incidents</Tooltip>. Either way the rep sees the full AI transcript, channel, sentiment, and a linked contact.

<Tip>
  Start with [Azure & Dynamics Setup](/integrations/dynamics-365/azure-setup), then paste credentials in your [OpenCX dashboard](https://platform.open.cx/settings/integrations).
</Tip>

## What you get

<AccordionGroup>
  <Accordion title="Incidents your reps already work" icon="ticket">
    Phone and email handoffs create a Dynamics incident with the full transcript, channel, classification, sentiment, and a linked contact. Reps pick up from the queue they already use — no separate inbox.
  </Accordion>

  <Accordion title="Omnichannel live work items for chat" icon="comments">
    Web, SMS, and WhatsApp handoffs create an `oc_liveworkitem` so reps handle them as live chats inside the Omnichannel Agent app, not as incidents.
  </Accordion>

  <Accordion title="Contacts linked by email" icon="address-card">
    OpenCX looks up the customer by `emailaddress1`. If the contact exists it's linked on the record; if not, OpenCX creates one with the name, email, and phone from the session.
  </Accordion>

  <Accordion title="Custom field passthrough" icon="sliders">
    Map a `ticket_properties` JSON object in your integration settings to write extra Dynamics fields (priority codes, case type, custom attributes) on every incident OpenCX creates.
  </Accordion>
</AccordionGroup>

## Supported channels

<CardGroup cols={2}>
  <Card title="AI Chat Widget" icon="comments" href="/integrations/dynamics-365/channels/widget">
    Web chat handed off as an Omnichannel live work item.
  </Card>

  <Card title="AI WhatsApp Support" icon="whatsapp" href="/integrations/dynamics-365/channels/whatsapp">
    WhatsApp handed off as an Omnichannel live work item.
  </Card>

  <Card title="AI SMS Support" icon="comment-sms" href="/integrations/dynamics-365/channels/sms">
    SMS handed off as an Omnichannel live work item.
  </Card>

  <Card title="AI Phone Support" icon="phone" href="/integrations/dynamics-365/channels/phone">
    Call transcript handed off as a Dynamics incident.
  </Card>

  <Card title="AI Email Support" icon="envelope" href="/integrations/dynamics-365/channels/email">
    Email thread handed off as a Dynamics incident.
  </Card>
</CardGroup>

## Observability

Every conversation OpenCX hands to Dynamics 365 is traceable from either side.

<AccordionGroup>
  <Accordion title="Incident reference on every case handoff" icon="fingerprint">
    OpenCX stores `dynamics365_incident_id` (the Dataverse GUID) and `dynamics365_ticket_number` (the human-readable number Dynamics generates) on the OpenCX session. Search either value in Dynamics advanced find to jump straight to the record.
  </Accordion>

  <Accordion title="Work item reference on every chat handoff" icon="messages">
    For web, SMS, and WhatsApp handoffs, OpenCX stores `dynamics365_chat_id` (the `oc_liveworkitemid`) on the session. That's the identifier the Omnichannel Agent app routes on.
  </Accordion>

  <Accordion title="Contact dedupe by email" icon="address-card">
    OpenCX looks up `emailaddress1` before creating a contact, so a returning customer's records stay on the same Dynamics contact row. Reps see one history, not a fork.
  </Accordion>

  <Accordion title="Channel, classification, sentiment in the incident body" icon="tag">
    The incident description header contains `Channel:`, `Classification:`, and `Sentiment:` lines. Reps filter and search on those without leaving Dynamics.
  </Accordion>
</AccordionGroup>

## Pick your setup path

<CardGroup cols={1}>
  <Card title="Azure & Dynamics Setup, then Connect" icon="microsoft" href="/integrations/dynamics-365/azure-setup">
    Register an Azure AD app, create the Application User, assign a security role, then paste credentials into OpenCX. One linear flow.
  </Card>
</CardGroup>

***

## Related Documentation

<CardGroup cols={2}>
  <Card title="Azure & Dynamics Setup" icon="microsoft" href="/integrations/dynamics-365/azure-setup">
    App registration, client secret, Application User, security role.
  </Card>

  <Card title="Conversations in Dynamics 365" icon="diagram-project" href="/integrations/dynamics-365/conversations">
    How handoff routes, what's written on the record, defaults you can set.
  </Card>

  <Card title="AI Chat Widget in Dynamics 365" icon="comments" href="/integrations/dynamics-365/channels/widget">
    First channel to wire up — widget → Omnichannel.
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/integrations/dynamics-365/troubleshooting">
    Credential verify failures, missing queues, unlinked contacts.
  </Card>
</CardGroup>
