Add comprehensive admin features and multi-system integration
- Add admin dashboard with sync controls and data browser - Implement RMM, Auvik, and Addigy organization mappings - Add chunked ticket sync with progress tracking - Implement entity sync service with rate limiting - Add analytics engine and performance optimizer - Create data browser for all PSA entities - Add navigation components and UI improvements - Implement background processing and sync services - Add comprehensive documentation and migration scripts - Update configuration items with multi-system support - Enhance contact management and purchase history - Add issue type assignment and LLM analyzer - Improve error handling and logging utilities
This commit is contained in:
parent
e8462ef301
commit
6eee14f8af
171 changed files with 32671 additions and 621 deletions
196
docs/AUVIK_TESTING_GUIDE.md
Normal file
196
docs/AUVIK_TESTING_GUIDE.md
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
# Auvik Integration Testing Guide
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Step 1: Map Auvik Tenants
|
||||
1. Navigate to: `https://pulse.wulfconsulting.cloud/auvik-mappings`
|
||||
2. You'll see all Auvik tenants (17 total based on logs)
|
||||
3. For each tenant you want to use, select the matching Autotask company from the dropdown
|
||||
4. Click "Save"
|
||||
|
||||
### Step 2: Verify Mapping
|
||||
- Status badge should change from orange "Unmapped" to green "Mapped"
|
||||
- Stats at the top should update
|
||||
|
||||
### Step 3: View Auvik Data
|
||||
1. Go to: `https://pulse.wulfconsulting.cloud/configuration-items`
|
||||
2. Select a company that you just mapped
|
||||
3. You should now see:
|
||||
- ✅ Checkmarks in the "Auvik" column for matched devices
|
||||
- Auvik tab in the device detail modal with full device information
|
||||
|
||||
## How the Matching Works
|
||||
|
||||
### Priority Order:
|
||||
1. **Database Mapping** (NEW) - Uses explicit tenant-to-company mappings
|
||||
- Most accurate
|
||||
- User-controlled
|
||||
- Recommended approach
|
||||
|
||||
2. **Fuzzy Name Matching** (Fallback) - Automatic matching by name similarity
|
||||
- Less reliable
|
||||
- Used when no mapping exists
|
||||
- May miss matches if names differ
|
||||
|
||||
### Matching Flow:
|
||||
```
|
||||
User selects company →
|
||||
Check database for mapping →
|
||||
If found: Use mapped tenant → Fetch devices → Match by serial/hostname/MAC
|
||||
If not found: Try fuzzy name match → Fetch devices → Match by serial/hostname/MAC
|
||||
```
|
||||
|
||||
## Example Test Case
|
||||
|
||||
### Test with "Wulf Consulting"
|
||||
|
||||
1. **Map the tenant:**
|
||||
- Go to `/auvik-mappings`
|
||||
- Find tenant "wulfconsulting"
|
||||
- Select "Wulf Consulting" from company dropdown
|
||||
- Click Save
|
||||
|
||||
2. **View devices:**
|
||||
- Go to `/configuration-items`
|
||||
- Select "Wulf Consulting" from company dropdown
|
||||
- Look for devices with Auvik checkmarks
|
||||
|
||||
3. **View details:**
|
||||
- Click on a device with an Auvik checkmark
|
||||
- Click the "Auvik Data" tab
|
||||
- You should see:
|
||||
- Device name
|
||||
- Serial number
|
||||
- Online/offline status
|
||||
- IP addresses
|
||||
- MAC addresses
|
||||
- Network interfaces
|
||||
- Firmware version
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### No Auvik Data Showing
|
||||
|
||||
**Check 1: Is the tenant mapped?**
|
||||
```bash
|
||||
docker exec pulse-postgres psql -U pulse_user -d pulse_autotask -c "SELECT * FROM auvik_tenant_mappings;"
|
||||
```
|
||||
|
||||
**Check 2: Are devices being fetched?**
|
||||
```bash
|
||||
docker logs pulse-app --tail 100 | grep -i auvik
|
||||
```
|
||||
|
||||
You should see:
|
||||
- "Found Auvik tenant via mapping: [tenant] for company ID: [id]"
|
||||
- "Fetched X Auvik devices"
|
||||
- "Matched Auvik device by [serial/hostname/MAC]"
|
||||
|
||||
**Check 3: Test the API directly**
|
||||
```bash
|
||||
# Test tenant mappings endpoint
|
||||
curl http://localhost:3100/api/auvik/tenant-mappings
|
||||
|
||||
# Test devices endpoint (replace with your company ID)
|
||||
curl "http://localhost:3100/api/rmm-devices?companyId=29682574&companyName=Wulf%20Consulting"
|
||||
```
|
||||
|
||||
### Mapping Not Saving
|
||||
|
||||
**Check database connection:**
|
||||
```bash
|
||||
docker exec pulse-postgres psql -U pulse_user -d pulse_autotask -c "SELECT version();"
|
||||
```
|
||||
|
||||
**Check API logs:**
|
||||
```bash
|
||||
docker logs pulse-app --tail 50
|
||||
```
|
||||
|
||||
### Devices Not Matching
|
||||
|
||||
**Check matching logic:**
|
||||
The system matches devices in this priority:
|
||||
1. Serial number (exact match)
|
||||
2. Hostname (exact match)
|
||||
3. MAC address (normalized)
|
||||
|
||||
**View matching logs:**
|
||||
```bash
|
||||
docker logs pulse-app --tail 200 | grep -E "(Matched|No match)"
|
||||
```
|
||||
|
||||
## Expected Behavior
|
||||
|
||||
### When Mapping Exists:
|
||||
```
|
||||
✅ Fast lookup (database query)
|
||||
✅ Accurate tenant selection
|
||||
✅ Consistent results
|
||||
✅ User-controlled
|
||||
```
|
||||
|
||||
### When No Mapping:
|
||||
```
|
||||
⚠️ Slower (fuzzy matching)
|
||||
⚠️ May miss matches
|
||||
⚠️ Depends on name similarity
|
||||
⚠️ Automatic (no control)
|
||||
```
|
||||
|
||||
## Recommended Workflow
|
||||
|
||||
1. **Initial Setup:**
|
||||
- Map all active Auvik tenants to their corresponding companies
|
||||
- Test with 2-3 companies to verify
|
||||
|
||||
2. **Ongoing:**
|
||||
- When adding a new company to Auvik, add the mapping
|
||||
- Review unmapped tenants monthly
|
||||
|
||||
3. **Maintenance:**
|
||||
- Check logs for "No mapping found" messages
|
||||
- Add mappings as needed
|
||||
|
||||
## API Endpoints Reference
|
||||
|
||||
### GET `/api/auvik/tenant-mappings`
|
||||
Fetch all mappings
|
||||
- Query: `?includeUnmapped=true` - includes unmapped tenants
|
||||
|
||||
### POST `/api/auvik/tenant-mappings`
|
||||
Create/update mapping
|
||||
```json
|
||||
{
|
||||
"auvikTenantId": "123abc",
|
||||
"auvikTenantName": "wulfconsulting",
|
||||
"autotaskCompanyId": 29682574,
|
||||
"autotaskCompanyName": "Wulf Consulting"
|
||||
}
|
||||
```
|
||||
|
||||
### DELETE `/api/auvik/tenant-mappings?id={id}`
|
||||
Remove mapping
|
||||
|
||||
### GET `/api/rmm-devices?companyId={id}&companyName={name}`
|
||||
Fetch devices (includes Auvik)
|
||||
- Now uses mapping first, then falls back to name matching
|
||||
|
||||
### GET `/api/configuration-items/{id}?type=autotask`
|
||||
Fetch device details (includes Auvik)
|
||||
- Now uses mapping first, then falls back to name matching
|
||||
|
||||
## Success Metrics
|
||||
|
||||
After mapping tenants, you should see:
|
||||
- ✅ Green checkmarks in Auvik column
|
||||
- ✅ "Auvik Data" tab populated in device modals
|
||||
- ✅ Logs showing "Found tenant via mapping"
|
||||
- ✅ Device counts matching between Auvik and Autotask
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Map all 17 Auvik tenants to their companies
|
||||
2. Verify device data appears correctly
|
||||
3. Report any issues with matching logic
|
||||
4. Consider adding more matching fields if needed (IP address, etc.)
|
||||
Loading…
Add table
Add a link
Reference in a new issue