Troubleshooting Guide
Overview
This guide provides solutions to common issues encountered when deploying and operating the HaloPSA CRM Custom Integration.
Quick Diagnostics
Run System Diagnostics
npm run diagnose
This command will check:
- Configuration validity
- Service connectivity
- Database connections
- External API access
- Custom field setup
Check Service Health
curl https://your-domain.com/health
Expected response:
{
"status": "healthy",
"version": "1.0.0",
"services": {
"halopsa": "connected",
"apollo": "connected",
"database": "connected"
}
}
Common Issues and Solutions
1. Connection Issues
HaloPSA Connection Failed
Symptoms:
- “Connection refused” errors
- Authentication failures
- Timeout errors
Solutions:
- Verify HaloPSA instance URL:
curl -I https://your-instance.halopsa.com - Check credentials:
npm run test:halopsa-auth -
Verify API permissions in HaloPSA admin panel
- Check firewall settings for outbound connections to HaloPSA
B2B Provider Connection Issues
Symptoms:
- API rate limit exceeded
- Invalid API key errors
- Service unavailable responses
Solutions:
- Verify API credentials in provider dashboard
- Check rate limiting:
npm run check:rate-limits - Review provider status pages for outages
- Adjust rate limiting configuration if needed
2. Data Synchronization Issues
Leads Not Appearing in HaloPSA
Symptoms:
- Sync operations complete but no data in HaloPSA
- “Validation failed” errors
Solutions:
- Check custom field setup:
npm run validate:custom-fields -
Verify data mapping configuration
-
Check for duplicate prevention rules
- Review sync logs:
tail -f logs/sync.log | grep ERROR
Duplicate Lead Creation
Symptoms:
- Multiple entries for same contact
- Deduplication not working
Solutions:
- Review deduplication configuration
- Check matching rules in config
- Verify email normalization
- Update conflict resolution strategy
3. Webhook Issues
Webhook Signatures Invalid
Symptoms:
- Webhook events rejected
- Signature verification failures
Solutions:
- Verify webhook secrets match between provider and config
- Check timestamp synchronization
- Ensure proper HMAC-SHA256 implementation
- Test webhook endpoint manually:
curl -X POST https://your-domain.com/webhooks/test \ -H "Content-Type: application/json" \ -H "X-Webhook-Signature: test_signature" \ -d '{"test": "data"}'
Webhook Events Not Processing
Symptoms:
- Webhooks received but not processed
- Queue backlog growing
Solutions:
- Check queue status:
npm run queue:status -
Verify webhook event handlers are registered
-
Check for processing errors in logs
- Monitor queue performance metrics
4. Performance Issues
Slow Response Times
Symptoms:
- API response times > 5 seconds
- High CPU/memory usage
Solutions:
- Enable caching:
{ "caching": { "enabled": true, "ttl": 3600 } } -
Optimize database queries
-
Implement connection pooling
- Add request batching for bulk operations
Memory Leaks
Symptoms:
- Gradual memory increase over time
- Out of memory errors
Solutions:
- Monitor memory usage:
npm run monitor:memory -
Check for unclosed database connections
-
Implement proper error handling
- Add garbage collection monitoring
5. Configuration Issues
Invalid Configuration
Symptoms:
- Service fails to start
- Configuration validation errors
Solutions:
- Validate configuration:
npm run validate:config -
Check for syntax errors in JSON files
-
Verify environment variables are set
- Compare with example configurations
Environment Variable Issues
Symptoms:
- Service starts but features don’t work
- “Undefined variable” errors
Solutions:
- List all environment variables:
env | grep HALOPSA -
Check .env file syntax
-
Verify variable loading order
- Use configuration debugging:
DEBUG=config:* npm start
6. Database Issues
Connection Pool Exhausted
Symptoms:
- “Pool exhausted” errors
- Database connection timeouts
Solutions:
-
Increase pool size in configuration
-
Implement connection retry logic
-
Check for connection leaks
-
Monitor database performance
Migration Failures
Symptoms:
- Database schema errors
- Migration script failures
Solutions:
-
Check database permissions
-
Verify migration order
-
Backup before migrations
-
Rollback failed migrations:
npm run migrate:rollback
7. Security Issues
Authentication Failures
Symptoms:
- 401 Unauthorized errors
- Token expiration issues
Solutions:
-
Verify token format and validity
-
Check token refresh logic
-
Update authentication configuration
-
Implement proper token storage
Data Exposure
Symptoms:
- Sensitive data in logs
- Unencrypted data transmission
Solutions:
-
Enable data encryption
-
Configure secure logging
-
Use HTTPS for all communications
-
Implement data masking
Advanced Troubleshooting
Log Analysis
Enable Debug Logging
export LOG_LEVEL=debug
npm start
Search Logs for Patterns
# Find all errors in last hour
grep "ERROR" logs/app.log | grep "$(date -d '1 hour ago' '+%Y-%m-%d %H')"
# Find specific error patterns
grep "rate.limit.exceeded" logs/app.log
# Count errors by type
grep "ERROR" logs/app.log | sed 's/.*ERROR //' | sort | uniq -c | sort -nr
Performance Profiling
CPU Profiling
npm run profile:cpu
Memory Profiling
npm run profile:memory
Database Query Analysis
npm run analyze:queries
Network Diagnostics
Test External Connectivity
# Test HaloPSA connectivity
curl -v https://your-instance.halopsa.com/api/v1/me
# Test provider APIs
curl -H "Authorization: Bearer $APOLLO_API_KEY" https://api.apollo.io/v1/auth/health
Check DNS Resolution
nslookup your-instance.halopsa.com
dig api.apollo.io
Network Latency Testing
ping your-instance.halopsa.com
traceroute your-instance.halopsa.com
Database Diagnostics
Check Connection Health
npm run db:health
Analyze Slow Queries
-- Enable query logging
SET log_statement = 'all';
SET log_duration = 'on';
-- Find slow queries
SELECT * FROM pg_stat_activity
WHERE state = 'active' AND now() - query_start > interval '1 second';
Check Table Statistics
ANALYZE VERBOSE;
SELECT schemaname, tablename, n_tup_ins, n_tup_upd, n_tup_del
FROM pg_stat_user_tables;
Monitoring and Alerting
Set Up Monitoring
{
"monitoring": {
"alerts": {
"error_rate_threshold": 0.05,
"response_time_threshold": 5000,
"queue_backlog_threshold": 100
}
}
}
Key Metrics to Monitor
- Error rates by endpoint
- Response time percentiles
- Queue depth and processing rates
- Database connection pool usage
- External API rate limit usage
- Memory and CPU usage
Alert Conditions
- Error rate > 5% for 5 minutes
- Response time > 5 seconds for 1 minute
- Queue backlog > 1000 items
- Database connections > 90% of pool
- Memory usage > 85%
Emergency Procedures
Service Unavailable
- Check service status:
systemctl status halopsa-integration - Restart service:
systemctl restart halopsa-integration -
Check logs for startup errors
- Verify dependencies are running
Data Corruption
-
Stop all sync operations
-
Create database backup
- Run data integrity checks:
npm run check:data-integrity -
Restore from backup if needed
- Resume operations with reduced concurrency
Security Incident
-
Rotate all API keys and secrets
-
Review access logs for suspicious activity
-
Update security configurations
-
Notify affected parties
-
Conduct post-incident review
Support Resources
Internal Resources
External Resources
- HaloPSA API Documentation
- B2B Provider API Documentation
- Node.js Troubleshooting Guide
- PostgreSQL Performance Tuning
Getting Help
- Check existing issues in the repository
- Review documentation for your specific issue
- Create a detailed bug report with:
- Error messages and stack traces
- Configuration (redacted)
- Steps to reproduce
- Environment details
- Log excerpts
Prevention Best Practices
Regular Maintenance
- Weekly configuration backups
- Monthly dependency updates
- Quarterly security audits
- Daily log rotation
Monitoring Setup
- Implement comprehensive alerting
- Set up automated health checks
- Monitor key performance indicators
- Regular capacity planning
Documentation Updates
- Keep runbooks current
- Document all configuration changes
- Maintain incident response procedures
- Update troubleshooting guides based on new issues