SharePoint Online のカスタム ユーザー プロファイル プロパティの一括更新

Client Side Object Model (CSOM) バージョン (4622.1208 以降) の一部として、SharePoint にカスタム ユーザー プロファイル プロパティを一括インポートする機能が加わりました。 これより前のリリースでは、唯一のオプションは、個々のユーザー プロファイルに固有のプロパティを更新するためのユーザー プロファイル CSOM 操作を活用することでした。 ただし、このアプローチは非効率的で時間がかかりすぎます (特に、何千ものプロファイルを処理する場合)。

多数の企業がカスタム属性を SharePoint ユーザー プロファイル サービスにレプリケートする必要があるため、さらに効率のよいユーザー プロファイル一括 API (UserProfile.BatchUpdate.API) がリリースされました。

ユーザー プロファイル一括更新プロセスの概要

UPA 一括更新フロー

次のリストで、ユーザー プロファイル一括更新プロセスの流れを説明します。

  1. ユーザー属性は、会社の Active Directory から Azure Active Directory (Azure AD) に同期されます。 オンプレミスと Azure 間で、どの属性がレプリケートされるかを選択できます。
  2. 標準化された属性セットが Azure AD から Office 365 内の SharePoint Online ユーザー プロファイル ストアにレプリケートされます。 オンプレミスの SharePoint とは異なり、これらの属性をカスタマイズすることはできません。
  3. カスタム同期ツールで一括更新 API が利用されます。 このツールは JSON ファイルを Office 365 テナントにアップロードし、インポート プロセスをキューに登録します。 このツールは、マネージ コード (.NET) を使用して実装することも、CSOM API を使用する PowerShell スクリプトとして実装することもできます。
  4. 基幹業務 (LOB) システムまたは任意の外部システムが JSON ファイル内の情報のソースです。 これは Active Directory および任意の外部システムからのデータを組み合わせることもできます。 API の観点では、LOB システムをオンプレミスの SharePoint ファームにさえできることに注意してください。
  5. SharePoint Online で実行しているすぐに使えるサーバー側タイマー ジョブが、キューに登録されたインポート要求をチェックして、API 呼び出しと付属の JSON ファイル内の情報に基づいて実際のインポート操作を実行します。
  6. 拡張ユーザー プロファイル情報は、ユーザー プロファイルから入手して、SharePoint Online のすぐに使える機能またはカスタム機能に使用できます。

注:

インポートは、エンド ユーザーが編集できるように設定されていないユーザー プロファイル プロパティにのみ機能します。 これは、ユーザー プロファイルのインポート プロセスによって、既にエンド ユーザーが更新した情報が上書きされるのを防ぐためです。 さらに、インポートは、Active Directory のコア プロパティではないカスタム プロパティのみを許可します。 これらは、Azure AD と同期する必要があります。 これらのコア ディレクトリ プロパティの一覧については、後述する FAQ セクションに記載されている表を参照してください。

マネージ コード (.NET) と PowerShell の両方から CSOM API UserProfile.BatchUpdate.API を使用する方法を示す短いビデオを以下に示します。

ユーザー プロファイル プロパティのインポート プロセス

