# Microsoft Dynamics 365

> Keep Dynamics 365 in step with the rest of your tools: create and update accounts and contacts, look them up by name or email, and keep their timeline current with tasks, notes, appointments and logged phone calls. Read a record's whole activity history in one step, and find the users to assign work to.

App · CRM Systems · 20 actions. Web page: https://docs.lodol.com/docs/integrations/microsoft-dynamics-365

## Actions

### Create a contact

Add a person as a contact, optionally at an account.

**Inputs**

- First name (`first_name`, text): The contact's first name.
- Last name (`last_name`, text, required): The contact's last name. Dynamics 365 requires it.
- Job title (`job_title`, text): The contact's job title.
- Email (`email`, text): The contact's email address.
- Business phone (`phone`, text): The contact's business phone.
- Mobile phone (`mobile_phone`, text): The contact's mobile phone.
- Street (`address_line1`, text): Address line 1.
- City (`city`, text): City.
- State or province (`state_or_province`, text): State or province.
- Postal code (`postal_code`, text): ZIP or postal code.
- Country (`country`, text): Country or region.
- Description (`description`, text): Notes about the contact.
- Company (account) ID (`account_id`, text): The account the contact works for's ID. Paste the GUID, or a link copied from the record in Dynamics 365.

**Outputs**

- `address_line1` (text)
- `city` (text)
- `company_id` (text)
- `company_name` (text)
- `country` (text)
- `created_on` (text)
- `description` (text)
- `email` (text)
- `first_name` (text)
- `full_name` (text)
- `id` (text): The contact's ID (a GUID).
- `job_title` (text)
- `last_name` (text)
- `mobile_phone` (text)
- `modified_on` (text)
- `owner_id` (text)
- `owner_name` (text)
- `phone` (text)
- `postal_code` (text)
- `state_or_province` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)

**Example output**

```json
{
  "address_line1": null,
  "city": null,
  "company_id": "a1b2c3d4-0000-4000-8000-000000000001",
  "company_name": "Fourth Coffee",
  "country": null,
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "email": "ada@example.com",
  "first_name": "Ada",
  "full_name": "Ada Lovelace",
  "id": "a1b2c3d4-0000-4000-8000-000000000002",
  "job_title": "Head of Engineering",
  "last_name": "Lovelace",
  "mobile_phone": null,
  "modified_on": "2026-09-24T09:05:00Z",
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "phone": null,
  "postal_code": null,
  "state_or_province": null,
  "status": "Active",
  "status_reason": "Active"
}
```

### Create a note

Write a note, on its own or attached to an account, contact, task, appointment or phone call.

**Inputs**

- Title (`title`, text, required): The note's title.
- Note (`note_text`, text): What the note says.
- Attach to (`regarding_type`, text): The kind of record to attach the note to. Fill in both this and the ID, or neither. One of: `account`, `contact`, `task`, `appointment`, `phone_call` (Phone call).
- Attach to record ID (`regarding_id`, text): The record to attach the note to's ID. Paste the GUID, or a link copied from the record in Dynamics 365.

**Outputs**

- `created_on` (text)
- `file_name` (text)
- `file_size` (number)
- `has_attachment` (true/false)
- `id` (text): The note's ID (a GUID).
- `mime_type` (text)
- `modified_on` (text)
- `note_text` (text)
- `owner_id` (text)
- `owner_name` (text)
- `regarding_id` (text)
- `regarding_name` (text)
- `regarding_type` (text): The table the note is attached to, if any.
- `title` (text)

**Example output**

```json
{
  "created_on": "2026-09-24T09:00:00Z",
  "file_name": null,
  "file_size": null,
  "has_attachment": false,
  "id": "a1b2c3d4-0000-4000-8000-000000000004",
  "mime_type": null,
  "modified_on": "2026-09-24T09:05:00Z",
  "note_text": "They want a quote for 50 seats.",
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "regarding_id": "a1b2c3d4-0000-4000-8000-000000000002",
  "regarding_name": "Ada Lovelace",
  "regarding_type": "contact",
  "title": "Call summary"
}
```

### Create a task

Add a to-do to the activity timeline of an account or contact, with a due time and priority.

**Inputs**

- Subject (`subject`, text, required): What needs doing.
- Due (`due`, date and time): When it is due.
- Start (`start`, date and time): When work on it starts.
- Priority (`priority`, text): Defaults to Normal. One of: `low`, `normal`, `high`.
- Regarding (`regarding_type`, text): The kind of record this task is about. Fill in both this and the ID, or neither. One of: `account`, `contact`.
- Regarding record ID (`regarding_id`, text): The record this task is about's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Description (`description`, text): Details.

