1 15/04/2026 9 min

Con SCCM, oggi ConfigMgr, distribuire aggiornamenti software non significa “spingere un pacchetto e sperare”. Significa costruire un percorso controllato: raccolta del contenuto, validazione, pilot, distribuzione ampia, osservabilità e ritorno indietro se qualcosa rompe i client. Se salti uno di questi passaggi, il problema non è ConfigMgr: è il processo.

Il punto giusto da cui partire è semplice: prima decidi chi deve ricevere l’aggiornamento, quando può riceverlo e come misurerai l’esito. In pratica, un aggiornamento ben gestito in ConfigMgr vive in tre stati: contenuto distribuito ai Distribution Point, deployment assegnato a una collection precisa e client monitorati fino a conferma di compliance. Tutto il resto è rumore operativo.

Modello operativo: contenuto, collezioni, deployment

In ConfigMgr gli aggiornamenti software passano quasi sempre da questo schema: il contenuto viene importato o referenziato, distribuito ai Distribution Point, quindi associato a una collection di dispositivi o utenti. Se la collection è troppo ampia, il blast radius cresce subito. Se il contenuto non è già presente sui DP, i client aspetteranno o falliranno con errori di download. Se il deployment è impostato male, potresti avere un rilascio teoricamente corretto ma praticamente invisibile agli endpoint.

La regola pratica è questa: content first, policy second. Prima verifichi che i file siano raggiungibili dai client, poi attivi il deployment. In ambienti grandi, è il modo più veloce per evitare ticket a cascata del tipo “l’update è partito ma non si installa”.

Preparare il contenuto senza creare debito operativo

Per gli aggiornamenti software, il contenuto può essere un package tradizionale, un application model o un file di aggiornamento distribuito come source. La scelta dipende dal tipo di software e da quanto vuoi controllare detection, dipendenze e rollback. Per strumenti interni e software con logica di installazione complessa, le Application sono di solito più pulite. Per distribuzioni semplici o script di supporto, un package può bastare.

Il dettaglio che molti trascurano è la versione del contenuto. Se aggiorni il sorgente, non basta “salvare” la definizione: devi fare attenzione alla redistribuzione sui DP e alla coerenza tra versione del pacchetto e comportamento dell’installer. Un client può avere una policy corretta ma scaricare una vecchia coda di contenuto, soprattutto in ambienti con boundary group e DP multipli.

Se vuoi ridurre gli errori, usa una convenzione di naming che includa prodotto, versione, architettura e stato. Per esempio: AppName_5.4.2_x64_Pilot. Non è estetica: aiuta a distinguere rapidamente ciò che è già in produzione da ciò che è ancora in test.

Distribuire ai Distribution Point prima di toccare i client

Il primo controllo serio è sempre sui Distribution Point. Se il contenuto non è presente lì, il client non ha da dove scaricarlo. In console, il controllo passa dal monitoraggio della distribuzione del package o dell’application content status. Se preferisci una verifica rapida lato server, il log del ruolo contenuto e i report di Content Status ti dicono subito se la replica è completata o se c’è un errore di hash, percorso o spazio disco.

Un errore tipico è distribuire troppo presto su tutti i DP senza avere misurato il volume reale del contenuto. Su reti con branch office o sedi lente, la saturazione del link arriva prima dell’errore applicativo. Qui la prevenzione è banale: distribuisci prima a un sottoinsieme di DP vicino al pilot, verifica i tempi di download e solo dopo allarghi il perimetro.

Se il contenuto è grande, valuta anche la finestra di distribuzione. Non è solo una questione di banda: è una questione di impatto sugli utenti. Un aggiornamento di 2 GB spinto in orario di punta può sembrare “ok” in console e diventare un problema concreto sui client remoti.

Pilot, anelli di distribuzione e collezioni di sicurezza

La parte più importante non è il deploy, ma il pilot. In ConfigMgr conviene lavorare per anelli: un gruppo ristretto di test, un gruppo business rappresentativo, poi il rollout generale. Ogni anello deve essere abbastanza piccolo da limitare il rischio, ma abbastanza vario da intercettare problemi reali: versioni di Windows diverse, laptop fuori sede, desktop in LAN, macchine con software concorrente, endpoint con privilegi limitati.

Una collection pilot fatta bene non è “i PC del reparto IT”. È un campione che assomiglia al parco reale. Se il software gira solo in laboratorio, in produzione non hai ancora validato nulla. Conviene includere almeno un endpoint per ciascun profilo di rete o di business rilevante, così intercetti subito differenze di detection, dipendenze e tempi di installazione.

Per gli aggiornamenti che possono richiedere riavvio o presentare impatti applicativi, non mischiare in una sola collection dispositivi critici e dispositivi ordinari. La segmentazione non serve solo a fare ordine: serve a evitare che una scelta di manutenzione diventi un problema di continuità operativa.

Deployment settings: disponibile, obbligatorio, finestre di manutenzione

Quando crei il deployment, la domanda chiave è se renderlo available o required. Available lascia iniziativa all’utente o al client, required forza l’installazione secondo la schedule definita. Per aggiornamenti critici o correttivi di sicurezza, required è di solito la scelta corretta, ma va accompagnata da finestra di manutenzione e deadline sensata. Altrimenti ottieni rifiuto operativo, riavvii fuori orario o installazioni che falliscono per conflitto con l’uso della macchina.