完全なプロセスを以下に示します。

  1. ユーザーを Office 365 テナントで作成するか、関連する Azure AD に同期します。
    • ユーザーを Azure AD に同期すると、標準化された属性セットも SharePoint Online User Profile Service に同期されます。
  2. User Profile Service 内で必要なすべてのカスタム プロパティを作成します。
    • カスタム プロパティを User Profile Service で作成するリモート API は存在しないため、この手順は、カスタム ユーザー プロファイル プロパティが必要なテナントごとに手動で実行する必要があります (これはテナントごとに 1 回だけ実行する必要があります)。
    • インポートできるのは “エンド ユーザーによる編集が許可” されていないユーザー プロファイル プロパティのみです。 JSON オブジェクト プロパティを “エンド ユーザーによる編集が可能” とマークされているユーザー プロファイル プロパティにインポートしようとすると、CSOM API が呼び出されたときに例外が発生します。
  3. JSON ファイルを作成して Office 365 テナントにアップロードします
    • 更新対象の情報を含む JSON データ ファイルを Office 365 テナントにアップロードする必要があります。
    • インポート プロセスで例外が発生した場合、同じドキュメント ライブラリに保存される追加のログ情報が SharePoint によって提供されます。このライブラリでは、新しいサブ フォルダーにファイルが保存されます。
    • ログ ファイルと JSON ファイルのクリーニングは、自動的には行われず、API を使用したカスタム ソリューションによって行われます。 実装では、これらのファイルのライフ サイクルについて検討する必要があります。 これらのファイルはドキュメント ライブラリに保存されるため、サイト コレクションに割り当てられたストレージの一部を消費することになります。
  4. インポート ジョブをキュー登録するための UPA 一括インポート API を呼び出します。
    • CSOM API を使用してインポート プロセスをキューに登録します。 これは、マネージ コード (.NET) または PowerShell を使用して CSOM コードを実行することにより、実現されます。
    • ジョブをキューに登録するメソッドには、プロパティ マッピング情報とデータ ファイルの場所が必要です。 実際のインポート プロセスがキューに登録されるため、このメソッドはすぐに実行されます。実際のインポート プロセスが、その後で、SharePoint Online のバックエンド プロセスの一部として実行されます。
  5. インポート ジョブの状態を確認します
    • また、リモート API を使用して、特定のインポート ジョブまたは最近のインポート ジョブのすべての状態を確認できます。 特定のコールの状態を確認できるようにするには、ジョブがキューに登録されたときに返される値として受け取った一意のジョブ ID を格納する必要があります。

JSON ファイルを作成してアップロードする

インポート プロセスでは、プロパティとその値を含む JSON ファイルが使用されます。 このファイルの予想構造を以下に示します。

{
   "value": [
     {
       "<IdName>": "<UserIdValue_1>",
       "<AttributeName_1>": "<User1_AttributeValue_1>",
       "<AttributeName_2>": "<User1_AttributeValue_2>",
     },
     {
       "<IdName>": "<UserIdValue_2>",
       "<AttributeName_1>": "<User2_AttributeValue_1>",
       "<AttributeName_2>": "<User2_AttributeValue_2>",
     },
     {
       "<IdName>": "<UserIdValue_n>",
       "<AttributeName_1>": "<Usern_AttributeValue_1>",
       "<AttributeName_2>": "<Usern_AttributeValue_2>",
     }
   ]
}

以前のサンプルの形式を使用した単純なファイルの例を以下に示します。 この例では、ID 解決が IdName プロパティに基づいており、更新対象の CityOffice という 2 つのプロパティがあります。 ファイルには、テナント内の 4 つの異なるアカウントの情報が含まれています。 コード内で正しいプロパティ マッピングが指定されているため、ソース ファイルで使用されるプロパティ名は、SharePoint Online User Profile Service で使用されているものと同じとは限りません。 

{
  "value": [
    {
      "IdName": "vesaj@contoso.com",
      "City": "Helsinki",
      "Office": "Viper"
    },
    {
      "IdName": "bjansen@contoso.com",
      "City": "Brussels",
      "Office": "Beetle"
    },
    {
      "IdName": "unknowperson@contoso.com",
      "City": "None",
      "Office": ""
    },
    {
      "IdName": "erwin@contoso.com",
      "City": "Stockholm",
      "Office": "Elite"
    }
  ]
}

ソース データ ファイルの制限

個々のソース データ ファイルに対する制限を以下に示します。

  • 最大ファイル サイズ: 2 GB
  • 最大プロパティ数: 500,000
  • プロパティ値の円記号 () は、別の円記号でプリペンドしてエスケープする必要があります
  • ソース ファイルはプロセスを開始する同じ SharePoint Online テナントにアップロードする必要があります

注:

