Dynamics 365 Customer Service
Dynamics 365 Customer Service is Microsoft’s support and case management platform built on Dataverse. Advanced Form Integration creates Cases (incidents) and adds Notes (annotations) from your WordPress form submissions, turning support requests, bug reports, and enquiry forms into trackable tickets.
Shared connection with Dynamics 365 CRM
Customer Service runs on the same Dataverse instance as Dynamics 365 CRM. It reuses the connection you configure under AFI → Settings → Dynamics 365 CRM. No separate credentials are needed.
If you have not yet set up the Dynamics 365 CRM connection, follow the steps in the Dynamics 365 & Dataverse doc first.
Create the integration
- Go to AFI → Add New.
- Give the integration a name, for example
Support form to Dynamics 365. - Under Trigger, pick the form plugin and the specific form.
- Under Action → Platform, select Dynamics 365 Customer Service.
- In Task, choose Create Case (incident) or Add Note to existing Case.
- Pick the same Dynamics 365 Account you configured for CRM.
- Map your form fields onto the case fields listed below.
- Optional: open Conditional Logic to limit which submissions are sent.
- Click Save Integration.
Tasks supported
Create Case (incident)
Creates a case on the incidents entity. The case title is required. AFI resolves the customer automatically:
- If a Contact Email is mapped, AFI searches for a matching contact by email. If no contact exists, AFI auto-creates a minimal contact (first name, last name, email) so the case has a customer to attach to.
- If no contact is found or created, AFI falls back to Account Name and looks up the account by name.
- The case is linked via a polymorphic
customeridOData binding.
| Field | Field key | Required | Notes |
|---|---|---|---|
| Contact Email | contact_email |
Recommended | Looks up or creates a Contact |
| Contact First Name | contact_first |
No | Used if contact must be created |
| Contact Last Name | contact_last |
No | Used if contact must be created |
| Account Name | account_name |
Fallback | Used if no contact matches |
| Case Title | title |
Yes | |
| Description | description |
No | |
| Case Type | casetypecode |
No | 1=Question, 2=Problem, 3=Request |
| Origin | caseorigincode |
No | 1=Phone, 2=Email, 3=Web, 2483=Facebook, 3986=Twitter |
| Priority | prioritycode |
No | 1=High, 2=Normal, 3=Low |
| Severity | severitycode |
No | Option set value |
| Product Serial Number | productserialnumber |
No | |
| Customer Contacted | customercontacted |
No | Boolean: true/false |
| First Response Sent | firstresponsesent |
No | Boolean: true/false |
| Owner ID | ownerid |
No | Systemuser or team GUID |
Add Note to existing Case
Attaches a note (annotation) to an existing case. Use this for follow-up forms or additional information submissions on an open ticket.
| Field | Field key | Required | Notes |
|---|---|---|---|
| Case GUID | case_id |
Yes | The incidentid of the case |
| Note Subject | subject |
Yes | |
| Note Text | notetext |
No |
Pro features
The Pro integration adds a Custom Fields repeater to both tasks. Map any custom Dataverse column on the Case (incident) or Annotation entity using the schema (logical) name as the key, for example new_supportchannel or prefix_severityreason.
Feature comparison
| Feature | Free | Pro |
|---|---|---|
| Create case (incident) | ✅ | ✅ |
| Customer auto-resolution (Contact by email, Account by name) | ✅ | ✅ |
| Auto-create minimal contact if none exists | ✅ | ✅ |
| Add note to existing case | ✅ | ✅ |
| Standard case fields | ✅ | ✅ |
| Custom Dataverse fields on Case and Annotation | No | ✅ |
Conditional logic example
Only create cases for urgent enquiries. Add a condition on priority being “urgent” so routine questions go to a different integration that creates a lower-priority case or simply sends an email notification.
Troubleshooting
Case not created even though contact exists
The Application User’s security role must include write access to the incident entity. In Power Platform, check Settings → Security Roles → your role → Core Records → Case.
Customer not linked to case
The case requires a customerid binding. If neither a contact nor an account can be resolved, AFI will not send the request (Dynamics would reject it without a customer). Verify the email or account name in the form submission matches a record in Dataverse.
Nothing in the log
If there is no log entry at all, the trigger never fired. Submit a real test entry from the front end, not a preview.