Microsoft 365’e mail geçişlerinde en çok karşılaşılan konulardan biri migration durumunun panelde yeterince detaylı görünmemesidir. Özellikle IMAP migration işlemlerinde bazı mailbox’lar uzun süre Syncing durumunda kalabilir. Panelde işlem devam ediyor gibi görünür ama kaç mail aktarıldı, kaç mail kaldı, migration gerçekten ilerliyor mu sorularının cevabı net olmayabilir.
Diğer sık karşılaşılan konu ise Microsoft 365 tarafında saklama etiketi ve arşivleme politikası oluşturma sürecidir. Özellikle E3 lisans olmayan ortamlarda Microsoft 365 panelinde saklama etiketi veya MRM policy oluştururken izin, organizasyon veya lisans kaynaklı hatalar görülebilir. Bu noktada gözden kaçan kritik işlem şudur:
Microsoft 365 Admin Center > Support > EWS / Throttling Run Tests
Bu destek tanılaması çalıştırılmadan bazı tenant’larda panel tarafında MRM etiketi oluşturma ekranı sağlıklı ilerlemeyebilir. Ardından Exchange Online PowerShell ile MRM retention tag ve retention policy oluşturmak çok daha kontrollü bir yöntem olur.
Bu yazıda üç ana konuyu ele alacağız:
- IMAP migration durumunu PowerShell ile takip etme
- Microsoft 365 destek panelinden EWS Run Tests çalıştırma
- E3 olmadan Exchange MRM saklama etiketi ve archive policy tanımlama
1. Exchange Online PowerShell’e Bağlanma
Öncelikle Exchange Online PowerShell modülünü kurup Microsoft 365 tenant’ına bağlanıyoruz.
Install-Module ExchangeOnlineManagement -Scope CurrentUser
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
Bağlantı tamamlandıktan sonra aktif migration batch’leri görmek için şu komut çalıştırılır:
Get-MigrationBatch | Format-Table `
Identity,
Status,
TotalCount,
ActiveCount,
SyncedCount,
SucceededCount,
FailedCount,
StoppedCount,
LastSyncedTime -Auto
Bu komut batch seviyesinde genel durumu gösterir. Ancak mailbox bazlı detay için Get-MigrationUserStatistics komutunu kullanmak gerekir. Microsoft, migration kullanıcı detayları için bu cmdlet’i kullanır.
2. Syncing Durumunda Kalan Mailbox’ı Bulma
Migration panelinde bazı kullanıcılar uzun süre Syncing durumunda kalabilir. Bu durumda ilgili mailbox’ın gerçekten ilerleyip ilerlemediğini görmek için aşağıdaki komut kullanılabilir.
Get-MigrationUser | Get-MigrationUserStatistics |
Where-Object { $_.Status -eq "Syncing" -or $_.StatusSummary -like "*Sync*" } |
Format-Table `
Identity,
Status,
StatusSummary,
PercentageComplete,
SyncedItemCount,
TotalItemsInSourceMailboxCount,
SkippedItemCount,
BytesTransferred,
LastSuccessfulSyncTime -Auto
Burada özellikle şu alanlar önemlidir:
Status
StatusSummary
PercentageComplete
SyncedItemCount
TotalItemsInSourceMailboxCount
SkippedItemCount
BytesTransferred
LastSuccessfulSyncTime
Eğer BytesTransferred artıyor ve LastSuccessfulSyncTime güncelleniyorsa migration hâlâ devam ediyor demektir.
Bu değerler uzun süre değişmiyorsa ilgili mailbox kaynak IMAP sunucusunda, büyük klasörde, bozuk mailde veya bağlantı limitinde takılmış olabilir.
3. Kalan Mail Sayısını Hesaplama
Microsoft 365 paneli IMAP migration sırasında kalan mail sayısını her zaman net göstermez. Ancak PowerShell tarafında TotalItemsInSourceMailboxCount ve SyncedItemCount değerleri dolu gelirse kalan mail sayısı hesaplanabilir.
$user = "kullanici@domain.com"
$s = Get-MigrationUserStatistics -Identity $user -IncludeReport -IncludeSkippedItems
$total = $s.TotalItemsInSourceMailboxCount
$synced = $s.SyncedItemCount
[PSCustomObject]@{
Mailbox = $s.Identity
Durum = $s.Status
DurumOzeti = $s.StatusSummary
Yuzde = $s.PercentageComplete
ToplamMail = $total
AktarilanMail = $synced
KalanMail = if ($total -ne $null -and $synced -ne $null) {
$total - $synced
} else {
"Toplam mail sayısı Microsoft tarafından döndürülmedi"
}
AtlananMail = $s.SkippedItemCount
AktarilanVeri = $s.BytesTransferred
SonBasariliSync = $s.LastSuccessfulSyncTime
Hata = $s.ErrorSummary
} | Format-List
Eğer toplam mail sayısı boş gelirse tüm migration detaylarını görmek için:
Get-MigrationUserStatistics -Identity "kullanici@domain.com" -IncludeReport -IncludeSkippedItems |
Format-List *
Buradaki trik nokta şudur:
IMAP migration’da kalan mail sayısı her zaman direkt görünmez. Bazen ilerlemeyi BytesTransferred, SyncedItemCount, SkippedItemCount ve LastSuccessfulSyncTime üzerinden okumak gerekir.
4. Migration Raporunu CSV Olarak Alma
Tüm kullanıcıların migration durumunu raporlamak için aşağıdaki komut kullanılabilir.
Get-MigrationUser | Get-MigrationUserStatistics |
Select-Object `
Identity,
Status,
StatusSummary,
PercentageComplete,
SyncedItemCount,
TotalItemsInSourceMailboxCount,
@{Name="KalanMail";Expression={
if ($_.TotalItemsInSourceMailboxCount -ne $null -and $_.SyncedItemCount -ne $null) {
$_.TotalItemsInSourceMailboxCount - $_.SyncedItemCount
} else {
$null
}
}},
SkippedItemCount,
BytesTransferred,
LastSuccessfulSyncTime,
ErrorSummary |
Export-Csv "C:\temp\migration-durum-raporu.csv" -NoTypeInformation -Encoding UTF8
Bu rapor özellikle büyük mailbox taşıma işlemlerinde ilerlemeyi takip etmek için oldukça faydalıdır.
5. Hedef Mailbox Boyutunu Kontrol Etme
Migration istatistiklerine ek olarak Microsoft 365 tarafında oluşan mailbox boyutu da kontrol edilmelidir.
Get-EXOMailboxStatistics -Identity "kullanici@domain.com" |
Format-List DisplayName,ItemCount,TotalItemSize,LastLogonTime
Bu komut hedef Microsoft 365 mailbox’ındaki toplam öğe sayısını ve mailbox boyutunu gösterir.
Kaynak IMAP tarafındaki mail sayısı ile hedef mailbox item count birebir aynı olmayabilir. Bunun nedeni sistem klasörleri, atlanan öğeler, bozuk mailler veya IMAP migration davranışı olabilir. Yine de mailbox boyutunun artıp artmadığını görmek için bu komut kullanışlıdır.
6. EWS Run Tests Neden Önemli?
Microsoft 365 tarafında bazı işlemler yalnızca panelden yapılmaya çalışıldığında beklenmeyen izin veya organizasyon hataları verebilir. Özellikle E3 lisans olmayan tenant’larda saklama etiketi veya MRM yapılandırma ekranında şu tarz sorunlar görülebilir:
Bu işlemi yapmak için organizasyon izni gerekli.
Bu özellik kuruluşunuzda etkin değil.
Retention tag oluşturulamadı.
Organization customization gerekli.
Bu noktada genellikle gözden kaçan işlem Microsoft 365 destek tanılamasıdır.
Yapılması gereken işlem:
Microsoft 365 Admin Center
Support / Help & support
EWS Throttling veya Increase EWS Throttling Policy
Run Tests
Microsoft’un Exchange Online self-help diagnostics dokümanında EWS throttling testinin özellikle EWS kullanan mailbox migration işlemlerinde throttling politikasının fazla kısıtlayıcı olup olmadığını kontrol etmek için kullanıldığı belirtilir.
Burada önemli ayrım şudur:
Bu işlem doğrudan IMAP migration’ı hızlandırmak için değildir.
Ancak Microsoft 365 tenant’ında Exchange servis tarafındaki bazı destek tanılamalarını ve servis kontrollerini çalıştırdığı için, panelde takılan bazı Exchange yönetim ekranlarının sağlıklı ilerlemesine yardımcı olabilir.
Özellikle MRM saklama etiketi oluşturma ekranı izin veya organizasyon hatasına düşüyorsa, önce bu testin çalıştırılması pratikte fayda sağlayabilir.
7. Microsoft 365 Admin Center’dan EWS Run Tests Çalıştırma
Adımlar şu şekildedir:
- Microsoft 365 Admin Center’a admin kullanıcıyla giriş yapılır.
- Sol menüden Support veya Help & support bölümüne girilir.
- Arama alanına şu ifadelerden biri yazılır:
EWS Throttling
veya
Increase EWS Throttling Policy
- Çıkan önerilerden Increase EWS Throttling Policy seçilir.
- Run Tests butonuna basılır.
- Tanılama tamamlanana kadar beklenir.
- Eğer seçenek sunulursa geçici throttling gevşetme süresi seçilir.
- İşlem tamamlandıktan sonra MRM etiketi veya retention policy ekranı yeniden denenir.
Microsoft Answers üzerinde de aynı akış, Microsoft 365 Admin Center’da Support > New service request bölümünden throttling aratılıp Increase EWS Throttling Policy seçilmesi ve ardından Run Tests çalıştırılması şeklinde tarif edilir.
8. MRM ile Purview Retention Label Karıştırılmamalı
Microsoft 365 tarafında “saklama etiketi” denildiğinde iki farklı yapı karıştırılabiliyor:
- Microsoft Purview retention label / retention policy
- Exchange MRM retention tag / retention policy
Purview retention label daha yeni ve merkezi bir yapıdır. Ancak her lisans ve tenant kombinasyonunda panel tarafında aynı esneklik sunulmayabilir.
Exchange MRM ise mailbox yaşam döngüsü yönetimi için kullanılan klasik Exchange yapısıdır. Microsoft, genel retention işlemleri için Purview retention policies ve labels kullanılmasını önerirken, mesajları archive mailbox’a taşımak için MRM kullanımının devam ettiğini belirtir.
Bu nedenle amaç şu ise:
Belirli yaştan eski mailleri otomatik archive mailbox’a taşı
kullanılacak yapı çoğu zaman:
Exchange MRM Retention Tag + Retention Policy
olmalıdır.
9. Organization Customization Kontrolü
Bazı Microsoft 365 tenant’larında Exchange Online tarafında ilk kez gelişmiş yapılandırma yapılırken organization customization aktif olmayabilir.
Kontrol için:
Get-OrganizationConfig | Format-List IsDehydrated
Eğer IsDehydrated değeri True ise şu komut çalıştırılır:
Enable-OrganizationCustomization
Microsoft dokümanına göre Enable-OrganizationCustomization komutu Exchange Online organizasyonunda yalnızca bir kez çalıştırılır. Eğer daha önce çalıştırıldıysa tekrar çalıştırmaya gerek yoktur.
Eğer şu tarz hata alınıyorsa:
The command you tried to run isn't currently allowed in your organization.
To run this command, you first need to run the command:
Enable-OrganizationCustomization.
önce organization customization kontrol edilmelidir.
10. Archive Mailbox Açık mı Kontrol Etme
MRM policy ile eski mailleri archive mailbox’a taşımak için kullanıcının archive mailbox’ı açık olmalıdır.
Kontrol:
Get-Mailbox -Identity "kullanici@domain.com" |
Format-List DisplayName,PrimarySmtpAddress,ArchiveStatus,ArchiveName,RetentionPolicy
Archive kapalıysa açmak için:
Enable-Mailbox -Identity "kullanici@domain.com" -Archive
Tüm kullanıcıların archive durumunu görmek için:
Get-Mailbox -ResultSize Unlimited |
Select-Object DisplayName,PrimarySmtpAddress,ArchiveStatus,RetentionPolicy |
Format-Table -Auto
Trik nokta:
RetentionAction MoveToArchive kullanılacaksa ArchiveStatus aktif olmalıdır.
Archive mailbox açık değilse policy atanmış görünse bile eski mailler beklenen şekilde archive’a taşınmayabilir.
11. MRM Retention Tag Oluşturma
Örnek olarak 2 yıldan eski mailleri archive mailbox’a taşıyacak bir MRM etiketi oluşturalım.
New-RetentionPolicyTag `
-Name "Archive-730Days" `
-Type All `
-RetentionEnabled $true `
-AgeLimitForRetention 730 `
-RetentionAction MoveToArchive
Parametrelerin anlamı:
Name : Retention tag adı
Type All : Mailbox genelinde varsayılan etki
RetentionEnabled : Etiket aktif mi?
AgeLimitForRetention : Gün cinsinden yaş sınırı
RetentionAction : Süre dolunca yapılacak işlem
MoveToArchive : Archive mailbox’a taşı
Farklı süreler için örnekler:
# 1 yıldan eski mailleri archive mailbox’a taşı
New-RetentionPolicyTag `
-Name "Archive-365Days" `
-Type All `
-RetentionEnabled $true `
-AgeLimitForRetention 365 `
-RetentionAction MoveToArchive
# 3 yıldan eski mailleri archive mailbox’a taşı
New-RetentionPolicyTag `
-Name "Archive-1095Days" `
-Type All `
-RetentionEnabled $true `
-AgeLimitForRetention 1095 `
-RetentionAction MoveToArchive
Microsoft’un Exchange Online MRM dokümanında retention policy’nin retention tag oluşturma, policy’ye ekleme ve mailbox’a uygulama adımlarıyla çalıştığı belirtilir.
12. Retention Policy Oluşturma
Oluşturulan retention tag’i bir retention policy içine ekliyoruz.
New-RetentionPolicy `
-Name "Migration Archive Policy" `
-RetentionPolicyTagLinks "Archive-730Days"
Oluşan policy’yi kontrol etmek için:
Get-RetentionPolicy "Migration Archive Policy" |
Format-List Name,RetentionPolicyTagLinks
Tüm retention policy’leri listelemek için:
Get-RetentionPolicy |
Select-Object Name,RetentionPolicyTagLinks |
Format-Table -Auto
Tüm retention tag’leri listelemek için:
Get-RetentionPolicyTag |
Select-Object Name,Type,AgeLimitForRetention,RetentionAction,RetentionEnabled |
Format-Table -Auto
13. Retention Policy’yi Kullanıcıya Atama
Tek kullanıcıya policy atamak için:
Set-Mailbox -Identity "kullanici@domain.com" `
-RetentionPolicy "Migration Archive Policy"
Kontrol:
Get-Mailbox -Identity "kullanici@domain.com" |
Format-List DisplayName,PrimarySmtpAddress,ArchiveStatus,RetentionPolicy
Birden fazla kullanıcıya CSV ile uygulamak için örnek CSV:
UserPrincipalName
ahmet@domain.com
mehmet@domain.com
ayse@domain.com
PowerShell:
Import-Csv "C:\temp\users.csv" | ForEach-Object {
Set-Mailbox -Identity $_.UserPrincipalName `
-RetentionPolicy "Migration Archive Policy"
}
14. Managed Folder Assistant’ı Çalıştırma
Retention policy atandıktan sonra işlem hemen görünmeyebilir. Exchange Online tarafında bu işlemleri Managed Folder Assistant uygular.
Tek kullanıcı için manuel tetikleme:
Start-ManagedFolderAssistant -Identity "kullanici@domain.com"
CSV ile toplu tetikleme:
Import-Csv "C:\temp\users.csv" | ForEach-Object {
Start-ManagedFolderAssistant -Identity $_.UserPrincipalName
}
Microsoft dokümanında da retention tag ve policy uygulandıktan sonra Managed Folder Assistant mailbox’ı işlediğinde mesajların silineceği veya archive’a taşınacağı belirtilir.
Trik nokta:
Policy atandıktan sonra mailler hemen archive’a taşınmayabilir.
Managed Folder Assistant’ın mailbox’ı işlemesi gerekir.
15. Panelde MRM Etiketi Oluşmuyorsa Kontrol Sırası
E3 lisans olmayan veya panelde retention ekranı sorun çıkaran Microsoft 365 ortamlarında şu sıra izlenebilir:
1. Exchange Online PowerShell bağlantısını kur
Connect-ExchangeOnline
2. Organization customization kontrol et
Get-OrganizationConfig | Format-List IsDehydrated
Gerekirse:
Enable-OrganizationCustomization
3. Microsoft 365 Admin Center’da EWS Run Tests çalıştır
Admin Center > Support > Help & support
Search: EWS Throttling
Increase EWS Throttling Policy
Run Tests
4. Archive mailbox açık mı kontrol et
Get-Mailbox -Identity "kullanici@domain.com" |
Format-List ArchiveStatus,RetentionPolicy
5. Archive kapalıysa aç
Enable-Mailbox -Identity "kullanici@domain.com" -Archive
6. Retention tag oluştur
New-RetentionPolicyTag `
-Name "Archive-730Days" `
-Type All `
-RetentionEnabled $true `
-AgeLimitForRetention 730 `
-RetentionAction MoveToArchive
7. Policy oluştur
New-RetentionPolicy `
-Name "Migration Archive Policy" `
-RetentionPolicyTagLinks "Archive-730Days"
8. Policy’yi mailbox’a ata
Set-Mailbox -Identity "kullanici@domain.com" `
-RetentionPolicy "Migration Archive Policy"
9. Managed Folder Assistant çalıştır
Start-ManagedFolderAssistant -Identity "kullanici@domain.com"
16. En Sık Yapılan Hatalar
IMAP migration’da sadece panele bakmak
Panel genel durumu gösterir ama detay için PowerShell kullanılmalıdır.
Get-MigrationUserStatistics -Identity "kullanici@domain.com" -IncludeReport -IncludeSkippedItems
Syncing durumunu hemen hata sanmak
Büyük mailbox’larda uzun süre Syncing görünmesi normal olabilir. Asıl kontrol edilmesi gerekenler:
BytesTransferred
LastSuccessfulSyncTime
SyncedItemCount
SkippedItemCount
ErrorSummary
EWS Run Tests adımını atlamak
Bazı tenant’larda panelde MRM veya retention ekranı beklenmeyen izin hatalarına düşebilir. Microsoft 365 destek panelindeki EWS / throttling testini çalıştırmak bu noktada önemli bir adımdır.
Purview Retention Label ile Exchange MRM Tag’i karıştırmak
Purview retention label farklıdır.
Exchange MRM retention tag farklıdır.
Eski mailleri archive mailbox’a taşımak için genellikle Exchange MRM kullanılır.
Archive mailbox açmadan MoveToArchive policy atamak
MoveToArchive action kullanılacaksa archive mailbox açık olmalıdır.
Policy atandıktan sonra hemen sonuç beklemek
Retention policy atandıktan sonra Managed Folder Assistant’ın mailbox’ı işlemesi gerekir.
17. Faydalı Toplu Komutlar
Tüm migration durumunu listele
Get-MigrationUser | Get-MigrationUserStatistics |
Select-Object `
Identity,
Status,
StatusSummary,
PercentageComplete,
SyncedItemCount,
TotalItemsInSourceMailboxCount,
SkippedItemCount,
BytesTransferred,
LastSuccessfulSyncTime |
Format-Table -Auto
Syncing mailbox’ları listele
Get-MigrationUser | Get-MigrationUserStatistics |
Where-Object { $_.Status -eq "Syncing" -or $_.StatusSummary -like "*Sync*" } |
Format-Table Identity,Status,StatusSummary,PercentageComplete,SyncedItemCount,BytesTransferred,LastSuccessfulSyncTime -Auto
Migration raporu al
Get-MigrationUser | Get-MigrationUserStatistics |
Select-Object `
Identity,
Status,
StatusSummary,
PercentageComplete,
SyncedItemCount,
TotalItemsInSourceMailboxCount,
SkippedItemCount,
BytesTransferred,
LastSuccessfulSyncTime,
ErrorSummary |
Export-Csv "C:\temp\migration-report.csv" -NoTypeInformation -Encoding UTF8
Retention policy atanmış kullanıcıları listele
Get-Mailbox -ResultSize Unlimited |
Select-Object DisplayName,PrimarySmtpAddress,ArchiveStatus,RetentionPolicy |
Format-Table -Auto
Archive açık kullanıcıları listele
Get-Mailbox -ResultSize Unlimited |
Where-Object { $_.ArchiveStatus -eq "Active" } |
Select-Object DisplayName,PrimarySmtpAddress,ArchiveStatus,RetentionPolicy |
Format-Table -Auto
MRM tag’leri listele
Get-RetentionPolicyTag |
Select-Object Name,Type,AgeLimitForRetention,RetentionAction,RetentionEnabled |
Format-Table -Auto
MRM policy’leri listele
Get-RetentionPolicy |
Select-Object Name,RetentionPolicyTagLinks |
Format-Table -Auto
Sonuç
Microsoft 365 IMAP migration işlemlerinde panel her zaman yeterli detay vermez. Özellikle büyük mailbox geçişlerinde kaç mail kaldığını, ne kadar veri aktarıldığını ve işlemin gerçekten ilerleyip ilerlemediğini görmek için Exchange Online PowerShell kullanılmalıdır.
Saklama etiketi ve arşivleme tarafında ise E3 lisans olmayan veya panelde izin hatası veren tenant’larda klasik Exchange MRM hâlâ çok işe yarayan bir çözümdür. Buradaki kritik nokta, doğrudan retention tag oluşturmaya çalışmadan önce Microsoft 365 Admin Center’daki EWS / Increase EWS Throttling Policy / Run Tests tanılamasını çalıştırmak ve ardından Exchange Online PowerShell ile MRM tag-policy yapısını oluşturmaktır.
Özetle doğru sıra şu şekildedir:
Migration durumunu PowerShell ile kontrol et
Syncing mailbox’ın gerçekten ilerleyip ilerlemediğini takip et
Microsoft 365 Support üzerinden EWS Run Tests çalıştır
Organization customization kontrolünü yap
Archive mailbox’ı aktif et
MRM retention tag oluştur
Retention policy oluştur
Policy’yi mailbox’a ata
Managed Folder Assistant ile işlemi tetikle
Bu yöntem özellikle Yandex Mail, hosting mail, eski IMAP sunucu veya farklı mail servislerinden Microsoft 365’e geçişlerde migration sonrası mailbox yönetimini çok daha kontrollü hale getirir.
İlk Yorumu Siz Yapın