更新ファイルの中に既定の西ヨーロッパ言語エンコード (iso-8859-1) に含まれない文字がある場合は、更新ファイルにバイト オーダー マーク (BOM) が指定されている必要があります。 既定のエンコードでは各国語文字が正しく解釈されない場合があるため、UTF-8 エンコードを使用することをお勧めします。 このエンコードの BOM は、16 進数で 'EF BB BF' です。 これは、ファイル ストリーム作成時にファイルのバイト配列の先頭に配置されます。 テキスト エディターを使用する場合、保存する前に、エンコードの種類として UTF-8 を選択してください。

インポート プロセスをキューに登録する

一括インポート プロセスの CSOM API は、Office365Tenant オブジェクトに配置された QueueImportProfileProperties メソッドを呼び出することにより、キューに登録することができます。 これは非同期呼び出しのため、ソース データがダウンロードされたり、インポートが実行されたりせず、単に後で実行する作業項目がキューに追加されるだけです。

メソッドの完全署名を以下に示します。

public ClientResult<Guid> QueueImportProfileProperties(
                          ImportProfilePropertiesUserIdType idType,
                          string sourceDataIdProperty,
                          IDictionary<string, string> propertyMap,
                          string sourceUri);

パラメーター

  • idType: ImportProfilePropertiesUserIdType

    ユーザー プロファイルを検索する場合に使用する ID の種類。 使用可能な値は EmailCloudId、および PrincipalName です。 種類に関係なく、インポートが機能するためには、ユーザーが User Profile Service 内に既に存在している必要があることに注意してください。 一意性を確保するには、CloudId の値を使用することをお勧めします。

    ID の種類と Azure AD プロパティ間のプロパティ マッピング:

    UPA 一括インポート ID の種類 Azure AD 属性
    CloudId ObjectID
    PrincipalName userPrincipalName
    Email mail
  • sourceDataIdProperty: System.String

    ソース データ内の ID プロパティの名前。 ソース データからのプロパティの値がユーザーの検索に使用されます。 検索に使用される User Profile Service プロパティは、idType の値に依存します。

  • propertyMap: IDictionary<string, string>

    ソース プロパティ名から User Profile Service プロパティ名へのマップ。 User Profile Service プロパティは既に存在している必要があることに注意してください。 キーはソース ファイルで使用されるプロパティ名で、値は User Profile Service で使用されるプロパティ名です。

  • sourceUri: System.String

    インポートするソース データ ファイルの URI。 しばらくたってからダウンロードが始まる可能性があるため、ファイルをすぐに移動または削除しないでください。

戻り値

キューに登録されたインポート ジョブを識別する GUID。

以前のサンプル入力ファイルを使用することにより、プロセスを開始する C# を使用した例を以下に示します。

// Create an instance of the Office 365 Tenant object. Loading this object is not technically needed for this operation.
Office365Tenant tenant = new Office365Tenant(ctx);
ctx.Load(tenant);
ctx.ExecuteQuery();

// Type of user identifier ["PrincipalName", "Email", "CloudId"] in the
// user profile service. In this case, we use Email as the identifier at the UPA storage
ImportProfilePropertiesUserIdType userIdType =
      ImportProfilePropertiesUserIdType.Email;

// Name of the user identifier property within the JSON file
var userLookupKey = "IdName";

var propertyMap = new System.Collections.Generic.Dictionary<string, string>();

// The key is the property in the JSON file
// The value is the user profile property Name in the user profile service
// Notice that we have 2 custom properties in UPA called 'City' and 'OfficeCode'
propertyMap.Add("City", "City");
propertyMap.Add("Office", "OfficeCode");

// Returns a GUID that can be used to check the status of the execution and the end results
var workItemId = tenant.QueueImportProfileProperties(
      userIdType, userLookupKey, propertyMap, fileUrl
      );

ctx.ExecuteQuery();

インポート ジョブの状態を確認する

CSOM API を使用して、User Profile Service インポート ジョブの状態を確認することができます。 テナント オブジェクトにはこのためのメソッドが 2 つあります。

  • 個々のインポート ジョブの状態を確認するには、GetImportProfilePropertyJob メソッドを使用します。
  • すべてのインポート ジョブの状態を確認するには、GetImportProfilePropertyJobs メソッドを使用します。

個々のインポート ジョブ

