メールボックスを 1 つの Microsoft 365 または Office 365 組織から別の組織へ移行する方法

注:

現時点では、 https://aka.ms/CrossTenantMailboxMigrationにあるネイティブ クロス テナント メールボックス移行のパブリック プレビューが用意されています。

この記事では、メールボックスとサービス設定を 1 つの Microsoft 365 またはOffice 365 organizationから別の Microsoft 365 またはビジネス合併シナリオのOffice 365 organizationに移行する方法について説明します。 移行するユーザーが 500 人を超える場合や、移行する SharePoint データの量が多い場合は、 Microsoft ソリューション プロバイダーと連携することをお勧めします。

この記事のシナリオは、2 つの個別のOffice 365組織を使用する 2 つの架空の企業 (Contoso.com と Fabrikam.com) に基づいています。 Contoso は Fabrikam を購入し、Fabrikam ユーザーとデータを contoso.com Office 365 organizationに移動しています。

ドメイン テナント 1 (ターゲット) テナント 2 (ソース)
ユーザー定義の電子メール ドメイン: contoso.com fabrikam.com
Office 365 の初期ドメイン: contoso.onmicrosoft.com fabrikam.onmicrosoft.com

シナリオ: サードパーティの移行ツールを使って移行する

このシナリオでは、Fabrikam Company のユーザー、グループ、およびその他のオブジェクトがOffice 365で手動で作成され、スクリプトを介してポータルにインポートされるか、Active Directory Domain Services (AD DS) 統合によって Contoso Active Directory にマージされることを前提としています。

完了すると、すべての Fabrikam アカウントが Contoso.com Office 365 organizationに存在し、すべて UPN に使用@fabrikam.comされます。 最終的なアドレス割り当て方式は単純で簡潔なものを選びましたが、それぞれの要件に合うように変更できます。

メールボックスを 1 つの Microsoft 365 または Office 365 組織から別の組織へ移行させる方法。

計画作成: 移行の 2 週間前

ユーザーを移行するためのサードパーティ移行ツールを使う場合は、移行に必要なライセンスを購入します。

クライアントの考慮事項

Outlook 2010 以降の場合は、Outlook ユーザー プロファイルを削除し、もう一度作成する必要があります。

Outlook 2007 と Outlook 2010 の場合、クライアントを再起動するときに、自動検出によってクライアントが構成され、 が再構築されます。OST ファイル。

Skype for Business クライアントでは、移行が完了したら、プロセスによって新しいプロファイルが作成されるため、連絡先を追加する必要があります。

テナントの準備とライセンス

ソース テナントは、ユーザーとデータを移行する Fabrikam Office 365 organizationです。 ターゲット テナントは、移行先の Contoso Office 365 organizationです。

  1. 移行元のテナントから移行するすべてのメールボックスを収容できるように、移行先の Office 365 組織のライセンスを増やします。

  2. Office 365 から別の Office 365 への移行に使用する管理者アカウントを移行元テナントと移行先テナントに作成します。 一部の移行ツールでは、データのスループットを最適化するために、移行元テナントに複数の管理者アカウントを作成することが必要になります。

ターゲット テナントにおけるルーム、リソース、配布グループ、およびユーザー オブジェクトの作成

ターゲット (Contoso) テナントのリソースを作成するには:

  1. Azure AD Connect ツールを使って、Contoso の Active Directory ドメイン サービス (AD DS) のすべてのオブジェクトを同期する場合、移行元 (Fabrikam) テナントの AD DS のオブジェクトは、統合によって移行先テナント (Contoso) の AD DS に作成されます。

    1. AD DS 統合を実行するには、さまざまな AD DS ツールが使用されます。 移行対象オブジェクトの数によっては、統合には多くの時間と計画が必要になるため、移行プロジェクトに先立って実行することもできます。

    2. ディレクトリ同期を使って、すべての新しいユーザーとグループが Contoso.com 移行先テナントと同期していることを確認します。 Fabrikam ドメインは現時点では移動されていないため、オブジェクトは新しいテナントのように表示されます user@contoso.onmicrosoft.com 。 ユーザーとグループのプライマリ メール アドレスは、ドメインの移動が完了した後に に@fabrikam.com更新できます。

  2. ディレクトリ同期を使用しない場合、またはソース テナントのMicrosoft 365 管理センターで会議室、リソース、グループ、またはユーザーが管理されている場合は、これらのオブジェクトをターゲット テナントに作成する必要があります。 オブジェクトは、Microsoft 365 管理センターで手動で作成できますが、オブジェクトの数が多い場合は Microsoft 365 管理センターの一括追加機能を使うか、Windows PowerShell を使って、CSV ファイルをインポートします。

