OTRS: Liste von „nicht vorhandenen“ UserPreferences

OTRS Frage: Wie finde ich User, die einen bestimmten Eintrag in den Userpreferences nicht haben.

In OTRS werden in der Tabelle „users“ nur die wichtigsten Felder gespeichert, alles andere kommt in die Tabelle „user_preferences“ mit dem Schema: user_id, preferences_key, preferences_value

Im übrigen fehlt hier ein UNIQUE-Key für user_id und preferences_key, was bei uns tatsächlich bereits zu doppelten Einträgen geführt hat.

Nun also zur Aufgabe „Liste alle User, denen ein bestimmter Eintrag fehlt, z.B. „UserComment“

An und für sich hätten wir uns gedacht – Einfache Antwort: LEFT JOIN

 

Achtung falsch:

SELECT id, login, first_name, last_name, preferences_key, preferences_value FROM users
 LEFT JOIN user_preferences
  ON users.id = user_preferences.user_id
  WHERE preferences_key = „UserComment“
   AND (preferences_value = “ OR preferences_value IS NULL)
 ORDER BY preferences_value ASC

Also liste ALLE Einträge der Tabelle User auf und sofern vorhanden die Einträge der Tabelle  preferences_key die entweder NULL (noch nie berührt) oder „“ (bereits mal gespeichert, aber Eintrag wieder gelöscht.)

(Prüfung auf Einträge mit nur Leerezeichn haben wir hier vernachlässigt)

Das ist aber falsch, denn hier sind nur die User enthalten, die zumindest einen Eintrag auf der rechten Seite des Joins haben, also nicht das erwartet LEFT JOIN Ergebnis…

idloginfirst:namelast_namepreferences_keypreferences_value 
1user01FranzWeißUserComment[BLOB – 0 B]
5user05KarlSchusterUserComment[BLOB – 0 B]
6user06GeraldLamplUserComment[BLOB – 0 B]

 Da es auf der rechten Seite des JOINs für alle User IDs zumindest ein Ergebnis (mit einem anderen preference_key wie e-mail) gibt kommt es hier schon mal zu keinen NULL-Datensätzen auf der rechten Seite und das WHERE listet dann entsprechend nur noch Zeilen mit „“ – die also bereits zumindes mal einen Wer gespeicher hatten der aber wieder gelöscht wurde.

Nun die richtige Version:

SELECT id, login, first_name, last_name, preferences_key, preferences_value FROM users
 LEFT JOIN (SELECT * FROM user_preferences WHERE preferences_key=’UserComment‘) as pk
  ON users.id = pk.user_id
WHERE preferences_value = “ OR preferences_value IS NULL

 

Die rechte Seite wird damit also erst mal zu einer neuen Tabelle gemacht, in der es keine anderen Einträge als ‚UserComment‘ gibt und erst diese Tabelle wird mit dem LEFT JOIN verbunden.

Hier sieht man nun auch die Einträge, die den preferences_key gar nicht enthalten haben – so haben wir uns das vom LEFT JOIN auch erwartet…

idloginfirst:namelast_namepreferences_keypreferences_value 
1user01AdminOTRSNULLNULL
2user02FranzWeißUserComment[BLOB – 0 B]
3user03RobertPufferNULLNULL
4user04ThorstenPußwaldNULLNULL
5user05KarlSchusterUserComment[BLOB – 0 B]
6user06GeraldLamplUserComment[BLOB – 0 B]

Der Eintrag [BLOB – 0 B] kommt übigens aus dem phpMyAdmin und bedeutet einen leeren String im Falle einer Felddefinition BLOB…

Microsoft Access funktioniert nicht mehr

Meldung „Microsoft Access funktioniert nicht mehr“

Eine ungute Sache: Nachdem man tagelang problemlos mit einer Access-Datei gearbeitet hat, kommt beim Versuch diese zu starten plötzlich die Meldung:

„Microsoft Access funktioniert nicht mehr“

Microsoft Access funktioniert nicht mehr

 

 

In den Problemdetails findet man dann noch:

