Gesperrte Tickets von ungültigen Benutzern schließen

Allgemein Fragen, deutsche News, Ankündigungen & Events zum OTRS
Post Reply
nscblauensteiner
Znuny newbie
Posts: 28
Joined: 15 Apr 2019, 09:34
Znuny Version: 6.0.44
Real Name: Lukas B.

Gesperrte Tickets von ungültigen Benutzern schließen

Post by nscblauensteiner »

Hallo liebe Community,

ist es möglich alle gesperrten Tickets von ungültigen Agents zu schließen/löschen?

MfG und Danke
shawnbeasley
Znuny Employee
Posts: 132
Joined: 13 Sep 2021, 09:38
Znuny Version: Znuny 6.3.x
Real Name: Shawn Beasley
Company: Znuny

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by shawnbeasley »

Es gibt kein "simple" Losung dafür.

Am einfachsten lässt dies per SQL lösen. Es soll aber den Cache danach gelöscht werden.

Test und LIMIT entfernen wenn es geklappt hat:

#Get a list
#SELECT t.tn,t.ticket_state_id FROM ticket as t LEFT JOIN users as u on u.id=t.user_id WHERE u.valid_id=2 LIMIT 1;
#Unlock
#UPDATE ticket as t LEFT JOIN users as u on u.id=t.user_id SET t.ticket_lock_id=1 WHERE u.valid_id=2 LIMIT 1;
#Close
#UPDATE ticket as t LEFT JOIN users as u on u.id=t.user_id SET t.ticket_state_id = 2 WHERE u.valid_id=2 LIMIT 1;
#Check
#SELECT t.tn,t.ticket_state_id FROM ticket as t LEFT JOIN users as u on u.id=t.user_id WHERE u.valid_id=2 LIMIT 1;

bin/otrs.Console.pl Maint::Cache::Delete --type Ticket

Oder alle Agenten kurz wieder mal aktivieren, und ein GA dafür benutzen.
schulmann
Znuny wizard
Posts: 470
Joined: 20 Nov 2011, 16:08
Znuny Version: 6.5.4
Real Name: Schulmann

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by schulmann »

nscblauensteiner wrote: 08 Apr 2022, 10:37 ist es möglich alle gesperrten Tickets von ungültigen Agents zu schließen/löschen?
Hallo,

mein Vorgehen ist (Entsperren von Tickets ungültiger Agenten):
  • Mit einem SQL-Kommando die Tickets suchen
  • Die Kommandos für das Entsperren ausgeben (incl. Ticket-Nummern und Besitzern)
Mit einer Postgres-DB geht das so:

Code: Select all

psql -c 'select ticket.id,ticket.tn,users.login FROM ticket JOIN users on ticket.user_id = users.id WHERE ticket.ticket_lock_id = 2 AND users.valid_id != 1;' -d otrs -t otrs|sed -e 's/^ *//'|grep '^[0-9]'|sed -e 's/|/#/;s/ |//;s+^+bin/otrs.Console.pl Maint::Ticket::UnlockTicket +'
CD
Znuny6/Debian/ESXi
nscblauensteiner
Znuny newbie
Posts: 28
Joined: 15 Apr 2019, 09:34
Znuny Version: 6.0.44
Real Name: Lukas B.

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by nscblauensteiner »

Hallo und danke für die rasche Rückmeldung,
shawnbeasley wrote: 11 Apr 2022, 16:16 #SELECT t.tn,t.ticket_state_id FROM ticket as t LEFT JOIN users as u on u.id=t.user_id WHERE u.valid_id=2 LIMIT 1;
Dieser Befehl

Code: Select all

SELECT t.tn,t.ticket_state_id FROM ticket as t LEFT JOIN users as u on u.id=t.user_id WHERE u.valid_id=2;
zeigt ohne Limit deutlich mehr Ergebnisse, als die Ausgabe an gesperrten Tickets in der "Supportdaten-Analyse":

Ungültige Benutzer mit gesperrten Tickets (35)
Es existierten ungültige Benutzer mit gesperrten Tickets.


Was mache ich falsch?
Last edited by nscblauensteiner on 12 Apr 2022, 09:28, edited 1 time in total.
nscblauensteiner
Znuny newbie
Posts: 28
Joined: 15 Apr 2019, 09:34
Znuny Version: 6.0.44
Real Name: Lukas B.

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by nscblauensteiner »

schulmann wrote: 12 Apr 2022, 06:36
nscblauensteiner wrote: 08 Apr 2022, 10:37 ist es möglich alle gesperrten Tickets von ungültigen Agents zu schließen/löschen?
Hallo,