エンドユーザーとのコミュニケーション

組織内のエンドユーザーに移行を連絡するには:

  1. コミュニケーション計画を作成し、予定されている移行とサービスの変更についてユーザーに通知を始めます。

  2. 移行後、オートコンプリート リスト (ニックネーム キャッシュとも呼ばれる) は、すべての Outlook クライアントでクリアする必要があります。 Outlook 2010 以降のオートコンプリート リストからすべての受信者を削除するには、「オートコンプリートを利用した宛先、CC、BCC ボックスの入力候補表示を管理する」を参照してください。

  3. 移行後に問題が発生した場合に備えて、新しいサインオン情報を使用してOutlook on the web (旧称 Outlook Web App) に接続する方法をユーザーに認識してもらいます。

準備と移行前のアクティビティ: 移行の 3 日前

ドメインの準備

移行用にドメインを準備するには、次の手順を実行します。

  1. Fabrikam.com 電子メール ドメイン用に、ターゲット (Contoso) テナントのドメイン検証プロセスを開始します。

  2. contoso.com Microsoft 365 管理センターで、Fabrikam.com ドメインを追加して、ドメイン ネーム システム (DNS) で検証用 TXT レコードを作成します。

    注:

    ドメインは他のテナントでまだ使用されているため、検証は失敗します。

    この手順を実行すると、最大 72 時間かかる可能性があるため、DNS レコードの時間が伝達されるようになります。 最終的な検証は、プロセスの後半で行われます。

移行のスケジュール設定

移行のスケジュールを設定するには:

  1. 移行するユーザー メールボックスのマスター リストを作成します。

  2. 使用しているサード パーティの移行ツールのメールボックス マッピング .CSV ファイルを作成します。 移行ツールは移行時にこのマッピング ファイルを使って、移行元のメールボックスと移行先テナントのメールボックスを一致させます。 カスタム電子メール ドメインは絶えず変更されるため、ソース アカウントのマッピングには *.onmicrosoft.com 'initial' ドメインを使用することをお勧めします

1 つの Office 365 組織から別の組織にメールボックスのデータを移行するために使用される CSV ファイル。

メール エクスチェンジャー レコード (MX レコード) の Time To Live (TTL) テスト

次に、TTL テストをスケジュールします。

  1. DNS で、転送したいプライマリ メール ドメインの MX レコードの TTL 値を小さい値 (例: 5 分) に変更します。 TTL を 5 分に下げることができない場合は、最小値を書き留めます。 たとえば、最小値が 4 時間の場合、移行が開始される 4 時間前に MX レコードを変更する必要があります。

  2. Mx Lookup を使用して、MX と DNS の変更を確認できます。

ソース テナントでのディレクトリ同期の無効化

ソーステナント Microsoft 365 管理センターで、ディレクトリ同期を無効にします。このプロセスは、移行の前に行う必要があるため、24時間以上かかることがあります。 ポータルで無効化された後、ソース テナント AD DS に対するいかなる変更も Office 365 組織に同期されなくなります。 既存のユーザーとグループのプロビジョニング プロセスを適宜調整します。

移行: 移行当日

移行を実行する日に必要となる手順は次のとおりです。

MX レコードの変更 - 受信メール フローの停止

