MigrationPermanentException Target user already has a primary mailbox hatası Exchange Online (Office 365)  ‘den Exchange Server Onpremise sunucuları arasında yapılan Office 365 Hybrid Migration işlemlerinde Posta kutusu taşıma (Mailbox Move Request) işleminde karşılaşacak olduğunuz hatadır.

Target user already has a primary mailbox

Target user already has a primary mailbox

Data migrated:
Migration rate:
Last successful sync date:
Error: MigrationPermanentException: Target user ?’Betül?’ already has a primary mailbox. –> Target user ?’Betül’ already has a primary mailbox.

Kullanıcı Posta kutusu taşıma (Mailbox Move Request) işleminde almış olduğunuz hata yukarıda görülmekte ve taşıma işleminin başarısız olduğunu söylemekte.  Bu hata ile çok sık karşılaşacak olduğunuz bir hata değildir.

Posta kutusu taşıma (Mailbox Move Request) işleminde almış olduğumuz hatanın çözümünü paylaşmadan önce mevcut yapıyı ve hata içeriğini inceliyoruz.

Office 365 Hybrid Migration

Office 365 Hybrid Migration

Yukarıda ki ekran da Exchange Online (Office365) ile Exchange Server Onpremise arasında kurulmuş olan Office 365 Hybrid alt yapısını görmektesiniz.

Office 365 Hybrid yapısında Exchange Online ‘da barınan kullanıcı posta kutularının Mailbox Type ‘leri Office365 User,  Exchange Server Onpremise de barınan kullanıcı posta kutularının Mailbox Type ‘leri ise User olarak görülmekte.

Bu bilgiden sonra yukarıda ki ekrana dikkatli bakmanızı istiyorum. Target user already has a primary mailbox hatasını alan kullanıcımız her iki mimari içinde User Mailbox Type olarak görülmekte. Hatayı gördük.

Exchange Server User mailbox

Exchange Server User mailbox

Şimdi ise Exchange Server Onpremise ‘de bulunan problemsiz bir kullanıcının posta kutusu özelliklerine bakalım.

Caner isimli kullanıcı Exchange Server Onpremise ‘de çalışmakta ve Office 365 mimarisinde bu kullanıcının herhangi bir posta kutusu ‘i bulunmamakta.

Office 365 Hybrid yapısı kurulduğu zaman Exchange Onpremise bulunan posta kutuları Exchange Online (Office 365) mimarisinde contacts olarak barınmaktadır ve Office 365 Hybrid organizasyonu içinde bulunan kullanıcılar RemoteRoutingAddress olarak bilinine ikincil bir e-posta adresi üzerinden iletişim kurarlar.

Exchange Server Office365 mailbox

Exchange Server Office365 mailbox

Şimdi ise Exchange Online (Office 365) de bulunan problemsiz bir kullanıcının özelliklerine bakalım.

Koral isimli kullanıcı Exchange Online (Office 365) ‘de çalışmakta ve Office 365 mimarisinde bu kullanıcının herhangi bir posta kutusu bulunmamakta.

Koral isimli kullanıcımız Exchange Online (Office 365) ‘de çalıştığı için Office 365 Hybrid Mimarisi gereği Exchange Server Onpremise organizasyonunda ayrı bir posta kutusu daha bulunmakta ve v biz buna Office 365 hybrid mimarisinde Remote Mailbox demekteyiz. Makalenin ilerleyen bölümlerinde bu konuya değineceğiz.

Şimdi durum özeti yapalım.

Office 365 hybrid mimarisinde bulunan ve problemsiz çalışan mailbox Typer ‘lerini inceledik. Kullanıcı hangi Exchange Server üzerinde çalışıyorsa farklı posta kutu türlerine sahip durumda.

Office 365 Hybrid Migration

Office 365 Hybrid Migration

Posta Kutusu Taşıma ( Mailbbox Move Request ) işlemini gerçekleştirmiş olduğumuz kullanıcının posta kutusuna baktığımıza zaman ise problem görülmekte. Kullanıcı Exchange Online (Office 365) mimarisinde de fakat Exchange Server Onpremise Mimarisinde de User olarak görülmekte.

Problemi en güzel açıklayacak olan terim kullanıcı Arafta kalmış. ne yerdeyim ne gökdeyim türküsünü söylemekte…

Get Mailbox Exchange Onliene

Get Mailbox Exchange Onliene

Get Mailbox Exchange Onpremise

Get Mailbox Exchange Onpremise

Exchange Control Panel ‘in hatası olabileceğini düşündük ve Get-Mailbox komutu ile Exchange Online Powershell (Office 365 ‘de kullanılan komut satırı) ile ve Exchange Management Shell (Exchange Server Onpremise ‘de kullanılan komut satırı) ile kullanıcı doğrulamasını yaptık.

Exchange control panel ‘de görmüş olduğumuz hatanın aynı çıktıları Powershell çıktılarında da görülmekte.

msExchRecipientTypeDetails

msExchRecipientTypeDetails

Problem kaynağı Exchange Online (Office 365) ‘den Exchange Server Onpremise ortamına yapmış olduğumuz kullanıcı posta kutusu taşıma işlemini (Mailbox Move Request) başlatmış olduğumuz kullanıcının msExchRecipientTypeDetails Attribute ile ilgili.

  • Hüsnü kullanıcısı Exchange Online (Office 365) üzerinde bulunmakta ve msExchRecipientTypeDetails numarası 2147483642
  • Caner kullanıcısı Exchange Server Onpremise üzerinde bulunmakta ve msExchRecipientTypeDetails numarası 1073741824
  • Betül kullanıcısı Mailbox Move Request işlemi yapılan kullanıcımız ve msExchRecipientTypeDetails numarası Caner ile aynı, yani Exchange Onpremise ‘de çalıştığının bilgisi bulunmakta. Halbu ki kullanıcımız Hüsnü ile aynı numaraya sahip olmalı.