Office365Tenant オブジェクトに配置された GetImportProfilePropertyJob メソッドを使用することにより、個々のインポート ジョブの状態を確認できます。 このメソッドへのパラメーターとして、特定のインポート ジョブの一意識別子を指定する必要があります。

メソッドの完全署名を以下に示します。

public ImportProfilePropertiesJobInfo GetImportProfilePropertyJob(Guid jobId);

パラメーター

  • jobID: System.Guid

    全体的な状態を取得するジョブの ID。

戻り値

指定されたジョブに関する全体的な状態情報を含む ImportProfilePropertiesJobStatus オブジェクト。

保存された識別子を使用して、特定のインポート ジョブの状態を取得する C# を使用した例を以下に示します。

// Check the status of a specific request based on the job id received when we queued the job
Office365Tenant tenant = new Office365Tenant(ctx);
var job = tenant.GetImportProfilePropertyJob(workItemId);
ctx.Load(job);
ctx.ExecuteQuery();

すべてのインポート ジョブ

Office365Tenant オブジェクトに配置された GetImportProfilePropertyJobs メソッドを使用することにより、すべてのインポート ジョブの状態を確認できます。

メソッドの完全署名を以下に示します。

public ImportProfilePropertiesJobStatusCollection GetImportProfilePropertyJobs(); 

パラメーター

インポートの状態情報とともに返される ImportProfilePropertiesJobInfo オブジェクトには、次のプロパティがあります。 

  • JobId: System.Guid

    インポート ジョブの ID。

  • State: ImportProfilePropertiesJobState

    次の値を持つ列挙型:

    • Unknown - ジョブの状態を判断できません。
    • Submitted - ジョブはシステムに送信されました。
    • Processing - ジョブは処理中です。
    • Queued - ジョブは検証に合格して、UPA へのインポート用のキューに登録されています。
    • Succeeded - ジョブはエラーなしで完了しました。
    • Error - ジョブがエラーで完了しました。
  • SourceUri: System.String

    データ ソース ファイルへの URI。

  • Error: ImportProfilePropertiesJobError

    潜在的なエラーを表す列挙型:

    • NoError - エラーは見つかりませんでした。
    • InternalError - サービスの障害によりエラーが発生しました。
    • DataFileNotExist - データ ソース ファイルが見つかりませんでした。
    • DataFileNotInTenant - データ ソース ファイルが同じテナントに属していませんでした。
    • DataFileTooBig - データ ファイルのサイズが大きすぎます。
    • InvalidDataFile - データ ソース ファイルが検証に合格しませんでした (ログ ファイルに追加の詳細が存在する場合があります)。
    • ImportCompleteWithError - データはインポートされましたが、エラーが発生しました。
  • ErrorMessage: System.String

    エラー メッセージ。

  • LogFileUri: System.String

    ログの書き込み先フォルダーへの URI。

戻り値

各ジョブに関する全体的な状態情報を含む ImportProfilePropertiesJobStatus オブジェクトのコレクションである、ImportProfilePropertiesJobStatusCollection オブジェクト。

現在テナントに保存されているすべてのインポート ジョブの状態を取得する C# を使用した例を以下に示します。 これらのジョブは既に処理されているか、キューに登録されている可能性があります。

// Load all import jobs – old and queued ones
Office365Tenant tenant = new Office365Tenant(ctx);
var jobs = tenant.GetImportProfilePropertyJobs();
ctx.Load(jobs);
ctx.ExecuteQuery();
foreach (var item in jobs)
{
   // Check whatever properties needed
   var state = item.State;
}

PowerShell からインポート API を呼び出す

PowerShell を使用することにより、User Profile Service の一括インポート API を利用できます。 つまり、PowerShell スクリプトで必要なパラメーターを指定して直接 CSOM コードを使用します。 これには最新の CSOM 再頒布可能パッケージを、スクリプトを実行するコンピューターにインストールしておく必要があります。

PowerShell を使用すると、Visual Studio 内のコードをコンパイルする必要はありません。これは、一部の顧客にとってより適切なモデルとなる場合があります。