**Outputs**

- `actual_duration_minutes` (number)
- `completed_on` (text)
- `created_on` (text)
- `description` (text)
- `due` (text)
- `duration_minutes` (number)
- `id` (text): The task's ID (a GUID).
- `modified_on` (text)
- `owner_id` (text)
- `owner_name` (text)
- `priority` (text)
- `priority_code` (number)
- `regarding_id` (text)
- `regarding_name` (text)
- `start` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)
- `subject` (text)

**Example output**

```json
{
  "actual_duration_minutes": null,
  "completed_on": null,
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "due": "2026-09-30T17:00:00Z",
  "duration_minutes": 30,
  "id": "a1b2c3d4-0000-4000-8000-000000000003",
  "modified_on": "2026-09-24T09:05:00Z",
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "priority": "High",
  "priority_code": 2,
  "regarding_id": "a1b2c3d4-0000-4000-8000-000000000001",
  "regarding_name": "Fourth Coffee",
  "start": null,
  "status": "Open",
  "status_reason": "Not Started",
  "subject": "Send the proposal"
}
```

### Create an account

Add a company or organization as an account.

**Inputs**

- Account name (`name`, text, required): The company or organization name.
- Account number (`account_number`, text): Your own account number.
- Main phone (`phone`, text): The account's main phone number.
- Email (`email`, text): The account's main email address.
- Website (`website`, text): The account's website address.
- Street (`address_line1`, text): Address line 1.
- City (`city`, text): City.
- State or province (`state_or_province`, text): State or province.
- Postal code (`postal_code`, text): ZIP or postal code.
- Country (`country`, text): Country or region.
- Description (`description`, text): Notes about the account.
- Industry (`industry`, text): The account's industry. One of: `accounting`, `agriculture` (Agriculture and Non-petrol Natural Resource Extraction), `broadcasting` (Broadcasting Printing and Publishing), `brokers`, `building_supply_retail` (Building Supply Retail), `business_services` (Business Services), `consulting`, `consumer_services` (Consumer Services), `design` (Design, Direction and Creative Management), `distributors` (Distributors, Dispatchers and Processors), and 23 more.
- Relationship type (`relationship_type`, text): How your organization relates to this account. One of: `competitor`, `consultant`, `customer`, `investor`, `partner`, `influencer`, `press`, `prospect`, `reseller`, `supplier`, `vendor`, `other`.
- Number of employees (`number_of_employees`, number): How many people the account employs. At least 0.
- Annual revenue (`annual_revenue`, number): The account's revenue, in the environment's currency. From 0 to 1000000000000.
- Primary contact ID (`primary_contact_id`, text): The account's primary contact's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Parent account ID (`parent_account_id`, text): The parent account's ID. Paste the GUID, or a link copied from the record in Dynamics 365.

**Outputs**

- `account_number` (text)
- `address_line1` (text)
- `annual_revenue` (number)
- `city` (text)
- `country` (text)
- `created_on` (text)
- `description` (text)
- `email` (text)
- `id` (text): The account's ID (a GUID).
- `industry` (text)
- `industry_code` (number)
- `modified_on` (text)
- `name` (text)
- `number_of_employees` (number)
- `owner_id` (text)
- `owner_name` (text)
- `parent_account_id` (text)
- `parent_account_name` (text)
- `phone` (text)
- `postal_code` (text)
- `primary_contact_id` (text)
- `primary_contact_name` (text)
- `relationship_type` (text)
- `relationship_type_code` (number)
- `state_or_province` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)
- `website` (text)

**Example output**

```json
{
  "account_number": "FC-1001",
  "address_line1": null,
  "annual_revenue": 2500000.0,
  "city": "Redmond",
  "country": "United States",
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "email": "hello@example.com",
  "id": "a1b2c3d4-0000-4000-8000-000000000001",
  "industry": "Consulting",
  "industry_code": 7,
  "modified_on": "2026-09-24T09:05:00Z",
  "name": "Fourth Coffee",
  "number_of_employees": 120,
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "parent_account_id": null,
  "parent_account_name": null,
  "phone": "+1 425 555 0100",
  "postal_code": null,
  "primary_contact_id": null,
  "primary_contact_name": null,
  "relationship_type": "Customer",
  "relationship_type_code": 3,
  "state_or_province": null,
  "status": "Active",
  "status_reason": "Active",
  "website": "https://example.com"
}
```

### Create an appointment

Put a meeting on the timeline of an account or contact. Dynamics 365 requires both a start and an end time.

**Inputs**

