Dynamics 365

Other

Work with Microsoft Dynamics 365 CRM records, accounts, contacts, leads, opportunities, and activities - powered by ClawLink.

Install

openclaw skills install @hith3sh/dynamics-365

Dynamics 365

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: InstallStep 2: Pair AccountStep 3: Connect Dynamics 365
InstallPairApp-specific connection GIF coming soon
Run the install command in OpenClawSign in and approve the deviceOpen 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:

  1. Call clawlink_begin_pairing
  2. Open the returned URL in your browser
  3. 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

ToolDescriptionRisk
dynamics365_dynamicscrm_create_accountCreate a new account entity recordconfirm
dynamics365_dynamicscrm_create_caseCreate a new case (incident) entity recordconfirm
dynamics365_dynamicscrm_create_contactCreate a new contact entity recordconfirm
dynamics365_dynamicscrm_create_invoiceCreate a new invoice entity recordconfirm
dynamics365_dynamicscrm_create_leadCreate a new lead entity recordconfirm
dynamics365_dynamicscrm_create_opportunityCreate a new opportunity entity recordconfirm
dynamics365_dynamicscrm_create_sales_orderCreate a new sales order entity recordconfirm

Read operations

ToolDescriptionRisk
dynamics365_dynamicscrm_get_a_invoiceGet a specific invoice by IDsafe
dynamics365_dynamicscrm_get_a_leadGet a specific lead by IDsafe
dynamics365_dynamicscrm_get_all_leadsGet all leads from the CRMsafe
dynamics365_get_all_invoices_actionGet all invoicessafe

Update operations

ToolDescriptionRisk
dynamics365_dynamicscrm_update_caseUpdate an existing case (incident)confirm
dynamics365_dynamicscrm_update_invoiceUpdate an existing invoiceconfirm
dynamics365_dynamicscrm_update_leadUpdate an existing leadconfirm
dynamics365_dynamicscrm_update_opportunityUpdate an existing opportunityconfirm
dynamics365_dynamicscrm_update_sales_orderUpdate an existing sales orderconfirm

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 patternLikely causeResolution
estimatedclosedate requiredServer-side requirement for opportunityInclude estimatedclosedate when creating opportunities
transactioncurrency requiredServer-side requirement for some entitiesEnsure transaction currency is set at server level
entity not foundWrong entity ID or typeVerify entity ID format and type
permission deniedMissing Dynamics 365 permissionsUser 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.