または、PnP PowerShell を使用して、システムに追加のライブラリをインストールしなくても、ユーザー プロファイル サービスの一括インポート API を利用できます。

CSOM ライブラリを使用した PowerShell スクリプトの例

上記コードと同じ操作を実行する PowerShell スクリプトのサンプルを以下に示します。

# Get needed information from the end user
$adminUrl = Read-Host -Prompt 'Enter the admin URL of your tenant'
$userName = Read-Host -Prompt 'Enter your user name'
$pwd = Read-Host -Prompt 'Enter your password' -AsSecureString
$importFileUrl = Read-Host -Prompt 'Enter the URL to the file located in your tenant'

# Get instances to the Office 365 tenant using CSOM
$uri = New-Object System.Uri -ArgumentList $adminUrl
$context = New-Object Microsoft.SharePoint.Client.ClientContext($uri)

$context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName, $pwd)
$o365 = New-Object Microsoft.Online.SharePoint.TenantManagement.Office365Tenant($context)
$context.Load($o365)

# Type of user identifier ["Email", "CloudId", "PrincipalName"] in the user profile service
$userIdType=[Microsoft.Online.SharePoint.TenantManagement.ImportProfilePropertiesUserIdType]::Email

# Name of user identifier property in the JSON
$userLookupKey="idName"

# Create property mapping between the source file property name and the Office 365 property name
# Notice that we have here 2 custom properties in UPA called 'City' and 'OfficeCode'
$propertyMap = New-Object -type 'System.Collections.Generic.Dictionary[String,String]'
$propertyMap.Add("City", "City")
$propertyMap.Add("Office", "OfficeCode")

# Call to queue UPA property import
$workItemId = $o365.QueueImportProfileProperties($userIdType, $userLookupKey, $propertyMap, $importFileUrl);

# Execute the CSOM command for queuing the import job
$context.ExecuteQuery();

# Output the unique identifier of the job
Write-Host "Import job created with the following identifier:" $workItemId.Value

PnP PowerShell を使用してSharePoint Online ユーザープロファイルの更新

ユーザー プロファイル のプロパティを Azure Active Directory から SharePoint Online ユーザー プロファイルに同期するには、PnP PowerShell コマンドレット Sync-PnPSharePointUserProfilesFromAzureActiveDirectory を利用できます。

または、別のソースからユーザー プロファイル プロパティを同期する場合は、 New-PnPUPABulkImportJob を使用できます。

一括インポート ジョブの処理状態を確認するには、Get-PnPUPABulkImportStatusを使用できます。

注:

PnP PowerShell はオープン ソース ソリューションであり、アクティブなコミュニティでサポートが提供されています。 Microsoft からのオープン ソース ツールのサポート SLA はありません。

例外の処理

この API を使用する場合の検証レベルは 2 つあります。 CSOM を使用してインポート プロセスをキューに登録した場合は、指定された値の初期レベルの検証が行われます。 これには、指定されたマッピング プロパティが User Profile Service 内に存在し、エンド ユーザーがこれらのプロパティを編集できないことの確認が含まれます。 キュー API が呼び出されると、初期レベルの検証のみが適用され、指定した情報の最終検証は、インポート ジョブが実際に実行されるときに実行されます。

実際のインポート ジョブの実行中に例外が発生した場合は、追加の詳細を含むログ ファイルが、インポート ファイルと同じドキュメント ライブラリに生成されます。 特定のインポート ジョブのログ ファイルは、そのインポート ジョブの一意識別子を使用して名前が付けられたサブ フォルダーに保存されます。

インポート ジョブの実行結果の例を以下に示します。 次の図では、インポート ファイルが保存されるドキュメント ライブラリに作成された 2 つの異なる実行のための 2 つのサブ フォルダーを確認できます。

ジョブ例外のサブ フォルダー

実際のログ ファイルはサブ フォルダーに保存され、詳細な分析のためにこれを Office 365 からダウンロードできます。

ジョブ例外のログ ファイル

一般的な例外

次の表に、User Profile Service 一括 API の使用を開始したときに発生する可能性がある一般的な例外を示します。