プライマリ MX レコードを Office 365 から到達できないドメイン ("unreachable.example.com" に変更します。 新しいメールを配信するインターネット メール サーバーはメールをキューに入れ、24 時間にわたって再配信を試みます。 この方法を使うと、メールを配信しているサーバーによっては、一部のメールで配信不能レポート (NDR) が返されることがあります。 これが問題となる場合は、MX レコード バックアップ サービスを使用してください。 メールを何日も何週間もキューに入れるサードパーティのサービスは多数あります。 移行が完了すると、これらのサービスはキューに登録されたメールを新しいOffice 365 organizationに配信します。

ヒント

TTL が短い場合は (5 分など)、大きな中断を引き起こさないようにするため、この手順を稼働日の終了時に実行することができます。 TTL が大きい場合は、前もって MX レコードを変更して TTL の期限が切れるようにする必要があります。 たとえば TTL が 4 時間で、移行を午後 6 時に開始する予定の場合は、午後 2 時前に変更する必要があります。

必要な場合は、MX と DNS の変更を確認してください。 MX と DNS の変更を確認するには、Nslookup または MxToolbox などのサービスを使用できます。

ソース テナントの準備

ドメインをターゲット テナントに移動する前に、ソース テナントのすべてのオブジェクトからプライマリ メール ドメイン (fabrikam.com) が削除されている必要があります。

  1. 使用している SharePoint Online パブリック Web サイトでドメインのセットアップも完了している場合は、まず、ドメインを削除する前に Web サイトの URL を初期ドメインに設定し直す必要があります。

  2. Lync 管理ポータルを使って、すべての Lync ライセンスをソース テナントのユーザーから削除します。 これにより、Fabrikam.com に接続されている Lync Sip アドレスが削除されます。

  3. Office 365 のソース メールボックスにある既定の電子メール アドレスを、初期ドメイン (fabrikam.onmicrosoft.com) にリセットします。

  4. すべてのディストリビューション Lists、会議室、リソースの既定のメール アドレスを、ソース テナントの初期ドメイン (fabrikam.onmicrosoft.com) にリセットします。

  5. をまだ使用 @fabrikam.comしているユーザー オブジェクトから、すべてのセカンダリ メール (プロキシ アドレス) を削除します。

  6. ソース テナントの既定のドメインを fabrikam.onmicrosoft.com ルーティング ドメインに設定します (管理ポータルの右上で自分の会社名をクリックします)。

  7. Windows PowerShell コマンド Get-MsolUser -DomainName Fabrikam.com を使用して、引き続きドメインを使用していて削除をブロックしているすべてのオブジェクトの一覧を取得します。

  8. よくあるドメイン削除の問題については、「Office 365 からドメインを削除するとエラー メッセージが表示される 」を参照してください。

ターゲット テナントの準備

contoso.com テナントで、Fabrikam.com ドメインの確認を完了します。 古いテナントからドメインを削除した後、場合によっては 1 時間待機する必要があります。

  1. 自動検出 CNAME (内部/外部) オプションを構成します。

  2. AD FS を使用している場合は、AD FS のターゲット テナントで新しいドメインを構成します。

  3. contoso.com テナントでメールボックスのアクティベーションを開始します。>すべての新しいユーザー アカウントにライセンスを割り当てます。

  4. 新しいユーザーに、プライマリ アドレスとして Fabrikam.com メール ドメインを設定します。 この操作を行うには、ポータル内で複数のライセンス未付与のユーザーを選んで編集するか、Windows PowerShell を使用します。

  5. パスワード ハッシュ同期機能、パススルー認証、または AD FS を使用していない場合は、ターゲット (Contoso) テナント内のすべてのメールボックスにパスワードを設定します。 共通パスワードを使用していない場合は、新しいパスワードをユーザーに通知します。

  6. メールボックスにライセンスが付与されてアクティブ化されたら、メール ルーティングを切り替えます。 Fabrikam MX レコードを Office 365 ターゲット (Contoso) テナントにポイントします。 MX TTL の有効期限が切れると、メールが新しい空のメールボックスに流れ込み始めます。 MX バックアップ サービスを使用している場合は、メールを新しいメールボックスにリリースできます。

  7. ターゲット テナントで、新しいメールボックスにおける送受信のメール フローの検証テストを実行します。

  8. Exchange Online Protection (EOP) を使用している場合: ターゲット テナントで、メール フロー ルール (トランスポート ルールとも呼ばれます)、コネクタ、ブロック リスト、許可リストなどをソース テナントから再作成します。

移行の開始

ダウンタイムとユーザーの不便を最小限に抑えるために、最適な移行方法を決定します。

  • ユーザー数が 500 人以下の場合: ターゲット テナントのメールボックスにメール、予定表、連絡先データを移行します。 可能であれば、メール移行の日付を限定します (最新 6 か月のデータ、など)。

  • 500 人を超えるユーザーの移行: すべてのユーザーに対して連絡先、予定表、および 1 週間のメールのみを移行し、成功日または数週間に複数のパスを実行して古いメール データをメールボックスに入力するマルチパス アプローチを使用します。

サードパーティの移行ツールでメールの移行を開始します。

  1. ベンダーから提供されたツールを使用して、移行の進捗を監視します。 移行中は、管理者および移行チームに定期的な進捗レポートを送信します。

  2. すべての移行が完了した後、オプションで 2 番目または 3 番目のパス移行を実行します。

移行の終了時に、Outlook 2007 と 2010 はユーザーごとにメールボックス全体を同期し、各メールボックスに移行したデータの量に応じてかなりの帯域幅を消費します。 Outlook 2013 では、既定では 12 か月分のデータのみがキャッシュされます。 この設定は、多かれ少なかれデータ (たとえば、3 か月のデータのみ) に構成でき、帯域幅の使用量を減らすことができます。

移行後: クリーンアップ

ユーザーは、移行した電子メール メッセージに返信すると NDR を受け取る場合があります。 Outlook オートコンプリートリスト (ニックネームキャッシュとも呼ばれる) は、クリアする必要があります。 Outlook 2010 以降のオートコンプリート リストからすべての受信者を削除するには、「オートコンプリートを利用した宛先、Cc、Bcc ボックスの入力候補表示を管理する」を参照してください。 あるいは、すべてのユーザーに従来の DN を x.500 プロキシ アドレスとして追加します。

サンプル Windows PowerShell スクリプト

独自のスクリプトを作成するための足掛かりとして、以下のサンプル Windows PowerShell スクリプトをご利用ください。

Office 365 一括パスワード リセット

  1. password.csv という名前の CSV ファイルを作成します。

  2. このファイルに "upn" 列と "newpassword" 列を挿入します (例: johnsmith@contoso.com、Password1)

  3. 次の Windows PowerShell コマンドを使用します:

    Import-Csv password.csv|%{Set-MsolUserPassword -userPrincipalName $_.upn -NewPassword $_.newpassword -ForceChangePassword $false}
    

特定のプロキシ アドレスを持つすべての Office 365 アカウントを CSV ファイルにコピーする

##########################################################################
# Script: showproxies.ps1
# Copies all accounts in Microsoft 365 that contain/don't contain a specific
# proxyaddress to a .CSV file (addresses.csv)
#
# Change the following variable to the proxy address string you want to find:
# $proxyaddr = "onmicrosoft.com"
################################################################################
$proxyaddr = "onmicrosoft.com"
# Create an object to hold the results
$addresses = @()
# Get every mailbox in the Exchange Organization
$Mailboxes = Get-Mailbox -ResultSize Unlimited
# Loop through the mailboxes
ForEach ($mbx in $Mailboxes) {
    # Loop through every address assigned to the mailbox
    Foreach ($address in $mbx.EmailAddresses) {
       # If it contains XXX,  Record it
        if ($address.ToString().ToLower().contains($proxyaddr)) {
            # This is an email address. Add it to the list
            $obj = "" | Select-Object Alias,EmailAddress
            $obj.Alias = $mbx.Alias
            $obj.EmailAddress = $address.ToString() #.SubString(10)
            $addresses += $obj
      }
    }
}
# Export the final object to a csv in the working directory

$addresses | Export-Csv addresses.csv -NoTypeInformation
# Open the csv with the default handler
Invoke-Item addresses.csv

##### END OF SHOWPROXIES.PS1

Microsoft 365 で会議室メールボックスを一括作成する

注:

  • 次のスクリプトを実行する前に、Exchange Online PowerShell モジュールをインストールする必要があります。 手順については、「Exchange Online PowerShell モジュールのインストールと保守」を参照してください。 モジュールでは、先進認証が使用されます。

  • Microsoft 365 または Microsoft 365 GCC 組織の場合は、通常、スクリプト as-is を使用できます。 Office 365 Germany、Microsoft 365 GCC High、または Microsoft 365 DoD 組織の場合、スクリプトの Connect-ExchangeOnline 行を編集する必要があります。 具体的には、ExchangeEnvironmentName パラメーターと、所属組織の種類に適した値を使用する必要があります。 詳細については、「Exchange Online PowerShell に接続する」を参照してください。

################################################################################
# Script: create-rooms.ps1
# Description:*** RUN THIS SCRIPT FROM A WINDOWS POWERSHELL SESSION ***
# This script creates room mailboxes in Microsoft 365.
# Syntax:Create-Rooms.ps1 -InputFile "file name.csv"
#
# Dependencies: Input file should contain 3 columns: RoomName, RoomSMTPAddress, RoomCapacity
#
################################################################################
param( $inputFile )
Function Usage
{
$strScriptFileName = ($MyInvocation.ScriptName).substring(($MyInvocation.ScriptName).lastindexofany("\") + 1).ToString()
@"
NAME:
$strScriptFileName
EXAMPLE:
C:\PS> .\$strScriptFileName -InputFile `"file name.csv`"
"@
}
If (-not $InputFile) {Usage;Exit}

If ($ExchRemoteCmdlets.State -ne "Opened")
{
Write-Host
Write-Host Connecting to Exchange Online PowerShell...
Write-Host
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
$Global:ExchRemoteCmdlets = Get-PSSession -Name ExchangeOnlineInternalSession*
}
# Import the CSV file in Exchange Online
$csv = Import-CSV $inputfile
# Create Rooms contained in the CSV file in Exchange Online
$csv | foreach-object{
New-Mailbox -Name $_.RoomName -Room -PrimarySmtpAddress $_.RoomSMTPAddress -ResourceCapacity $_.RoomCapacity
}
##### END OF CREATE-ROOMS.PS1

セカンダリ メール アドレスをメールボックスから一括削除する

注:

  • 次のスクリプトを実行する前に、Exchange Online PowerShell モジュールをインストールする必要があります。 手順については、「Exchange Online PowerShell モジュールのインストールと保守」を参照してください。 モジュールでは、先進認証が使用されます。

  • Microsoft 365 または Microsoft 365 GCC 組織の場合は、通常、スクリプト as-is を使用できます。 Office 365 Germany、Microsoft 365 GCC High、または Microsoft 365 DoD 組織の場合、スクリプトの Connect-ExchangeOnline 行を編集する必要があります。 具体的には、ExchangeEnvironmentName パラメーターと、所属組織の種類に適した値を使用する必要があります。 詳細については、「Exchange Online PowerShell に接続する」を参照してください。

##########################################################################
#      Script:  remove-proxy.ps1
# Description:*** RUN THIS SCRIPT FROM A WINDOWS POWERSHELL SESSION ***
# This script will remove a secondary email address from many users
#
# Syntax:remove-proxy.ps1 -InputFile "filename.csv"
#
# Dependencies:Input file should contain 2 columns: Username, Emailsuffix
#               Example:  Username=tim, Emailsuffix=fabrikam.com
# Script will remove the address tim@fabrikam.com from the mailbox for Tim.
# NOTE: Address must be secondary; it will not remove primary email address.
#
################################################################################
param( $inputFile )
Function Usage
{
$strScriptFileName = ($MyInvocation.ScriptName).substring(($MyInvocation.ScriptName).lastindexofany
("\") + 1).ToString()
@"
NAME:
$strScriptFileName
EXAMPLE:
C:\PS> .\$strScriptFileName -inputfile `"file name.csv`"
"@
}
If (-not $inputFile) {Usage;Exit}

If ($ExchRemoteCmdlets.State -ne "Opened")
{
Write-Host
Write-Host Connecting to Exchange Online PowerShell...
Write-Host
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
$Global:ExchRemoteCmdlets = Get-PSSession -Name ExchangeOnlineInternalSession*
}
# Import the CSV file and change primary smtp address in Exchange Online
$csv = Import-CSV $inputfile
$csv | foreach-object{
# Set variable for email address to remove in Exchange Online
$removeaddr = $_.username + "@" + $_.emailsuffix
Write-Host ("Processing User: " + $_.UserName +" - Removing " + $removeaddr)
Set-Mailbox $_.Username -EmailAddresses @{Remove=$removeaddr}
}
##### END OF REMOVE-PROXY.PS1