System Settings & Configuration
This guide covers the administration of the ticket system, including core settings, custom configurations, and security settings accessible from the Admin panel.
Accessing Admin Settings
Navigate to https://tickets.rhinogroup.com/scp/ and log in with an administrator account. The admin panel is accessible via Admin Panel link in the top navigation.
Core osTicket Settings
System Settings (Admin → Settings → System)
| Setting | Description | Recommended Value |
|---|---|---|
| Helpdesk Name | Displayed in emails and portal header | Rhino Group Support |
| Default Email | System sender address | [email protected] |
| Base URL | Public-facing URL | https://tickets.rhinogroup.com/ |
| Helpdesk Status | Online/Offline toggle | Online |
| Max Open Tickets | Per-user ticket limit (0 = unlimited) | 0 |
| Default Time Zone | System time zone | America/Chicago (CST) |
| Date/Time Format | Display format | m/d/Y g:i A |
Ticket Settings (Admin → Settings → Tickets)
| Setting | Description |
|---|---|
| Default SLA | Applied when no department SLA matches |
| Default Priority | Priority for tickets without explicit priority |
| Default Status | Initial status for new tickets |
| Auto-Assignment | Enable/disable round-robin assignment |
| Ticket Number Format | Pattern for display numbers (e.g., ######) |
| Max File Size | Attachment upload limit |
| Allowed File Types | Permitted file extensions |
| Auto-Close Settings | Days before auto-close triggers |
Alert Settings (Admin → Settings → Alerts & Notices)
Controls which system events generate email notifications:
| Alert Type | Recipients | Purpose |
|---|---|---|
| New Ticket | Department members | Notify when ticket created |
| New Message | Assigned staff | Client replied |
| New Note | Department members | Internal note posted |
| Assignment | Assigned staff | Ticket assigned to you |
| Transfer | Department members | Ticket transferred |
| Overdue | Assigned staff + Manager | SLA breached |
Custom Configurations
AI Settings (Admin → Settings → AI Assistant)
| Setting | Purpose | Notes |
|---|---|---|
| Gemini API Key | Shared authentication key for urgency + chatbot + note optimization | Required for all AI features |
| Generative Model | Primary model for chat and urgency analysis | e.g. gemini-2.5-flash |
| Embedding Model | Model for vector generation | e.g. gemini-embedding-001 |
| Pinecone API Key | Vector database authentication | Required for AI Assistant |
| Pinecone Host | Pinecone index host URL | Set during Pinecone setup |
| Enabled Sources | JSON array of source types to query | ["ticket","site","wiki","docs","gsm"] |
| Max Context Tickets | Total Pinecone results included as context | Default: 10 |
| Max Tickets Per Run | Queue processing throttle | Default: 2 |
| Urgency Criteria | Editable prompt criteria for urgency analysis | Includes "Reset to Default" button |
| Chatbot Name | Display name for the AI assistant | Default: "the Rhino" |
| Enable AI Processing | Toggle AI urgency analysis | true for production |
| Enable AI Assistant | Toggle chatbot feature | true for production |
Twilio SMS Settings (Admin → Settings → Twilio SMS)
| Setting | Purpose |
|---|---|
| Account SID | Twilio account identifier |
| Auth Token | Twilio authentication token |
| From Number | Sending phone number (Twilio) |
| Daily SMS Limit | Maximum alerts per day |
| Test Mode | Log-only mode (no actual SMS sent) |
| Status Callback URL | Delivery webhook endpoint |
Analytics Settings (Admin → Settings → Analytics)
| Setting | Purpose |
|---|---|
| Enable Scheduled Reports | Toggle automated report emails |
| Report Frequency | Daily / Weekly / Monthly |
| Report Recipients | Email addresses for scheduled reports |
| Default Date Range | Default range for dashboard views |
| Export Format | CSV or Excel |
Configuration Storage
System configuration is stored in the ost_config table as key-value pairs:
SELECT namespace, `key`, value
FROM ost_config
WHERE namespace = 'core'
ORDER BY `key`;
Custom settings added by Suma extensions use namespaces like:
core— osTicket core settingsai_assistant— AI Assistant & Gemini settings (shared API key)gemini— Gemini queue processing settingstwilio— SMS settingsharvest_api— Harvest Direct Time Entry OAuth settingsnotifications— Browser notification settingsanalytics— Report settings
Security Settings
Authentication
| Setting | Location | Purpose |
|---|---|---|
| Password Policy | Admin → Settings → Agents | Minimum length, complexity requirements |
| Session Timeout | Admin → Settings → System | Idle session expiry |
| Login Attempts | Admin → Settings → Agents | Lockout after failed attempts |
| CAPTCHA | Admin → Settings → Users | Bot prevention on client forms |
Access Control
| Feature | Description |
|---|---|
| Role-Based Access | Staff permissions defined by assigned roles |
| Department Isolation | Staff only see tickets in their departments |
| IP Restrictions | Limit admin access by IP (via .htaccess) |
| API Key Permissions | Per-key access control for external API |
Security Headers
The .htaccess file configures:
X-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-XSS-Protection: 1; mode=block- Directory listing disabled
- PHP file access restricted in upload directories
Maintenance Tasks
Regular Maintenance
| Task | Frequency | How |
|---|---|---|
| Clear session data | Weekly | Admin → Manage → Logs → Purge |
| Review system logs | Daily | Admin → Manage → Logs |
| Check email fetching | Daily | Admin → Emails → verify last fetch time |
| Verify cron status | Daily | Check last cron run timestamp |
| Review API key access | Monthly | Admin → Manage → API Keys |
| Rotate OAuth secrets | Before expiry | Azure AD → Certificates & secrets |
| Backup database | Daily (automated) | MySQL dump scheduled task |
System Health Checks
-- Check cron is running (last Gemini queue processing)
SELECT MAX(processed_at) FROM ost_gemini_queue WHERE processed = 1;
-- Check for stuck queue items
SELECT COUNT(*) FROM ost_gemini_queue WHERE processed = 0 AND created < NOW() - INTERVAL 1 HOUR;
-- Check active sessions
SELECT COUNT(*) FROM ost_session WHERE updated > NOW() - INTERVAL 30 MINUTE;
Environment-Specific Notes
Production
- URL:
https://tickets.rhinogroup.com - Email: Microsoft 365 OAuth (Graph API)
- AI: Gemini processing enabled
- SMS: Twilio active (Test Mode OFF)
- Search: Algolia index
rhinotickets_index_dev
Development
- URL:
http://ticket-manager.test(via Laravel Herd) - Email: Local or disabled
- AI: Can be enabled with test API key
- SMS: Test Mode ON (logs only, no sends)
- Search: Separate dev Algolia index or disabled