Importare PST in Exchange Online

Nel post precedente ho presentato un piccolo tool in PowerShell per andare a caccia dopo una migrazione a Exchange Online dei file PST che si “annidano” nei computer degli utenti. Una volta scovati questi PST, tocca poi a noi admin prenderli in carico e importarli in Exchange Online: così facendo, i dati prima nei PST saranno ora più sicuri e potremo anche gestirli con maggiore facilità.

Se prepariamo il terreno con cura, questa operazione risulterà abbastanza rettilinea e non presenterà grosse problematiche.

Avvertenza: la presente guida è stata redatta nel febbraio 2024, la procedura e le immagini mostrate potrebbero nel frattempo diventare obsolete. Coesione e l’autore non sono responsabili di eventuali danni o malfunzionamenti derivanti da questa procedura e le informazioni sono fornite senza alcun tipo di garanzia. Provate sempre in uno scenario di test la procedura prima di replicarla in produzione!

Preparazione di Exchange Online

Il primo step è quello di concedere all’utente che usiamo per gestire Exchange Online e lanciare l’import il permesso di Mailbox Import Export e Mail Recipients. Per default nessun utente di un tenant ha questo privilegio, per cui possiamo creare un nuovo Role Group (nel mio caso per esempio “PST_Import”), cui concedo i permessi richiesti e che assegno poi all’utente desiderato (Exchange Admin Center > Roles > Admin Roles)

Nella documentazione Microsoft non è chiaramente documentato mi pare, ma se l’utente usato per lanciare l’import non ha una licenza di Exchange Online non vedrete comparire il pulsante per creare un nuovo job di import e rimarrete in attesa invano. Assegnate quindi una licenza con Exchange Online, anche temporanea, a questo utente che vorrete utilizzare. Dopo aver creato il ruolo ed averlo assegnato all’utente, potrebbe essere richiesto del tempo (da documentazione fino a 24 ore) prima di poter creare un job di import.

Solitamente vorremo che il materiale presente nei PST “di archivio” finisca nell’archivio online della mailbox e non nella mailbox di produzione. Per ottenere questo risultato, dobbiamo attivare l’archivio online – se non lo fosse già – sulle mailbox che subiranno l’import di dati dai PST, ma attenzione: se si abilita infatti l’archivio soltanto, entrerà in funzione la policy di default di retention dei messaggi e tutto quello che è più vecchio di 2 anni sarà spostato nell’archivio online. Questo potrebbe produrre effetti indesiderati nel vostro ambiente, quindi fate molta attenzione se non è questo quello che volete. Potete evitare questo comportamento impostando a “none” la policy di retention delle mailbox prima di attivare l’archivio, ma questo toglierà ogni capacità di gestire la retention da parte degli admin o dell’utente. Se volete usare l’archivio online, è raccomandabile invece creare una policy di retention ad-hoc, con i valori che desiderate quanto ad archiviazione per i vostri utenti.

Ovviamente potete anche importare direttamente nella mailbox attiva senza usare l’archivio, basta specificarlo nel file di mapping di cui si parla sotto.

Una ulteriore considerazione va fatta per le dimensioni della mailbox. Tenete conto che – per fare un esempio nel mondo SMB – la licenza Business Standard di Microsoft 365 ha una Exchange Online P1 per la posta, con 50 GB di mailbox attiva e 50 GB di archivio: in molti scenari è possibile che l’utente abbia magari più di 50 GB di posta nei suoi PST ed a quel punto sarà richiesto un upgrade di licenza. Si può a quel punto prendere una Exchange Online Archiving o una Exchange Online P2, a seconda delle esigenze dell’utente e di dove sceglierete di importare i dati.

Arrivati a questo punto, dovrete avere i vostri PST raccolti e nominati in maniera univoca (non potete caricare anche da sorgenti diverse PST con lo stesso nome nella stessa destinazione) e in modo che siano chiaramente identificabili (una cosa del tipo “UtentePippo_archivio_2017.pst”), pronti per l’upload. Inutile dire che più banda avete, meglio sarà.

Job di import e upload

Ora, dal centro di amministrazione della Compliance potrete andare a creare in Data lifecycle management > Microsoft 365 > Import un nuovo job. Se non vedete il pulsante, vi rimando all’avvertenza sopra sulla licenza.

Date un nome al job, tutto minuscolo e senza spazi e poi scegliete di fare l’upload dei dati (l’alternativa è spedire i dischi fisici con i PST a Microsoft). A questo punto arriverete nella pagina di import, da cui dovrete ottenere la Shared Access Signature URL (SAS URL) per l’upload e il link per scaricare il tool AzCopy, che userete poi per l’upload dei PST. Quello che andremo a fare è nei fatti caricare i nostri PST su un blob in Azure, da cui poi saranno processati da Exchange Online.

Dopo aver scaricato AzCopy, usatelo per caricare i PST in questo modo (per un file singolo):

