複数地域テナントのユーザー プロファイルを操作する

複数地域テナントでは、ユーザーの優先データ場所の定義、ユーザーのプロファイルの場所と個人用サイトの URL の検出、既定およびカスタムのユーザー プロファイル プロパティの読み取りと更新を行なえます。

優先されるデータ場所の定義

複数地域テナントの場合、SharePoint ユーザーの一部は北アメリカ、一部はヨーロッパというように、ユーザーの地理的位置が異なっています。 このモデルは、ユーザー アカウントと個人用サイト (OneDrive for Business) にも適用されます。

ユーザーとユーザー アカウント、およびサイトは、同じ地理的位置にあるのが理想です。 確実にそうするため、個人用サイトを作る前に、ユーザーの優先されるデータ場所をそのユーザーの地理的位置に設定します。

次の図に示す例では、ユーザー vesa@contoso.onmicrosoft.com はヨーロッパに住んでおり、推奨されるデータの場所が EUR に設定されています。 例:

  • ユーザーのプロファイルの既定のコピーは、ヨーロッパの地理的位置になっています。
  • ユーザーの個人用サイトは、ヨーロッパの地理的位置に作成されます。

ユーザー bert@contoso.onmicrosoft.com が優先するデータの場所が NAM に設定されている。 このユーザーは、優先されるデータの場所を設定する前に、ヨーロッパで個人用サイトをホストしていたため、自分のプロファイルがヨーロッパにあります。

既定の地理的位置 (北アメリカ)、サテライト位置 (ヨーロッパ、アジア) にユーザー、地理的位置、優先されるデータ位置の設定を合わせて示した世界地図

ユーザーのプロファイルと個人サイトは同じ地理的位置にあります。 個人用サイトを持っていないユーザー:

  • 優先されるデータの場所を設定すると、プロファイルはその地理的位置に置かれます。
  • 優先されるデータの場所を設定していないと、プロファイルは既定の地理的位置に置かれます。

ユーザーのプロファイルの場所と個人用サイトの URL を検出するには

ユーザーのプロファイルの場所をプログラムで検出するには、以下のいずれかを行います。

  • SharePoint ユーザー プロファイル API を使う。 このアプローチは、すべてのシナリオで動作するので、推奨されます。
  • Microsoft Graph を使う。 個人用サイトを持っているユーザーはこの方法を使えますが、個人用サイトを持っていないユーザーは使えません。

SharePoint ユーザー プロファイル API を使用してプロファイルの場所を検出する

REST または CSOM を介して SharePoint ユーザー プロファイル API を呼び出し、指定のアカウントの個人用サイトのホスト URL を取得することができます。 この URL には、個人用サイトが作成されているかどうかに関係なく、ユーザーの個人用サイトのための個人用サイトのホストが含まれます。 次の例は REST 呼び出しを示しています。

GET https://contoso.sharepoint.com/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)/personalsitehosturl?%40v=%27i%3A0%23.f%7Cmembership%7Cbert%40contoso.onmicrosoft.com%27

C# を使用している場合、次の例で示すとおり、CSOM の方が簡単に使用できます。

public string GetUserPersonalSiteHostUrlCSOM(string userPrincipalName)
{
    string result = null;

    PeopleManager peopleManager = new PeopleManager(this.clientContext);
    var userProperties = peopleManager.GetPropertiesFor($"i:0#.f|membership|{userPrincipalName}");
    this.clientContext.Load(userProperties);
    this.clientContext.ExecuteQuery();
    result = userProperties.PersonalSiteHostUrl;

    return result;
}

個人サイトのホスト URL を持っている場合、合わせて複数地域検出情報を使って、ユーザーのプロファイルをホストする地理的位置のテナント管理サイトの URL を取得することができます。

詳細については、MultiGeo.UserProfileUpdates のサンプルを参照してください。

Microsoft Graph を使用して、ユーザーの個人用サイトの URL を検出する

複数地域テナントにあるユーザーの個人用サイトの URL を検出するには、次の Microsoft Graph 呼び出しを使用することができます。

GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=mySite

個人サイトのホスト URL を持っている場合、合わせて複数地域検出情報を使って、ユーザーのプロファイルをホストする地理的位置のテナント管理サイトの URL を取得することができます。

注:

個人サイトを持っていないユーザーは、この方法は使えません。 その場合は、代わりに SharePoint ユーザー プロファイル API を使ってください。

詳細については、MultiGeo.UserProfileUpdates のサンプルを参照してください。

ユーザー プロファイル プロパティの更新