- Subject (`subject`, text, required): What the meeting is.
- Start (`start`, date and time, required): When it starts.
- End (`end`, date and time, required): When it ends.
- Location (`location`, text): Where it happens, or a meeting link.
- All day (`all_day`, true/false): Mark it as an all-day event. Default: `false`.
- Priority (`priority`, text): Defaults to Normal. One of: `low`, `normal`, `high`.
- Regarding (`regarding_type`, text): The kind of record this appointment is about. Fill in both this and the ID, or neither. One of: `account`, `contact`.
- Regarding record ID (`regarding_id`, text): The record this appointment is about's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Description (`description`, text): Details or an agenda.

**Outputs**

- `all_day` (true/false)
- `created_on` (text)
- `description` (text)
- `duration_minutes` (number)
- `end` (text)
- `id` (text): The appointment's ID (a GUID).
- `location` (text)
- `modified_on` (text)
- `owner_id` (text)
- `owner_name` (text)
- `priority` (text)
- `priority_code` (number)
- `regarding_id` (text)
- `regarding_name` (text)
- `start` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)
- `subject` (text)

**Example output**

```json
{
  "all_day": false,
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "duration_minutes": 30,
  "end": "2026-10-01T15:30:00Z",
  "id": "a1b2c3d4-0000-4000-8000-000000000005",
  "location": "Teams",
  "modified_on": "2026-09-24T09:05:00Z",
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "priority": "Normal",
  "priority_code": 1,
  "regarding_id": "a1b2c3d4-0000-4000-8000-000000000001",
  "regarding_name": "Fourth Coffee",
  "start": "2026-10-01T15:00:00Z",
  "status": "Scheduled",
  "status_reason": "Busy",
  "subject": "Product walkthrough"
}
```

### Delete a record

Permanently delete an account, contact, task, note, appointment or phone call. Records that depend on it may be deleted with it, as your environment's relationship rules decide. This cannot be undone.

**Inputs**

- Record type (`record_type`, text, required): What kind of record to delete. One of: `account`, `contact`, `task`, `note`, `appointment`, `phone_call` (Phone call).
- Record ID (`record_id`, text, required): The record's ID. Paste the GUID, or a link copied from the record in Dynamics 365.

**Outputs**

- `deleted` (true/false)
- `record_id` (text)
- `record_type` (text)

**Example output**

```json
{
  "deleted": true,
  "record_id": "a1b2c3d4-0000-4000-8000-000000000003",
  "record_type": "task"
}
```

### Get a contact

Read one contact, with their company and owner.

**Inputs**

- Contact ID (`contact_id`, text, required): The contact's ID. Paste the GUID, or a link copied from the record in Dynamics 365.

**Outputs**

- `address_line1` (text)
- `city` (text)
- `company_id` (text)
- `company_name` (text)
- `country` (text)
- `created_on` (text)
- `description` (text)
- `email` (text)
- `first_name` (text)
- `full_name` (text)
- `id` (text): The contact's ID (a GUID).
- `job_title` (text)
- `last_name` (text)
- `mobile_phone` (text)
- `modified_on` (text)
- `owner_id` (text)
- `owner_name` (text)
- `phone` (text)
- `postal_code` (text)
- `state_or_province` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)

**Example output**

```json
{
  "address_line1": null,
  "city": null,
  "company_id": "a1b2c3d4-0000-4000-8000-000000000001",
  "company_name": "Fourth Coffee",
  "country": null,
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "email": "ada@example.com",
  "first_name": "Ada",
  "full_name": "Ada Lovelace",
  "id": "a1b2c3d4-0000-4000-8000-000000000002",
  "job_title": "Head of Engineering",
  "last_name": "Lovelace",
  "mobile_phone": null,
  "modified_on": "2026-09-24T09:05:00Z",
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "phone": null,
  "postal_code": null,
  "state_or_province": null,
  "status": "Active",
  "status_reason": "Active"
}
```

### Get an account

Read one account, with its industry, address and owner.

**Inputs**

- Account ID (`account_id`, text, required): The account's ID. Paste the GUID, or a link copied from the record in Dynamics 365.

**Outputs**

- `account_number` (text)
- `address_line1` (text)
- `annual_revenue` (number)
- `city` (text)
- `country` (text)
- `created_on` (text)
- `description` (text)
- `email` (text)
- `id` (text): The account's ID (a GUID).
- `industry` (text)
- `industry_code` (number)
- `modified_on` (text)
- `name` (text)
- `number_of_employees` (number)
- `owner_id` (text)
- `owner_name` (text)
- `parent_account_id` (text)
- `parent_account_name` (text)
- `phone` (text)
- `postal_code` (text)
- `primary_contact_id` (text)
- `primary_contact_name` (text)
- `relationship_type` (text)
- `relationship_type_code` (number)
- `state_or_province` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)
- `website` (text)