.\azcopy.exe copy <path del file PST> <SAS URL>

AzCopy può usare come sorgente anche una folder intera (e caricare quindi tutti i PST al suo interno) oppure anche uno spazio di storage su Azure. Per maggiori info, consultate la documentazione ufficiale di AzCopy.

Terminato l’upload, potete opzionalmente andare ad ispezionare i vostri file usando lo Storage Explorer di Azure, non è però richiesto ai fini dell’import. Usate nel caso l’accesso Quick a un Blob protetto da SAS e usate la SAS sopra ottenuta per accedere.


Importante: conservate in maniera sicura la SAS, dato che concede accesso diretto ai vostri PST e quindi ai vostri dati! Dovrete riutilizzare la SAS anche per futuri job di upload e import.

File CSV di mapping

Prima di procedere oltre, dovrete preparare il file CSV per il mapping dei PST alle mailbox degli utenti (scaricatelo qui oppure fate un copia e incolla del blocco sotto per crearne uno nuovo). È in questo momento che andremo a dire a Exchange Online quale PST va nella mailbox di quale utente e – soprattutto – se nella mailbox attiva o di archivio e in quali cartelle/sottocartelle.

Workload,FilePath,Name,Mailbox,IsArchive,TargetRootFolder,ContentCodePage,SPFileContainer,SPManifestContainer,SPSiteUrl
Exchange,,testfile.pst,test.import@testdomain.com,TRUE,/Archivio_PST,,,,

Nell’esempio sopra vado a importare in Exchange (Workload) un PST caricato nella root del blob (colonna vuota FilePath) che si chiama testfile.pst (Name) nella mailbox dell’utente test.import@testdomain.com (Mailbox), ma nell’archivio (IsArchive impostato a TRUE) e creando una cartella (TargetRootFolder) sotto la root dell’archivio che si chiama “Archivio_PST”. Le altre colonne possono essere ignorate. Potete aggiungere molte righe al file di mapping, una per PST da importare, fino a 500. Non modificate nulla nella riga dell’header, anche le colonne inutilizzate.

Avvertenza 1: il nome del file PST è case sensitive e deve essere lo stesso del file caricato con AzCopy. “testfile.pst” non è lo stesso di “Testfile.pst” o “TestFile.pst”. In caso di mancata corrispondenza del case, il job fallirà durante l’import.

Avvertenza 2: se non avete attivato già l’archivio online per la mailbox, ma impostate nel CSV di importare in archivio, il job di import fallirà!

Se volete importare nella mailbox attiva, la colonna IsArchive dovrà essere FALSE: fate attenzione a quel punto a cosa specificate nella colonna TargetRootFolder. Se lasciate la colonna vuota, verrà creata una cartella “Imported”, allo stesso livello della Inbox e delle altre cartelle di default della mailbox. Se usate “/” come valore, le folder del PST subiranno un merge con eventuali folder già presenti nella mailbox (quindi una Inbox nel PST farà merge con la Inbox della mailbox ad esempio). Se usate un valore specifico (“/MiaCartella”), come nel mio esempio sopra, verrà creata – se non esistente – una cartella con il nome richiesto e i dati piazzati al suo interno. Anche qui, se la cartella già esiste, subirà il merge con quella del PST. Queste considerazioni valgono anche se decidete di lavorare sull’archivio online. Maggiori info qui sulla documentazione ufficiale di Microsoft.

Il mio consiglio – ma soprattutto quello di Microsoft! – è di testare sempre con molta cura i vari scenari di import su mailbox di test, prima di procedere con l’import in produzione.

Import dei dati nelle mailbox

Una volta preparato il file CSV e terminati gli upload, mettete i due segni di spunta e andate avanti, caricando e validando il file di mapping.

Se tutto è ok, fate il submit ed Exchange inizierà ad analizzare i PST che avete caricato:

Fino a questo momento nessun dato è stato ancora importato nelle mailbox. Terminata l’analisi, potrete lanciare l’import vero e proprio:

In questa fase è anche possibile scegliere se importare tutto il contenuto del PST o filtrare in base a vari parametri:

Scegliete di filtrare o meno, terminate il wizard, l’import inizierà e i dati arriveranno nelle mailbox in base alle direttive date nel file di mapping. Il processo non è velocissimo, anche nel caso di pochi MB di dati. Armatevi di un po’ di pazienza:

Come si può vedere nell’immagine sopra, il PST che conteneva una cartella chiamata “Alert&Supp” è stata correttamente importato nell’archivio online in una cartella chiamata “Archivio_PST”.

Retention hold

Attenzione ad un ultimo ma importantissimo punto: il processo di importazione attiva la retention hold sulla mailbox, dato che Microsoft presuppone che il materiale importato da un PST sia datato e che una policy di retention potrebbe anche eliminare il materiale appena importato.

Dopo aver terminato l’import al 100%, disattivate via PowerShell la retention hold e la procedura può dirsi conclusa: