重複または無効な属性により、Microsoft 365 でのディレクトリ同期が妨げる

現象

Microsoft 365 では、ディレクトリ同期が完了すると、管理者は次の電子メール メッセージの警告を受け取ります。

From: [MSOnlineServicesTeam@MicrosoftOnline.com](mailto:msonlineservicesteam@microsoftonline.com)Subject: Directory Synchronization Error Report

電子メール メッセージのエラー レポートには、次のエラー メッセージが 1 つ以上含まれている場合があります。

  • 同じプロキシ アドレスを持つ同期済みオブジェクトが Microsoft Online Services ディレクトリ内に既に存在します。
  • ユーザー ID が見つからないため、このオブジェクトを更新できません。
  • Unable to update this object in Microsoft Online Services because the following attributes associated with this object have values that may already be associated with another object in your local directory. (このオブジェクトに関連付けられた次の属性値はローカル ディレクトリで既に他のオブジェクトに関連付けられているため、Microsoft Online Services でこのオブジェクトを更新できません。)
  • このオブジェクトに関連付けられている次の属性には、ローカル ディレクトリ サービス内の別のオブジェクトに既に関連付けられている可能性がある値があるため、このオブジェクトを更新できません: [UserPrincipalName john@contoso.com;]。 ローカル ディレクトリ内の重複する値を修正または削除します。
  • このオブジェクトに関連付けられている次の属性には、ローカル ディレクトリ サービス内の別のオブジェクトに既に関連付けられている可能性がある値があるため、このオブジェクトを更新できません: [ProxyAddresses SMTP:john@contoso.com;]。 ローカル ディレクトリ内の重複する値を修正または削除します。

さらに、Microsoft Entra ID (Connect) Sync Service を実行している場合は、次のいずれかのエラー メッセージを含むイベント ID 6941 のインスタンスがアプリケーション ログイン イベント ビューアーに記録されます。

Event ID: 6941
Log Name: Application
Source: ADSync
Level: Error
Details:
ECMA2 MA export run caused an error. 

Error Name: AttributeValueMustBeUnique
Error Detail: Unable to update this object because the following attributes associated with this object have values that may already be associated with another object in your local directory services: [UserPrincipalName john@contoso.com;]. Correct or remove the duplicate values in your local directory. Please refer to https://support.microsoft.com/kb/2647098 for more information on identifying objects with duplicate attribute values.
Event ID: 6941
Log Name: Application
Source: ADSync
Level: Error
Details:
ECMA2 MA export run caused an error.

Error Name: InvalidSoftMatch
Error Detail: Unable to update this object because the following attributes associated with this object have values that may already be associated with another object in your local directory services: [ProxyAddresses SMTP:john@contoso.com;]. Correct or remove the duplicate values in your local directory.

原因

この問題は、オンプレミスの Active Directory Domain Services (AD DS) スキーマ内のユーザー オブジェクトに重複または無効なエイリアス値があり、ディレクトリ同期中にこれらのユーザー オブジェクトが AD DS スキーマから Microsoft 365 に正しく同期されない場合に発生する可能性があります。

Microsoft 365 のすべてのエイリアス値は、特定のorganizationに対して一意である必要があります。 簡易メール転送プロトコル (SMTP) アドレスのアット マーク (@) の後に複数の一意のサフィックスがある場合でも、すべてのエイリアス値は一意である必要があります。

オンプレミス環境では、SMTP アドレスのアット マーク (@) の後のサフィックスに基づいて一意である限り、エイリアス値を持つことができます。

Microsoft 365 のクラウドで重複するエイリアス値を持つオブジェクトを作成してエイリアスを一意にした場合、1 つのエイリアスに一意の番号が追加されます。 (たとえば、重複するエイリアス値が "Albert" の場合、そのうちの 1 つが自動的に "Albert2" になります。"Albert2" が既に使用されている場合、エイリアスは "Albert3" になります。など)。ただし、重複するエイリアス値を持つオブジェクトがオンプレミスの AD DS に作成された場合、ディレクトリ同期の実行時にオブジェクトの競合が発生し、オブジェクトの同期が失敗します。

ソリューション

この問題を解決するには、他の AD DS オブジェクトと競合する重複する値と値を特定します。 これを行うには、次のいずれかの方法を使用します。

方法 1: IdFix Microsoft Entra同期ツールのエラー修復ツールを使用する

IdFix Microsoft Entra同期ツール エラー修復ツールを使用して、重複または無効な属性を特定します。 IdFix ツールを使用して重複する属性を解決するには、次の Microsoft サポート技術情報の記事を参照してください。

IdFix ツールを 実行した後、2 つ以上のオブジェクトの ERROR 列に "Duplicate" が表示される2857385

方法 2: 既存のオンプレミス ユーザーを Microsoft Entra ユーザーにマップする

これを行うには、次の Microsoft サポート技術情報の記事を参照してください。

2641663 SMTP 照合を使用して、ディレクトリ同期のためにオンプレミスのユーザー アカウントを Microsoft 365 ユーザー アカウントと照合する方法

方法 3: ディレクトリ同期によってMicrosoft Entra IDに作成されなかったオブジェクトによって発生する属性の競合を特定する