mein Vorgehen ist (Entsperren von Tickets ungültiger Agenten):
  • Mit einem SQL-Kommando die Tickets suchen
  • Die Kommandos für das Entsperren ausgeben (incl. Ticket-Nummern und Besitzern)
Mit einer Postgres-DB geht das so:

Code: Select all

psql -c 'select ticket.id,ticket.tn,users.login FROM ticket JOIN users on ticket.user_id = users.id WHERE ticket.ticket_lock_id = 2 AND users.valid_id != 1;' -d otrs -t otrs|sed -e 's/^ *//'|grep '^[0-9]'|sed -e 's/|/#/;s/ |//;s+^+bin/otrs.Console.pl Maint::Ticket::UnlockTicket +'
CD
Vielen Dank für die Rückmeldung, ich habe eine MySQL Datenbank im Einsatz.
shawnbeasley
Znuny Employee
Posts: 132
Joined: 13 Sep 2021, 09:38
Znuny Version: Znuny 6.3.x
Real Name: Shawn Beasley
Company: Znuny

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by shawnbeasley »

nscblauensteiner wrote: 12 Apr 2022, 09:25 Dieser Befehl

Code: Select all

SELECT t.tn,t.ticket_state_id FROM ticket as t LEFT JOIN users as u on u.id=t.user_id WHERE u.valid_id=2;
zeigt ohne Limit deutlich mehr Ergebnisse, als die Ausgabe an gesperrten Tickets in der "Supportdaten-Analyse":
Nichts unbedingt. Du kannst auch erst mal einfach ein weitere JOIN dazunehmen und schauen welcher Nutzer als Owner im Tickets gesetzt sind. Es gibt ein Konsole command

bin/otrs.Console.pl Maint::Ticket::InvalidUserCleanup

Das ist zwar nicht geschlossen, aber besser als ein Fehler in der DB zu machen.
nscblauensteiner
Znuny newbie
Posts: 28
Joined: 15 Apr 2019, 09:34
Znuny Version: 6.0.44
Real Name: Lukas B.

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by nscblauensteiner »

Ja, dieses Kommando zeigt mir die ungültigen User, nicht aber die gesperrten Tickets dieser ungültigen User.

Code: Select all

Starting invalid user cleanup...
  Lock Cleanup for 72 users starting...
  Done (unlocked 0 and changed state of 0 tickets).
  Flag Cleanup for 72 users starting...
nscblauensteiner
Znuny newbie
Posts: 28
Joined: 15 Apr 2019, 09:34
Znuny Version: 6.0.44
Real Name: Lukas B.

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by nscblauensteiner »

shawnbeasley wrote: 12 Apr 2022, 09:49 Nichts unbedingt. Du kannst auch erst mal einfach ein weitere JOIN dazunehmen und schauen welcher Nutzer als Owner im Tickets gesetzt sind.
Wie meinst du das?
shawnbeasley
Znuny Employee
Posts: 132
Joined: 13 Sep 2021, 09:38
Znuny Version: Znuny 6.3.x
Real Name: Shawn Beasley
Company: Znuny

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by shawnbeasley »

Code: Select all

Starting invalid user cleanup...
  Lock Cleanup for 72 users starting...
  Done (unlocked 0 and changed state of 0 tickets).
  Flag Cleanup for 72 users starting...
Schein als ob kein tickets auf Ungültigen Benutzer gesperrt sind.

Ich würde so vorgehen:

Identifiziere im SQL mein ungültigen Nutzer.

Code: Select all

SELECT id FROM users WHERE valid_id = 2
Identifizier welche gesperrte Tickets dieser haben

Code: Select all

SELECT tn, user_id, ticket_lock_id, ticket_state_id  FROM ticket WHERE user_id in (SELECT id FROM users WHERE valid_id = 2);
+--------------------+---------+----------------+-----------------+
| tn                 | user_id | ticket_lock_id | ticket_state_id |
+--------------------+---------+----------------+-----------------+
| 2021012710123456   |       3 |              1 |               1 |
| 202203281849000018 |       3 |              1 |               1 |
| 202203281849000027 |       3 |              1 |               4 |
| 202203281849000036 |       3 |              1 |               1 |
| 202203281849000045 |       3 |              1 |               1 |
| 202203281849000054 |       3 |              1 |               1 |
| 202203281849000063 |       3 |              1 |               4 |
| 202203301849000013 |       3 |              1 |               1 |
| 202203301849000022 |       3 |              1 |               1 |
+--------------------+---------+----------------+-----------------+
9 rows in set (0.00 sec)

Identify the lock_type and state_id zu setzen

Code: Select all