**Example output**

```json
{
  "account_number": "FC-1001",
  "address_line1": null,
  "annual_revenue": 2500000.0,
  "city": "Redmond",
  "country": "United States",
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "email": "hello@example.com",
  "id": "a1b2c3d4-0000-4000-8000-000000000001",
  "industry": "Consulting",
  "industry_code": 7,
  "modified_on": "2026-09-24T09:05:00Z",
  "name": "Fourth Coffee",
  "number_of_employees": 120,
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "parent_account_id": null,
  "parent_account_name": null,
  "phone": "+1 425 555 0100",
  "postal_code": null,
  "primary_contact_id": null,
  "primary_contact_name": null,
  "relationship_type": "Customer",
  "relationship_type_code": 3,
  "state_or_province": null,
  "status": "Active",
  "status_reason": "Active",
  "website": "https://example.com"
}
```

### List accounts

Find accounts by name or account number, newest first, a page at a time.

**Inputs**

- Name or number contains (`search`, text): Only accounts whose name or account number contains this. Case-insensitive; matches anywhere in the text.
- Status (`status`, text): Which records to include. Defaults to active. One of: `active`, `inactive`, `all` (Any status). Default: `active`.
- How many per page (`max_results`, number): Defaults to 50. Newest records come first. From 1 to 5000.
- Next page (`next_page`, text): The 'next_page' value an earlier run of this step returned. When set, the other filters are ignored and the next page of that same list is returned.

**Outputs**

- `count` (number)
- `items` (list)
- `next_page` (text): Pass to 'next_page' on the same action for the next page; empty on the last page.

**Example output**

```json
{
  "count": 1,
  "items": [
    {
      "account_number": "FC-1001",
      "address_line1": null,
      "annual_revenue": 2500000.0,
      "city": "Redmond",
      "country": "United States",
      "created_on": "2026-09-24T09:00:00Z",
      "description": null,
      "email": "hello@example.com",
      "id": "a1b2c3d4-0000-4000-8000-000000000001",
      "industry": "Consulting",
      "industry_code": 7,
      "modified_on": "2026-09-24T09:05:00Z",
      "name": "Fourth Coffee",
      "number_of_employees": 120,
      "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
      "owner_name": "Lodol Integration",
      "parent_account_id": null,
      "parent_account_name": null,
      "phone": "+1 425 555 0100",
      "postal_code": null,
      "primary_contact_id": null,
      "primary_contact_name": null,
      "relationship_type": "Customer",
      "relationship_type_code": 3,
      "state_or_province": null,
      "status": "Active",
      "status_reason": "Active",
      "website": "https://example.com"
    }
  ],
  "next_page": null
}
```

### List activities

Everything on a record's timeline at once: tasks, appointments, phone calls, emails and letters together, newest first. Read only.

**Inputs**

- Subject contains (`search`, text): Only activities whose subject contains this. Case-insensitive; matches anywhere in the text.
- Regarding record ID (`regarding_id`, text): The account or contact whose activities to list's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Activity type (`activity_type`, text): Only one kind of activity. Leave blank for every kind. One of: `task`, `appointment`, `phonecall` (Phone call), `email`, `letter`, `fax`.
- Status (`status`, text): Which records to include. Defaults to all. One of: `open`, `completed`, `canceled`, `all` (Any status). Default: `all`.
- How many per page (`max_results`, number): Defaults to 50. Newest records come first. From 1 to 5000.
- Next page (`next_page`, text): The 'next_page' value an earlier run of this step returned. When set, the other filters are ignored and the next page of that same list is returned.

**Outputs**

- `count` (number)
- `items` (list)
- `next_page` (text): Pass to 'next_page' on the same action for the next page; empty on the last page.

**Example output**

```json
{
  "count": 1,
  "items": [
    {
      "activity_type": "task",
      "actual_duration_minutes": null,
      "actual_end": null,
      "actual_start": null,
      "created_on": "2026-09-24T09:00:00Z",
      "description": null,
      "duration_minutes": null,
      "end": "2026-09-30T17:00:00Z",
      "id": "a1b2c3d4-0000-4000-8000-000000000003",
      "modified_on": "2026-09-24T09:05:00Z",
      "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
      "owner_name": "Lodol Integration",
      "priority": "High",
      "priority_code": 2,
      "regarding_id": "a1b2c3d4-0000-4000-8000-000000000001",
      "regarding_name": "Fourth Coffee",
      "start": null,
      "status": "Open",
      "status_reason": "Not Started",
      "subject": "Send the proposal"
    }
  ],
  "next_page": null
}
```