Problemsignatur:
  Problemereignisname:    APPCRASH
  Anwendungsname:    MSACCESS.EXE
  Anwendungsversion:    14.0.6024.1000
  Anwendungszeitstempel:    4d83e4fc
  Fehlermodulname:    VBE7.DLL
  Fehlermodulversion:    7.0.16.19
  Fehlermodulzeitstempel:    4d430aec
  Ausnahmecode:    c0000005
  Ausnahmeoffset:    00023081
  Betriebsystemversion:    6.1.7601.2.1.0.16.7
  Gebietsschema-ID:    1031

Zusatzinformationen zum Problem:
  LCID:    1031
  skulcid:    1031

Lesen Sie unsere Datenschutzbestimmungen online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0407

Wenn die Onlinedatenschutzbestimmungen nicht verfügbar sind, lesen Sie unsere Datenschutzbestimmungen offline:
  C:Windowssystem32de-DEerofflps.txt

 

Lösung:

Access 2010  (Access 2007)

Wir konnten das Problem mit einem früher schon mal beschriebenen Problem in Verbindung bringen – wie dort ist die Lösung auch hier der „decompile“ Parameter:

„C:Program Files (x86)Microsoft OfficeOffice14MSACCESS.EXE“ /decompile
danach einfach über „Datei öffnen“ die korrupte Datei öffnen
oder:
„C:Program Files (x86)Microsoft OfficeOffice14MSACCESS.EXE“ /decompile Pfad/und/Name/der/datei.mdb

 

Tags: „Microsoft Access“, „Access 2003“, „Access 2007“, „Access 2010“, „Access APPCRASH“, „Microsoft Access funktioniert nicht mehr“

 

In Windows ungültige Geräte löschen

Nicht angeschlossene, ausgebaute oder defekte Geräte können unter Windows oft zu Konflikten oder eigenartigem Verhalten führen. Derartige Geräte werden aber im Regelfall nicht angezeigt. Somit ist das deinstallieren dieser „alten“ Geräte nicht so einfach.

Wie kann man nun solche Geräte oder viel mehr deren Treiber und Einstellungen los werden?

Das geht prinzipiell mit dem Gerätemanager, den muß man aber mit einem speziellen Trick aufrufen um die verstecken Geräte zu sehen!

Gehen Sie am Besten wie folgt vor:

  • Eingebeaufforderung „cmd“ öffnen
  • auf der Kommandozeile folgendes eingeben:
      set DEVMGR_SHOW_NONPRESENT_DEVICES=1
      devmgmt.msc
  • es öffnet sich nun der Gerätemanager
  • klicken Sie im Menü auf „Ansicht“ und dann auf „Ausgeblendete Geräte anzeigen“
  • es werden nun alle Geräte angezeigt, Sie können das betreffende Gerät ganz normal deinstallieren

ACHTUNG: Es werden möglicherweise nun einige Geräte angezeigt die das System aber braucht & aus Sicherheitsgründen verborgen hat! Stellen Sie sicher wirklich NUR das Gerät zu deinstallieren das Sie nicht mehr benötigen! graz4u kann keine Haftung oder Verantwortung übernehmen wenn Sie falsche oder zu viele Geräte deinstallieren!

Fehlermeldung nach der Installation von JSN UniForm

Beim beliebten Joomla Formular Manager „JSN UniForm“ gibt es anscheinend immer wieder das selbe Problem bei der Installation. Obwohl die Installation vorerst erfolgreich ist kommt am Ende die Meldung:

Fatal error: Class ‚JSNConfigModel‘ not found in …./administrator/components/com_uniform/libraries/joomlashine/installer/

Mit „F5“ kommt man zwar wieder normal weiter, aber jeder Versuch im Backend die neue Komponente aufzurufen scheitert mit der selben Fehlermeldung.

Als Abhilfe schreibt der Programmierer hier das man den Browsercache löschen sollte – was aber wenig logisch erscheint und bei uns auch nicht geholfen hat – wir haben es auch mit mehreren „frischen“ Browsern versucht.

Auch das Löschen des Cache von Joomla hat nichts gebracht.

Die endgültige Lösung in unserem Fall:

Apache restart (!!)

Da der Restart des Apache nicht für jeden User so einfach machbar ist, kann es sich u.U. auch lohnen einfach ein paar Stunden zu warten – bis der Cache des Apache erneuert wurde…

 

Joomla Upgrade 3.2.3 setzt „0“ hinter das Suchfeld

