Overview
ITSM-NG is built on a modular, multi-tier architecture that separates concerns between presentation, business logic, and data persistence. The system follows object-oriented design principles with a class-based structure inherited from GLPI.Core Architecture Layers
1. Presentation Layer
The presentation layer handles user interactions through multiple interfaces:- Standard Interface (Central): Full-featured interface for administrators and technicians
- Simplified Interface (Helpdesk): Streamlined interface for end users
- API Layer (REST): Programmatic access for integrations
2. Business Logic Layer
The business logic is organized around core object types that inherit fromCommonDBTM (Common Database Table Manager):
- Assets: Computer, Monitor, Printer, Phone, NetworkEquipment, etc.
- ITIL Objects: Ticket, Problem, Change
- Management: Contract, Budget, License, Certificate
- Administration: User, Entity, Profile, Group
3. Data Access Layer
Database Abstraction:- Uses DBmysql class for database operations
- Query builder pattern for complex queries
- Support for MySQL/MariaDB
Component Architecture
Entity System (inc/entity.class.php:40-500)
Entities form a hierarchical tree structure:
- Hierarchical tree (root entity + sub-entities)
- Recursive rights inheritance
- Entity-specific configuration (notifications, helpdesk, assets)
- Geographic location support
Profile System (inc/profile.class.php:40-100)
- Standard Interface Profiles: Full system access with granular rights
- Helpdesk Interface Profiles: Limited to ITIL and support features
Authentication System (inc/auth.class.php:40-100)
Request Processing Flow
Web Request Flow
-
Entry Point (
index.php)- Load configuration
- Start session
- Check authentication
-
Session Initialization (
Session::init())- Validate user credentials
- Load user profile and rights
- Set active entity
-
Rights Verification
-
Page Rendering
- Load appropriate template
- Check item-specific rights
- Display interface
API Request Flow (apirest.php)
-
Authentication (
initSession)- Basic auth with credentials
- OR user token authentication
- Returns session token
-
Request Processing
- Validate session token
- Check app token (if configured)
- Verify entity and profile rights
-
Response
- JSON formatted data
- HTTP status codes
- HATEOAS links
Security Architecture
Rights System
Hierarchical Rights:Data Isolation
- Entity-based: Data segregated by entity membership
- Profile-based: Feature access controlled by profile
- Recursive mode: Sub-entity visibility control
Scalability Considerations
Performance Features
- Caching: PSR-6 compatible cache system
- LDAP Pagination: Configurable page size for large directories
- Database Indexes: Optimized queries on key fields
- Session Locking: Read-only sessions for API parallel requests
Multi-tenant Support
- Entity isolation for complete data separation
- Shared or isolated authentication sources per entity
- Entity-specific configuration and branding
Extension Points
Plugin System
Custom Fields
- Additional fields via plugins
- Custom dropdown values
- Extended object relationships
Configuration Storage
Database Tables
glpi_configs: Global configurationglpi_entities: Entity hierarchy and settingsglpi_profiles: Profile definitionsglpi_profilerights: Profile-specific rightsglpi_authldaps: LDAP server configurationsglpi_oidc_config: OIDC provider settings
File-based Configuration
config/config_db.php: Database connectionconfig/local_define.php: Custom constants.htaccess: Web server rules
The architecture is designed for flexibility and extensibility while maintaining security through its layered rights system.