Skip to main content
Every handoff to Dynamics 365 takes one of two paths: a real-time live work item in Omnichannel for Customer Service, or a case incident in the core Customer Service app. OpenCX picks the path automatically from the OpenCX channel.

How handoff routes

The routing rule is fixed: web, sms, and whatsapp flow into Omnichannel; everything else flows into an incident. You can’t override it per session — the channel of the OpenCX session decides.

Incident contents

When a handoff lands as an incident, OpenCX writes these fields on the incident record:
  • title<classification> - <customer name or email> (falls back to Support - Anonymous if neither is set).
  • description — header lines for Channel, Summary, Classification, Sentiment, Customer Details (name, email, phone), followed by the full AI-to-customer transcript with timestamps.
  • prioritycode — the default_priority you set in settings (1–4). Defaults to 2 (Medium).
  • [email protected] — the linked contact (see below).
  • [email protected] — the default_owner_id you set, if any.
  • [email protected] — the default_queue_id you set, if any.
  • Your ticket_properties — any extra Dynamics fields you want populated, spread onto the payload as-is.

Contact handling

OpenCX keeps one Dynamics contact per customer email:
  • Lookup — OpenCX queries contacts?$filter=emailaddress1 eq '<email>'. If a match comes back, OpenCX links the incident to that contact.
  • Create — If no match, OpenCX creates a new contact with firstname/lastname split from the session name, emailaddress1, mobilephone from the session, and description: Created from chat session <session_id>.
  • No email — If the session has no email at all (anonymous widget visitor, SMS-only session with no captured email), the incident is created without a linked contact. Reps can link one manually after the fact.

Defaults you can set per org

These live in the Dynamics integration row and are applied on every incident:
SettingTypeEffect
default_priorityinteger 1–4Written as prioritycode. Defaults to 2 (Medium).
default_owner_idSystemuser GUIDWritten as /systemusers(<id>). Leave blank to let Dynamics routing rules assign.
default_queue_idQueue GUIDWritten as /queues(<id>). Leave blank to skip queue assignment.
ticket_propertiesJSON objectMerged into the incident payload. Use integer codes for option sets, and full /entity(guid) paths for any additional @odata.bind fields.
Incidents already exist in Dynamics — OpenCX doesn’t invent new fields. Every key in ticket_properties must be a real column or lookup the Application User can write.

Omnichannel live work items

For web, SMS, and WhatsApp handoffs, OpenCX POSTs an oc_liveworkitem with:
  • name and customerInfo.name — the session name (or Anonymous).
  • email / customerInfo.email — the session email, if any.
  • subject — the AI’s session summary.
  • workstreamId — your default_queue_id from settings (used as the workstream).
  • contextVariablessessionId and channel, so the Omnichannel routing rules on your side can branch on them.
The returned oc_liveworkitemid is stored as dynamics365_chat_id on the OpenCX session.

Observability fields

SurfaceFieldValue
OpenCX session metadynamics365_incident_idIncident GUID (case handoffs)
OpenCX session metadynamics365_ticket_numberHuman-readable ticket number Dynamics auto-generates
OpenCX session metadynamics365_chat_idoc_liveworkitemid (chat handoffs)
OpenCX session metadynamics365_chat_statusinitiated once the live work item posts
Dynamics contactemailaddress1Customer email — the trace key for dedupe
Dynamics incidentdescription headerChannel, Classification, Sentiment — reps filter on these
Search either dynamics365_incident_id or dynamics365_ticket_number in Dynamics advanced find to jump to the record from an OpenCX session.

Closing the case

When the OpenCX session resolves, OpenCX PATCHes the incident with statecode: 1 (Resolved) and statuscode: 5 (Problem Solved). Reps can reopen the incident from Dynamics — OpenCX does not prevent it.

Connect to OpenCX

Paste credentials and run Test & Save.

AI Chat Widget in Dynamics 365

Web chat → Omnichannel live work item.

AI Email Support in Dynamics 365

Email → Incident with transcript and linked contact.

Troubleshooting

Routing lands on the wrong entity, unassigned incidents, 403 on create.