Frage: Seit dem letzten Upgrade auf Joomla 3.2.3 steht hinter dem Suchfeld eine Null (0) die ich nicht mehr wegbekomme…

Das liegt an folgender Zeile in mod_search.php:

$button = $params->get(‚button‘, ‚0‘);

Die Antwort haben wir hier gefunden – allerdings hat das nicht ganz funktioniert, denn wenn die Variable wie im Beitrag beschrieben einfach ausgeblendet wird, bekommen wir möglicherweise eine Fehlermeldung:

Notice: Undefined variable: button in …./plugins/system/t3/base/html/mod_search/default.php on line 17
Notice: Undefined variable: button in …./plugins/system/t3/base/html/mod_search/default.php on line 37

Wenn diese sogar nicht am Bildschirm erscheint, müllt sie in jedem Fall das Logfile bei jedem Seitenaufruf zu…

Die richtige Lösung ist in diesem Fall:

cd mod_search
editiere die Datei …/modules/mod_search/mod_search.php

Zeile 28 kopieren, auskommtieren und wie folgt ändern:

//$button         = $params->get(‚button‘, 0);
$button         = “;

Dadurch ist die Variable nicht undefiniert. Der Versuch die Zeile auf $params->get(‚button‘, ‚0‘); oder $params->get(‚button‘, “); zu ändern hat nichts gebracht.

Achtung: da dieses Verhalten von einigen Usern bereits in der Version 3.2.1 beschrieben wurde und bei uns erst mit 3.2.3 aufgetaucht ist, scheint es eine andere Abhängigkeit zu geben – daher ist dieser Hack bei den betroffenen Installationen eventuell auch bei späteren Upgrades wieder zu machen…

 

Citrix Receiver: self-signed SSL vertrauen unter Linux

Will man unter Linux den Citrix Receiver mit einem selbst ausgestellten SSL Zertifikat verwenden scheitert man meistens mit einer dieser Fehlermeldungen:

  • Linux Client Error: The security certificate could not be validated. SSL provider code: 20, SSL error 86
  • Linux Client Error: The security certificate could not be validated.
  • The security certificate “<Zertifikats-Name>” could not be validated. SSL provider code: 20, SSL error 86

Das liegt daran, dass der Receiver das Root-CA nicht in seinem Speicher hat.

Um nun dieses Zertifikat hinzuzufügen, oder anders gesagt ihm zu vertrauen, muss es einfach mit einem Browser heruntergeladen werden und dann in den ca-store kopiert werden. Dazu geht man vor wie folgt:

  • die entsprechende SSL ctx Seite aufrufen, zBsp: https://ctx.meine-firma.at/
  • der Browser zeit nun dieses Zertifikat als nicht vertrauenswürdig in der Adresszeile an
  • Klicken Sie auf das Schloss-Symbol im Dialog dann auf „Mehr Informationen“
  • Es sollte sich je nach Browser nun der SSL Informations Dialog öffnen, wenn nicht gibt es einen Button wie „Zertifikat anzeigen“ oder ähnliches
  • Im SSL Zertifikatsdialog wählen sie den zweiten Reiter „Details“, dort werden alle aktiven Zertifikate für diese Verbindung angezeigt
  • Wählen Sie das oberste Zertifikat aus, das sollte die CA sein, das brauchen wir. Das zweite ist das Zertifikat selbst, das ist nicht wichtig.
  • Klicken Sie nun bei der CA auf „Exportieren“
  • Speichern sie es lokal ab. Extention sollte sein .pem
  • Wenn Sie mehrere sehen und sich nicht sicher sind, können Sie auch einfach alle exporieren.
  • kopieren Sie als Root die Zertifikate in den ICA-Keystore.
    Normalerweise ist der unter: /opt/Citrix/ICAClient/keystore/cacerts/     (Wobei /opt/Citrix/ICAClient/  die ICARoot ist)
  • Nun sollte der Citrix Receiver sich nicht mehr beklagen und die Session ganz normal starten.
otrs 3 x menuepunkte01

OTRS wie kann ich einen Menüpunkt ausblenden

In einer Anfrage sollte konkret der Menüpunkt „Ansicht nach Eskalationen“ ausgeblendet/deaktiviert werden. Zusätzlich soll dabei auch das „!“ (Rufzeichen) in der Symbolleiste ausgeblendet werden, das zum gleichen Screen führt.