msExchRecipientTypeDetails numarası posta kutusu taşıma işlemi (Mailbox Move Request) tamamlandıktan sonra değişmelidir!!! Bu satıra dikkat bu satır problemi açıklamakta.

Posta kutusu taşıma işlemi (Mailbox Move Request) tamamlanmadan önce msExchRecipientTypeDetails numarası değiştirilmiş. Problem bu bölümde oluşmuş.

Posta kutusu taşıma işlemi (Mailbox Move Request) tamamlanmadığı için de migration işleminin tam ortasında MigrationPermanentException Target user already has a primary mailbox hatası oluşmuş durumda. Ne yerdeyim ne gökdeyim türküsünün nakarat bölümündeyiz..

Yapılacak olan işlem basit. Kullanıcının etki alanında bulunan objesini bulup msExchRecipientTypeDetails Attribute numarasını Exchange Server Onpremise ‘den Exchange Online (Office 365) numarasına değiştirmeniz ve etki alanı sunucularını eşitlemeniz yeterli olacaktır.

repadmin /syncall /AdeP

Değişikliği yaptıktan sonra Active Directory Domain Controller sunucularının hızlı bir şekilde eşitlenmesi için yukarıda ki komutu kullanabilirsiniz.

Get-Mailbox Exchange Opremise

Get-Mailbox Exchange Opremise

Kullanıcımız üzerinde yapmış olduğumuz bu değişiklik etki alanı içinde bulunan Domain Controller sunucuları üzerinde etkin duruma geldikten sonra Exchange Server Onpremise sunucusunda Get-Mailbox komutunu tekrar çalıştırıyoruz ve çıktı sonucunun hatalı tamamlandığını görüyoruz.

Nedeni basit, makalenin geçmiş bölümlerinde bu detayı paylaşmıştım. Exchange Online (Office 365) ‘de bulunan bir kullanıcının posta kutusu Exchange Server Onpremise ‘de bulunmaz ve bu sebepten ötürü Get-Mailbox çıktısı hata ile sonuçlandı.

Aslında hata değil bizlere bilgi vermekte. Siztsm bizlere bu niteliklere sahip bir posta kutusunu bulamıyorum demekte.

Get-Mailbox Exchange Online

Get-Mailbox Exchange Online

Aynı komutu Exchange Online Powershell ile çalıştırdığım zaman hata vermediğini görebilirsiniz. Dikkat ederseniz işlemler sırasında ve makalenin geçmiş bölümlerinde kapatmadığım Powershell çıktısını tekrar çalıştırdım.

msExchRecipientTypeDetails Attribute değiştirmeden önce de değiştirdikten sonra da çalıştırdım, sonuç aynı. Exchange Online (Office 365 ) ‘de bir değişiklik oluşmadı ve değişiklik sadece Exchange Server Onpremise mimarisinde oluştu.

Enable Remote Mailbox

Enable Remote Mailbox

Office 365 Hybrid Migration işlemlerinde kullanıcıyı Exchange Online ‘den Exchange Onpremise mimarisine posta kutusu taşıma işlemi (Mailbox Move Request) yaparken taşınacak olan kullanıcı için Remote Mailbox özelliğini aktif duruma getiririz ve bu işlem de kullanıcı niteliklerinde değişiklik yapmaktadır.

Yapılan değişiklik Exchange Server Onpremise sunucularının bağlı bulunduğu etki alanı üzerinde yapılmaktadır. Etki alanı ve etki alanı domain controller sunucularının da sağlıklı olması bunun için önemlidir.

Problemli olan Posta kutusu taşıma (Mailbox Move Request) işlemini tamamen temizlemek için kullanıcının sahip olduğu Exchange Onpremise mailbox ‘ı nı Disable-Mailbox komutu ile siliyoruz.

Bu işlem kullanıcının sahip olduğu bütün Exchange Online niteliklerini temizleyecek ve Problemli olan Posta kutusu taşıma (Mailbox Move Request) işlemini  tekrar yapabilmemiz için posta kutusunu tekrar hazırlayacak.

Disable-Mailbox komutunu çalıştırdıktan sonra çalıştıracak olduğumuz diğer bir komut ise Enable-Remotemailbox komutudur ve bu komut ile kullanıcının RemoteRoutingAddress ini tekrardan oluşturuyoruz.

Remote Routing Address

Remote Routing Address

Enable-Remotemailbox komutunu çalıştırdıktan sonra kullanıcı niteliklerinde ki TargetAddress Attribute sini kontrol etmenizi önereceğim. Burasının sağlıklı bir şekilde değiştirildiğinden emin olalım. Posta kutusu taşıma (Mailbox Move Request) işlemini daha önceden problemli olduğu için bütün kontrolleri yapmanızı öneririm.

İşlemlerden sonra etki alanı mimarisini repadmin /syncall /AdeP komutu ile bir kez daha eşitlemeniz gerekmekte.

Office 365 Hybrid Mailbox

Office 365 Hybrid Mailbox

İşlemlerin sonuna geldik. Target user already has a primary mailbox hatasına sahip olan kullanıcımız için Exchange Server Onpremise de yer alan fakat bulunmayan posta kutusunun Attribute lerinde değişiklikleri yaptıktan sonra kullanıcımız için Migrate From Exchange Online işlemini tekrar başlatabiliriz.