| name | dynamics-365 |
| description | Work with Microsoft Dynamics 365 CRM records, accounts, contacts, leads, opportunities, and activities - powered by ClawLink. |
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:
clawlink_list_integrations()
clawlink_list_tools({ integration: "dynamics-365" })
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
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"
}
});
const specificLead = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_get_a_lead",
parameters: { lead_id: "abc123" }
});
const allLeads = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_get_all_leads",
parameters: {}
});
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
const account = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_account",
parameters: {
name: "Acme Corporation",
telephone1: "+1-555-0100",
address1_city: "Seattle"
}
});
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
const opportunity = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_opportunity",
parameters: {
name: "Enterprise deal - Acme Corp",
estimatedvalue: 50000,
estimatedclosedate: "2024-06-30"
}
});
await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_update_opportunity",
parameters: {
opportunity_id: "opportunity123",
estimatedvalue: 75000,
description: "Expanded scope"
}
});
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
const case = await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_create_case",
parameters: {
title: "Technical support request",
customerid_account: "account123",
caseorigincode: "Web"
}
});
await clawlink_call_tool({
tool: "dynamics365_dynamicscrm_update_case",
parameters: {
incident_id: "case123",
description: "Issue resolved"
}
});
const invoices = await clawlink_call_tool({
tool: "dynamics365_get_all_invoices_action",
parameters: {}
});
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_integrations to 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
estimatedclosedate for opportunities
- Check transaction currency requirements for invoicing
Powered by ClawLink — your OpenClaw integration hub for Dynamics 365.