例外の例 詳細
プロパティ名 [AboutMe] はユーザーによる編集が可能です。 これは、ジョブをテナントへ送信する場合の ExecuteQuery メソッドを呼び出した場合に、CSOM API からスローされます。 API が、現在マッピングされているすべてのプロパティがユーザー編集不可になっていることを確認します。 例外によって、使用できないプロパティが明らかになります。

この例では、JSON プロパティを User Profile Service プロパティ内の AboutMe プロパティにマッピングしようとしていますが、AboutMe はユーザー編集可能なプロパティのため、これは許可されません。
InvalidProperty - vesaj@contoso.com プロパティ 'AboutMe' は、ユーザー プロファイル アプリケーションのどのプロパティにもマップされません。 SharePoint Online 内の User Profile Service プロパティにマッピングされていないプロパティを含む JSON データ ファイル。 つまり、ソース データ ファイルには propertyMap パラメーターでマッピングが指定されなかったプロパティが含まれています。 JSON データ オブジェクト内のプロパティごとに、マッピング定義が存在する必要があります。
MissingIdentity - ユーザー オブジェクトに ID がありません ユーザー オブジェクトの ID プロパティが見つかりませんでした。 最も可能性のある原因は、QueueImportProfileProperties メソッドの sourceDataIdProperty 属性が誤って設定されていることです。 JSON ソース ファイルに正しいプロパティがあることと、コードまたはスクリプトでこの属性が適切に割り当てられていることを確認します。
IdentityNotResolvable unknown@contoso.com ユーザー ID を解決できません データ ファイルに ID が含まれていますが、解決できなかったか、User Profile Service 内に存在しませんでした。 この場合、電子メールの unknown@contoso.com 付いたユーザー プロファイルをユーザー プロファイル サービスに配置できませんでした。
DataFileNotJson - JsonToken EndObject は、JsonType 配列を閉じるには無効です。 パス 'value', line 8, position 10. インポート ファイル形式が有効な JSON ではなく、予期された形式とも一致しません。 

よく寄せられる質問

アプリ専用/アドイン専用のアクセス許可を使用してコードを実行できますか。

はい、ファイルの実際のインポートは呼び出し元の ID と同期して行われないため、これは問題なくアプリ専用コンテキストで機能します。

SharePoint アドイン モデルでアプリ専用コンテキストを使用するには、このガイダンスに従って API を実行できるようにクライアント ID とシークレットを登録する必要があります。 さらに、SharePoint アドインを登録するときに、次の XML スニペットを使用して権限を付与する必要があります。

<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
  <AppPermissionRequest Scope="http://sharepoint/social/tenant" Right="FullControl" />
</AppPermissionRequests>

重要

SharePoint Online 用の Azure ACS (Access Control Services) の使用は、2023 年 11 月 27 日の時点で廃止されました。詳細については、完全な廃止のお知らせをご覧ください。 SharePoint のコンテキストの外部で Azure ACS を使用することは、2018 年 11 月 7 日に既に廃止されており、現在は終了です。

廃止とは、機能が新しい投資を受け取ることを意味しますが、まだサポートされています。 有効期間が終了すると、この機能は廃止され、使用できなくなります。

Azure Active Directory に登録されたアプリケーションでアプリ専用を使用するには、アプリケーションを登録し、認証用の X.509 証明書を提供する必要があります。これは、Azure Active Directory 内の SharePoint Online アプリ専用の認証の要件であり、アプリケーションの SharePoint Online アクセス許可スコープを付与します: Sites.FullControl.All および User.ReadWrite.All。

この API によって User Profile Service 内のプロパティは更新されますが、テナント内ではこれらのプロパティをどのように作成できますか。

カスタム ユーザー プロファイル プロパティをプログラムで作成するリモート API はないため、これは手動で操作し、指定のテナントごとに実行する必要があります。 これらのカスタム プロパティを作成する方法については、「SharePoint Online でユーザー プロファイル プロパティを追加して編集する」を参照してください。

この機能はオンプレミスの SharePoint で利用できますか。

