@panoptic-it-solutions/n8n-nodes-datto-rmm
Version:
n8n node for Datto RMM integration
444 lines (358 loc) • 11.3 kB
Markdown
# Datto RMM Node for n8n
A comprehensive n8n node for integrating with Datto RMM (Remote Monitoring and Management) platform. This node enables automation of device management, site administration, alert monitoring, and more through n8n workflows.
## 📋 Table of Contents
- [Installation](#installation)
- [Authentication Setup](#authentication-setup)
- [Available Resources](#available-resources)
- [Quick Start Guide](#quick-start-guide)
- [Workflow Examples](#workflow-examples)
- [API Reference](#api-reference)
- [Troubleshooting](#troubleshooting)
- [Contributing](#contributing)
## 🚀 Installation
### Method 1: npm Installation (Recommended)
```bash
npm install n8n-nodes-datto-rmm
```
### Method 2: Manual Installation
1. Download the package
2. Place in your n8n custom nodes directory
3. Restart n8n
### Enable the Node
1. Add to your n8n environment variables:
```bash
N8N_CUSTOM_EXTENSIONS="n8n-nodes-datto-rmm"
```
2. Restart n8n service
## 🔐 Authentication Setup
### Step 1: Get Datto RMM API Credentials
1. Log into your Datto RMM portal
2. Navigate to **Administration → API Management**
3. Create new API keys:
- **API Key** (Access Key)
- **Secret Key**
- **API URL** (your instance URL, e.g., `https://your-instance.centrastage.net`)
### Step 2: Configure n8n Credentials
1. In n8n, go to **Settings → Credentials**
2. Click **Create Credential**
3. Search for "Datto RMM API"
4. Fill in the required fields:
```
API URL: https://your-instance.centrastage.net
API Key: your-access-key
Secret Key: your-secret-key
```
5. Click **Save** and **Test**
### Step 3: Verify Connection
The credential test will validate your connection to the Datto RMM API.
## 📊 Available Resources
### ✅ Fully Implemented Resources
#### 1. **Account Resource**
Manage account-level information and settings.
**Operations:**
- `Get` - Retrieve account information
- `Get Variables` - Get account variables
#### 2. **Device Resource**
Comprehensive device management and monitoring.
**Operations:**
- `Get` - Get device by UID
- `Get by ID` - Get device by numeric ID
- `Get by MAC Address` - Find device by MAC address
- `Get Open Alerts` - View active device alerts
- `Get Resolved Alerts` - View resolved device alerts
- `Move Device` - Transfer device between sites
- `Create Quick Job` - Execute automation on device
- `Set Warranty` - Update warranty information
- `Set UDF Fields` - Configure user-defined fields
#### 3. **Site Resource**
Complete site administration and monitoring.
**Operations:**
- `Get` - Get site by UID
- `Get Many` - List all sites with filtering
- `Create` - Create new site
- `Update` - Modify existing site
- `Get Devices` - List site devices with filters
- `Get Open Alerts` - View site alerts
- `Get Resolved Alerts` - View resolved site alerts
- `Get Variables` - Retrieve site variables
- `Get Settings` - Get site configuration
- `Get Filters` - View site device filters
### ⏳ Planned Resources
- Alert Resource (resolve alerts, advanced filtering)
- Job Resource (job results, automation monitoring)
- Audit Resource (compliance, software inventory)
- System Resource (API health, rate limits)
- Filter Resource (advanced device queries)
## 🎯 Quick Start Guide
### Basic Workflow: Get Account Information
1. **Add Datto RMM Node**
- Drag "Datto RMM" node into workflow
- Connect to trigger (Manual, Schedule, etc.)
2. **Configure Node**
```
Resource: Account
Operation: Get
Credential: [Select your Datto RMM credential]
```
3. **Execute Workflow**
- Click Execute to test
- View account data in output
### Basic Workflow: List All Sites
1. **Add Datto RMM Node**
2. **Configure Node**
```
Resource: Site
Operation: Get Many
Page: 1
Max Results: 100
```
3. **Execute and Review**
- Returns paginated list of all sites
- Each site includes device counts and status
## 📖 Workflow Examples
### Example 1: Device Health Dashboard
**Goal:** Monitor all devices with open alerts across all sites
**Workflow Steps:**
1. **Manual Trigger** → Start workflow
2. **Datto RMM (Get Sites)** → List all sites
```
Resource: Site
Operation: Get Many
Max Results: 100
```
3. **Split In Batches** → Process sites individually
4. **Datto RMM (Get Site Alerts)** → Get alerts per site
```
Resource: Site
Operation: Get Open Alerts
Site UID: {{ $json.uid }}
```
5. **Filter (Has Alerts)** → Only sites with alerts
6. **Slack/Email** → Send notifications
### Example 2: Automated Device Onboarding
**Goal:** Automatically organize new devices into appropriate sites
**Workflow Steps:**
1. **Webhook Trigger** → Receive device MAC address
2. **Datto RMM (Find Device)** → Locate device
```
Resource: Device
Operation: Get by MAC Address
MAC Address: {{ $json.macAddress }}
```
3. **Datto RMM (Move Device)** → Assign to correct site
```
Resource: Device
Operation: Move Device
Device UID: {{ $json.uid }}
Target Site UID: {{ $json.targetSiteUid }}
```
4. **Datto RMM (Set UDF Fields)** → Apply custom fields
```
Resource: Device
Operation: Set UDF Fields
Device UID: {{ $json.uid }}
UDF Fields: [Configure as needed]
```
### Example 3: Bulk Device Management
**Goal:** Run maintenance tasks across multiple devices
**Workflow Steps:**
1. **Schedule Trigger** → Daily at 2 AM
2. **Datto RMM (Get Site Devices)** → Get target devices
```
Resource: Site
Operation: Get Devices
Site UID: {{ $json.maintenanceSiteUid }}
Operating System: Windows
```
3. **Filter (Online Devices)** → Only available devices
4. **Split In Batches** → Process devices in groups
5. **Datto RMM (Create Quick Job)** → Run maintenance
```
Resource: Device
Operation: Create Quick Job
Device UID: {{ $json.uid }}
Job Name: "Nightly Maintenance"
Component UID: {{ $json.maintenanceComponentUid }}
```
### Example 4: Alert Escalation Workflow
**Goal:** Automatically escalate high-priority alerts
**Workflow Steps:**
1. **Schedule Trigger** → Every 15 minutes
2. **Datto RMM (Get Account Alerts)** → Get all open alerts
```
Resource: Account
Operation: Get Open Alerts
Max Results: 50
```
3. **Filter (High Priority)** → Critical alerts only
4. **Datto RMM (Get Device Details)** → Get device info
```
Resource: Device
Operation: Get
Device UID: {{ $json.deviceUid }}
```
5. **ServiceNow/Jira** → Create tickets
6. **Slack** → Notify team
## 🔧 API Reference
### Common Parameters
#### Pagination Parameters
Most list operations support pagination:
```
Page: 1 (1-based page number)
Max Results: 100 (maximum items per page)
```
#### Filter Parameters
Many operations support filtering:
```
Site Name: "Production" (partial match allowed)
Hostname: "web-server" (partial match allowed)
Device Type: "Workstation"
Operating System: "Windows"
```
#### Resource Mapper
All operations support dynamic field selection:
- Use "Fields to Return" to choose specific data
- Improves performance by limiting response size
- Customize output for specific workflow needs
### Error Handling
The node includes comprehensive error handling:
- **Individual Item Errors**: When "Continue on Fail" is enabled
- **Authentication Errors**: Clear OAuth2 error messages
- **Rate Limiting**: Automatic handling of API limits
- **Network Issues**: Retry logic for transient failures
### Response Format
All operations return data in consistent format:
```json
{
"json": {
// Datto RMM API response data
},
"pairedItem": {
"item": 0
}
}
```
## 🔍 Advanced Usage
### Using Resource Mapper
The Resource Mapper allows dynamic field selection:
1. **Enable Resource Mapper**
- Available on all operations
- Located in "Fields to Return" section
2. **Configure Fields**
- Select specific fields to include
- Improves performance
- Reduces data transfer
3. **Example Configuration**
```
Fields to Return:
✓ ID
✓ Name
✓ Status
✗ Description (unchecked to exclude)
```
### Batch Processing
For large datasets, use batch processing:
1. **Split In Batches Node**
- Process 10-50 items at a time
- Prevents API rate limiting
- Improves reliability
2. **Configuration Example**
```
Batch Size: 25
Options: Keep Input Data
```
### Custom Variables
Leverage Datto RMM variables in workflows:
1. **Get Account Variables**
```
Resource: Account
Operation: Get Variables
```
2. **Get Site Variables**
```
Resource: Site
Operation: Get Variables
Site UID: {{ $json.siteUid }}
```
3. **Use in Automation**
- Reference variables in job parameters
- Dynamic configuration based on site/account settings
## 🚨 Troubleshooting
### Common Issues
#### Authentication Errors (401)
```
Error: Request failed with status code 401
```
**Solutions:**
1. Verify API credentials in n8n
2. Check API URL format (include https://)
3. Ensure API keys have proper permissions
4. Test credentials using "Test" button
#### Rate Limiting (429)
```
Error: Request failed with status code 429
```
**Solutions:**
1. Reduce batch sizes
2. Add delays between operations
3. Use pagination for large datasets
4. Check account API limits
#### Device Not Found (404)
```
Error: Device was not found
```
**Solutions:**
1. Verify device UID/ID/MAC address
2. Check device exists in Datto RMM
3. Ensure proper permissions for device access
#### Site Access Issues (403)
```
Error: Authenticated user doesn't have access to this resource
```
**Solutions:**
1. Verify site UID is correct
2. Check user permissions in Datto RMM
3. Ensure API credentials have site access
### Debug Mode
Enable debug logging for troubleshooting:
1. **Environment Variable**
```bash
N8N_LOG_LEVEL=debug
```
2. **Check Logs**
- Review n8n logs for detailed API calls
- Examine request/response data
- Identify specific error points
### Best Practices
#### Performance Optimization
1. **Use Resource Mapper** - Select only needed fields
2. **Implement Pagination** - For large datasets
3. **Batch Processing** - Group operations efficiently
4. **Cache Results** - Store frequently accessed data
#### Error Handling
1. **Enable Continue on Fail** - For bulk operations
2. **Add Error Workflows** - Handle failures gracefully
3. **Implement Retries** - For transient network issues
4. **Log Errors** - Track failures for debugging
#### Security
1. **Secure Credentials** - Use n8n credential system
2. **Limit API Scope** - Create dedicated API keys
3. **Regular Rotation** - Update API keys periodically
4. **Monitor Usage** - Track API consumption
## 🤝 Contributing
We welcome contributions! Please see our contributing guidelines for:
- Bug reports
- Feature requests
- Code contributions
- Documentation improvements
## 📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
## 🆘 Support
For support and questions:
- GitHub Issues: [Report bugs or request features]
- Documentation: [This README and API docs]
- Community: [n8n Community Forum]
---
**Version:** 0.4.3+
**Compatibility:** n8n v0.190.0+
**API Version:** Datto RMM API v2