# Dynamics 365 on boxd

> Dynamics 365 from Microsoft combines CRM, ERP, and productivity apps to streamline sales, marketing, customer service, and operations in one integrated platform.

- Page: https://boxd.sh/integrations/dynamics365/
- CLI: `run dynamics365` (16 commands, 1 marked common)
- SDK: `import { dynamics365 } from "@boxd/run"`; every parameter and response type is at `@boxd/run/dynamics365`
- Triggers: none
- Connect: `run auth dynamics365` (Sign in with Dynamics 365), or https://app.boxd.sh/integrations/detail/dynamics365
- All integrations: https://boxd.sh/integrations/ (Markdown: https://boxd.sh/integrations/index.md)

## From the shell

```sh
run auth dynamics365      # once: prints a link to connect your account
run dynamics365           # list its commands
run dynamics365 get-all-invoices-action
```

Parameters are flags (`--flag value`); object and array parameters take a JSON string. Output is YAML, or JSON with `--json`. Calls use your own connection; `--scope <name>` uses a connection shared with your team.

## From a script

```ts
import { every, dynamics365 } from "@boxd/run";

every("1 hour", async () => {
  const result = await dynamics365.getAllInvoicesAction({});
  console.log(result);
});
```

Run it with `run dynamics365.run.ts`. Dynamics 365 has no triggers; `every()` polls on a schedule, keeps the script running as a job, and wakes the machine when it is due.

## Commands

Required flags are listed; `run dynamics365 <command> --help` lists the optional ones. "common" marks what `run dynamics365` shows without `--all`.

| Command | SDK method | Required flags | Optional | Description |
|---|---|---|---|---|
| `dynamicscrm-create-account` ·common | `dynamics365.dynamicscrmCreateAccount()` | — | 6 | Creates a new account entity record in Dynamics CRM using the Web API |
| `dynamicscrm-create-case` | `dynamics365.dynamicscrmCreateCase()` | — | 7 | Creates a new case (incident) entity record in Dynamics CRM using the Web API |
| `dynamicscrm-create-contact` | `dynamics365.dynamicscrmCreateContact()` | — | 11 | Creates a new contact entity record in Dynamics CRM using the Web API |
| `dynamicscrm-create-invoice` | `dynamics365.dynamicscrmCreateInvoice()` | — | 6 | Creates a new invoice entity record in Dynamics CRM using the Web API |
| `dynamicscrm-create-lead` | `dynamics365.dynamicscrmCreateLead()` | — | 7 | Creates a new lead entity record in Dynamics CRM using the Web API |
| `dynamicscrm-create-opportunity` | `dynamics365.dynamicscrmCreateOpportunity()` | `--name` | 5 | Creates a new opportunity entity record in Dynamics CRM using the Web API |
| `dynamicscrm-create-sales-order` | `dynamics365.dynamicscrmCreateSalesOrder()` | — | 6 | Creates a new sales order entity record in Dynamics CRM using the Web API |
| `dynamicscrm-get-all-leads` | `dynamics365.dynamicscrmGetAllLeads()` | — | 5 | Dynamicscrm get all leads |
| `dynamicscrm-get-invoice` | `dynamics365.dynamicscrmGetInvoice()` | `--invoice-id` | 0 | Dynamicscrm get a invoice |
| `dynamicscrm-get-lead` | `dynamics365.dynamicscrmGetLead()` | `--lead-id` | 0 | Dynamicscrm get a lead |
| `dynamicscrm-update-case` | `dynamics365.dynamicscrmUpdateCase()` | `--case-id` | 5 | Updates an existing case (incident) entity record in Dynamics CRM using the Web API |
| `dynamicscrm-update-invoice` | `dynamics365.dynamicscrmUpdateInvoice()` | `--invoice-id` | 5 | Updates an existing invoice entity record in Dynamics CRM using the Web API |
| `dynamicscrm-update-lead` | `dynamics365.dynamicscrmUpdateLead()` | `--lead-id` | 7 | Updates an existing lead entity record in Dynamics CRM using the Web API |
| `dynamicscrm-update-opportunity` | `dynamics365.dynamicscrmUpdateOpportunity()` | `--opportunity-id` | 7 | Updates an existing opportunity entity record in Dynamics CRM using the Web API |
| `dynamicscrm-update-sales-order` | `dynamics365.dynamicscrmUpdateSalesOrder()` | `--salesorder-id` | 5 | Updates an existing sales order entity record in Dynamics CRM using the Web API |
| `get-all-invoices-action` | `dynamics365.getAllInvoicesAction()` | — | 5 | Get all invoices action |

## Docs

- [run CLI](https://docs.boxd.sh/cli/run): Call connected integrations from the shell, connect new ones, and run automations.
- [Quickstart](https://docs.boxd.sh/guides/integrations/quickstart): Connect an integration, call it from the shell, and turn a script into an automation.
- [Connections](https://docs.boxd.sh/guides/integrations/connections): Connect an account once, for yourself or for your whole organization.
- [Scripts](https://docs.boxd.sh/guides/automations/scripts): Typed integrations, triggers, schedules and state in a .run.ts file.
- [Jobs](https://docs.boxd.sh/guides/automations/jobs): How a script becomes a background job: states, retries, sleep and wake.
- [Beyond the catalog](https://docs.boxd.sh/guides/automations/beyond-the-catalog): Reach your own APIs, databases and cloud accounts from a script.
