Skip to main content

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)

SettingDescriptionRecommended Value
Helpdesk NameDisplayed in emails and portal headerRhino Group Support
Default EmailSystem sender address[email protected]
Base URLPublic-facing URLhttps://tickets.rhinogroup.com/
Helpdesk StatusOnline/Offline toggleOnline
Max Open TicketsPer-user ticket limit (0 = unlimited)0
Default Time ZoneSystem time zoneAmerica/Chicago (CST)
Date/Time FormatDisplay formatm/d/Y g:i A

Ticket Settings (Admin → Settings → Tickets)

SettingDescription
Default SLAApplied when no department SLA matches
Default PriorityPriority for tickets without explicit priority
Default StatusInitial status for new tickets
Auto-AssignmentEnable/disable round-robin assignment
Ticket Number FormatPattern for display numbers (e.g., ######)
Max File SizeAttachment upload limit
Allowed File TypesPermitted file extensions
Auto-Close SettingsDays before auto-close triggers

Alert Settings (Admin → Settings → Alerts & Notices)

Controls which system events generate email notifications:

Alert TypeRecipientsPurpose
New TicketDepartment membersNotify when ticket created
New MessageAssigned staffClient replied
New NoteDepartment membersInternal note posted
AssignmentAssigned staffTicket assigned to you
TransferDepartment membersTicket transferred
OverdueAssigned staff + ManagerSLA breached

Custom Configurations

AI Settings (Admin → Settings → AI Assistant)

SettingPurposeNotes
Gemini API KeyShared authentication key for urgency + chatbot + note optimizationRequired for all AI features
Generative ModelPrimary model for chat and urgency analysise.g. gemini-2.5-flash
Embedding ModelModel for vector generatione.g. gemini-embedding-001
Pinecone API KeyVector database authenticationRequired for AI Assistant
Pinecone HostPinecone index host URLSet during Pinecone setup
Enabled SourcesJSON array of source types to query["ticket","site","wiki","docs","gsm"]
Max Context TicketsTotal Pinecone results included as contextDefault: 10
Max Tickets Per RunQueue processing throttleDefault: 2
Urgency CriteriaEditable prompt criteria for urgency analysisIncludes "Reset to Default" button
Chatbot NameDisplay name for the AI assistantDefault: "the Rhino"
Enable AI ProcessingToggle AI urgency analysistrue for production
Enable AI AssistantToggle chatbot featuretrue for production

Twilio SMS Settings (Admin → Settings → Twilio SMS)

SettingPurpose
Account SIDTwilio account identifier
Auth TokenTwilio authentication token
From NumberSending phone number (Twilio)
Daily SMS LimitMaximum alerts per day
Test ModeLog-only mode (no actual SMS sent)
Status Callback URLDelivery webhook endpoint

Analytics Settings (Admin → Settings → Analytics)

SettingPurpose
Enable Scheduled ReportsToggle automated report emails
Report FrequencyDaily / Weekly / Monthly
Report RecipientsEmail addresses for scheduled reports
Default Date RangeDefault range for dashboard views
Export FormatCSV 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 settings
  • ai_assistant — AI Assistant & Gemini settings (shared API key)
  • gemini — Gemini queue processing settings
  • twilio — SMS settings
  • harvest_api — Harvest Direct Time Entry OAuth settings
  • notifications — Browser notification settings
  • analytics — Report settings

Security Settings

Authentication

SettingLocationPurpose
Password PolicyAdmin → Settings → AgentsMinimum length, complexity requirements
Session TimeoutAdmin → Settings → SystemIdle session expiry
Login AttemptsAdmin → Settings → AgentsLockout after failed attempts
CAPTCHAAdmin → Settings → UsersBot prevention on client forms

Access Control

FeatureDescription
Role-Based AccessStaff permissions defined by assigned roles
Department IsolationStaff only see tickets in their departments
IP RestrictionsLimit admin access by IP (via .htaccess)
API Key PermissionsPer-key access control for external API

Security Headers

The .htaccess file configures:

  • X-Content-Type-Options: nosniff
  • X-Frame-Options: SAMEORIGIN
  • X-XSS-Protection: 1; mode=block
  • Directory listing disabled
  • PHP file access restricted in upload directories

Maintenance Tasks

Regular Maintenance

TaskFrequencyHow
Clear session dataWeeklyAdmin → Manage → Logs → Purge
Review system logsDailyAdmin → Manage → Logs
Check email fetchingDailyAdmin → Emails → verify last fetch time
Verify cron statusDailyCheck last cron run timestamp
Review API key accessMonthlyAdmin → Manage → API Keys
Rotate OAuth secretsBefore expiryAzure AD → Certificates & secrets
Backup databaseDaily (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