Gestire l'IT senza controllo finanziario è navigare senza bussola. GLPI offre moduli nativi per contratti, budget, fornitori e ammortamento, tutti integrati con asset e ticket. In pratica, però, la parte difficile non è l'inserimento: è far scattare gli avvisi e far quadrare i numeri.
Contratti: cosa registrare (e cosa spesso manca)
In Gestione > Contratti, ogni contratto deve contenere:
- Identificazione: numero, tipo (supporto, manutenzione, noleggio, licenza) e fornitore collegato.
- Validità: data di inizio e durata in mesi. GLPI non memorizza la data di fine; la calcola dall'inizio più la durata.
- Preavviso (notice): in mesi. Definisce con quanto anticipo deve arrivare l'avviso di rinnovo.
- Rinnovo: mai, tacito o espresso.
- Costi: nella scheda costi, con periodicità (mensile, annuale) affinché il consumo coincida con il budget.
- Asset coperti: colleghi computer, server e altri elementi per sapere cosa resta senza copertura alla scadenza.
La trappola classica: registrare il contratto con durata 0 (indeterminata). Senza durata non c'è una data di fine calcolabile, e l'avviso di scadenza semplicemente non scatta mai.
Far scattare davvero gli avvisi
Tre livelli devono essere attivi contemporaneamente, altrimenti non parte alcuna e-mail:
- Notifiche globali abilitate in Configurazione > Notifiche, con un destinatario reale configurato.
- Avviso attivato sul contratto stesso (fine contratto o preavviso). Il valore predefinito viene dalla chiave
default_contract_alert. - Azione automatica in esecuzione. L'attività
contractinvia solo se il cron di GLPI viene realmente richiamato.
Negli ambienti dei clienti, il guasto numero uno è il cron fermo. Si assicuri che GLPI venga avviato dal sistema operativo, e non solo quando qualcuno apre l'interfaccia:
# /etc/cron.d/glpi - avvia le azioni automatiche di GLPI ogni minuto
* * * * * www-data /usr/bin/php /var/www/html/glpi/front/cron.php >/dev/null 2>&1
Poi, in Configurazione > Azioni automatiche, apra l'attività contract e verifichi: modalità CLI/esterna, frequenza (giornaliera per impostazione predefinita) e la data dell'ultima esecuzione. Se la modalità è "GLPI" (interna), l'attività dipende da qualcuno che naviga nel sistema al momento giusto, il che è fragile.
L'avviso configurato che non reinvia
Questo è il dettaglio che emerge solo nell'operatività quotidiana: GLPI scrive in glpi_alerts ogni notifica già inviata per non duplicare. Se l'e-mail è fallita (SMTP errato, casella piena) ma la riga è stata scritta, GLPI la considera "già avvisato" e non reinvia, anche dopo aver corretto l'SMTP. Per forzare il reinvio di un contratto specifico, pulisca il marcatore dell'avviso:
-- Trovare l'id del contratto per nome
SELECT id, name FROM glpi_contracts WHERE name LIKE '%Supporto Datacenter%';
-- Rimuovere il marcatore di avviso già inviato (es. contratto 42)
DELETE FROM glpi_alerts
WHERE itemtype = 'Contract' AND items_id = 42;
Alla successiva esecuzione del cron, l'attività contract rivaluta la scadenza e reinvia. Lo stesso vale per le garanzie, sostituendo con itemtype = 'Infocom'.
Diagnosi rapida: contratti in scadenza
Prima di fidarsi del cruscotto, una SELECT diretta conferma cosa scade davvero nei prossimi 90 giorni, con fornitore e giorni rimanenti:
SELECT c.id,
c.name AS contratto,
s.name AS fornitore,
c.begin_date,
DATE_ADD(c.begin_date, INTERVAL c.duration MONTH) AS fine,
DATEDIFF(DATE_ADD(c.begin_date, INTERVAL c.duration MONTH),
CURDATE()) AS giorni_rimanenti
FROM glpi_contracts c
LEFT JOIN glpi_contracts_suppliers cs ON cs.contracts_id = c.id
LEFT JOIN glpi_suppliers s ON s.id = cs.suppliers_id
WHERE c.is_deleted = 0
AND c.is_template = 0
AND c.duration > 0
AND DATE_ADD(c.begin_date, INTERVAL c.duration MONTH)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 90 DAY)
ORDER BY fine ASC;
La esegua come query di sola lettura. È lo stesso calcolo che fa l'interfaccia, utile per verificare prima di un rinnovo in blocco.
Budget collegati a contratti e acquisti
In Gestione > Budget, definisca l'importo, il periodo (annuale, semestrale o per progetto) e il tipo. Il punto che molti ignorano: il budget in GLPI è un riferimento di monitoraggio, non un blocco. Non impedisce registrazioni oltre il tetto; mostra pianificato contro consumato non appena collega i costi dei contratti e le informazioni finanziarie degli asset (Infocom) a quel budget. Senza questo collegamento, il consumo resta a zero e il report inganna.
Ammortamento degli asset
Ogni asset ha una scheda Gestione (Infocom) con valore di acquisto, data di acquisizione, garanzia e ammortamento. GLPI calcola il valore contabile automaticamente in base al tipo e alla durata. Scegliere il metodo giusto evita distorsioni nel TCO:
| Scenario | Tipo (sink_type) | Durata tipica (anni) | Nota |
|---|---|---|---|
| Portatili e desktop | Lineare | 4 a 5 | Perdita costante; semplice da verificare. |
| Server e storage | Lineare | 5 a 7 | Segua in parallelo la garanzia estesa. |
| Apparecchiature con perdita accelerata all'inizio | Decrescente | 3 a 5 | Richiede un coefficiente (sink_coeff) coerente. |
| Licenza o asset senza valore residuo rilevante | Lineare | 1 a 3 | Allinei la durata alla validità del contratto. |
Imposti i valori predefiniti in Configurazione > Generale > scheda Asset per non compilarli uno per uno. L'errore comune qui è lasciare vuota la data di inizio utilizzo: senza di essa GLPI non ha un punto di partenza per ammortizzare, e il valore contabile resta uguale a quello di acquisto per sempre.
Report e costo per ticket
- Asset per valore: quanto è investito per sede o entità.
- Contratti in scadenza: lo stesso elenco della SELECT sopra, ora nel cruscotto.
- Ammortamento: valore contabile del parco nel tempo.
- Costo per ticket: valore del contratto diviso per il numero di ticket gestiti da quel fornitore, ottimo per sostenere una rinegoziazione.
Checklist operativa NexTool
Quando prendiamo in carico gli ambienti dei clienti, prima di fidarci della gestione finanziaria di GLPI validiamo sempre la stessa sequenza: cron che richiama front/cron.php dal sistema operativo (non dal browser); attività contract in modalità esterna con un'ultima esecuzione recente; notifiche globali attive e un destinatario reale sull'avviso; contratti senza un duration = 0 improprio; e una scansione di glpi_alerts quando il cliente dice che "ha smesso di ricevere e-mail". Nove casi su dieci di "GLPI non avvisa della scadenza" ricadono in uno di questi cinque punti, non in un bug del prodotto.
Deve mettere in funzione contratti, budget e avvisi di GLPI da un capo all'altro? NexTool implementa e mantiene questi flussi in ambienti di clienti B2B: scopra il supporto operativo NexTool.
Revisionato dal team NexTool Solutions.