この機能は、現時点では SharePoint Online 専用です。 オンプレミスの SharePoint では、この機能があれば役立ちますが、オンプレミスの User Profile Service アプリケーションで属性マッピングを変更できるため、それほど重要ではありません。 SharePoint 2013 の Business Connectivity Service (BCS) を使用して、ユーザー プロファイル属性をインポートすることもできます。 ただし、このオプションは SharePoint 2016 では使用できません。つまり、現時点で SharePoint 2016 用の唯一のオプションは、ユーザー プロファイル Web サービスを利用するカスタマイズを実装することです。

この API を使用して、オンプレミスの SharePoint ファームから SharePoint Online にユーザー プロファイルのプロパティ値を同期できますか。

はい。他のソース システムと同じようにオンプレミスの SharePoint を使用できます。 ユーザー プロファイル値をオンプレミスの SharePoint から JSON ファイル形式にエクスポートする必要があり、そのプロセスは任意の他のシステムから値をインポートする場合とまったく同じになります。

文字列に基づく複数値プロパティをインポートできますか。

いいえ。現在この API ではサポートされていません。

この API を実行するためにどんなアクセス許可が必要ですか。

アプリ専用の認証コンテキストを使用する場合を除き、現在、グローバル管理者権限が必要です。 SharePoint 管理者では十分ではありません。

分類に基づくプロパティをインポートできますか。

いいえ。現在この API ではサポートされていません。

使用されていないコードでマッピングを定義したり、マッピングされていない JSON ファイル内のプロパティを使用したりするとどうなりますか。

コードまたはスクリプトで使用されていないマッピングを定義した場合やデータ ファイルにそのマッピングのプロパティが含まれていない場合は、実行が例外なしで続行され、マッピングされたプロパティに基づいてインポートが適用されます。 ただし、マッピングされていない JSON ファイル内にプロパティが存在する場合は、インポート プロセスが中断され、その特定のジョブ実行に関するログ ファイルに例外の詳細が記録されます。

この一括 API のサイズ制限を超える (つまり、2 GB のファイルまたは 500,000 個のプロパティを上回る) カスタム プロパティを更新する必要がある場合はどうなりますか。

複数のジョブを順にトリガーする (つまり、この API の上限までジョブを 1 回に 1 つずつ実行する) ことにより、ジョブを一括処理する必要があります。 このような高帯域幅のインポートには、完了まで時間がかかることが予想されます。 また、カスタム プロファイル プロパティでは、すべてのジョブの値セット全体をインポートするのではなく、変更の差分のみについてインポート ジョブを最適化する必要があります。

既定では、どの Azure AD 属性が SharePoint Online ユーザー プロファイルに同期されますか。

Azure AD と SharePoint Online User Profile Service の間で同期される属性とそのマッピングの公式なリストについては、次の表を参照してください。

Azure ディレクトリ属性 SharePoint Online のプロファイル プロパティ
ObjectSid SPS-SavedSID
msonline-UserPrincipalName UserName
msonline-UserPrincipalName AccountName
msonline-UserPrincipalName SPS-ClaimID
msonline-UserPrincipalName SPS-UserPrincipalName
GivenName FirstName
sn LastName
Manager Manager
DisplayName PreferredName
telephoneNumber WorkPhone
proxyAddresses WorkEmail
proxyAddresses SPS-SIPAddress
PhysicalDeliveryOfficeName Office
Title タイトル
Title SPS-JobTitle
Department Department
Department SPS-Department
ObjectGuid ADGuid
WWWHomePage PublicSiteRedirect
DistinguishedName SPS-DistinguishedName
msOnline-ObjectId msOnline-ObjectId
PreferredLanguage SPS-MUILanguages
msExchHideFromAddressList SPS-HideFromAddressLists
msExchRecipientTypeDetails SPS-RecipientTypeDetails
msonline-groupType IsUnifiedGroup
msOnline-IsPublic IsPublic
msOnline-ObjectId msOnline-ObjectId
msOnline-UserType SPS-UserType
GroupType GroupType
SPO-IsSharePointOnlineObject SPO-IsSPO

関連項目