Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Laboratori Nazionali di Frascati
Workshop sulle problematiche di calcolo e reti nell'INFN Paestum, 9-12 Giugno 2003 Trouble Ticket Laboratori Nazionali di Frascati INFN
2
Esigenze degli utenti Disporre di uno strumento unico e semplice per la richiesta di assistenza o di supporto tecnico Tenere sotto controllo lo stato della richiesta effettuata Avere a disposizione gli aggiornamenti continui relativi all’intervento richiesto 10 giugno 2003 Dael Maselli
3
Esigenze del Servizio Organizzare il lavoro di supporto agli utenti in modo da suddividere i compiti e gestire le priorità Tenere traccia di ogni operazione svolta dal personale del Servizio e mantenerne uno storico Possibilità di monitorare i tempi di intervento per ottimizzare il lavoro Possibilità di effettuare accounting, quindi di suddividere i costi di intervento per gruppo 10 giugno 2003 Dael Maselli
4
Lo script trouble ticket: TTicket
Gestione via Web Interfaccia semplice ma sufficientemente potente Identificazione degli utenti Store delle informazioni in Database DB separati per la gestione di più Servizi Informazioni statistiche con grafici 10 giugno 2003 Dael Maselli
5
Obiettivi nello sviluppo di TTicket
Tenere sotto controllo le attività di supporto tramite pochi `click` Collaborazione tra admin, ottimizzazione dell’interazione all’interno del servizio Sensibilizzazione dell’utenza al fine di comprendere le priorità, grazie alla visualizzazione pubblica della lista delle richieste Sistema unificato per ogni tipologia di intervento 10 giugno 2003 Dael Maselli
6
Specifiche Sviluppato in PHP Protocolli http o https
Interfacciato a database MySQL Autenticazioni possibili: AFS, NIS, Locale su DB Personalizzabile da file di configurazione e da tabelle MySQL 10 giugno 2003 Dael Maselli
7
Struttura DB 10 giugno 2003 Dael Maselli
8
Prerequisiti (lato server)
Web Server Apache su Linux consigliato OpenSSL per l’autenticazione PHP integrato nel Webserver NIS configurato sulla macchina webserver Database server MySQL sulla LAN GDlibrary su php (per la visualizzazione dei grafici statistici) 10 giugno 2003 Dael Maselli
9
Requisiti (lato client)
Internet Browser Netscape da v.4.7 MS Internet Explorer da v.5 Mozilla da v o almeno con supporto Cookie Javascript 10 giugno 2003 Dael Maselli
10
Configurabilità tramite config file (1) (vedi appendice I)
Autenticazione AFS, NIS, Locale su tabella MySQL (conforme al formato .htaccess mod_auth_mysql) (G) Possibilità di riservare l’accesso ad un DB ad un gruppo chiuso di utenti (DB) Possibilità di scegliere se mostrare i ticket a tutti gli utenti, nasconderne solo i dettagli o anche l’header (DB) G: Impostazione Globale DB: Configurabile per ogni DB 10 giugno 2003 Dael Maselli
11
G: Impostazione Globale DB: Configurabile per ogni DB
Configurabilità tramite config file (2) Risoluzione indirizzi tramite userdb (sendmail) o routine personalizzabile (G) Inclusione file PHP o HTML: nel form di login (G) nella pagina di index (DB) Colori: aspetto estetico delle pagine (G) G: Impostazione Globale DB: Configurabile per ogni DB 10 giugno 2003 Dael Maselli
12
Configurabilità tramite DB (via web)
Dopo la creazione di un Database per ogni Servizio (Es: Calcolo, SIS, etc.) Definizione delle tipologie di appartenenza delle richieste (Type) e delle sottocategorie (Subtype): Esempio di Type: PC, MAC, Network, Unix, etc. Esempio di Subtype: Hardware, Software Definizione degli amministratori (admin) per ciascun Database ed assegnazione dei Type a ciascun admin Pagine (PHP o html) da includere nei vari form di richiesta 10 giugno 2003 Dael Maselli
13
Caratteristiche di funzionamento (1)
Il Trouble Ticket richiede l’autenticazione dell’utente che intende sottomettere una richiesta Dal momento dell’autenticazione l’utente può scegliere il servizio a cui inviarla Nell’ambito del Servizio può selezionare il Type, il Subtype appropriati, nonché la Priority I ticket sono catalogati secondo il Type ed elencati principalmente in ordine di Priority e tempo di vita Tutti gli aggiornamenti relativi ad un ticket vengono notificati tramite al proprietario ed agli admin del Type di appartenenza 10 giugno 2003 Dael Maselli
14
Caratteristiche di funzionamento (2)
Ogni utente può fare degli aggiornamenti (update) solo al proprio ticket pur potendo opzionalmente leggerli tutti Gli utenti admin possono effettuare varie operazioni sui ticket dei quali Type sono responsabili: Cambiarne le caratteristiche quali Type, Subtype e Priority Prenderli in carico (at Work) Aggiornarli e Chiuderli Attribuire dei credits Cancellare l’intero ticket 10 giugno 2003 Dael Maselli
15
Funzionalità per tutti gli utenti (1)
Ticketlist: Possibilità di personalizzare la visualizzazione della lista tramite: Selezione di un insieme di Type Selezione di uno o più stati di lavorazione Impostazione del numero di ticket per pagina Selezione dei soli ticket personali Ordinamento crescente o decrescente in funzione del contenuto di qualsiasi campo della tabella 10 giugno 2003 Dael Maselli
16
Funzionalità per tutti gli utenti (2)
Ticketlist: Possibilità di effettuare ricerche per: Utente (username o realname) Subject e/o Description e/o Updates Intervallo di apertura o di aggiornamento Statistiche con grafici Accounting suddiviso per gruppo o utente 10 giugno 2003 Dael Maselli
17
Funzionalità per gli admin (1)
Gestione di ticket hidden (agli utenti) Gestione di template di risposte Logging dettagliato a 3 livelli (vedi appendice II) Visualizzazione ticketlist con gamma di colori a seconda della vecchiaia del ticket Apertura di ticket a nome di un utente 10 giugno 2003 Dael Maselli
18
Funzionalità per gli admin (2)
Fusione di due ticket per raggruppare richieste sugli stessi problemi references per notificare gli update di un ticket anche a persone diverse dal proprietario e dagli admin Open&Close di un ticket per tenere traccia di lavori altrimenti non documentati 10 giugno 2003 Dael Maselli
19
Conclusioni (1) I vantaggi apprezzati ai LNF sono:
Organizzazione migliore del lavoro: Avere una lista concreta delle attività da svolgere, gli utenti sono educati a non effettuare richieste se non attraverso il TTicket. Svolgimento del lavoro secondo una scala di priorità, gli utenti sono consapevoli del motivo dell’attesa Controllo continuo delle richieste ed interventi: Ridotta a zero la probabilità di perdere una richiesta Ogni aggiornamento ai ticket viene notificato e rimane a disposizione per eventuali controlli 10 giugno 2003 Dael Maselli
20
Conclusioni (2) Possibilità di creare più database per vari servizi, attualmente ai LNF: Servizio di Calcolo Dataweb INFN Servizio di Informazione Scientifica Admin separati per ogni Type: Il lavoro è ben suddiviso secondo le aree di competenza Minimizzate le inefficienze dovute a sovrapposizioni negli interventi 10 giugno 2003 Dael Maselli
21
Conclusioni (3) Visione immediata degli aggiornamenti di un intervento: Possibilità da parte del personale di continuare un lavoro cominciato da altri grazie ad un resoconto delle attività già svolte Ricerca rapida nello storico degli interventi: Documentare un’attività svolta è semplice e veloce Interfaccia web multifunzionale: Ridotti al minimo i passi per la gestione delle richieste 10 giugno 2003 Dael Maselli
22
TTicket DEMO Una demo e’ disponibile all’indirizzo: database: (DEMO) user: demo[user] pass: demo user: demoadmin pass: demo come username inserire un qualsiasi nome preceduto da `demo`, in particolare l’utente `demoadmin` ha tutti i privilegi degli admin. Gli altri vengono trattati come semplici user in grado di inviare delle richieste, a meno che non vengano inseriti tra gli utenti admin dall’utente `demoadmin` che ha anche il privilegio “DB Manager”. Inviando delle richieste o facendo degli update, i messaggi invece di essere realmente inviati vengono mostrati in una finestra pop-up. Il database e’ una copia piu’ o meno aggiornata di quello in produzione per il Calcolo di Frascati, e’ dunque possibile apprezzare anche delle statistiche. Puo’ essere liberamente utilizzata qualsiasi funzione dato che non compromettera’ in alcun modo i DB reali. 10 giugno 2003 Dael Maselli
23
Fine Servizio di Calcolo Laboratori Nazionali di Frascati
Workshop sulle problematiche di calcolo e reti nell'INFN Paestum, 9-12 Giugno 2003 Servizio di Calcolo Laboratori Nazionali di Frascati Istituto Nazionale di Fisica Nucleare Per ulteriori informazioni: 10 giugno 2003 Dael Maselli Autore: Dael Maselli
24
Appendice I file di configurazione
10 giugno 2003 Dael Maselli
25
tticket.conf.php (1) 10 giugno 2003 Dael Maselli
<script language="php"> $std_get_params = ($_GET['database']) ? 'database='.$_GET['database']:'database='.$_POST['database']; $I = 0; ############################################################### ##### Don't touch the lines before here ####################### ############################################################### /*############################################################# # Db Definition variable explanation. # # # $DB_names[$I] The name the sistem will use to # # identify the Db. Don't use any special # # characters. # # # $DBhnames[$I] The Human readable name for the DB. # # This will appear to you in the pages. # # # $req_file[$I] ** The location of the file that # # indicates DB host, DB name, DB user and # # DB Pass to connect the MySQL server. ** # # # $index_include[$I] The page you want to include in the # # index page. # # # $closedDBs[$I] Set to 1 if you want to allow access # # only to the users in the `user` table. # # # $hideDBs[$I] Set to 1 if you want to hide this DB # # in the select box. # # # $hide_oth_ticks[$I] Set to: # # 1: if you want to hide tickets details # # to other users but the owner and Admin. # # 2: if you want to hide tickets to # # other users also in the ticketlist. # # # $N_M_A_O_A_Us[$I] No mail admin on admin updates: # # set to 1 if you want to reduce mail to # # admin to only owners updates. # # # # # ** The file has to be like this: # <script language="php"> # $dbhost = "host:port"; # $dbname = "db name"; # 10 giugno 2003 Dael Maselli
26
tticket.conf.php (2) 10 giugno 2003 Dael Maselli
$dbuser = "username"; # $dbpass = "password"; # </script> # # # */############################################################# # Database Definitions # # # # Default Database Number: # $defDB = 0; # # ############## # $DB_names[$I] = "Calcolo"; # $DBhnames[$I] = "Computing Service"; # $req_file[$I] = "/home/calcolo/tticket/datiserver.php";# $index_include[$I] = "2include/incindexcalc.php"; # $closedDBs[$I] = 0; # $hideDBs[$I] = 0; # $hide_oth_ticks[$I] = 0; # $N_M_A_O_A_Us[$I] = 1; # ++$I; # # ############## # $DB_names[$I] = "Web"; # $DBhnames[$I] = "Web"; # $req_file[$I] = "/home/calcolo/tticket/datiserver_web.php"; $index_include[$I] = ""; # $closedDBs[$I] = 0; # $hideDBs[$I] = 0; # $hide_oth_ticks[$I] = 0; # $N_M_A_O_A_Us[$I] = 0; # ++$I; # # ############## # $DB_names[$I] = "SIS"; # $DBhnames[$I] = "SIS"; # $req_file[$I] = "/home/calcolo/tticket/datiserver_sis.php"; $index_include[$I] = ""; # $closedDBs[$I] = 0; # $hideDBs[$I] = 0; # $hide_oth_ticks[$I] = 0; # $N_M_A_O_A_Us[$I] = 0; # ++$I; # # ############## # 10 giugno 2003 Dael Maselli
27
tticket.conf.php (3) 10 giugno 2003 Dael Maselli
$DB_names[$I] = "demo"; # $DBhnames[$I] = "(DEMO)"; # $req_file[$I] = "/home/calcolo/tticket/datiserver_demo.php"; $index_include[$I] = ""; # $closedDBs[$I] = 0; # $hideDBs[$I] = 0; # $hide_oth_ticks[$I] = 0; # $N_M_A_O_A_Us[$I] = 0; # $demodbs[$I] = 'YES'; # ++$I; # # ############## # $DB_names[$I] = ""; # $DBhnames[$I] = ""; # $req_file[$I] = ""; # $index_include[$I] = ""; # $closedDBs[$I] = 0; # $hideDBs[$I] = 0; # $hide_oth_ticks[$I] = 0; # $N_M_A_O_A_Us[$I] = 0; # ++$I; # # ############################################################### ############################################################### # Possible Auth Methods are: # # AFS, NIS, Local. (case sensitive) # # # $auth_method = 'AFS'; # ############################################################### # For AFS # $afs_cell = 'lnf.infn.it'; # # For Local # $local_passwd_req_file = '/home/calcolo/tticket/auth_db.php'; /*# The file has to be like this: # # # <script language="php"> # $local_passwd_host = "host:port"; # $local_passwd_user = "username"; # $local_passwd_pass = "password"; # $local_passwd_database = "db name"; # $local_passwd_table = "table name"; # </script> # # # ###############################################################*/ 10 giugno 2003 Dael Maselli
28
tticket.conf.php (4) 10 giugno 2003 Dael Maselli
############################################################### # Log Levels (MySQL queries): # # # # 0: No Log # # 1: Only Errors # # 2: INSERT, UPDATE, DELETE and Errors # # 3: ALL queries # # # $loglevel = 2; # $logfile = '/home/calcolo/tticket/tticket.log'; # ############################################################### ############################################################### # Location Specific # $url_pefix = ' end slash # # Unique key to validate client cookies # $key_file = 'home/calcolo/cookies.key'; # # where to send key file expiring warning # # Name for session-id cookie # $name_for_session = 'TTicket_session'; # # # # if you have a `Sendmail userdb` (not compiled) reachable by # # www type it here for resolution. Else leave it blank # $userdb = '/home/calcolo/mailboxdb/mailboxdb.txt'; # ############################################################### ############################################################### # Appearance # # # # Status colors: # $waiting_ticket_row = '#FFCCBB'; # $working_ticket_row = '#FFFFBB'; # $closed_ticket_row = '#CCFFDD'; # # # # Page colors: # $page_background = '#CCCCCC'; # $page_text = '#000000'; # $page_links = '#002299'; # # Page title: # $page_title = 'LNF Trouble Ticket Service'; # # A page to include in the bottom of the login page: # $login_include = "2include/inclogincalc.php"; # ############################################################### 10 giugno 2003 Dael Maselli
29
tticket.conf.php (5) 10 giugno 2003 Dael Maselli
############################################################### # Check for updates: # # set to 1 if you want the script check if it is updated and # # notify it on the bottom of the page. # $chkver = 1; # ############################################################### ############################################################### # address for tickets having subject beginning # # with "TeSt": # ############################################################### ############################################################### ##### Don't touch the lines below here ######################## ############################################################### if ( file_exists("development") ) { $page_background = '#C2D1DC'; $page_title = 'DEVELOPMENT of `'.$page_title.'`'; } $DB_names_rev = array_flip($DB_names); include('version'); </script> 10 giugno 2003 Dael Maselli
30
Appendice II Log File - Log level: 2 -
10 giugno 2003 Dael Maselli
31
Log (1) 10 giugno 2003 Dael Maselli
####################################################################################### :19: DB: Calcolo - Q. TYPE: INSERT - RESULT: OK USERNAME: Utente1 - HOST: URL: /computing/tticket/send2db.php SQL: INSERT INTO tickets (sndname, subject, description, opendate, priority, type1, type2, , updates, ref_ , sndgroup) VALUES ( 'Utente1', 'mod_auth_mysql test', 'Sto testando l\'accesso HTTP con un file .htaccess che utilizza direttive di mod_auth_mysql[\n]che avete istallato su www4 only.[\n][\n]Attualmente quando tento di authenticarmi da:[\n][\n] un \"Internal Server Error\"[\n][\n]Purtroppo non riesco a capire qual\'è il problema perchè non ho accesso[\n]all\'error-log di www4.[\n]E\' possibile vederlo con Claudio?[\n][\n]Grazie[\n]Marina\n\n \nBuilding: 14\nRoom: \nPhone: \n', ' :19:36', '3', '6', '2', '', '', 'dricerca') POST_GET_VAR: 'sndname' => 'Utente1'; 'group' => 'dricerca'; 'subject' => 'mod_auth_mysql test'; 'priority' => '3'; 'type1' => '6'; 'type2' => '2'; 'build' => '14'; 'room' => '12'; 'phone' => '2242'; 'description' => 'Sto testando l\'accesso HTTP con un file .htaccess che utilizza direttive di mod_auth_mysql[\n]che avete istallato su www4 only.[\n][\n]Attualmente quando tento di authenticarmi da:[\n][\n] un \"Internal Server Error\"[\n][\n]Purtroppo non riesco a capire qual\'è il problema perchè non ho accesso[\n]all\'error-log di www4.[\n]E\' possibile vederlo con Claudio?[\n][\n]Grazie[\n]Marina'; 'Submit' => 'Send Request'; 'LNF_Username' => 'LNF_Password' => '6duZ91S0NEAlY5304VrdXEgQAEceaj6dLuu4edwc1yyIYNZBPSH2'; 'PHPSESSID' => '8ea b f2941'; SESSION_VAR: 'database' => 'Calcolo'; 'user' => 'Utente1'; 'ipaddr' => ' '; 'hostname' => 'pcUtente1.lnf.infn.it'; 'group' => 'dricerca'; ' ' => 'Marina.Utente1'; 'name_of_user' => 'Marina Utente1 '; 10 giugno 2003 Dael Maselli
32
Log (2) 10 giugno 2003 Dael Maselli
####################################################################################### :20: DB: SIS - Q. TYPE: UPDATE - RESULT: OK USERNAME: Utente2 - HOST: URL: /computing/tticket_DEV/chstatus.php SQL: UPDATE tickets SET updates='ADMIN:bifarett | :49:55: Working...[\n]ADMIN:bifarett | :49:55: [\n]In attesa di preventivo[\n]ADMIN:Utente2 | :20:28: [\n]ricevuto preventivo[\n][\n]' , closedate=' :20:28' , priority='2', type1='5', type2='1', credits='0', WHERE cod='4' POST_GET_VAR: 'cod' => '4'; 'met' => 'update'; 'priority' => '2'; 'type1' => '5'; 'type2' => '1'; 'ref_ ' => 'update' => 'ricevuto preventivo[\n]'; 'template' => ''; 'credits' => ''; 'Submit' => 'Update'; 'LNF_Username' => 'LNF_Password' => 'f6FsBfpVO.7QU52xNMhoYQ.EVoce.md9O.NoJKQc1yyIYNZBPSH2'; 'PHPSESSID' => 'cabb6b97ef9c6fd8067c6835d1a876e4'; SESSION_VAR: 'database' => 'SIS'; 'user' => 'Utente2'; 'ipaddr' => ' '; 'hostname' => 'macUtente2i.lnf.infn.it'; 'group' => 'macchina'; 'dbchanged' => '1'; ' ' => 'Antonino.Utente2i'; 'name_of_user' => 'Antonino Utente2i '; 10 giugno 2003 Dael Maselli
33
Log (3) 10 giugno 2003 Dael Maselli
####################################################################################### :22: DB: Calcolo - Q. TYPE: INSERT - RESULT: OK USERNAME: Utente3 - HOST: URL: /computing/tticket/send2db.php SQL: INSERT INTO tickets (sndname, subject, description, opendate, priority, type1, type2, , updates, ref_ , sndgroup) VALUES ( 'Utente3', 'libreria rh73', 'Per cortesia, controllare se sulle macchine del cluster lxcalc (01, 02, 04, 05) e\' lincata[\n](e fatto il ldconfig.) della libreria rh73 [\n][\n]ln -s /opt/atlas/i386_redhat73/usr.local/gcc-alt /usr/local[\n][\n]Sulle macchine indicate sopra continuo ad avere l\'errore: [\n]ERROR System Error:[\n]/opt/atlas/software/dist/6.0.2/InstallArea/i686-rh73-gcc295/lib/libHepMC_IO.so: undefined[\n]symbol: hepevt_[\n][\n]Grazie per l\'urgenza. [\n]Halina\n\n \nBuilding: AE\nRoom: B21\nPhone: \n', ' :22:42', '3', '6', '2', '', '', 'atlas') POST_GET_VAR: 'sndname' => 'Utente3'; 'group' => 'atlas'; 'subject' => 'libreria rh73'; 'priority' => '3'; 'type1' => '6'; 'type2' => '2'; 'build' => 'AE'; 'room' => 'B21'; 'phone' => '2907'; 'description' => 'Per cortesia, controllare se sulle macchine del cluster lxcalc (01, 02, 04, 05) e\' lincata[\n](e fatto il ldconfig.) della libreria rh73 [\n][\n]ln -s /opt/atlas/i386_redhat73/usr.local/gcc-alt /usr/local[\n][\n]Sulle macchine indicate sopra continuo ad avere l\'errore: [\n]ERROR System Error:[\n]/opt/atlas/software/dist/6.0.2/InstallArea/i686-rh73-gcc295/lib/libHepMC_IO.so: undefined[\n]symbol: hepevt_[\n][\n]Grazie per l\'urgenza. [\n]Halina'; 'Submit' => 'Send Request'; 'LNF_Username' => 'LNF_Password' => 'f6FsBfpVO.7QU50zVKw7GAVhq.cedUACLHUmEAQc1yyIYNZBPSH2'; 'PHPSESSID' => 'd7e347ca aa793b2392e8ca1fb'; SESSION_VAR: 'database' => 'Calcolo'; 'user' => 'Utente3'; 'ipaddr' => ' '; 'hostname' => 'pcUtente3.lnf.infn.it'; 'group' => 'atlas'; 'dbchanged' => '1'; ' ' => 'Halina.Utente3'; 'name_of_user' => 'Halina Utente3 '; 10 giugno 2003 Dael Maselli
34
Log (4) 10 giugno 2003 Dael Maselli
####################################################################################### :24: DB: Calcolo - Q. TYPE: UPDATE - RESULT: OK USERNAME: Utente3 - HOST: URL: /computing/tticket/chstatus.php SQL: UPDATE tickets SET status='1', closedate=' :24:39', working='0' WHERE cod='732' POST_GET_VAR: 'cod' => '732'; 'met' => 'close'; 'update' => ''; 'Submit' => 'Close'; 'LNF_Username' => 'LNF_Password' => 'f6FsBfpVO.7QU50zVKw7GAVhq.cedUACLHUmEAQc1yyIYNZBPSH2'; 'PHPSESSID' => 'd7e347ca aa793b2392e8ca1fb'; SESSION_VAR: 'database' => 'Calcolo'; 'user' => 'Utente3'; 'ipaddr' => ' '; 'hostname' => 'pcUtente3.lnf.infn.it'; 'group' => 'atlas'; 'dbchanged' => '1'; ' ' => 'Halina.Utente3'; 'name_of_user' => 'Halina Utente3 '; 10 giugno 2003 Dael Maselli
35
Log (5) 10 giugno 2003 Dael Maselli
####################################################################################### :24: DB: Calcolo - Q. TYPE: UPDATE - RESULT: OK USERNAME: Utente3 - HOST: URL: /computing/tticket/chstatus.php SQL: UPDATE tickets SET updates='', closedate=' :24:39', intervallo=((UNIX_TIMESTAMP(' :24:39')-UNIX_TIMESTAMP(opendate))) WHERE cod='732' POST_GET_VAR: 'cod' => '732'; 'met' => 'close'; 'update' => ''; 'Submit' => 'Close'; 'LNF_Username' => 'LNF_Password' => 'f6FsBfpVO.7QU50zVKw7GAVhq.cedUACLHUmEAQc1yyIYNZBPSH2'; 'PHPSESSID' => 'd7e347ca aa793b2392e8ca1fb'; SESSION_VAR: 'database' => 'Calcolo'; 'user' => 'Utente3'; 'ipaddr' => ' '; 'hostname' => 'pcUtente3.lnf.infn.it'; 'group' => 'atlas'; 'dbchanged' => '1'; ' ' => 'Halina.Utente3'; 'name_of_user' => 'Halina Utente3 '; 10 giugno 2003 Dael Maselli
36
Appendice III ScreenShots della versione 2.2.7 – attualmente 2.3.3
10 giugno 2003 Dael Maselli
37
Login 10 giugno 2003 Dael Maselli
38
Index (as admin) 10 giugno 2003 Dael Maselli
39
Index (as user) 10 giugno 2003 Dael Maselli
40
Request Form (as user) 10 giugno 2003 Dael Maselli
41
Request Form (as admin)
10 giugno 2003 Dael Maselli
42
Ticketlist (as user) 10 giugno 2003 Dael Maselli
43
Ticketlist (as admin) 10 giugno 2003 Dael Maselli
44
Ticketlist (as admin) 10 giugno 2003 Dael Maselli
45
Ticket Details 10 giugno 2003 Dael Maselli
46
Ticket Details (as admin)
10 giugno 2003 Dael Maselli
47
Ticket Update (as admin)
10 giugno 2003 Dael Maselli
48
Ticket Update (as admin)
10 giugno 2003 Dael Maselli
49
Ticket Update (as owner user)
10 giugno 2003 Dael Maselli
50
Users Management 10 giugno 2003 Dael Maselli
51
Types Management 10 giugno 2003 Dael Maselli
52
Graphical Statistics 10 giugno 2003 Dael Maselli
53
Graphical Statistics 10 giugno 2003 Dael Maselli
54
Deleted Ticketlist 10 giugno 2003 Dael Maselli
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.