Le maintenance windows sono il freno di sicurezza. Se non le usi, il deployment può partire nel momento peggiore. Se le usi male, puoi bloccare l’installazione e credere che sia un problema di ConfigMgr quando in realtà è una policy troppo stretta. Il controllo pratico è guardare se il client riceve la policy ma rimanda l’esecuzione per mancanza di finestra utile.

Una buona abitudine è separare la finestra di download dalla finestra di installazione, quando il tipo di update lo consente. Così il pacchetto è già locale quando si apre la finestra, riducendo sia il carico di rete sia i ritardi al momento dell’esecuzione.

Detection method: il punto in cui tanti aggiornamenti falliscono senza dirlo

La detection è il cuore del modello applicativo. Se ConfigMgr non riesce a capire che il software è già presente, continuerà a tentare l’installazione. Se invece la detection è troppo permissiva, segnerà compliance anche quando l’installazione non è realmente corretta. In entrambi i casi il risultato è falso.

Per questo la detection va definita su elementi stabili: versione di file, chiave di registro, codice prodotto MSI, presenza di servizio, output di script. Evita controlli fragili basati su cartelle volatili o file temporanei. Se usi uno script di detection, documenta bene il criterio e verifica che sia identico tra ambienti di test e produzione.

Un esempio pratico: se un’applicazione aggiorna solo un eseguibile, la detection sulla versione del file è spesso più affidabile della sola presenza del percorso. Se invece l’installazione registra componenti multipli, una combinazione di file version + registry + MSI code riduce i falsi positivi. Il punto non è usare più regole a caso, ma usare la regola che descrive davvero lo stato desiderato.

Monitoraggio: capire subito se stai distribuendo bene o male

La console mostra il quadro d’insieme, ma il dettaglio operativo lo ottieni dai log dei client e dai report di stato. I log più utili, lato endpoint, sono quelli dell’agente applicativo e del motor di deployment; lato server, il contenuto e la distribuzione ai DP. Non serve memorizzare tutto: serve sapere dove guardare quando una percentuale di successo resta ferma o quando un gruppo di macchine non esce mai dallo stato “in progress”.

Le metriche che contano davvero sono poche: percentuale di compliance, tasso di errore, tempo medio fino a installazione e numero di client bloccati in download o waiting. Se vuoi fare un lavoro serio, confronta prima e dopo il deployment: quanti endpoint hanno installato entro 1 ora, 4 ore, 24 ore? Se non misuri il tempo, non stai gestendo un rollout, stai solo osservando uno stato finale.

Quando qualcosa va storto, distingui subito tra errore di distribuzione, errore di download e errore di installazione. Sono tre problemi diversi e hanno rimedi diversi. Un package non trovato non si risolve con il reboot del client; un detection errata non si risolve redistribuendo il contenuto; un conflitto applicativo non si risolve aumentando la banda al DP.

Rollback: come tornare indietro senza improvvisare

Il rollback va pensato prima del deployment, non dopo il primo ticket. In ConfigMgr il ritorno indietro dipende dal tipo di aggiornamento: puoi disattivare il deployment, rimuovere la collection target, cambiare la deadline, oppure distribuire una versione precedente se il software lo consente davvero. Non dare per scontato che ogni installazione abbia un uninstall pulito: va verificato.

Se il software è business-critical, tieni pronto un piano di rollback con almeno tre elementi: cosa blocchi, cosa ripristini e chi approva. Per esempio, se un nuovo client rompe l’accesso a un servizio interno, il rollback può essere la disabilitazione del deployment, la riattivazione della versione precedente e la comunicazione al service desk per sospendere ticket duplicati. Il rollback deve essere più veloce della propagazione del problema.

Ricorda anche il blast radius: un deployment su una collection ampia, soprattutto se basata su query generiche, può raggiungere più endpoint del previsto. Prima di fare “required” su tutta l’azienda, verifica membership, esclusioni e ereditarietà delle collezioni. È qui che spesso si fanno gli errori più costosi.

Buone pratiche che evitano il 90% dei guai

La prima buona pratica è separare ambienti e fasi: test, pilot, produzione. La seconda è usare naming coerente e documentazione minima ma chiara. La terza è controllare sempre prerequisiti e dipendenze: framework mancanti, versioni di sistema, permessi, spazio disco, conflitti con software già presente. La quarta è non fidarsi della sola console: il client è la fonte di verità su download, installazione e detection.

Un’altra abitudine utile è registrare il risultato del rollout con una nota operativa: data, collection, numero endpoint, esito, problemi emersi, decisione sul passaggio all’anello successivo. Sembra burocratico, ma è quello che ti evita di ripetere gli stessi errori quando devi distribuire la prossima versione.

In sintesi, ConfigMgr funziona bene quando lo tratti come un sistema di controllo, non come un pulsante di invio. Il valore non sta nel distribuire in fretta, ma nel distribuire con criterio: contenuto verificato, pilot credibile, detection solida, finestra corretta, monitoraggio reale e rollback pronto. È questa disciplina che trasforma un aggiornamento software da rischio diffuso a operazione prevedibile.