Benachrichtigung bei Logänderung

Benachrichtigung bei Änderung an Personendaten

Ziel war es, bei einer Änderung von Angaben an einer Person sofort per Trigger eine Nachricht zu erhalten. In Echtzeit ist das aktuell (V1.19) mit i-doit nicht möglich. Mit den Benachrichtigungen gibt es aber die Möglichkeit, zeitgesteuert eine entsprechende Mail zu versenden. Dieses Verfahren wird im Folgenden beschrieben. Dabei wurde die i-doit Version 1.18.2 verwendet.

1. Erstellung eines Berichtes

Änderungen an einem Objekt werden im Logbuch gespeichert. Also ist der erste Anlaufpunkt die Anzeige der Logbuchdaten am Objekt:

Leider kommt man hier nicht weit, da die Beschreibung des Logs SQL Anweisungen enthält. Das Datum kann auch nur statisch vergeben werden. Da ein Logeintrag zudem als Timestamp (Datum+Zeit) vorliegt, kommt man mit dem Datumsfilter nicht weit. Hier stehen nur die Operatoren Gleich (=) oder Ungleich (!=) zur Verfügung.

 

 

 

Neben der Berichterstellung über den Konfigurator kann man auch SQL basierte Berichte erstellten. Dazu muss man sich mit dem Datenmodell vertraut machen. Wichtig ist, dass es ein Feld mit dem Titel „__id__“ gibt, welches die Objekt-Id des Objekts (Person) ausgibt. Da es in der Logbuchtabelle selbst keine Referenz dafür gibt, muss der Objektbezug über den Objekttitel hergestellt werden:

select o2.isys_obj__id as '__id__' , o2.isys_obj__id as Objid , isys_logbook__isys_logbook_level__id as LogLevel , isys_logbook__date as Datum , isys_logbook__obj_name_static as Person , isys_logbook__event_static as LogEvent from idoit_data.isys_logbook l left outer join idoit_data.isys_obj o2 on   o2.isys_obj__title = l.isys_logbook__obj_name_static and   o2.isys_obj__isys_obj_type__id = 53 where l.isys_logbook__obj_type_static = 'LC__CONTACT__TREE__PERSON' and l.isys_logbook__date >= current_date-1 order by l.isys_logbook__obj_name_static

Diese Abfrage gibt auch physisch gelöschte Objekte (Personen) aus. Auf Grund der fehlenden Objektreferenz werden diese Daten aber später im Bericht leider nicht angezeigt.

 

2. Benachrichtigung erstellen

Voraussetzung ist, dass in den Systemeinstellungen der Verwaltung der SMTP Host und bei den Mandanteneinstellungen die i-doit Adresse (URL) eingetragen ist.

Unter Extras -> CMDB -> Benachrichtigungen gibt es zahlreiche Vorlagen. Für unseren Fall verwenden wir die Reportbasierte Benachrichtigung.

Vorlage

Hier erstellen wir als erstes eine neue Vorlage:

Ich nutze dazu den Text der vorhandenen Vorlage und passe ihn etwas an. Lässt man die Attribute leer, werden in der Ergebnisliste automatisch der Objekttitel und die SYSID ausgegeben. Ich ändere das in Objekttitel (Bezeichnung – Allgemein) und Zustand. Der Zustand gibt an, ob das Objekt normal, archiviert oder gelöscht ist. Physisch gelöscht Objekte sind nicht mehr als solche vorhanden und werden im Bericht nicht berücksichtigt (im Report ist die Ausgabe möglich).

Benachrichtigung

Hier legen wir einen neuen Eintrag an. Die Bezeichnung wird im Mailtemplate in den Betreff eingetragen. Die max. Anzahl sollte auf -1 gestellt werden, damit der Bericht mehrfach ausgegeben wird. Die Häufigkeit wird später definiert. Unter „Deutsches Template“ wählen wir das eben erstellte aus. Im Bereich der „Domänen“ wird der oben angelegte Bericht eingetragen und bei „Nur Objekte mit Status Normal“ sollte in unserem Fall ein „Nein“ stehen, da wir alle Zustände berücksichtigen wollen. Schließlich werden noch der oder die Mail-Empfänger eingetragen. Hier können einzelne Personen oder Personengruppen eingetragen werden. Die Personen müssen in den Stammdaten eine E-Mail Adresse besitzen.

 

3. Nachricht versenden

Um die Nachrichten zu versenden, muss ein CLI Kommando abgesetzt werden. Dazu öffnet man ein Terminalfenster zur i-doit Installation. Hier kann man mit dem Kommando „console.php notification-send“ die Ausgabe starten. Die genaue Beschreibung der Kommandos und der Syntax ist in der Knowledgebase von i-doit beschrieben. Mit aktivieren Debuginfos erhält man folgende Ausgabe:

 

Die Mail hat den gleichen Inhalt wie die Konsolenausgabe:

 

Funktioniert das Kommando, so trägt man es in die cronjob Tabelle ein. Dort definiert man, wie häufig es ausgeführt wird. In meinem Beispiel hatte ich als Datumsfilter „current_date-1“ eingetragen. Das heißt, es werden alle Änderungen des Vortags bis „jetzt“ angezeigt. Wird das Kommando also einmal kurz nach Mitternacht ausgeführt, dann werden alle Änderungen des Vortages ausgegeben.


Weiterführende Informationen:

Benachrichtigungen - Deutsch - Knowledge Base (i-doit.com)
Benachrichtigungen und Eskalationsstufen mit i-doit - i-doit

(c) 2024 SHD System-Haus-Dresden GmbH | Impressum https://www.shd-online.de/impressum/