Before you start
Dynamics 365 with Customer Service or Omnichannel enabled
Dynamics 365 with Customer Service or Omnichannel enabled
OpenCX writes
incident records, and for chat channels creates oc_liveworkitem records in Omnichannel for Customer Service. If you only plan to use phone/email handoffs, Customer Service Enterprise is enough. For web/SMS/WhatsApp handoffs, make sure Omnichannel is provisioned on the environment.Global admin or Privileged Role Administrator in Azure AD
Global admin or Privileged Role Administrator in Azure AD
You’ll register an app, create a client secret, and grant admin consent on API permissions. Any of those three steps needs tenant-level admin rights.
Power Platform admin on the target Dynamics environment
Power Platform admin on the target Dynamics environment
You’ll create an Application User and assign a security role inside the Dynamics environment. Environment Admin or System Administrator on the env is enough.
Setup
Register an app in Azure AD
Open the Azure Portal → App registrations and click New registration.
After it’s created, copy the Directory (tenant) ID and Application (client) ID from the Overview page.
| Field | Value |
|---|---|
| Name | OpenCX Dynamics Integration (or any name you’ll recognize) |
| Supported account types | Accounts in this organizational directory only (single tenant) |
| Redirect URI | Leave blank — OpenCX uses client credentials, not interactive OAuth |
Create a client secret
In the new app, go to Certificates & secrets → Client secrets → New client secret. Name it
opencx and pick an expiry (24 months is the longest Azure allows).Grant Dynamics API permissions
Go to API permissions → Add a permission → Dynamics CRM → Delegated permissions →
user_impersonation. Add it, then click Grant admin consent for <your tenant>. The status column should flip to Granted.Create an Application User in Dynamics
Open the Power Platform admin center → your environment → Settings → Users + permissions → Application users → New app user.
Save. The Application User row now represents OpenCX inside Dynamics.
| Field | Value |
|---|---|
| App | Pick the Azure AD app you just registered (search by name or client ID) |
| Business unit | The root business unit of the environment |
Assign a security role
Still on the Application User you just created, click Manage roles and attach a role. Two common choices:
- System Administrator — simplest path; grants everything OpenCX needs and more.
- Custom role — minimum privileges:
ReadonContact,Queue,SystemUser;Create+Write+Append ToonIncidentandAnnotation;CreateonOmnichannel Live Work Itemif you’re using chat channels.
What you should have at the end
- Tenant ID (GUID from the app’s Overview page)
- Application (client) ID (GUID from the same page)
- Client secret value (the one Azure showed once)
- Environment URL (e.g.
https://yourorg.crm.dynamics.com) - Application User inside Dynamics, mapped to the Azure AD app, carrying a security role
Related Documentation
Connect to OpenCX
Paste credentials into the OpenCX dashboard and run Test & Save.
Conversations in Dynamics 365
Routing, incident contents, contact dedupe, and observability.
Troubleshooting
Token 200 but verify fails, 403 on incident create, missing roles.
Dynamics 365 overview
What the integration unlocks across every channel.