Lösung:

Admin / Sysconfig
 Konfigurationseinstellungen bearbeiten in Ticket -> Frontend::Agent::ModuleRegistration
   deaktivieren Sie „Frontend::Module###AgentTicketEscalationView“

 

otrs 3 x menuepunkte01

Deaktivieren SIe hier den Menüpunkt für Eskalation.

In diesem Screenshot kann man auch gut erkennen, dass man den Menüpunkt verschiedenen Gruppen exclusiv zur Verfügung stellen kann, sofern er nur für bestimmte User ausgeblendet werden soll.

otrs 3 x menuepunkte02

Ansicht nach der Umstellung: (Nun fehlt sowohl das Rufzeichen, als auch der Menüpunkt „Ansicht nach Eskalationen“)

otrs 3 x menuepunkte03

 

 

NetApp OpLogs deaktivieren

Frage(n):

  • Wir haben auf unserer Netapp Geschwindikeitsprobleme mit Microsoft Access, alles andere läuft super, aber die Datenbanken sind plötzlich langsamer als am alten Storage.
  • Wir haben Probleme mit Outlook .PST Dateien. Plötzlich kommt im Oulook die Fehlermeldung dass diese kapput sind und nicht mehr aus diesen Dateien gelesen werden kann.

Antwort

In beiden Fällen könnte die Standardeinstellung „cifs.oplocks“ verantwortlich sein, die auf der NetApp im Standard auf „on“ steht. (Oportunistic File Locks)

Um diese Probleme zu lösen, sind die OpLogs also auf „OFF“ zu setzten.

Laut NetApp handelt es sich dabei um eine Funktion die für den ReadCache und somit für die Geschwindigkeit des Zugriffs auf das Dateisystem maßgeblich ist und somit nur in Sonderfällen deaktiviert werden soll, laut Aussage eines NetApp-Mitarbeiters ist es jedoch völlig unbedenklich diese Funktion zu deaktivieren – wir haben dies bei einer NetApp mit 150 Usern getestet und bisher überhaupt keinen Unterschied bzw. keinen Nachteil festgestellt.

In der NetApp-Dokumentation wird weiters hingewiesen, dass die OpLogs für die ganze Maschine aktiviert, aber für verschiedene QTrees deaktiviert werden können – laut der Aussage des uns bekannten NetApp-Technikers funktioniert das aber in der Realität nicht – es mache nur Sinn, die Oplogs für die gesamte Maschine auszuschalten.
Diesen Punkt können wir hier nicht weiter kommentieren, bei unseren Tests haben wir dem NetApp-Mitarbeiter vertraut und die OpLogs für die ganze Maschine abgedreht.
Wenn Sie dieses Problem ebenfalls haben, können Sie ja die betroffenen Daten trotzdem auf ein eigenes Volume mit QTree legen und es dort testen.

Sucht man im Netz nach dem Befehl für das aktivierung und deaktivieren der OpLogs, so findet man viele Seiten auf denen der Befehl wie folgt dargestellt wird:

cifs.oplocks.enable on
cifs.oplocks.enable off

Dieser Befehl wird jedoch quittiert mit:

cifs.oplocks.enable not found.  Type '?' for a list of commands

der richtige Befehl lautet jedoch:

options cifs.oplocks.enable on
options cifs.oplocks.enable off

bzw. um den Status generell abzufragen

options cifs.show

Danach müssen übrigen die Cifs-Verbinungen durchgestartet werden. Wie in unserem Beispiel empfiehlt es sich, diese Operation in der Nacht durchzuführen, weil dabei alle Shares kurzzeitig offline gehen:

cifs terminate Total number of connected CIFS users: 44      Total number of open CIFS files: 94 Warning: Terminating CIFS service while files are open may cause data loss!! Enter the number of minutes to wait before disconnecting [5]: 0  CIFS local server is shutting down... waiting 119 seconds more Sun Sep 15 23:48:17 CEST [NAXXXXX:cifs.terminationNotice:warning]: CIFS: shutting down: CIFS terminating with 94 open files from 43 CIFS users.  CIFS local server has shut down... NAXXXXX> cifs restart CIFS local server is running. Can't set cifs branchcache server secret. NAXXXXX> cifs restart CIFS is already running. 

