
Posts
-
RE: Standortansicht der dem Arbeitsplatz zugewiesenen Objekte
Servus @robbyhuebner
Mach ich auch so.
Gebäude --> Etage --> Raum --> Arbeitsplatz --> Clients (das ganze Zeug)
Der logische Standort des Arbeitsplatzes ist der Mitarbeiter bzw. Gruppen.Warum?
Der Arbeitsplatz ändert sich faktisch nie.
Bei einem möglichen Umzug zieht der gesamte Arbeitsplatz mit allem drum und dran in zB. einen anderen Raum um. Zu ändern sind dann nur die Netzwerkanschlüsse, welche bei mir im Raum selbst hinterlegt sind.
Ändert sich der Mitarbeiter, ändert sich nur der logische Standort.Ich sehe bei mir seit Jahren keinen Nachteil, ganz im Gegenteil.
Übersichtlich, logisch und ratz fatz geändert.LG Stefan
-
Recht: Eigene Objekte archivieren + löschen
Hallo,
ich habe ein Problem mit den Berechtigungen, vielleicht kann mir jemand dabei helfen.
Ich möchte, dass eine Benutzergruppe selbst erstellte Objekte archivieren sowie auch löschen darf.
Die Rechte der Gruppe wurden im Bereich CMDB wie folgt gesetzt:Soweit funktioniert alles wie es sein soll, nur nicht das Editieren sowie Archivieren aus der Objektliste heraus.
Sobald das Objekt geöffnet ist, kann ich editieren ... doch wie archivieren?
Bin ich am Holzweg?
Was fehlt denn da?
Ich stehe auf der Leitung.LG Stefan
-
RE: Benachrichtigung als Rundemail?
Hallo,
ich denke schon.
Wenn ich mich täusche, dann so:- Prüfen, ob bei allen Kontakten etc. die die besagten Clients nutzen und auch entsprechend den Clients zugeordnet sind, eine eMail-Adresse hinterlegt ist.
- Einen Report anlegen, der dir die Personen ausgibt, welche auf deren Clients Windows 10 drauf haben.
- Unter Kontakte eine Personengruppe anlegen, welche die Mitglieder nach diesem Report wählt. (Personengruppen Mitglieder nach Report)
- Einen weiteren Report anlegen, welcher die Windows 10 Clients ermittelt.
- Nun über Benachrichtigungen / Reportbasierende Benachrichtigung den Client-Auswahl-Report entsprechend hinterlegen.
- Für die Empfänger die Gruppe hinterlegen.
Testen ...
Es klappt vermutlich auch ohne der Benutzergruppe, direkt nur mit Reports, vielleicht sogar auch nur mit einem Report.
PS: Nicht vergessen, dynamische Gruppen müssen per Cron-Job aktualisiert werden:
sudo -u www-data php /var/www/html/console.php sync-dynamic-groups --user admin --password ******* --tenantId 1LG
Stefan -
RE: API Konstrukt via PHP benutzerdefiniertes Objekt
Guten Morgen @LFischer,
danke für den Input, bei Multi-Value hat es dann geklingelt.
$jsonData = [ 'version' => '2.0', 'method' => 'cmdb.object.create', 'params' => [ 'apikey' => $apiKey, 'type' => 'C__OBJTYPE__SD_LSCHPROTOKOLL', 'title' => $vartitle, 'categories' => [ 'C__CATG__CUSTOM_FIELDS_PI_LSCHPROTOKOLL' => [ [ 'f_popup_c_1675341962187' => $currentDateTime, 'f_popup_c_1675342078466' => [ $datenbereich ], 'f_popup_c_1675342171620' => $loeschverfahren, 'f_popup_c_1675342277156' => [ $varwho ], 'description' => $vardescript ] ] ], ], 'id' => 3 // ID für die Anfrage ];
Ich musste zusätzlich zu deiner Lösung die beiden Multi-Value Felder nochmal in eckige Klammern packen.
Perfekt, danke.Lustig wie oft man im api log über diese Zeile an einem Freitag drüberlesen kann:
"There was an validation error: f_popup_c_1675342277156: (object_browser) Property has to be an array."
So kann der Montag beginnen
LG Stefan
-
API Konstrukt via PHP benutzerdefiniertes Objekt
Hallo,
ich stecke fest und würde am Boden kriechend Hilfe benötigen.
Aus einem PHP-Script wird via API in eine benutzerdefinierte Kategorie sowie eines Benutzerdefinierten Objekts geschrieben.Der Datensatz wird in i-doit erstellt, der Titel wird hinterlegt im Feld Bezeichnung.
Doch der Rest kommt nicht an. Die Variablen, die übergeben werden, sind befüllt.
Ab C__CATG__CUSTOM_FIELDS_PI_LSCHPROTOKOLL ist wohl ein Fehler.Erkennt jemand den Fehler?
$jsonData = [ 'version' => '2.0', 'method' => 'cmdb.object.create', 'params' => [ 'apikey' => $apiKey, 'type' => 'C__OBJTYPE__SD_LSCHPROTOKOLL', 'title' => $vartitle, 'categories' => [ 'C__CATG__CUSTOM_FIELDS_PI_LSCHPROTOKOLL' => [ 'f_popup_c_1675341962187' => $currentDateTime, 'f_popup_c_1675342078466' => $datenbereich, 'f_popup_c_1675342171620' => $loeschverfahren, 'f_popup_c_1675342277156' => $varwho, 'description' => $vardescript ] ], ], 'id' => 3 // ID für die Anfrage ];
Danke
LG Stefan -
eMail-Benachrichtigung: Von ASCII Tabelle zu HTML-Tabelle
Servus,
i-doit V34
ich habe mir gedacht, baue ich doch heute die eMail-Notification so um, dass ein HTML-eMail samt Tabelle generiert wird, anstatt einem Text-Mail mit der ASCII-Tabelle.
Warum? Verschobener Text in Tabelle.Macht aus dem hier:
das da:
Datei:
/var/www/html/src/classes/notification/isys_notification.class.phpZeile 1036:
Alt:
$l_mailer->set_content_type(isys_library_mail::C__CONTENT_TYPE__PLAIN);
Neu:
$l_mailer->set_content_type(isys_library_mail::C__CONTENT_TYPE__HTML);Alt ab Zeile 1151:
/** * Builds a simple plaintext table with header. Columns are left-aligned. * * @param array $p_entities Entities * * @return string * * @todo This is not the right place. Move it to MVC view or something. */ protected function build_plain_table($p_entities) { assert(is_array($p_entities)); $l_table = ''; $l_headers = []; $l_layouted_headers = []; if (count($p_entities) === 0) { return $l_table; } // Layout: $l_horizontal_line = '-'; $l_horizontal_line_header = '='; $l_vertical_line = '|'; $l_edge = '+'; // Analyze entities: $l_column_widths = []; $l_count = 0; // Iterate through each entity: foreach ($p_entities as $l_entity) { // Also analyze header: if ($l_count === 0) { $l_count++; $l_headers = array_keys($l_entity); foreach ($l_headers as $l_header) { $l_layouted_headers[$l_header] = $this->emphasize(self::_l($l_header)); } foreach ($l_headers as $l_header) { $l_column_widths[$l_header] = strlen($l_layouted_headers[$l_header]); } } // Analyse values: foreach ($l_entity as $l_key => $l_value) { $l_value_length = strlen($l_value); if ($l_value_length > $l_column_widths[$l_key]) { $l_column_widths[$l_key] = $l_value_length; } } } $l_horizonatal_header_line_parts = []; $l_horizonatal_line_parts = []; foreach ($l_column_widths as $l_column_width) { $l_horizonatal_header_line_parts[] = $l_horizontal_line_header . str_pad('', $l_column_width, $l_horizontal_line_header) . $l_horizontal_line_header; $l_horizonatal_line_parts[] = $l_horizontal_line . str_pad('', $l_column_width, $l_horizontal_line) . $l_horizontal_line; } $l_complete_horizontal_header_line = $l_edge . implode($l_edge, $l_horizonatal_header_line_parts) . $l_edge; $l_complete_horizontal_line = $l_edge . implode($l_edge, $l_horizonatal_line_parts) . $l_edge; // Prepend header: $l_padded_headers = array_map([ $this, 'table_header' ], $l_layouted_headers, $l_column_widths); $l_table .= $l_complete_horizontal_header_line . "\n" . $l_vertical_line . ' ' . implode(' ' . $l_vertical_line . ' ', $l_padded_headers) . ' ' . $l_vertical_line . "\n" . $l_complete_horizontal_header_line . "\n"; // Iterate through each entity: foreach ($p_entities as $l_entity) { $l_table .= $l_vertical_line; foreach ($l_entity as $l_key => $l_value) { $l_table .= ' ' . str_pad($l_value, $l_column_widths[$l_key]) . ' ' . $l_vertical_line; } $l_table .= "\n" . $l_complete_horizontal_line . "\n"; } $l_table = "<pre style='font-family: Courier, monospace;'>" . htmlentities($l_table) . "</pre>"; return $l_table; }
Neu ab Zeile 1151:
/** * Builds a simple plaintext table with header. Columns are left-aligned. * * @param array $p_entities Entities * * @return string * * @todo This is not the right place. Move it to MVC view or something. */ protected function build_plain_table($p_entities) { assert(is_array($p_entities)); if (count($p_entities) === 0) { return ''; } // Tabellen-Header bestimmen: $l_headers = array_keys($p_entities[0]); // Tabelle als HTML aufbauen: $l_table = '<table style="border-collapse: collapse; font-family: Courier, monospace; width: 100%;">'; // Tabellenkopf: $l_table .= '<tr>'; foreach ($l_headers as $l_header) { $l_table .= '<th style="border: 1px solid black; padding: 5px; text-align: left; background-color: #f0f0f0;">' . htmlentities(self::_l($l_header)) . '</th>'; } $l_table .= '</tr>'; // Tabellenzeilen: foreach ($p_entities as $l_entity) { $l_table .= '<tr>'; foreach ($l_entity as $l_value) { $l_table .= '<td style="border: 1px solid black; padding: 5px; white-space: nowrap;">' . htmlentities($l_value) . '</td>'; } $l_table .= '</tr>'; } $l_table .= '</table>'; return $l_table; }
Vielleicht kann man das gleich in eine nächste Version einbauen?
PLAIN oder HTML ... wenn das wichtig ist zu entscheiden, dann wäre dies über die Verwaltung / Einstellungen interessant ... frage mich nur wofür?LG Stefan
-
Tabelle isys_catg_jdisc_device_information_list
Hellau!
Mir sind Ungereimtheiten bei der Tabelle isys_catg_jdisc_device_information_list aufgefallen.
Der Auslöser war, dass sobald ich zB. bei Server die Spalte Letzter Discovery im Tabellen-Browser hinterlegte, dass doppelte Werte pro Objekt angezeigt wurden. So wurden 2 Zeitangaben als letztes Discovery angezeigt.Ein Blick in die Tabelle isys_catg_jdisc_device_information_list zeigte tatsächich doppelte Einträge anhand der Objekt-ID, welche im Feld isys_catg_jdisc_device_information_list__isys_obj__id hinterlegt wird.
Es waren auch ~100 Datensätze mit Wert NULL in den Feldern:
isys_catg_jdisc_device_information_list__import_date
isys_catg_jdisc_device_information_list__last_seen
isys_catg_jdisc_device_information_list__last_discovered
... zusätzlich zu bereits bestehenden korrekten Datensätzen (selbe Objekt-ID).Kann dies jemand bestätigen?
Ist das ein alter Bug?
Mir ist nicht klar wie das passiert, denn ein eben angelaufener Scan einzelner Objekte, hat das Problem nicht ausgelöst.Ich habe mal eben alle "fehlerhaften" Datensätze aus der Tabelle gelöscht und beobachte das Mysterium weiter.
Kopfkratz
LG
Stefan -
RE: Listenansicht Standardsortierung
Hallo @LFischer,
irgendwie hatte ich das Gefühl, das Thema kommt mir bekannt vor
Alles klar.LG Stefan
-
Listenansicht Standardsortierung
Hallo,
Mir wurde folgende Frage von einem Enduser gestellt:
"Warum kann ich bei Kostenstelle kein Punkterl setzen?"Übersetzt:
"Warum müssen wir ständig manuell nach dem Feld Kostenstelle im Listbrowsing sortieren?
Kann man das nicht so einstellen, sodass beim Aufruf der Liste immer automatisch nach der Spalte Kostenstelle sortiert wird?"An sich eine berechtigte Frage.
Hat mit Performance zu tun, denk ich mir ... wobei ganz verstehe ich es auch nicht.
Die Auswahl der vordefinierten Sortierungsmöglichkeiten ist stark begrenzt im Standard.
Gibt es dazu vielleicht mittlerweile in der Konfig einen Hebel, der diese Einschränkung aufhebt?LG Stefan
-
RE: The search filter date does not work in customfield after upgrade
Hi @inasutin,
maybe a rebuild of the search-index can help you?
we do it every day at 5am ... and all of our search problems are gone.cron-job-entry:
0 5 * * * sudo -u www-data php /var/www/html/console.php search-index --user admin --password XXXXXXXXX --tenantId 1Regards,
Stefan -
RE: Report nach Datum sortieren
Servus @LFischer,
Es ist noch nicht akut bei uns ... ich werde nur so einmal pro Monat "gefragt"
Hauptsache es ist eine Lösung welche im Standard umgesetzt wird.Das Beispiel zeigt, dass eine Sortierung nach dem benutzerdefinierten Attribut "Nächste Überprüfung" (ein Datumsfeld) im Report-Manager nicht möglich ist.
Sobald der Report geöffnet wird, ist mittels Klick auf die Überschrift die Sortierung nach dem genannten Feld möglich.
Gewünscht ist aber, dass die Sortierung nach Datum bereits bei Erstellung des Reports hinterlegt ist.Manchmal sind es die kleinen Dinge, die uns beschäftigen.
LG Stefan
-
RE: Report nach Datum sortieren
Servus @LFischer,
da ich wieder gefragt wurde: Hat sich in diese Richtung schon etwas getan?
Datumsfelder sind in Reports oft entscheidend für die Sortierung.
Da wäre eine Selektion über den Report-Manager (auch für technisch unversierte Anwender) eine erhebliche Erleichterung.Danke
LG Stefan -
Wartung/Revision von Geräten und Anlagen
Hallo die Runde,
Wartungen sind ein großes Thema in der IT bzw. angrenzenden Abteilungen.
Neben dem traditionellen IT-Equipment wie Server, Clients, Drucker etc. gibt es ja auch noch Gerätschaften im Bereich Klima, USV, Überwachung, PV, Elektroinstallationen an sich, Brandschutz, Schrankenanlagen, ... die unter wiederkehrender Wartung/Revision stehen.Das Terminmanagement, automatische Wiedervorlage etc. ist ja nur die eine Sache. Abweichungen, Berichte, Wartungsbücher, Zertifikate, involvierte Personen, ... usw. stehen dabei an der Tagesordnung.
An sich wäre alles mit i-doit lösbar.
Das Wartungs-AddOn ist in der aktuellen Form dafür eher nicht zu gebrauchen.Setzt ihr dafür eine eigene Software ein?
Habt ihr euch dazu selbst etwas in i-doit gebastelt?Mit dem FlowAddOn sollte an sich die nötige Funktionalität gegeben sein.
Sehen das Nutzer von Wartungstools anders?LG Stefan
-
RE: PhP Error bei Dokumentenerstellung
Servus @sihadmin,
ich kann dir wegen dem Download nicht weiterhelfen, ... allerdings würde es mich interessieren, was dich bei diesen alten Versionen hält?
Die vielen Neuerungen bis hin zur aktuellen Version von i-doit und dem Dokumente-AddOn sind sehr weitreichend und überaus nützlich - bei uns nicht mehr wegzudenken.LG Stefan
-
RE: Fehlermeldung beim aufrufen der CMDB: No space left on device
@C.Geist
die Frage ist, ob zu diesem Zeitpunkt denn auch der dafür vorgesehene Platz frei war, es keine Dateibeschädigungen gibt, das Volume als solches OK ist, andere Prozesse zufällig auch schreiben wollen, es aber nicht können ...
Es muss ja einen Grund dafür geben. Das Sys-Log sollte dabei an sich weiterhelfen ... bzw. weiterführende Logs.Sagen wir mal so, meine debian Server, die WEB-Services zur Verfügung stellen, sehen alle gleich aus:
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf ... /dev/sda2 124G 25G 93G 22% / ...
Somit auch das System, auf dem i-doit läuft.
Das ist in meinen Augen eine sehr gute Ausgangsposition.
Natürlich kann man das anders sehen und das Volume kleiner halten ... doch unter 85GB gab es in meinen Umgebungen, die ich den letzten ... hmmmm sagen wir 10 Jahren betreute, keine Produktivsysteme - seit 2022 sind es im Standard bei mir 128GB (verteilt auf die bei der Einrichtung von Debian empfohlenen Partitionsgrößen).
Ja, das ist jetzt IT-Philosophie, klarer Fall, ist einfach meine Meinung und fahre damit perfekto.LG Stefan
-
RE: Fehlermeldung beim aufrufen der CMDB: No space left on device
Servus @C.Geist
Wenn es kein dynamisches Volume ist:
- Sag dem Admin er soll nicht so knausrig sein.
- Läuft die dB-Instanz auf der selben VM wie die App?
Wenn /dev/sda1 das Volume ist, auf dem das OS und i-doit samt dB läuft (aber auch ohne dB), dann ist das nicht gut - dass das Volume vollläuft, liegt auf der Hand. Aus Erfahrung kann ich erhobenen Hauptes sagen, da sind Probleme vorprogrammiert.
zB. würde bei mir schon durch das tägliche Backup das Volume bei dem geringen freien Platz vollaufen.
LG Stefan
- Sag dem Admin er soll nicht so knausrig sein.