### List appointments

Find appointments in a date range, on one record, or by status.

**Inputs**

- Subject contains (`search`, text): Only appointments whose subject contains this. Case-insensitive; matches anywhere in the text.
- Regarding record ID (`regarding_id`, text): The account or contact whose appointments to list's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Status (`status`, text): Which records to include. Defaults to all. One of: `open`, `completed`, `canceled`, `scheduled`, `all` (Any status). Default: `all`.
- Starts after (`starts_after`, date and time): Only appointments starting at or after this moment.
- Starts before (`starts_before`, date and time): Only appointments starting before this moment.
- How many per page (`max_results`, number): Defaults to 50. Newest records come first. From 1 to 5000.
- Next page (`next_page`, text): The 'next_page' value an earlier run of this step returned. When set, the other filters are ignored and the next page of that same list is returned.

**Outputs**

- `count` (number)
- `items` (list)
- `next_page` (text): Pass to 'next_page' on the same action for the next page; empty on the last page.

**Example output**

```json
{
  "count": 1,
  "items": [
    {
      "all_day": false,
      "created_on": "2026-09-24T09:00:00Z",
      "description": null,
      "duration_minutes": 30,
      "end": "2026-10-01T15:30:00Z",
      "id": "a1b2c3d4-0000-4000-8000-000000000005",
      "location": "Teams",
      "modified_on": "2026-09-24T09:05:00Z",
      "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
      "owner_name": "Lodol Integration",
      "priority": "Normal",
      "priority_code": 1,
      "regarding_id": "a1b2c3d4-0000-4000-8000-000000000001",
      "regarding_name": "Fourth Coffee",
      "start": "2026-10-01T15:00:00Z",
      "status": "Scheduled",
      "status_reason": "Busy",
      "subject": "Product walkthrough"
    }
  ],
  "next_page": null
}
```

### List contacts

Find contacts by name or email, or everyone at one account, newest first.

**Inputs**

- Name or email contains (`search`, text): Only contacts whose full name or email contains this. Case-insensitive; matches anywhere in the text.
- Company (account) ID (`account_id`, text): The account whose contacts to list's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Status (`status`, text): Which records to include. Defaults to active. One of: `active`, `inactive`, `all` (Any status). Default: `active`.
- How many per page (`max_results`, number): Defaults to 50. Newest records come first. From 1 to 5000.
- Next page (`next_page`, text): The 'next_page' value an earlier run of this step returned. When set, the other filters are ignored and the next page of that same list is returned.

**Outputs**

- `count` (number)
- `items` (list)
- `next_page` (text): Pass to 'next_page' on the same action for the next page; empty on the last page.

**Example output**

```json
{
  "count": 1,
  "items": [
    {
      "address_line1": null,
      "city": null,
      "company_id": "a1b2c3d4-0000-4000-8000-000000000001",
      "company_name": "Fourth Coffee",
      "country": null,
      "created_on": "2026-09-24T09:00:00Z",
      "description": null,
      "email": "ada@example.com",
      "first_name": "Ada",
      "full_name": "Ada Lovelace",
      "id": "a1b2c3d4-0000-4000-8000-000000000002",
      "job_title": "Head of Engineering",
      "last_name": "Lovelace",
      "mobile_phone": null,
      "modified_on": "2026-09-24T09:05:00Z",
      "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
      "owner_name": "Lodol Integration",
      "phone": null,
      "postal_code": null,
      "state_or_province": null,
      "status": "Active",
      "status_reason": "Active"
    }
  ],
  "next_page": null
}
```

### List notes

Find notes by their title or text, or read every note on one record, newest first. An attached file's contents are not returned.

**Inputs**

- Title or text contains (`search`, text): Only notes matching this. Case-insensitive; matches anywhere in the text.
- Attached to record ID (`regarding_id`, text): The record whose notes to list's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- How many per page (`max_results`, number): Defaults to 50. Newest records come first. From 1 to 5000.
- Next page (`next_page`, text): The 'next_page' value an earlier run of this step returned. When set, the other filters are ignored and the next page of that same list is returned.

**Outputs**

- `count` (number)
- `items` (list)
- `next_page` (text): Pass to 'next_page' on the same action for the next page; empty on the last page.

**Example output**