mysql> SELECT * FROM ticket_lock_type;
+----+----------+----------+---------------------+-----------+---------------------+-----------+
| id | name     | valid_id | create_time         | create_by | change_time         | change_by |
+----+----------+----------+---------------------+-----------+---------------------+-----------+
|  1 | unlock   |        1 | 2022-03-24 09:04:56 |         1 | 2022-03-24 09:04:56 |         1 |
|  2 | lock     |        1 | 2022-03-24 09:04:56 |         1 | 2022-03-24 09:04:56 |         1 |
|  3 | tmp_lock |        1 | 2022-03-24 09:04:56 |         1 | 2022-03-24 09:04:56 |         1 |
+----+----------+----------+---------------------+-----------+---------------------+-----------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM ticket_state;
+----+---------------------+----------------------------------------+---------+----------+---------------------+-----------+---------------------+-----------+
| id | name                | comments                               | type_id | valid_id | create_time         | create_by | change_time         | change_by |
+----+---------------------+----------------------------------------+---------+----------+---------------------+-----------+---------------------+-----------+
|  1 | new                 | New ticket created by customer.        |       1 |        1 | 2022-03-24 09:04:55 |         1 | 2022-03-24 09:04:55 |         1 |
|  2 | closed successful   | Ticket is closed successful.           |       3 |        1 | 2022-03-24 09:04:55 |         1 | 2022-03-24 09:04:55 |         1 |
|  3 | closed unsuccessful | Ticket is closed unsuccessful.         |       3 |        1 | 2022-03-24 09:04:55 |         1 | 2022-03-24 09:04:55 |         1 |
|  4 | open                | Open tickets.                          |       2 |        1 | 2022-03-24 09:04:55 |         1 | 2022-03-24 09:04:55 |         1 |
|  5 | removed             | Customer removed ticket.               |       6 |        1 | 2022-03-24 09:04:55 |         1 | 2022-03-24 09:04:55 |         1 |
|  6 | pending reminder    | Ticket is pending for agent reminder.  |       4 |        1 | 2022-03-24 09:04:55 |         1 | 2022-03-24 09:04:55 |         1 |
|  7 | pending auto close+ | Ticket is pending for automatic close. |       5 |        1 | 2022-03-24 09:04:55 |         1 | 2022-03-24 09:04:55 |         1 |
|  8 | pending auto close- | Ticket is pending for automatic close. |       5 |        1 | 2022-03-24 09:04:56 |         1 | 2022-03-24 09:04:56 |         1 |
|  9 | merged              | State for merged tickets.              |       7 |        1 | 2022-03-24 09:04:56 |         1 | 2022-03-24 09:04:56 |         1 |
+----+---------------------+----------------------------------------+---------+----------+---------------------+-----------+---------------------+-----------+
9 rows in set (0.00 sec)
Dann würde ich die Ticket Tabelle enstrprechend updaten.

Code: Select all

mysql> UPDATE ticket SET ticket_state_id = 2 WHERE user_id in (SELECT id FROM users WHERE valid_id = 2);
Query OK, 9 rows affected (0.07 sec)
Rows matched: 9  Changed: 9  Warnings: 0

mysql> UPDATE ticket SET ticket_lock_id = 1 WHERE user_id in (SELECT id FROM users WHERE valid_id = 2);
Query OK, 0 rows affected (0.03 sec)
Rows matched: 9  Changed: 0  Warnings: 0

mysql> SELECT tn, user_id, ticket_lock_id, ticket_state_id  FROM ticket WHERE user_id in (SELECT id FROM users WHERE valid_id = 2);
+--------------------+---------+----------------+-----------------+
| tn                 | user_id | ticket_lock_id | ticket_state_id |
+--------------------+---------+----------------+-----------------+
| 2021012710123456   |       3 |              1 |               2 |
| 202203281849000018 |       3 |              1 |               2 |
| 202203281849000027 |       3 |              1 |               2 |
| 202203281849000036 |       3 |              1 |               2 |
| 202203281849000045 |       3 |              1 |               2 |
| 202203281849000054 |       3 |              1 |               2 |
| 202203281849000063 |       3 |              1 |               2 |
| 202203301849000013 |       3 |              1 |               2 |
| 202203301849000022 |       3 |              1 |               2 |
+--------------------+---------+----------------+-----------------+
9 rows in set (0.00 sec)
Dann lass bin/otrs.Console.pl Maint::Cache::Delete --type Ticket laufen.

ALWAYS MAKE A BACKUP
nscblauensteiner
Znuny newbie
Posts: 28
Joined: 15 Apr 2019, 09:34
Znuny Version: 6.0.44
Real Name: Lukas B.

Re: Gesperrte Tickets von ungültigen Benutzern schließen

Post by nscblauensteiner »

Zu berücksichtigen ist, dass die postmasterUserID bzw. der user mit der ID 1 (user_id = 1) nicht inaktiv ist!
Post Reply