<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<!-- $Id: book.xml,v 1.29.2.1 2007/10/24 18:06:20 cs Exp $ -->
<book lang="de">

<bookinfo>
<title>OTRS 2.1 - Admin-Handbuch</title>
<edition>Playa Esmeralda</edition>

<copyright>
<year>2003-2007</year>
<holder>OTRS AG</holder>
</copyright>

<date>2007-02-12</date>

<legalnotice>
<para>
Christian Schöpplein, Richard Kammermeyer, Stefan Rother, Thomas Raith,
Burchard Steinbild, Andre Mindermann, Martin Edenhofer, Christopher Kuhn
</para>

<para>
Dieses Werk ist geistiges Eigentum der OTRS AG.
Es darf als Ganzes oder in Auszügen kopiert werden, vorausgesetzt,
dieser Copyright-Vermerk befindet sich auf jeder Kopie.
</para>

<para>
UNIX ist ein eingetragenes Warenzeichen von X/Open Company Limited.
Linux ist ein eingetragenes Warenzeichen von Linus Torvalds.
MS-DOS, Windows, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP
und Windows 2003 sind eingetragene Warenzeichen der Microsoft Corporation.
Andere Warenzeichen oder registrierte Warenzeichen: SUSE und YaST von SUSE
GmbH, Red Hat und Fedora von Red Hat Inc., Debian von Software in the
Public Interest, Inc., Mandrake von MandrakeSoft, SA.
MySQL und das MySQL Logo sind eingetragene Warenzeichen von MySQL AB.
Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen.
Die Firma OTRS AG richtet sich im Wesentlichen
nach den Schreibweisen der Hersteller. Andere hier genannte Produkte
können Warenzeichen des jeweiligen Herstellers sein.
</para>
</legalnotice>

</bookinfo>

<!-- $Id: preface.xml,v 1.3 2006/01/09 21:37:53 cs Exp $ --><preface id="preface">
<title>Vorwort</title>

<para>
Das folgende Buch richtet sich besonders an OTRS Neulinge und
Administratoren des Open Ticket Request Systems. Beschrieben werden die Installation,
Konfiguration und Administration des Systems, die eigentliche
Benutzung von OTRS für Agenten oder Kunden-Benutzer wird weniger in diesem
Buch angesprochen.
</para>

<para>
Obwohl viele  Arbeitsstunden, einige Liter an Kaffee und so manche Pizza in
die Erstellung der folgenden Abschnitte investiert wurden, erhebt das Buch
keinen Anspruch auf Vollständigkeit. Mit Sicherheit haben sich Fehler
eingeschlichen, wurden manche Dinge umständlich erklärt oder sind einige
wichtige Dinge komplett vergessen worden. Mit Sicherheit werden auch manche
Kapitel noch mal überarbeitet bzw. neue Kapitel oder Abschnitte hinzugefügt
werden.
</para>

<para>
Da das Buch versucht, sich an den Bedürfnissen von OTRS Administratoren und OTRS
Neulingen zu orientieren und da die Qualität der folgenden Kapitel so hoch
wie möglich sein soll, sind wir auf Ihr Feedback angewiesen. Bitte
teilen Sie uns mit, wenn Sie Abschnitte in diesem Buch vermissen, wenn Dinge
für Sie unverständlich erklärt sind oder auch wenn Sie Rechtschreib-, Tipp
oder Grammatikfehler in diesem Buch entdecken. Jede Art von Rückmeldung ist
ausdrücklich erwünscht und sollte durch einen Eintrag auf

<ulink url="http://bugs.otrs.org">
<citetitle>http://bugs.otrs.org</citetitle>
</ulink>

an uns gerichtet werden, da sie so nicht verloren geht und direkt beim
zuständigen Ansprechpartner landet. Wir bedanken uns schon jetzt für
jede Art von Mithilfe!
</para>

</preface>
<!-- $Id: tts.xml,v 1.5 2006/10/18 12:55:19 cs Exp $ --><chapter id="tts">
<title>Allgemeines zu Trouble Ticket Systemen</title>

<abstract>
<para>
In diesem Abschnitt soll kurz die grundlegende Idee, die hinter
Trouble Tickets im Allgemeinen und Trouble Ticket Systemen im Speziellen steht,
erläutert werden. An einem kleinen Beispiel wird gezeigt,
wofür Trouble Ticket Systeme in der Praxis verwendet werden
können und wo die Vorteile dieser Systeme liegen.
</para>
</abstract>

<sect1 id="basic-tts-example">
<title>Was ist ein Trouble Ticket System, wann wird es benötigt?</title>

<para>
Das folgende Beispiel soll verdeutlichen, was ein Trouble Ticket System
ist und wie damit in der Praxis Zeit und Geld eingespart werden können.
</para>

<para>
Nehmen wir an, dass Max Mustermann Fabrikant ist und Videorekorder
produziert. Da die Programmierung der Videorekorder sehr
unübersichtlich und kompliziert ist, wenden sich die Kunden von
Herrn Mustermann gerne und häufig mit Supportanfragen per Mail an
ihn. An manchen Tagen kann Herr Mustermann der Mailflut kaum Herr
werden und so kommt es, dass seine Kunden sich einige Zeit gedulden
müssen, bis die Antwort mit der rettenden Lösung bei ihnen
eintrifft. Manchen Kunden dauert dies jedoch zu lange, eine weitere
E-Mail mit dem gleichen Inhalt wird an Herrn Mustermann geschickt. Die
E-Mails mit den Supportanfragen werden alle in eine INBOX
weitergeleitet, wie sie von fast allen E-Mailprogrammen
verwendet wird.
</para>

<para>
An manchen Tagen ist die Anfragewelle besonders groß und Herr
Mustermann sieht sich außerstande, alle Mails noch in einem
vertretbaren Zeitrahmen zu beantworten. Aus diesem Grund kommandiert er
seine Entwickler Meier und Schulze zur Bearbeitung der Supportanfragen
ab. Da von allen das gleiche System
benutzt wird, greifen alle auf die gleiche INBOX und daher auch auf die
gleichen Mails zu. Meier und Schulze haben jedoch keine Ahnung, dass
manch ein Kunde in seiner Not gleich zwei E-Mails verfasst und an Herrn
Mustermann geschickt hat. So kommt es vor, dass Meier die erste Mail
mit einem anderen Ratschlag beantwortet als Schulze der sich im selben
Moment der zweiten Nachricht des gleichen Kunden annimmt. Das Ergebnis
ist, dass der Kunde unterschiedliche Antworten bekommt. Darüber
hinaus hat Herr Mustermann keinen Einblick darüber, welcher
Mitarbeiter wann was welchem Kunden gesagt hat, welche Probleme
besonders häufig auftreten und wie groß sein gesamter
Aufwand für den Kundensupport ist.
</para>

<para>
Von einem Kollegen erfährt Herr Mustermann schließlich, dass
es Trouble Ticket Systeme gibt, die genau die Probleme lösen, die
Herr Mustermann mit dem Support für seine Kunden hat. Herr Mustermann
entscheidet sich für das offene
Trouble Ticket Request System OTRS und installiert dieses System auf
einem Rechner, der über einen Webserver sowohl für seine Mitarbeiter als
auch über das Internet erreichbar ist. Von nun an werden die Hilferufe der
Kunden nicht mehr länger an seine private INBOX, sondern direkt an
den Mail-Account für OTRS weitergeleitet. OTRS hat eine
Schnittstelle zur INBOX für die Supportanfragen, so dass alle
ankommenden E-Mails automatisch ins Trouble Ticket System eingespeist
werden. Unabhängig ob Herr Mustermann nun gerade anwesend ist oder
nicht, generiert OTRS eine automatische Antwort und teilt dem Kunden
mit, dass seine E-Mail angekommen ist und so schnell wie möglich
bearbeitet wird. Dabei wird eine eindeutige Trouble Ticket Nummer
vergeben. Der Kunde ist glücklich, dass sein Flehen schnell
erhört wurde und wartet gespannt auf eine Antwort. Sowohl Herr
Mustermann als auch die Entwickler Meier und Schulze können nun
über einen beliebigen Internetbrowser und die Weboberfläche
von OTRS auf die Supportanfragen zugreifen und diese einzeln
beantworten.
</para>

<para>
Stellen wir uns vor, dass Herr Schmidt eine Anfrage ans System gestellt
hat und Herr Meier diese kurz und knapp beantwortet. Herrn Schmidt
reicht diese Antwort jedoch nicht aus und so antwortet er auf die
Lösungsmail am folgenden Tag. Herr Meier ist jedoch gerade mit
anderen Dingen beschäftigt, so dass sich Herr Mustermann der Sache
annimmt. Über die History-Funktion von OTRS kann er jetzt auf alle
vergangenen E-Mails von Herrn Schmidt und Herrn Meier zugreifen, deren
Inhalt abfragen und eine ausführlichere Antwort versenden. Herr
Schmidt erhält nun die Lösung für sein
Problem, weiß aber nicht, dass diese von unterschiedlichen
Personen stammt.
</para>

<para>
Natürlich ist dies nur ein sehr kleiner Einblick in die
Funktionalitäten von Trouble Ticket Systemen. Da Herr Mustermann eine
kleine Firma führt, erhält er vielleicht nur wenige E-Mails mit
Supportanfragen pro Tag, die er vielleicht noch ganz überschaulich
mit seiner normalen Mailsoftware handhaben kann und somit kein
Trouble Ticket System braucht. Wenn aber der neue DVD-Rekorder in die Regale
kommt, werden es vielleicht schon 500 oder in ein paar Jahren schon 10.000
Nachrichten pro Tag sein. Spätestens dann rechnet sich der Einsatz von
Trouble Ticket Systemen wie OTRS.
</para>

<para>
Der Einsatz von Trouble Ticket Systemen kann also für solche
Umgebungen große Vorteile bringen, in denen viele Anfragen per E-Mail
oder Telefon anfallen und wo die Anfragen von verschiedenen Mitarbeitern
bearbeitet werden. Trouble Ticket Systeme helfen dabei, Supportaufgaben zu
strukturieren und zu beschleunigen, ebenfalls können Arbeitsabläufe
abgebildet werden. Durch Systeme wie OTRS lässt sich Arbeitszeit einsparen
bzw. effektiver nutzen und die Kommunikation zwischen Kunden und
Mitarbeitern wird transparenter. Sowohl das Unternehmen als auch die Kunden
profitieren also vom Einsatz eines Trouble Ticket Systems.
</para>
</sect1>

<sect1 id="what-is-a-tt">
<title>Was ist ein Trouble Ticket?</title>

<para>
Ein Trouble Ticket lässt sich im Wesentlichen mit einem
Krankenblatt eines Krankenhauspatienten vergleichen. Bei der erstmaligen
Einlieferung in das Krankenhaus wird das Krankenblatt im Zuge der
Anamnese neu angelegt. Jeder Arzt trägt nun seine Diagnose sowie
die verordnete Therapie und Medikation ein und dokumentiert deren
Erfolg. Das Krankenblatt gibt nun einen schnellen Überblick,
gewährleistet eine schnelle Einarbeitung und verhindert eine
Mehrfachdosierung von Medikamenten. Ist die Krankheit besiegt und der
Patient entlassen, wird das Krankenblatt archiviert.
</para>

<para>
Im OTRS werden Trouble Tickets, also die Krankenblätter aus dem
obigen Beispiel, als normale E-Mails behandelt und gespeichert. Schickt
z. B. ein Kunde eine Anfrage an das Trouble Ticket System, wird das
Krankenblatt eingerichtet, ein neues Ticket wird geöffnet. Die
Antwort eines Mitarbeiters auf die Anfrage kann als Eintrag eines
Arztes gesehen werden, eine erneute Antwort bzw.
Anfrage des Kundens auf das selbe Ticket als Veränderung oder
Erweiterung des Krankheitsbildes. Ein Ticket gilt als
erledigt bzw. geschlossen, wenn eine Antwort auf die Anfrage an den
Kunden zurückgesendet wurde oder das Ticket über das System als
geschlossen markiert wird. Antwortet ein Kunde auf ein bereits
geschlossenes Ticket, so wird es erneut geöffnet und die neuen
Informationen ergänzt. Um die Konsistenz der Daten sicherzustellen,
werden alle Tickets mit all ihren spezifischen Informationen archiviert
und verbleiben im System. Durch die Speicherung der Tickets als ganz
normale E-Mails ist es möglich, dass diese auch
E-Mail-Anhänge enthalten können. Zusätzlich zu den normalen
Informationen einer E-Mail lassen sich beliebige Notizen zu jedem
Ticket hinzufügen. Die Tickets selbst werden auf der Festplatte
bzw. in einer Datenbank archiviert, ebenso zusätzliche
Meta-Informationen des Tickets wie Notizen, an der Beantwortung des
Tickets beteiligte Mitarbeiter, Zeit und Datum der Bearbeitung,
Bearbeitungsdauer usw. Eine Sortierung oder eine Suche über den
Datenbestand wird mit Hilfe aller vorhandenen Informationen zu den
Tickets realisiert.
</para>
</sect1>

</chapter>
<!-- $Id: otrs.xml,v 1.10.2.1 2007/10/24 18:06:20 cs Exp $ --><chapter id="otrs">
<title>OTRS - Open Ticket Request System</title>

<abstract>
<para>
In diesem Abschnitt werden die Features des Open Ticket Request Systems
(OTRS) vorgestellt. Des Weiteren wird näher auf die Systemanforderungen von
OTRS eingegangen und erläutert, wie Kontakt zur OTRS-Community aufgenommen
werden kann bzw. wie kommerzieller Support erhältlich ist.
</para>
</abstract>

<sect1 id="otrs-basics">
<title>Allgemeines</title>

<para>
Das Open Ticket Request System (OTRS) ist eine Webapplikation, die
mit jedem HTML kompatiblen Browser benutzt werden kann. OTRS
verzichtet bewusst auf aktive Webkomponenten wie z. B. Javaskript,
JavaApplets und Flash. Dadurch wird es möglich, das System nicht nur
über einen PC, sondern auch von Mobiltelefonen und anderen Handcomputern,
welche HTML unterstützen, zu benutzen. Als Client kann jedes
Betriebssystem eingesetzt werden.
</para>

<para>
OTRS ist in mehrere Komponenten aufgeteilt. Als Basis wird ein
Framework benötigt, der alle grundlegenden Funktionen des
Systems und das Trouble Ticket System enthält. An zusätzlichen
Komponenten können ein Webmailer, ein Dateimanager, ein
Contentmanager, ein Kalender und ein Modul zur Ausgabe verschiedener
Systemstatus bequem über die Weboberfläche nachinstalliert werden.
</para>
</sect1>

<sect1 id="features-of-otrs">
<title>Features</title>

<para>
OTRS bietet viele verschiedene Features. Die folgende Aufzählung
gibt einen Überblick über die wichtigsten Eigenschaften und
Fähigkeiten des zentralen OTRS-Frameworks.
</para>

<itemizedlist>
  <title>Die Features von OTRS</title>
  <listitem>
    <para>
    Webinterface:
    </para>
    <itemizedlist>
      <listitem>
        <para>
        Leichte und intuitive Bedienung über einen HTML-Browser.
        </para>
      </listitem>
      <listitem>
        <para>
        Auf aktive Inhalte wie Flash oder Java-Applets wird in der
        Weboberfläche bewusst verzichtet. Das System kann somit
        mit nahezu allen Browsern benutzt werden, auch von Mobiltelefonen
        oder Handcomputern aus.
        </para>
      </listitem>
      <listitem>
        <para>
        Eine Weboberfläche zur Administration des Systems ist vorhanden.
        </para>
      </listitem>
      <listitem>
        <para>
        Ein Webinterface für die Mitarbeiter (Agenten) zur Bearbeitung
        von Kundenanfragen ist verfügbar.
        </para>
      </listitem>
      <listitem>
        <para>
        Eine Weboberfläche für Kunden, über die Nachrichten an
        zuständige Agenten geschickt werden können und der Status
        eigener Tickets abgerufen werden kann, ist vorhanden.
        </para>
      </listitem>
      <listitem>
        <para>
        Unterstützung für verschiedene Oberflächen-Layouts
        (themes).
        </para>
      </listitem>
      <listitem>
        <para>
        Unterstützung vieler Sprachen.
        </para>
      </listitem>
      <listitem>
        <para>
        Eigene Anpassungen der Ausgabe-Vorlagen sind möglich (dtl).
        </para>
      </listitem>
      <listitem>
        <para>
        Mehrfach-Anhänge sind über die Weboberfläche
        möglich.
        </para>
      </listitem>
    </itemizedlist>
  </listitem>
  <listitem>
    <para>
    E-Mail-Schnittstelle:
    </para>
    <itemizedlist>
      <listitem>
        <para>
        Unterstützung für E-Mail-Anhänge (MIME support).
        </para>
      </listitem>
      <listitem>
        <para>
        Automatische Umwandlung von HTML- in reine Text-Nachrichten
        (höhere Sicherheit vor schädlichen Inhalten und
        schneller durchsuchbar).
        </para>
      </listitem>
      <listitem>
        <para>
        Filterung von E-Mails über eigene X-Header-Einträge
        oder Mailadressen, z. B. für die Aussortierung von Spam.
        </para>
      </listitem>
      <listitem>
        <para>
        PGP-Support, Erstellung und Import eigener Zertifikate,
        verschlüsselter und signierter Mails, Anzeige von
        verschlüsselten und signierten Nachrichten.
        </para>
      </listitem>
      <listitem>
        <para>
        Unterstützung für die Verschlüsselung und Anzeige
        von SMIME-Nachrichten.
        </para>
      </listitem>
      <listitem>
        <para>
        Automatisierte Antworten (auto responder) für die
        Benachrichtigung von Kunden, abhängig von der Queue
        konfigurierbar.
        </para>
      </listitem>
      <listitem>
        <para>
        E-Mail-Benachrichtigungen für Agenten über neue
        Tickets, Follow-ups oder freigegebene Tickets.
        </para>
      </listitem>
      <listitem>
        <para>
        Follow-Ups an Hand von Reference- oder In-Reply-To-Headern,
        automatisierte Zuordnung von Follow-Ups über den Ticket-Bezeichner
        im Betreff, Mailbody oder in Text-Anhängen.
        </para>
      </listitem>
    </itemizedlist>
  </listitem>
  <listitem>
    <para>
    Tickets:
    </para>
    <itemizedlist>
      <listitem>
        <para>
        Erweiterte Queue-Ansicht, Übersicht über alle Anfragen
        innerhalb einer Queue.
        </para>
      </listitem>
      <listitem>
        <para>
        Sperren von Tickets.
        </para>
      </listitem>
      <listitem>
        <para>
        Überwachen der Aktivitäten rund um ein Ticket mit Hilfe des
        TicketWatcher-Features.
        </para>
      </listitem>
      <listitem>
        <para>
        Festlegen eines Ticket-Verantwortlichen mit Hilfe des
        TicketResponsible-Features.
        </para>
      </listitem>
      <listitem>
        <para>
        Erstellung eigener Antwortvorlagen.
        </para>
      </listitem>
      <listitem>
        <para>
        Erstellung eigener auto responder, abhängig von der Queue.
        </para>
      </listitem>
      <listitem>
        <para>
        Ticket-History, Übersicht über die komplette
        Entwicklung eines Tickets, Änderungen der Ticketstatus,
        Übersicht über die verschidenen Aktionen für ein
        Ticket usw.
        </para>
      </listitem>
      <listitem>
        <para>
        Druckansicht für Tickets, Export als PDF möglich.
        </para>
      </listitem>
      <listitem>
        <para>
        Hinzufügen eigener (interner oder externer) Notizen zu einem Ticket
        (eigener Text und Dateianhänge).
        </para>
      </listitem>
      <listitem>
        <para>
        Möglichkeit zum Zoomen von Tickets.
        </para>
      </listitem>
      <listitem>
        <para>
        Definition von ACL's (access control lists) für Tickets.
        </para>
      </listitem>
      <listitem>
        <para>
        Tickets können an andere E-Mail-Adressen weiter- oder
        umgeleitet werden (forwarding, bouncing).
        </para>
      </listitem>
      <listitem>
        <para>
        Verschieben von Tickets zwischen verschiedenen Queues.
        </para>
      </listitem>
      <listitem>
        <para>
        Festlegen der Priorität für Tickets.
        </para>
      </listitem>
      <listitem>
        <para>
        Erfassung der Bearbeitungsdauer für Tickets.
        </para>
      </listitem>
      <listitem>
        <para>
        Anstehende Aufgaben für ein Ticket festlegen (pending
        features).
        </para>
      </listitem>
      <listitem>
        <para>
        Massenoperationen auf Tickets sind möglich (bulk features).
        </para>
      </listitem>
      <listitem>
        <para>
        Automatische und zeitgesteuerte Aktionen können mit
        Hilfe eines sog. Generic-Agenten auf Tickets ausgeführt
        werden.
        </para>
      </listitem>
      <listitem>
        <para>
        Volltextsuche über den gesamten Ticketbestand und Export der
        Suchergebnisse als PDF.
        </para>
      </listitem>
    </itemizedlist>
  </listitem>
  <listitem>
    <para>
    System:
    </para>
    <itemizedlist>
      <listitem>
	    <para>
	    OTRS läuft unter vielen Betriebssystemen (Linux, Solaris, AIX,
	    FreeBSD, OpenBSD, Mac OS 10.x, Microsoft Windows).
	    </para>
      </listitem>
      <listitem>
        <para>
        Unterstützung von ASP (active service providing).
        </para>
      </listitem>
      <listitem>
        <para>
        Verknüpfung von Objekten wie z. B. Tickets, FAQ-Einträgen
        o.ä. innerhalb des Systems.
        </para>
      </listitem>
      <listitem>
        <para>
        Einbindung externer Datenquellen für die Kundendaten, z. B.
        über AD, eDirectory oder OpenLDAP).
        </para>
      </listitem>
      <listitem>
        <para>
        Festlegen einer eigenen Kennzeichnung für Tickets, z. B.
        Cal#, Ticket#, Request# o.ä.
        </para>
      </listitem>
      <listitem>
        <para>
        Festlegen einer eigenen Nummerierung für Tickets.
        </para>
      </listitem>
      <listitem>
        <para>
        Unterstützung verschiedener Datenbanktypen für die
        zentrale Datenbank von OTRS (MySQL, PostgreSQL, SAPDB, Oracle
        MSSQL, usw.).
        </para>
      </listitem>
      <listitem>
        <para>
        Framework für die Erstellung von Statistiken über die Web-Oberfläche,
        Export und Import von Reports und Statistikmodulen, Export von
        Statistiken als PDF ist möglich.
        </para>
      </listitem>
      <listitem>
        <para>
        utf-8-Unterstützung für Front- und Back-End.
        </para>
      </listitem>
      <listitem>
        <para>
        Die Authentifikation für Agenten oder Kunden kann
        unabhängig voneinander über eine Datenbank, LDAP,
        HTTPAuth oder Radius realisiert werden.
        </para>
      </listitem>
      <listitem>
        <para>
        Unterstützung von Benutzer-Accounts, Benutzergruppen und
        Rollen.
        </para>
      </listitem>
      <listitem>
        <para>
        Unterstützung verschiedener Zugriffsrechte, z. B. auf
        Queues oder Systembereiche.
        </para>
      </listitem>
      <listitem>
        <para>
        Die Erstellung von Standardantworten ist möglich.
        </para>
      </listitem>
      <listitem>
        <para>
        Unter-Queues werden unterstützt.
        </para>
      </listitem>
      <listitem>
        <para>
        Anreden und Signaturen können abhängig von der Queue
        definiert werden.
        </para>
      </listitem>
      <listitem>
        <para>
        E-Mail-Benachrichtigungen für Administratoren.
        </para>
      </listitem>
      <listitem>
        <para>
        Bekanntgabe von Informationen zu Updates über die
        Weboberfläche oder via E-Mail.
        </para>
      </listitem>
      <listitem>
        <para>
        Festlegen von Ablauffristen für problematische Tickets.
        </para>
      </listitem>
      <listitem>
        <para>
        Benutzerabhängige Unterstützung für verschiedene Zeitzonen.
        </para>
      </listitem>
      <listitem>
        <para>
        Einfache Einbindung eigener Addons und Module mit Hilfe
        der OTRS API.
        </para>
      </listitem>
      <listitem>
        <para>
        Einfache Erstellung eigener Front-Ends, z. B. X11, Console usw.
        </para>
      </listitem>
    </itemizedlist>
  </listitem>
</itemizedlist>

<sect2 id="new-features-of-2.1">
<title>Neue Features von OTRS 2.1</title>

<itemizedlist>
<title>Die neuen Kern-Features von OTRS 2.1 im Überblick</title>
<listitem>
    <para>
    Multi-Kalnder-Funktionalität: Dieses Feature vereinfacht das Arbeiten in
    verschiedenen Umgebungen mit verschiedenen Zeitzonen. Die relevanten
    Arbeitsstunden des Systems können abhängig von der Zeitzone festgelegt
    werden, die Spezifikation von Urlaubs- und Feiertagen ist abhängig von
    der Region möglich.
    </para>
</listitem>
<listitem>
    <para>
    Statistik-Framework: Integration eines komplett überarbeiteten
    Statistik-Frameworks der es erlaubt, nahezu jede Art von Report über die
    Weboberfläche zu erstellen. Die Erstellung und Ansicht von Statistiken
    kann pro Benutzer, Gruppe und / oder Rolle freigeschaltet werden. Der
    Ex- und Import von bereits vorhandenen oder neuen Statistiken ist
    möglich, Statistikmodule aus früheren OTRS-Versionen können weiter
    verwendet werden.
    </para>
</listitem>
<listitem>
    <para>
    PDF-Generator: Die Druck-Ansicht von Tickets, Statistiken und
    Suchergebnisse können nun als PDF-Datei exportiert werden.
    </para>
</listitem>
<listitem>
    <para>
    Unterstützung von MSSQL: Eine Schnittstelle zu Microsofts SQL-Server
    wurde integriert, so dass nun die komplette OTRS Datenbank auch auf
    MSSQL-basierten Systemen installiert und benutzt werden kann.
    </para>
</listitem>
<listitem>
    <para>
    FAQ-Modul: Das FAQ-Modul von OTRS wurde komplett neu implementiert
    und aus dem zentralen OTRS-Framework herausgenommen, so dass eine
    Installation als seperates Modul möglich ist. Das neue FAQ-Modul bietet
    erweiterte Such- und Navigationsfunktionen, eine verbesserte
    Administration und eine Möglichkeit zur Bewertung von einzelnen FAQ-Einträgen.
    </para>
</listitem>
<listitem>
    <para>
    Unterstützung hirarchischer Team-Strukturen: Mit hilfe der neu
    eingeführten Überwachungs- und Verantwortlichkeitsfunktionen für
    Tickets, wird die strukturierte Bearbeitung von Tickets in Teams
    vereinfacht. Das Verantwortlichkeits-Feature ermöglicht es einem Agenten
    den Ticket-Besitz abzugeben, jedoch trotzdem noch alle Schreibrechte am
    Ticket zu behalten. Das Überwachungs-Features ermöglicht die Vrfolgung der
    Aktivitäten für ein Ticket, ohne selbst Eigentümer des Tickets zu sein.
    </para>
</listitem>
<listitem>
    <para>
    Optimierte Erkennung von Follow-Ups: Neben der Auswertung der
    Ticketnummer im Betreff einer Nachricht kann OTRS 2.1 nun auch nach
    Ticket-Bezeichnern im Body einer Mail und innerhalb von Textanhängen
    suchen und so ggfs. ein Follow-Up automatisiert zuordnen.
    </para>
</listitem>
</itemizedlist>

</sect2>

</sect1>

<sect1 id="software-requirements">
<title>Hard- und Software-Anforderungen</title>

<para>
OTRS kann unter vielen Betriebssystemen installiert werden. Neben Linux und
den verschiedenen Unix-Derivaten (z. B. OpenBSD oder FreeBSD), läuft
OTRS auch unter allen Windows-Versionen. Bezüglich der Hardware empfiehlt
es sich, mindestens einen 2 GHz Pentium Xeon oder vergleichbare CPU,
2 GB RAM und eine 160 GB Festplatte zu verwenden.
</para>

<para>
Für den Betrieb von OTRS werden einige externe Software-Komponenten
benötigt. Ein Web- sowie ein Datenbankserver und eine
funktionierende perl-Installation mit einigen Zusatzmodulen sind die
Grundvorraussetzungen für ein funktionierendes System. Der Webserver
und <application>perl</application> müssen auf der gleichen
Maschine installiert sein, auf der später auch OTRS ausgeführt werden soll.
Das Datenbank-Back-End kann auf der lokalen oder auf einer entfernten Maschine
installiert werden.
</para>

<para>
Für den Webserver wird empfohlen, auf <application>apache
1.3.x</application> oder <application>apache 2.x</application>
zurück zu greifen. Vor allem durch die Erweiterung der
apache-Konfiguration um das mod-perl-Modul, kann die Geschwindigkeit
von OTRS enorm gesteigert werden. Prinzipiell sollte aber jeder Webserver,
der die Ausführung von perl-Skripten unterstützt, für den
Betrieb von OTRS geeignet sein.
</para>

<para>
Als Datenbank-Back-End eignen sich besonders <application>MySQL</application>
ab Version 3.1.x oder <application>PostgreSQL</application>.
Grundsätzlich sollten jedoch alle Datenbankserver zusammen mit OTRS
verwendet werden können, die SQL als Datenbanksprache
unterstützen. Ein Vorteil der Benutzung von
<application>MySQL</application> ist, dass OTRS über einen
Webinstaller die Datenbank und Tabellen automatisch anlegen kann.
</para>

<para>
Für <application>perl</application> gilt mindestens die Version 5.8 zu
verwenden. Es werden einige Zusatzmodule benötigt, die Sie entweder
direkt über die Shell von <application>perl</application> und
CPAN oder mit Hilfe des Paketmanagers (<application>yast</application>,
<application>apt-get</application>) Ihres Betriebssystems einspielen
müssen.
</para>

<para>
Im Abschnitt für die

<link linkend="installation-of-needed-perl-modules">
manuelle Installation der für OTRS benötigten perl-Module
</link>

wird beschrieben, wie Sie perl-Module manuell einspielen können.
</para>

<para>
Wenn Sie ein bereits vorgefertigtes OTRS-Paket für Ihr Betriebssystem
zur Installation verwenden (rpm, Windows-Installer), sollten
die benötigten perl-MOdule automatisch installiert werden.
</para>
</sect1>

<sect1 id="community">
<title>Community</title>

<para>
Um OTRS hat sich in den letzten Jahren eine große Community
gebildet. Über

<link linkend="additional-resources-mailinglists">
Mailinglisten
</link>

tauschen sich Anwender und Entwickler zu den verschiedensten Themen rund um
das Trouble Ticket System aus. Behandelt werden Fragen rund um die Installation,
Konfiguration, Benutzung, Lokalisation und Entwicklung. Fehler in
der Software können über ein

<link linkend="additional-resources-bugtracking">
Bug-Tracking-System
</link>

gemeldet werden und erreichen so die zuständigen Entwickler bzw. gehen
nicht verloren, so dass schnell Fixes bereit gestellt werden können.
</para>

<para>
<screenshot>
<screeninfo>Homepage OTRS.org</screeninfo>
<graphic srccredit="Homepage OTRS.org" scale="40" fileref="screenshots/homepage-otrs.png"/>
</screenshot>
</para>

<para>
Die Community ist über die Homepage

<ulink url="http://www.otrs.org">
<citetitle>http://www.otrs.org</citetitle>
</ulink>

zu erreichen.
</para>
</sect1>

<sect1 id="commercial-support-for-otrs">
<title>Kommerzieller Support für OTRS</title>

<para>
Neben der Unterstützung aus der Open Source Community auf

<ulink url="http://www.otrs.org">
<citetitle>http://www.otrs.org</citetitle>
</ulink>

ist auch kommerzieller Support rund um OTRS erhältlich. Über die Adresse

<ulink url="http://www.otrs.com">
<citetitle>http://www.otrs.com</citetitle>
</ulink>

sind die Seiten der OTRS AG zu finden, die den kommerziellen Teil des
OTRS.org-Projektes darstellen.
</para>

<para>
Das Angebot der OTRS AG umfasst Support, Consulting und fertige
Installations-CDs für OTRS und richtet sich an den Mittelstand,
Behörden, Institutionen und große Konzerne. Von der
professionellen Beratung zum Einsatz des Trouble Ticket Systems bis hin
zur kompletten Installation und Wartung
mit 24-Stunden Rückrufservice sind verschiedene
Supportpakete erhältlich. Fertige High-Performance- und
High-Availabilty-Systeme, aber auch die Anfertigung
von Spezialanpassungen runden das Angebot der OTRS AG ab.
</para>

<para>
Detaillierte Informationen zu den verschiedenen Angeboten der OTRS
AG sind unter

<ulink url="http://www.otrs.com">
<citetitle>http://www.otrs.com</citetitle>
</ulink>

zu finden oder können über die Mailadresse

<ulink url="mailto:sales at otrs.com">
<citetitle>sales at otrs.com</citetitle>
</ulink>

erfragt werden.
</para>
</sect1>

</chapter>
<!-- $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $ --><chapter id="installation-and-basic-configuration">
<title>Installation des OTRS Framework</title>

<abstract>
<para>
Dieser Abschnitt beschreibt die Installation und die grundlegende
Einrichtung des zentralen OTRS Frameworks. Dabei wird auf die Installation
von bereits fertigen Paketen für die Betriebssysteme Linux und
Microsoft Windows eingegangen, aber auch die manuelle Installation direkt
über die Quellen erklärt, wodurch eine Installation auch auf
anderen, hier nicht näher beschriebenen, Betriebssystemen
übertragbar sein sollte.
</para>

<para>
Die Einrichtung des Web- und Datenbankservers,
die Schnittstelle zwischen OTRS und der Datenbank, das Einspielen
einzelner perl-Module, das Setzen der richtigen Berechtigungen, die
Einrichtung der OTRS-eigenen cron-Jobs sowie grundlegende Einstellungen
in den OTRS-Konfigurationsdateien, sind in diesem Kapitel zu finden.
</para>

<para>
Am Ende dieses Abschnitts sollte ein lauffähiges OTRS auf Ihrem
Betriebssystem installiert sein, an dessen Weboberfläche Sie sich
bereits als OTRS-Administrator anmelden können.
</para>
</abstract>

<sect1 id="installation-of-prepared-packages">
<title>Der einfache Weg - Installation fertiger Pakete</title>

<para>
Der einfachste und komfortableste Weg ein lauffähiges OTRS zu
installieren ist sicherlich, auf bereits vorgefertigte Pakete zurück
zu greifen. Viele bereits vorgefertigte Installations-Pakete sind im
Download-Bereich unter

<ulink url="http://www.otrs.org">
<citetitle>http://www.otrs.org</citetitle>
</ulink>

zu finden. Da der Aufwand viel zu groß wäre, die Installation
aller dort aufgeführten Pakete in dieser Dokumentation anzuführen,
soll im Folgenden nur näher auf die Installation von OTRS unter SUSE
Linux, Debian und Microsoft Windows eingegangen werden. Sehen Sie unter
der o.g. URL nach, ob auch für Ihr Betriebssystem ein fertiges
Installations-Paket vorhanden ist und greifen Sie nur auf die manuelle
Installation zurück, wenn Sie keine andere Möglichkeit haben.
</para>

<sect2 id="installation-on-suse">
<title>Installation des rpm-Softwarepackets auf einer SUSE Linux
Distribution</title>

<para>
Dieser Abschnitt beinhaltet die Anleitung für die Installation von OTRS
unter SUSE Linux. Getestet wurden die Versionen bis SUSE Linux 9.3.
Bevor Sie mit der Installation beginnen, sehen Sie bitte unter

<ulink url="http://www.otrs.org/">
<citetitle>http://www.otrs.org</citetitle>
</ulink>

nach, ob eine aktuellere Version von OTRS als .rpm-Datei vorliegt.
Sollte dies der Fall sein, verwenden Sie bitte diese neuere Version.
</para>

<para>
Installieren Sie OTRS mittels <application>yast</application> (yast2)
oder der Kommandozeile und <command>rpm</command>, je nach
Vorliebe. Beachten Sie jedoch, dass OTRS einige perl-Module
benötigt, die nicht standardmäßig in einer typischen
SUSE-Installation enthalten sind. <application>yast</application> sollte
die bessere Wahl sein, da es alle Abhängikeiten automatisch
beachtet und auflösen kann.
</para>

<para>
Sollten Sie den Weg über die Kommandozeile mit
<command>rpm</command> bevorzugen, so müssen Sie die
perl-Module manuell vor Beginn der Installation von
OTRS installieren. Angenommen Sie haben die Datei
<filename>otrs.rpm</filename> im Verzeichnis <filename>/tmp</filename>
gespeichert, dann geben Sie zur Installation von OTRS folgenden Befehl ein.
</para>

<para>
<screen>
linux:~ # rpm -ivh /tmp/otrs.rpm
otrs                        ##################################################
Check OTRS user (/etc/passwd)... otrs exists.

Next steps:

[SuSEconfig]
 Execute 'SuSEconfig' to configure the webserver.

[start Apache and MySQL]
 Execute 'rcapache restart' and 'rcmysql start' in case they don't run.

[install the OTRS database]
 Use a webbrowser and open this link:
 http://localhost/otrs/installer.pl

[OTRS services]
 Start OTRS 'rcotrs start-force' (rcotrs {start|stop|status|restart|start-force|stop-force}).

Have fun!

 Your OTRS Team
 http://otrs.org/

linux:~ #
</screen>
</para>

<para>
Nach der Installation des rpm's ist es notwendig
<application>SuSEconfig</application> zu starten. Geben Sie hierzu
Folgendes ein.
</para>

<para>
<screen>
linux:~ # SuSEconfig
Starting SuSEconfig, the SuSE Configuration Tool...
Running in full featured mode.
Reading /etc/sysconfig and updating the system...
Executing /sbin/conf.d/SuSEconfig.aaa_at_first...
Executing /sbin/conf.d/SuSEconfig.apache...
Including /opt/otrs/scripts/apache-httpd.include.conf
Executing /sbin/conf.d/SuSEconfig.bootsplash...
Executing /sbin/conf.d/SuSEconfig.doublecheck...
Executing /sbin/conf.d/SuSEconfig.guile...
Executing /sbin/conf.d/SuSEconfig.hostname...
Executing /sbin/conf.d/SuSEconfig.ispell...
Executing /sbin/conf.d/SuSEconfig.perl...
Executing /sbin/conf.d/SuSEconfig.permissions...
Executing /sbin/conf.d/SuSEconfig.postfix...
Setting up postfix local as MDA...
Setting SPAM protection to "off"...
Executing /sbin/conf.d/SuSEconfig.profiles...
Finished.
linux:~ #
</screen>
</para>

<para>
Die Installation des OTRS-rpm ist abgeschlossen. Starten Sie nun
Ihren Webserver neu, um die Änderungen in der Konfiguration zu
übernehmen.
</para>

<para>
<screen>
linux:~ # rcapache restart
Shutting down httpd                                         done
Starting httpd [ PERL ]                                     done
linux:~ #
</screen>
</para>

<para>
Der nächste Schritt ist das Aufsetzen der Datenbank.
Wenn sie <application>MySQL</application> als Datenbankserver verwenden,
können Sie hierzu den Webinstaller von OTRS benutzen. Geben Sie
dazu folgende Adresse in Ihrem Browser ein.
</para>

<para>
<ulink url="http://localhost/otrs/installer.pl">
<citetitle>http://localhost/otrs/installer.pl</citetitle>
</ulink>
</para>

<para>
Der Webinstaller wird gestartet. Folgen Sie den Anweisungen auf dem
Bildschirm.
</para>

<para>
<screenshot>
<screeninfo>installer.pl screen - Lizenz (1/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer.png"/>
</screenshot>
</para>

<para>
<screenshot>
<screeninfo>installer.pl screen - Datenbank erstellen (2/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer1.png"/>
</screenshot>
</para>

<warning>
<para>
Es ist niemals eine gute Idee, Standardpasswörter zu
verwenden! Bitte ändern Sie deshalb unbedingt das von OTRS
standardmäßig gesetzte Passwort!
</para>
</warning>

<para>
<screenshot>
<screeninfo>installer.pl screen - Datenbank erstellen (2/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer2.png"/>
</screenshot>
</para>

<para>
<screenshot>
<screeninfo>installer.pl screen - System einstellungen (3/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer3.png"/>
</screenshot>
</para>

<para>
<screenshot>
<screeninfo>installer.pl screen - Fertig (4/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer4.png"/>
</screenshot>
</para>

<para>
Nachdem alle Einstellungen vorgenommenw urden, kann OTRS nun gestartet
werden.
</para>

<para>
<screen>
linux:~ # rcotrs restart-force
Shutting down OTRS
 Disable /opt/otrs/bin/PostMaster.pl ... done.
no crontab for otrs
 Shutting down cronjobs ... failed!
Shutting down OTRS (completely)
 Shutting down Apache ... done.
 Shutting down MySQL ... done.
                                                                     done
Starting OTRS (completely)
 Starting Apache ... done.
 Starting MySQL ... done.
Starting OTRS
 Checking Apache ... done.
 Checking MySQL ... done.
 Checking database connect... (It looks Ok!).
 Enable /opt/otrs/bin/PostMaster.pl ... done.
 Checking otrs spool dir...  done.
 Creating cronjobs (source /opt/otrs/var/cron/*) ... done.

  --&gt;&gt; http://linux.example.com/otrs/index.pl &lt;&lt;--
                                                                     done
                                                                     done
linux:~ #
</screen>
</para>

<para>
Die Installation von OTRS ist beendet, Sie sollten das System nun
verwenden können. Um sich in die Weboberfläche des
Trouble Ticket Systems einloggen zu können, geben sie die Adresse

<ulink url="http://localhost/otrs/index.pl">
<citetitle>http://localhost/otrs/index.pl</citetitle>
</ulink>

in Ihrem Browser ein. Melden sie sich als OTRS-Administrator an und
konfigurieren Sie das System Ihren Wünschen entsprechend.
Als Benutzername verwenden Sie root@localhost, das Passwort lautet
root.
</para>

<warning>
<para>
Bitte ändern Sie auch dieses Passwort schnellstmöglich! Es
handelt sich auch hier um ein Standardpasswort!
</para>
</warning>

</sect2>

<sect2 id="installation-on-debian">
<title>Installation von OTRS auf einer Debian-Distribution</title>

<para>
Eine ausführliche Beschreibung zur Installation von OTRS auf Debian-Systemen
wurde dankenswerter Weise vom Maintainer des OTRS-Pakets, Torsten Werner,
bereit gestellt. Sie kann über den Link

<ulink url="http://www.writely.com/View.aspx?docid=drm3kmx_0cbr3x9">
http://www.writely.com/View.aspx?docid=drm3kmx_0cbr3x9
</ulink>

eingesehen werden.
</para>
</sect2>

<sect2 id="installation-on-windows">
<title>Installation von OTRS unter Microsoft Windows</title>

<para>
Die Installation von OTRS unter Microsoft Windows ist denkbar einfach.
Laden Sie den auf

<ulink url="http://www.otrs.org/">
<citetitle>http://www.otrs.org</citetitle>
</ulink>

bereit gestellten Installer herunter und speichern Sie die Datei.
Anschließend führen Sie den Installer einfach aus und folgen
den einzelnen Installationsschritten.
</para>

<important>
<para>
Der Windows-Installer für OTRS beinhaltet bereits alle Komponenten,
die für den Betrieb von OTRS benötigt werden. D.h., es wird
zusätzlich zum eigentlichen OTRS der <application>apache2</application>
Webserver, <application>MySQL</application>, <application>perl</application>
mit den für OTRS benötigten Modulen und
<application>cron</application> für Windows installiert. Aus diesem
Grund ist es empfehlenswert OTRS über den Installer nur auf solchen
Windowssystemen zu installieren, auf denen noch kein
<application>apache2</application> bzw. ein anderer Webserver und
<application>MySQL</application> läuft.
</para>
</important>

</sect2>

</sect1>

<sect1 id="manual-installation-of-otrs">
<title>Manuelle Installation (Linux, Unix)</title>

<sect2 id="preparing-manual-installation">
<title>Vorbereiten der manuellen Installation</title>

<para>
Wenn Sie OTRS manuell über die Quellen installieren möchten oder
müssen, laden Sie sich zuerst das aktuelle Archiv herunter. Sie finden
die entsprechenden .tar.gz- oder .tar.bz2-Dateien im Downloadbereich auf

<ulink url="http://www.otrs.org/">
<citetitle>http://www.otrs.org</citetitle>
</ulink>

</para>

<para>
Entpacken Sie das Archiv mit Hilfe von <command>tar</command> z. B. in das
Verzeichnis <filename>/opt</filename>:
</para>

<para>
<screen>
linux:/opt# tar xf /tmp/otrs-2.0.0.tar.gz
linux:/opt# ls
otrs
linux:/opt#
</screen>
</para>

<para>
Da die Skripte von OTRS später nicht mit root-Rechten laufen sollen, muss
im nächsten Schritt ein Benutzer für OTRS im System angelegt
werden. Dieser Benutzer sollte als Homeverzeichnis das Verzeichnis erhalten,
in das gerade die Quellen von OTRS entpackt wurden, also
<filename>/opt/otrs</filename>. Wird der Webserver unter einem anderen
Benutzer als dem OTRS-User betrieben, so muss der neue OTRS-Benutzer
noch zur Gruppe des Webserver-Users hinzugefügt werden.
</para>

<para>
<screen>
linux:/opt# useradd -d /opt/otrs/ -c 'OTRS user' otrs
linux:/opt# usermod -G nogroup otrs
linux:/opt#
</screen>
</para>

<para>
Im nächsten Schritt werden einige Demo-Konfigurationsdateien
innerhalb der entpackten Quelldateien bzw. innerhalb des Homeverzeichnisses
des OTRS-Benutzers kopiert. Die Dateien befinden sich in den Verzeichnissen
<filename>/opt/otrs/Kernel</filename> bzw.
<filename>/opt/otrs/Kernel/Config</filename> und haben die Endung .dist.
</para>

<para>
<screen>
linux:/opt# cd otrs/Kernel/
linux:/opt/otrs/Kernel# cp Config.pm.dist Config.pm
linux:/opt/otrs/Kernel# cd Config
linux:/opt/otrs/Kernel/Config# for foo in *.dist; do cp $foo `basename
$foo .dist`; done
linux:/opt/otrs/Kernel/Config#
</screen>
</para>

<para>
Zum Abschluss der Vorbereitungen werden noch die richtigen
Zugriffsrechte für die Dateien des Ticket Systems gesetzt. Dazu kann
das Skript <command>SetPermissions.sh</command> verwendet werden, das sich
im Verzeichnis <filename>bin</filename> innerhalb des Homeverzeichnisses des
OTRS-Benutzers befindet. Das Skript kann mit folgenden Parametern
aufgerufen werden:
</para>

<para>
<cmdsynopsis>
  <command>SetPermissions.sh</command>
    <arg choice="req">
      <replaceable>Homedirectory des OTRS Benutzers</replaceable>
    </arg>
    <arg choice="req">
      <replaceable>OTRS Benutzer</replaceable>
    </arg>
    <arg choice="req">
      <replaceable>Webserver Benutzer</replaceable>
    </arg>
    <arg choice="opt">
      <replaceable>Gruppe des OTRS Benutzers</replaceable>
    </arg>
    <arg choice="opt">
      <replaceable>Gruppe des Webserver Benutzers</replaceable>
    </arg>
  </cmdsynopsis>
</para>

<para>
Läuft Ihr Webserver mit den Benutzerrechten des OTRS Benutzers, dann
lautet das Kommando also
<command>SetPermissions.sh /opt/otrs otrs otrs</command>. Unter SUSE Linux
wird der Webserver mit dem Benutzer wwwrun betrieben. Geben Sie hier
das Komando <command>SetPermissions.sh /opt/otrs otrs wwwrun</command> ein.
</para>

<para>
Nach diesen Schritten ist die Vorbereitung zur Installation des Ticket
Systems abgeschlossen und es kann der Webserver auf die Verwendung von OTRS
vorbereitet werden.
</para>

</sect2>

<sect2 id="installation-of-needed-perl-modules">
<title>Installation der für OTRS benötigten perl-Module</title>

<para>
Für den Betrieb von OTRS werden einige perl-Module benötigt. Wenn
Sie OTRS manuell einrichten, müssen Sie wahrscheinlich einige
dieser Module per Hand nachinstallieren. Dies können Sie entweder
über den Paketmanager ihrer Distribution erledigen (<application>yast</application>,
<application>apt-get</application>), oder, wie in diesem Kapitel
beschrieben,  direkt über die Shell von <application>perl</application>
und CPAN.
</para>

<para>
Die folgenden perl-Module werden von OTRS
benötigt.
</para>

<para>

<table id="table-of-needed-perl-modules">
<title>Die von OTRS benötigten perl-Module</title>
  <tgroup cols="2">
    <thead>
      <row>
        <entry>
          Name
        </entry>
        <entry>
          Beschreibung
        </entry>
      </row>
    </thead>
    <tbody>
      <row>
        <entry>
          CGI
        </entry>
        <entry>
          Mit diesem Modul wird die Darstellung der OTRS-Oberfläche
          als Webinterface ermöglicht.
        </entry>
      </row>
      <row>
        <entry>
          Date::Pcalc
        </entry>
        <entry>
          Dieses Modul enthält Berechnungsgrundlagen zum
          gregorianischen Kalender und wird in OTRS z. B. für die
          zeitspezifischen Berechnungen auf Tickets benötigt.
        </entry>
      </row>
      <row>
        <entry>
          DBI
        </entry>
        <entry>
          Dieses Modul wird von OTRS für die Verbindung zum
          Datenbank-Backend benötigt.
        </entry>
      </row>
      <row>
        <entry>
          DBD::mysql
        </entry>
        <entry>
          Modul zum Verbindungsaufbau zum MySQL-Datenbank-Backend.
        </entry>
      </row>
      <row>
        <entry>
          Digest::MD5
        </entry>
        <entry>
          Ermöglicht die Verwendung des md5-Algorithmus.
        </entry>
      </row>
      <row>
        <entry>
          LWP::UserAgent
        </entry>
        <entry>
          Modul zur Verarbeitung von http-Anfragen.
        </entry>
      </row>
      <row>
        <entry>
          MIME::Base64
        </entry>
        <entry>
          En- und Decodierung von Base64-Strings.
        </entry>
      </row>
      <row>
        <entry>
          MIME::Tools
        </entry>
        <entry>
          Modul mit verschiedenen Werkzeugen für die Verarbeitung von
          Nachrichten mit MIME-Teil.
        </entry>
      </row>
      <row>
        <entry>
          Mail::Internet
        </entry>
        <entry>
          Modul für die Bearbeitung von E-Mails nach RFC 822
        </entry>
      </row>
      <row>
        <entry>
          Net::DNS
        </entry>
        <entry>
          Schnittstelle zum Domain Name System (DNS).
        </entry>
      </row>
      <row>
        <entry>
          Net::POP3
        </entry>
        <entry>
          Modul mit Funktionen für den Zugriff auf einen
          POP3-Server.
        </entry>
      </row>
      <row>
        <entry>
          Net::LDAP
        </entry>
        <entry>
          Modul zur Verarbeitung von Anfragen an ein LDAP-Directory. Dieses
          Modul wird nur benötigt, wenn OTRS mit einem LDAP-Directory
          betrieben werden soll, z. B. fuer die Abfrage von Kundendaten.
        </entry>
      </row>
      <row>
        <entry>
          Net::SMTP
        </entry>
        <entry>
          Modul mit Funktionen zum Versenden von Mails.
        </entry>
      </row>
      <row>
        <entry>
          Authen::SASL
        </entry>
        <entry>
          SASL Authentication Framework, wird z. B. für die Anmeldung
          an Mailservern benötigt.
        </entry>
      </row>
      <row>
        <entry>
          GD
        </entry>
        <entry>
          Schnittstelle zur Gd Graphics Library. Wird nur
          benötigt, wenn das Statistikmodul von OTRS verwendet
          werden soll.
        </entry>
      </row>
      <row>
        <entry>
          GD::Text, GD::Graph, GD::Graph::lines, GD::Text::Align
        </entry>
        <entry>
          Text- und Grafikwerkzeuge für die Benutzung zusammen mit der
          GD Graphics Library. Diese Komponenten werden nur benötigt,
          wenn das Statistikmodul von OTRS verwendet werden soll.
        </entry>
      </row>
      <row>
        <entry>
          XML::Parser
        </entry>
        <entry>
          Dieses Modul wird benötigt, um Konfigurationsparameter
          aus XML-Files auszulesen bzw. Konfigurationen in XML-Dateien zu
          schreiben. Die grafische Administrations-Oberfläche von OTRS
          greift auf diese Mechanissmen zurück.
        </entry>
      </row>
      <row>
        <entry>
          PDF::API2, Compress::Zlib
        </entry>
        <entry>
          Diese Module werden für die Generierung der PDF-Ausgaben von
          Statistiken, Suchergebnissen oder Druckansicht eines Tickets benötigt.
        </entry>
      </row>
    </tbody>
  </tgroup>
</table>

</para>

<para>
Um eines der oben aufgeführten Module mit Hilfe von CPAN zu
installieren, geben Sie als root das Kommando
<command>perl -e shell -MCPAN</command> ein. perl wird im interaktiven
Modus gestartet und das CPAN Modul wird geladen. Ist CPAN bereits
ordentlich konfiguriert, können Sie die für OTRS benötigten
Module mit Hilfe des Kommandos <command>install</command> gefolgt vom
Modulnamen einrichten. CPAN weist darauf hin, wenn Abhängigkeiten
zwischen einzelnen Modulen nicht erfüllt sind und schlägt
automatisch die zusätzlich benötigten Module für die
Installation vor.
</para>

<para>
Nachdem Sie alle perl-Module installiert haben, können Sie mit Hilfe
des Skriptes <command>otrs.checkModules</command> überprüfen, ob
OTRS wirklich alle benötigten Module finden und verwenden kann. Das
Skript finden sie im Verzeichnis <filename>bin</filename> innerhalb des
Homeverzeichnisses des OTRS Benutzers.
</para>

<para>
<screen>
linux:~# cd /opt/otrs/bin/
linux:/opt/otrs/bin# ./otrs.checkModules

                  CGI ... ok
          Date::Pcalc ... ok
         Date::Format ... ok
                  DBI ... ok
           DBD::mysql ... ok
          Digest::MD5 ... ok
     Crypt::PasswdMD5 ... ok
       LWP::UserAgent ... ok
           IO::Scalar ... ok
             IO::Wrap ... ok
         MIME::Base64 ... ok
          MIME::Tools ... ok
       Mail::Internet ... ok
             Net::DNS ... ok
            Net::POP3 ... ok
            Net::LDAP ... ok
            Net::SMTP ... ok
         Authen::SASL ... ok
                   GD ... ok
             GD::Text ... ok
            GD::Graph ... ok
     GD::Graph::lines ... ok
      GD::Text::Align ... ok
          XML::Parser ... ok
            PDF::API2 ... not installed! (for PDF output - not required)
       Compress::Zlib ... ok
linux:/opt/otrs/bin#
</screen>
</para>

<para>
Führen Sie weiterhin die beiden Befehle
<command>perl -cw bin/cgi-bin/index.pl</command> und
<command>perl -cw bin/PostMaster.pl</command> aus, nach dem Sie in das
Verzeichnis <filename>/opt/otrs</filename> gewechselt sind. Wird bei
beiden Befehlen die Meldung "syntax OK" angezeigt, verfügt Ihre
perl-Installation über alle von OTRS benötigten Module und Sie
können im nächsten Schritt mit der Einrichtung des Webservers
beginnen.
</para>

<para>
<screen>
linux:~# cd /opt/otrs
linux:/opt/otrs# perl -cw cgi-bin/installer.pl
cgi-bin/installer.pl syntax OK
linux:/opt/otrs# perl -cw PostMaster.pl
PostMaster.pl syntax OK
linux:/opt/otrs#
</screen>
</para>

</sect2>

<sect2 id="webserver-configuration">
<title>Konfiguration des apache Webservers</title>

<para>
In diesem Abschnitt wird beschrieben, wie der
<application>apache</application> Webserver grundlegend für OTRS
eingerichtet werden muss. Der Webserver solte cgi- bzw. perl-Skripte
ausführen können, anderenfalls ist kein Betrieb von
OTRS möglich. Überprüfen Sie die Konfigurationsdateien Ihres
Webservers und stellen Sie fest, ob das cgi-Modul geladen wird: Wenn Ihr
Webserver die Ausführung von cgi-Skripten unterstützt, sollte
eine Zeile ähnlich der folgenden zu finden sein.
</para>

<para>
<programlisting id="load-cgi-module">
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
</programlisting>
</para>

<para>
Um die Oberfläche von OTRS bequem erreichen zu können, wird ein
Alias- und ein ScriptAlias-Eintrag angelegt. Für die meisten
Installationen des <application>apache</application> Webservers gilt, dass
ein Verzeichnis mit dem Namen <filename>conf.d</filename> vorhanden ist,
unter Linux ist es meist unterhalb des Verzeichnisses
<filename>/etc/apache</filename> bzw. <filename>/etc/apache2</filename> zu
finden. Wechseln Sie als root in dieses Verzeichnis und öffnen
Sie die Datei <filename>otrs.conf</filename> mit einem Editor bzw. legen
Sie diese Datei an. Tragen Sie die folgenden Zeilen in die Datei ein.
</para>

<para>
<programlisting id="basic-apache-configuration-for-otrs">
#
# Basic apache configuration for OTRS
#
# agent, admin and customer frontend
#
ScriptAlias /otrs/ "/opt/otrs/bin/cgi-bin/"
Alias /otrs-web/ "/opt/otrs/var/httpd/htdocs/"
#
# directory settings
#
&lt;Directory "/opt/otrs/bin/cgi-bin/"&gt;
    AllowOverride None
    Options +ExecCGI -Includes
    Order allow,deny
    Allow from all
&lt;/Directory&gt;
&lt;Directory "/opt/otrs/var/httpd/htdocs/"&gt;
    AllowOverride None
    Order allow,deny
    Allow from all
&lt;/Directory&gt;
</programlisting>
</para>

<para>
Speichern Sie die Datei, schließen Sie den Editor und starten Sie Ihren
Webserver neu, um die neue Konfiguration zu laden. Auf den meisten Systemen
lässt sich der Webserver über den Befehl
<command>/etc/init.d/apache restart</command> bzw.
<command>/etc/init.d/apache2 restart</command> neu starten.
</para>

<para>
<screen>
linux:/etc/apache2/conf.d# /etc/init.d/apache2 restart
Forcing reload of web server: Apache2.
linux:/etc/apache2/conf.d#
</screen>
</para>

<para>
Das war bereits die grundlegende Konfiguration des Webservers für
OTRS. Im nächsten Schritt kann die Datenbank eingerichtet werden.
</para>
</sect2>

<sect2 id="database-configuration">
<title>Einrichten der Datenbank</title>

<sect3 id="installation-of-database-with-the-webinstaller">
<title>Einrichtung der Datenbank mit Hilfe des Webinstallers (nur für
<application>MySQL</application>)</title>

<para>
Wenn Sie <application>MySQL</application> als Datenbankserver einsetzen,
können Sie die OTRS Datenbank leicht und bequem mit Hilfe des
Webinstallers einrichten. Geben Sie folgende Adresse in Ihrem Browser ein,
um den Webinstaller zu starten:
</para>

<para>
<ulink url="http://localhost/otrs/installer.pl">
<citetitle>http://localhost/otrs/installer.pl</citetitle>
</ulink>
</para>

<para>
Der Webinstaller wird gestartet. Folgen Sie den Anweisungen auf dem
Bildschirm.
</para>

<para>
<screenshot>
<screeninfo>installer.pl screen - Lizenz (1/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer.png"/>
</screenshot>
</para>

<para>
<screenshot>
<screeninfo>installer.pl screen - Datenbank erstellen (2/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer1.png"/>
</screenshot>
</para>

<warning>
<para>
Es ist niemals eine gute Idee, Standardpasswörter zu
verwenden! Bitte ändern Sie deshalb unbedingt das von OTRS
standardmäßig gesetzte Passwort!
</para>
</warning>

<para>
<screenshot>
<screeninfo>installer.pl screen - Datenbank erstellen (2/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer2.png"/>
</screenshot>
</para>

<para>
<screenshot>
<screeninfo>installer.pl screen - System einstellungen (3/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer3.png"/>
</screenshot>
</para>

<para>
<screenshot>
<screeninfo>installer.pl screen - Fertig (4/4)</screeninfo>
<graphic srccredit="installer.pl - screenshot" scale="40" fileref="screenshots/installer4.png"/>
</screenshot>
</para>

<para>
Die OTRS Datenbank wurde aufgesetzt. Im nächsten Schritt werden die
cron-Jobs eingerichtet, die von OTRS benötigt werden.
</para>

</sect3>

<sect3 id="manual-installation-of-database">
<title>Manuelle Installation der OTRS Datenbank</title>

<para>
Wenn Sie den Webinstaller nicht einsetzen können, kann die Datenbank
für OTRS auch manuell eingerichtet werden. Skripte mit dem
Datenbankschema und den SQL-Statements finden Sie im Verzeichnis
<filename>scripts/database</filename> innerhalb des Homeverzeichnisses des
OTRS Benutzers.
</para>

<para>
<screen>
linux:~# cd /opt/otrs/scripts/database/
linux:/opt/otrs/scripts/database# ls
initial_insert.sapdb.sql    otrs-schema-post.maxdb.sql
initial_insert.sql          otrs-schema-post.mysql.sql
otrs-schema.maxdb.sql       otrs-schema-post.oracle.sql
otrs-schema.mysql.sql       otrs-schema-post.postgresql.sql
otrs-schema.oracle.sql      otrs-schema.xml
otrs-schema.postgresql.sql
linux:/opt/otrs/scripts/database#
</screen>
</para>

<para>
Für die verschiedenen Datenbanktypen sind mehrere .sql-Dateien
vorhanden, die nacheinander abgearbeitet werden müssen. Um die Datenbank
anzulegen, gehen Sie folgendermaßen vor:
</para>

<para>
<orderedlist numeration="arabic">
<title>Die verschiedenen Schritte für die manuelle Erstellung der
Datenbank</title>
<listitem>
<para>
Anlegen der Datenbank für OTRS: Legen Sie mit Hilfe Ihres
Datenbankinterfaces bzw. Ihrer Datenbankoberfläche die Datenbank
an, die später von OTRS verwendet werden soll.
</para>
</listitem>
<listitem>
<para>
Erstellen der Tabellen: Mit Hilfe der otrs-schema.Datenbanktyp.sql-Dateien
(z. B. <filename>otrs-schema.oracle.sql</filename>,
<filename>otrs-schema.postgresql.sql</filename>, usw.) können Sie die
Tabellen innerhalb der OTRS Datenbank erzeugen.
</para>
</listitem>
<listitem>
<para>
Einfügen der vom System benötigten Daten: Damit OTRS richtig
funktioniert, müssen einige Daten in verschiedene Tabellen geschrieben
werden (z. B. die verschiedenen Ticketstatus, Ticket- und
Benachrichtigungstypen, etc.). Verwenden Sie entweder die Datei
<filename>initial_insert.sql</filename> oder
<filename>initial_insert.sapdb.sql</filename> zum Einspielen der Daten,
je nachdem welche Datenbank verwendet wird.
</para>
</listitem>
<listitem>
<para>
Erzeugen von "foreign keys" auf andere Tabellen: Abschließend
müssen noch die "foreign keys" erstellt werden, über die die
verschiedenen Tabellen in der OTRS Datenbank voneinander abhängen.
Dies kann mit Hilfe der otrs-schema-post.Datenbanktyp.sql-Dateien erreicht
werden (z. B. <filename>otrs-schema-oracle.post.sql</filename>,
<filename>otrs-schema-post.postgresql.sql</filename>, usw.).
</para>
</listitem>
</orderedlist>
</para>

<para>
Nachdem Sie die Datenbank angelegt haben, sollten Sie die Zugriffsrechte
dafür setzen und z. B. sicherstellen, dass nur ein bestimmter
Benutzer ohne Datenbank-Administrationsrechte Zugriff auf die OTRS
Datenbank hat. Je nachdem, welche Datenbank Sie einsetzen, unterscheiden
sich hier die Vorgehensweisen, es sollte jedoch möglich sein dies mit
Hilfe Ihres Datenbankinterfaces bzw. Ihrer Datenbankoberfläche zu
erledigen.
</para>

<para>
Wurden die nötigen Einstellungen für die Datenbank vorgenommen,
muss nun noch dem Ticket System mitgeteilt werden, welche Datenbank es
verwenden soll. Öffnen Sie die Datei
<filename>Kernel/Config.pm</filename> innerhalb des Homeverzeichnisses des
OTRS Benutzers und passen Sie die dafür vorgesehenen Parameter an. Am
wichtigsten sind die folgenden Parameter.
</para>

<para>
<programlisting>

    # Database
    # (The database name.)
    $Self-&gt;{Database} = 'otrs';

    # DatabaseUser
    # (The database user.)
    $Self-&gt;{DatabaseUser} = 'otrs';

    # DatabasePw
    # (The password of database user.)
    $Self-&gt;{DatabasePw} = 'some-pass';

</programlisting>
</para>

<para>
Nachdem nun die Verbindung zur Datenbank steht, können im
nächsten Schritt die verschiedenen cron-Jobs für OTRS
eingerichtet werden.
</para>

</sect3>

</sect2>

<sect2 id="cronjobs">
<title>Einrichten der von OTRS benötigten cron-Jobs</title>

<para>
Damit OTRS voll funktioniert, werden einige cron-Jobs benötigt. Die
cron-Jobs sollten mit denselben Benutzerrechten ausgeführt werden,
die auch für die restlichen OTRS-Skripte vergeben wurden, d.h. die
cronJobs sollten in die crontab des OTRS-Benutzers eingetragen werden. Alle
Skripte für die verschiedenen cron-Jobs befinden sich im Verzeichnis
<filename>var/cron</filename> innerhalb des Homeverzeichnisses des
OTRS-Benutzers.
</para>

<para>
<screen>
linux:~# cd /opt/otrs/var/cron
linux:/opt/otrs/var/cron# ls
aaa_base.dist                pending_jobs.dist          session.dist
fetchmail.dist               postmaster.dist            unlock.dist
generic_agent-database.dist  postmaster_pop3.dist
generic_agent.dist           rebuild_ticket_index.dist
linux:/opt/otrs/var/cron#
</screen>
</para>

<para>
Alle Skripte tragen die Endung .dist und sollten zunächst so
umkopiert werden, dass keine Endung mehr vorhanden ist.
</para>

<para>
<screen>
linux:/opt/otrs/var/cron# for foo in `ls -1 *.dist` ; do cp $foo
`basename $foo .dist`; done
linux:/opt/otrs/var/cron# ls
aaa_base                     generic_agent.dist    rebuild_ticket_index
aaa_base.dist                pending_jobs
rebuild_ticket_index.dist
fetchmail                    pending_jobs.dist     session
fetchmail.dist               postmaster            session.dist
generic_agent                postmaster.dist       unlock
generic_agent-database       postmaster_pop3       unlock.dist
generic_agent-database.dist  postmaster_pop3.dist
linux:/opt/otrs/var/cron#
</screen>
</para>

<para>
Die folgende Tabelle gibt eine kurze Übersicht über die Aufgabe
der verschiedenen Skripte, die als cron-Job in der crontab des
OTRS-Benutzers installiert werden sollten.
</para>

<para>
<table id="table-of-cronjobs-for-otrs">
<title>Die verschiedenen Skripte für die cron-Jobs von OTRS</title>
  <tgroup cols="2">
    <thead>
      <row>
        <entry>
          Skript
        </entry>
        <entry>
          Aufgabe
        </entry>
      </row>
    </thead>
    <tbody>
      <row>
        <entry>
          aaa_base
        </entry>
        <entry>
          Über dieses Skript werden die grundlegenden Einstellungen
          für die crontab des OTRS-Benutzers festgelegt.
        </entry>
      </row>
      <row>
        <entry>
          fetchmail
        </entry>
        <entry>
          Falls Nachrichten mit Hilfe von fetchmail in das System
          eingespeißt werden sollen, kann dieses Skript verwendet werden.
        </entry>
      </row>
      <row>
        <entry>
          generic_agent
        </entry>
        <entry>
          Mit Hilfe dieses Skripts werden die Jobs des GenericAgents
          ausgeführt, die über eigene Konfigurationsdateien
          festgelegt wurden.
        </entry>
      </row>
      <row>
        <entry>
          generic_agent-database
        </entry>
        <entry>
          Mit Hilfe dieses Skripts werden die Jobs des GenericAgents
          ausgeführt, die über dem Administrations-Bereich
          innerhalb von "GenericAgent" angelegt wurden.
        </entry>
      </row>
      <row>
        <entry>
          pending_jobs
        </entry>
        <entry>
          Mit Hilfe dieses Skripts wird das System auf "wartende" (pending)
          Tickets überprüft.
        </entry>
      </row>
      <row>
        <entry>
          postmaster
        </entry>
        <entry>
          Mit Hilfe dieses Skripts wird die Nachrichten-Warteschlange von
          OTRS überprüft und noch nicht verarbeitete Nachrichten
          werden im System gespeichert bzw. zugestellt..
        </entry>
      </row>
      <row>
        <entry>
          postmaster_pop3
        </entry>
        <entry>
          Mit Hilfe dieses Skripts werden die verschiedenen pop3-Konten
          abgefragt, die im Administrations-Bereich innerhalb von
          "PostMaster POP3 Account" eingerichtet wurden.
        </entry>
      </row>
      <row>
        <entry>
          rebuild_ticket_index
        </entry>
        <entry>
          Mit Hilfe dieses Skripts wird der Ticket-Index für die
          Queue-Ansicht neu erzeugt, wodurch die Anzeige beschleunigt wird.
        </entry>
      </row>
      <row>
        <entry>
          session
        </entry>
        <entry>
          Über dieses Skript werden alte und nicht mehr gültige
          Session-IDs entfernt.
        </entry>
      </row>
      <row>
        <entry>
          unlock
        </entry>
        <entry>
          Mit Hilfe dieses Skripts wird die Freigabe von Tickets innerhalb
          des Systems ermöglicht.
        </entry>
      </row>
    </tbody>
  </tgroup>
</table>
</para>

<para>
Für die Einrichtung aller cron-Jobs kann das Skript
<filename>Cron.sh</filename> verwendet werden, das sich im Verzeichnis
<filename>bin</filename> innerhalb des Homeverzeichnisses des
OTRS-Benutzers befindet. Dem Cron.sh Skript muss beim Aufruf ein
Parameter übergeben werden. Dieser Parameter legt fest, ob die
cron-Jobs installiert, deinstalliert oder neu gestartet werden. Es sind
folgende Parameter zulässig.
</para>

<para>
<cmdsynopsis>
  <command>Cron.sh</command>
    <arg choice="req">
      <replaceable>start</replaceable>
    </arg>
    <arg choice="req">
      <replaceable>stop</replaceable>
    </arg>
    <arg choice="req">
      <replaceable>restart</replaceable>
    </arg>
    <arg choice="opt">
      <replaceable>OTRS-Benutzer</replaceable>
    </arg>
  </cmdsynopsis>
</para>

<para>
Da die cron-Jobs für den OTRS-Benutzer angelegt werden sollen,
muss das Skript von diesem Benutzer ausgeführt werden. Sind Sie z. B.
als Benutzer root am System angemeldet, können Sie mit Hilfe des
Kommandos <command>su otrs</command> zum OTRS-Benutzer wechseln. Nehmen Sie
also die Installation wie folgt vor.
</para>

<warning>
<para>
Bitte beachten Sie, dass durch die Verwendung von
<filename>Cron.sh</filename> evtl. andere Cron-Jobs des OTRS-Benutzers
überschrieben bzw. gelöscht werden. Um weitere, nicht von OTRS benötigte
Cron-Jobs für den OTRS-Benutzer zu installieren, erweitern Sie bitte
<filename>Cron.sh</filename> dementsprechent.
</para>
</warning>

<para>
<screen>
linux:/opt/otrs/var/cron# cd /opt/otrs/bin/
linux:/opt/otrs/bin# su otrs
linux:~/bin$ ./Cron.sh start
Cron.sh - start/stop OTRS cronjobs - &lt;$Revision: 1.17 $&gt;
Copyright (c) 2002 Martin Edenhofer &lt;martin@otrs.org&gt;
(using /opt/otrs) done
linux:~/bin$ exit
exit
linux:/opt/otrs/bin#
</screen>
</para>

<para>
Mit Hilfe des Kommandos <command>crontab -l -u otrs</command>, das Sie als
root ausführen können, wird die crontab-Datei des OTRS-Benutzers
angezeigt und Sie können überprüfen, ob alle Einträge
vorhanden sind.
</para>

<para>
<screen>
linux:/opt/otrs/bin# crontab -l -u otrs
# --
# cron/aaa_base - base crontab package
# Copyright (C) 2002-2003 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# Who gets the cron emails?
MAILTO="root@localhost"

# --
# cron/fetchmail - fetchmail cron of the OTRS
# Copyright (C) 2002-2003 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# fetch every 5 minutes emails via fetchmail
#*/5 * * * * /usr/bin/fetchmail -a &gt;&gt; /dev/null

# --
# cron/generic_agent - GenericAgent.pl cron of the OTRS
# Copyright (C) 2002-2003 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# start generic agent every 20 minutes
*/20 * * * * $HOME/bin/GenericAgent.pl &gt;&gt; /dev/null
# example to execute GenericAgent.pl on 23:00 with
# Kernel::Config::GenericAgentMove job file
#0 23 * * * $HOME/bin/GenericAgent.pl -c "Kernel::Config::GenericAgentMove" &gt;&gt; /dev/null
# --
# cron/generic_agent - GenericAgent.pl cron of the OTRS
# Copyright (C) 2001-2004 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# start generic agent every 10 minutes
*/10 * * * * $HOME/bin/GenericAgent.pl -c db &gt;&gt; /dev/null
# --
# cron/pending_jobs - pending_jobs cron of the OTRS
# Copyright (C) 2002-2003 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# check every 120 min the pending jobs
45 */2 * * * $HOME/bin/PendingJobs.pl &gt;&gt; /dev/null
# --
# cron/postmaster - postmaster cron of the OTRS
# Copyright (C) 2002-2003 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# check daily the spool directory of OTRS
#10 0 * * * * test -e /etc/init.d/otrs &amp; /etc/init.d/otrs cleanup &gt;&gt; /dev/null; test -e /etc/rc.d/init.d/otrs &amp;&amp; /etc/rc.d/init.d/otrs cleanup &gt;&gt; /dev/null
10 0 * * * $HOME/bin/otrs.cleanup &gt;&gt; /dev/null
# --
# cron/postmaster_pop3 - postmaster_pop3 cron of the OTRS
# Copyright (C) 2002-2003 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# fetch emails every 10 minutes
*/10 * * * * $HOME/bin/PostMasterPOP3.pl &gt;&gt; /dev/null
# --
# cron/rebuild_ticket_index - rebuild ticket index for OTRS
# Copyright (C) 2002-2003 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# just every day
01 01 * * * $HOME/bin/RebuildTicketIndex.pl &gt;&gt; /dev/null

# --
# cron/session - delete old session ids of the OTRS
# Copyright (C) 2001-2004 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# delete every 120 minutes old/idle session ids
55 */2 * * * $HOME/bin/DeleteSessionIDs.pl --expired &gt;&gt; /dev/null

# --
# cron/unlock - unlock old locked ticket of the OTRS
# Copyright (C) 2002-2003 Martin Edenhofer &lt;martin+code@otrs.org&gt;
# --
# $Id: installation-and-basic-configuration.xml,v 1.17 2006/10/18 13:02:43 cs Exp $
# This software comes with ABSOLUTELY NO WARRANTY.
# --
# unlock every hour old locked tickets
35 * * * * $HOME/bin/UnlockTickets.pl --timeout &gt;&gt; /dev/null

linux:/opt/otrs/bin#
</screen>
</para>

<para>
Nach der Einrichtung der Cron-Jobs ist die Installation von OTRS
abgeschlossen, Sie können das System nun über dessen Weboberfläche weiter
an Ihre Bedürfnisse anpassen und benutzen.
</para>

</sect2>

</sect1>

</chapter>
<!-- $Id: first-steps.xml,v 1.10 2006/10/18 13:05:06 cs Exp $ --><chapter id="first-steps-in-otrs">
<title>Die ersten Schritte in OTRS</title>

<abstract>
<para>
Dieser Abschnitt soll einen ersten Überblick über die
Funktionsweise von OTRS und den Aufbau der Weboberfläche des
Systems geben. Es werden die Unterschiede zwischen Mitarbeitern
(Agents), Kunden (Customer) und Administratoren erklärt.
Anschließend wird die erste Anmeldung als OTRS-Administrator
durchgeführt und erläutert, was mit Hilfe der
Benutzereinstellungen für jeden Account innerhalb des Systems festgelegt
werden kann.
</para>
</abstract>

<sect1 id="agent-interface">
<title>Agenten Weboberfläche</title>

<para>
Die Mitarbeiter bearbeiten über die Weboberfläche des Systems
die Anfragen der Kunden, erstellen neue Tickets für andere Mitarbeiter
oder Kunden, legen Tickets über Telefongespräche mit Kunden an,
schreiben FAQ-Einträge, bearbeiten Kundendaten usw.
</para>

<para>
<screenshot>
<screeninfo>index.pl - Login Bildschirm für Agenten</screeninfo>
<graphic srccredit="index.pl - screenshot" scale="40" fileref="screenshots/login.png"/>
</screenshot>
</para>

<para>
Angenommen, Ihr Host mit der OTRS-Installation ist über die Domain

<ulink url="http://www.example.com/">
<citetitle>http://www.example.com</citetitle>
</ulink>

erreichbar, so kann der Login-Bildschirm für die Mitarbeiter und somit
auch für den OTRS-Administrator über die URL

<ulink url="http://www.example.com/otrs/index.pl">
<citetitle>http://www.example.com/otrs/index.pl</citetitle>
</ulink>

aufgerufen werden.
</para>
</sect1>

<sect1 id="customer-interface">
<title>Kunden Weboberfläche</title>

<para>
Kunden können über das speziell für sie vorhandene Webinterface von OTRS
einen eigenen Kundenaccount anlegen, die eigenen Tickets einsehen, Tickets
erstellen und bearbeiten, die Account-Einstellungen anpassen usw.
</para>

<para>
<screenshot>
<screeninfo>customer.pl - Login Bildschirm für Kunden</screeninfo>
<graphic srccredit="customer.pl - screenshot" scale="40" fileref="screenshots/customer-login.png"/>
</screenshot>
</para>

<para>
Angenommen, Ihr Host mit der OTRS-Installation ist über die Domain

<ulink url="http://www.example.com/">
<citetitle>http://www.example.com</citetitle>
</ulink>

zu erreichen, so kann der Login-Bildschirm für die Kunden über die URL

<ulink url="http://www.example.com/otrs/customer.pl">
<citetitle>http://www.example.com/otrs/customer.pl</citetitle>
</ulink>

geladen werden.
</para>
</sect1>

<sect1 id="public-interface">
<title>Public Weboberfläche</title>

<para>
Neben diesen beiden Bereichen der Weboberfläche verfügt OTRS
weiterhin über ein Interface, mit dem die FAQ des Systems
durchsucht werden kann und welches öffentlich, also ohne Anmeldung,
zugänglich ist.
</para>

<para>
<screenshot>
<screeninfo>public.pl - Öffentliche Weboberfläche</screeninfo>
<graphic srccredit="index.pl - screenshot" scale="40" fileref="screenshots/public-interface.png"/>
</screenshot>
</para>

<para>
Das öffentliche Web-Interface ist über die URL

<ulink url="http://www.example.com/otrs/faq.pl">
<citetitle>http://www.example.com/otrs/faq.pl</citetitle>
</ulink>

erreichbar. Ebenfalls ist ein Zugriff auf die FAQ über die URL

<ulink url="http://www.example.com/otrs/public.pl">
<citetitle>http://www.example.com/otrs/public.pl</citetitle>
</ulink>

möglich.
</para>
</sect1>

<sect1 id="first-login">
<title>Die erste Anmeldung am System</title>

<para>
Wie im Abschnitt über die

<link linkend="agent-interface">
Agenten Weboberfläche
</link>

beschrieben, erreichen Sie den Bildschirm für die Anmeldung
am System über die URL

<ulink url="http://www.example.com/otrs/index.pl">
<citetitle>http://www.example.com/otrs/index.pl</citetitle>.
</ulink>

</para>

<para>
<screenshot>
<screeninfo>index.pl - Login screen für OTRS-Administrator</screeninfo>
<graphic srccredit="index.pl - screenshot" scale="40" fileref="screenshots/login.png"/>
</screenshot>
</para>

<para>
Hier haben Sie die Möglichkeit, einen Benutzernamen und ein Kennwort
anzugeben. Um sich als OTRS-Administrator
anzumelden, verwenden Sie als Benutzername "root@localhost" und als
Kennwort "root".
</para>

<warning>
<para>
Diese Zugangsdaten werden bei jeder OTRS-Installation
standardmäßig vergeben. Da das Kennwort für den
OTRS-Administrator somit öffentlich bekannt ist, sollten Sie es
schnellstmöglich ändern! Sie können dies nach der Anmeldung
als OTRS-Administrator über die

<link linkend="user-preferences">
Benutzereinstellungen
</link>

vornehmen.
</para>
</warning>

<para>
Wollen Sie sich nicht als OTRS-Administrator anmelden, geben Sie einfach
den Benutzernamen und das Kennwort Ihres normalen OTRS-Accounts in
die dafür vorgesehenen Eingabefelder ein. Mit Hilfe der
Listbox unterhalb der Eingabefelder für den Benutzernamen und das
Kennwort können Sie weiterhin die Sprache auswählen, die Sie
innerhalb der Oberfläche von OTRS verwenden möchten.
</para>

<para>
Falls Sie einmal ihr Kennwort vergessen haben sollten, können Sie sich
automatisch vom System ein neues Kennwort an die Mailadresse schicken
lassen, die für Ihren OTRS-Account im System hinterlegt ist. Geben Sie
dazu im unteren Bereich des Login-Bildschirms den Benutzernamen Ihres
Accounts an und schicken Sie die Eingabe über den dafür
vorgesehenen Schalter ab. Kurze Zeit später sollte sich in Ihrem
Postfach eine Mail vom OTRS-System befinden, die das neu vergebene Kennwort
enthält.
</para>
</sect1>

<sect1 id="gui-overview">
<title>Die Benutzeroberfläche im Überblick</title>

<para>
Nachdem Sie sich erfolgreich am System angemeldet haben, wird die
Oberfläche von OTRS geladen. Sie befinden sich nach einer Anmeldung
standardmäßig in der sog. Queue-Ansicht. Die Queue-Ansicht
vermittelt einen schnellen Überblick über die Tickets in den
verschiedenen Queues. Sie werden auf neue Nachrichten hingewiesen, die
Anzahl ihrer gesperrten Tickets wird angezeigt usw.
</para>

<para>
<screenshot>
<screeninfo>Bildschirm nach erster erfolgreicher Anmeldung</screeninfo>
<graphic srccredit="First screen - screenshot" scale="40" fileref="screenshots/first-screen.png"/>
</screenshot>
</para>


<para>
Um die Übersichtlichkeit zu erhöhen, wurde die Oberfläche
von OTRS in verschiedene Bereiche aufgeteilt. Innerhalb des schwarzen
Balkens am oberen Fensterrand werden allgemeine Informationen wie die
aktuelle Uhrzeit, das Datum, Ihr Name und Ihre in den
Account-Einstellungen hinterlegte Mailadresse angezeigt. Weiterhin finden
Sie auf der linken Seite des Balkens einen Link über den die
Oberfläche neu geladen werden kann.
</para>

<para>
Im weißen Balken darunter, der sog. Navigationsleiste, werden
verschiedene Schaltflächen dargestellt, über die die Navigation im
System oder die Aktivierung bestimmter Aktionen möglich ist. Der Balken
unterteilt sich in drei Abschnitte. Der linke Bereich enthält
Schaltflächen zur Abmeldung vom System, zur Aktivierung der Queue-Ansicht,
einen Schalter, um auf das Kunden-Backend zuzugreifen oder einen Schalter zum
Laden der Maske für die Volltextsuche über die im System
gespeicherten Tickets. Über die Schalter "Phone-Ticket" und
"E-Mail-Ticket" kann ein neues Telefon- oder E-Mail-Ticket angelegt werden. Mit
Hilfe des Schalters "Statistik" wird der Bildschirm zur Ausgabe verschiedener
Systemstatistiken geladen, über "Einstellungen" gelangen Sie in den
Bereich zur Anpassung Ihrer eigenen Account-Einstellungen. "Bulk-Action"
lädt den Bildschirm für die Ausführung verschiedener Aktionen
auf markierte Tickets. Hiermit können z. B. mehrere Tickets auf einmal
geschlossen oder verschoben werden.
</para>

<para>
Im mittleren Bereich des weißen Balkens werden die Schalter zur
Navigation im System angezeigt. Nach der ersten Anmeldung als
OTRS-Administrator ist hier nur die Schaltfläche "Admin"
aufgeführt. Werden später weitere Module wie z. B. der Kalender
oder der Dateimanager installiert, tauchen die Schalter für diese
Komponenten ebenfalls in diesem Bereich auf.
</para>

<para>
An der rechten Seite des Balkens wird angezeigt, ob neue Nachrichten
für Sie vorhanden sind bzw. wie viele Tickets Sie gesperrt haben, d.h.
von wie vielen Tickets Sie der Eigentümer sind.
</para>

<para>
Im hellgrauen Balken unterhalb der Navigationsleiste werden verschiedene
Systemmeldungen angezeigt. Wenn Sie als Administrator angemeldet sind,
werden Sie z. B. darauf aufmerksam gemacht, dass normale Arbeiten nicht als
Administrator durchgeführt werden sollten. Wurde das Kalender-Modul
installiert, werden innerhalb dieses Balkens z. B. die nächsten Termine
angezeigt.
</para>

<para>
Der darunter liegende schwarze Balken enthält die gerade selektierte
Queue bzw. zeigt an, dass "Meine Queues" ausgewählt wurde. Hinter dem
Begriff "Meine Queues" verbergen sich alle Queues, die Sie für sich
als wichtig erachten und genauer überwachen möchten. Sie
können in Ihren

<link linkend="user-preferences">
Benutzereinstellungen
</link>

die Queues auswählen, die Sie in "Meine Queues" aufnehmen möchten.
</para>

<para>
Unter dem Bereich mit der gerade selektierten Queue wird ein grauer Balken
angezeigt, der einen Überblick über die im System
verfügbaren Tickets gibt. Innerhalb des nächsten Balkens wird
eine Übersicht für die verschiedenen Queues und deren Anzahl an
offenen Tickets präsentiert. Nach einer Neuinstallation ist zu
erkennen, dass in "Meine Queues" noch kein offenes Ticket vorhanden ist, in
der Queue "Raw" sich jedoch ein noch nicht gesperrtes Ticket befindet.
</para>

<para>
<screenshot>
<screeninfo>Inhalt der Raw-Queue nach der ersten Anmeldung</screeninfo>
<graphic srccredit="Raw queue - screenshot" scale="40" fileref="screenshots/raw-queue.png"/>
</screenshot>
</para>

<para>
Wenn Sie nun die Queue "Raw" auswählen, wird die Oberfläche neu
aufgebaut und der Inhalt dieser Queue angezeigt. Im unteren Bereich des
Bildschirms erscheinen nun noch die zusätzlichen Informationen für
das Ticket, welches sich in der Queue "Raw" befindet. In einem schwarzen
Balken ist die ID, also die eindeutige Ticket-Kennung, und das Alter des Tickets
zu erkennen. Auf der linken Seite dieses Balkens sehen Sie die Checkbox, mit
der das Ticket für die Bulk-Action markiert werden kann. In der
nächsten Zeile, die grau dargestellt wird, sind die Eigenschaften bzw.
die Aktionen aufgeführt, die auf das Ticket angewendet werden
können ("Sperren", "Inhalt", "History" usw.). In der gleichen Zeile
ist rechts eingerückt das Erstellungsdatum und die Erstellungszeit des
Tickets zu erkennen.
</para>

<para>
Im weiteren Verlauf teilt sich die Oberfläche in zwei Bereiche auf.
Auf der linken Seite wird in weißer Farbe eine Vorschau des
Ticketinhaltes angezeigt. Es ist zu erkennen, wer das Ticket gesendet hat, an
welche Adresse es geschickt wurde, wie der Betreff lautet und was die ersten
Zeilen beinhalten. Rechts daneben werden in grauer Farbe weitere
Informationen wie die Priorität oder der aktuelle Status des Tickets
angezeigt. Weiterhin kann eingesehen werden, ob das Ticket bereits einem
Kunden zugeordnet wurde. Über verschiedene Schaltflächen
können Sie auf das Ticket antworten, eine Anrufnotiz erstellen oder
das Ticket in eine neue Queue verschieben.
</para>

<para>
Am unteren Ende des Bildschirms erscheint innerhalb eines schwarzen
Balkens der Seitenfooter. Dieser beinhaltet ebenfalls einige Schalter zum
Aktivieren der Queue-Ansicht oder für die Erstellung eines
Telefontickets.
</para>
</sect1>

<sect1 id="what-is-a-queue">
<title>Was verbirgt sich hinter dem Begriff Queue?</title>

<para>
Da Queues in OTRS sehr wichtig sind und als Grundkonzept hinter allem
stehen und der Begriff in den letzten Abschnitten schon mehrmals verwendet
wurde, soll hier näher erklärt werden, was sich hinter dem
Begriff Queue verbirgt.
</para>

<para>
Normalerweise werden E-Mails in einer INBOX gespeichert und verwaltet. Eine
INBOX ist eine große Datei, in der alle E-Mails aneinandergereiht
werden. Neue E-Mails werden einfach an das Ende der INBOX angehängt. Das
E-Mail-Programm, welches Sie zum Lesen und Bearbeiten Ihrer Nachrichten
benutzen,  liest die INBOX-Datei aus, strukturiert den Inhalt dieser Datei
neu (wenn z. B. eine E-Mail mitten aus der INBOX-Datei gelöscht
wird) und bereitet den Inhalt für Sie als Nutzer auf.
</para>

<para>
Eine Queue in OTRS ist ein Mechanismus, mit dessen Hilfe viele
Tickets gespeichert und verwaltet werden können, also auch eine Art
INBOX. Als Anwender ist es völlig unwichtig zu wissen, wo oder
wie das Ticket gesichert ist. Wichtig ist nur, zu wissen, welcher Queue
das Ticket zugeordnet wurde. Anwender, also die sog. Agents (z. B. die
Mitarbeiter ihrer Supportabteilung), können nun Tickets zwischen
den Queues verschieben! Warum aber sollten sie das tun?
</para>

<para>
Gehen wir zur praktischeren Erklärung noch mal von Max Mustermanns
Unternehmen aus dem Abschnitt

<link linkend="basic-tts-example">
ein Beispiel für ein Trouble Ticket System
</link>

aus. Max Mustermann hat nach seinem anfänglichen Support-Chaos OTRS
installiert, und er und seine Mitarbeiter nutzen das System zur
Bearbeitung der Anfragen für die Videorekorder. Eine Queue, in die
alle Anfragen einsortiert werden, reicht in dieser Situation aus. Nach
einiger Zeit bringt Max Mustermann einen DVD-Player auf den Markt, der von
den Kunden gut angenommen wird. Doch auch zu diesem Gerät laufen
immer mehr Anfragen in das Ticket System und die Verwaltung der E-Mails
mit einer Queue wird immer unübersichtlicher. Deshalb entschließt
sich Max Mustermann nach einiger Zeit, sein Supportsystem weiter zu
optimieren. Er richtet zwei neue Queues ein, so dass er nun
insgesamt drei Queues in OTRS definiert hat. Die erste und schon
länger vorhandene Queue wird zur Eingangsqueue, in die erst mal
alle Mails wandern, umfunktioniert. Daneben gibt es jetzt noch die neuen
Queues "Videorekorder" und "DVD-Player". Herr Mustermann beauftragt
Frau Müller als sog. Dispatcherin tätig zu werden und mehrmals
am Tag die Mails in der Eingangsqueue zu sichten und sie, je nach
Inhalt, der Queue "Videorecorder" oder der Queue "DVD-Player"
zuzuordnen. Herr Meier bearbeitet ab jetzt nur noch die Anfragen in der
Videorekorder-Queue, Herr Schulze geht nur noch auf die Anfragen
innerhalb der DVD-Player-Queue ein. Beide haben auf die jeweils anderen
zwei Queues keinen Zugriff. Herr Mustermann kümmert sich weiter wie
gewohnt um alle Arten von Anfragen und darf auf alle drei Queues
zugreifen, die Möglichkeiten der Vergabe von Zugriffsrechten
innerhalb von OTRS macht es möglich.
</para>

<para>
Das Sortieren von Mails in verschiedene Queues schafft also Ordnung und
mehr Übersicht in der täglichen Mailflut, deshalb sind Queues sehr
wichtig für OTRS. Durch die Einteilung der Mitarbeiter (agents) in
verschiedene Benutzergruppen mit differenzierten
Zugriffsrechten auf die einzelnen Queues, kann die Abarbeitung der
Anfragen weiter optimiert werden. Mit Hilfe von Queues können Sie die
Struktur Ihres Unternehmens abbilden bzw. einzelne
Geschäftsvorgänge abgrenzen. So könnte Max Mustermann
neben seinem Support-Queues für die verschiedenen Geräte für
Bestellungen eine Queue mit dem Namen "Sales" anlegen und als Unter-Queues
"Anfragen", "Angebote", "Bestellungen" usw. definieren, um den
Bestellvorgang zu optimieren. Je besser und strukturierter ein Support-
system organisiert ist, desto weniger Zeit und letztlich auch finanzielle
Mittel müssen dafür aufgebracht werden. Queues und Unter-Queues
helfen bei der Strukturierung bzw. bei der Abbildung von Abläufen.
</para>
</sect1>

<sect1 id="user-preferences">
<title>Benutzereinstellungen</title>

<para>
Die Einstellungen eines Accounts lassen sich mit Hilfe der
Benutzereinstellungen den eigenen Wünschen entsprechend anpassen. Dabei
spielt keine Rolle, ob man als Mitarbeiter, Kunde oder Administrator
am System angemeldet ist. Die Benutzereinstellungen sind über den
Link "Einstellungen" sowohl innerhalb des Interfaces für Mitarbeiter
bzw. Administratoren als auch der Oberfläche für
Kunden erreichbar.
</para>

<para>
<screenshot>
<screeninfo>Persönliche Account-Einstellungen für Kunden</screeninfo>
<graphic srccredit="index.pl - screenshot" scale="40" fileref="screenshots/customer-preferences.png"/>
</screenshot>
</para>

<para>
Für Kunden-Accounts gilt, dass die Oberflächensprache, die
maximale Anzahl an angezeigten Tickets pro Seite und die Aktualisierungszeit
für das Kunden-Webinterface angepasst werden kann. Weiterhin ist es
möglich, das persönliche Kennwort zu ändern und die Anzeige
von geschlossenen Tickets an- bzw. abzuschalten.
</para>

<para>
<screenshot>
<screeninfo>Persönliche Account-Einstellungen für Agenten</screeninfo>
<graphic srccredit="index.pl - screenshot" scale="40" fileref="screenshots/agent-preferences.png"/>
</screenshot>
</para>

<para>
In den Benutzereinstellungen eines Mitarbeiters kann ebenfalls die
Oberflächensprache, das Anzeigeschema, das Standardwörterbuch
für die Rechtschreibprüfung und die Ansicht für
die Queues ausgewählt werden. Weiterhin kann eingestellt werden, in
welchem Zeitintervall die Oberfläche neu geladen werden soll, wie
viele Tickets maximal pro Seite angezeigt werden sollen und welcher
Bildschirm nach der Erstellung eines neuen Tickets automatisch geladen
wird. Sie können Ihr Kennwort ändern und festlegen, bei welchen
Ereignissen Sie vom System per Mail benachrichtigt werden möchten.
Benachrichtigungen können verschickt werden, wenn ein neues Ticket
in "Meine Queues" verfügbar ist, wenn Sie eine Nachfrage auf ein von
Ihnen gesperrtes Ticket erhalten (also wenn Sie der Eigentümer eines
solchen Tickets sind), wenn ein Ticket vom System freigegeben wurde und wenn
ein Ticket in "Meine Queues" verschoben wurde. Die Benachrichtigungsmails
werden an die Mailadresse gesendet, die bei der Erstellung Ihres Accounts
im System hinterlegt wurde.
</para>

<para>
Die Queues, die sie in "Meine Queues" aufnehmen möchten, können
Sie ebenfalls in Ihren Benutzereinstellungen auswählen. Sie sollten
in "Meine Queues" nur die Queues aufnehmen, die für Sie am wichtigsten
sind und die Sie besonders aufmerksam überwachen möchten.
</para>
</sect1>

</chapter>
<!-- $Id: adminarea.xml,v 1.17 2006/10/18 13:07:15 cs Exp $ --><chapter id="adminarea">
<title>Der Administrationsbereich von OTRS</title>

<sect1 id="adminarea-general">
<title>Allgemeines zum Administrationsbereich</title>

<para>
Der Administrationsbereich von OTRS ist die zentrale Anlaufstelle für
den Administrator des Ticket Systems. Innerhalb dieses Bereiches
können alle wichtigen Einstellungen der Systemkonfiguration
eingesehen bzw. geändert und das System auf die eigenen Bedürfnisse
angepasst werden.
</para>

<para>
Die Administrationsoberfläche kann über den Link "Admin"
innerhalb der Navigationsleiste des Agent-Interfaces geladen werden. Damit
dieser Link in der Navigationsleiste überhaupt sichtbar ist,
müssen Sie als OTRS-Administrator am System angemeldet sein bzw.
über Administrationsrechte im System verfügen. Nach einer
Standardinstallation können Sie sich mit dem Benutzernamen
"root@localhost" und dem Kennwort "root" als OTRS-Admin am System anmelden.
</para>

<warning>
<para>
Bitte ändern Sie schnellstmöglich über die

<link linkend="user-preferences">
Benutzereinstellungen
</link>

das Kennwort für root@localhost, da es sich hierbei um ein
standardmäßig vergebenes Kennwort handelt, das allgemein bekannt ist.
</para>
</warning>

<para>
<screenshot>
<screeninfo>Der Administrationsbereich von OTRS</screeninfo>
<graphic srccredit="Adminarea - screenshot" scale="40" fileref="screenshots/adminarea.png"/>
</screenshot>
</para>
</sect1>

<sect1 id="adminarea-user-groups-and-roles">
<title>Benutzer-, Gruppen- und Rollenverwaltung</title>

<sect2 id="adminarea-user">
<title>Benutzer</title>

<para>
Über den Link "Benutzer" gelangen Sie in die Benutzerverwaltung von
OTRS. Hier können Sie Benutzer anlegen, bearbeiten und deaktivieren.
Weiterhin lassen sich einige grundlegende Einstellungen für den Benutzer
festlegen, z. B. die Oberflächensprache oder das Anzeigeschema.
</para>

<para>
<screenshot>
<screeninfo>Benutzerverwaltung in OTRS</screeninfo>
<graphic srccredit="Adminarea user management - screenshot" scale="40" fileref="screenshots/admin-users.png"/>
</screenshot>
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
können einmal im System angelegte Benutzer nicht entfernt werden. Um einen
Benutzer-Account zu deaktivieren, setzen Sie in den Einstellungen den
entsprechenden Benutzer mit Hilfe der Listbox für "Gültig" auf
"ungültig" bzw. "ungültig-temporär".
</para>
</note>

<para>
Nachdem Sie einen neuen Benutzer angelegt haben, muss dieser einer Gruppe
bzw. einer Rolle zugewiesen werden. Sie werden nach dem Anlegen
eines neuen Benutzers automatisch auf die Bildschirmmaske für die
Zuweisung eines Benutzers in Gruppen weitergeleitet.
</para>

</sect2>

<sect2 id="adminarea-groups">
<title>Gruppen</title>

<para>
Jeder Mitarbeiter mit einem Account im OTRS, sollte mindestens einer
Benutzergruppe angehören. Über den Link "Gruppen" gelangen Sie in
die Gruppenverwaltung von OTRS.
</para>

<para>
<screenshot>
<screeninfo>Gruppenverwaltung in OTRS</screeninfo>
<graphic srccredit="Adminarea group management - screenshot" scale="40" fileref="screenshots/admin-groups.png"/>
</screenshot>
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
können einmal im System angelegte Gruppen nicht entfernt werden. Um
eine Gruppe zu deaktivieren, setzen Sie in den Einstellungen der
entsprechenden Gruppe in der Listbox für "Gültig" den Wert
entweder auf "ungültig" bzw. "ungültig-temporär".
</para>
</note>

<para>
Nach einer Standard-Installation sind bereits vier Gruppen im System
verfügbar.
</para>

<para>
<table id="table-of-groups-after-installation">
<title>Standardmäßig vorhandene Gruppen in OTRS</title>
  <tgroup cols="2">
    <thead>
      <row>
        <entry>
         Gruppe
        </entry>
        <entry>
          Beschreibung
        </entry>
      </row>
    </thead>
    <tbody>
      <row>
        <entry>
            admin
        </entry>
        <entry>
          Gruppe für die Benutzer mit Administrationsrechten. Nach
          einer Installation ist in dieser Gruppe nur der Benutzer
          "root@localhost".
        </entry>
      </row>
      <row>
        <entry>
          faq
        </entry>
        <entry>
          Benutzer in dieser Gruppe dürfen lesend (ro) oder schreibend
          (rw) auf das FAQ-System von OTRS zugreifen.
          Standardmäßig befindet sich nach einer Installation kein
          Benutzer in dieser Gruppe, auch nicht "root@localhost".
        </entry>
      </row>
      <row>
        <entry>
          stats
        </entry>
        <entry>
          Benutzer in dieser Gruppe dürfen lesend (ro) oder schreibend
          (rw) auf das Statistikmodul von OTRS zugreifen, d.h. sie
          können Statistiken einsehen oder auch erstellen. Nach einer
          Installation befindet sich lediglich "root@localhost" in dieser
          Gruppe.
        </entry>
      </row>
      <row>
        <entry>
          users
        </entry>
        <entry>
          Dies ist die Gruppe, in die normale Mitarbeiter aufgenommen
          und mit den kompletten Rechten ausgestattet werden sollten.
          Dadurch wird für die Mitarbeiter das normale Arbeiten im
          System ermöglicht, der Zugriff auf alle Funktionen rund um
          Tickets ist gegeben. Nach einer Installation ist diese Gruppe
          leer.
        </entry>
      </row>
    </tbody>
  </tgroup>
</table>
</para>

<para>
Um einen Benutzer einer Gruppe zuzuweisen bzw. die Gruppenmitgliedschaft
eines Benutzers zu ändern, kann der Link "Benutzer &lt;-&gt;
Gruppen" im Administrationsbereich genutzt werden.
</para>

<para>
<screenshot>
<screeninfo>Zuweisung von Benutzer und Gruppen</screeninfo>
<graphic srccredit="Adminarea groups and users - screenshot" scale="40" fileref="screenshots/admin-users-and-groups.png"/>
</screenshot>
</para>
<para>
Im unteren Bereich des Bildschirms wird eine Übersicht angezeigt, die
alle Benutzer und Gruppen auflistet. Indem Sie auf einen Benutzernamen
klicken, bekommen Sie dessen Gruppenzugehörigkeiten angezeigt und
können diese ändern. Bei der Auswahl einer Gruppe werden alle
Benutzer aufgelistet, die sich in dieser Gruppe befinden.
</para>

<para>
Um eine bessere Abstufung der Rechte im System sicher zu stellen,
können einem Benutzer verschiedene Rechte pro Gruppe zugewiesen
werden. Nach einer Standardinstallation sind in jede Gruppe die
folgenden Rechte vorhanden.
</para>

<para>
<table id="table-of-group-permissions-after-installation">
<title>Berechtigungen in den Benutzergruppen von OTRS</title>
  <tgroup cols="2">
    <thead>
      <row>
        <entry>
          Berechtigung
        </entry>
        <entry>
          Beschreibung
        </entry>
      </row>
    </thead>
    <tbody>
      <row>
        <entry>
          ro
        </entry>
        <entry>
          Nur Lesezugriff auf die Tickets bzw. Beiträge dieser Gruppe
          bzw. der Gruppe zugewiesenen Queues oder Bereiche.
        </entry>
      </row>
      <row>
        <entry>
          Verschieben in (move into)
        </entry>
        <entry>
          Recht zum Verschieben von Tickets oder Beiträgen innerhalb
          der Queues bzw. Bereiche dieser Gruppe.
        </entry>
      </row>
      <row>
        <entry>
          Erstellen (create)
        </entry>
        <entry>
          Recht zum Erstellen von Tickets oder Beiträgen in den Queues,
          bzw. Bereichen dieser Gruppe.
        </entry>
      </row>
      <row>
        <entry>
          Besitzer (owner)
        </entry>
        <entry>
          Recht zum Ändern des Eigentümers von Tickets, bzw.
          Beiträgen in den der Gruppe zugewiesenen Queues bzw. Bereiche.
        </entry>
      </row>
      <row>
        <entry>
          Priorität (priority)
        </entry>
        <entry>
          Recht zum Ändern der Priorität von Tickets, bzw.
          Beiträgen in den der Gruppe zugewiesenen Queues bzw. Bereiche.
        </entry>
      </row>
      <row>
        <entry>
          rw
        </entry>
        <entry>
          Voller Lese- und Schreibzugriff auf alle Inhalte der dieser
          Gruppe zugewiesenen Queues, bzw. Bereiche.
        </entry>
      </row>
    </tbody>
  </tgroup>
</table>
</para>

</sect2>

<sect2 id="adminarea-roles">
<title>Rollen</title>

<para>
Rollen sind ein sehr nützliches und mächtiges Feature in OTRS, um schnell
und einfach die Vergabe von Zugriffsrechten für viele Benutzer vorzunehmen.
Vor allem bei großen und komplexen Installationen mit
vielen Benutzern, Gruppen und Queues, zahlt sich dieses Feature schnell
aus und erspart dem OTRS-Administrator viel Zeit und Arbeit.
</para>

<para>
Um den Nutzen von Rollen zu verdeutlichen, stellen Sie sich die Situation
vor, dass Sie ein OTRS-System mit 100 Benutzern verwalten. 90 Benutzer
haben Zugriff auf eine Queue namens Support, die mehrere themenspezifische
Unter-Queues enthält und in der die Support-Anfragen Ihrer Kunden landen.
Die restlichen Queues des Systems sind für die 90 Supporter nicht
zugänglich, dies wurde durch Gruppenzugriffsrechte so festgelegt. Die
übrigen 10 Benutzer haben Zugriff auf alle Queues im System. Sie sortieren
falsch einsortierte Mails aus, behalten die "Raw"-Queue im Auge und
verschieben Spam-Mails in die "Junk"-Queue. Im Rahmen einer
Unternehmensumstrukturierung wird eines Tages zusätzlich eine Abteilung
eröffnet, die Produkte verkaufen soll. Es müssen Angebote,
Auftragsbestätigungen und Rechnungen  erstellt, Anfragen bearbeitet,
Bestellungen ans Lager weitergeleitet und Stornierungen entgegen genommen
werden. Ein Teil der bisherigen Mitarbeiter soll in verschiedenen
Bereichen der neuen Abteilung tätig werden und Sie als OTRS-Administrator
haben nun die Aufgabe die neuen Queues anzulegen, die erweiterten
Zugriffsrechte anzupassen und diese für die einzelnen Benutzer zu ändern.
Da es mühsam und viel zu umständlich wäre, für einen Teil aller 100
Benutzer einzeln die Zugrifssrechte zu ändern, richten Sie Rollen ein die
mit Hilfe von Gruppenberechtigungen die verschiedenen Zugriffsrechte regeln.
Anschließend ändern Sie für die entsprechenden Benutzer auf einmal die
Zugriffsberechtigungen, indem Sie diese der entsprechenden Rolle zuweisen.
Beim Anlegen neuer Benutzer müssen Sie nicht mehr einzeln die Gruppen und
Zugrifssrechte einstellen, auch hier genügt die Verknüpfung des neuen
Benutzers mit einer Rolle.
</para>

<para>
<screenshot>
<screeninfo>Rollenverwaltung in OTRS</screeninfo>
<graphic srccredit="Adminarea roles - screenshot" scale="40" fileref="screenshots/admin-roles.png"/>
</screenshot>
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
können einmal im System angelegte Rollen nicht mehr entfernt werden. Um eine
Rolle zu deaktivieren, setzen Sie in den Einstellungen die
entsprechende Rolle mit Hilfe der Listbox für "Gültig" auf
"ungültig" oder "ungültig-temporär".
</para>
</note>

<para>
<screenshot>
<screeninfo>Zuweisung von Benutzern zu Rollen</screeninfo>
<graphic srccredit="Adminarea roles users - screenshot" scale="40" fileref="screenshots/admin-roles-users.png"/>
</screenshot>
</para>

<para>
<screenshot>
<screeninfo>Zuweisung von Gruppen zu Rollen</screeninfo>
<graphic srccredit="Adminarea roles groups - screenshot" scale="40" fileref="screenshots/admin-roles-groups.png"/>
</screenshot>
</para>

<para>
Um die Zugriffsrechtevergabe einer Rolle näher zu spezifizieren, können
die Links "Rollen &lt;-&gt; Benutzer" bzw. "Rollen &lt;-&gt; Gruppen"
genutzt werden. Mit Hilfe dieser beiden Links können Sie sich eine
Übersicht über die 1:n und n:1 Beziehungen der Rolle zu den einzelnen im
System vorhandenen Benutzer oder Gruppen anzeigen lassen und diese ändern.
</para>

</sect2>

</sect1>

<sect1 id="customer-user-and-groups">
<title>Kundenbenutzer und -gruppen</title>

<sect2 id="adminarea-customeruser">
<title>Kunden Benutzer</title>

<para>
OTRS unterstützt, wie bereits erwähnt, verschiedene Arten von Benutzern.
Über den Link "Kunden Benutzer", den Sie im Admin-Bereich von OTRS
finden, können Sie die Benutzerdaten der im System angelegten Kunden
verwalten. Ein Kunde kann sich mit Hilfe seines Accounts in das vom
Ticket-System bereitgestellte Webinterface für Kunden einloggen, um dort
die eigenen Tickets einzusehen, neue Tickets zu verfassen, usw. Weiterhin
wird ein Kunden-Account vom System für die Historie von Tickets benötigt.
</para>

<para>
<screenshot>
<screeninfo>Kundenverwaltung in OTRS</screeninfo>
<graphic srccredit="Adminarea customer - screenshot" scale="40" fileref="screenshots/admin-customer.png"/>
</screenshot>
</para>

<para>
Neben der Möglichkeit in der Datenbank nach einem bestimmten Kunden zu
suchen, kann das Backend umgestellt werden, über das auf die
Kundendaten zugegriffen wird. In OTRS lassen sich mehrere Datenbanken mit
Kundendaten einbinden, genauere Informationen hierzu finden Sie im
Abschnitt

<link linkend="external-backends">
Einbinden externer Backends für Agents und Customer
</link>.
</para>

<para>
Mit Hilfe des Formulars an der rechten Bildschirmseite kann ein neuer
Kunden-Account erstellt werden. Alle Eingabefelder, die mit einem Stern (*)
markiert sind, müssen ausgefüllt werden. Neben den üblichen
Daten wie Vor- und Nachname, Mailadresse, den Einstellungen für die
Oberfläche, usw. muss ein Benutzername und ein Kennwort angegeben
werden, wodurch die Anmeldung am System ermöglicht wird. Desweiteren
ist eine Angabe für "Kunden#" erforderlich, die eine eindeutige
Kennung darstellt, über die das System den Kunden ansprechen kann bzw.
identifiziert. Für "Kunden#" kann also z. B. eine Kundennummer oder
auch die Mailadresse des Kunden eingetragen werden.
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
kann ein einmal im System angelegter Kunde nicht entfernt werden. Um
einen Kunden-Account trotzdem zu deaktivieren, setzen Sie in den
Einstellungen des entsprechenden Kunden-accounts in der Listbox
für "Gültig" den Wert entweder auf "ungültig" bzw.
"ungültig-temporär".
</para>
</note>

</sect2>

<sect2 id="adminarea-customer-user-groups">
<title>Kundengruppen</title>

<para>
Genau wie Agenten, können in OTRS auch Kundenbenutzer verschiedenen Gruppen
zugewiesen werden. Dieses Feature kann z. B. dann interessant sein, wenn Sie
mehrere Kundenbenutzer einer Firma anlegen möchten, die alle über das
Kundeninterface nur Tickets in eine oder mehrere bestimmte Queues senden
sollen. Legen Sie hierzu zuerst über die

<link linkend="adminarea-groups">
Gruppenverwaltung
</link>

die Gruppe an, in der alle Kundenbenutzer der Firma aufgenommen werden
sollen. Anschließend erstellen Sie im

<link linkend="adminarea-queue">
Verwaltungsbereich für queues
</link>

die Queues und ordnen diese der gerade angelegten Gruppe zu.
</para>

<para>
Im nächsten Schritt aktivieren Sie mit Hilfe des Konfigurationsparameters

<link linkend="Framework:Frontend::Customer:CustomerGroupSupport">
CustomerGroupSupport
</link>

die Unterstützung für Kundengruppen. Mit Hilfe des Parameters

<link linkend="Framework:Frontend::Customer:CustomerGroupAlwaysGroups">
CustomerGroupAlwaysGroups
</link>

legen Sie fest, welchen Gruppen ein neu angelegter Kundenbenutzer
automatisch zugeordnet werden soll.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von Kundengruppen</screeninfo>
<graphic srccredit="&gt;Adminarea customer groups - screenshot" scale="40" fileref="screenshots/admin-customer-groups.png"/>
</screenshot>
</para>

<para>
Über den Link "Kunden Benutzer &lt;-&gt; Gruppen" können Sie nun die
Zuordnung der Kundenbenutzer in die gewünschten Gruppen vornehmen.
Je nachdem, welche Queues zu welchen Gruppen gehören, werden später im
Webinterface für Kunden auch nur die entsprechenden Queues zur Verfügung
gestellt.
</para>

</sect2>

</sect1>


<sect1 id="adminarea-queue">
<title>Queues</title>

<para>
Über den Link "Queue" innerhalb des Admin-Bereiches von OTRS können Sie
die

<link linkend="what-is-a-queue">
Queues
</link>

Ihres Systems verwalten. Nach einer Standard-Installation sind bereits die
Queues "Junk", "Misc", "Postmaster" und "Raw" im System angelegt. "Raw"
ist die Default-Queue, in ihr landen alle neuen Tickets, so lange kein
Filter definiert wurde. "Junk" kann z. B. zum Aussortieren von Spam-Mails
genutzt werden.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung der Queues in OTRS</screeninfo>
<graphic srccredit="Adminarea queue - screenshot" scale="40" fileref="screenshots/admin-queue.png"/>
</screenshot>
</para>

<para>
Über das Formular auf der rechten Bildschirmseite kann eine neue Queue
angelegt werden. Zusätzlich zum Namen der neuen Queue kann angegeben
werden, für welche Benutzergruppe die Queue bereitgestellt werden
und ob die neue Queue eine Unter-Queue (sub queue) von einer bereits in
Ihrem System vorhandenen Queue sein soll.
</para>

<para>
Wurde ein Ticket von einem Agenten gesperrt, so können Sie mit Hilfe
des Freigabezeit-Intervalls festlegen, wann ein Ticket wieder automatisch
vom System freigegeben werden soll. So können auch die anderen
Mitarbeiter wieder auf dieses Ticket zugreifen und es bearbeiten.
</para>

<para>
Geben Sie für Eskalationszeit einen Wert an, so blockieren Tickets,
die älter als die angegebene Zeit sind, die Bearbeitung neuerer
Tickets. Diese Einstellung stellt also sicher, dass ältere Tickets ab
einem bestimmten Alter bevorzugt bearbeitet werden müssen, neuere
Tickets werden dann nicht mehr in der Queue angezeigt.
</para>

<para>
Weiterhin können Sie festlegen, dass bei einem Follow-Up auf ein Ticket
wieder der Mitarbeiter Eigentümer dieses Tickets wird, der zuletzt als
Eigentümer im System für dieses Ticket vermerkt war. Dies stellt
sicher, dass die Nachfrage eines Kunden zuerst bei demselben
Mitarbeiter landet, der sich zuletzt um dieses Ticket gekümmert
hat.
</para>

<para>
Der Parameter für die Systemadresse legt fest, mit welcher
Absenderadresse Mails aus dieser Queue versendet werden sollen. Mit Hilfe
der Parameter für Anrede und Signatur kann eingestellt werden, welche
Vorgaben hier standardmäßig bei Antworten auf Tickets in
dieser Queue genutzt werden. In den Abschnitten

<link linkend="adminarea-emailaddresses">
E-Mailadressen
</link>


<link linkend="adminarea-salutations">
Anreden
</link>

und

<link linkend="adminarea-signatures">
Signaturen
</link>

erfahren Sie mehr über die Einrichtung dieser Parameter.
</para>

<para>
Mit Hilfe der verschiedenen Kundeninfo-Parameter können Sie
schließlich festlegen, bei welchen Ereignissen ein Kunde über die
Änderungen bei einem Ticket in dieser Queue informiert werden soll.
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
kann eine einmal im System angelegte Queue nicht entfernt werden. Um
eine Queue trotzdem zu deaktivieren, setzen Sie in den Einstellungen
der entsprechenden Queue in der Listbox für "Gültig" den Wert
entweder auf "ungültig" bzw. "ungültig-temporär".
</para>
</note>

<para>
Alle gerade beschriebenen Konfigurationsmöglichkeiten für Queues,
gelten auch für Unter-Queues. Somit lassen sich mit Hilfe der
Queues in OTRS z. B. die einzelnen Abteilungen Ihres Betriebes oder die
verschiedenen Phasen eines Geschäftsvorgangs (Anfrage, Angebot,
Bestellung, usw.) abbilden. Dies sollten Sie sich bei der Strukturierung
Ihres OTRS zu Nutze machen.
</para>

</sect1>

<sect1 id="adminarea-salutations-signatures-attachments-and-answers">
<title>Anreden, Signaturen, Anlagen und Antwortvorlagen</title>

<para>
Um das Antworten auf Tickets zu beschleunigen und das Aussehen
beantworteter Tickets zu vereinheitlichen, können in OTRS
Antwortvorlagen erstellt werden. Jede Antwortvorlage kann einer oder
mehreren Queues bzw. Unter-Queues zugeordnet werden, es können mehrere
Antwortvorlagen für jede Queue definiert werden. In der Queue-Ansicht
bzw. in "Meine Queues" erscheinen die verschiedenen Antwortvorlagen als
Links unter jedem angezeigten Ticket, eine Antwort auf ein Ticket mit einer
bestimmten Vorlage kann somit schnell durchgeführt werden.
</para>

<para>
Nach einer Standardinstallation ist für jede Queue die Antwortvorlage
"empty answer" vorhanden. Im Admin-Bereich kann über den Link
"Antworten" auf die im System gespeicherten Antwortvorlagen zugegriffen und
diese bearbeitet werden.
</para>

<para>
<screenshot>
<screeninfo>Antwortvorlagen</screeninfo>
<graphic srccredit="Adminarea response - screenshot" scale="40" fileref="screenshots/admin-response.png"/>
</screenshot>
</para>

<para>
<screenshot>
<screeninfo>Zuweisung einer Antwortvorlage zu einer Queue</screeninfo>
<graphic srccredit="Adminarea response queue - screenshot" scale="40" fileref="screenshots/admin-response-queue.png"/>
</screenshot>
</para>

<para>
Um eine Antwortvorlage einer oder mehreren Queues zuzuweisen, aktivieren
Sie im Admin-Bereich den Link "Antworten &lt;-&gt; Queues". Es wird eine
Tabelle geladen, die die Queues und die einzelnen Antwortvorlagen und deren
Beziehung zueinander (1:n oder n:1) anzeigt. Hier können Sie nun die
Queue oder die Antwortvorlage auswählen, um die Zuordnung zu
bearbeiten.
</para>

<para>
Wenn Sie zum Beantworten eines Tickets, z. B. in der Queue-Ansicht, auf den
Link für eine Antwortvorlage klicken, können Sie feststellen,
dass nicht nur der Text der Antwortvorlage sondern auch eine Anrede, der
zitierte Ticketinhalt und eine Signatur geladen werden. Antwortvorlagen
setzen sich also aus verschiedenen Textbausteinen zusammen. Dies sind die
Anrede und Signatur der Queue, in der sich das zu beantwortende Ticket
befindet, der Text des Tickets auf das geantwortet werden soll und ggf. der
Text der Antwortvorlage selbst, der wie gerade beschrieben, festgelegt
werden kann. Diese Elemente sind standardmäßig so angeordnet,
dass beim Antworten zuerst die Anrede, danach der zitierte Text des zu
beantwortende Ticket, anschließend ggf. der Text der Antwortvorlage
und zum Schluss die Signatur ausgegeben wird.
</para>

<sect2 id="adminarea-salutations">
<title>Anreden</title>

<para>
Ein Textbaustein für eine Antwortvorlage ist die Anrede. Anreden
können einer Queue zugeordnet werden, wie im Abschnitt zu den

<link linkend="adminarea-queue">
Queues
</link>

beschrieben, nur so werden Sie bei Antworten für Tickets aus dieser
Queue verwendet. Über den Link "Anreden" innerhalb des Admin-Bereiches,
können Sie die verschiedenen Anreden Ihres Systems verwalten.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von Anreden</screeninfo>
<graphic srccredit="Adminarea salutation - screenshot" scale="40" fileref="screenshots/admin-salutation.png"/>
</screenshot>
</para>

<para>
Nach einer Standardinstallation von OTRS sind bereits zwei Anreden im
System gespeichert, "system standard salutation (de/buiss)" und
"system standard salutation (en)".
</para>

<para>
Damit auch dynamische Inhalte in eine Anrede eingebaut werden
können, also Inhalte, die sich bei jeder Anrede ändern, können
verschiedene Variablen in den Anredentext eingebaut werden. Der in der
Variable gespeicherte Text wird beim Antworten automatisch in den Text
eingefügt. Ein variabler Textteil könnte z.b. der Name oder
die Mailadresse der Person sein, auf deren Ticket sie antworten.
</para>

<para>
Im unteren Teil der Bildschirmmaske zum Ändern oder Anlegen einer
Anrede finden Sie die verschiedenen OTRS-Variablen, die Sie für die
dynamische Aufbereitung eines Anredentextes verwenden können. OTRS-Variablen
zeichnen sich dadurch aus, dass sie von spitzen Klammern (&lt;&gt;)
eingeschlossen sind. Zwischen den spitzen Klammern steht der Name der
Variable, der sich oft auf den in der Variable gespeicherten Inhalt
bezieht. Bauen Sie z. B. in Ihrem Anredentext die Variable
&lt;OTRS_LAST_NAME&gt; ein, so wird diese später durch den
Nachnamen der Person ersetzt, deren Ticket Sie beantworten. Sehen Sie
sich auch die schon bereits im System gespeicherten Anreden an, dann wird
die Verwendung der verschiedenen Variablen klarer.
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
kann eine einmal im System angelegte Anrede nicht entfernt werden. Um
eine Anrede trotzdem zu deaktivieren, setzen Sie in den Einstellungen
der entsprechenden Anrede in der Listbox für "Gültig" den Wert
entweder auf "ungültig" bzw. "ungültig-temporär".
</para>
</note>

</sect2>

<sect2 id="adminarea-signatures">
<title>Signaturen</title>

<para>
Ein weiterer Textbaustein für eine Antwortvorlage, ist die Signatur.
Signaturen können einer Queue zugeordnet werden, wie im Abschnitt zu
den

<link linkend="adminarea-queue">
Queues
</link>

beschrieben, nur so werden Sie bei Antworten für Tickets aus dieser
Queue verwendet. Über den Link "Signaturen" innerhalb des
Admin-Bereiches, können Sie die verschiedenen Signaturen Ihres
Systems verwalten.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von Signaturen</screeninfo>
<graphic srccredit="Adminarea signatures - screenshot" scale="40" fileref="screenshots/admin-signatures.png"/>
</screenshot>
</para>

<para>
Nach einer Standardinstallation von OTRS sind bereits zwei Signaturen im
System gespeichert, "system standard signature (de/buiss)" und
"system standard signature (en)".
</para>

<para>
Auch in Signaturen können dynamische Inhalte eingebaut werden.
Dies geschieht, genauso wie bei den Anreden, mit Hilfe verschiedener
OTRS-Variablen, die in den Text der Signatur integriert werden können.
Ein variabler Textteil könnte z.b. der Name des
Mitarbeiters sein, der das Ticket beantwortet hat.
</para>

<para>
Im unteren Teil der Bildschirmmaske zum Ändern oder Anlegen einer
Signatur finden Sie die verschiedenen OTRS-Variablen, die Sie für die
dynamische Aufbereitung eines Signaturentextes verwenden können.
OTRS-Variablen zeichnen sich dadurch aus, dass sie von spitzen Klammern
(&lt;&gt;) eingeschlossen sind. Zwischen den spitzen Klammern steht der
Name der Variable, der sich oft auf den in der Variable gespeicherten
Inhalt bezieht. Bauen Sie z. B. in Ihrem Anredentext die OTRS-Variable
&lt;OTRS_LAST_NAME&gt; ein, so wird diese später durch den
Nachnamen des Agents ersetzt, der das Ticket beantwortet hat. Sehen Sie
sich auch die schon bereits im System gespeicherten Anreden an, dann wird
die Verwendung der verschiedenen Variablen klarer.
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
kann eine einmal im System angelegte Signatur nicht entfernt werden. Um
eine Signatur trotzdem zu deaktivieren, setzen Sie in den Einstellungen
der entsprechenden Signatur in der Listbox für "Gültig" den Wert
entweder auf "ungültig" oder auf "ungültig-temporär".
</para>
</note>

</sect2>

<sect2 id="adminarea-attachments">
<title>Anlagen</title>

<para>
Ein weitere optionaler Teil einer Antwortvorlage kann eine Anlage sein.
Diese wird bei der Benutzung einer Antwortvorlage als Anhang an das zu
beantwortende Ticket angehängt, kann aber über eine Checkbox im
Antworten-Bildschirm für Tickets leicht deaktiviert werden.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von Anlagen für Antwortvorlagen</screeninfo>
<graphic srccredit="Adminarea attachment - screenshot" scale="40" fileref="screenshots/admin-attachment.png"/>
</screenshot>
</para>

<para>
Über den "Anlagen"-Link im Admin-Bereich können Sie neue Anlagen in das
System integrieren. Nachdem eine Anlage im System gespeichert wurde, kann
sie noch einer oder mehreren Antwortvorlagen zugeordnet werden. Die
Zuordnung der Anlagen zu den einzelnen Antwortvorlagen kann über
den Link "Anlagen &lt;-&gt; Antworten" im Admin-Bereich von OTRS erreicht
werden.
</para>

<para>
<screenshot>
<screeninfo>Zuweisung einer Anlage zu einer Antwortvorlage</screeninfo>
<graphic srccredit="Adminarea attachment response - screenshot" scale="40" fileref="screenshots/admin-attachment-response.png"/>
</screenshot>
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
kann eine einmal im System gespeicherte Anlage nicht mehr entfernt werden.
Um eine Anlage trotzdem systemweit zu deaktivieren, setzen Sie in den
Einstellungen der entsprechenden Anlager in der Listbox für "Gültig" den Wert
entweder auf "ungültig" oder "ungültig-temporär".
</para>
</note>

</sect2>

</sect1>

<sect1 id="adminarea-auto-responses">
<title>Automatische Antworten</title>

<para>
OTRS bietet die Möglichkeit, automatische Antworten an Kundenbenutzer zu
verschicken. Automatische Antworten sind an bestimmte Ereignisse im System
gebunden, z. B. an das Anlegen eines neuen Tickets in einer Queue, wenn ein
Followup eines Tickets stattfindet, wenn ein Ticket geschlossen oder
vom System zurückgewiesen wird. Über den Link "Auto Antworten" innerhalb
des Admin-Bereiches erreichen Sie die Verwaltung der automatischen
Antworten. Im Formular zum Ändern oder Anlegen einer automatischen
Antwort stellen Sie über die Listbox für "Typ" das Ereignis ein, das
mit der automatischen Antwort verknüpft werden soll. Nach einer
Standardinstallation sind folgende Ereignistypen vorhanden.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von automatischen Antworten</screeninfo>
<graphic srccredit="Adminarea auto response - screenshot" scale="40" fileref="screenshots/admin-autoresponse.png"/>
</screenshot>
</para>

<table id="table-of-autoanswer-types">
<title>Ereignistypen für automatische Antworten</title>
  <tgroup cols="2">
    <thead>
      <row>
        <entry>
          Name
        </entry>
        <entry>
          Beschreibung
        </entry>
      </row>
    </thead>
    <tbody>
      <row>
        <entry>
          auto reply
        </entry>
        <entry>
          Dieses Ereignis tritt ein, wenn ein neues Ticket in
          einer Queue angelegt wird.
        </entry>
      </row>
      <row>
        <entry>
          auto reply/new ticket
        </entry>
        <entry>
          Dieses Ereignis tritt ein, wenn ein bereits geschlossenes Ticket,
          z. B. durch die Antwort eines Kunden, mit einer neuen
          Ticketnummer erneut geöffnet wird.
        </entry>
      </row>
      <row>
        <entry>
          auto follow up
        </entry>
        <entry>
          Dieses Ereignis tritt ein, wenn ein Follow up für ein bereits
          vorhandenes Ticket eintrifft.
        </entry>
      </row>
      <row>
        <entry>
          auto reject
        </entry>
        <entry>
          Dieses Ereignis tritt ein, wenn ein Ticket vom System
          zurückgewiesen wird.
        </entry>
      </row>
      <row>
        <entry>
          auto remove
        </entry>
        <entry>
          Dieses Ereignis tritt ein, wenn ein Ticket entfernt wird.
        </entry>
      </row>
    </tbody>
  </tgroup>
</table>

<para>
Für die Betreffzeile und den Text von automatischen Antworten kann genauso
wie bei Signaturen oder Anreden, der Inhalt mit Hilfe von OTRS-Variablen
dynamisch erzeugt werden. So werden über die Variable
&lt;OTRS_CUSTOMER_EMAIL[5]&gt; die ersten 5 Zeilen der an das System
gesendeten E-Mail in die automatische Antwort eingefügt, oder durch
&lt;OTRS_CUSTOMER_FROM&gt; die From-Zeile. Die Anmerkungen im unterem
Bereich der Bildschirmmaske zur Verwaltung der automatischen Antworten
listen alle OTRS-Variablen auf, die verwendet werden können.
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
kann eine einmal im System angelegte Auto-Antwort nicht entfernt werden.
Um eine Auto-Antwort trotzdem systemweit zu deaktivieren, setzen Sie in den
Einstellungen der entsprechenden Auto-Antwort in der Listbox für
"Gültig" den Wert entweder auf "ungültig" oder "ungültig-temporär".
</para>
</note>

<para>
<screenshot>
<screeninfo>Zuweisung einer automatischen Antwort zu einer Queue</screeninfo>
<graphic srccredit="Adminarea auto response queue - screenshot" scale="40" fileref="screenshots/admin-autoresponse-queue.png"/>
</screenshot>
</para>

<para>
Um eine automatische Antwort einer oder mehreren Queues zuzuweisen, folgen
Sie im Admin-Bereich den Link "Auto Antworten &lt;-&gt; Queues". Dort sind
für jede Queue die verschiedenen Ereignistypen aufgelistet und es kann eine
Zuordnung einer Auto-Antwort vom gleichen Ereignistyp durchgeführt bzw.
entfernt werden.
</para>

</sect1>

<sect1 id="adminarea-emailaddresses">
<title>E-Mailadressen</title>

<para>
Um aus OTRS heraus E-Mails verschicken zu können, benötigen Sie
mindestens eine gültige Mailadresse. Da in vielen Fällen eine
Mailadresse nicht ausreicht, ist OTRS auch in der Lage, mit mehreren
Mailadressen zu arbeiten. Für jede Queue kann mindestens eine Mailadresse
festgelegt werden, es ist aber auch möglich eine Adresse mehreren Queues
zuzuordnen. D.h., dass von außen eine Queue über mehrere Mailadressen
ereicht werden kann, für das Versenden von Nachrichten aus einer Queue muss
jedoch eine Adresse festgelegt werden. Beim

<link linkend="adminarea-queue">
Anlegen oder Bearbeiten einer Queue
</link>

stellen Sie ein, welche im System gespeicherte Mailadresse für die
ausgehenden Nachrichten der entsprechenden Queue benutzt werden soll.
Die Verwaltung der Mailadressen des Systems erreichen Sie, indem sie im
Admin-Bereich dem Link "E-Mail Adressen" folgen.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von Mailadressen</screeninfo>
<graphic srccredit="Adminarea email - screenshot" scale="40" fileref="screenshots/admin-email.png"/>
</screenshot>
</para>

<para>
Im Formular zur Verwaltung der E-Mailadressen können Sie u.a. direkt
auswählen, mit welcher Queue oder Unter-Queue die neue Mailadresse
verknüpft werden soll. Diese Verknüpfung ist wichtig, da so eingehende
Mails anhand der Adresse im To: Feld der entsprechenden Queue zugewiesen
werden können.
</para>

<note>
<para>
Um die Konsistenz der von OTRS verwalteten Daten sicher zu stellen,
kann eine einmal im System angelegte Mailadresse nicht entfernt werden.
Um eine Mailadresse trotzdem systemweit zu deaktivieren, setzen Sie in den
Einstellungen der entsprechenden Mailadresse in der Listbox für
"Gültig" den Wert entweder auf "ungültig" oder
"ungültig-temporär".
</para>
</note>

</sect1>

<sect1 id="adminarea-notifications">
<title>Benachrichtigungen</title>

<para>
Kunden und Mitarbeiter können im

<link linkend="user-preferences">
Einstellungs-Bereich
</link>

ihres Accounts festlegen, bei welchen Ereignissen Sie automatisch vom
System per Mail benachrichtigt werden wollen.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von Benachrichtigungen</screeninfo>
<graphic srccredit="Adminarea notifications - screenshot" scale="40" fileref="screenshots/admin-notification.png"/>
</screenshot>
</para>

<para>
Über den "Benachrichtigungen"-Link im Admin-Bereich erreichen Sie die
Verwaltung der Benachrichtigungen. Sie können die Betreffzeile
und den Text einer Benachrichtigung anpassen, indem Sie die entsprechende
Benachrichtigung aus der Listbox auswählen und deren Einstellung über den
"Ändern"-Schalter laden. Am Namen einer Benachrichtigung erkennen Sie, bei
welcher Oberflächensprache die Benachrichtigung verwendet wird, für welches
Ereignis die Benachrichtigung steht und ob sie für einen Kunden oder
Agenten bestimmt ist.
</para>

<para>
Auch innerhalb der Benachrichtigungen können die Textinhalte mit Hilfe der
OTRS-Variablen dynamisch aufbereitet werden. Innerhalb der Anmerkungen im
unteren Bereich der Bildschirmmaske zur Benachrichtigungen-Verwaltung
werden die verschiedenen zur Verfügung stehenden Variablen und deren
Verwendung aufgelistet und näher erklärt.
</para>

</sect1>

<sect1 id="adminarea-smime">
<title>SMIME</title>

<para>
Mit OTRS ist es möglich, Tickets mit Hilfe von SMIME zu ent- und
verschlüsseln bzw. Tickets zu signieren. Bevor SMIME allerdings
systemweit genutzt werden kann, muss das Feature mit Hilfe einiger

<link linkend="Framework:Crypt::SMIME">
Konfigurationsparameter
</link>

z. B. über die

<link linkend="adminarea-sysconfig">
grafische Administrationsoberfläche
</link>

des Systems aktiviert und konfiguriert werden
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von SMIME-Zertifikaten</screeninfo>
<graphic srccredit="Adminarea smime - screenshot" scale="40" fileref="screenshots/admin-smime.png"/>
</screenshot>
</para>

<para>
Über den "SMIME"-Link im Admin-Bereich von OTRS erreichen Sie die
Verwaltung der SMIME-Zertifikate. Es können Zertifikate und private
Fingerprints hinzugefügt und entfernt werden und eine Suche in den
Zertifikaten ist möglich.
</para>

</sect1>

<sect1 id="adminarea-pgp">
<title>PGP</title>

<para>
Mit OTRS ist es möglich, Tickets mit Hilfe von PGP zu ent- und
verschlüsseln bzw. zu signieren. Bevor PGP allerdings systemweit genutzt
werden kann, muss das Feature mit Hilfe einiger

<link linkend="Framework:Crypt::PGP">
Konfigurationsparameter
</link>

z. B. über die

<link linkend="adminarea-sysconfig">
grafische Administrationsoberfläche
</link>

des Systems aktiviert und konfiguriert werden
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von PGP-Schlüsseln</screeninfo>
<graphic srccredit="Adminarea pgp -  screenshot" scale="40" fileref="screenshots/admin-pgp.png"/>
</screenshot>
</para>

<para>
Über den "PGP"-Link im Admin-Bereich von OTRS erreichen Sie die
Verwaltung des Schlüsselrings Ihres Systems. Es können Schlüssel und
Signaturen hinzugefügt und entfernt werden und eine Suche innerhalb des
Schlüsselrings ist möglich. Das Kapitel

<link linkend="configure-pgp">
Verschlüsselung mit PGP
</link>

beschreibt die einrichtung und Verwendung detaillierter.
</para>

</sect1>

<sect1 id="adminarea-status">
<title>Status</title>

<para>
Über den Link "Status" können Sie die Status, die Sie in OTRS verwenden
möchten, bearbbeiten.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung der Status</screeninfo>
<graphic srccredit="Adminarea states - screenshot" scale="40" fileref="screenshots/admin-status.png"/>
</screenshot>
</para>

<para>
Nach einer Standardinstallation sind die Status "closed successful",
"closed unsuccessful", "merged", "new", "open", "pending auto close+",
"pending auto close-" "pending reminder" und "removed" vorhanden. Jeder
Status ist einem Status-Typ zugeordnet, der auch beim Anlegen eines neuen
Status vergeben werden muss. Es gibt standardmäßig die Status-Typen
"geschlossen", "merged", "neu", "offen", "pending auto", "warten zur
Erinnerung" und "entfernt".
</para>
</sect1>

<sect1 id="adminarea-sysconfig">
<title>Die Admin GUI (SysConfig)</title>

<para>
Seit OTRS 2.0 kann das System nahezu vollständig über das Webinterface
konfiguriert werden und manuelle Anpassungen der Konfigurationsdateien
gehören der Vergangenheit an. MÖglich wird dies durch das grafische
Administrations-Frontend.
</para>

<para>
<screenshot>
<screeninfo>Das grafische Konfigurations-Frontend von OTRS</screeninfo>
<graphic srccredit="Adminarea sysconfig - screenshot" scale="40" fileref="screenshots/admin-sysconfig.png"/>
</screenshot>
</para>

<para>
Über den "SysConfig"-Link im Admin-Bereich von OTRS erreichen sie die
grafische Administrationsoberfläche. Über diese können Sie eigene
Konfigurationsdateien in das System integrieren bzw. Ihre
persönlichen Änderungen an der Standardkonfiguration in eine Datei
sichern. Nahezu alle Konfigurationsparameter des OTRS Frameworks und der
zusätzlich installierten Module können eingesehen und geändert werden, die
Navigation durch die Vielzahl der Konfigurationsparameter wurde durch die
Einteilung in Module und Gruppen übersichtlich aufgeteilt. Weiterhin ist es
möglich, eine Suche über alle Konfigurationsparameter hinweg
durchzuführen, so dass einzelne Parameter schnell aufgefunden und
bearbeitet werden können.
</para>

<para>
Das Kapitel

<link linkend="sysconfig">
Nähere Beschreibung der grafischen Administrationsoberfläche
</link>

geht ausführlicher auf das grafische Konfigurations-Frontend ein.
</para>

</sect1>

<sect1 id="adminarea-postmasterpop3-account">
<title>Einrichten von POP3-Konten</title>

<para>
Es gibt mehrere Möglichkeiten, Mails in OTRS einzuspeisen. Neben
der Nutzung des PostMaster.pl-Skripts, welches die Mails direkt in das
System piped, können auch POP3-Konten abgefragt werden, an die Mails
für Ihr Ticket-System gehen. Über den Link "PostMaster POP3
Account" innerhalb des Admin-Bereiches erreichen Sie die Verwaltung der
POP3-Konten, die OTRS automatisch auf neue Nachrichten überprüfen
soll.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von POP3 Konten</screeninfo>
<graphic srccredit="Adminarea postmasterpop3 - screenshot" scale="40" fileref="screenshots/admin-postmasterpop3.png"/>
</screenshot>
</para>

<para>
Im Kapitel über die

<link linkend="email-receiving-pop3">
Mailkonfiguration
</link>

für OTRS wird die Einrichtung der POP3-Konten näher erläutert.
</para>

</sect1>

<sect1 id="adminarea-postmasterfilter">
<title>Einrichten von Filterregeln</title>

<para>
Damit Sie automatisch Mails vorsortieren können bzw. ungewünschte Mails gar
nicht in die Queues des Ticket-Systems gelangen, können Filterregeln für
eingehende Nachrichten festgelegt werden. Dabei spielt es keine Rolle, ob die
Mails über POP3-Konten oder mit Hilfe des
<filename>PostMaster.pl</filename> Skriptes ins System gelangen. Der Link
"PostMaster Filter" innerhalb des Admin-Bereiches von OTRS ruft die
Verwaltung für die Filterregeln auf.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von Filterregeln für eingehende E-Mails</screeninfo>
<graphic srccredit="Adminarea postmasterfilter - screenshot" scale="40" fileref="screenshots/admin-postmasterfilter.png"/>
</screenshot>
</para>

<para>
Eine Filterregel besteht aus einem oder mehreren Kriterien die erfüllt
werden müssen, damit die Filterregel greift, und aus einer oder mehreren
Aktionen die ausgeführt werden, nachdem die Filterkriterien erfüllt wurden.
Sie können für die Kopfzeilen und den Body einer Nachricht Filterregeln
festlegen, also z. B. nach bestimmten Headern suchen oder nach Zeichenketten
bzw. regulären Ausdrücken innerhalb der Mail. Alle Aktionen für eine
Filterregel werden über sog. X-OTRS-Header gesteuert, die in die Mail
eingefügt werden. Das Ticket-System wertet die X-OTRS-Header aus und nimmt
die entsprechenden Aktionen vor. Mit den X-OTRS-Headern kann z. B. die
Priorität einer Nachricht geändert werden, die Mail in eine bestimmte
Queue einsortiert oder die Mail komplett verworfen werden, usw. Die
folgende Tabelle listet die verschiedenen X-OTRS-Header, deren zulässige
Werte und die Bedeutung der einzelnen Header auf.
</para>

<table id="table-of-x-otrs-headers">
<title>Funktion der verschiedenen X-OTRS-Header</title>
  <tgroup cols="3">
    <thead>
      <row>
        <entry>
          Name
        </entry>
        <entry>
          Mögliche Werte
        </entry>
        <entry>
          Beschreibung
        </entry>
      </row>
    </thead>
    <tbody>
      <row>
        <entry>
          X-OTRS-Priority:
        </entry>
        <entry>
          1 very low, 2 low, 3 normal, 4 high, 5 very high
        </entry>
        <entry>
          Legt die Priorität eines Tickets fest.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-Queue:
        </entry>
        <entry>
          Name einer Queue des Systems.
        </entry>
        <entry>
          Legt die Queue fest, in die das Ticket einsortiert werden soll.
          Wird mit dem X-OTRS-Queue-Header eine Queue voreingestellt, so
          hat diese Einstellung Vorrang vor allen anderen Filterregeln, die
          sich auf Queues beziehen.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-Ignore:
        </entry>
        <entry>
          Yes
        </entry>
        <entry>
          Wird dieser Header gesetzt, wird die Mail komplett ignoriert und
          gelangt somit nie als Ticket in das System.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-State:
        </entry>
        <entry>
          new, open, closed successful, closed unsuccessful, ...
        </entry>
        <entry>
          Setzt den nächsten Status eines Tickets.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-CustomerUser:
        </entry>
        <entry>
          CustomerUser
        </entry>
        <entry>
          Legt den Kunden-Benutzer fest, dem das Ticket zugeordnet werden
          soll.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-CustomerNo:
        </entry>
        <entry>
          CustomerNo
        </entry>
        <entry>
          Legt die Kunden-ID fest, die dem Ticket zugeordnet werden soll.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-ArticleKey(1|2|3):
        </entry>
        <entry>
          Zusätzlicher Info-Key für den Artikel.
        </entry>
        <entry>
          Speichert einen zusätzlichen Info-Key für den Artikel.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-ArticleValue(1|2|3):
        </entry>
        <entry>
          Zusätzlicher Info-Value.
        </entry>
        <entry>
          Speichert einen zusätzlichen Info-Value für den Artikel.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-SenderType:
        </entry>
        <entry>
          agent, system, customer
        </entry>
        <entry>
          Legt die Art des Ticket-Absenders fest.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-ArticleType:
        </entry>
        <entry>
          email-external, email-internal, email-notification-ext,
          email-notification-int, phone, fax, sms, webrequest,
          note-internal, note-external, note-report
        </entry>
        <entry>
          Legt den Typ des Artikles für das eingehende Ticket fest.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-TicketKey(1|2|...|8):
        </entry>
        <entry>
          Zusätzlicher Info-Key
        </entry>
        <entry>
          Speichert einen zusätzlichen Info-Key für das Ticket.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-TicketValue(1|2|...|8):
        </entry>
        <entry>
          Zusätzlicher Info-Value
        </entry>
        <entry>
          Speichert einen zusätzlichen Info-Value für das Ticket.
        </entry>
      </row>
      <row>
        <entry>
          X-OTRS-Loop:
        </entry>
        <entry>
          True
        </entry>
        <entry>
          Ist dieser X-OTRS-Header gesetzt, wird keine automatische Antwort
          an den Absender des neuen Tickets geschickt, z. B. um Mailschleifen
          zu vermeiden.
        </entry>
      </row>
    </tbody>
  </tgroup>
</table>

<para>
Über das Formular auf der rechten Seite der Verwaltung für die
Filterregeln können neue Filterregeln hinzugefügt werden. Sie müssen für
jede Regel einen Namen vergeben. Darunter legen Sie in der Sektion für
"Treffer" die verschiedenen Kriterien fest, nach denen gefiltert werden
soll. Wählen Sie aus den Listboxen für "Header 1", "Header 2" usw. aus, an
welcher Stelle in der eingehenden Nachricht Sie suchen möchten und tragen
Sie rechts neben dem entsprechenden Header den Wert ein, nach dem gesucht
werden soll. In der Sektion "Setzen" legen Sie die Aktionen fest,
die ausgeführt werden sollen, wenn die Filterkriterien zutreffen. Hier
können Sie für "Header1", "Header 2" usw. den entsprechenden X-OTRS-Header
auswählen und rechts daneben den entsprechenden Wert eintragen.
</para>

<example id="sort-mails-into-junk">
<title>Aussortierung von Spammails in eine bestimmte Queue</title>

<para>
Eine nützliche Filterregel könnte sein, alle Mails, die von spamassassin
als Spam markiert wurden, automatisch in die Queue "Junk" einsortieren zu
lassen. Spamassassin fügt bei allen überprüften Mails die Kopfzeile
"X-Spam-Flag" hinzu. Wird die Mail als Spam markiert, wird dieser Header
auf "Yes" gesetzt. Das Filterkriterium lautet also "X-Spam-Flag: Yes". Um nun
eine Filterregel mit diesem Kriterium zu erzeugen, tragen Sie hierzu als
Name für die Filterregel z. B. "spam-mails" ein und wählen in der Sektion
"Treffer" für "Header 1" den Header "X-Spam-Flag:" aus der Listbox aus.
Rechts daneben fügen Sie als Wert "Yes" hinzu. Das Filterkriterium wurde
somit festgelegt. Um nun die Einsortierung der von spamassassin als Spam
klassifizierten Mails  in die Queue "Junk" zu erzwingen, wählen Sie in
der Sektion "Setzen" für "Header 1" den Eintrag "X-OTRS-Queue:" aus und
tragen als Wert rechts daneben "Junk" ein. Abschließend wird mit Hilfe des
"Hinzufügen"-Buttons die neue Regel gespeichert und aktiviert, beim nächsten
Abruf der POP3-Konten bzw. für die nächste an das System gesendete
Nachricht wird die Filterregel abgearbeitet.
</para>
</example>

<para>
Es gibt weitere Module, die zum

<link linkend="email-receiving-filter">
Filtern eingehender E-Mails
</link>

genutzt werden und bei komplexeren Installationen nützlich sein können.
</para>

</sect1>

<sect1 id="adminarea-genericagent">
<title>Ausführen von automatisierten Jobs mit Hilfe des GenericAgents</title>

<para>
Der GenericAgent ist ein Tool zum automatischen Ausführen von Aufgaben, die
normalerweise ein richtiger Agent manuell durchführen müsste. Er kann z. B.
bestimmte Tickets in einer Queue schließen oder Benachrichtigungen für
eskalierte Tickets versenden.
</para>

<para>
<screenshot>
<screeninfo>Jobliste des GenericAgents</screeninfo>
<graphic srccredit="Adminarea genericagent - screenshot" scale="40" fileref="screenshots/admin-genericagent-new.png"/>
</screenshot>
</para>

<para>
Um einen neuen Job für den GenericAgent zu definieren, folgen Sie dem Link
"GenericAgent". Es wird eine Tabelle mit den bereits vorhandenen Jobs
angezeigt, über die Jobs auch manuell ausgeführt oder gelöscht werden
können. Zum Hinzufügen eines neuen Jobs geben Sie den Namen ein und klicken
auf "Hinzufügen".
</para>

<para>
<screenshot>
<screeninfo>Anlegen eines Jobs für den GenericAgent</screeninfo>
<graphic srccredit="Adminarea genericagent - screenshot" scale="40" fileref="screenshots/admin-genericagent.png"/>
</screenshot>
</para>

<para>
Über die Bildschirmmaske zum Erstellen eines neuen Jobs kann der Zeitplan
für die Ausführung des Jobs eingestellt werden. Desweiteren kann über
verschiedene Kriterien festgelegt werden, welche Tickets vom Job erfasst
werden sollen. Schließlich ist es möglich, die neuen Eigenschaften der vom
Job betroffenen Tickets einzustellen.
</para>

<para>
Nachdem der Job gespeichert wurde, werden alle Tickets aufgeführt, die
durch den Job verändert werden. Diese Auflistung dient zur Übersicht, ob
der Job richtig funktioniert, es werden noch keine Veränderungen
vorgenommen. Erst nach der Übernahme des Jobs in die Job-Liste, wird der
Job aktiviert.
</para>

</sect1>

<sect1 id="adminarea-adminemail">
<title>Administratoren E-Mail</title>

<para>
Um als OTRS-Administrator eine Mail an bestimmte Benutzer (Agents) oder
Benutzergruppen im System zu versenden, folgen Sie dem
Link "Admin Notification".
</para>

<para>
<screenshot>
<screeninfo>Administratoren E-Mail an Benutzer oder Gruppen</screeninfo>
<graphic srccredit="Adminarea email - screenshot" scale="40" fileref="screenshots/admin-email.png"/>
</screenshot>
</para>

<para>
Es wird ein Formular geladen, in das Sie die Absenderadresse, den Betreff
und den Inhalt der Administratoren-Mitteilung eintragen können.
Weiterhin können Sie aus der Tabelle auswählen, an welche
Benutzer und / oder Benutzergruppen die Mitteilung gesendet werden soll.
</para>

</sect1>

<sect1 id="adminarea-session-management">
<title>Sitzungsverwaltung</title>

<para>
Um eine Übersicht über die gerade im System angemeldeten Benutzer und deren
Sitzungseigenschaften zu erhalten, folgen Sie dem Link
"Sitzungsverwaltung".
</para>

<para>
<screenshot>
<screeninfo>Sitzungsverwaltung</screeninfo>
<graphic srccredit="Adminarea sessionmanagement - screenshot" scale="40" fileref="screenshots/admin-sessionmanagement.png"/>
</screenshot>
</para>

<para>
Innerhalb der Sitzungsverwaltung werden allgemeine Informationen
zu allen Sitzungen im System ausgegeben, also z. B. wie viele Sitzungen
gerade insgesamt aktiv sind oder wie viele Agenten- und Kunden-Sitzungen
laufen, usw. Es besteht die Möglichkeit mit Hilfe des "Alle Sitzungen
löschen"-Schalters die Sitzungen aller angemeldeten Benutzer zu
beenden. Weiterhin können detaillierte Informationen für jede einzelne
Sitzung abgerufen und einzelne Sitzungen gelöscht werden.
</para>

</sect1>

<sect1 id="adminarea-system-log">
<title>System Log</title>

<para>
Der Link "System Log" ermöglicht es, die
letzten Logeinträge des Ticket-Systems über die Weboberfläche einzusehen.
</para>

<para>
<screenshot>
<screeninfo>Systemlog</screeninfo>
<graphic srccredit="Adminarea syslog - screenshot" scale="40" fileref="screenshots/admin-syslog.png"/>
</screenshot>
</para>

<para>
Ein Logeintrag setzt sich aus der Zeit, der Priorität, der betroffenen
Systemkomponente und der eigentlichen Meldung zusammen.
</para>

<note>
<para>
Die System Logs können nur auf Unix- oder Linux-Systemen über das
Web-Interface eingesehen werden, unter Windows-Betriebssystemen steht diese
Funktion nicht zur Verfügung.
</para>
</note>

<para>
Die Anzahl der im Web-Interface angezeigten Logeinträge kann über den
Konfigurationsparameter für die

<link linkend="Framework:Core::Log:LogSystemCacheSize">
Größe des Systemlog-Caches
</link>

beeinflusst werden.
</para>

</sect1>

<sect1 id="adminarea-selectbox">
<title>SQL Abfragen mit Hilfe der Selectbox</title>

<para>
Über den Link "Select Box" kann eine Bildschirmmaske aufgerufen werden, die
es ermöglicht direkt mit SQL-Statements den Inhalt von Tabellen der
OTRS-Datenbank abzurufen. Es sind nur SELECT-Abfragen möglich, d.h. die
Tabellen können auf diesem Weg nicht verändert werden.
</para>

<para>
<screenshot>
<screeninfo>SQL-Abfragen über die Weboberfläche</screeninfo>
<graphic srccredit="Adminarea selectbox - screenshot" scale="40" fileref="screenshots/admin-selectbox.png"/>
</screenshot>
</para>

</sect1>

<sect1 id="adminarea-package-manager">
<title>Paket Verwaltung</title>

<para>
Seit Version 2.0 besteht OTRS aus einem zentralen Framework und mehreren
Zusatzpaketen, um die das System wahlweise erweitert werden kann. An
zusätzlichen Paketen stehen z. B. ein web-basierter Filemanager, ein
Web-Mailer, ein Content-Manager oder ein Tool zur Überwachung von
verschiedenen Betriebssystemparametern zur Verfügung. Um die Installation
der verschiedenen Komponenten zu erleichtern, können diese mit Hilfe des
Paket Managers bequem über das Web-Interface von OTRS installiert oder
entfernt werden. Die Paket Verwaltung erreichen sie über den Link
"Paket Verwaltung".
</para>

<para>
<screenshot>
<screeninfo>Paketmanager</screeninfo>
<graphic srccredit="Adminarea packagemanager - sreenshot" scale="40" fileref="screenshots/admin-packagemanager.png"/>
</screenshot>
</para>

<para>
Die Pakete, die über die Paket Verwaltung hinzugefügt oder entfernt werden
können, müssen im sog. opm-Format vorliegen, andere Formate werden nicht
unterstützt. Es können mehrere Installations-Quellen angegeben werden, über
die die opm-Pakete installiert werden können. Steht Ihnen ein Paket lokal
zur Verfügung und kann darauf über das Filesystem der Maschine zugegriffen
werden, auf der OTRS installiert ist, können Sie im Eingabefeld für "Paket"
die genaue Lokation zu diesem Paket angeben, also den absoluten Pfad
gefolgt vom Dateinamen des opm-Pakets. Mit Hilfe des Schalters
"Installieren" unterhalb des Eingabefeldes, wird das Paket in die
vorhandene OTRS-Installation integriert. D.h., es werden die benötigten
Dateien kopiert, Icons und Ausgabevorlagen installiert und ggf. die Datenbank
angepasst. Ist dieser Vorgang beendet, kann das neu installierte Modul
genutzt werden.
</para>

<para>
Um immer Zugriff auf die aktuellen Versionen der zusätzlichen Module zu
haben, empfielt es sich, die Pakete über ein Online-Repository
einzuspielen. Die neueste Modulliste des Online-Repositorys erhalten Sie,
indem Sie aus der Listbox für "Quelle" den Server auswählen, von dem die
Daten des Repositorys heruntergeladen werden sollen. Verwenden Sie den
"Aktualisieren"-Schalter, um die Daten auf den neuesten Stand zu bringen.
Nach kurzer Zeit werden auf der rechten Seite im Abschnitt für das Online
Repository die Module aufgelistet, die online für eine Installation zur
Verfügung stehen. In der rechten Spalte dieser Tabelle können Sie den
"Installieren"-Schalter verwenden, um das entsprechende Modul in Ihr System
zu integrieren. Hängt das Modul von der Installation anderer Module ab, erhalten
Sie einen entsprechenden Hinweis. War die Installation eines Moduls
erfolgreich, wird das Modul in den Abschnitt für das lokale Repository
übertragen und dort aufgeführt. Das lokale Repository listet also alle
Module auf, die sie zusätzlich über die Paket Verwaltung Ihrer
Installation hinzugefügt haben.
</para>

<para>
Benötigen Sie einmal ein bestimmtes Modul nicht mehr und wollen es
entfernen, so ist dies über den "deinstallieren"-Schalter rechts vom
entsprechenden Modul innerhalb des lokalen Repositorys möglich. Auch bei
diesem Vorgang werden eventuelle Abhängigkeiten beachtet.
</para>

</sect1>

</chapter>
<!-- $Id: configuration.xml,v 1.10 2006/01/09 21:39:58 cs Exp $ --><chapter id="configuration">
<title>Konfiguration des Systems</title>

<sect1 id="directories-and-configfiles">
<title>Die Konfigurationsdateien von OTRS</title>

<para>
Alle Konfigurationsdateien des OTRS-Frameworks befinden sich innerhalb
des Verzeichnisses <filename>Kernel</filename> bzw. in Unterverzeichnissen
dieses Directorys. Bis auf die Datei
<filename>Kernel/Config.pm</filename> sollten Sie keine
Konfigurationsdatei manuell verändern, da alle anderen Dateien beim Updaten
des Systems überschrieben werden und so Ihre eigenen Einstellungen
verloren gehen. Übertragen Sie lediglich die Parameter aus den anderen
Dateien nach <filename>Kernel/Config.pm</filename> und passen Sie die
Parameter Ihren Wünschen entsprechend an.
</para>

<para>
Die Datei <filename>Kernel/Config/Defaults.pm</filename> enthält die
Konfigurationsparameter für den OTRS-Framework. In ihr finden Sie
grundlegende Einstellungen wie die Mailkonfiguration, die Datenbankanbindung,
Standardsprache o.ä. In der Datei
<filename>Kernel/Config/Files/Ticket.pm</filename> sind alle
Konfigurationsparameter für das Ticketsystem aufgeführt.
</para>

<para>
Das Verzeichnis <filename>Kernel/Config/Files</filename> enthält
weitere Konfigurationsdateien, die beim Starten von OTRS eingelesen
werden. Sind zusätzliche Module wie der Filemanager oder der
Webmailer installiert, liegen die Konfigurationsdateien dieser Applikationen
ebenfalls in <filename>Kernel/Config/Files</filename>. Im Moment sind immer
eine .pm- und eine .xml-Datei für jedes Modul vorhanden, da aus
Kompatibilitätsgründen zu älteren OTRS-Versionen noch die Einstellungen in
den .pm-Dateien benötigt werden. Die .xml-Dateien werden von der
grafischen Administrationsoberfläche ausgewertet, die seit OTRS 2.0 verfügbar
ist und die es Ihnen ermöglicht, das System nahezu vollständig über die
Web-Oberfläche zu konfigurieren. In zukünftigen Versionen von OTRS wird auf
die .pm-Dateien vollständig verzichtet und alle Einstellungen aus
<filename>Kernel/Config/Defaults.pm</filename> werden nur noch in
<filename>Kernel/Config/Files/Framework.xml</filename> zu finden sein bzw. alle
Einstellungen für das Ticketsystem befinden sich dann nur noch in der Datei
<filename>Kernel/Config/Files/Ticket.xml</filename>. Die
Konfigurationsparameter werden also in zukünftigen Versionen komplett in
das xml-Format übertragen.
</para>

<para>
Wird die Web-Oberfläche von OTRS aufgerufen, werden die xml-Dateien in
<filename>Kernel/Config/Files</filename> in alphabetischer Reihenfolge
ausgelesen und die Einstellungen des Frameworks und der evtl. zusätzlich
installierten Applikationen geladen. Anschließend werden die Einstellungen
in den Dateien <filename>Kernel/Config/Files/ZZZAAuto.pm</filename> und
<filename>Kernel/Config/Files/ZZZAuto.pm</filename> ausgewertet. Beide
Dateien werden vom grafischen Konfigurations-Frontend angelegt und sollten
auf keinem Fall manuell geändert werden. Zuletzt wird die Datei
<filename>Kernel/Config.pm</filename> mit den von Ihnen individuell
angepassten Konfigurationsparametern ausgewertet, so dass auf jeden Fall
Ihre eigenen Einstellungen geladen werden.
</para>

</sect1>

<sect1 id="sysconfig">
<title>Konfiguration des Systems mit Hilfe des grafischen
Konfigurations-Frontends</title>

<para>
Seit OTRS 2.0 können nahezu alle Konfigurationsparameter des Frameworks
oder der ggf. zusätzlich installierten Applikationen bequem über ein
grafisches Frontend angepasst werden. Melden Sie sich als OTRS-Administrator
an und folgen Sie im Admin-Bereich den Link "SysConfig", um das grafische
Konfigurations-Frontend zu laden.
</para>

<para>
<screenshot>
<screeninfo>Die grafische Konfigurationsoberfläche</screeninfo>
<graphic srccredit="sysconfig - screenshot" scale="40" fileref="screenshots/admin-sysconfig.png"/>
</screenshot>
</para>

<para>
Da OTRS mittlerweile über mehr als 600 verschiedene
Konfigurationsparameter verfügt, bietet das Konfigurations-Frontend mehrere
Möglichkeiten zur schnellen Auffindung der gewünschten Einstellung. Es
kann über alle Konfigurationsparameter hinweg nach einem bestimmten
Stichwort gesucht werden. Bei der Suche werden neben dem Namen des
Konfigurationsparameters auch die Beschreibungen ausgewertet, eine
Einstellung kann also auch gefunden werden, wenn ihr Name nicht bekannt ist.
</para>

<para>
Weiterhin wurden die verschiedenen Konfigurationsparameter in Haupt- und
Untergruppen unterteilt. Die Hauptgruppe stellt die Applikation dar, für
die der Konfigurationsparameter zuständig ist, also z.B. "Framework" für das
OTRS-Framework oder "Ticket" für das Ticketsystem. Die Untergruppen einer
Hauptgruppe können eingesehen werden, indem die Gruppe bzw. Applikation
aus der dazu vorgesehenen Listbox ausgewählt und der "Zeigen"-Knopf
gedrückt wird.
</para>

<para>
Für jeden einzelnen Konfigurationsparameter kann über eine Checkbox
festgelegt werden, ob er vom System beachtet werden soll oder nicht. Wird
eine Einstellung verändert, kann die Änderung mit Hilfe des
"Aktualisieren"-Buttons übernommen werden. Eine Einstellung kann mit Hilfe
des "Rücksetzen"-Schalters auf ihren Default-Wert zurückgesetzt werden.
</para>

<para>
Für die Sicherung aller von Ihnen vorgenommenen Änderungen, kann eine
.pm-Datei heruntergeladen werden, die alle vom Standard abweichenden
Konfigurationsparameter Ihres Systems enthält. Die selbe Datei können Sie
ebenfalls über die Konfigurationsoberfläche eines frisch installierten
Systems zurück spielen und so alle Einstellungen wieder herstellen.
</para>

<note>
<para>
Die Einstellungen für die Datenbankanbindung können aus Sicherheitsgründen
nicht über das grafische Konfigurations-Frontend geändert werden und müssen
manuell in die Datei <filename>Kernel/Config.pm</filename> eingefügt
werden.
</para>
</note>

</sect1>

</chapter>
<!-- $Id: email.xml,v 1.9 2006/10/18 13:10:30 cs Exp $ --><chapter id="email">
<title>E-Mails versenden/empfangen</title>

<sect1 id="email-sending">
<title>E-Mails versenden</title>

<sect2 id="email-sending-sendmail">
<title>Via Sendmail (Standard)</title>

<para>
OTRS ist in der Lage, E-Mails via Sendmail (z. B.
<ulink url="http://www.sendmail.org/">Sendmail</ulink>,
<ulink url="http://www.postfix.org/">Postfix</ulink>,
<ulink url="http://www.qmail.org">Qmail</ulink> oder
<ulink url="http://www.exim.org">Exim</ulink>)
zu versenden. Die Standard-Konfiguration sollte gleich ohne
Probleme funktionieren,  verwendet wird das sendmail-Binary Ihres
Betriebssystems.
</para>

<para>
Die Konfiguration kann über die

<link linkend="adminarea-sysconfig">
grafische Administrationsoberfläche
</link>

vorgenommen werden, oder die Datei
<filename>Kernel/Config.pm</filename> wird um die entsprechenden Parameter
erweitert:
</para>

<para>
<programlisting>
    # SendmailModule
    # (Where is sendmail located and some options.
    # See 'man sendmail' for details.)
    $Self-&gt;{'SendmailModule'} = 'Kernel::System::Email::Sendmail';
    $Self-&gt;{'SendmailModule::CMD'} = '/usr/sbin/sendmail -t -i -f ';
</programlisting>
</para>

</sect2>

<sect2 id="email-sending-smtp">
<title>Via SMTP relay/smarthost</title>

<para>
Wenn kein sendmail-Binary zur Verfügung steht, kann OTRS E-Mails via SMTP
versenden (<ulink url="http://www.ietf.org/rfc/rfc821.txt">Simple Mail
Transfer Protocol / RFC 821</ulink>). Diese Möglichkeit kann hauptsächlich auf
Nicht-Unix-Plattformen (z. B. Win32) genutzt werden.
</para>

<para>
Die Konfiguration kann über die

<link linkend="adminarea-sysconfig">
grafische Administrationsoberfläche
</link>

vorgenommen werden, oder die Datei
<filename>Kernel/Config.pm</filename> wird um die entsprechenden Parameter
erweitert:
</para>

<para>
<programlisting>
    # SendmailModule
    $Self-&gt;{"SendmailModule"} = "Kernel::System::Email::SMTP";
    $Self-&gt;{"SendmailModule::Host"} = "mail.example.com";
    $Self-&gt;{"SendmailModule::AuthUser"} = "";
    $Self-&gt;{"SendmailModule::AuthPassword"} = "";
</programlisting>
</para>

</sect2>

</sect1>

<sect1 id="email-receiving">
<title>E-Mails empfangen</title>

<sect2 id="email-receiving-pop3">
<title>Via POP3-Konten - der einfache Weg (PostMasterPOP3.pl)</title>

<para>
OTRS ist in der Lage, E-Mails von POP3-Konten zu empfangen.
</para>

<para>
Konfigurieren Sie Ihre POP3-Konten im Admin-Bereich von OTRS in der Sektion

<link linkend="adminarea-postmasterpop3-account">
PostMaster POP3 Account
</link>
.
</para>

<para>
<screenshot>
<screeninfo>Verwaltung von POP3 Konten</screeninfo>
<graphic srccredit="Adminarea postmasterpop3 - screenshot" scale="40" fileref="screenshots/admin-postmasterpop3.png"/>
</screenshot>
</para>

<para>
Beim Anlegen eines neuen POP3-Accounts muss der POP3-Server, ein Login und
ein Kennwort angegeben werden. Wählen Sie für "Vertraut" den Wert "Ja"
aus, dann werden die sog. X-OTRS-Header-Einträge ausgewertet und
angewendet, sofern derartige Header-Einträge in einer abgerufenen Nachricht
vorhanden sind. Da mit Hilfe der X-OTRS-Header einige Dinge am System
beeinflusst werden können, sollten Sie "Vertraut" nur auf "Ja" setzen, wenn
Sie genau wissen, von welchen Absendern die abgerufenen Nachrichten stammen.
X-OTRS-Header werden vom

<link linkend="adminarea-postmasterfilter">
Modul für die Nachrichtenfilterung
</link>

in OTRS benutzt, die X-OTRS-Header werden

<link linkend="table-of-x-otrs-headers">
in dieser Tabelle
</link>

näher beschrieben. Es spielt keine Rolle, welcher Wert für "Vertraut"
ausgewählt wurde, eventuell eingerichtete Filterregeln für eingehende Mails
werden trotzdem abgearbeitet.
</para>

<para>
Weiterhin können Sie die Verteilung der abgerufenen Mails durch die
Angabe steuern, ob die neuen Nachrichten nach dem To-Feld oder nach der
Queue im System einsortiert werden sollen. Wählen Sie "Verteilung nach
ausgewählter Queue" aus, landen die abgerufenen Mails auf jeden Fall in der
Queue, die zusätzlich in der dafür vorgesehenen Listbox angegeben werden
kann. Dabei spielt keine Rolle, an welche Adresse die Mail geschickt
wurde. Wählen Sie "Verteilung nach To: Feld" aus, wird überprüft, welcher
Queue die Adresse zugeordnet ist, an die die abgerufene Mail gesendet
wurde. Die Zuordnung einer Mailadresse zu einer Queue kann über die

<link linkend="adminarea-emailaddresses">
Mailadressen Verwaltung
</link>

vorgenommen werden. Existiert eine Zuordnung
der Adresse im To: Feld zu einer Queue innerhalb des Systems, wird die
abgerufene Nachricht in die entsprechende Queue einsortiert. Kann keine
Zuordnung gefunden werden, landet das Ticket in der Standard-Queue des
Systems (Raw), die mit Hilfe des Konfigurationsparameters

<link linkend="Ticket:Core::PostMaster:PostmasterDefaultQueue">
PostmasterDefaultQueue
</link>

eingestellt werden kann.
</para>

<para>
Die Daten zu allen POP3-Konten werden in der Datenbank von OTRS
gespeichert. Das Skript <filename>PostMasterPOP3.pl</filename>, welches sich
im Verzeichnis <filename>bin</filename> innerhalb des
OTRS-Homeverzeichnisses befindet, fragt die Einstellungen ab und holt die
Mails von den einzelnen POP3-Konten.
<filename>PostMasterPOP3.pl</filename> wird mit Hilfe
von <application>cron</application> bzw. unter Windows von
<application>CRONW</application> regelmäßig ausgeführt.
Einen Beispiel-Cronjob finden Sie in der Datei
<filename>var/cron/postmaster_pop3.dist</filename>. Dieser führt
<command>bin/PostMasterPOP3.pl</command> alle 10 Minuten aus. Das Kapitel

<link linkend="cronjobs">
"Einrichten der von OTRS benötigten cron-Jobs"
</link>

beschreibt das Zusammenspiel zwischen OTRS und cron ausführlicher.
</para>

</sect2>

<sect2 id="email-receiving-cmd">
<title>Via Kommandozeilen-Programm und z. B. procmail (PostMaster.pl)</title>

<para>
OTRS ist in der Lage, E-Mails über ein Kommandozeilen-Programm
(<filename>bin/PostMaster.pl</filename>) zu empfangen. Das bedeutet, dass
E-Mails im OTRS angezeigt werden, wenn der MDA (mail delivery agent, z. B.
procmail) die E-Mails an <filename>bin/PostMaster.pl</filename>" weiterleitet.
</para>

<para>
Um <filename>bin/PostMaster.pl</filename> auf der Kommandozeile ohne MDA zu
testen, führen Sie folgendes Kommando aus:
</para>

<para>
<screen>
linux:/opt/otrs# cd bin
linux:/opt/otrs/bin# cat ../doc/test-email-1.box | ./PostMaster.pl
linux:/opt/otrs/bin#
</screen>
</para>

<para>
Wird die E-Mail in der Queue-Ansicht angezeigt, sind Ihre Einstellungen
in Ordnung.
</para>

<para>
Procmail ist in der Linux-Umgebung ein sehr bekannter E-Mail-Filter, der
höchstwahrscheinlich auf Ihrem System installiert sein wird. Falls nicht,
 erhalten Sie auf der

<ulink url="http://www.procmail.org/">
<citetitle>procmail Homepage</citetitle>
</ulink>

weitere Informationen.
</para>

<para>
Um procmail einzurichten (benötigt einen für procmail konfigurierten MDA
(z. B. sendmail, postfix, exim oder qmail)), kann die Datei
<filename>.procmailrc.dist</filename> aus dem OTRS-Homeverzeichnis
verwendet werden. Kopieren Sie <filename>.procmailrc.dist</filename> nach
<filename>.procmailrc</filename> und nehmen Sie
folgende Änderungen vor:
</para>

<para>
<programlisting>
SYS_HOME=$HOME
PATH=/bin:/usr/bin:/usr/local/bin
# --
# Pipe all email into the PostMaster process.
# --
:0 :
| $SYS_HOME/bin/PostMaster.pl
</programlisting>
</para>

<para>
Alle an den lokalen OTRS-Benutzer gesendeten E-Mails werden an
<filename>bin/PostMaster.pl</filename> weitergeleitet und dadurch im Ticket
System gespeichert.
</para>
</sect2>

<sect2 id="email-receiving-fetchmail">
<title>E-Mails via POP3 oder IMAP und fetchmail für PostMaster.pl empfangen</title>

<para>
Um E-Mails von Ihrem Mailserver via POP3 oder IMAP für den
 OTRS-Rechner/lokalen OTRS-Benutzer und procmail abzuholen, benutzen Sie

<ulink url="http://www.tuxedo.org/~esr/fetchmail/">
fetchmail</ulink>.
</para>

<note>
<para>
Voraussetzung ist eine funktionierende SMTP-Konfiguration auf dem
OTRS-Rechner.
</para>
</note>

<para>
Eine Beispielkonfiguration finden Sie in der Datei
<filename>.fetchmailrc.dist</filename> im Homeverzeichnis von OTRS.
Kopieren Sie diese Datei nach <filename>.fetchmailrc</filename> und
erweitern Sie die Datei um die Daten Ihrer POP3/IMAP Accounts.
</para>

<example id="fetchmailrc">
<title>Beispiel .fetchmailrc</title>

<para>
<programlisting>
#poll (mailserver) protocol POP3 user (user) password (password) is (localuser)
poll mail.example.com protocol POP3 user joe password mama is otrs
</programlisting>
</para>

</example>

<para>
Vergessen Sie nicht, die Zugriffsrechte von
<filename>.fetchmailrc</filename> auf 710 zu setzen.
</para>

<para>
Wird das Kommando <command>"fetchmail -a</command> ausgeführt
(ggf. via cron), werden alle E-Mails auf das lokale OTRS-Konto
weitergeleitet und mit Hilfe von procmail an
<filename>bin/PostMasterPOP3.pl</filename> übergeben.
<filename>bin/PostMasterPOP3.pl</filename> sorgt wiederum dafür, dass die
neuen Mails in das Ticket System gelangen.
</para>
</sect2>

<sect2 id="email-receiving-filter">
<title>Filterung/Verteilung über PostMaster-Module (für komplexere
Verteilungsszenarien)</title>

<para>
Falls die <filename>bin/PostMaster.pl</filename> oder
<filename>bin/PostMasterPOP3.pl</filename> Methoden verwendet werden, können
X-OTRS-Header mit Hilfe der PostMaster-Filtermodule in die eingehenden
Mails eingefügt bzw. bereits vorhandene X-OTRS-Header verändert werden. Mit
Hilfe von X-OTRS-Headern kann das Ticket System bestimmte Aktionen für
Mails ausführen, z. B. diese in eine bestimmte Queue einsortieren, sie einem
bestimmten Kunden zuordnen, die Priorität ändern usw. Eine nähere
Beschreibung der X-OTRS-Header finden Sie im Kapitel zum

<link linkend="adminarea-postmasterpop3-account">
Einrichten von POP3-Accounts
</link>

über den Administrations-Bereich von OTRS.
</para>

<para>
Es gibt verschiedene Standard-Filtermodule.
</para>

<note>
<para>
Der Jobname (z. B.
$Self-&gt;{"PostMaster::PreFilterModule"}-&gt;{"Jobname"}) muss eindeutig
sein.
</para>
</note>

<para>
Kernel::System::PostMaster::Filter::Match ist ein Standard-Modul, um
 einige E-Mail-Header (z. B. From, To, Subject) zu prüfen und dann den
neuen E-Mail-Header zu setzen (z. B. X-OTRS-Ignore: yes oder
X-OTRS-Queue:  spam).
</para>

<example id="filter-module-match-example">
<title>Beispiel-Jobs für das Filtermodul Kernel::System::PostMaster::Filter::Match</title>

<para>
<programlisting>
    # (block/ignore all spam email with From: noreply@)
    $Self-&gt;{'PostMaster::PreFilterModule'}-&gt;{'1-Match'} = {
        Module =&gt; 'Kernel::System::PostMaster::Filter::Match',
        Match =&gt; {
            From =&gt; 'noreply@',
        },
        Set =&gt; {
            'X-OTRS-Ignore' =&gt; 'yes',
        },
    };
    # Job Name: 2-Match
    # (sort emails with From: sales@example.com and Subject: **ORDER**
    # into queue 'Order')
    $Self-&gt;{'PostMaster::PreFilterModule'}-&gt;{'2-Match'} = {
        Module =&gt; 'Kernel::System::PostMaster::Filter::Match',
        Match =&gt; {
            To =&gt; 'sales@example.com',
            Subject =&gt; '**ORDER**',
        },
        Set =&gt; {
            'X-OTRS-Queue' =&gt; 'Order',
        },
    };
</programlisting>
</para>

</example>

<para>
Kernel::System::PostMaster::Filter::CMD ist ein Standard-Modul, um
die E-Mails an ein externes Kommando zu leiten und, falls das Ergebnis aus
STDOUT true ist, den neuen E-Mail-Header zu setzen (z. B. X-OTRS-Ignore: yes
oder X-OTRS-Queue: spam).
</para>

<example id="filter-module-cmd-example">
<title>Beispiel-Job für das Filtermodul Kernel::System::PostMaster::Filter::CMD</title>

<para>
<programlisting>
    # Job Name: 5-SpamAssassin
    # (SpamAssassin example setup, ignore spam emails)
    $Self-&gt;{'PostMaster::PreFilterModule'}-&gt;{'5-SpamAssassin'} = {
        Module =&gt; 'Kernel::System::PostMaster::Filter::CMD',
        CMD =&gt; '/usr/bin/spamassassin | grep -i "X-Spam-Status: yes"',
        Set =&gt; {
            'X-OTRS-Ignore' =&gt; 'yes',
        },
    };
</programlisting>
</para>

</example>

<para>
Natürlich ist es auch möglich, eigene PostMaster-Filtermodule zu entwickeln.
</para>

</sect2>

</sect1>

</chapter>
<!-- $Id: time.xml,v 1.19 2007/02/22 10:39:29 sr Exp $ --><chapter id="time">
<title>Zeitabhängige Funktionen in OTRS</title>

<sect1 id="time-settings">
<title>Relevante Zeiten für das System festlegen</title>

<para>
In OTRS werden einige Aktionen abhängig von der aktuellen Systemzeit
ausgelöst. Von den Zeiteinstellungen betroffen sind die Berechnung der
Eskalationszeit und die eigentliche Eskalation von Tickets. Weiterhin hängt
die Zusendung von Benachrichtigungen für eskalierte Tickets bzw. für
Erinnerungs-Tickets, die den Erinnerungszeitpunkt erreicht haben, ab.
Ebenfalls wird die automatische Freigabe von Tickets durch diese
Einstellungen beeinflusst.
</para>

<para>
Mit Hilfe der Parameter

<link linkend="Framework:Core::Time:TimeWorkingHours">
TimeWorkingHours
</link>,

<link linkend="Framework:Core::Time:TimeVacationDays">
TimeVacationDays
</link>

und

<link linkend="Framework:Core::Time:TimeVacationDaysOneTime">
TimeVacationDaysOneTime
</link>

können die für das System relevanten Zeiten entweder über das

<link linkend="sysconfig">
grafische Konfigurations Frond-end
</link>

oder direkt über die Datei <filename>Kernel/Config.pm</filename>
eingestellt werden.
</para>

<sect2 id="TimeWorkingHours">
<title>TimeWorkingHours</title>

<para>
Die Stunden, in denen Ihre Agenten aktiv am system arbeiten, können
folgendermaßen in der Datei <filename>Kernel/Config.pm</filename>
festgelegt werden:
</para>

<example id="specifying-workinghours">
<title>Festlegen der für das System relevanten Arbeitsstunden</title>

<para>
<programlisting>
    $Self-&gt;{'TimeWorkingHours'} = {
        Mon =&gt; [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
        Tue =&gt; [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
        Wed =&gt; [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
        Thu =&gt; [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
        Fri =&gt; [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
        Sat =&gt; [  ],
        Sun =&gt; [  ],
    };
</programlisting>
</para>

</example>

<para>
Nur während dieser Stunden können Tickets eskalieren, Benachrichtigungen zu
Erinnerungs-Tickets versendet oder Tickets automatisch freigegeben werden.
Weiterhin werden auch nur diese Stunden in die Berechnung der
Eskalationszeit und der Zeit für die automatische Freigabe mit einbezogen.
</para>
</sect2>

<sect2 id="TimeVacationDays">
<title>TimeVacationDays</title>

<para>
Feiertage deren Datum jedes Jahr gleich ist, können dem System folgendermaßen
in der Datei <filename>Kernel/Config.pm</filename> bekannt gemacht werden:
</para>

<example id="specifying-vacation-days">
<title>Festlegen von regelmäßig wiederkehrenden Feiertagen</title>

<para>
<programlisting>
    $Self-&gt;{'TimeVacationDays'} = {
        1 =&gt; {
            1 =&gt; 'New Year\'s Eve!',
        },
        5 =&gt; {
            1 =&gt; '1 St. May',
        },
        12 =&gt; {
            24 =&gt; 'Christmas',
            25 =&gt; 'First Christmas Day',
            26 =&gt; 'Second Christmas Day',
            31 =&gt; 'Silvester',
        },
    };
</programlisting>
</para>

</example>

<para>
Während der hier festgelegten Tage werden keine zeitabhängigen
Aktionen oder Berechnungen auf Tickets im system ausgeführt.
</para>
</sect2>

<sect2 id="TimeVacationDaysOneTime">
<title>TimeVacationDaysOneTime</title>

<para>
Freie oder Feiertage, für die sich jährlich das Datum ändert, können
folgendermaßen in der Datei <filename>Kernel/Config.pm</filename> angegeben
werden:
</para>

<example id="specifying-sometime-vacation-days">
<title>Festlegen von unregelmäßig wiederkehrenden Feiertagen</title>

<para>
<programlisting>
    $Self-&gt;{'TimeVacationDaysOneTime'} = {
        2005 =&gt; {
            9 =&gt; {
                3 =&gt; 'German Unification Day'
            },
            12 =&gt; {
                27 =&gt; 'Anual closing',
                28 =&gt; 'Anual closing',
                29 =&gt; 'Anual closing',
                30 =&gt; 'Anual closing',
            },
        },
        2006 =&gt; {
            6 =&gt; {
                12 =&gt; 'Anual works outing',
            },
        },
    };
</programlisting>
</para>

</example>

<para>
Während der hier festgelegten Tage werden keine zeitabhängigen
Aktionen oder Berechnungen auf Tickets im system ausgeführt.
</para>

</sect2>
</sect1>

<sect1 id="unlock-tickets">
<title>Automatische Ticket "Freigabe" (unlock)</title>

<para>
Gesperrte Tickets können automatisch vom System freigegeben werden. Diese
Funktion kann z. B. dann nützlich sein, wenn sich ein Agent im Urlaub
befindet und noch Tickets gesperrt hat, die bearbeitet werden sollen /
müssen.
</para>

<para>
Die Zeit, nach der gesperrte Tickets automatisch freigegeben werden, kann
in den

<link linkend="adminarea-queue">
Einstellungen jeder Queue
</link>

festgelegt werden. Mit Hilfe des Moduls
<filename>bin/UnlockTickets.pl</filename>, das als cron-Job regelmäßig
ausgeführt werden sollte, wird die automatische Freigabe von Tickets
umgesetzt. Tickets werden nur während der in

<link linkend="TimeWorkingHours">
TimeWorkingHours
</link>

festgelegten Stunden automatisch freigegeben. An mit

<link linkend="TimeVacationDays">
TimeVacationDays
</link>

und

<link linkend="TimeVacationDaysOneTime">
TimeVacationDaysOneTime
</link>

festgelegten Tagen, werden keine Tickets automatisch freigegeben.
</para>

<para>
Benachrichtigungen über automatisch freigegebene Tickets werden an die
Agenten versendet, die die Queue mit dem automatisch freigegebenen Ticket in
"Meine Queues" aufgenommen haben und bei denen in den

<link linkend="user-preferences">
Benutzereinstellungen
</link>

die Benachrichtigung für vom System freigegebene Tickets aktiviert ist.
</para>

<para>
In der nachfolgenden Tabelle werden die Unlock-Zyklen der bisherigen OTRS Versionen verglichen.
</para>

<table id="table-of-unlock-mechanismen">
<title>"Freigabe" (unlock) Eigenschaften</title>
<tgroup cols="7">
<thead>
<row>
<entry>
"Freigabe" (unlock) Eigenschaften
</entry>
<entry>
1.2.x
</entry>
<entry>
1.3.x
</entry>
<entry>
2.0.x
</entry>
<entry>
2.1.1 - 2.1.5
</entry>
<entry>
2.1.6 - 2.1.x
</entry>
<entry>
2.2.x
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
Ein Ticket wird "freigegeben" (unlocked) wenn...
<para/>
<para>a) für die Queue, in der sich das Ticket befindet, eine Unlockzeit gesetzt ist.</para>
<para>b) die in den Queue Einstellungen hinterlegte Unlockzeit abgelaufen ist.</para>
<para>c) das Ticket von einem Agenten gesperrt ist.</para>
<para>d) sich das Ticket in einem "offen" Status befindet. Wenn ein "pending" Status gesetzt ist, wird die Unlockzeit ausgesetzt.</para>
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
</row>
<row>
<entry>
Die Unlockzeit wird zurück gesetzt, wenn ein Agent einen extenen Artikel am Ticket erstellt. Als externer Artikel gelten im OTRS Standard Produkt alle Artikel mit dem Artikel-Typ "email-external", "phone", "fax", "sms", oder "note-ext".
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
-
</entry>
<entry>
-
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
</row>
<row>
<entry>
Die Unlockzeit wird zurück gesetzt, wenn ein Ticket durch einen Agenten gesperrt wird. In diesem Moment läuft die in den Queue-Settings definierte Zeit, solange sich das Ticket in einem offen Status befindet. Wechselt das Ticket in einen Pending-Status, wird die Unlock-Time angehalten.
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
</row>
<row>
<entry>
Die Unlockzeit wird zurück gesetzt, wenn ein Agent einen extenen Artikel am Ticket erstellt.
Als externer Artikel gelten im OTRS Standard Produkt alle Artikel mit dem Artikel-Typ "email-external", "phone", "fax", "sms", "note-ext".
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
-
</entry>
<entry>
-
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
</row>
<row>
<entry>
Die Unlockzeit wird zurück gesetzt, wenn ein Kunde ein "Follow-Up" auf ein Ticket sendet und der letzte Artikel von einem Agenten stammt.
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
-
</entry>
<entry>
-
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
</row>
</tbody>
</tgroup>
</table>

</sect1>

<sect1 id="pending-tickets">
<title>Erinnerungs Tickets</title>

<para>
Mit OTRS ist es möglich Erinnerungs Tickets zu erstellen. Es kann ein
Zeitpunkt festgelegt werden, zu dem das System eine Nachricht verschickt,
in der es an ein vorher gesperrtes Ticket erinnert. Diese Funktion ist z. B.
dann nützlich, wenn man daran erinnert werden will einen Kunden zu
kontaktieren, dieser Kunde aber für die nächsten 2 Wochen im Urlaub ist.
</para>

<para>
Benachrichtigungen für Erinnerungs Tickets werden legidlich während der
Stunden versendet, die in

<link linkend="TimeWorkingHours">
TimeWorkingHours
</link>

festgelegt wurden. Das Modul <filename>bin/PendingJobs.pl</filename>,
welches regelmäßig mit Hilfe eines cron-Jobs ausgeführt werden sollte, löst
den Versand der Benachrichtigungen aus.
</para>

</sect1>

<sect1 id="escalate-tickets">
<title>Ticket Eskalation</title>

<para>
OTRS bietet die Möglichkeit der Eskalation von Tickets. Nachdem ein Ticket
eskaliert ist, wird die Anzeige aller anderen Tickets in derselben Queue
oder in der Queue-Ansicht so lange blockiert, bis das eskalierte Ticket
gesperrt wird. Durch die Ticket-Eskalation kann also gewährleistet werden,
dass Tickets die ein bestimmtes Alter überschreiten, auf jeden Fall beachtet
werden müssen.
</para>

<para>
Die Eskalationszeit kann in den

<link linkend="adminarea-queue">
Einstellungen jeder Queue
</link>

festgelegt werden. Mit Hilfe des

<link linkend="adminarea-genericagent">
GenericAgents
</link>

werden Benachrichtigungen über eskalierte Tickets an die Agenten versendet,
die die Queue mit dem eskalierten Tickets in "Meine Queues" aufgenommen
haben und für die in den

<link linkend="user-preferences">
Benutzereinstellungen
</link>

die Benachrichtigung über eskalierte Tickets aktiviert ist.
</para>

<example id="genericagent-job-for-escalated-tickets">
<title>GenericAgent Job zum Versand von Eskalations Benachrichtigungen</title>

<para>
In der Datei <filename>Kernel/Config/GenericAgent.pm</filename> ist bereits
ein Job eingetragen, über den der GenericAgent, regelmäßig durch einen
cron-Job ausgeführt, Benachrichtigungen über eskalierte Tickets an die
Agenten verschickt. Öffnen Sie diese Datei und entfernen Sie die
Kommentarzeichen vor den entsprechenden Zeilen:
</para>

<para>
<programlisting>
%Jobs = (
   # --
   # [name of job] -&gt; send escalation notifications
   # --
   'send escalation notifications' =&gt; {
       Escalation =&gt; 1,
       # new ticket properties
       New =&gt; {
           Module =&gt; 'Kernel::System::GenericAgent::NotifyAgentGroupOfCustomQueue',
       },
   },
   # insert your jobs (see Kernel/Config/GenericAgent.pm.examples)
);
</programlisting>
</para>

</example>

<para>
Wird ein neues Ticket in einer Queue gespeichert für die eine
Eskalationszeit festgelegt wurde, wird zunächst der positive Wert für
die eingestellte Eskalationszeit angezeigt. Die Anzeige bleibt auf den für die
Queue eingestellten Wert stehen, wenn das System sich nicht in den in
TimeWorkingHours festgelegten Stunden befindet oder wenn aktuell ein in
TimeVacationDays bzw. TimeVacationDaysOneTime definierter Tag ist,
außerhalb der für das System relevanten Zeiten findet keine Berechnung der
Eskalationszeit statt.
</para>

<para>
Befindet sich das System in einem für die Berechnung relevanten
Zeitfenster, wird die Eskalationszeit heruntergezählt. Wird der Wert 0
erreicht, eskaliert das Ticket. Im weiteren Verlauf wird der Wert negativ,
das Ticket hat die Eskalationszeit überschritten. Bei der nächsten Ausführung
des GenericAgent-Jobs für das Versenden der Eskalationsbenachrichtigungen
an die Agenten, werden die entsprechenden Mails verschickt, das eskalierte
Ticket blockiert die Anzeige der anderen Tickets in der Queue. Auch wenn das
eskalierte Ticket gesperrt und bearbeitet wird, wird der angezeigte Wert für die
Eskalationszeit immer kleiner, der eigentliche Eskalationszeitpunkt rückt
immer weiter in die Vergangenheit. An diesem Verhalten ändert sich nichts,
so lange das Ticket sich in einem offenen Status befindet (open, new, pending,
usw.). Erst wenn das Ticket geschlossen wird, also sich der Status von offen
auf geschlossen ändert (closed), wird auch die Eskalationszeit zurück gesetzt.
Wird dasselbe Ticket z. B. durch ein Follow-up wieder in einen offenen Status
gebracht, beginnt das Herunterzählen der Eskalationszeit erneut beim für
die Queue eingestellten positiven Wert.
</para>

<para>
Tickets können nur eskalieren, wenn folgende Eigenschaften erfüllt sind:
</para>

<itemizedlist>
<listitem>
<para>
Das Ticket befindet sich im Status-Typ "offen" (dazu zählen "neu", "offen", "warten zur Erinnerung", ...).
</para>
</listitem>

<listitem>
<para>
Das Ticket ist nicht von einem Agenten gesperrt ("frei").
</para>
</listitem>
</itemizedlist>

<para>
In der nachfolgenden Tabelle werden die Eskalationszyklen der bisherigen OTRS Versionen verglichen.
</para>

<table id="table-of-escalation-mechanismen">
<title>Eskalations Eigenschaften</title>
<tgroup cols="6">
<thead>
<row>
<entry>
Eskalations Eigenschaften
</entry>
<entry>
1.2.x
</entry>
<entry>
1.3.x
</entry>
<entry>
2.0.x
</entry>
<entry>
2.1.x
</entry>
<entry>
2.2.x
</entry>
</row>
</thead><tbody>
<row>
<entry>
Ein Ticket eskaliert...
<para/>
<para>a) wenn für die Queue, in der sich das Ticket befindet, eine Eskalationszeit gesetzt ist.</para>
<para>b) Wenn die in den Queue Einstellungen hinterlegte Eskalationszeit abgelaufen ist.</para>
<para>c) Wenn das Ticket nicht von einem Agenten gesperrt ist.</para>
<para>d) Wenn sich das Ticket in einem "offen" Status befindet. Wenn ein "pending" Status gesetzt ist, wird die Eskalationszeit ausgesetzt.</para>
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
</row>
<row>
<entry>
Die Eskalationszeit (Startpunkt) wird zurückgesetzt, wenn ein Kunde einen Artikel am Ticket erstellt (z. B. durch Email-FollowUp). Das Ticket muss dabei nicht wiedereröffnet werden. Ist bereits der letzte Artikel von einem Kunden, wird die Eskalationszeit (Startpunkt) nicht zurück gesetzt, da sich hier die Eskalation verzögern würde.
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
-
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
</row>
<row>
<entry>
Die Eskalationszeit (Startpunkt) wird zurückgesetzt, wenn ein Agent einen externen Artikel (z. B. eine Email an einen Kunden oder eine Telefon-Notiz) anlegt.
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
<entry>
-
</entry>
<entry>
x
</entry>
<entry>
x
</entry>
</row>
</tbody>
</tgroup>
</table>

</sect1>

</chapter>
<!-- $Id: monitoring-tickets.xml,v 1.2 2006/10/12 09:48:39 cs Exp $ --><chapter id="monitoring-tickets">
<title>Ticket-Verantwortlichkeit und Beobachtung von Tickets</title>

<para>
Seit OTRS 2.1 ist es möglich, neben einem Ticket-Besitzer auch eine
verantwortliche Person für ein Ticket zu definieren. Weiterhin können die
Aktivitäten rund um ein Ticket beobachtet werden. Diese beiden
Funktionalitäten werden durch das TicketResponsible- und das
TicketWatcher-Feature realisiert und erleichtern die Aufgabenverteilung und
das Arbeiten innerhalb hirarchischer Teamstrukturen.
</para>

<sect1 id="ticket-responsible">
<title>Ticket-Verantwortlichkeit</title>

<para>
Das Ticket-Verantwortlichkeits-Feature ermöglicht die volle Bearbeitung
eines Tickets durch einen Agenten, welcher das Ticket nicht besitzt. In der
Praxis könnte also z. B. ein Agent, der ein Ticket gesperrt hat, die
Verantwortlichkeit für das Ticket an einen zweiten Agenten übertragen, der
nicht Besitzer des Tickets ist, z. B. damit der zweite Agent eine Anfrage
eines Kunden beantworten kann. Nachdem die Anfrage beantwortet wurde, kann
der erste Agent die Verantwortlichkeit für das Ticket den zweiten Agent
wieder entziehen.
</para>

<para>
Mit Hilfe des Konfigurations Parameters

<link linkend="Ticket:Core::Ticket:Ticket::Responsible">
Ticket::Responsible
</link>

kann das Ticket-Verantwortlichkeits-Feature aktiviert werden.
</para>

<para>
TODO: ticket-zoom-responsible.pmg: Screenshot von TicketZoom mit Schalter
      für Verantwortlicher einfügen
</para>

<para>
Ein Verantwortlicher für ein Ticket kann festgelegt werden, indem der
Inhalt des Tickets aufgerufen und im Menü für die verschiedenen Aktionen für
das Ticket der "Verantwortlicher"-Schalter
betätigt wird.
</para>

<para>
TODO: ticket-responsible.pmg: TicketResponsible-Bildschirm einfügen
</para>

<para>
Über die Ticket-Verantwortlicher-Maske kann dem neuen verantwortlichen Agenten
ebenfalls eine Nachricht übermittelt werden.
</para>

<para>
TODO: responsible-tickets.pmg: Screenshot von Notification über "Watched
      Tickets" einfügen
</para>

<para>
Die Liste aller Tickets für die ein Agent verantwortlich ist wird über die

<link linkend="gloss-responsibletickets">
"Verantwortlicher"-Benachrichtigung
</link>

erreicht. Diese wird im oberen Bereich der OTRS-Oberfläche eingeblendet,
sobald das Ticket-Verantwortlichkeits-Feature aktiviert ist.
</para>

</sect1>

<sect1 id="ticket-watcher">
<title>Tickets beobachten</title>

<para>
Sollen innerhalb des Ticket-Systems lediglich bestimmte Tickets z. B. von
einem Abteilungsleiter beobachtet und nicht selbst bearbeitet werden, so
kann dies seit OTRS 2.1 mit Hilfe des TicketWatcher-Features realisiert
werden.
</para>

<para>
Das TicketWatcher-Feature kann mit Hilfe des Konfigurations-Parameters

<link linkend="Ticket:Core::TicketWatcher:Ticket::Watcher">
Ticket::Watcher
</link>

aktiviert werden. Weiterhin können über

<link linkend="Ticket:Core::TicketWatcher:Ticket::WatcherGroup">
Ticket::WatcherGroup
</link>

eine oder mehrere Benutzergruppen festgelegt werden, die die ERlaubnis
haben sollen Tickets zu beobachten.
</para>

<para>
TODO: ticket-subscribe.pmg: Screenshots von Ticket-Zoom mit subscribe
      einfügen
</para>

<para>
Um ein Ticket zu beobachten, muss der Inhalt des Tickets aufgerufen und im
Menü für die verschiedenen Aktionen für das Ticket der "Subscribe"-Schalter
betätigt werden.
</para>

<para>
TODO: ticket-unsubscribe.pmg: Screenshot von TicketZoom mit
      unsubscribe-Schalter einfügen
</para>

<para>
Die Beobachtung eines Tickets
wird aufgehoben, indem in der Inhaltsanzeige eines Tickets im Menü für die
möglichen Aktionen der "Unsubscribe"-Schalter gedrückt wird.
</para>

<para>
TODO: watched-tickets.pmg: Screenshot von Notification über "Watched
      Tickets" einfügen
</para>

<para>
Die Liste aller zur Beobachtung ausgewählten Tickets wird über die

<link linkend="gloss-watchedtickets">
"Watched Tickets"-Benachrichtigung
</link>

erreicht. Diese wird im oberen Bereich der OTRS-Oberfläche eingeblendet,
sobald das TicketWatcher-Feature aktiviert ist.
</para>

</sect1>

</chapter>
<!-- $Id: pdf-output.xml,v 1.1 2006/10/16 18:51:20 cs Exp $ --><chapter id="pdf-output">
<title>Einrichtung der PDF-Ausgabe</title>

<para>
Seit OTRS 2.1 ist es möglich, PDF-Dateien für die Ausgabe von Suchergebnissen,
Statistiken und vom Ticketverlauf (Ticket-Inhalt -&gt; Drucken) generieren zu
lassen. Prinzipiell werden alle Ausgaben, bei denen die Möglichkeit des
Druckens besteht, also dieses Ausgabeformat als Option verfügbar ist, als PDF
ausgegeben.
</para>

<para>
Das Feature wird über dem Konfigurationsparameter

<link linkend="Framework:Core::PDF:PDF">
PDF
</link>

eingeschaltet, standardmäßig ist es aktiviert. Weiterhin kann mit

<link linkend="Framework:Core::PDF:PDF::LogoFile">
PDF::LogoFile
</link>

ein Pfad zu einer Grafik-Datei angegeben werden, die als Logo in jede
generierte PDF-Datei eingebunden werden soll. Mit

<link linkend="Framework:Core::PDF:PDF::PageSize">
PDF::PageSize
</link>

lässt sich die Standard-Seitengröße der PDF-Datei einstellen. Schließlich
kann mit

<link linkend="Framework:Core::PDF:PDF::MaxPages">
PDF::MaxPages
</link>

die maximale Anzahl an Seiten festgelegt werden, die eine PDF-Datei höchstens
beinhalten soll.
</para>

<para>
Für die Generieerung von PDF-Dateien müssen die CPAN-Module PDF::API2 und
Compress::Zlib installiert werden. Bei vielen Distributionen sind diese als
Paket verfügbar und können bequem über den jeweiligen Paketmanager
installiert werden, falls dies jedoch nicht möglich ist muss der direkte Weg
über CPAN gewählt werden. Das Kapitel

<link linkend="installation-of-needed-perl-modules">
"Installation der für OTRS benötigten perl-Module
</link>

beschreibt wie die Installation der Perl-Module durchzuführen ist.
</para>

</chapter>
<!-- $Id: external-backends.xml,v 1.13 2006/10/18 13:12:28 cs Exp $ --><chapter id="external-backends">
<title>Einbinden externer Back-ends</title>

<sect1 id="customer-data">
<title>Kundenbenutzerdaten</title>

<para>
OTRS ist in der Lage, mit verschiedenen Kundendaten (insbesondere
Login, E-Mail, Telefon) umzugehen. Diese Informationen können im
Agenten-Interface angezeigt und für das Kunden-Interface verwendet
werden. Weiterhin werden die Daten für die Authentifizierung der
Kunden am System benötigt.
</para>

<para>
Die benutzten/angezeigten Kundendaten sind frei konfigurierbar, es
gibt jedoch drei benötigte Optionen die unbedingt vorhanden sein müssen,
damit OTRS ordnungsgemäß funktioniert:
</para>

<para>
Benutzer-Login, Benutzer-E-Mail und Benutzer-Kunden-ID
</para>

<para>
Wenn Sie die Kundendaten (z. B. Firma, Name, eMail, ...) in Ihrem
Agenten-Interface anzeigen möchten, benutzen Sie die folgenden
Konfigurations-Optionen und fügen Sie diese in die Datei
<filename>Kernel/Config.pm</filename> ein.
</para>

<para>
<programlisting>
    # Ticket::Frontend::CustomerInfo*
    # (show customer user info on Compose (Phone and Email), Zoom and
    # Queue view)
    $Self-&gt;{'Ticket::Frontend::CustomerInfoCompose'} = 1;
    $Self-&gt;{'Ticket::Frontend::CustomerInfoZoom'} = 1;
    $Self-&gt;{'Ticket::Frontend::CustomerInfoQueue'} = 0;
</programlisting>
</para>
</sect1>

<sect1 id="customer-user-backend">
<title>Kundenbenutzer Back-end</title>

<para>
Es existieren zwei Kundenbenutzer Back-ends, DB und LDAP. Falls Sie
bereits ein Kundenverzeichnis (z. B. SAP, ...) haben, ist es natürlich
möglich, dafür ein eigenes Back-end zu schreiben.
</para>

<sect2 id="customer-backend-db">
<title>Datenbank (Standard)</title>

<example id="db-customer-backend">
<title>Konfiguration eines DB Kunden Back-ends</title>

<para>
Dies ist ein Beispiel für die Konfiguration eines Back-ends, welches die
Kundendaten in der normalen OTRS Datenbank verwaltet.
</para>

<para>
<programlisting>
    # CustomerUser
    # (customer user database backend and settings)
    $Self-&gt;{CustomerUser} = {
        Name =&gt; 'Datenbank Quelle',
        Module =&gt; 'Kernel::System::CustomerUser::DB',
        Params =&gt; {
            # if you want to use an external database, add the
            # required settings
#            DSN =&gt; 'DBI:odbc:yourdsn',
#            DSN =&gt; 'DBI:mysql:database=customerdb;host=customerdbhost',
#            User =&gt; '',
#            Password =&gt; '',
            Table =&gt; 'customer_user',
        },
        # customer uniq id
	CustomerKey =&gt; 'login',
        # customer #
	CustomerID =&gt; 'customer_id',
	CustomerValid =&gt; 'valid_id',
        CustomerUserListFields =&gt; ['first_name', 'last_name', 'email'],
        CustomerUserSearchFields =&gt; ['login', 'last_name', 'customer_id'],
        CustomerUserSearchPrefix =&gt; '',
        CustomerUserSearchSuffix =&gt; '*',
        CustomerUserSearchListLimit =&gt; 250,
        CustomerUserPostMasterSearchFields =&gt; ['email'],
        CustomerUserNameFields =&gt; ['salutation','first_name','last_name'],
        CustomerUserEmailUniqCheck =&gt; 1,
#        # show now own tickets in customer panel, CompanyTickets
#        CustomerUserExcludePrimaryCustomerID =&gt; 0,
#        # generate auto logins
#        AutoLoginCreation =&gt; 0,
#        AutoLoginCreationPrefix =&gt; 'auto',
#        # admin can change customer preferences
#        AdminSetPreferences =&gt; 1,
#        # just a read only source
#        ReadOnly =&gt; 1,
        Map =&gt; [
            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
            [ 'UserSalutation', 'Salutation', 'salutation',  1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'first_name',  1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'last_name',   1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'login',       1, 1, 'var', '', 0 ],
            [ 'UserPassword',   'Password',   'pw',          0, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',       0, 1, 'var', '', 0 ],
#            [ 'UserEmail',      'Email', 'email',           1, 1,
#            'var','$Env{"CGIHandle"}?Action=AgentTicketCompose&amp;ResponseID=1&amp;TicketID=$Data{"TicketID"}&amp;ArticleID=$Data{"ArticleID"}', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],
#            [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
            [ 'UserComment',     'Comment',   'comments',    1, 0, 'var', '', 0 ],
            [ 'ValidID',         'Valid',     'valid_id',    0, 1, 'int', '', 0 ],
        ],
        # default selections
        Selections =&gt; {
            UserSalutation =&gt; {
                'Mr.' =&gt; 'Mr.',
                'Mrs.' =&gt; 'Mrs.',
            },
        },
    };
</programlisting>
</para>

</example>

<para>
Falls Sie die Kundendaten anpassen möchten, ändern Sie in der Datenbank die
Tabellenspalten oder fügen Sie weitere hinzu (im folgenden Beispiel wird
ein Feld für die Telefonnummer hinzugefügt)
</para>

<para>
<screen>
linux:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 116 to server version: 5.0.18-Debian_7-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&gt; use otrs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; ALTER TABLE customer_user ADD phone VARCHAR (250);
Query OK, 1 rows affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql&gt; quit
Bye
linux:~#
</screen>
</para>

<para>
Danach fügen Sie Ihre eigenen Spalten dem MAP Array in
der Datei <filename>Kernel/Config.pm</filename> hinzu:
</para>

<para>
<programlisting>
    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [...]
    [ 'UserPhone',      'Phone',      'phone',       0, 1, 'var', '', 0 ],
</programlisting>
</para>

<para>
Natürlich können Sie all diese Kundeninformationen dann auch
über das Admin-Interface bzw. die Kundenverwaltung pflegen.
</para>

<sect3 id="multi-customer-ids-db">
<title>Kunden mit multiblen IDs (Firmen Tickets)</title>

<para>
Es ist möglich, einem Kunden mehr als nur eine Kundennummer zuzuweisen.
Dies kann z. B. dann sinnvoll sein, wenn ein Kunde auf Tickets anderer
Kunden zugreifen muss, z. B. der Abteilungsleiter auf die Tickets der
Mitarbeiter seiner Abteilung. Hat ein Kunde Zugriff auf Tickets anderer
Kunden, verwendet man in OTRS das sog. Firmen Ticket Feature. Im
Kunden-Interface können diese Tickets über den "Firmen Ticket" Link
eingesehen werden.
</para>

<para>
Um Firmen Tickets zu verwenden, muss die customer_user Tabelle in der OTRS
Datenbank um eine Spalte erweitert werden, in die später die Kundennummern
eingetragen werden, auf die ein Kunde zusätzlich zu den eigenen Tickets
Zugriff haben soll:
</para>

<para>
<screen>
linux:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 124 to server version: 5.0.18-Debian_7-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&gt; use otrs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; ALTER TABLE customer_user ADD customer_ids VARCHAR (250);
Query OK, 1 rows affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql&gt; quit
Bye
linux:~#
</screen>
</para>

<para>
Danach fügen Sie die neue Spalte dem MAP Array in
der Datei <filename>Kernel/Config.pm</filename> hinzu:
</para>

<para>
<programlisting>
    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [...]
    [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
</programlisting>
</para>

<para>
Die Spalte für die Multi-Kundennummern kann ab nun über das
Admin-Interface bzw. über die Kundenverwaltung gepflegt werden.
</para>

<para>
Um nun den Zugriff für einen Kunden auf die Tickets anderer Kunden zu
ermöglichen, tragen Sie in die neue Spalte die IDs der Kunden ein, auf
deren Tickets der Zugriff ermöglicht werden soll. Die einzelnen IDs trennen
Sie durch ein Semikolon.
</para>

<example id="company-tickets-db">
<title>Firmen Tickets mit einem DB Back-end</title>

<para>
Angenommen es sind die Kunden A, B und C im System angelegt. A soll mit
Hilfe von Firmen Tickets über das Kunden-Interface Zugriff auf die Tickets
von B und C haben, B und C sollen jedoch jeweils nur ihre eigenen Tickets
einsehen und bearbeiten können.
</para>

<para>
Um dieses Setup zu realisieren, ändern Sie wie oben beschrieben die
customer_user Tabelle in der OTRS Datenbank und das Mapping in
<filename>Kernel/Config.pm</filename>. Anschließend laden Sie über die
Kundenverwaltung die Einstellungen des Kunden A und tragen bei
"Kundennummern" die Werte "B;C;" ein.
</para>

</example>

</sect3>

</sect2>

<sect2 id="customer-backend-ldap">
<title>LDAP</title>

<para>
Falls Sie ein existierendes LDAP Verzeichnis mit Ihren Kundenbenutzern
haben, können Sie dieses auch mit OTRS nutzen.
</para>

<example id="ldap-customer-backend">
<title>Konfiguration eines LDAP Kunden Back-ends</title>

<para>
Dies ist ein Beispiel für ein Kunden Back-end, welches seine Daten aus
einem LDAP Verzeichnis bezieht.
</para>

<para>
<programlisting>
    # CustomerUser
    # (customer user ldap backend and settings)
    $Self-&gt;{CustomerUser} = {
        Name =&gt; 'LDAP Datenquelle',
        Module =&gt; 'Kernel::System::CustomerUser::LDAP',
        Params =&gt; {
            # ldap host
            Host =&gt; 'bay.csuhayward.edu',
            # ldap base dn
            BaseDN =&gt; 'ou=seas,o=csuh',
            # search scope (one|sub)
            SSCOPE =&gt; 'sub',
#            # The following is valid but would only be necessary if the
#            # anonymous user does NOT have permission to read from the LDAP tree
            UserDN =&gt; '',
            UserPw =&gt; '',
            # in case you want to add always one filter to each ldap query, use
            # this option. e. g. AlwaysFilter =&gt; '(mail=*)' or AlwaysFilter =&gt; '(objectclass=user)'
            AlwaysFilter =&gt; '',
            # if your frontend is e. g. iso-8859-1 and the charset of your
            # ldap server is utf-8, use this options (if not, ignore it)
#            SourceCharset =&gt; 'utf-8',
#            DestCharset =&gt; 'iso-8859-1',
            # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
            Params =&gt; {
                port =&gt; 389,
                timeout =&gt; 120,
                async =&gt; 0,
                version =&gt; 3,
            },
        },
        # customer uniq id
        CustomerKey =&gt; 'uid',
        # customer #
        CustomerID =&gt; 'mail',
        CustomerUserListFields =&gt; ['cn', 'mail'],
        CustomerUserSearchFields =&gt; ['uid', 'cn', 'mail'],
        CustomerUserSearchPrefix =&gt; '',
        CustomerUserSearchSuffix =&gt; '*',
        CustomerUserSearchListLimit =&gt; 250,
        CustomerUserPostMasterSearchFields =&gt; ['mail'],
        CustomerUserNameFields =&gt; ['givenname', 'sn'],
        # show now own tickets in customer panel, CompanyTickets
        CustomerUserExcludePrimaryCustomerID =&gt; 0,
        # add a ldap filter for valid users (expert setting)
#       CustomerUserValidFilter =&gt; '(!(description=gesperrt))',
        # admin can't change customer preferences
        AdminSetPreferences =&gt; 0,
        Map =&gt; [
            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
            [ 'UserSalutation', 'Title',      'title',           1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
#            [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],
            [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
            [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
            [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
        ],
    };
</programlisting>
</para>

</example>

<para>
Falls Sie in Ihrem LDAP Verzeichnis weitere Informationen zu Ihren Kunden
gespeichert haben und mit OTRS darauf zugreifen möchten, erweitern Sie das
MAP Array in <filename>Kernel/Config.pm</filename> bzw. entfernen nicht
gewünschte Einträge:
</para>

<para>
<programlisting>
    # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
    [...]
    [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
</programlisting>
</para>

<sect3 id="multi-customer-ids-ldap">
<title>Kunden mit multiblen IDs (Firmen Tickets)</title>

<para>
Es ist möglich, einem Kunden mehr als nur eine Kundennummer zuzuweisen.
Dies kann z. B. dann sinnvoll sein, wenn ein Kunde auf Tickets anderer
Kunden zugreifen muss, z. B. der Abteilungsleiter auf die Tickets der
Mitarbeiter seiner Abteilung. Hat ein Kunde Zugriff auf Tickets anderer
Kunden, verwendet man in OTRS das sog. Firmen Ticket Feature. Im
Kunden-Interface können diese Tickets über den "Firmen Ticket" Link
eingesehen werden.
</para>

<para>
Um Firmen Tickets zu verwenden, muss das LDAP Verzeichnis um ein Feld
erweitert werden, in das die Kundennummern eingetragen werden können, auf
die später ein Kunde zusätzlich zu den eigenen Tickets Zugriff haben soll,
z. B. um das Feld CustomerIDs.
</para>

<para>
Danach fügen Sie die neue Spalte dem MAP Array in
der Datei <filename>Kernel/Config.pm</filename> hinzu:
</para>

<para>
<programlisting>
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
            [...]
            [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
</programlisting>
</para>

<para>
Das Feld für die Multi-Kundennummern muss direkt im LDAP Verzeichnis gepflegt
und kann von OTRS aus nicht direkt verwaltet werden.
</para>

<para>
Um nun den Zugriff für einen Kunden auf die Tickets anderer Kunden zu
ermöglichen, tragen Sie innerhalb des LDAP Verzeichnisses in das neue Feld
die IDs der Kunden ein, auf deren Tickets der Zugriff ermöglicht werden soll.
Die einzelnen IDs trennen Sie durch ein Semikolon.
</para>

<example id="company-tickets-ldap">
<title>Firmen Tickets mit einem LDAP Back-end</title>

<para>
Angenommen es sind die Kunden A, B und C im System angelegt. A soll mit
Hilfe von Firmen Tickets über das Kunden-Interface Zugriff auf die Tickets
von B und C haben, B und C sollen jedoch jeweils nur ihre eigenen Tickets
einsehen und bearbeiten können.
</para>

<para>
Um dieses Setup zu realisieren, ändern Sie wie oben beschrieben das
LDAP Verzeichnis und das Mapping in <filename>Kernel/Config.pm</filename>.
Anschließend tragen Sie im LDAP Verzeichnis innerhalb der Einstellungen für
den Kunden A für CustomerIDs die Werte "B;C;" ein.
</para>

</example>

</sect3>
</sect2>

<sect2 id="multible-customer-backends">
<title>Verwenden mehrerer Kunden Back-ends</title>

<para>
Soll mehr als nur ein Back-end mit verschiedenen Kundendaten verwendet werden
(z. B. gleichzeitig DB und LDAP), so ist dies ebenfalls mit OTRS möglich.
In einem solchen Fall muss der CustomerUser Parameter für jedes Back-end um
eine Nummer erweitert werden, z. B. "CustomerUser1", "CustomerUser2", usw.
</para>

<example id="multible-customer-backend-example">
<title>Gleichzeitige Einbindung mehrerer verschiedener Kunden Back-ends</title>

<para>
In der folgenden KOnfiguration verwendet OTRS gleichzeitig ein DB und ein
LDAP Kunden Back-end.
</para>

<para>
<programlisting>
    # 1. Customer user backend: DB
    # (customer user database backend and settings)
    $Self-&gt;{CustomerUser1} = {
        Name =&gt; 'Datenbank Quelle',
        Module =&gt; 'Kernel::System::CustomerUser::DB',
        Params =&gt; {
            # if you want to use an external database, add the
            # required settings
#            DSN =&gt; 'DBI:odbc:yourdsn',
#            DSN =&gt; 'DBI:mysql:database=customerdb;host=customerdbhost',
#            User =&gt; '',
#            Password =&gt; '',
            Table =&gt; 'customer_user',
        },
        # customer uniq id
        CustomerKey = 'login',
        # customer #
        CustomerID = 'customer_id',
        CustomerValid = 'valid_id',
        CustomerUserListFields =&gt; ['first_name', 'last_name', 'email'],
        CustomerUserSearchFields =&gt; ['login', 'last_name', 'customer_id'],
        CustomerUserSearchPrefix =&gt; '',
        CustomerUserSearchSuffix =&gt; '*',
        CustomerUserSearchListLimit =&gt; 250,
        CustomerUserPostMasterSearchFields =&gt; ['email'],
        CustomerUserNameFields =&gt; ['salutation','first_name','last_name'],
        CustomerUserEmailUniqCheck =&gt; 1,
#        # show now own tickets in customer panel, CompanyTickets
#        CustomerUserExcludePrimaryCustomerID =&gt; 0,
#        # generate auto logins
#        AutoLoginCreation =&gt; 0,
#        AutoLoginCreationPrefix =&gt; 'auto',
#        # admin can change customer preferences
#        AdminSetPreferences =&gt; 1,
#        # just a read only source
#        ReadOnly =&gt; 1,
        Map =&gt; [
            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
            [ 'UserSalutation', 'Salutation', 'salutation',  1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'first_name',  1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'last_name',   1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'login',       1, 1, 'var', '', 0 ],
            [ 'UserPassword',   'Password',   'pw',          0, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',       0, 1, 'var', '', 0 ],
#            [ 'UserEmail',      'Email', 'email',           1, 1,
#            'var','$Env{"CGIHandle"}?Action=AgentTicketCompose&amp;ResponseID=1&amp;TicketID=$Data{"TicketID"}&amp;ArticleID=$Data{"ArticleID"}', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],
#            [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
            [ 'UserComment',     'Comment',   'comments',    1, 0, 'var', '', 0 ],
            [ 'ValidID',         'Valid',     'valid_id',    0, 1, 'int', '', 0 ],
        ],
        # default selections
        Selections =&gt; {
            UserSalutation =&gt; {
                'Mr.' =&gt; 'Mr.',
                'Mrs.' =&gt; 'Mrs.',
            },
        },
    };

    # 2. Customer user backend: LDAP
    # (customer user ldap backend and settings)
    $Self-&gt;{CustomerUser2} = {
        Name =&gt; 'LDAP Datenquelle',
        Module =&gt; 'Kernel::System::CustomerUser::LDAP',
        Params =&gt; {
            # ldap host
            Host =&gt; 'bay.csuhayward.edu',
            # ldap base dn
            BaseDN =&gt; 'ou=seas,o=csuh',
            # search scope (one|sub)
            SSCOPE =&gt; 'sub',
#            # The following is valid but would only be necessary if the
#            # anonymous user does NOT have permission to read from the LDAP tree
            UserDN =&gt; '',
            UserPw =&gt; '',
            # in case you want to add always one filter to each ldap query, use
            # this option. e. g. AlwaysFilter =&gt; '(mail=*)' or AlwaysFilter =&gt; '(objectclass=user)'
            AlwaysFilter =&gt; '',
            # if your frontend is e. g. iso-8859-1 and the charset of your
            # ldap server is utf-8, use this options (if not, ignore it)
#            SourceCharset =&gt; 'utf-8',
#            DestCharset =&gt; 'iso-8859-1',
            # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
            Params =&gt; {
                port =&gt; 389,
                timeout =&gt; 120,
                async =&gt; 0,
                version =&gt; 3,
            },
        },
        # customer uniq id
        CustomerKey =&gt; 'uid',
        # customer #
        CustomerID =&gt; 'mail',
        CustomerUserListFields =&gt; ['cn', 'mail'],
        CustomerUserSearchFields =&gt; ['uid', 'cn', 'mail'],
        CustomerUserSearchPrefix =&gt; '',
        CustomerUserSearchSuffix =&gt; '*',
        CustomerUserSearchListLimit =&gt; 250,
        CustomerUserPostMasterSearchFields =&gt; ['mail'],
        CustomerUserNameFields =&gt; ['givenname', 'sn'],
        # show now own tickets in customer panel, CompanyTickets
        CustomerUserExcludePrimaryCustomerID =&gt; 0,
        # add a ldap filter for valid users (expert setting)
#       CustomerUserValidFilter =&gt; '(!(description=gesperrt))',
        # admin can't change customer preferences
        AdminSetPreferences =&gt; 0,
        Map =&gt; [
            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
            [ 'UserSalutation', 'Title',      'title',           1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
#            [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],
            [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
            [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
            [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
        ],
    };
</programlisting>
</para>

</example>

<para>
Es können bis zu 10 Kunden Back-ends gleichzeitig eingebunden werden. Über
die Kundenverwaltung in OTRS ist der Zugriff auf die verschiedenen
Back-ends möglich.
</para>

</sect2>

</sect1>

<sect1 id="auth-backends">
<title>Back-ends für die Authentifizierung von Agenten und Kunden</title>

<para>
OTRS bietet die Möglichkeit Agenten und Kunden über verschiedene Back-ends
zu authentifizieren. Die verschiedenen Konfigurationsmöglichkeiten werden
in den folgenden Abschnitten näher beschrieben.
</para>

<sect2 id="agent-auth-backends">
<title>Authentifizierungs Back-ends für Agenten</title>

<sect3 id="agent-auth-backend-db">
<title>Datenbank (Standard)</title>

<para>
Das Back-end für die Authentifizierung von Agenten, welches OTRS
standardmäßig verwendet, ist die OTRS-Datenbank. Die Agenten können
innerhalb des

<link linkend="adminarea">
Admin-Bereiches
</link>

in der

<link linkend="adminarea-user">
Benutzerverwaltung
</link>

angelegt und bearbeitet werden.
</para>

<example id="configuration-agent-auth-backend-db">
<title>Agentenauthentifizierung gegen ein DB Back-end</title>

<para>
<programlisting>
    $Self-&gt;{'AuthModule'} = 'Kernel::System::Auth::DB';
</programlisting>
</para>

</example>

</sect3>

<sect3 id="agent-auth-backend-ldap">
<title>LDAP</title>

<para>
Falls ein LDAP Verzeichnis mit Ihren Agenten-Benutzerdaten verfügbar
ist, können Sie das LDAP Modul für die Authentifizierung Ihrer Agenten
nutzen. Dieses Modul greift nur lesend auf die Daten im LDAP Verzeichnis
zu, d.h. die Daten können nicht mit OTRS bearbeitet
werden, es können also keine Agenten mit Hilfe der

<link linkend="adminarea-user">
Benutzerverwaltung
</link>

von OTRS angelegt oder bearbeitet werden.
</para>

<example id="configuration-agent-auth-backend-ldap">
<title>Agentenauthentifizierung gegen ein LDAP Back-end</title>

<para>
<programlisting>
    # This is an example configuration for an LDAP auth. backend.
    # (take care that Net::LDAP is installed!)
    $Self-&gt;{'AuthModule'} = 'Kernel::System::Auth::LDAP';
    $Self-&gt;{'AuthModule::LDAP::Host'} = 'ldap.example.com';
    $Self-&gt;{'AuthModule::LDAP::BaseDN'} = 'dc=example,dc=com';
    $Self-&gt;{'AuthModule::LDAP::UID'} = 'uid';

    # Check if the user is allowed to auth in a posixGroup
    # (e. g. user needs to be in a group xyz to use otrs)
    $Self-&gt;{'AuthModule::LDAP::GroupDN'} = 'cn=otrsallow,ou=posixGroups,dc=example,dc=com';
    $Self-&gt;{'AuthModule::LDAP::AccessAttr'} = 'memberUid';
    # for ldap posixGroups objectclass (just uid)
#    $Self-&gt;{'AuthModule::LDAP::UserAttr'} = 'UID';
    # for non ldap posixGroups objectclass (with full user dn)
#    $Self-&gt;{'AuthModule::LDAP::UserAttr'} = 'DN';

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    $Self-&gt;{'AuthModule::LDAP::SearchUserDN'} = '';
    $Self-&gt;{'AuthModule::LDAP::SearchUserPw'} = '';

    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter =&gt; '(mail=*)' or AlwaysFilter =&gt; '(objectclass=user)'
    $Self-&gt;{'AuthModule::LDAP::AlwaysFilter'} = '';

    # in case you want to add a suffix to each login name, then
    # you can use this option. e. g. user just want to use user but
    # in your ldap directory exists user@domain.
#    $Self-&gt;{'AuthModule::LDAP::UserSuffix'} = '@domain.com';

    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self-&gt;{'AuthModule::LDAP::Params'} = {
        port =&gt; 389,
        timeout =&gt; 120,
        async =&gt; 0,
        version =&gt; 3,
    };
</programlisting>
</para>

</example>

<para>
Mit den folgenden Konfigurationsparametern können die Benutzerdaten der
Agenten aus dem LDAP in die lokale OTRS Datenbank synchronisiert werden.
Dies reduziert die Zugriffe auf ihr LDAP Verzeichnis, entlastet den
Server mit den LDAP Daten und beschleunigt die Anmeldung an OTRS. Die
Synchronisierung der Daten findet bei der ersten Anmeldung des Agenten
statt, trotz der synchronisierten Daten bleibt ihr LDAP Verzeichnis die
letzte Instanz bei der Anmeldung. D.h. wird ein User im LDAP Verzeichnis
gelöscht oder deaktiviert, klappt die Anmeldung an OTRS nicht. Ebenfalls
müssen die Daten für einen Agenten weiterhin direkt im LDAP Verzeichnis
gepflegt werden.
</para>

<para>
<programlisting>
    # UserSyncLDAPMap
    # (map if agent should create/synced from LDAP to DB after login)
    $Self-&gt;{UserSyncLDAPMap} = {
        # DB -&gt; LDAP
        Firstname =&gt; 'givenName',
        Lastname =&gt; 'sn',
        Email =&gt; 'mail',
    };

    # UserSyncLDAPGroups
    # (If "LDAP" was selected for AuthModule, you can specify
    # initial user groups for first login.)
    $Self-&gt;{UserSyncLDAPGroups} = [
        'users',
    ];

    # UserTable
    $Self-&gt;{DatabaseUserTable} = 'system_user';
    $Self-&gt;{DatabaseUserTableUserID} = 'id';
    $Self-&gt;{DatabaseUserTableUserPW} = 'pw';
    $Self-&gt;{DatabaseUserTableUser} = 'login';
</programlisting>
</para>

</sect3>

<sect3 id="agent-auth-backend-httpbasic">
<title>HTTPBasicAuth für Agenten</title>

<para>
Falls Sie eine "single sign on"-Lösung für Ihre Agenten implementieren
möchten, benutzen Sie http basic authentication (für alle Ihre
Systeme) und aktivieren Sie das HTTPBasicAuth Modul (kein OTRS-Login
mehr für Kunden benötigt!).
</para>

<example id="configuration-agent-auth-backend-htbasic">
<title>Agentenauthentifizierung über HTTPBasic</title>

<para>
<programlisting>
    # This is an example configuration for an apache ($ENV{REMOTE_USER})
    # auth. backend. Use it if you want to have a singe login through
    # apache http-basic-auth
    $Self-&gt;{'AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth';

    # Note:
    #
    # If you use this module, you should use as fallback
    # the following config settings if user isn't login through
    # apache ($ENV{REMOTE_USER})
    $Self-&gt;{LoginURL} = 'http://host.example.com/not-authorised-for-otrs.html';
    $Self-&gt;{LogoutURL} = 'http://host.example.com/thanks-for-using-otrs.html';
</programlisting>
</para>

</example>

</sect3>

<sect3 id="agent-auth-backend-radius">
<title>Radius</title>

<para>
Mit den folgenden Einstellungen kann die Authentifizierung von Agenten gegen
einen Radius-Server realisiert werden.
</para>

<example id="configuration-agent-auth-backend-radius">
<title>Agentenauthentifizierung gegen ein Radius Back-end</title>

<para>
<programlisting>
    # This is example configuration to auth. agents against a radius server
    $Self-&gt;{'AuthModule'} = 'Kernel::System::Auth::Radius';
    $Self-&gt;{'AuthModule::Radius::Host'} = 'radiushost';
    $Self-&gt;{'AuthModule::Radius::Password'} = 'radiussecret';
</programlisting>
</para>

</example>

</sect3>

</sect2>

<sect2 id="customer-auth-backends">
<title>Authentifizierungs Back-ends für Kunden</title>

<sect3 id="customer-auth-backend-db">
<title>Datenbank (Standard)</title>

<para>
Das Back-end für die Authentifizierung von Kunden, welches OTRS standardmäßig
verwendet, ist die OTRS-Datenbank. Die Kundendaten können über das Interface
zur Verwaltung von Kunden angelegt und bearbeitet werden.
</para>

<example id="configuration-customer-auth-backend-db">
<title>Kundenauthentifizierung gegen ein DB Back-end</title>

<para>
<programlisting>
    # This is the auth. module againt the otrs db
    $Self-&gt;{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::DB';
    $Self-&gt;{'Customer::AuthModule::DB::Table'} = 'customer_user';
    $Self-&gt;{'Customer::AuthModule::DB::CustomerKey'} = 'login';
    $Self-&gt;{'Customer::AuthModule::DB::CustomerPassword'} = 'pw';
#    $Self-&gt;{'Customer::AuthModule::DB::DSN'} = "DBI:mysql:database=customerdb;host=customerdbhost";
#    $Self-&gt;{'Customer::AuthModule::DB::User'} = "some_user";
#    $Self-&gt;{'Customer::AuthModule::DB::Password'} = "some_password";
</programlisting>
</para>

</example>

</sect3>

<sect3 id="customer-auth-backend-ldap">
<title>LDAP</title>

<para>
Falls ein LDAP Verzeichnis mit Ihren Kundenbenutzern verfügbar
ist, können Sie das LDAP Modul für die Authentifizierung Ihrer Kunden
nutzen. Dieses Modul greift nur lesend auf die Daten im LDAP Verzeichnis
zu, d.h. die Daten können nicht mit OTRS bearbeitet
werden, es können also keine Kunden mit Hilfe der Kundenverwaltung von OTRS
angelegt oder bearbeitet werden.
</para>

<example id="configuration-customer-auth-backend-ldap">
<title>Kundenauthentifizierung gegen ein LDAP Back-end</title>

<para>
<programlisting>
    # This is an example configuration for an LDAP auth. backend.
    # (take care that Net::LDAP is installed!)
     $Self-&gt;{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
     $Self-&gt;{'Customer::AuthModule::LDAP::Host'} = 'ldap.example.com';
     $Self-&gt;{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=example,dc=com';
     $Self-&gt;{'Customer::AuthModule::LDAP::UID'} = 'uid';

    # Check if the user is allowed to auth in a posixGroup
    # (e. g. user needs to be in a group xyz to use otrs)
    $Self-&gt;{'Customer::AuthModule::LDAP::GroupDN'} = 'cn=otrsallow,ou=posixGroups,dc=example,dc=com';
    $Self-&gt;{'Customer::AuthModule::LDAP::AccessAttr'} = 'memberUid';
    # for ldap posixGroups objectclass (just uid)
    $Self-&gt;{'Customer::AuthModule::LDAP::UserAttr'} = 'UID';
    # for non ldap posixGroups objectclass (full user dn)
#    $Self-&gt;{'Customer::AuthModule::LDAP::UserAttr'} = 'DN';

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    $Self-&gt;{'Customer::AuthModule::LDAP::SearchUserDN'} = '';
    $Self-&gt;{'Customer::AuthModule::LDAP::SearchUserPw'} = '';

    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter =&gt; '(mail=*)' or AlwaysFilter =&gt; '(objectclass=user)'
    $Self-&gt;{'Customer::AuthModule::LDAP::AlwaysFilter'} = '';

    # in case you want to add a suffix to each customer login name, then
    # you can use this option. e. g. user just want to use user but
    # in your ldap directory exists user@domain.
#    $Self-&gt;{'Customer::AuthModule::LDAP::UserSuffix'} = '@domain.com';

    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self-&gt;{'Customer::AuthModule::LDAP::Params'} = {
        port =&gt; 389,
        timeout =&gt; 120,
        async =&gt; 0,
        version =&gt; 3,
    };
</programlisting>
</para>

</example>

</sect3>

<sect3 id="customer-auth-backend-httpbasic">
<title>HTTPBasicAuth für Kunden</title>

<para>
Falls Sie eine "single sign on"-Lösung für Ihre Kunden
implementieren möchten, benutzen Sie HTTPBasic Authentication (für alle Ihre
Systeme) und aktivieren Sie das HTTPBasicAuth Modul (kein OTRS-Login
mehr benötigt!).
</para>

<example id="configuration-customer-auth-backend-htbasic">
<title>Kundenauthentifizierung über HTTPBasic</title>

<para>
<programlisting>
    # This is an example configuration for an apache ($ENV{REMOTE_USER})
    # auth. backend. Use it if you want to have a singe login through
    # apache http-basic-auth
    $Self-&gt;{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::HTTPBasicAuth';

    # Note:
    # If you use this module, you should use the following
    # config settings as fallback, if user isn't login through
    # apache ($ENV{REMOTE_USER})
    $Self-&gt;{CustomerPanelLoginURL} = 'http://host.example.com/not-authorised-for-otrs.html';
    $Self-&gt;{CustomerPanelLogoutURL} = 'http://host.example.com/thanks-for-using-otrs.html';
</programlisting>
</para>

</example>

</sect3>

<sect3 id="customer-auth-backend-radius">
<title>Radius</title>

<para>
Mit den folgenden Einstellungen kann die Authentifizierung von Kunden gegen
einen Radius-Server realisiert werden.
</para>

<example id="configuration-customer-auth-backend-radius">
<title>Kundenauthentifizierung gegen ein Radius Back-end</title>

<para>
<programlisting>
    # This is a example configuration to auth. customer against a radius server
    $Self-&gt;{'Customer::AuthModule'} = 'Kernel::System::Auth::Radius';
    $Self-&gt;{'Customer::AuthModule::Radius::Host'} = 'radiushost';
    $Self-&gt;{'Customer::AuthModule::Radius::Password'} = 'radiussecret';
</programlisting>
</para>

</example>

</sect3>

</sect2>

</sect1>

<sect1 id="customer-self-registration">
<title>Kunden-Selbstanmeldung anpassen</title>

<para>
Es ist möglich, die Kunden-Selbstanmeldung für neue Kunden über
"customer.pl" anzupassen. Somit können Sie mehr optionale oder
benötigte Felder (z. B. Adresse, Ort, Telefonnummer) hinzufügen.
</para>

<para>
In folgenden Beispiel wird ein benötigtes Feld für die Telefonnummer
hinzugefügt.
</para>

<sect2 id="customer-self-registration-dtl">
<title>Anpassen der Weboberfläche</title>

<para>
Damit im Webinterface das zusätzliche Feld für die Telefonnummer
angezeigt wird, muss die zuständige dtl-Datei angepasst werden. Editieren Sie
<filename>Kernel/Output/HTML/Standard/CustomerLogin.dtl</filename>
und fügen Sie in Zeile 128 das gewünschte Feld hinzu.
</para>

<para>
<programlisting>
    [...]
    &lt;tr&gt;
      &lt;td&gt;$Text{"Phonenumber"}: &lt;/td&gt;
      &lt;td&gt;&lt;input type="text" name="Phone" value="$QData{"UserPhone"}" size="20" maxlength="50"&gt;&lt;/td&gt;
    &lt;/tr&gt;
    [...]
</programlisting>
</para>
</sect2>

<sect2 id="customer-self-registration-mapping">
<title>Kunden-Mapping</title>

<para>
Zusätzlich muss das Kunden-Mapping um den Eintrag für die Telefonnummer
erweitert werden. Dazu werden zuerst die Einstellungen für  "CustomerUser"
aus der Datei <filename>Kernel/Config/Defaults.pm</filename> in die Datei
<filename>Kernel/Config.pm</filename> übertragen. Anschließend wird das
Kunden-Mapping umdas Phone-Feld erweitert.
</para>

<para>
<programlisting>
    # CustomerUser
    # (customer user database backend and settings)
    $Self-&gt;{CustomerUser} = {
        Name =&gt; 'Database Backend',
        Module =&gt; 'Kernel::System::CustomerUser::DB',
        Params =&gt; {
            # if you want to use an external database, add the
            # required settings
#            DSN =&gt; 'DBI:odbc:yourdsn',
#            DSN =&gt; 'DBI:mysql:database=customerdb;host=customerdbhost',
#            User =&gt; '',
#            Password =&gt; '',
            Table =&gt; 'customer_user',
        },
        # customer uniq id
        CustomerKey =&gt; 'login',
        # customer #
        CustomerID =&gt; 'customer_id',
        CustomerValid =&gt; 'valid_id',
        CustomerUserListFields =&gt; ['first_name', 'last_name', 'email'],
#        CustomerUserListFields =&gt; ['login', 'first_name', 'last_name', 'customer_id', 'email'],
        CustomerUserSearchFields =&gt; ['login', 'last_name', 'customer_id'],
        CustomerUserSearchPrefix =&gt; '',
        CustomerUserSearchSuffix =&gt; '*',
        CustomerUserSearchListLimit =&gt; 250,
        CustomerUserPostMasterSearchFields =&gt; ['email'],
        CustomerUserNameFields =&gt; ['salutation', 'first_name', 'last_name'],
        CustomerUserEmailUniqCheck =&gt; 1,
#        # show now own tickets in customer panel, CompanyTickets
#        CustomerUserExcludePrimaryCustomerID =&gt; 0,
#        # generate auto logins
#        AutoLoginCreation =&gt; 0,
#        AutoLoginCreationPrefix =&gt; 'auto',
#        # admin can change customer preferences
#        AdminSetPreferences =&gt; 1,
#        # just a read only source
#        ReadOnly =&gt; 1,
        Map =&gt; [
            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
            [ 'UserSalutation', 'Salutation', 'salutation',  1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'first_name',  1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'last_name',   1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'login',       1, 1, 'var', '', 0 ],
            [ 'UserPassword',   'Password',   'pw',          0, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',       0, 1, 'var', '', 0 ],
#            [ 'UserEmail',      'Email', 'email',           1, 1, 'var','$Env{"CGIHandle"}?Action=AgentTicketCompose&amp;ResponseID=1&amp;TicketID=$Data{"TicketID"}&amp;ArticleID=$Data{"ArticleID"}', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],
#            [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
            [ 'UserComment',     'Comment',   'comments',    1, 0, 'var', '', 0 ],
            [ 'UserPhone',       'Phone',     'phone',       1, 0, 'var', '', 0 ],
            [ 'ValidID',         'Valid',     'valid_id',    0, 1, 'int', '', 0 ],
        ],
        # default selections
        Selections =&gt; {
            UserSalutation =&gt; {
                'Mr.' =&gt; 'Mr.',
                'Mrs.' =&gt; 'Mrs.',
            },
        },
    };
</programlisting>
</para>
</sect2>

<sect2 id="customer-self-registration-customer-table">
<title>Anpassen der Kunden-Tabelle</title>

<para>
Abschließend muss eine neue Spalte zur "customer_user" Tabelle in der OTRS
Datenbank hinzugefügt werden, in der die Telefonnummer gespeichert werden
kann.
</para>

<para>
<screen>
linux:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 5.0.18-Debian_7-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&gt; use otrs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; ALTER TABLE customer_user ADD phone VARCHAR (200);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql&gt; quit
Bye
linux:~#
</screen>
</para>

<para>
Alle benötigten Anpassungen sind durchgeführt und das Feld für die
Telefonnummer sollte nun im Kunden-Interface (customer.pl) angezeigt und
verwendet werden können. Wird mod_perl eingesetzt, muss der Webserver neu
gestartet werden um die Änderungen zu übernehmen.
</para>
</sect2>

</sect1>

</chapter>
<!-- $Id: states.xml,v 1.1 2006/01/09 21:36:32 cs Exp $ --><chapter id="status">
<title>Anpassen der Ticket Status und Ticketstatustypen</title>

<para>
OTRS erlaubt es Ihnen, die Ticket-Status zu verändern oder neue Status
hinzuzufügen. Hierbei gibt es zwei wichtige Optionen. Zum Einen den Namen
des Status "state-name" und zum Zweiten den Type des Status "state-type".
</para>

<para>
<itemizedlist>
<listitem>
    <para>
    Die standardmäßig voreingestellten Status lauten: 'neu', 'offen',
    'erfolgreich geschlossen', 'erfolglos geschlossen', 'merged',
    'entfernt', 'warten auf erfolgreich schließen', 'warten auf erfolglos
    schließen' und 'warten zur Erinnerung'.
    </para>
</listitem>
<listitem>
    <para>
    Jeder Status besteht aus einem Namen ("state-name") und einem Typen
    ("state-type"). Der Name ist frei wählbar und kann über das
    Admin-Interface von OTRS angepasst werden, die Statustypen müssen
    direkt in der Datenbank geändert werden.
    </para>
</listitem>
</itemizedlist>
</para>

<para>
Im Admin-Interface können Sie innerhalb der Einstellungen für "Status" neue
Status für die vorhandenen Statustypen hinzufügen oder ändern.
</para>

<para>
Beachten Sie, dass Sie bei Änderungen am Status "neu - new" auch die
entsprechenden Änderungen in der Konfigurationsdatei
<filename>Kernel/Config.pm</filename> bzw. mit Hilfe des
grafischen Konfigurations-Front-End vornehmen müssen.
</para>

<para>
<programlisting>
    [...]
    # PostmasterDefaultState
    # (The default state of new tickets.) [default: new]
    $Self-&gt;{PostmasterDefaultState} = 'new';

    # CustomerDefaultState
    # (default state of new customer tickets)
    $Self-&gt;{CustomerDefaultState} = 'new';
    [...]
</programlisting>
</para>

<para>
Auch bei Änderungen am Status "offen - open" sind Änderungen in
<filename>Kernel/Config.pm</filename> bzw. mit Hilfe des grafischen
Konfigurations-Front-End von Nöten!
</para>

<para>
<programlisting>
    [...]
    # default phone new state
    $Self-&gt;{'Ticket::Frontend::PhoneNextState'} = 'open';

    # PostmasterFollowUpState
    # (The state if a ticket got a follow up.) [default: open]
    $Self-&gt;{PostmasterFollowUpState} = 'open';
    [...]
</programlisting>
</para>

<para>
Möchten Sie einen neuen Statustyp hinzufügen, müssen Sie zuerst die
ticket_status-type-Tabelle in der OTRS Datenbank mit Hilfe eines
entsprechenden Datenbankclient anpassen.
</para>

<para>
<screen>
linux:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 23 to server version: 5.0.16-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&gt; use otrs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; insert into ticket_state_type (name,comments) values ('own','Own
state type');
Query OK, 1 row affected (0.00 sec)

mysql&gt; quit
Bye
linux:~#
</screen>
</para>

<para>
Nun können Sie über das Admin-Interface innerhalb der Einstellungen für
"Status" neue Ticketstatus hinzufügen, die als Statustyp "own"
enthalten. Anschließend müssen Sie noch in
<filename>Kernel/Config.pm</filename> oder über das grafische
Konfigurations-Front-end einstellen, an welchen Stellen im System der neue
Status verwendet werden soll, z.B.:
</para>

<para>
<programlisting>
    [...]
    # Ticket::DefaultNextMoveStateType
    # default move next state
    $Self-&gt;{'Ticket::DefaultNextMoveStateType'} = ['open', 'closed'];

    # next possible states after phone
    $Self-&gt;{'Ticket::PhoneDefaultNextStateType'} = ['open', 'pending auto', 'pending reminder', 'closed'];

    # default next state
    $Self-&gt;{'Ticket::Frontend::PhoneNextState'} = 'closed successful';

    # default next state [default: open]
    $Self-&gt;{'Ticket::Frontend::PhoneNewNextState'} = 'open';

    # next possible states after email
    $Self-&gt;{'Ticket::EmailDefaultNextStateType'} = ['own-state', 'open', 'pending auto', 'pending reminder', 'closed'];

    # default next state
    $Self-&gt;{'Ticket::Frontend::EmailNewNextState'} = 'open';

    # (default note next state)
    $Self-&gt;{'Ticket::DefaultNextNoteStateType'} = ['new', 'open', 'closed'];

    # Ticket::DefaultNextOwnerStateType
    # (default note next state)
   $Self-&gt;{'Ticket::DefaultNextOwnerStateType'} = ['open', 'closed'];

    # default compose next state
    $Self-&gt;{'Ticket::DefaultNextComposeType'} = 'open';

    # next possible states for compose message
    $Self-&gt;{'Ticket::DefaultNextComposeStateType'} = ['open', 'closed', 'pending auto', 'pending reminder'];

    # default bounce next state
    $Self-&gt;{'Ticket::Frontend::BounceState'} = 'closed successful';

    # next possible states for bounce message
    $Self-&gt;{'Ticket::DefaultNextBounceStateType'} = ['open', 'closed'];

    # next possible states for forward message
    $Self-&gt;{'Ticket::DefaultNextForwardStateType'} = ['open', 'closed'];

    # Ticket::ViewableStateType
    # (see http://yourhost/otrs/index.pl?Action=AdminState -&gt; StateType)
    $Self-&gt;{'Ticket::ViewableStateType'} = ['new', 'open', 'pending reminder', 'pending auto'];

    # Ticket::UnlockStateType
    # (Tickets which can be unlocked by bin/UnlockTickets.pl
    # (see http://yourhost/otrs/index.pl?Action=AdminState -&gt; StateType)
    $Self-&gt;{'Ticket::UnlockStateType'} = ['open', 'new'];
    [...]
</programlisting>
</para>

<para>
Fügen Sie einfach bei den Konfigurationsparametern, bei denen Ihr neuer
Statustyp mit aufgeführt werden soll, Ihren neuen Statustyp mit hinzu.
</para>
</chapter>
<!-- $Id: priorities.xml,v 1.1.4.1 2008/02/18 17:14:06 martin Exp $ --><chapter id="priorities">
<title>Anpassen der Ticket Prioritäten</title>

<para>
Wenn Sie die Ticket-Priorität anpassen / ändern möchten, arbeiten Sie
bitte die nächsten Schritte ab. Derzeit gibt es hierzu leider keine Maske
im Web-Interface.
</para>

<para>
<itemizedlist mark="opencircle">
    <listitem>
    <para>
    Verbinden Sie sich mit Hilfe eines MySQL-Clients mit Ihrem MySQL-Server
    und wählen Sie die OTRS-Datenbank aus:
    </para>

    <para>
    <screen>
    linux:~# mysql -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 10 to server version: 5.0.18-Debian_4-log

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql&gt; USE otrs;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    mysql&gt;
    </screen>
    </para>
    </listitem>
    <listitem>
    <para>
    So erhalten Sie die aktuellen Prioritäten:
    </para>

    <para>
    <screen>
    mysql&gt; SELECT id,name FROM ticket_priority;
    +----+-------------+
    | id | name        |
    +----+-------------+
    |  1 | 1 very low  |
    |  2 | 2 low       |
    |  3 | 3 normal    |
    |  4 | 4 high      |
    |  5 | 5 very high |
    +----+-------------+
    5 rows in set (0.00 sec)

    mysql&gt;
    </screen>
    </para>

    <para>
    <important>
    <para>
    Das Attribut "id" bestimmt die Reihenfolge der Prioritäten. =&gt; 1
    entspricht dem Minimum und 5 (oder höher) repräsentiert das Maximum.
    Die Nummer im Namen der Priorität wird für die Umsetzung der korrekten
    Reihenfolge innerhalb der Prioritäten verwendet.
    </para>
    </important>
    </para>
    </listitem>
    <listitem>
    <para>
    Anpassen/Ändern der Prioritäten via SQL. Z.B.:
    </para>

    <para>
    <screen>
    mysql&gt; UPDATE ticket_priority SET name = '3 default' WHERE id = 3;
    Query OK, 1 row affected (0.01 sec)
    Rows matched: 1  Changed: 1  Warnings: 0

    mysql&gt;
    </screen>
    </para>

    <para>
    Wenn Sie diesen SQL-Befehl ausführen, wird die Priorität "3 normal" in
    Zukunft "3 default" lauten.
    </para>
    </listitem>
    <listitem>
    <para>
    Beachten Sie bitte, dass Sie die Änderungen bezüglich der Priorität auch
    in der Konfigurationsdatei (Kernel/Config.pm) oder über das grafische
    Konfigurations-Frond-End nachpflegen müssen.
    </para>

    <para>
    <programlisting>
        [...]
        # PostmasterDefaultPriority
        # (The default priority of new tickets.) [default: '3 normal']
        $Self-&gt;{PostmasterDefaultPriority} = '3 default';
        [...]
        # Ticket::Frontend::EmailPriority
        # default priority for email tickets [default: 3 normal]
        $Self-&gt;{'Ticket::Frontend::AgentTicketEmail'}-&gt;{'Priority'} = '3 default';
        [...]
        # default phone priority [default: 3 normal]
        $Self-&gt;{'Ticket::Frontend::AgentTicketPhone'}-&gt;{'Priority'} = '3 default';
        [...]
        # CustomerDefaultPriority
        # (default priority of new customer tickets)
        $Self-&gt;{'Ticket::Frontend::CustomerTicketMessage'}-&gt;{'PriorityDefault'} = '3 default';
        [...]
    </programlisting>
    </para>
    </listitem>
</itemizedlist>
</para>

<para>
Wenn Sie eine neue Priorität hinzufügen möchten, passen Sie die
ticket_priority-Tabelle in der OTRS Datenbank entsprechend an. Achten Sie
darauf, dass Sie die ID und die Nummer im Namen der Priorität entsprechend
der Dringlichkeit vergeben.
</para>

</chapter>
<!-- $Id: themes.xml,v 1.3 2007/03/02 12:00:02 cs Exp $ --><chapter id="themes">
<title>Erstellung eigener Themes</title>

<para>
Für OTRS können verschiedene Themes angelegt werden, also verschiedene
Layouts zur Gestaltung der Web-Oberfläche. Dazu müssen Sie die vorhandenen
Templates ändern und Ihren Wünschen entsprechend anpassen.
</para>

<para>
Mehr Informationen über die Syntax und den Aufbau von Templates finden Sie
im Entwickler-Handbuch auf

<ulink url="http://doc.otrs.org">
<citetitle>http://doc.otrs.org</citetitle>
</ulink>

innerhalb des Kapitels zu den

<ulink url="http://doc.otrs.org/developer/2.0/en/html/c494.html">
<citetitle>Templates</citetitle>
</ulink>

.
</para>

<para>
Um ein neues Theme namens "Company" anzulegen, gehen sie bitte nach
folgendem Schema vor:
</para>

<para>
<orderedlist numeration="arabic">
    <listitem>
    <para>
    Erstellen Sie das Verzeichnis
    <filename>Kernel/Output/HTML/Company</filename>
    und kopieren Sie die Dateien, die Sie für das Company-Theme anpassen möchten, aus
    <filename>Kernel/Output/HTML/Standard</filename>
    in das neu erstellte Directory.
    </para>
</listitem>
<listitem>
    <para>
    Passen Sie die Dateien im Verzeichnis
    <filename>Kernel/Output/HTML/Company</filename> Ihren Wünschen
    entsprechend an.
    </para>
</listitem>
<listitem>
    <para>
    Um das neue Theme OTRS bekannt zu machen, müssen Sie die Datenbank
    händisch ändern. Gehen Sie hier zu mit MySQL folgendermaßen vor:
    </para>

    <para>
    <screen>
linux:~# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 26 to server version: 5.0.22-Debian_2-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&gt; use otrs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; INSERT INTO theme
    -&gt;     (theme, valid_id, create_time, create_by, change_time, change_by)
    -&gt;     VALUES
    -&gt;     ('Company', 1, current_timestamp, 1, current_timestamp, 1);
mysql&gt;
    </screen>
    </para>
</listitem>
</orderedlist>
</para>

<para>
Ab nun sollten sie das neue Theme nutzen und über Ihre

<link linkend="user-preferences">
persönlichen Einstellungen
</link>

aktivieren können.
</para>

<warning>
<para>
Nehmen Sie keine Änderungen an den Theme-Dateien vor, die mit OTRS
installiert wurden. Kopieren Sie vielmehr die Dateien des Standard-Themes
und führen Sie die zuvor erklärten Schritte durch, um ein eigenes Theme
zu erstellen, das bei einem Update nicht überschrieben wird.
</para>
</warning>

</chapter>
<!-- $Id: language-translation.xml,v 1.1 2006/06/22 18:53:41 cs Exp $ --><chapter id="translation">
<title>Übersetzung in verschiedene Sprachen</title>

<para>
Das OTRS Webfrontend unterstützt verschiedene Sprachen. Die Übersetzungen
befinden sich in den Dateien, die unter
<filename>Kernel/Language/*.pm</filename> zu finden sind.
</para>

<para>
Wie der Lokalisationsmechanismus des OTRS Frameworks arbeitet und welche
Möglichkeiten er bietet, entnehmen Siie bitte dem Kapitel

<ulink url="http://doc.otrs.org/developer/2.0/en/html/c630.html">
"Language Translations"
</ulink>

aus dem Developer Handbuch auf

<ulink url="http://doc.otrs.org">
http://doc.otrs.org
</ulink>
. Dieses Kapitel beschreibt, wie eigene Übersetzungen eingepflegt und
komplett neue Sprachen hinzugefügt werden können.
</para>

</chapter>
<!-- $Id: pgp.xml,v 1.4 2006/10/18 12:56:54 cs Exp $ --><chapter id="configure-pgp">
<title>PGP</title>

<para>
In OTRS können ausgehende E-Mails mit Hilfe von PGP signiert oder
verschlüsselt werden. Ebenfalls ist es möglich verschlüsselte Nachrichten zu
entschlüsseln. Die Ver- und Entschlüsselung mit PGP wird mit Hilfe des
GPL-Werkzeugs <application>GnuPG</application>  vorgenommen. Zur Einrichtung
sind die folgenden Schritte notwendig:
</para>

<para>
<orderedlist numeration="arabic">
    <listitem>
    <para>
    Erste Aufgabe ist es, das entsprechende GnuPG-Software-Paket zu
    installieren, welches bei den meisten Linux-Distributionen
    mitgeliefert wird. Dies sollte mit Hilfe des jeweiligen Paketmanagers
    leicht durchgeführt werden können.
    </para>
    </listitem>
    <listitem>
    <para>
    Im zweiten Schritt muss das soeben installierte GnuPG zur
    Benutzung für OTRS konfiguriert werden. Dies geschieht auf der
    Kommandozeilenebene durch einen Aufruf von GnuPG, der die notwendigen
    Verzeichnisse anlegt und den privaten Schlüssel erzeugt. Der Aufruf
    muss als otrs-Benutzer (bzw. als der Benutzer, mit dessen Rechten das
    Ticket-System läuft) durchgeführt werden.
    </para>

    <para>
    <screen>
linux:~# su otrs
linux:/root$ cd
linux:~$ pwd
/opt/otrs
linux:~$ gpg --gen-key
gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

gpg: directory `/opt/otrs/.gnupg' created
gpg: new configuration file `/opt/otrs/.gnupg/gpg.conf' created
gpg: WARNING: options in `/opt/otrs/.gnupg/gpg.conf' are not yet active during t
his run
gpg: keyring `/opt/otrs/.gnupg/secring.gpg' created
gpg: keyring `/opt/otrs/.gnupg/pubring.gpg' created
Please select what kind of key you want:
   (1) DSA and Elgamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
     0 = key does not expire
  &lt;n&gt;  = key expires in n days
  &lt;n&gt;w = key expires in n weeks
  &lt;n&gt;m = key expires in n months
  &lt;n&gt;y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) &lt;heinrichh@duesseldorf.de&gt;"

Real name: Ticket System
Email address: support@example.com
Comment: Private PGP Key for the ticket system with address support@example.com
You selected this USER-ID:
"Ticket System (Private PGP Key for the ticket system with address support@examp
le.com) &lt;support@example.com&gt;"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

Passphrase: secret
Repeat passphrase: secret

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
++++++++++.+++++++++++++++++++++++++....+++++.+++++...+++++++++++++++++++++++++.
+++++++++++++++++++++++++.+++++.+++++.+++++++++++++++++++++++++&gt;++++++++++&gt;+++++
.......&gt;+++++&lt;+++++................................+++++

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 280 more bytes)

++++++++++.+++++..++++++++++..+++++....++++++++++++++++++++.+++++++++++++++.++++
++++++++++++++++++++++++++.++++++++++.+++++++++++++++.++++++++++.+++++++++++++++
..+++++&gt;.+++++....&gt;+++++........................................................
...........................................................&gt;+++++&lt;+++++.........
.............+++++^^^
gpg: /opt/otrs/.gnupg/trustdb.gpg: trustdb created
gpg: key 7245A970 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   1024D/7245A970 2006-02-03
      Key fingerprint = 2ED5 BC36 D2B6 B055 7EE1  5833 1D7B F967 7245 A970
uid                  Ticket System (Private pgp key for ticket system with addre
ss support@example.com) &lt;support@example.com&gt;
sub   2048g/52B97069 2006-02-03

linux:~$
</screen>
    </para>

    <para>
    Wie man sehen kann, genügt es bei den meisten Fragen die Vorgabe
    mit &lt;EINGABE&gt; zu bestätigen. Lediglich die Angabe zur ``Person''
    des Schlüsselbesitzers ist zu vervollständigen bzw. zum Ende hin ist
    an der mit (passphrase) gekennzeichneten Stelle die Passphrase für
    den zu generierenden Schlüssel einzugeben. Hier ist zu beachten,
    dass die Passphrase den üblichen Anforderungen für ein hinreichend
    sicheres Passwort genügt.
    </para>
    </listitem>
    <listitem>
    <para>
    Im nächsten Schritt muss OTRS auf die Verwendung von PGP vorbereitet
    werden. Suchen Sie in SysConfig nach ``PGP'' und wähen Sie danach dan
    die Untergruppe Crypt::PGP aus.
    </para>

    <para>
    In der nun angezeigten Maske sollte zum einen

    <link linkend="Framework:Crypt::PGP:PGP">"
    PGP aktiviert
    </link>

    werden (die erste Option). Danach sollte überprüft werden, ob der
    voreingestellte

    <link linkend="Framework:Crypt::PGP:PGP::Bin">
    Pfad zum Programm gpg
    </link>

    der tatsächlichen Installation entspricht.
    </para>

    <para>
    Die nächste Einstellung (

    <link linkend="Framework:Crypt::PGP:PGP::Options">
    PGP::Options
    </link>

    ) muss ggf. modifiziert werden.
    Es handelt sich um die Parameter, mit denen OTRS das
    Programm gpg aufruft. Hier ist insbesondere die Option für die
    Lage des GnuPG-Konfigurationsverzeichnisses des OTRS-Benutzers
    otrs wichtig. Im Beispiel ist dies: /opt/otrs/.gnupg). Dieses
    Verzeichnis wurde im Schritt 1 automatisch von GnuPG angelegt.
    </para>

    <para>
    über die letzte Option können die

    <link linkend="Framework:Crypt::PGP:PGP::Key::Password">
    Schlüssel-Werte-Paare für die ID(s) und Passphrase(n)
    </link>

    der eigenen PGP-Schlüssel dem Ticket System bekannt gemacht werden.
    Noch einmal genauer: da andere Kommunikationspartner an das
    Ticket-System (oder besser: an den Mail-Eingang des Systems E-Mails mit
    dessen öffentlichen Schlüssel verschlüsselt schicken, kann OTRSmit
    dem/n in dieser Option angegebenen privaten Schlüssel(n) solchermaßen
    verschlüsselte Mails entschlüsseln.
    </para>

    <para>
    Woher bekommt man die ID des eigenen Schlüssels? Die ID steckt
    schon in der Ausgabe der Schlüsselgenerierung (siehe Schritt 1).
    Man kann die ID aber auch als Benutzer otrs jederzeit über die
    Kommandozeile ermitteln:
    </para>

    <para>
    <screen>
linux:~# su otrs
linux:/root$ cd
linux:~$ pwd
/opt/otrs
linux:~$ gpg --list-keys
/opt/otrs/.gnupg/pubring.gpg
----------------------------
pub   1024D/7245A970 2006-02-03
uid                  Ticket System (Private pgp key for ticket system with
address support@example.com) &lt;support@example.com&gt;
sub   2048g/52B97069 2006-02-03

linux:~$
    </screen>
    </para>

    <para>
    Die ID des Schlüssels befindet sich in der Zeile, die mit sub
    beginnt und ist eine 8-stellige hexadezimale Kennung (im Beispiel
    lautet sie "52B97069". Die für die Option geforderte Passphrase ist
    dieselbe, die beim Schlüsselgenerieren in Schritt 1 verwendet wurde.
    </para>

    <para>
    Nach Eingabe all dieser Angaben können sie mit dem
    Aktualisieren-Button gespeichert werden. OTRS ist
    jetzt für das Empfangen mit PGP verschlüsselter E-Mails
    konfiguriert.
    </para>
    </listitem>
    <listitem>
    <para>
    Der letzte Schritt ist der Import des öffentlichen PGP-Schlüssels eines
    Kunden. Dadurch wird sicher gestellt, dass aus OTRS heraus
    verschlüsselte Mails an den jeweiligen Kunden gesendet werden können.
    Es bestehen zwei Möglichkeiten für den Import.
    </para>

    <para>
    Zum einem können über das

    <link linkend="adminarea-customeruser">
    Modul zur Verwaltung der Kunden
    </link>

    die öffentlichen PGP-Schlüssel beim anlegen/bearbeiten des jeweiligen
    Kunden im System hinterlegt werden.
    </para>

    <para>
    Die zweite Möglichkeit bietet das System in den

    <link linkend="adminarea-pgp">
    PGP-Einstellungen
    </link>

    innerhalb des Admin-Bereiches. In dieser Konfigurationsmaske ist im
    rechten Teil eine Liste der bereits dem System zur Verfügung stehenden
    öffentlichen Schlüssel zu sehen. Im Regelfall sollte nach der obigen
    Einrichtung hier schon der öffentliche Schlüssel des Ticket-Systems
    selbst zu sehen sein. Im linken Teil besteht neben der Suche die
    Möglichkeit, neue Schlüssel als Schlüsseldatei ins System zu laden.
    Nach dem Laden eines neuen Schlüssels wird dieser in der Liste auf
    der rechten Seite angezeigt, und gleichzeitig erhält man oberhalb
    der Maske eine Statusmeldung, die über das Laden des Schlüssels
    informiert.
    </para>

    <para>
    Sowohl für das Hinzufügen eines Schlüssels über die Kunden-
    als auch über die PGP-Verwaltung gilt, dass die Dateien mit den
    Schlüsseln PGP/GnuPG-konforme Schlüssel sein müssen. I.d.R. wird
    der Schlüssel als ``ASCII armored key''-Datei vorliegen, welches
    problemlos von OTRS verarbeitet werden kann.
    </para>
    </listitem>
</orderedlist>
</para>
</chapter>
<!-- $Id: smime.xml,v 1.1 2006/08/16 14:03:22 cs Exp $ --><chapter id="smime">
<title>S/MIME</title>

<para>
Die Einrichtung der Verschlüsselung mit S/MIME scheint auf den
ersten Blick ein bisschen komplizierter als die PGP-Einrichtung zu
sein, da für das OTRS-System erst einmal eine Certification Authority (CA)
eingerichtet werden muss. Ansonsten ist das Vorgehen ähnlich
wie bei PGP, OTRS konfigurieren, eigenes Zertifikat einrichten, ggf.
fremde Public-Zertifikate importieren, usw.
</para>

<para>
Die S/MIME-Konfiguration geschieht zu einem großen Teil
außerhalb der OTRS-Web-Oberfläche und sollte als otrs-Benutzer (bzw. als
der Benutzer mit dessen Rechten OTRS läuft) in einer Shell durchgeführt
werden. Da die MIME-Konfiguration unter Linux im wesentlichen
auf SSL (<application>openssl</application> basiert, sollte zuerst
sichergestellt werden, dass das <application>openssl</application>-Paket
installiert ist. Mit dem <application>openssl</application>-Paket kommt ein
Skript, <filename>CA.pl</filename>, mit welchem die wichtigsten Schritte zur
Zertifikatserstellung bewältigt werden können. Damit dieser Vorgang
einfacher wird, sollte zuerst herausgefunden werden, wo sich das Skript
<filename>CA.pl</filename> im Dateisystem befindet. Danach sollte
diese Stelle der Einfachheit halber temporär in den Suchpfad der Shell
übernommen werden.
</para>

<para>
<screen>
otrs@linux:~&gt; rpm -ql openssl | grep CA
/usr/share/ssl/misc/CA.pl
otrs@linux:~&gt; export PATH=$PATH:/usr/share/ssl/misc
otrs@linux:~&gt; which CA.pl
/usr/share/ssl/misc/CA.pl
otrs@linux:~&gt; mkdir tmp; cd tmp
otrs@linux:~/tmp&gt;
</screen>
</para>

<para>
Im Beispiel sieht man auch, dass ein temporäres Verzeichnis
<filename>~/tmp</filename> angelegt wurde, in welchem die
Zertifikatsgenerierung durchgeführt wird.
</para>

<para>
Im einzelnen sind zur Zertifikatserzeugung folgende Schritte
durchzuführen, die einzelnen Schritte sind in der Kommandozeile
auszuführen. Sollte ein beglaubigtes SSL-Zertifikat für die
Verschlüsselung bereits vorhanden sein, so sollte natürlich
dieses verwendet werden. Dann können die nun folgenden Schritte
übersprungen werden. Der beschriebene Ablauf geht davon aus, dass
der OTRS-Administrator sich das SSL-Zertifikat zu Test- und
Lernzwecken selbst anlegen muss.
</para>

<para>
<orderedlist numeration="arabic">
    <listitem>
    <para>
    Anlegen einer eigenen Certification Authority für SSL. Diese wird
    benötigt, um die Anfrage für ein eigenes SSL-Zertifikat zu beglaubigen.
    </para>

    <para>
    <screen>
otrs@linux:~/tmp&gt; CA.pl -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
...++++++
......++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:OTRS-state
Locality Name (eg, city) []:OTRS-town
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your company
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:OTRS Admin
Email Address []:otrs@your-domain.tld
otrs@linux:~/tmp&gt; ls -la demoCA/
total 8
-rw-r--r--  1 otrs otrs 1330 2006-01-08 17:54 cacert.pem
drwxr-xr-x  2 otrs otrs   48 2006-01-08 17:53 certs
drwxr-xr-x  2 otrs otrs   48 2006-01-08 17:53 crl
-rw-r--r--  1 otrs otrs    0 2006-01-08 17:53 index.txt
drwxr-xr-x  2 otrs otrs   48 2006-01-08 17:53 newcerts
drwxr-xr-x  2 otrs otrs   80 2006-01-08 17:54 private
-rw-r--r--  1 otrs otrs   17 2006-01-08 17:54 serial
otrs@linux:~/tmp&gt;
    </screen>
    </para>
    </listitem>
    <listitem>
    <para>
    Erzeugen der Zertifikatsanfrage.
    </para>

    <para>
    <screen>
otrs@linux:~/tmp&gt; CA.pl -newreq
Generating a 1024 bit RSA private key
..........................................++++++
....++++++
writing new private key to 'newreq.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE\keyreturn
State or Province Name (full name) [Some-State]:OTRS-state
Locality Name (eg, city) []:OTRS-town
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your company
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:OTRS admin
Email Address []:otrs@your-domain.tld

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Request (and private key) is in newreq.pem
otrs@linux:~/tmp&gt; ls -la
total 4
drwxr-xr-x  6 otrs otrs  232 2006-01-08 17:54 demoCA
-rw-r--r--  1 otrs otrs 1708 2006-01-08 18:04 newreq.pem
otrs@linux:~/tmp&gt;
    </screen>
    </para>
</listitem>
<listitem>
    <para>
    Die Zertifikatsanfrage durch die CA signieren lassen. Die
    Zertifikatsanfrage kann entweder durch die selbst angelegte CA
    signiert (= beglaubigt) werden. Allerdings ist es natürlich
    seriöser, wenn das eigene SSL-Zertifikat von einer fremden, externen
    und ihrerseits beglaubigten CA beglaubigt wird.
    </para>

    <para>
    <screen>
otrs@linux:~/tmp&gt; CA.pl -signreq
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            fd:85:f6:9f:14:07:16:c8
        Validity
            Not Before: Jan  8 17:04:37 2006 GMT
            Not After : Jan  8 17:04:37 2007 GMT
        Subject:
            countryName               = DE
            stateOrProvinceName       = OTRS-state
            localityName              = OTRS-town
            organizationName          = Your Company
            commonName                = OTRS administrator
            emailAddress              = otrs@your-domain.tld
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                01:D9:1E:58:C0:6D:BF:27:ED:37:34:14:D6:04:AC:C4:64:98:7A:22
            X509v3 Authority Key Identifier:
                keyid:10:4D:8D:4C:93:FD:2C:AA:9A:B3:26:80:6B:F5:D5:31:E2:8E:DB:A8
                DirName:/C=DE/ST=OTRS-state/L=OTRS-town/O=Your Company/
                CN=OTRS admin/emailAddress=otrs@your-domain.tld
                serial:FD:85:F6:9F:14:07:16:C7

Certificate is to be certified until Jan  8 17:04:37 2007 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Signed certificate is in newcert.pem
otrs@linux:~/tmp&gt;
    </screen>
    </para>
</listitem>
<listitem>
    <para>
    Mit der signierten Zertifikatsanfrage das eigene Zertifikat und alle
    dazugehörigen Dateien erzeugen.
    </para>

    <para>
    <screen>
otrs@linux:~/tmp&gt; CA.pl -pkcs12 "OTRS Certificate"
Enter pass phrase for newreq.pem:
Enter Export Password:
Verifying - Enter Export Password:
otrs@linux:~/tmp&gt; ls -la
total 12
drwxr-xr-x  6 otrs otrs  328 2006-01-08 18:04 demoCA
-rw-r--r--  1 otrs otrs 3090 2006-01-08 18:13 newcert.p12
-rw-r--r--  1 otrs otrs 3791 2006-01-08 18:04 newcert.pem
-rw-r--r--  1 otrs otrs 1708 2006-01-08 18:04 newreq.pem
otrs@linux:~/tmp&gt;
    </screen>
    </para>
</listitem>
</orderedlist>
</para>

<para>
Nach der Durchführung dieser Schritte ist es notwendig die
Einrichtung von S/MIME in OTRS abzuschließen.
</para>

<para>
Die OTRS-seitige Einrichtung erfolgt aus dem Admin-Bereich, Block
System über den Punkt

<link linkend="adminarea-smime">
"SMIME"
</link>

. Falls die generelle
S/MIME-Unterstützung in OTRS noch nicht aktiviert wurde, weist
die Maske den OTRS-Administrator beim Aufruf darauf hin und bietet
einen bequemen Link zur Einrichtung.
</para>

<para>
Über die SysConfig kann die generelle S/MIME-Unterstützung
eingeschaltet und konfiguriert werden. Diese Einrichtung findet man
unter der SysConfig-Gruppe "Crypt::SMIME".
</para>

<para>
Neben einem

<link linkend="Framework:Crypt::SMIME:SMIME">
``Ein-Schalter'' für die S/MIME-Unterstützung
</link>

können hier die

<link linkend="Framework:Crypt::SMIME:SMIME::Bin">
Pfade zum <application>openssl</application>-Befehl
</link>

, als auch das

<link linkend="Framework:Crypt::SMIME:SMIME::CertPath">
Verzeichnis mit den Zertifikaten
</link>

eingestellt werden. Dies bedeutet insbesondere, dass
die zu Beginn dieses Abschnitts erzeugten Schlüsseldatei in den
hier angegebenen Verzeichnissen liegen müssen, um von
<application>OpenSSL</application> verwendet werden zu können.
</para>

<para>
Im nächsten Schritt geht es (zurück) zur

<link linkend="adminarea-smime">
S/MIME-Konfiguration
</link>

im Admin-Bereich. Dort können nun sowohl der private Schlüssel(Key) bzw.
die privaten Schlüssel des OTRS-Systems, als auch die
öffentlichen Schlüssel anderer Kommunikationspartner ins System
importiert werden. Tragen Sie hier den öffentlichen Schlüssel ein, der
zu Beginn dieses Abschnitts erzeugt und dann in OTRS hinzugefügt wurde.
</para>

<para>
Selbstverständlich können aber auch alle öffentlichen S/MIME-Schlüssel
der Kommunikationspartner über das

<link linkend="adminarea-customeruser">
Modul zur Kundenverwaltung
</link>

beim anlegen/bearbeiten der jeweiligen Person, in das System importiert
werden.
</para>

</chapter>
<!-- $Id: applications.xml,v 1.8 2006/10/18 13:08:04 cs Exp $ --><chapter id="application">
<title>Zusätzliche Applikationen</title>

<abstract>
<para>
Seit OTRS 2.0 gibt es die Möglichkeit, zusätzlich zum Framework, weitere
Applikationen aus einem Online-Verzeichnis über das Admin-Interface
(Paket Manager) zu installieren.
</para>
</abstract>

<sect1 id="application-calendar">
<title>Kalender</title>

<para>
Dies ist ein Kalender, in dem man Termine benutzerabhängig eintragen kann.
Es werden private und öffentliche Termine unterstützt.
</para>

<para>
<screenshot>
<screeninfo>Kalender</screeninfo>
<graphic srccredit="Calendar - screenshot" scale="40" fileref="screenshots/calendar.png"/>
</screenshot>
</para>

</sect1>

<sect1 id="application-contentmanager">
<title>ContentManager</title>

<para>
Mit dem Contentmanager können Webseiten online über die Web-Oberfläche
erstellt und verwaltet werden.
</para>

</sect1>

<sect1 id="application-filemanager">
<title>Dateimanager</title>

<para>
Mit dem Dateimanager kann auf ein Verzeichnis des Rechners, auf dem OTRS
installiert ist, über die Web-Oberfläche zugegriffen und Dateien
hochgeladen, gelöscht und angesehen werden.
</para>

<para>
<screenshot>
<screeninfo>Dateimanager</screeninfo>
<graphic srccredit="Filemanager - screenshot" scale="40" fileref="screenshots/filemanager.png"/>
</screenshot>
</para>

</sect1>

<sect1 id="application-webmail">
<title>Webmailer</title>

<para>
Das Web-Mail-Programm ermöglicht das Abrufen von Mails über einen
IMAP-Server, das Verfassen von neuen Nachrichten bzw. die Beantwortung von
vorhandenen E-Mails über die Web-Oberfläche.
</para>

<para>
<screenshot>
<screeninfo>Webmailer</screeninfo>
<graphic srccredit="Webmail - screenshot" scale="40" fileref="screenshots/webmail.png"/>
</screenshot>
</para>

</sect1>

<sect1 id="application-faq">
<title>FAQ</title>

<para>
Mit Hilfe des FAQ-Systems, welches seit OTRS 2.1 ein eigenes externes Modul
ist, kann eine Knowletge-Database aufgebaut und verwaltet werden. Einträge
lassen sich nur intern oder auch extern, d.h. für alle Kunden oder komplett
öffentlich, freischalten. Einträge können nach Sprache oder nach Kategorien
erstellt und sortiert werden.
</para>

<para>
TODO: Screenshot(s) vom FAQ-Modul einfügen.
</para>

</sect1>

<sect1 id="application-systemstatus">
<title>SystemStatus</title>

<para>
Dies ist eine System-Status-Übersicht für den OTRS-Administrator, die im
Admin-Interface von OTRS zu finden ist. Es können eigene Befehle integriert
werden, deren Ausgabe über die Web-Oberfläche dargestellt werden.
</para>

<para>
<screenshot>
<screeninfo>Systemstatus</screeninfo>
<graphic srccredit="Systemstatus - screenshot" scale="40" fileref="screenshots/systemstatus.png"/>
</screenshot>
</para>

</sect1>

<sect1 id="application-benchmark">
<title>Benchmark</title>

<para>
Dies ist ein Modul zum Testen der Leistung Ihres Systems bezogen auf OTRS.
Es wird die Performance verschiedener Datenbankoperationen getestet.
</para>
</sect1>


</chapter>
<!-- $Id: performance-tuning.xml,v 1.6 2006/04/13 10:13:47 ho Exp $ --><chapter id="performance-tuning">
<title>Leistungsverbesserung</title>

<abstract>
<para>
Eine erschöpfende Liste verschiedener Techniken, um das Maximum an Leistung aus Ihrem OTRS System herauszuholen: Konfiguration, Programmierung, Speichernutzung und mehr.
</para>
</abstract>

<sect1 id="performance-tuning-otrs">
<title>OTRS</title>
<para>
Im folgenden finden Sie Optionen, die Leistung des Systems via OTRS selbst zu verbessern.
</para>

<sect2 id="performance-tuning-otrs-index">
<title>TicketIndexModule</title>
<para>
Zur Verfügung stehen zwei Hintergrundmodule für den Ticket Index.
</para>
<para>
Kernel/Config.pm
<programlisting>
[...]
    $Self-&gt;{TicketIndexModule} = 'Kernel::System::Ticket::IndexAccelerator::RuntimeDB';
[...]
</programlisting>
</para>

<para>
<itemizedlist mark="opencircle">

<listitem>
<para>
Kernel::System::Ticket::IndexAccelerator::RuntimeDB (Standard), generiere jede Queue-Ansicht dynamisch aus der Ticket Tabelle. Sie werden keine Probleme mit der Leistung bekommen bis zu etwa 60.000 Tickets (oder 6000 offenen) in Ihrem System.
</para>
</listitem>

<listitem>
<para>
Kernel::System::Ticket::IndexAccelerator::StaticDB, das leistungsfähigste Modul. Es sollte ab 80.000 Tickets oder mehr als 6000 offenen eingesetzt werden. Benutzt eine extra ticket_index Tabelle, arbeitet wie eine Ansicht (View). Führen Sie bin/RebuildTicketIndex.pl zum erstmaligen Aufbau des Index aus.
</para>
</listitem>

</itemizedlist>

</para>
</sect2>


<sect2 id="performance-tuning-otrs-storage">
<title>TicketStorageModule</title>
<para>
Es stehen zwei Module für das Speichern der Tickets und Artikel bereit.
</para>
<para>
Kernel/Config.pm
<programlisting>
[...]
    $Self-&gt;{TicketStorageModule} = 'Kernel::System::Ticket::ArticleStorageDB';
[...]
</programlisting>
</para>

<para>
<itemizedlist mark="opencircle">

<listitem>
<para>
Kernel::System::Ticket::ArticleStorageDB (Standard), speichere Anhänge &amp; Co. in der Datenbank. Merke: Benutzen Sie diese Option nicht für größere Systeme.
</para>
<para>
Pro: Ist der Benutzer, unter dem der Webserver läuft, nicht der OTRS Benutzer, können Sie mit diesem Modul Dateiberechtigungsprobleme vermeiden.
</para>
<para>
Contra: Es ist nicht wirklich nett, Anhänge in Ihrer Datenbank zu speichern. Achten Sie darauf, dass Ihre Datenbank das kann. Für MySQL setzen Sie in dessen Konfiguration bspw.
"set-variable = max_allowed_packet=8M", um 8 MB große Objekte zu speichern (Standard ist 2M).
</para>
</listitem>

<listitem>
<para>
Kernel::System::Ticket::ArticleStorageFS, speichere Anhänge &amp; Co. im lokalen Filesystem ab. Merke: Benutzen Sie dies für große Installationen.
</para>
<para>
Pro: Schneller!
</para>
<para>
Contra: Der Benutzer, unter dem der Webserver läuft, sollte der OTRS Benutzer sein (Dateisystemberechtigungen!).
</para>
</listitem>

</itemizedlist>

</para>

<para>
Note: Ab OTRS 1.2 oder höher, kann man das TicketStorageModule im Betrieb ändern!
</para>

</sect2>

</sect1>


<sect1 id="performance-tuning-database">
<title>Datenbank</title>
<para>
Einstellungen sind immer spezifisch für die jeweils eingesetzte Datenbank. Bei Problemen lesen Sie die Dokumentation und fragen Sie Ihren Datenbankadministrator.
</para>

<sect2 id="performance-tuning-database-mysql">
<title>MySQL</title>
<para>
Wenn Sie den Tabellentyp MyISAM (Standard) benutzen, und einen großen Teil einer Tabelle gelöscht haben, oder wenn Sie sehr viele Änderungen an einer Tabelle mit Zeilen variabler Länge vorgenommen haben (Tabellen mit VARCHAR, BLOB oder TEXT Spalten), sollten Sie die Datendateien mit dem "optimize" Kommando behandeln.
</para>
<para>
Dies bietet sich an, wenn MySQL viel CPU Zeit braucht. Optimieren Sie die Tabellen ticket, ticket_history und article.
<programlisting>
shell$ mysql -u user -p datbase
mysql$ optimize table ticket;
mysql$ optimize table ticket_history;
mysql$ optimize table article;
</programlisting>
</para>
</sect2>

<sect2 id="performance-tuning-database-postgresql">
<title>PostgreSQL</title>
<para>
PostgreSQL konfigurieren Sie am besten in der postgresql.conf Datei in Ihrem PostgreSQL Datenverzeichnis. Hier gibt es Hilfe dazu:
<ulink url="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</ulink>
<ulink url="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html</ulink>
Ist die Leistung immer noch nicht genügend, empfehlen wir, Fragen auf der "PostgreSQL Performance Mailing Liste" zu stellen. Die Teilnehmer der PostgreSQL Liste sind sehr freundlich und können wahrscheinlich helfen.
<ulink url="http://www.postgresql.org/lists.html">http://www.postgresql.org/lists.html</ulink>.
</para>
</sect2>

</sect1>


<sect1 id="performance-tuning-webserver">
<title>Webserver</title>
<para>
Natürlich empfehlen wir mod_perl 2.0 (
<ulink url="http://perl.apache.org/">http://perl.apache.org/</ulink>).
Es ist sehr viel schneller (etwa um den Faktor 100) als pures CGI, braucht aber auch mehr Speicher. Ihr httpd wird mit mod_perl also größer sein.
</para>

<sect2 id="performance-tuning-webserver-db">
<title>Datenbank Verbindung</title>
<para>
Sie können die Datenbankverbindung bereits beim Start des httpd-Prozeß herstellen lassen - dies spart ebenso Zeit (siehe auch README.webserver).
</para>
</sect2>

<sect2 id="performance-tuning-webserver-startup">
<title>Vorgeladene Module - startup.pl</title>
<para>
Nutzen Sie das Start Skript scripts/apache-perl-startup.pl (mod_perl 1.0) bzw. scripts/apache2-perl-startup.pl (mod_perl 2.0), um die Perl Module vorzuladen (siehe README.webserver).
</para>
</sect2>
<sect2 id="performance-tuning-webserver-reload">
<title>Perl Module bei Änderung neu laden</title>
<para>
Standardmäßig wird Apache::Reload (mod_perl 1.0) bzw. Apache2::Reload (mod_perl 2.0) in scripts/apache2-httpd.include.conf eingesetzt. Deaktivieren Sie es und die Geschwindigkeit steigt um etwa 8%.
Ab nun müssen Sie den Webserver neu starten, wenn Sie irgendetwas ändern!
Wichtig, es hat dadurch zur Folge, dass der OTRS-Paket-Manager nicht mehr über das Web-Interface bedient werden kann (nur noch über CMD - bin/opm.pl).
</para>
</sect2>

<sect2 id="performance-tuning-webserver-strategy">
<title>Die richtige Strategie wählen</title>
<para>
Bei wirklich großen Installationen (über 1000 neue Tickets am Tag, über 40 Agenten) ist es eine sehr gute Idee, den Artikel "Choosing the Right Strategy" (in englisch) zu lesen
(<ulink url="http://perl.apache.org/docs/1.0/guide/strategy.html">http://perl.apache.org/docs/1.0/guide/strategy.html</ulink>).
</para>
</sect2>

<sect2 id="performance-tuning-webserver-gzip">
<title>mod_gzip/mod_deflate</title>
<para>
Falls Ihre Bandbreite ein wenig schmal sein sollte, benutzen Sie mod_gzip für Apache1
(<ulink url="http://www.schroepl.net/projekte/mod_gzip/">http://www.schroepl.net/projekte/mod_gzip/</ulink>) bzw. mod_deflate für Apache2 (default Modul in Apache2).
Eine HTML-Seite von 45k wird mod_gzip/mod_deflate auf etwa 7k zusammendrücken - nett.
</para>
</sect2>

<sect2 id="performance-tuning-webserver-dos">
<title>mod_dosevasive</title>
<para>
Um http DoS (Denial of Service) Angriffe zu blocken kann mod_dosevasive
benutzt werden (leider nur für Apache1 verfügbar).
(<ulink url="http://www.nuclearelephant.com/projects/dosevasive/">http://www.nuclearelephant.com/projects/dosevasive/</ulink>).
</para>
</sect2>

</sect1>

</chapter>
<!-- $Id: backup-and-restore.xml,v 1.9 2006/01/09 21:39:58 cs Exp $ --><chapter id="backup-and-restore">
<title>Datensicherung</title>

<abstract>
<para>
In diesem Kapitel wird beschrieben, wie alle relevanten Daten der
OTRS-Installation gesichert und wieder hergestellt werden können.
</para>
</abstract>

<sect1 id="backup">
<title>Backup</title>

<para>
Bei einem Backup gibt es zwei Arten von Datensicherung, die Applikation
(z.B. /opt/otrs/) und die Datenbank.
</para>

<para>
Um Backups zu vereinfachen, wird ein "scripts/backup.pl" mitgeliefert, das
alle benötigten Komponenten sichert.
</para>

<para>
<screen>
linux:/opt/otrs# cd scripts/
linux:/opt/otrs/scripts# ./backup.pl --help
backup.pl &lt;Revision 1.1&gt; - backup script
Copyright (c) 2001-2005 Martin Edenhofer &lt;martin@otrs.org&gt;
usage: backup.pl -d /data_backup/ [-c bzip2|gzip] [-r 30] [-t nofullbackup]
linux:/opt/otrs/scripts#
</screen>
</para>

<para>
Ein Backup kann also z.B. mit folgendem Befehl erstellt werden:
</para>

<para>
<screen>
linux:/opt/otrs/scripts# ./backup.pl -d /backup/
Backup /backup//2005-09-12_14-28/Config.tar.gz ... done
Backup /backup//2005-09-12_14-28/Application.tar.gz ... done
Dump MySQL rdbms ... done
Compress SQL-file... done
linux:/opt/otrs/scripts#
</screen>
</para>

<para>
Alle Daten wurden in das Verzeichnis
<filename>/backup/2005-09-12_14-28/</filename> gesichert und dort, getrennt
nach Art der Daten, in einzelne .tar.gz-Dateien gespeichert.
</para>

<para>
<screen>
linux:/opt/otrs/scripts# ls /backup/2005-09-12_14-28/
Application.tar.gz  Config.tar.gz  DatabaseBackup.sql.gz
linux:/opt/otrs/scripts#
</screen>
</para>

<para>
Das Backupskript kennt diverse Optionen:
</para>

<para>
<screen>
linux:/opt/otrs/scripts# backup.pl --help
backup.pl &lt;Revision 1.1&gt; - backup script
Copyright (c) 2001-2005 Martin Edenhofer &lt;martin@otrs.org&gt;
usage: backup.pl -d /data_backup/ [-c bzip2|gzip] [-r 30]
</screen>
</para>

<para>
So kann mit Hilfe des Schalters -d angegeben werden in welches Verzeichnis
das Backup geschrieben werden soll. Gleichzeitig lässt sich mit -c entweder
bzip2 oder gzip zum platzsparenden Backupen nutzen.
Damit man bequem Backups, die ein gewisses Alter erreicht haben löschen kann,
wartet das Skript mit dem Schalter -r auf. Die darauffolgende Zeitangabe muss
in Tagen erfolgen.
</para>
</sect1>

<sect1 id="restore">
<title>Restore</title>

<para>
Um ein Backup wieder einzuspielen, müssen die Applikation (z.B. nach
<filename>/opt/otrs/</filename>) und die Datenbank wieder hergestellt werden.
</para>

<para>
Um Backups einspielen zu können, wird ein "scripts/restore.pl" mitgeliefert,
das die benötigten Komponenten wieder zurück sichert. Es unterstützt
MySQL und PostgreSQL.
</para>

<para>
<screen>
linux:/opt/otrs/scripts# ./restore.pl --help
restore.pl &lt;Revision 1.1&gt; - restore script
Copyright (c) 2001-2005 Martin Edenhofer &lt;martin@otrs.org&gt;
usage: restore.pl -b /data_backup/&lt;TIME&gt;/ -d /opt/otrs/
linux:/opt/otrs/scripts#
</screen>
</para>

<para>
Daten, die im Verzeichnis <filename>/backup/2005-09-12_14-28/</filename>
gesichert wurden, können bei einer OTRS-Installation in
<filename>/opt/otrs</filename> folgendermaßen zurück gesichert werden.
</para>

<para>
<screen>
linux:/opt/otrs/scripts# ./restore.pl -b /backup/2005-09-12_14-28 -d /opt/otrs/
Restore /backup/2005-09-12_14-28//Config.tar.gz ...
Restore /backup/2005-09-12_14-28//Application.tar.gz ...
create MySQL
decompresses SQL-file ...
cat SQL-file into MySQL database
compress SQL-file...
linux:/opt/otrs/scripts#
</screen>
</para>

</sect1>

</chapter>
<!-- $Id: additional-resources.xml,v 1.5.4.1 2007/10/24 18:06:20 cs Exp $ --><appendix id="additional-resources">
<title>Weitere Quellen</title>
<para>
Wir unterstützen Sie mit den aktuellsten Informationen über OTRS und geben
Ihnen die Möglichkeit, uns mit Feedback zu versorgen.
</para>

<sect1 id="additional-resources-homepage">
<title>Homepage OTRS.org</title>
<para>
Die OTRS Community finden Sie unter
<ulink url="http://www.otrs.org/">
<citetitle>http://www.otrs.org/</citetitle>
</ulink>.

Hier gibt es aktuelle Infos zum Projekt und Software.
</para>

<para>
<screenshot>
<screeninfo>Homepage OTRS.org</screeninfo>
<graphic srccredit="Homepage OTRS.org" scale="40" fileref="screenshots/homepage-otrs.png"/>
</screenshot>
</para>
</sect1>

<sect1 id="additional-resources-mailinglists">
<title>Mailinglisten</title>

<para>
Die folgende Tabelle gibt einen Überblick darüber, welche
Community-Mailinglisten es derzeit für OTRS gibt und wie diese zu erreichen
sind:
</para>

<table id="additional-resources-mailinglists-table">
<title>Mailinglisten</title>
  <tgroup cols="3">
    <thead>
      <row>
        <entry>
          Name
        </entry>
        <entry>
          Beschreibung
        </entry>
        <entry>
          Homepage
        </entry>
      </row>
    </thead>
    <tbody>
      <row>
        <entry>
          announce at otrs.org
        </entry>
        <entry>
          Ankündigungen zu OTRS (neue Versionen, Updates, ...) mit wenig Verkehr.
        </entry>
        <entry>
          <ulink url="http://lists.otrs.org/cgi-bin/listinfo/announce">
          <citetitle>http://lists.otrs.org/cgi-bin/listinfo/announce</citetitle>
          </ulink>
        </entry>
      </row>
      <row>
    <entry>
      otrs at otrs.org
    </entry>
    <entry>
      Benutzer-Fragen und -Diskussionen rund um OTRS (englischsprachig) mit mittel bis viel Verkehr.
    </entry>
    <entry>
          <ulink url="http://lists.otrs.org/cgi-bin/listinfo/otrs">
          <citetitle>http://lists.otrs.org/cgi-bin/listinfo/otrs</citetitle>
      </ulink>
    </entry>
      </row>
      <row>
    <entry>
      otrs-de at otrs.org
    </entry>
    <entry>
      Benutzer-Fragen und -Diskussionen rund um OTRS (deutschsprachig) mit mittel bis viel Verkehr.
    </entry>
    <entry>
          <ulink url="http://lists.otrs.org/cgi-bin/listinfo/otrs-de">
          <citetitle>http://lists.otrs.org/cgi-bin/listinfo/otrs-de</citetitle>
      </ulink>
    </entry>
      </row>
      <row>
    <entry>
      dev at otrs.org
    </entry>
    <entry>
      Mailingliste für die Entwickler von OTRS mit wenig Verkehr.
    </entry>
    <entry>
          <ulink url="http://lists.otrs.org/cgi-bin/listinfo/dev">
          <citetitle>http://lists.otrs.org/cgi-bin/listinfo/dev</citetitle>
      </ulink>
    </entry>
      </row>
      <row>
    <entry>
      doc-de at otrs.org
    </entry>
    <entry>
      Deutsche Diskussion über die OTRS-Dokumentation mit wenig Verkehr.
    </entry>
    <entry>
          <ulink url="http://lists.otrs.org/cgi-bin/listinfo/doc-de">
          <citetitle>http://lists.otrs.org/cgi-bin/listinfo/doc-de</citetitle>
      </ulink>
    </entry>
      </row>
      <row>
    <entry>
      i18n at otrs.org
    </entry>
    <entry>
      Mailingliste mit Fragen zur Internationalisierung von OTRS mit wenig Verkehr.
    </entry>
    <entry>
          <ulink url="http://lists.otrs.org/cgi-bin/listinfo/i18n">
          <citetitle>http://lists.otrs.org/cgi-bin/listinfo/i18n</citetitle>
      </ulink>
    </entry>
      </row>
      <row>
        <entry>
          cvs-log at otrs.org
        </entry>
    <entry>
      Benachrichtigungen über geänderte CVS-Dateien im Quellcode von OTRS mit sehr viel Verkehr.
    </entry>
    <entry>
          <ulink url="http://lists.otrs.org/cgi-bin/listinfo/cvs-log">
          <citetitle>http://lists.otrs.org/cgi-bin/listinfo/cvs-log</citetitle>
      </ulink>
    </entry>
      </row>
    </tbody>
  </tgroup>
</table>

<para>
Um eine Liste zu abonnieren besuchen Sie folgenden Link:

<ulink url="http://lists.otrs.org/">
<citetitle>http://lists.otrs.org/</citetitle>
</ulink>
</para>
</sect1>

<sect1 id="additional-resources-bugtracking">
<title>Fehler berichten</title>

<para>
Um uns Fehler in OTRS mitzuteilen, besuchen Sie uns unter:

<ulink url="http://bugs.otrs.org/">
<citetitle>http://bugs.otrs.org/</citetitle>
</ulink>.

Es ist uns bewusst, das bugzilla manchmal nicht sehr komfortabel ist. Es
ist aber derzeit das beste Fehlerverfolgungssystem, das wir finden konnten.
</para>

<para>
<screenshot>
<screeninfo>Fehlerverfolgungssystem</screeninfo>
<graphic srccredit="bugtracking tool" scale="40" fileref="screenshots/bugs-otrs-org.png"/>
</screenshot>
</para>

<para>
Indem Sie uns Fehler aufzeigen, helfen Sie uns sehr die Software weiter zu
entwickeln und zu verbessern. Wir bitten Sie um Ihre Mithilfe!
</para>
</sect1>

<sect1 id="additional-resources-commercial">
<title>Kommerzieller Support</title>

<para>
Neben der Unterstützung aus der Open Source Community können Sie auch Gebrauch
vom kommerziellen Teil des OTRS- Projekts, der OTRS AG, machen (Support,
Consulting und Training).
</para>

<para>
OTRS AG,
Europaring 4,
94315 Straubing (Germany),
Web: <ulink url="http://otrs.com/">http://otrs.com/</ulink>
</para>
</sect1>

</appendix>
<appendix id="config"><title>Config Referenzliste</title>
<sect1 id="Framework"><title>Framework</title> 
<sect2 id="Framework:Core"><title>Core</title> 
<sect3 id="Framework:Core:SecureMode"><title>SecureMode</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wird diese Option aktiviert, kann der Web-Installer (installer.pl) nicht genutzt werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SecureMode'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:ProductName"><title>ProductName</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Im WebFrontend angezeigter Name der Software.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'ProductName'} =  'OTRS';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:SystemID"><title>SystemID</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Identifikationsnummer f?r das installierte System. Jede Ticketnummer und ID einer http-Session beginnt mit dieser Nummer.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SystemID'} =  '10';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:FQDN"><title>FQDN</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Vollst?ndiger Domain Name des Systems.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'FQDN'} =  'yourhost.example.com';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:HttpType"><title>HttpType</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Legen Sie hier fest, ob das http- oder https-Protokoll innerhalb des Systems genutzt werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'HttpType'} =  'http';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:ScriptAlias"><title>ScriptAlias</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">ScriptAlias zur Datei index.pl, wie in der Webserver-Konfiguration festgelegt.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'ScriptAlias'} =  'otrs/';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:AdminEmail"><title>AdminEmail</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Emailadresse des Systemadministrators.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'AdminEmail'} =  'admin@example.com';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:Organization"><title>Organization</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Firma bzw. Name der Organisation. Jede ausgehende Nachricht wird mit einem X-Header-Eintrag f?r die Organisation und dem angegebenen Namen als Wert versehen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Organization'} =  'Example Company';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:DefaultCharset"><title>DefaultCharset</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Standard-Zeichensatz des Frontends. W?hlen Sie "utf-8", wenn verschiedene Zeichens?tze f?r die Anzeige ben?tigt werden. Wird nur ein Zeichensatz eingesetzt (z. B. "iso-8859-1"), nutzen Sie bitte diese Einstellung.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DefaultCharset'} =  'iso-8859-1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:DefaultLanguage"><title>DefaultLanguage</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Standard Frontend Sprache. M?gliche Werte sind bg, cz, da, de, en, el, es, fi, fr, hu, it, nb, nl, pl, pt, ru, th und sv.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DefaultLanguage'} =  'en';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:DefaultUsedLanguages"><title>DefaultUsedLanguages</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Abk?rzung f?r die Zuordnung der verschiedenen Sprachen (Abk?rzung = Vollst?ndiger Name und Datei).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DefaultUsedLanguages'} =  {
          'pt' =&gt; 'Portugu&amp;ecirc;s',
          'sk_SK' =&gt; 'Slovak',
          'es' =&gt; 'Espa&amp;ntilde;ol',
          'da' =&gt; 'Dansk',
          'ru' =&gt; 'Russian',
          'fr' =&gt; 'Fran&amp;ccedil;ais',
          'bg' =&gt; 'Bulgarian',
          'sv' =&gt; 'Svenska',
          'it' =&gt; 'Italiano',
          'hu' =&gt; 'Hungarian',
          'zh_CN' =&gt; 'Simplified Chinese',
          'nb_NO' =&gt; 'Norsk bokm&amp;aring;l',
          'pl' =&gt; 'Polski',
          'fa' =&gt; 'Persian',
          'cz' =&gt; 'Czech',
          'nl' =&gt; 'Nederlands',
          'fi' =&gt; 'Suomi',
          'en' =&gt; 'English',
          'de' =&gt; 'Deutsch',
          'el' =&gt; 'Greek',
          'pt_BR' =&gt; 'Portugu&amp;ecirc;s Brasileiro'
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:DefaultTheme"><title>DefaultTheme</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Standard Design der Weboberfl?che (Standard oder Lite).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DefaultTheme'} =  'Standard';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:DefaultTheme::HostBased"><title>DefaultTheme::HostBased</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">OTRS bietet die M?glichkeit individuelle Themes f?r Kunden und Agents festzulegen. Diese k?nnen unter anderem durch den Aufruf einer extra daf?r geschaffenen Domain angezeigt werden. Dabei enth?lt das Feld "Schl?ssel" eine Domain oder eine RegExp die eine Domain matched. Das zugeh?rige Theme wird im Feld "Inhalt" angegeben.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DefaultTheme::HostBased'} =  {
          'host2\\.example\\.com' =&gt; 'SomeTheme2',
          'host1\\.example\\.com' =&gt; 'SomeTheme1'
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:CheckMXRecord"><title>CheckMXRecord</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Soll der MX-Record von Emailadressen vor dem Versenden ?berpr?ft werden?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'CheckMXRecord'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:CheckEmailAddresses"><title>CheckEmailAddresses</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Sollen Emailadressen auf korrekte Syntax ?berpr?ft werden?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'CheckEmailAddresses'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:CheckEmailValidAddress"><title>CheckEmailValidAddress</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Regul?rer Ausdruck f?r syntaktisch nicht korrekte Mailadressen, die aber trotzdem im System verwendet werden sollen, z. B. "root@localhost".</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'CheckEmailValidAddress'} =  '^(root@localhost|admin@localhost)$';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:CheckEmailInvalidAddress"><title>CheckEmailInvalidAddress</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Regul?rer Ausdruck f?r nicht zul?ssige Emailadressen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'CheckEmailInvalidAddress'} =  '@(aa|aaa|aaaa|aaaaa|abc|any|anywhere|anonymous|bar|demo|example|foo|hello|hallo|nospam|nowhere|null|some|somewhere|test|teste.|there|user|xx|xxx|xxxx)\\.(..|...)$';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:CGILogPrefix"><title>CGILogPrefix</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Logprefix f?r die CGI-Skripte des Systems.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'CGILogPrefix'} =  'OTRS-CGI';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:DemoSystem"><title>DemoSystem</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Demosystem aktivieren? Wenn diese Einstellung aktiviert wird, k?nnen Agenten nur f?r die aktuelle Sitzung ihre Sprache oder das Anzeige-Schema ausw?hlen. Weiterhin k?nnen keine Kennw?rter ge?ndert werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DemoSystem'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:SwitchToUser"><title>SwitchToUser</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Dem Administrator erlauben sich ?ber die Benutzerverwaltung mit dem Zugang eines Benutzers anzumelden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SwitchToUser'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:NotificationSenderName"><title>NotificationSenderName</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Absendername f?r Benachrichtigungsemails verwendet.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'NotificationSenderName'} =  'OTRS Notification Master';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:NotificationSenderEmail"><title>NotificationSenderEmail</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Emailadresse die beim Versenden von Benachrichtigungsmails verwendet wird.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'NotificationSenderEmail'} =  'otrs@&lt;OTRS_CONFIG_FQDN&gt;';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:System::Permission"><title>System::Permission</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Die unterschiedlichen Zugriffsrechte der Agenten innerhalb des Systems (m?glich sind zus?tzlich note, close, pending, customer, freetext, forward und bounce - rw sollte das letzte in der Aufz?hlung bleiben).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Ticket</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'System::Permission'} =  [
          'ro',
          'move_into',
          'create',
          'owner',
          'priority',
          'rw'
        ];
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core:System::Customer::Permission"><title>System::Customer::Permission</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Die verschiedenen Zugriffsrechte f?r die Kunden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'System::Customer::Permission'} =  [
          'ro',
          'rw'
        ];
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Log"><title>Core::Log</title> 
<sect3 id="Framework:Core::Log:LogModule"><title>LogModule</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Logmodul f?r das System. "File" schreibt in eine anzugebende Datei, "SysLog" logt mit Hilfe des systemspezifischen Logdaemons, z. B. syslogd.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Log</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'LogModule'} =  'Kernel::System::Log::SysLog';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Log:LogModule::SysLog::Facility"><title>LogModule::SysLog::Facility</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn f?r LogModule der Wert "SysLog" ausgew?hlt wurde, kann hier ein spezielles Log-Facility angegeben werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Log</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'LogModule::SysLog::Facility'} =  'user';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Log:LogModule::SysLog::Charset"><title>LogModule::SysLog::Charset</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn "SysLog" f?r LogModule ausgew?hlt wurde, kann hier der Zeichensatz festgelegt werden, der f?r das Schreiben der Logeintr?ge benutzt werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Log</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'LogModule::SysLog::Charset'} =  'iso-8859-1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Log:LogModule::LogFile"><title>LogModule::LogFile</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn "File" f?r LogModul ausgew?hlt wurde, muss eine Logdatei angegeben werden. Diese wird automatisch vom System angelegt, falls sie noch nicht existiert.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Log</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'LogModule::LogFile'} =  '/tmp/otrs.log';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Log:LogModule::LogFile::Date"><title>LogModule::LogFile::Date</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Soll f?r jeden Logeintrag das Datum und die aktuelle Zeit mit protokolliert werden?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Log</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'LogModule::LogFile::Date'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Log:LogSystemCacheSize"><title>LogSystemCacheSize</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Gr??e des Caches f?r Admin System Log (in KBytes).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Log</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'LogSystemCacheSize'} =  '4096';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::MIME-Viewer"><title>Core::MIME-Viewer</title> 
<sect3 id="Framework:Core::MIME-Viewer:MIME-Viewer_applicationexcel"><title>MIME-Viewer###application/excel</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad zum Konvertierungsprogramm, um Microsoft Excel Dateien ?ber die Web-Oberfl?che anzuzeigen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::MIME-Viewer</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'MIME-Viewer'}-&gt;{'application/excel'} =  'xlhtml';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::MIME-Viewer:MIME-Viewer_applicationmsword"><title>MIME-Viewer###application/msword</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad zum Konvertierungsprogramm, um Microsoft Word Dateien ?ber die Web-Oberfl?che anzuzeigen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::MIME-Viewer</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'MIME-Viewer'}-&gt;{'application/msword'} =  'wvWare';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::MIME-Viewer:MIME-Viewer_applicationpdf"><title>MIME-Viewer###application/pdf</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad zum Programm, um PDF Dateien ?ber die Web-Oberfl?che anzuzeigen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::MIME-Viewer</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'MIME-Viewer'}-&gt;{'application/pdf'} =  'pdftohtml -stdout -i';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::MIME-Viewer:MIME-Viewer_textxml"><title>MIME-Viewer###text/xml</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad zum Konvertierungsprogramm, um XML Dateien in der Web-Oberfl?che anzuzeigen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::MIME-Viewer</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'MIME-Viewer'}-&gt;{'text/xml'} =  '&lt;OTRS_CONFIG_Home&gt;/scripts/tools/xml2html.pl';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::PDF"><title>Core::PDF</title> 
<sect3 id="Framework:Core::PDF:PDF"><title>PDF</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">PDF Ausgabe aktivieren? Es wird das CPAN Modul PDF::API2 ben?tigt. Ist dieses nicht installiert, wird die PDF Ausgabe automatisch deaktiviert.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::LogoFile"><title>PDF::LogoFile</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Datei f?r das Logo, das im Seitenkopf angezeigt wird (gif|jpg|png, 700 x 100 Pixel).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::LogoFile'} =  '&lt;OTRS_CONFIG_Home&gt;/var/logo-otrs.png';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::PageSize"><title>PDF::PageSize</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Standard-Seitengr??e von PDF Seiten</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::PageSize'} =  'a4';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::MaxPages"><title>PDF::MaxPages</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Maximale Anzahl von Seiten pro PDF Datei</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::MaxPages'} =  '100';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::TTFontFile_Proportional"><title>PDF::TTFontFile###Proportional</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad und TTF-Schriftdatei um proportianale Schrift in PDF Dokumente zu verarbeiten.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::TTFontFile'}-&gt;{'Proportional'} =  'DejaVuSans.ttf';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::TTFontFile_ProportionalBold"><title>PDF::TTFontFile###ProportionalBold</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad und TTF-Schriftdatei um fette, proportianale Schrift in PDF Dokumente zu verarbeiten.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::TTFontFile'}-&gt;{'ProportionalBold'} =  'DejaVuSans-Bold.ttf';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::TTFontFile_ProportionalItalic"><title>PDF::TTFontFile###ProportionalItalic</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad und TTF-Schriftdatei um kursive, proportianale Schrift in PDF Dokumente zu verarbeiten.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::TTFontFile'}-&gt;{'ProportionalItalic'} =  'DejaVuSans-Oblique.ttf';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::TTFontFile_ProportionalBoldItalic"><title>PDF::TTFontFile###ProportionalBoldItalic</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad und TTF-Schriftdatei um fette, kursive, proportianale Schrift in PDF Dokumente zu verarbeiten.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::TTFontFile'}-&gt;{'ProportionalBoldItalic'} =  'DejaVuSans-BoldOblique.ttf';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::TTFontFile_Monospaced"><title>PDF::TTFontFile###Monospaced</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad und TTF-Schriftdatei um monospaced Schrift in PDF Dokumente zu verarbeiten.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::TTFontFile'}-&gt;{'Monospaced'} =  'DejaVuSansMono.ttf';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::TTFontFile_MonospacedBold"><title>PDF::TTFontFile###MonospacedBold</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad und TTF-Schriftdatei um fette, monospaced Schrift in PDF Dokumente zu verarbeiten.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::TTFontFile'}-&gt;{'MonospacedBold'} =  'DejaVuSansMono-Bold.ttf';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::TTFontFile_MonospacedItalic"><title>PDF::TTFontFile###MonospacedItalic</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad und TTF-Schriftdatei um kursive, monospaced Schrift in PDF Dokumente zu verarbeiten.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::TTFontFile'}-&gt;{'MonospacedItalic'} =  'DejaVuSansMono-Oblique.ttf';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PDF:PDF::TTFontFile_MonospacedBoldItalic"><title>PDF::TTFontFile###MonospacedBoldItalic</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad und TTF-Schriftdatei um fette, kursive, monospaced Schrift in PDF Dokumente zu verarbeiten.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PDF</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PDF::TTFontFile'}-&gt;{'MonospacedBoldItalic'} =  'DejaVuSansMono-BoldOblique.ttf';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Package"><title>Core::Package</title> 
<sect3 id="Framework:Core::Package:Package::FileUpload"><title>Package::FileUpload</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">File Upload im WebFrontend der Paket-Verwaltung aktivieren?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Package</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Package::FileUpload'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Package:Package::RepositoryRoot"><title>Package::RepositoryRoot</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Online-Quelle, ?ber die zus?tzliche Pakete bezogen werden k?nnen. Die Quelle, die zuerst erfolgreich abgefragt werden kann, wird verwendet.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Package</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Package::RepositoryRoot'} =  [
          'http://ftp.otrs.org/pub/otrs/misc/packages/repository.xml',
          'http://otrs.org/repository.xml'
        ];
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Package:Package::RepositoryList"><title>Package::RepositoryList</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Liste der zur Verf?gung stehenden Online-Quellen (es koennen z. B. auch andere Installationen als Online-Quellen verwendet werden mit der Verwendung von Key="http://example.com/otrs/public.pl?Action=PublicRepository&amp;File=" and Content="Ein Name").</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Package</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Package::RepositoryList'} =  {
          'ftp://ftp.example.com/pub/otrs/misc/packages/' =&gt; '[Example] ftp://ftp.example.com/'
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Package:Package::RepositoryAccessRegExp"><title>Package::RepositoryAccessRegExp</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">IP RegExp fuer lokale Online-Quelle. Sie muessen dies aktivieren um den Zugriff auf die lokale Online-Quelle zu haben. Package::RepositoryList ist Voraussetzung am entfernten Rechner.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Package</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Package::RepositoryAccessRegExp'} =  '127\\.0\\.0\\.1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Package:Package::Timeout"><title>Package::Timeout</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Timeout f?r das Herunterladen von zus?tzlichen Paketen (in Sekunden).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Package</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Package::Timeout'} =  '15';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Package:Package::Proxy"><title>Package::Proxy</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Laden von zus?tzlichen Paketen ?ber einen Proxyserver.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Package</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Package::Proxy'} =  'http://proxy.sn.no:8001/';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::PerformanceLog"><title>Core::PerformanceLog</title> 
<sect3 id="Framework:Core::PerformanceLog:PerformanceLog"><title>PerformanceLog</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">PerformanceLog aktivieren um Seiten-Antwortzeiten zu protokollieren. Achtung, dies benoetigt System-Resourcen (es muss auch Frontend::Module###AdminPerformanceLog aktiviert werden!).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PerformanceLog</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PerformanceLog'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PerformanceLog:PerformanceLog::File"><title>PerformanceLog::File</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Logdatei des PerformanceLog.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PerformanceLog</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PerformanceLog::File'} =  '&lt;OTRS_CONFIG_Home&gt;/var/log/Performance.log';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::PerformanceLog:PerformanceLog::FileMax"><title>PerformanceLog::FileMax</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Maximale groesse in MB der Logdatei.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::PerformanceLog</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PerformanceLog::FileMax'} =  '15';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::SOAP"><title>Core::SOAP</title> 
<sect3 id="Framework:Core::SOAP:SOAP::User"><title>SOAP::User</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Der Benutzername um die SOAP Schnitstelle benutzen zu koennen (bin/cgi-bin/rpc.pl).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::SOAP</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SOAP::User'} =  'some_user';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::SOAP:SOAP::Password"><title>SOAP::Password</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Das Passwort um die SOAP Schnitstelle benutzen zu koennen (bin/cgi-bin/rpc.pl).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::SOAP</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SOAP::Password'} =  'some_pass';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Sendmail"><title>Core::Sendmail</title> 
<sect3 id="Framework:Core::Sendmail:SendmailModule"><title>SendmailModule</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Modul zum Versenden von Emails. "Sendmail" verwendet das sendmail-Binary Ihres Betriebssystems. "SMTP" versendet die Nachrichten ?ber einen externen Mailserver.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Sendmail</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SendmailModule'} =  'Kernel::System::Email::Sendmail';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Sendmail:SendmailModule::CMD"><title>SendmailModule::CMD</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn "Sendmail" als SendmailModule ausgew?hlt wurde, m?ssen Sie dem System den Pfad zu Ihrem sendmail-Binary und die ben?tigten Optionen mitteilen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Sendmail</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SendmailModule::CMD'} =  '/usr/sbin/sendmail -i -f';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Sendmail:SendmailModule::Host"><title>SendmailModule::Host</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn Sie f?r SendmailModule "SMTP" ausgw?hlt haben, m?ssen Sie hier den Mailserver angeben, der zum Versenden von Nachrichten genutzt werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Sendmail</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SendmailModule::Host'} =  'mail.example.com';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Sendmail:SendmailModule::Port"><title>SendmailModule::Port</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn Sie f?r SendmailModule den Wert "SMTP" ausgew?hlt haben, k?nnen Sie hier den Port angeben, auf dem Ihr Mailserver Mails entgegennimmt.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Sendmail</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SendmailModule::Port'} =  '25';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Sendmail:SendmailModule::AuthUser"><title>SendmailModule::AuthUser</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn Sie f?r SendmailModule den Wert "SMTP" ausgew?hlt haben und sich an Ihrem Mailserver anmelden m?ssen, geben Sie hier bitte den Benutzernamen f?r die Authentifizierung an.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Sendmail</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SendmailModule::AuthUser'} =  'MailserverLogin';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Sendmail:SendmailModule::AuthPassword"><title>SendmailModule::AuthPassword</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn Sie f?r SendmailModule den Wert "SMTP" ausgew?hlt haben und sich an Ihrem Mailserver anmelden m?ssen, geben Sie hier das Passwort f?r die Authentifizierung an.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Sendmail</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SendmailModule::AuthPassword'} =  'MailserverPassword';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Sendmail:SendmailBcc"><title>SendmailBcc</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Alle ausgehenden Nachrichten werden via BCC ('Blind Copy') an die angegebene Adresse gesendet. Bitte nutzen Sie diese Funktionalit?t nur aus Gr?nden der Datensicherung.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Sendmail</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SendmailBcc'} =  '';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Sendmail:SendmailNotificationEnvelopeFrom"><title>SendmailNotificationEnvelopeFrom</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Die hier angegebene Adresse wird f?r
            ausgehende Benachrichtigungen als envelope from Header genutzt.
            Wird keine Adresse angegeben, bleibt der envelope from Header leer.
        </entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Sendmail</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SendmailNotificationEnvelopeFrom'} =  '';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Session"><title>Core::Session</title> 
<sect3 id="Framework:Core::Session:SessionModule"><title>SessionModule</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Modul zum Speichern der Session-Daten. "DB" hat den Vorteil, dass die Web-Oberfl?che und die Datenbank auf verschiedenen Maschinen installiert werden kann, "FS" oder "IPC" sind hingegen viel schneller.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionModule'} =  'Kernel::System::AuthSession::DB';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionName"><title>SessionName</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Name der Session-Kennung. Z. B. Session, SessionID oder OTRS.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionName'} =  'Session';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionCheckRemoteIP"><title>SessionCheckRemoteIP</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wird das System z. B. ?ber eine Proxy-Farm oder ?ber eine Einw?hlverbindung angesprochen, kann sich die IP-Adresse f?r die einzelnen Anfragen oft ?ndern. Schalten Sie in diesem Fall diese ?berpr?fung ab.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionCheckRemoteIP'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionDeleteIfNotRemoteID"><title>SessionDeleteIfNotRemoteID</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Session bei falscher IP Adresse l?schen?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionDeleteIfNotRemoteID'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionMaxTime"><title>SessionMaxTime</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">G?ltigkeitsdauer einer Session (in Sekunden).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionMaxTime'} =  '36000';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionMaxIdleTime"><title>SessionMaxIdleTime</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Eine Session wird beendet und der Benutzer automatisch abgemeldet, wenn er f?r die hier angegebene Zeit in Sekunden inaktiv war (in Sekunden).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionMaxIdleTime'} =  '18000';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionDeleteIfTimeToOld"><title>SessionDeleteIfTimeToOld</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Sollen Anfragen f?r Sessions automatisch gel?scht werden, wenn diese Sessions bereits schon lange abgelaufen sind?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionDeleteIfTimeToOld'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionUseCookie"><title>SessionUseCookie</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Sessionmanagement mit Cookies? Wenn Cookies deaktiviert sind oder werden vom verwendeten Browser keine Cookies unterst?tzt, wird die SessionID automatisch per Link ?bermittelt.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionUseCookie'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionUseCookieAfterBrowserClose"><title>SessionUseCookieAfterBrowserClose</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Cookies nach dem Schlie?en des Browsers nicht l?schen?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionUseCookieAfterBrowserClose'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionDir"><title>SessionDir</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn "FS" f?r SessionModule ausgew?hlt wurde, muss ein Verzeichnis zum Zwischenspeichern der Session-Daten angegeben werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionDir'} =  '&lt;OTRS_CONFIG_Home&gt;/var/sessions';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionTable"><title>SessionTable</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn "DB" als SessionModule ausgew?hlt wurde, muss eine Tabelle in der Datenbank zum Speichern der Session-Daten, angegeben werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionTable'} =  'sessions';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionTableID"><title>SessionTableID</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn "DB" als SessionModule ausgew?hlt wurde, muss ein Feld f?r die ID innerhalb der Tabelle f?r die Sessions angegeben werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionTableID'} =  'session_id';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:SessionTableValue"><title>SessionTableValue</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wenn "DB" als SessionModule ausgew?hlt wurde, muss ein Feld f?r die Werte innerhalb der Session-Tabelle angegeben werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SessionTableValue'} =  'session_value';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Session:CustomerPanelSessionName"><title>CustomerPanelSessionName</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kennung f?r Kunden-Sitzungen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Session</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'CustomerPanelSessionName'} =  'CSID';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::SpellChecker"><title>Core::SpellChecker</title> 
<sect3 id="Framework:Core::SpellChecker:SpellChecker"><title>SpellChecker</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Aktivieren oder deaktivieren der Rechtschreibhilfe.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::SpellChecker</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SpellChecker'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::SpellChecker:SpellCheckerBin"><title>SpellCheckerBin</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Installieren Sie ispell oder aspell, um auf eine Rechtschreibhilfe zur?ckgreifen zu k?nnen. Bitte geben Sie hier den Pfad zum Binary von ispell oder aspell an.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::SpellChecker</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SpellCheckerBin'} =  '/usr/bin/ispell';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::SpellChecker:SpellCheckerDictDefault"><title>SpellCheckerDictDefault</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Standard W?rterbuch f?r die Rechtschreibpr?fung.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::SpellChecker</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SpellCheckerDictDefault'} =  'english';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::SpellChecker:SpellCheckerIgnore"><title>SpellCheckerIgnore</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Folgende W?rter werden von der Rechtschreibpr?fung standardm??ig ignoriert.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::SpellChecker</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'SpellCheckerIgnore'} =  [
          'www',
          'webmail',
          'https',
          'http',
          'html',
          'rfc'
        ];
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Stats"><title>Core::Stats</title> 
<sect3 id="Framework:Core::Stats:Stats::StatsHook"><title>Stats::StatsHook</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hiermit kann der Statistik-Identifikator gesetzt werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::StatsHook'} =  'Stat#';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats:Stats::StatsStartNumber"><title>Stats::StatsStartNumber</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Startzahl, ab der die Statistiknummern hochgez?hlt werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::StatsStartNumber'} =  '10000';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats:Stats::MaxXaxisAttributes"><title>Stats::MaxXaxisAttributes</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Maximale Anzahl in die ein Zeitraum auf der X-Achse skaliert werden darf.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::MaxXaxisAttributes'} =  '100';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats:Stats::DynamicObjectRegistration_Ticket"><title>Stats::DynamicObjectRegistration###Ticket</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hier k?nnen Sie festlegen, ob das Statistik-Modul auch Statistiken ?ber Tickets generieren darf.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::DynamicObjectRegistration'}-&gt;{'Ticket'} =  {
          'Module' =&gt; 'Kernel::System::Stats::Dynamic::Ticket'
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Stats::Graph"><title>Core::Stats::Graph</title> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::t_margin"><title>Stats::Graph::t_margin</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Abstand von oben zum Diagramm</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::t_margin'} =  '10';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::l_margin"><title>Stats::Graph::l_margin</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Linker Abstand zum Diagramm.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::l_margin'} =  '10';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::b_margin"><title>Stats::Graph::b_margin</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Abstand von unten zum Diagramm.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::b_margin'} =  '10';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::r_margin"><title>Stats::Graph::r_margin</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Rechter Abstand zum Diagramm.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::r_margin'} =  '20';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::bgclr"><title>Stats::Graph::bgclr</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hintergrundfarbe vom Bild.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::bgclr'} =  'white';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::transparent"><title>Stats::Graph::transparent</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Soll das Bild transparent sein?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::transparent'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::fgclr"><title>Stats::Graph::fgclr</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Rahmenfarbe des Diagramms.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::fgclr'} =  'black';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::boxclr"><title>Stats::Graph::boxclr</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hintergrundfarbe des Diagramms.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::boxclr'} =  'white';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::accentclr"><title>Stats::Graph::accentclr</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Rahmenfarbe der Legende.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::accentclr'} =  'black';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::legendclr"><title>Stats::Graph::legendclr</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Textfarbe der Legende.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::legendclr'} =  'black';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::textclr"><title>Stats::Graph::textclr</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Textfarbe vom Diagramm (z. B. Titel).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::textclr'} =  'black';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::dclrs"><title>Stats::Graph::dclrs</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Farben f?r die Graphen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::dclrs'} =  [
          'red',
          'green',
          'blue',
          'yellow',
          'black',
          'purple',
          'orange',
          'pink',
          'marine',
          'cyan',
          'light gray',
          'light blue',
          'light yellow',
          'light green',
          'light red',
          'light purple',
          'light orange',
          'light brown'
        ];
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::line_width"><title>Stats::Graph::line_width</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Linienst?rke der Graphen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::line_width'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::legend_placement"><title>Stats::Graph::legend_placement</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Platzierung der Legende. Es handelt sich hierbei um einen Schl?ssel bestehend aus zwei Buchstaben in der Form 'B[LCR]|R[TCB]'. Der erste Buchstabe gibt die Platzierung an. Der zweite die Ausrichtung der Legende.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::legend_placement'} =  'BC';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::legend_spacing"><title>Stats::Graph::legend_spacing</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Abstand der Legenden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::legend_spacing'} =  '4';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::legend_marker_width"><title>Stats::Graph::legend_marker_width</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Breite der Legende.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::legend_marker_width'} =  '12';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Stats::Graph:Stats::Graph::legend_marker_height"><title>Stats::Graph::legend_marker_height</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">H?he der Legende.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Stats::Graph</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Stats::Graph::legend_marker_height'} =  '8';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time"><title>Core::Time</title> 
<sect3 id="Framework:Core::Time:TimeInputFormat"><title>TimeInputFormat</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Benutztes Datumseingabeformat in Formularen (Auswahl- oder Eingabefelder).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeInputFormat'} =  'Option';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time:TimeCalendarLookup"><title>TimeCalendarLookup</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Aktivieren eines Kalender-Fensters bei Datumsauswahlen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeCalendarLookup'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time:TimeShowAlwaysLong"><title>TimeShowAlwaysLong</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitangaben immer im ausf?hrlichen (Tag, Stunden, Minuten) oder im kurzen Format (Tag, Stunden) anzeigen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeShowAlwaysLong'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time:TimeZone"><title>TimeZone</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einstellen der Zeitzone. Standardm??ig wird die lokale Systemzeit verwendet, (+ / - 0).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone'} =  '+0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time:TimeZoneUser"><title>TimeZoneUser</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einstellen der Zeitzone pro Benutzer (Voraussetzung ist UTC unter der Option TimeZone). Standardm??ig wird die lokale Systemzeit verwendet, (+ / - 0).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZoneUser'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time:TimeZoneUserBrowserAutoOffset"><title>TimeZoneUserBrowserAutoOffset</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einstellen der Zeitzone pro Benutzer basierent auf der Java Script / Browser "Time Offset" funktionalitaet zur Loginzeit.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZoneUserBrowserAutoOffset'} =  '1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time:TimeVacationDays"><title>TimeVacationDays</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time:TimeVacationDaysOneTime"><title>TimeVacationDaysOneTime</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time:TimeWorkingHours"><title>TimeWorkingHours</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar1"><title>Core::Time::Calendar1</title> 
<sect3 id="Framework:Core::Time::Calendar1:TimeZone::Calendar1Name"><title>TimeZone::Calendar1Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar1</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar1Name'} =  'Calendar Name 1';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar1:TimeZone::Calendar1"><title>TimeZone::Calendar1</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar1</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar1'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar1:TimeVacationDays::Calendar1"><title>TimeVacationDays::Calendar1</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar1</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar1'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar1:TimeVacationDaysOneTime::Calendar1"><title>TimeVacationDaysOneTime::Calendar1</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar1</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar1'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar1:TimeWorkingHours::Calendar1"><title>TimeWorkingHours::Calendar1</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar1</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar1'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar2"><title>Core::Time::Calendar2</title> 
<sect3 id="Framework:Core::Time::Calendar2:TimeZone::Calendar2Name"><title>TimeZone::Calendar2Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar2</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar2Name'} =  'Calendar Name 2';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar2:TimeZone::Calendar2"><title>TimeZone::Calendar2</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar2</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar2'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar2:TimeVacationDays::Calendar2"><title>TimeVacationDays::Calendar2</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar2</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar2'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar2:TimeVacationDaysOneTime::Calendar2"><title>TimeVacationDaysOneTime::Calendar2</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar2</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar2'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar2:TimeWorkingHours::Calendar2"><title>TimeWorkingHours::Calendar2</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar2</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar2'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar3"><title>Core::Time::Calendar3</title> 
<sect3 id="Framework:Core::Time::Calendar3:TimeZone::Calendar3Name"><title>TimeZone::Calendar3Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar3</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar3Name'} =  'Calendar Name 3';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar3:TimeZone::Calendar3"><title>TimeZone::Calendar3</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar3</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar3'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar3:TimeVacationDays::Calendar3"><title>TimeVacationDays::Calendar3</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar3</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar3'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar3:TimeVacationDaysOneTime::Calendar3"><title>TimeVacationDaysOneTime::Calendar3</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar3</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar3'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar3:TimeWorkingHours::Calendar3"><title>TimeWorkingHours::Calendar3</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar3</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar3'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar4"><title>Core::Time::Calendar4</title> 
<sect3 id="Framework:Core::Time::Calendar4:TimeZone::Calendar4Name"><title>TimeZone::Calendar4Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar4</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar4Name'} =  'Calendar Name 4';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar4:TimeZone::Calendar4"><title>TimeZone::Calendar4</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar4</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar4'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar4:TimeVacationDays::Calendar4"><title>TimeVacationDays::Calendar4</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar4</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar4'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar4:TimeVacationDaysOneTime::Calendar4"><title>TimeVacationDaysOneTime::Calendar4</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar4</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar4'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar4:TimeWorkingHours::Calendar4"><title>TimeWorkingHours::Calendar4</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar4</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar4'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar5"><title>Core::Time::Calendar5</title> 
<sect3 id="Framework:Core::Time::Calendar5:TimeZone::Calendar5Name"><title>TimeZone::Calendar5Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar5</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar5Name'} =  'Calendar Name 5';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar5:TimeZone::Calendar5"><title>TimeZone::Calendar5</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar5</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar5'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar5:TimeVacationDays::Calendar5"><title>TimeVacationDays::Calendar5</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar5</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar5'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar5:TimeVacationDaysOneTime::Calendar5"><title>TimeVacationDaysOneTime::Calendar5</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar5</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar5'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar5:TimeWorkingHours::Calendar5"><title>TimeWorkingHours::Calendar5</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar5</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar5'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar6"><title>Core::Time::Calendar6</title> 
<sect3 id="Framework:Core::Time::Calendar6:TimeZone::Calendar6Name"><title>TimeZone::Calendar6Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar6</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar6Name'} =  'Calendar Name 6';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar6:TimeZone::Calendar6"><title>TimeZone::Calendar6</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar6</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar6'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar6:TimeVacationDays::Calendar6"><title>TimeVacationDays::Calendar6</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar6</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar6'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar6:TimeVacationDaysOneTime::Calendar6"><title>TimeVacationDaysOneTime::Calendar6</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar6</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar6'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar6:TimeWorkingHours::Calendar6"><title>TimeWorkingHours::Calendar6</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar6</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar6'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar7"><title>Core::Time::Calendar7</title> 
<sect3 id="Framework:Core::Time::Calendar7:TimeZone::Calendar7Name"><title>TimeZone::Calendar7Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar7</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar7Name'} =  'Calendar Name 7';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar7:TimeZone::Calendar7"><title>TimeZone::Calendar7</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar7</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar7'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar7:TimeVacationDays::Calendar7"><title>TimeVacationDays::Calendar7</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar7</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar7'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar7:TimeVacationDaysOneTime::Calendar7"><title>TimeVacationDaysOneTime::Calendar7</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar7</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar7'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar7:TimeWorkingHours::Calendar7"><title>TimeWorkingHours::Calendar7</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar7</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar7'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar8"><title>Core::Time::Calendar8</title> 
<sect3 id="Framework:Core::Time::Calendar8:TimeZone::Calendar8Name"><title>TimeZone::Calendar8Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar8</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar8Name'} =  'Calendar Name 8';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar8:TimeZone::Calendar8"><title>TimeZone::Calendar8</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar8</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar8'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar8:TimeVacationDays::Calendar8"><title>TimeVacationDays::Calendar8</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar8</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar8'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar8:TimeVacationDaysOneTime::Calendar8"><title>TimeVacationDaysOneTime::Calendar8</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar8</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar8'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar8:TimeWorkingHours::Calendar8"><title>TimeWorkingHours::Calendar8</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar8</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar8'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Time::Calendar9"><title>Core::Time::Calendar9</title> 
<sect3 id="Framework:Core::Time::Calendar9:TimeZone::Calendar9Name"><title>TimeZone::Calendar9Name</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kalender Name.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar9</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar9Name'} =  'Calendar Name 9';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar9:TimeZone::Calendar9"><title>TimeZone::Calendar9</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Zeitzone der Queue.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar9</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeZone::Calendar9'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar9:TimeVacationDays::Calendar9"><title>TimeVacationDays::Calendar9</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Hinterlegen Sie hier Ihre permanenten Feiertage im System. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar9</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDays::Calendar9'} =  {
          '1' =&gt; {
                   '1' =&gt; 'New Year\'s Eve!'
                 },
          '12' =&gt; {
                    '25' =&gt; 'First Christmas Day',
                    '24' =&gt; 'Christmas',
                    '26' =&gt; 'Second Christmas Day',
                    '31' =&gt; 'Silvester'
                  },
          '5' =&gt; {
                   '1' =&gt; '1 St. May'
                 }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar9:TimeVacationDaysOneTime::Calendar9"><title>TimeVacationDaysOneTime::Calendar9</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Einmalige Feiertage im System hinterlegen. Benutzen Sie bitte f?r Januar bis Septemper einstellige Zahlen (1-9), ebenso f?r Monatstage kleiner zehn.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar9</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeVacationDaysOneTime::Calendar9'} =  {
          '2004' =&gt; {
                      '1' =&gt; {
                               '1' =&gt; 'test'
                             }
                    }
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Time::Calendar9:TimeWorkingHours::Calendar9"><title>TimeWorkingHours::Calendar9</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Wochentage und Stunden f?r die die Arbeitszeit erfasst werden soll.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Time::Calendar9</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'TimeWorkingHours::Calendar9'} =  {
          'Mon' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Tue' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Fri' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Wed' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ],
          'Sun' =&gt; [],
          'Sat' =&gt; [],
          'Thu' =&gt; [
                     '8',
                     '9',
                     '10',
                     '11',
                     '12',
                     '13',
                     '14',
                     '15',
                     '16',
                     '17',
                     '18',
                     '19',
                     '20'
                   ]
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Core::Web"><title>Core::Web</title> 
<sect3 id="Framework:Core::Web:Frontend::ImagePath"><title>Frontend::ImagePath</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">URL Bildverzeichnis der Icons fuer Navigation.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Web</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Frontend::ImagePath'} =  '/otrs-web/images/Standard/';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Web:DefaultViewNewLine"><title>DefaultViewNewLine</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Nach dieser Anzahl an Zeichen wird in Textnachrichten automatisch eine neue Zeile begonnen.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Web</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DefaultViewNewLine'} =  '85';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Web:DefaultPreViewLines"><title>DefaultPreViewLines</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Anzahl der Zeilen bei der Vorschau von Textnachrichten (z. B. bei Tickets in der Queue-Ansicht).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Web</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DefaultPreViewLines'} =  '18';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Web:DefaultViewLines"><title>DefaultViewLines</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Anzahl der Zeilen f?r Textnachricht (z. B. im QueueZoom).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Web</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'DefaultViewLines'} =  '6000';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Web:AttachmentDownloadType"><title>AttachmentDownloadType</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Anzeige von Dateianh?nge f?r Tickets im Browser (inline), oder als Download anbieten (attachment).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Web</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'AttachmentDownloadType'} =  'attachment';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Web:WebMaxFileUpload"><title>WebMaxFileUpload</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Maximale Dateigr??e f?r Dateiuploads ?ber den Browser (in Bytes).</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Web</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'WebMaxFileUpload'} =  '5242880';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Web:WebUploadCacheModule"><title>WebUploadCacheModule</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">W?hlen Sie das Modul, welches Uploads ?ber die Web-Oberfl?che speichert. "DB" benutzt die Datenbank zum Speichern der Uploads, "FS" legt die Daten im Dateisystem ab.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Web</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'WebUploadCacheModule'} =  'Kernel::System::Web::UploadCache::DB';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Core::Web:Frontend::Output::PostFilter_ActiveElementFilter"><title>Frontend::Output::PostFilter###ActiveElementFilter</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Ein Filter f?r den HTML-Inhalt innerhalb der Applikation. Mit Hilfe des Filters kann z. B. die Anzeige von Javaapplets oder Javascript unterdr?ckt werden.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Core::Web</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">0</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'Frontend::Output::PostFilter'}-&gt;{'ActiveElementFilter'} =  {
          'Debug' =&gt; '0',
          'Module' =&gt; 'Kernel::Output::HTML::OutputFilterActiveElement'
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Crypt::PGP"><title>Crypt::PGP</title> 
<sect3 id="Framework:Crypt::PGP:PGP"><title>PGP</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">PGP aktivieren?</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Crypt::PGP</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PGP'} =  '0';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Crypt::PGP:PGP::Bin"><title>PGP::Bin</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Pfad zum PGP Binary.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Crypt::PGP</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PGP::Bin'} =  '/usr/bin/gpg';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Crypt::PGP:PGP::Options"><title>PGP::Options</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Optionen f?r das PGP Binary.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Crypt::PGP</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PGP::Options'} =  '--homedir /opt/otrs/.gnupg/ --batch --no-tty --yes';
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
<sect3 id="Framework:Crypt::PGP:PGP::Key::Password"><title>PGP::Key::Password</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="col2" nameend="col4">Value</entry>
     </row>
   </thead>
   <tbody>
<row>
 <entry>Description:</entry>
 <entry namest="col2" nameend="col4">Kennwort f?r PGP-Schl?ssel.</entry>
</row>
<row>
 <entry>Group:</entry>
 <entry namest="col2" nameend="col4">Framework</entry>
</row>
<row>
 <entry>SubGroup:</entry>
 <entry namest="col2" nameend="col4">Crypt::PGP</entry>
</row>
<row>
 <entry>Valid:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Required:</entry>
 <entry namest="col2" nameend="col4">1</entry>
</row>
<row>
 <entry>Config-Setting:</entry>
 <entry namest="col2" nameend="col4"><programlisting>
 $Self-&gt;{'PGP::Key::Password'} =  {
          '488A0B8F' =&gt; 'SomePassword',
          'D2DF79FA' =&gt; 'SomePassword'
        };
</programlisting>
 </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3> 
</sect2> 
<sect2 id="Framework:Crypt::SMIME"><title>Crypt::SMIME</title> 
<sect3 id="Framework:Crypt::SMIME:SMIME"><title>SMIME</title> 
<informaltable>
 <tgroup cols="4">
   <colspec colnum="1" colname="col1" colwidth="1*"/>
   <colspec colnum="2" colname="col2" colwidth="1*"/>
   <colspec colnum="3" colname="col3" colwidth="1*"/>
   <colspec colnum="4" colname="col4" colwidth="1*"/>
   <thead>
     <row>
       <entry>Description</entry>
       <entry namest="c