npm package: @pokash/n8n-nodes-dataverse
Description: n8n node for Microsoft Dataverse integration with Dynamics CRM
Author: POKASH
Latest version: 1.3.5

# n8n-nodes-dataverse

Node.js package providing n8n nodes for Microsoft Dataverse integration with Dynamics CRM.

## Configuration

### Prerequisites

1. **Azure AD App Registration**: Create an application registration in Azure Active Directory
2. **Dataverse Environment**: Access to a Microsoft Dataverse environment
3. **Permissions**: Configure appropriate permissions for the app registration

### Credentials Setup

#### Service Principal (Recommended)
1. **Client ID**: Application (client) ID from Azure AD
2. **Client Secret**: Client secret from Azure AD app registration
3. **Tenant ID**: Directory (tenant) ID from Azure AD
4. **Environment URL**: Your Dataverse environment URL (e.g., https://yourorg.crm.dynamics.com)

#### Username/Password
1. **Client ID**: Application (client) ID from Azure AD
2. **Username**: User's email address
3. **Password**: User's password
4. **Environment URL**: Your Dataverse environment URL

## Usage Examples

### Creating a Contact Record

```javascript
{
  "resource": "entityRecord",
  "operation": "create",
  "entityTableName": "contacts",
  "fieldsUi": {
    "fieldValues": [
      {
        "name": "firstname",
        "value": "John"
      },
      {
        "name": "lastname",
        "value": "Doe"
      },
      {
        "name": "emailaddress1",
        "value": "john.doe@example.com"
      }
    ]
  }
}
```

### Querying Account Records

```javascript
{
  "resource": "entityRecord",
  "operation": "getAll",
  "entityTableName": "accounts",
  "options": {
    "filter": "revenue gt 1000000",
    "select": "name,accountnumber,revenue,primarycontactid",
    "expand": "primarycontactid($select=fullname,emailaddress1)",
    "orderby": "revenue desc",
    "top": 10
  }
}
```

### Updating an Account Record

```javascript
{
  "resource": "entityRecord",
  "operation": "update",
  "entityTableName": "accounts",
  "recordId": "12345678-1234-1234-1234-123456789012",
  "fieldsUi": {
    "fieldValues": [
      {
        "name": "name",
        "value": "Updated Company Name"
      },
      {
        "name": "revenue",
        "value": "2500000"
      }
    ]
  }
}
```

## Supported Entity Tables

Common entity table names in Dataverse:

- `accounts` - Account records
- `contacts` - Contact records
- `leads` - Lead records
- `opportunities` - Opportunity records
- `incidents` - Case records
- `tasks` - Task records
- `emails` - Email records
- `appointments` - Appointment records

## OData Query Options

### $filter
Filter records based on conditions:
```
name eq 'Contoso'
revenue gt 1000000
createdon ge 2023-01-01T00:00:00Z
```

### $select
Choose specific columns to retrieve:
```
name,accountnumber,revenue
```

### $expand
Include related data:
```
primarycontactid($select=fullname,emailaddress1)
```

### $orderby
Sort results:
```
name asc
revenue desc
createdon desc
```

### $top
Limit number of results:
```
10
```

## Error Handling

The node provides comprehensive error handling:

- **Authentication Errors**: Invalid credentials or expired tokens
- **API Errors**: Invalid entity names, missing required fields
- **Network Errors**: Connection timeouts, network issues
- **Data Validation**: Field validation errors from Dataverse