ユーザー プロファイル プロパティの一括更新は、エンタープライズのお客様に一般的なシナリオとなっています。 使用するプロセスは、更新するユーザー プロファイル プロパティの種類によって異なります。

既定のユーザー プロファイル プロパティを更新する

一部のユーザー プロファイル プロパティは、既定で利用できます。たとえば、DepartmentAboutMePreferredDataLocation がそうです。 Microsoft Graph には地理機能が付いているので、これらのプロパティを更新する際は Microsoft Graph API を使用するようにお勧めします。

次の例は、ユーザー bert@contoso.onmicrosoft.comの AboutMe プロパティを更新する方法を示しています。

GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=aboutme

詳細については、MultiGeo.UserProfileUpdates のサンプルをご覧ください。

優先されるデータ場所のプロパティを更新する

ユーザーの優先されるデータの場所 (preferredDataLocation プロパティ) は、ユーザーの優先される地理的位置を示します。 これは、以下の事項に影響します。

  • ユーザーの個人サイトがプロビジョニングされる地理的位置
  • ユーザーのグループ サイトが作成される地理的位置

優先されるデータの場所は既定のプロパティであるため、次に示す例のように Microsoft Graph API を使って定義するようにお勧めします。

GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=preferredDataLocation

PATCH https://graph.microsoft.com/beta/users/bert@contoso.onmicrosoft.com

JSON payload:
{
    "preferredDataLocation" : "eur"
}

詳細については、MultiGeo.UserPreferredDataLocation の例をご覧ください。

カスタムの SharePoint ユーザー プロファイル プロパティを追加する

SharePoint のユーザー プロファイルに、会社固有のユーザー プロファイル プロパティを追加できます。 SharePoint の複数地域テナントには、次の考慮事項が適用されます。

  • カスタム ユーザー プロファイルのプロパティは、地理的位置のレベルに作成されます。 ヨーロッパの地理的位置でプロパティが作成された場合、プロパティは他の地理的位置では利用できません。 すべての地理的位置でカスタム ユーザー プロファイルのプロパティを作成するのがベスト プラクティスです。 そうすることで、ユーザーが地理的位置を越えて移動した場合にデータが失われるリスクを軽減できます。
  • カスタム ユーザー プロファイルのプロパティは、地理的位置のレベルで読み取りと更新を行う必要があります。 すべての地域の場所にカスタム プロパティを作成した場合は、geo の場所を反復処理し、すべてのユーザーのプロパティを更新する必要があります。

注:

ユーザーの検索結果にユーザーのカスタム プロファイル プロパティを表示するには、プロパティを作成し、少なくともユーザーのプロファイルの場所に設定する必要があります。 たとえば、NAM にあるプロファイルを持つユーザーの場合、ユーザーの検索結果に表示するには、少なくとも NAM geo にカスタム プロパティを設定する必要があります。プロファイルが EUR にあるユーザーの場合、カスタム プロパティは少なくとも EUR で設定する必要があります。

// For SharePoint Online custom properties, use the following approach.
string userPrincipalName = "bert@contoso.onmicrosoft.com";
string userAccountName = $"i:0#.f|membership|{userPrincipalName}";
PeopleManager peopleManager = new PeopleManager(tenantAdminContext);
var propsToRetrieve = new string[] { "CostCenter", "CustomProperty" };
var props = peopleManager.GetUserProfilePropertiesFor(new UserProfilePropertiesForUser(tenantAdminContext, userAccountName, propsToRetrieve));
tenantAdminContext.ExecuteQuery();

int i = 0;
foreach (var prop in props)
{
    Console.WriteLine($"Prop: {propsToRetrieve[i]} Value: {prop}");
    i++;
}

// Update user profile properties
peopleManager.SetSingleValueProfileProperty(userAccountName, "CostCenter", "89786879");
tenantAdminContext.ExecuteQuery();

詳細については、MultiGeo.UserProfileUpdates のサンプルをご覧ください。

ユーザー プロファイルの一括更新 API を使用する

ユーザー プロファイルの一括更新 API を使用すると、複数地域テナントにあるカスタム ユーザー プロファイルのプロパティを一括更新できます。 以下の点に注意してください。

  • この API は、地理的位置レベルで機能しますが、複数地域機能は付いていません。 たとえば、ヨーロッパの地理的位置で API を使用する場合、ヨーロッパのアカウントのみが更新されます。
  • さまざまな地理的位置のアカウントでインポート ファイルを指定しても、API は、その地理的位置のユーザーのプロパティのみを更新します。

関連項目