Dynamics 365
Work with Dynamics 365 from chat — manage CRM records, accounts, contacts, leads, opportunities, and activities.
Powered by ClawLink, an integration hub for OpenClaw that handles hosted connection flows and credentials so you don't need to configure Dynamics 365 API access yourself.
Setup in 3 Steps
| Step 1: Install | Step 2: Pair Account | Step 3: Connect Dynamics 365 |
|:---:|:---:|:---:|
|
|
| App-specific connection GIF coming soon |
| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Dynamics 365 |
Connection flow
User → ClawLink OAuth → Microsoft Dynamics 365 account
↓
OpenClaw tools
(via ClawLink)
Step 1 — Install the ClawLink plugin:
openclaw plugins install clawhub:clawlink-plugin
Start a fresh chat after installing.
Step 2 — Pair ClawLink:
- Call
clawlink_begin_pairing - Open the returned URL in your browser
- Sign in to ClawLink and approve the device
Step 3 — Connect Dynamics 365: Open claw-link.dev/dashboard?add=dynamics-365, complete the OAuth flow, then confirm.
App-specific connection GIF coming soon
Step 4 — Verify and discover:
// 1. Verify Dynamics 365 is connected
clawlink_list_integrations()
// 2. List available tools
clawlink_list_tools({ integration: "dynamics-365" })
// 3. Search tools if needed
clawlink_search_tools({ query: "lead", integration: "dynamics-365" })
Architecture
┌─────────────────────────────────────────────────────────┐
│ OpenClaw (you) │
├─────────────────────────────────────────────────────────┤
│ ClawLink Plugin → clawlink_* tools │
├─────────────────────────────────────────────────────────┤
│ ClawLink Cloud │
│ (credentials, connection state, routing) │
├─────────────────────────────────────────────────────────┤
│ Microsoft Dynamics 365 Web API │
│ (user's CRM account) │
└─────────────────────────────────────────────────────────┘
Tool reference
Create operations
| Tool | Description | Risk |
|------|-------------|------|
| dynamics365_dynamicscrm_create_account | Create a new account entity record | confirm |
| dynamics365_dynamicscrm_create_case | Create a new case (incident) entity record | confirm |
| dynamics365_dynamicscrm_create_contact | Create a new contact entity record | confirm |
| dynamics365_dynamicscrm_create_invoice | Create a new invoice entity record | confirm |
| dynamics365_dynamicscrm_create_lead | Create a new lead entity record | confirm |
| dynamics365_dynamicscrm_create_opportunity | Create a new opportunity entity record | confirm |
| dynamics365_dynamicscrm_create_sales_order | Create a new sales order entity record | confirm |
Read operations
| Tool | Description | Risk |
|------|-------------|------|
| dynamics365_dynamicscrm_get_a_invoice | Get a specific invoice by ID | safe |
| dynamics365_dynamicscrm_get_a_lead | Get a specific lead by ID | safe |
| dynamics365_dynamicscrm_get_all_leads | Get all leads from the CRM | safe |
| dynamics365_get_all_invoices_action | Get all invoices | safe |
Update operations
| Tool | Description | Risk |
|------|-------------|------|
| dynamics365_dynamicscrm_update_case | Update an existing case (incident) | confirm |
| dynamics365_dynamicscrm_update_invoice | Update an existing invoice | confirm |
| dynamics365_dynamicscrm_update_lead | Update an existing lead | confirm |
| dynamics365_dynamicscrm_update_opportunity | Update an existing opportunity | confirm |
| dynamics365_dynamicscrm_update_sales_order | Update an existing sales order | confirm |
Code examples
Example 1: Create and manage leads
// Create a new lead
const lead = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_lead",
parameters: {
subject: "New product inquiry",
firstname: "Jane",
lastname: "Doe",
emailaddress1: "jane.doe@example.com",
companyname: "Acme Corp"
}
});
// Get a specific lead
const specificLead = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_get_a_lead",
parameters: { lead_id: "abc123" }
});
// Get all leads
const allLeads = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_get_all_leads",
parameters: {}
});
// Update a lead
await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_update_lead",
parameters: {
lead_id: "abc123",
subject: "Updated subject line",
telephone1: "+1-555-0100"
}
});
Example 2: Manage accounts and contacts
// Create an account
const account = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_account",
parameters: {
name: "Acme Corporation",
telephone1: "+1-555-0100",
address1_city: "Seattle"
}
});
// Create a contact
const contact = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_contact",
parameters: {
firstname: "John",
lastname: "Smith",
emailaddress1: "john.smith@acme.com",
parentcustomerid_account: account.id
}
});
Example 3: Manage opportunities and sales orders
// Create an opportunity
const opportunity = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_opportunity",
parameters: {
name: "Enterprise deal - Acme Corp",
estimatedvalue: 50000,
estimatedclosedate: "2024-06-30"
}
});
// Update an opportunity
await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_update_opportunity",
parameters: {
opportunity_id: "opportunity123",
estimatedvalue: 75000,
description: "Expanded scope"
}
});
// Create a sales order
const order = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_sales_order",
parameters: {
name: "SO-001",
customerid_account: "account123"
}
});
Example 4: Handle cases and invoices
// Create a case
const case = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_case",
parameters: {
title: "Technical support request",
customerid_account: "account123",
caseorigincode: "Web"
}
});
// Update a case
await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_update_case",
parameters: {
incident_id: "case123",
description: "Issue resolved"
}
});
// Get all invoices
const invoices = await clawlink_call_tool({
tool: "dynamics365_get_all_invoices_action",
parameters: {}
});
// Get a specific invoice
const invoice = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_get_a_invoice",
parameters: { invoice_id: "inv123" }
});
Error handling
| Error pattern | Likely cause | Resolution |
|---------------|--------------|------------|
| estimatedclosedate required | Server-side requirement for opportunity | Include estimatedclosedate when creating opportunities |
| transactioncurrency required | Server-side requirement for some entities | Ensure transaction currency is set at server level |
| entity not found | Wrong entity ID or type | Verify entity ID format and type |
| permission denied | Missing Dynamics 365 permissions | User may need to reconnect with proper CRM roles |
Security & Permissions
- ClawLink stores only the OAuth token for Dynamics 365
- Device credentials are stored locally in OpenClaw plugin config
- CRM permissions depend on the user's assigned Dynamics 365 roles
- Some entities may require specific field-level permissions
Troubleshooting
Tools not showing up after install:
- Start a fresh OpenClaw chat to reload the plugin catalog
- Call
clawlink_list_integrationsto confirm ClawLink is paired
"Permission denied" errors:
- User needs appropriate Dynamics 365 roles assigned in Azure AD
- Some CRM operations require specific security roles
Opportunity/invoice creation fails:
- Some CRM configurations enforce fields not exposed in the schema
- Check
estimatedclosedatefor opportunities - Check transaction currency requirements for invoicing
Powered by ClawLink — your OpenClaw integration hub for Dynamics 365.
Scan to join WeChat group