Architecture Overview

Directories
Files
Core Modules
Frontend Handle
Frontend Modules
CMD Frontend
Generic Interface Modules
Generic Interface Invoker Modules
Generic Interface Mapping Modules
Generic Interface Operation Modules
Generic Interface Transport Modules
Scheduler Task Handler Modules
Database

The OTRS framework is modular. The following picture shows the basic layer architecture of OTRS.

Introduced in OTRS 3.1, the OTRS Generic Interface continues OTRS modularity. The next picture shows the basic layer architecture of the Generic Interface.

Directories

DirectoryDescription
bin/commandline tools
bin/cgi-bin/web handle
bin/fcgi-bin/fast cgi web handle
Kernelapplication codebase
Kernel/Config/configuration files
Kernel/Config/Filesconfiguration files
Kernel/GenericInterface/the Generic Interface API
Kernel/GenericInterface/Invoker/invoker modules for Generic Interface
Kernel/GenericInterface/Mapping/mapping modules for Generic Interface, e.g. Simple
Kernel/GenericInterface/Operation/operation modules for Generic Interface
Kernel/GenericInterface/Transport/transport modules for Generic Interface, e.g. "HTTP SOAP"
Kernel/Languagelanguage translation files
Kernel/Scheduler/Scheduler files
Kernel/Scheduler/TaskHandlerhandler modules for scheduler tasks, e.g. GenericInterface
Kernel/System/core modules, e.g. Log, Ticket...
Kernel/Modules/frontend modules, e.g. QueueView...
Kernel/Output/HTML/html templates
var/variable data
var/loglogfiles
var/cron/cron files
var/httpd/htdocs/htdocs directory with index.html
var/httpd/htdocs/skins/Agent/available skins for the Agent interface
var/httpd/htdocs/skins/Customer/available skins for the Customer interface
var/httpd/htdocs/js/JavaScript files
scripts/misc files
scripts/test/unit test files
scripts/test/sample/unit test sample data files

Files

.pl = Perl

.pm = Perl Module

.dtl = Dynamic Template Language (html template files

.dist = Default templates of files

.yaml or .yml = YAML files, used for Web Service configuration

Core Modules

Core modules are located under $OTRS_HOME/Kernel/System/*. This layer is for the logical work. Core modules are used to handle system routines like "lock ticket" and "create ticket". A few main core modules are:

  • Kernel::System::Config (to access config options)

  • Kernel::System::Log (to log into OTRS log backend)

  • Kernel::System::DB (to access the database backend)

  • Kernel::System::Auth (to check user authentication)

  • Kernel::System::User (to manage users)

  • Kernel::System::Group (to manage groups)

  • Kernel::System::Email (for sending emails)

For more information, see: http://otrs.github.io/doc/

Frontend Handle

The interface between the browser, web server and the frontend modules. A frontend module can be used via the http-link.

http://localhost/otrs/index.pl?Action=Module

Frontend Modules

Frontend modules are located under "$OTRS_HOME/Kernel/Modules/*.pm". There are two public functions in there - "new()" and "run()" - which are accessed from the Frontend Handle (e.g. index.pl).

"new()" is used to create a frontend module object. The Frontend Handle provides the used frontend module with the basic framework objects. These are, for example: ParamObject (to get web form params), DBObject (to use existing database connections), LayoutObject (to use templates and other html layout functions), ConfigObject (to access config settings), LogObject (to use the framework log system), UserObject (to get the user functions from the current user), GroupObject (to get the group functions).

For more information on core modules see: http://otrs.github.io/doc/

CMD Frontend

The CMD (Command) Frontend is like the Web Frontend Handle and the Web Frontend Module in one (just without the LayoutObject) and uses the core modules for some actions in the system.

Generic Interface Modules

Generic Interface modules are located under $OTRS_HOME/Kernel/GenericInterface/*. Generic Interface modules are used to handle each part of an web service execution on the system. The main modules for the Generic Interface are:

  • Kernel::GenericInterface::Transport (to interact with remote systems)

  • Kernel::GenericInterface::Mapping (to transform data into a required format)

  • Kernel::GenericInterface::Requester (to use OTRS as a client for the web service)

  • Kernel::GenericInterface::Provider (to use OTRS as a server for web service)

  • Kernel::GenericInterface::Operation (to execute Provider actions)

  • Kernel::GenericInterface::Invoker (to execute Requester actions)

  • Kernel::GenericInterface::Debugger (to track web service communication, using log entries)

For more information, see: http://otrs.github.io/doc/

Generic Interface Invoker Modules

Generic Interface Invoker modules are located under $OTRS_HOME/Kernel/GenericInterface/Invoker/*. Each Invoker is contained in a folder called "Controller". This approach helps to define a name space not only for internal classes and methods but for filenames too. for example: $OTRS_HOME/Kernel/GenericInterface/Invoker/Test/ is the Controller for all Test-type invokers.

Generic Interface Invoker modules are used as a backend to create requests for Remote Systems to execute actions.

For more information, see: http://otrs.github.io/doc/

Generic Interface Mapping Modules

Generic Interface Mapping modules are located under $OTRS_HOME/Kernel/GenericInterface/Mapping/*. These modules are used to transform data (keys and values) from one format to another.

For more information, see: http://otrs.github.io/doc/

Generic Interface Operation Modules

Generic Interface Operation modules are located under $OTRS_HOME/Kernel/GenericInterface/Operation/*. Each Operation is contained in a folder called "Controller". This approach help to define a name space not only for internal classes and methods but for filenames too. for example: $OTRS_HOME/Kernel/GenericInterface/Operation/Ticket/ is the Controller for all Ticket-type operations.

Generic Interface operation modules are used as a backend to create perform actions requester by a remote system.

For more information, see: http://otrs.github.io/doc/

Generic Interface Transport Modules

Generic Interface Network Transport modules are located under $OTRS_HOME/Kernel/GenericInterface/Operation/*. Each transport module should be placed in a diretory named as the Network Protocol used. for example: The "HTTP SOAP" transport module, located in $OTRS_HOME/Kernel/GenericInterface/Transport /HTTP/SOAP.pm.

Generic Interface transport modules are used send data to, and recieve data from a Remote System.

For more information, see: http://otrs.github.io/doc/

Scheduler Task Handler Modules

Scheduler Task Handler modules are located under $OTRS_HOME/Kernel/Scheduler/TaskHandler/*. These modules are used to perform asynchronous tasks. For example, the GenericInterface task handler perform Generic Interface Requests to Remote Systems outside the apache process, this helps the system to be more responsive, preventing possible performance issues.

For more information, see: http://otrs.github.io/doc/

Database

The database interface supports different databases.

For the OTRS data model please refer to the files in your /doc directory. Alternatively you can look at the data model on github: https://github.com/OTRS/otrs/blob/master/doc/OTRSDatabaseDiagram.png .