```json
{
  "count": 1,
  "items": [
    {
      "created_on": "2026-09-24T09:00:00Z",
      "file_name": null,
      "file_size": null,
      "has_attachment": false,
      "id": "a1b2c3d4-0000-4000-8000-000000000004",
      "mime_type": null,
      "modified_on": "2026-09-24T09:05:00Z",
      "note_text": "They want a quote for 50 seats.",
      "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
      "owner_name": "Lodol Integration",
      "regarding_id": "a1b2c3d4-0000-4000-8000-000000000002",
      "regarding_name": "Ada Lovelace",
      "regarding_type": "contact",
      "title": "Call summary"
    }
  ],
  "next_page": null
}
```

### List tasks

Find tasks by subject, by the account or contact they are about, or by whether they are still open.

**Inputs**

- Subject contains (`search`, text): Only tasks whose subject contains this. Case-insensitive; matches anywhere in the text.
- Regarding record ID (`regarding_id`, text): The account or contact whose tasks to list's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Status (`status`, text): Which records to include. Defaults to open. One of: `open`, `completed`, `canceled`, `all` (Any status). Default: `open`.
- How many per page (`max_results`, number): Defaults to 50. Newest records come first. From 1 to 5000.
- Next page (`next_page`, text): The 'next_page' value an earlier run of this step returned. When set, the other filters are ignored and the next page of that same list is returned.

**Outputs**

- `count` (number)
- `items` (list)
- `next_page` (text): Pass to 'next_page' on the same action for the next page; empty on the last page.

**Example output**

```json
{
  "count": 1,
  "items": [
    {
      "actual_duration_minutes": null,
      "completed_on": null,
      "created_on": "2026-09-24T09:00:00Z",
      "description": null,
      "due": "2026-09-30T17:00:00Z",
      "duration_minutes": 30,
      "id": "a1b2c3d4-0000-4000-8000-000000000003",
      "modified_on": "2026-09-24T09:05:00Z",
      "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
      "owner_name": "Lodol Integration",
      "priority": "High",
      "priority_code": 2,
      "regarding_id": "a1b2c3d4-0000-4000-8000-000000000001",
      "regarding_name": "Fourth Coffee",
      "start": null,
      "status": "Open",
      "status_reason": "Not Started",
      "subject": "Send the proposal"
    }
  ],
  "next_page": null
}
```

### List users

The people in this environment, by name, email or sign-in name, so a step can find whose ID to use. Read only: users come from Microsoft Entra ID, not from this API.

**Inputs**

- Name or email contains (`search`, text): Only users whose full name, email or user name contains this. Case-insensitive; matches anywhere in the text.
- Include disabled users (`include_disabled`, true/false): Also return users who have been disabled. Default: `false`.
- Include application users (`include_application_users`, true/false): Also return service accounts, such as the app this connection signs in as. Default: `false`.
- How many per page (`max_results`, number): Defaults to 50. Newest records come first. From 1 to 5000.
- Next page (`next_page`, text): The 'next_page' value an earlier run of this step returned. When set, the other filters are ignored and the next page of that same list is returned.

**Outputs**

- `count` (number)
- `items` (list)
- `next_page` (text): Pass to 'next_page' on the same action for the next page; empty on the last page.

**Example output**

```json
{
  "count": 1,
  "items": [
    {
      "business_unit_id": "5b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
      "business_unit_name": "Fourth Coffee",
      "email": "ada@example.com",
      "entra_object_id": "9f8e7d6c-5b4a-4321-8765-0a1b2c3d4e5f",
      "first_name": "Ada",
      "full_name": "Ada Lovelace",
      "id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
      "is_application_user": false,
      "is_disabled": false,
      "last_name": "Lovelace",
      "title": "Head of Engineering",
      "user_name": "ada@example.com"
    }
  ],
  "next_page": null
}
```

### Log a phone call

Record a call on the timeline of an account or contact, either as one still to make or as one already made or received.

**Inputs**

- Subject (`subject`, text, required): What the call is about.
- Direction (`direction`, text): Whether the call goes out or comes in. One of: `outgoing`, `incoming`.
- Outcome (`status`, text): Leave blank for a call still to make. One of: `open`, `made`, `received`, `canceled`.
- Phone number (`phone_number`, text): The number called.
- Duration (minutes) (`duration_minutes`, number): How long the call lasted. From 0 to 2160000.
- Priority (`priority`, text): Defaults to Normal. One of: `low`, `normal`, `high`.
- Regarding (`regarding_type`, text): The kind of record this call is about. Fill in both this and the ID, or neither. One of: `account`, `contact`.
- Regarding record ID (`regarding_id`, text): The record this call is about's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Notes (`description`, text): What was said.

**Outputs**