Microsoft 365 管理ツールを使用して作成された (およびディレクトリ同期によってMicrosoft Entra IDに作成されなかった) ユーザー オブジェクトによって発生する属性の競合を特定するには、次の手順に従います。

  1. オンプレミスの AD DS ユーザー アカウントの一意の属性を決定します。 これを行うには、Windows サポート ツールがインストールされているコンピューターで、次の手順を実行します。

    1. [ スタート] をクリックし、[ 実行] をクリックし、「ldp.exe」と入力して、[OK] をクリック します

    2. [ 接続] をクリックし、[ 接続] をクリックし、AD DS ドメイン コントローラーのコンピューター名を入力して、[OK] をクリック します

    3. [ 接続] をクリックし、[ バインド] をクリックし、[OK] をクリック します

    4. [ 表示] をクリックし、[ ツリー ビュー] をクリックし、[ BaseDN ] ドロップダウン リストで AD DS ドメインを選択し、[OK] をクリック します

    5. ナビゲーション ウィンドウで、正しく同期されていないオブジェクトを見つけてダブルクリックします。 ウィンドウの右側にある [詳細] ウィンドウには、すべてのオブジェクト属性が一覧表示されます。 次の例は、オブジェクト属性を示しています。

      オブジェクト属性の例を示すスクリーンショット。

    6. userPrincipalName 属性の値と、複数値 proxyAddresses 属性の各 SMTP アドレスを記録します。 これらの値は後で必要になります。

      属性名 Notes (メモ)
      proxyAddresses proxyAddresses (3): x500:/o=Exchange/ou=Exchange 管理グループ (GroupName)/cn=Recipients/cn=GUID;smtp:7628376@service.contoso.com;SMTP:7628376@contoso.com; 属性ラベルの横にかっこで囲んで表示される数値は、複数値属性のプロキシ アドレス値の数を示します。 各個別のプロキシ アドレス値はセミコロン (;)で示されます。 プライマリ SMTP プロキシ アドレスの値は、大文字の "SMTP:" で示されます
      userPrincipalName 7628376@contoso.com

      注:

      Ldp.exe は、Windows Server 2008 および Windows Server 2003 サポート ツールに含まれています。 Windows Server 2003 サポート ツールは、Windows Server 2003 インストール メディアに含まれています。 または、ツールを入手するには、次の Microsoft Web サイトにアクセスします。 Windows Server 2003 Service Pack 2 32 ビット サポート ツール

  2. Windows PowerShell用の Azure Active Directory モジュールを使用して Microsoft 365 に接続します。 そのために、以下の手順に従ってください。

    1. [スタート] をクリックし、[すべてのプログラム] をクリックし、[Microsoft Entra ID] をクリックし、Windows PowerShellの [Azure Active Directory モジュール] をクリックします。

    2. 表示される順序で次のコマンドを入力し、各コマンドの後で Enter キーを押します。

      $cred = get-credential
      

      注:

      メッセージが表示されたら、Microsoft 365 管理者の資格情報を入力します。

      Connect-MSOLService –credential $cred
      

      注:

      Azure AD および MSOnline PowerShell モジュールは、2024 年 3 月 30 日の時点で非推奨となりました。 詳細については、 非推奨の更新プログラムに関するページを参照してください。 この日付以降、これらのモジュールのサポートは、Microsoft Graph PowerShell SDK への移行支援とセキュリティ修正に限定されます。 非推奨のモジュールは、2025 年 3 月 30 日まで引き続き機能します。

      Microsoft Entra ID (旧称 Azure AD) と対話するには、Microsoft Graph PowerShell に移行することをお勧めします。 移行に関する一般的な質問については、移行に関する FAQ を参照してください。 メモ: バージョン 1.0.x の MSOnline では、2024 年 6 月 30 日以降に中断が発生する可能性があります。

      コンソール ウィンドウは開いたままにします。 次の手順で使用する必要があります。

  3. Microsoft 365 で重複する userPrincipalName 属性を確認します。

    手順 2 で開いたコンソール接続で、表示される順序で次のコマンドを入力し、各コマンドの後で Enter キーを押します。

    $userUPN = "<search UPN>"
    

    注:

    このコマンドでは、プレースホルダー "search UPN" は、手順 1f で記録した UserPrincipalName 属性を表します。

    get-msoluser –UserPrincipalName $userUPN | where {$_.LastDirSyncTime -eq $null}
    

    コンソール ウィンドウは開いたままにします。 次の手順でもう一度使用します。

  4. 重複する proxyAddressesattributes を確認します。 手順 2 で開いたコンソール接続で、表示される順序で次のコマンドを入力し、各コマンドの後で Enter キーを押します。

    $UserCredential = Get-Credential
    Connect-ExchangeOnline -Credential $UserCredential
    
  5. 手順 1f で記録したプロキシ アドレス エントリごとに、表示される順序で次のコマンドを入力し、各コマンドの後で Enter キーを押します。

    $proxyAddress = "<search proxyAddress>"
    

    注:

    このコマンドでは、プレースホルダー "search proxyAddress" は、手順 1f で記録した proxyAddresses 属性の値を表します。

    Get-EXOMailbox | Where {[string] $str = ($_.EmailAddresses); $str.tolower().Contains($proxyAddress.tolower()) -eq $true} | foreach {get-MsolUser -ObjectID $_.ExternalDirectoryObjectId | Where {($_.LastDirSyncTime -eq $null)}}
    

手順 3 および 4 のコマンドを実行した後に返される項目は、ディレクトリ同期によって作成されなかったユーザー オブジェクトと、正しく同期されていないオブジェクトと競合する属性を持つユーザー オブジェクトを表します。

競合している属性値または無効な属性値を特定したら、次の Microsoft サポート技術情報の記事の手順に従って問題のトラブルシューティングを行います。

2643629 Azure Active Directory 同期ツールを使用すると、1 つ以上のオブジェクトが同期されない

詳細

この記事のWindows PowerShellコマンドでは、Windows PowerShellに Azure Active Directory モジュールが必要です。 Windows PowerShell用の Azure Active Directory モジュールの詳細については、次の Microsoft Web サイトを参照してください。

Microsoft Entra コマンドレット

さらにヘルプが必要ですか? Microsoft コミュニティを参照してください。