Bezüglich der kaputten .PSD-Files sei noch gesagt, dass Microsoft generell schon immer gesagt hat, dass .PST-Files auf Netzwerkshares nichts verloren haben (siehe dazu auch diesen Beitrag in einem NetApp-Forum) – in der Realität machen es sie User aber immer wieder und mir ist in den letzten 10 Jahren noch kein anderer Fall persönlich bekannt in dem zuvor ein .PST-File auf einem Netzwerkshare plötzlich kaputt geworden wäre, bis zur Einführung der NetApp bei unserem Kunden wo dass dann bis zu beschriebenen Behebung plötzlich sehr massiv der Fall war!

otrs_3_2_QuickClose_01

OTRS AddOn AutoClose

Vor kurzem haben wir ein besonders nettes wie kleines Addon auf Opar gefunden, welches wir Euch nicht vorenthalten wollen: „QuickClose

Mit diesem kleinen Nützling wird es möglich, bestimmte Ticktes nach frei konfigurierbaren Templates mit einem Klick zu schließen.

otrs_3_2_QuickClose_01

graz4u-HostingKunden ab OTRS-Komfort die dieses AddOn insteressiert, brauchen sich für die kostenlose Installation bitte nur kurz bei uns zu melden, für alle anderen sei hier Funktionsweise und Konfiguration für die Selbstinstalltion kurz erklärt…

Auch in der Queue-Ansicht kann QuickClose wie eine SammelAktion angewant werden.

otrs_3_2_QuickClose_02

Nach der Installation über die Paketverwaltung erhält man einen neuen Menüpunkt „QuickClose“ in der Systemverwaltung, über den man verschiedenste Templates für das schnelle Schließen der OTRS-Tickets verwalten kann.

otrs_3_2_QuickClose_03

Liste der verwalteten Schließungsgründe:

otrs_3_2_QuickClose_04

Im Template für den Schließgrund können umfassende Optionen gewählt werden:

otrs_3_2_QuickClose_05

Im Screenshot sieht man noch, dass die Funktion „Queue“ im Standard ausgegraut und somit nicht wählbar ist, dies kann man in der Sysconfig ändern:

Um das automatische Verschieben in Queues zu aktivieren, sucht man in der SysConfig nach „QuickClose“ und klickt dann auf Zeile „Core“

Hier steht die Option „QuickClose::QueueMove“ zur Verfügung, die mit „Ja“ aktiviert wird.

Dadurch kann man sich z.B. unter anderem sehr einfach ein Template „Close to Junk“ anlegen, dass eingegangene Spam-Mails mit einem Klick in den Spamordner verschiebt und gleichzeitig schließt.

otrs_3_2_QuickClose_06

Typische tägliche Aufgaben wie z.B. die Überprüfung von Sicherungsticktes (Backup) oder auch das nochmalige Schließe der vielen Antworten mit dem Inhalt „Danke“ nach der erfolgreichen Lösung eines Ticktes kann man mit dieser Funktion nun besonders schnell abhandeln.

Danke an den Autor Renée Bäcker!

VMWare Fehlermeldung beim Bereitstellen einer Maschine aus einem Template

Beim Versuch einen neuen Host auf einem VMWare Server aus einem Template zu erzeugen kommt nach einigen Sekunden die Fehlermeldung:

Virtuelle Maschine klonen
Template-2k8-r2
Ein allgemeiner Systemfehler ist
aufgetreten: Failed to write to
C:\ProgramData\VMware\VMware
VirtualCenter\journal\1374140360.5:
Error writing file. Unknown error 112
(0x70).
Snapshot einer virtuellen Maschine wird erstellt
xxxxxxxx\Administrator
vmgr60.xxxxxxxx.com
18.07.2013 11:39:20
18.07.2013 11:39:20
18.07.2013 11:39:2

Die Suche am lokalen Rechner auf dem der WebShere Client ausgeführt wird, bringt vorerst nichts – aber in der Fehlermeldung wird ja ohnehin auf den Maschinennamen hingewiesen: vmgr60.xxxxxxxx.com

Das ist in unserem Fall der VCenterServer – und siehe da – dessen lokale C-Platte ist einfach vollgelaufen!!

Also, per Konsole in den VCenter-Sever vmgr60 einloggen, auf C:\ Platz machen und weiter geht’s!