- `completed_on` (text)
- `created_on` (text)
- `description` (text)
- `direction` (text): outgoing or incoming.
- `duration_minutes` (number)
- `end` (text)
- `id` (text): The phone call's ID (a GUID).
- `modified_on` (text)
- `owner_id` (text)
- `owner_name` (text)
- `phone_number` (text)
- `priority` (text)
- `priority_code` (number)
- `regarding_id` (text)
- `regarding_name` (text)
- `start` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)
- `subject` (text)

**Example output**

```json
{
  "completed_on": null,
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "direction": "outgoing",
  "duration_minutes": 15,
  "end": null,
  "id": "a1b2c3d4-0000-4000-8000-000000000006",
  "modified_on": "2026-09-24T09:05:00Z",
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "phone_number": "+1 425 555 0100",
  "priority": "Normal",
  "priority_code": 1,
  "regarding_id": "a1b2c3d4-0000-4000-8000-000000000001",
  "regarding_name": "Fourth Coffee",
  "start": null,
  "status": "Completed",
  "status_reason": "Made",
  "subject": "Follow-up call"
}
```

### Update a contact

Change a contact's details. Only the fields you fill in are changed; blank fields are left as they are.

**Inputs**

- Contact ID (`contact_id`, text, required): The contact's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- First name (`first_name`, text): The contact's first name.
- Last name (`last_name`, text): The contact's last name. Dynamics 365 requires it.
- Job title (`job_title`, text): The contact's job title.
- Email (`email`, text): The contact's email address.
- Business phone (`phone`, text): The contact's business phone.
- Mobile phone (`mobile_phone`, text): The contact's mobile phone.
- Street (`address_line1`, text): Address line 1.
- City (`city`, text): City.
- State or province (`state_or_province`, text): State or province.
- Postal code (`postal_code`, text): ZIP or postal code.
- Country (`country`, text): Country or region.
- Description (`description`, text): Notes about the contact.
- Company (account) ID (`account_id`, text): The account the contact works for's ID. Paste the GUID, or a link copied from the record in Dynamics 365.

**Outputs**

- `address_line1` (text)
- `city` (text)
- `company_id` (text)
- `company_name` (text)
- `country` (text)
- `created_on` (text)
- `description` (text)
- `email` (text)
- `first_name` (text)
- `full_name` (text)
- `id` (text): The contact's ID (a GUID).
- `job_title` (text)
- `last_name` (text)
- `mobile_phone` (text)
- `modified_on` (text)
- `owner_id` (text)
- `owner_name` (text)
- `phone` (text)
- `postal_code` (text)
- `state_or_province` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)

**Example output**

```json
{
  "address_line1": null,
  "city": null,
  "company_id": "a1b2c3d4-0000-4000-8000-000000000001",
  "company_name": "Fourth Coffee",
  "country": null,
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "email": "ada@example.com",
  "first_name": "Ada",
  "full_name": "Ada Lovelace",
  "id": "a1b2c3d4-0000-4000-8000-000000000002",
  "job_title": "Head of Engineering",
  "last_name": "Lovelace",
  "mobile_phone": null,
  "modified_on": "2026-09-24T09:05:00Z",
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "phone": null,
  "postal_code": null,
  "state_or_province": null,
  "status": "Active",
  "status_reason": "Active"
}
```

### Update a task

Change a task, or move it on: choosing a status writes the state and status reason together, the way Dynamics 365 needs them. Only the fields you fill in are changed.

**Inputs**

- Task ID (`task_id`, text, required): The task's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Status (`status`, text): Where the task has got to. One of: `open` (Not started), `in_progress` (In progress), `deferred`, `completed`, `canceled`.
- Subject (`subject`, text): What needs doing.
- Due (`due`, date and time): When it is due.
- Start (`start`, date and time): When work on it starts.
- Duration (minutes) (`duration_minutes`, number): How long it is expected to take. From 0 to 2160000.
- Priority (`priority`, text): Defaults to Normal. One of: `low`, `normal`, `high`.
- Description (`description`, text): Details.

**Outputs**

- `actual_duration_minutes` (number)
- `completed_on` (text)
- `created_on` (text)
- `description` (text)
- `due` (text)
- `duration_minutes` (number)
- `id` (text): The task's ID (a GUID).
- `modified_on` (text)
- `owner_id` (text)
- `owner_name` (text)
- `priority` (text)
- `priority_code` (number)
- `regarding_id` (text)
- `regarding_name` (text)
- `start` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)
- `subject` (text)

**Example output**

```json
{
  "actual_duration_minutes": null,
  "completed_on": null,
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "due": "2026-09-30T17:00:00Z",
  "duration_minutes": 30,
  "id": "a1b2c3d4-0000-4000-8000-000000000003",
  "modified_on": "2026-09-24T09:05:00Z",
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "priority": "High",
  "priority_code": 2,
  "regarding_id": "a1b2c3d4-0000-4000-8000-000000000001",
  "regarding_name": "Fourth Coffee",
  "start": null,
  "status": "Open",
  "status_reason": "Not Started",
  "subject": "Send the proposal"
}
```

### Update an account

Change an account's details. Only the fields you fill in are changed; blank fields are left as they are.

**Inputs**

- Account ID (`account_id`, text, required): The account's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Account name (`name`, text): The company or organization name.
- Account number (`account_number`, text): Your own account number.
- Main phone (`phone`, text): The account's main phone number.
- Email (`email`, text): The account's main email address.
- Website (`website`, text): The account's website address.
- Street (`address_line1`, text): Address line 1.
- City (`city`, text): City.
- State or province (`state_or_province`, text): State or province.
- Postal code (`postal_code`, text): ZIP or postal code.
- Country (`country`, text): Country or region.
- Description (`description`, text): Notes about the account.
- Industry (`industry`, text): The account's industry. One of: `accounting`, `agriculture` (Agriculture and Non-petrol Natural Resource Extraction), `broadcasting` (Broadcasting Printing and Publishing), `brokers`, `building_supply_retail` (Building Supply Retail), `business_services` (Business Services), `consulting`, `consumer_services` (Consumer Services), `design` (Design, Direction and Creative Management), `distributors` (Distributors, Dispatchers and Processors), and 23 more.
- Relationship type (`relationship_type`, text): How your organization relates to this account. One of: `competitor`, `consultant`, `customer`, `investor`, `partner`, `influencer`, `press`, `prospect`, `reseller`, `supplier`, `vendor`, `other`.
- Number of employees (`number_of_employees`, number): How many people the account employs. At least 0.
- Annual revenue (`annual_revenue`, number): The account's revenue, in the environment's currency. From 0 to 1000000000000.
- Primary contact ID (`primary_contact_id`, text): The account's primary contact's ID. Paste the GUID, or a link copied from the record in Dynamics 365.
- Parent account ID (`parent_account_id`, text): The parent account's ID. Paste the GUID, or a link copied from the record in Dynamics 365.

**Outputs**

- `account_number` (text)
- `address_line1` (text)
- `annual_revenue` (number)
- `city` (text)
- `country` (text)
- `created_on` (text)
- `description` (text)
- `email` (text)
- `id` (text): The account's ID (a GUID).
- `industry` (text)
- `industry_code` (number)
- `modified_on` (text)
- `name` (text)
- `number_of_employees` (number)
- `owner_id` (text)
- `owner_name` (text)
- `parent_account_id` (text)
- `parent_account_name` (text)
- `phone` (text)
- `postal_code` (text)
- `primary_contact_id` (text)
- `primary_contact_name` (text)
- `relationship_type` (text)
- `relationship_type_code` (number)
- `state_or_province` (text)
- `status` (text): Active, Inactive, Open, Completed...
- `status_reason` (text)
- `website` (text)

**Example output**

```json
{
  "account_number": "FC-1001",
  "address_line1": null,
  "annual_revenue": 2500000.0,
  "city": "Redmond",
  "country": "United States",
  "created_on": "2026-09-24T09:00:00Z",
  "description": null,
  "email": "hello@example.com",
  "id": "a1b2c3d4-0000-4000-8000-000000000001",
  "industry": "Consulting",
  "industry_code": 7,
  "modified_on": "2026-09-24T09:05:00Z",
  "name": "Fourth Coffee",
  "number_of_employees": 120,
  "owner_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f",
  "owner_name": "Lodol Integration",
  "parent_account_id": null,
  "parent_account_name": null,
  "phone": "+1 425 555 0100",
  "postal_code": null,
  "primary_contact_id": null,
  "primary_contact_name": null,
  "relationship_type": "Customer",
  "relationship_type_code": 3,
  "state_or_province": null,
  "status": "Active",
  "status_reason": "Active",
  "website": "https://example.com"
}
```

### Who am I

Check the connection: returns the ID of the application user this connection acts as, with its business unit and organization.

**Inputs**: None.

**Outputs**

- `business_unit_id` (text)
- `environment_url` (text)
- `organization_id` (text)
- `user_id` (text)

**Example output**

```json
{
  "business_unit_id": "5b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
  "environment_url": "https://yourorg.crm.dynamics.com",
  "organization_id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
  "user_id": "7d2e4f10-1c3b-4a5d-8e6f-0a1b2c3d4e5f"
}
```
