Partager via


Mettre à jour en bloc les propriétés personnalisées d’un profil d’utilisateur de SharePoint en ligne.

Dans le cadre de la version (CSOM) (4622.1208 ou une version ultérieure) du modèle objet côté client, SharePoint a la capacité d’importer en bloc les propriétés de profil d’utilisateur personnalisées. Avant cette version, votre seule option était de tirer parti des opérations CSOM de profil d’utilisateur pour mettre à jour des propriétés spécifiques pour des profils d’utilisateur individuels. Cependant, cette approche est inefficace et trop longue (en particulier lorsque vous traitez des milliers de profils).

De nombreuses entreprises doivent répliquer des attributs personnalisés vers le service profil utilisateur SharePoint. Par conséquent, une API en bloc de profil utilisateur plus performante a été publiée, notamment UserProfile.BatchUpdate.API.

Vue d’ensemble du processus de mise à jour d’un profil utilisateur en bloc

Flux de mise à jour UPA en bloc

La liste suivante décrit le flux du processus de mise à jour du profil utilisateur en bloc :

  1. Certains attributs utilisateur sont synchronisés à partir du Active Directory de l’entreprise vers Azure Active Directory (Azure AD). Vous pouvez sélectionner les attributs qui sont répliqués localement et sur Azure.
  2. Un ensemble standard d’attributs est répliqué à partir de Azure AD vers le store de profils utilisateur SharePoint en ligne dans Office 365. Contrairement à SharePoint local, ces attributs ne peuvent pas être personnalisés.
  3. Un outil de synchronisation personnalisé tire parti des APIs de mise à jour en bloc. Cet outil charge un fichier JSON vers le client Office 365 et met en file d’attente le processus d’importation. Cet outil peut être implémenté à l’aide d’un code géré (.NET) ou en tant que script PowerShell à l’aide des APIs CSOM.
  4. Un système line-of-business (LOB) ou tout système externe, est la source des informations contenues dans le fichier JSON. Il peut également s’agir d’une combinaison de données provenant de Active Directory et de n’importe quel système externe. Notez que du point de vue de l’API, le système LOB peut même être une batterie de SharePoint locale.
  5. Un travail du minuteur côté serveur out-o-the-box exécuté dans SharePoint Online recherche les demandes d'importation en attente et exécute l'opération d’importation en fonction des appels d'API et des informations contenues dans le fichier JSON fourni.
  6. Les informations de profil utilisateur étendues sont disponibles dans les profils utilisateur et peuvent être utilisées pour toutes les fonctionnalités out-of-the-box ou personnalisées dans SharePoint Online.

Remarque

L’importation fonctionne uniquement pour les propriétés de profil utilisateur qui n’ont pas été définies comme modifiables par les utilisateurs finaux. Cela permet d’empêcher le processus d’importation de profil utilisateur de remplacer les informations qu’un utilisateur final a déjà mises à jour. En outre, l’importation autorise uniquement les propriétés personnalisées qui ne sont pas des propriétés principales Active Directory. Ces propriétés doivent être synchronisées avec Azure Active Directory. Pour obtenir la liste de ces propriétés principales du répertoire, consultez le tableau répertorié dans la section FAQ plus loin dans cet article.

Voici une courte vidéo qui montre comment utiliser l’API CSOM UserProfile.BatchUpdate.API à partir d’un code géré (.NET) et de PowerShell.

Processus d’importation d’une propriété de profil utilisateur

Voici le processus complet :

  1. Créez ou synchronisez des utilisateurs dans un client Office 365 ou à l’Azure AD qui lui est associé.
    • Lorsque les utilisateurs sont synchronisés avec Azure AD, un ensemble standardisé d’attributs est également standardisé avec le service Profil utilisateur de SharePoint Online.
  2. Créez les propriétés personnalisées nécessaires dans le service Profil utilisateur.
    • Étant donné qu’il n’existe aucune API distante pour la création de propriétés personnalisées dans le service Profil utilisateur, cette étape doit être effectuée manuellement pour chacun des clients où des propriétés de profil utilisateur personnalisées sont nécessaires (cette opération ne doit être effectuée qu’une seule fois par client).
    • Seules les propriétés de profil utilisateur qui ne sont pas « modifiables par les utilisateurs finaux » peuvent être importées. Toute tentative d’importation d’une propriété d’objet JSON vers une propriété de profil utilisateur marquée comme « modifiable par les utilisateurs finaux » entraîne une exception lorsque l’API CSOM est appelée.
  3. Créer et charger le fichier JSON sur le client Office 365.
    • Vous devez charger le fichier de données JSON contenant les informations à mettre à jour vers le client Office 365.
    • Dans le cas d’une exception pendant le processus d’importation, SharePoint fournit des informations de journalisation supplémentaires enregistrées dans la même bibliothèque de documents où le fichier existait dans un nouveau sous-dossier.
    • Le nettoyage des fichiers journaux et des fichiers JSON n’est pas effectué automatiquement et est la responsabilité de la solution personnalisée à l’aide de l’API. Vous devez prendre en compte le cycle de vie de ces fichiers dans votre implémentation. Ces fichiers étant stockés dans des bibliothèques de documents, ils consomment une partie du stockage attribué à la collection de sites.
  4. Appelez l’API d’importation UPA en bloc pour mettre en file d’attente le travail d’importation.
    • Utilisez l’API CSOM pour mettre en file d’attente le processus d’importation. Pour ce faire, exécutez un code CSOM à l’aide d’un code géré (.NET) ou PowerShell.
    • La méthode permettant de mettre le travail en file d’attente nécessite des informations de mappage de propriétés et l’emplacement du fichier de données. Cette méthode s’exécute rapidement, car elle met en file d’attente le processus d’importation réel, qui est exécuté ultérieurement dans le cadre d’un processus en arrière plan dans SharePoint Online.
  5. Vérifiez l’état du travail d’importation.
    • Vous pouvez également utiliser des API distantes pour vérifier l’état d’un travail d’importation spécifique ou de tous les travaux d’importation récents. Pour pouvoir vérifier l’état d’un appel spécifique, vous devez stocker l’identificateur de travail unique reçu en tant que valeur de retour lorsque le travail est mis en file d’attente.

Créer et charger un fichier JSON

Le processus d’importation utilise un fichier JSON qui contient les propriétés et leurs valeurs. Voici la structure attendue de ce fichier :

{
   "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>",
     }
   ]
}

Exemple

Voici un exemple de fichier simple qui utilise le format de l’exemple précédent. Dans cet exemple, la résolution d’identité est basée sur la propriété IdName, et il y a deux propriétés appelées City et Office qui sont en cours de mise à jour. Le fichier contient des informations de quatre comptes différents au sein du client. Les noms de propriétés utilisés dans ce fichier source ne sont pas nécessairement les mêmes que les noms utilisés dans le service de Profil utilisateur SharePoint Online, car nous fournissons un mappage de propriétés correct dans notre code. 

{
  "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"
    }
  ]
}

Restrictions du fichier de données sources

Les restrictions suivantes s’appliquent aux fichiers de données sources individuels :

  • Taille de fichier maximale : 2 Go
  • Nombre de propriétés maximal : 500 000
  • Les barres obliques inverses () dans les valeurs de propriété doivent s’échapper en préparant avec une autre barre oblique inverse
  • Le fichier source doit être chargé vers le même locataire SharePoint Online que celui où le processus est démarré

Remarque

Le fichier de mise à jour doit avoir la marque d’ordre d’octet (BOM) spécifiée si des caractères ne font pas partie de l’encodage d’Europe de l’Ouest (iso-8859-1) qui est la valeur par défaut. Les caractères internationaux peuvent ne pas être interprétés correctement avec l’encodage par défaut. Il est donc recommandé d’utiliser l’encodage UTF-8. Cet encodage a un BOM « EF BB BF » en hexadécimal. Il est placé au début du tableau d’octets du fichier lors de la création du flux de fichier. Si vous utilisez un éditeur de texte, sélectionnez le type d’encodage en UTF-8 avant de l’enregistrer.

Mettre le processus d’importation en file d'attente

Vous pouvez mettre en file d’attente l’API CSOM pour le processus d’importation en bloc en appelant la méthode QueueImportProfileProperties située dans l’objet Office365Tenant. Il s’agit d’un appel asynchrone dans la mesure où il ne télécharge pas les données sources ni n’effectue l’importation ; il ajoute simplement un élément de travail à la file d’attente pour effectuer cette opération ultérieurement.

Voici la signature complète de la méthode :

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

Paramètres

  • idType: ImportProfilePropertiesUserIdType

    Type d’Identification à utiliser lors de la recherche du profil utilisateur. Les valeurs possibles sont E-mail, CloudId, et PrincipalName. Notez que, quel que soit le type, l’utilisateur doit déjà exister dans le service de Profil utilisateur pour que l’importation fonctionne. Nous vous recommandons d’utiliser la valeurCloudId pour garantir l’unicité.

    Mappage de propriété correct entre le type d’ID et la propriété Azure AD :

    Type d’ID d’importation en bloc UPA Attribut Azure Active Directory
    CloudId ObjectID
    PrincipalName userPrincipalName
    E-mail courrier
  • sourceDataIdProperty: System.String

    Nom de la propriété d’ID dans les données sources. La valeur de la propriété à partir des données sources est utilisée pour rechercher l’utilisateur. La propriété de service Profil utilisateur utilisée pour la recherche dépend de la valeur de idType.

  • propertyMap: IDictionary<string, string>

    Mappage du nom de la propriété source vers le nom de la propriété du service Profil utilisateur. Notez que les propriétés du service Profil utilisateur doivent déjà exister. La clé est le nom de propriété utilisé dans le fichier source ; la valeur est le nom de propriété utilisé dans le service Profil utilisateur.

  • sourceUri: System.String

    L’URI du fichier de données source à importer. Le fichier ne doit pas être déplacé ou supprimé immédiatement, car il peut ne pas être téléchargé pendant un certain temps.

Valeur renvoyée

GUID qui identifie le travail d’importation qui a été mis en file d’attente.

Exemple

Voici un exemple qui utilise C# pour démarrer le processus à l’aide de l’exemple de fichier d’entrée précédent :

// 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();

Vérifiez l’état d’un travail d’importation

Vous pouvez vérifier l’état des travaux d’importation du service Profil utilisateur à l’aide des APIs CSOM. Il existe deux méthodes pour cela dans l’objet client :

  • Pour vérifier l’état d’un travail d’importation individuel, utilisez la méthodeGetImportProfilePropertyJob.
  • Pour vérifier l’état de tous les travaux d’importation, utilisez la méthodeGetImportProfilePropertyJobs.

Travail d’importation individuelle

Vous pouvez vérifier l’état d’un travail d’importation individuel à l’aide de la méthode GetImportProfilePropertyJob située dans l’objet Office365Tenant . Vous devez disposer de l’identificateur unique d’un travail d’importation spécifique fourni en tant que paramètre à cette méthode.

Voici la signature complète de la méthode :

public ImportProfilePropertiesJobInfo GetImportProfilePropertyJob(Guid jobId);

Paramètres

  • jobID : System.Guid

    ID du travail pour lequel obtenir l’état de haut niveau.

Valeur renvoyée

Objet ImportProfilePropertiesJobStatus avec des informations d’état de niveau supérieur sur le travail spécifié.

Exemple

Voici un exemple qui utilise C# pour récupérer l’état d’un travail d’importation spécifique à l’aide d’un identificateur stocké :

// 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();

Tous les travaux d’importation

Vous pouvez vérifier l’état de tous les travaux d’importation à l’aide de la méthode GetImportProfilePropertyJobs située dans l’objet Office365Tenant .

Voici la signature complète de la méthode :

public ImportProfilePropertiesJobStatusCollection GetImportProfilePropertyJobs(); 

Paramètres

Un objet ImportProfilePropertiesJobInfo retourné avec les informations d’état d’importation a les propriétés suivantes. 

  • jobID : System.Guid

    L’ID du travail d’importation.

  • État : ImportProfilePropertiesJobState

    Énumération avec les valeurs suivantes :

    • Inconnu : nous ne pouvons pas déterminer l’état du travail.
    • Soumis - Le travail a été soumis au système.
    • Traitement : le travail est en cours de traitement.
    • En file d’attente : le travail a réussi la validation et est mis en file d’attente pour l’importation dans l’UPA.
    • Effectué : le travail s’est terminé sans erreur.
    • Erreur : le travail s’est terminé avec des erreurs.
  • sourceUri : System.String

    URI du fichier de source de données.

  • Error : ImportProfilePropertiesJobError

    Énumération représentant l’erreur possible :

    • NoError : Aucune erreur trouvée
    • InternalError : L’erreur a été provoquée par une défaillance du service.
    • DataFileNotExist : Le fichier de source de données est introuvable.
    • DataFileNotInTenant : Le fichier de source de données n’appartenait pas au même client.
    • DataFileTooBig : La taille du fichier de données était trop grande.
    • InvalidDataFile : Le fichier de source de données n’a pas réussi la validation (il peut y avoir des détails supplémentaires dans le fichier journal).
    • ImportCompleteWithError - Les données ont été importées, mais une erreur s’est produite.
  • ErrorMessage : System.String

    Message d’erreur.

  • LogFileUri : System.String

    URI vers le dossier dans lequel les journaux ont été écrits.

Valeur renvoyée

Objet ImportProfilePropertiesJobStatusCollection , qui est une collection d’objets ImportProfilePropertiesJobStatus avec des informations d’état de niveau supérieur sur chacun des travaux.

Exemple

Voici un exemple qui utilise C# pour obtenir l’état de tous les travaux d’importation actuellement enregistrés dans le client. Ces tâches peuvent déjà être traitées ou mises en file d’attente :

// 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;
}

Appeler l’API d’importation à partir de PowerShell

Vous pouvez tirer parti de l’API d’importation en bloc du service Profil utilisateur à l’aide de PowerShell. Cela signifie que vous utilisez le code CSOM directement dans un script PowerShell à l’aide des paramètres nécessaires. Cela nécessite que le package redistribuable CSOM mis à jour ait été installé sur l’ordinateur sur lequel le script est exécuté.

En utilisant PowerShell, vous n’avez pas besoin de compiler votre code dans Visual Studio, ce qui peut être un modèle plus approprié pour certains clients.

Vous pouvez également utiliser PowerShell PnP, ce qui vous permettra d’utiliser l’API d’importation en bloc du service Profil utilisateur sans avoir à installer d’autres bibliothèques sur votre système.

Exemple de script PowerShell à l’aide de bibliothèques CSOM

Voici un exemple de script PowerShell qui effectue les mêmes opérations que le code précédent :

# 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

Mise à jour du profil utilisateur SharePoint Online à l’aide de PnP PowerShell

Pour synchroniser les propriétés de profil utilisateur de Azure Active Directory aux profils utilisateur SharePoint Online, vous pouvez tirer parti de l’applet de commande PnP PowerShellSync-PnPSharePointUserProfilesFromAzureActiveDirectory.

Si vous souhaitez synchroniser les propriétés du profil utilisateur à partir d’une autre source, vous pouvez également utiliser new-PnPUPABulkImportJob.

Pour vérifier l’état de traitement d’un travail d’importation en bloc, vous pouvez utiliser Get-PnPUPABulkImportStatus.

Remarque

PnP PowerShell est une solution open source pour laquelle un support est assuré par la communauté active. Il n’existe pas de contrat SLA Microsoft pour le support technique relatif à cet outil open source.

Gérer des exceptions.

Il existe deux niveaux de validation lorsque cette API est utilisée. Lorsque vous mettez en file d’attente le processus d’importation avec CSOM, il existe un niveau initial de validation des valeurs fournies. Cela inclut la confirmation que les propriétés de mappage fournies existent dans le service Profil utilisateur et que ces propriétés ne sont pas modifiables par l’utilisateur final. Lorsque l’API de file d’attente est appelée, seul un niveau initial de validation est appliqué, et la validation finale des informations fournies est effectuée lorsque le travail d’importation est réellement exécuté.

S’il existe des exceptions pendant l’exécution réelle du travail d’importation, un fichier de journalisation avec des détails supplémentaires est généré dans la même bibliothèque de documents où se trouvait le fichier d’importation. Les fichiers journaux pour des travaux d’importation spécifiques sont enregistrés dans des sous-dossiers nommés à l’aide de l’identificateur unique du travail d’importation spécifique.

Voici un exemple des résultats de l’exécution d’un travail d’importation. Dans l’image suivante, vous pouvez voir deux sous-dossiers pour deux exécutions différentes créées dans la bibliothèque de documents où le fichier d’importation est stocké.

Sous-dossiers d’exception de travail

Le fichier journal réel est enregistré dans le sous-dossier, et vous pouvez le télécharger à partir d’Office 365 pour une analyse détaillée.

Fichier journal des exceptions de travail

Les exceptions courantes

Le tableau suivant contient les exceptions classiques que vous pouvez rencontrer lorsque vous commencez à utiliser l’API en bloc du service Profil utilisateur.

Exemple d’exception. Détails
Les noms de propriétés [AboutMe] peuvent être modifiés par l’utilisateur. Cela est jeté par l’API CSOM lorsque vous appelez la méthode ExecuteQuery lors de la soumission du travail à votre client. L’API vérifie que toutes les propriétés actuellement mappées ne sont PAS modifiables par l’utilisateur. L’exception indique la propriété qui ne peut pas être utilisée.

Dans cet exemple, nous avons essayé de mapper une propriété JSON à la propriété AboutMe dans les propriétés du service Profil utilisateur, mais cela n’est pas autorisé, car AboutMe est une propriété modifiable par l’utilisateur.
InvalidProperty : vesaj@contoso.com la propriété « AboutMe » n’est mappée à aucune propriété dans l’application de profil utilisateur. Le fichier de données JSON contenait une propriété qui n’a pas été mappée à la propriété du service Profil utilisateur dans SharePoint Online. Cela signifie que le fichier de données source contient des propriétés pour lesquelles vous n’avez pas fourni de mappage dans le paramètre propertyMap . Vous devez disposer d’une définition de mappage pour chacune des propriétés de l’objet de données JSON.
MissingIdentity : L’identité est manquante pour l’objet utilisateur La propriété d’identité est introuvable dans l’objet utilisateur. La cause la plus probable est que l’attributsourceDataIdProperty est mal défini pour la méthodeQueueImportProfileProperties. Assurez-vous que vous disposez de la propriété appropriée dans le fichier source JSON et que votre code/script attribue cet attribut en conséquence.
IdentityNotResolvable unknown@contoso.com L’identité de l’utilisateur ne peut pas être résolue Le fichier de données contenait une identité qui n’a pas pu être résolue ou qui n’était pas présente dans le service Profil utilisateur. Dans ce cas, le profil utilisateur avec l’adresse e-mail de n’a unknown@contoso.com pas pu se trouver dans le service de profil utilisateur.
DataFileNotJson : JsonToken EndObject n’est pas valide pour la fermeture du tableau JsonType. Chemin 'value', ligne 8, position 10. Votre format de fichier d’importation n’est pas un format JSON valide et ne correspond pas au format attendu. 

Questions fréquemment posées

Puis-je exécuter le code à l’aide d’autorisations d’application uniquement/de complément uniquement ?

Oui, l’importation réelle du fichier ne se produit pas de façon synchrone avec l’identité de l’appelant. Cela fonctionne donc avec le contexte d’application uniquement sans aucun problème.

Pour utiliser un contexte d’application uniquement avec le modèle de complément SharePoint, vous devez inscrire un ID client et un secret pour pouvoir exécuter les API en suivant ces instructions. En outre, lors de l’inscription du complément SharePoint, vous devez accorder les autorisations à l’aide de l’extrait de code XML suivant :

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

Importante

L’utilisation d’Azure ACS (Access Control Services) pour SharePoint Online a été mise hors service depuis le 27 novembre 2023, consultez l’annonce de mise hors service complète pour en savoir plus. L’utilisation d’Azure ACS en dehors du contexte de SharePoint a déjà été mise hors service le 7 novembre 2018 et est maintenant en fin de vie.

La mise hors service signifie que la fonctionnalité ne recevra aucun nouvel investissement, mais qu’elle est toujours prise en charge. La fin de vie signifie que la fonctionnalité sera abandonnée et qu’elle n’est plus disponible.

Pour utiliser l’application uniquement avec une application inscrite dans Azure Active Directory, vous devez inscrire l’application, fournir un certificat X.509 pour l’authentification, qui est une exigence pour l’authentification application uniquement SharePoint Online uniquement dans Azure Active Directory, et accorder les étendues d’autorisations SharePoint Online suivantes pour l’application : Sites.FullControl.All et User.ReadWrite.All.

Cette API met à jour les propriétés dans le service Profil utilisateur, mais comment créer ces propriétés dans le client ?

Il n’existe aucune API distante pour créer des propriétés de profil utilisateur personnalisées par programme. Il s’agit donc d’une opération manuelle qui doit être effectuée une fois par client donné. Pour obtenir des instructions sur la création de ces propriétés personnalisées, consultez Ajouter et modifier des propriétés de profil utilisateur dans SharePoint Online.

Cette fonctionnalité est-elle disponible dans SharePoint local ?

Malheureusement, cette fonctionnalité est actuellement réservée à SharePoint Online. Dans SharePoint local, cette fonctionnalité serait utile, mais pas aussi critique, car vous pouvez modifier le mappage d’attributs dans l’application de service Profil utilisateur locale. Vous pouvez également tirer parti de l’importation d’attributs de profil utilisateur à l’aide du Business Connectivity Services (BCS) dans SharePoint 2013. Toutefois, cette option n’est pas disponible dans SharePoint 2016, ce qui signifie que pour SharePoint 2016, la seule option actuellement consiste à implémenter des personnalisations qui tirent parti des services web de profil utilisateur.

Puis-je utiliser cette API pour synchroniser les valeurs de propriété de profil utilisateur de mes batteries SharePoint locales vers SharePoint Online ?

Oui, SharePoint local peut être utilisé comme n’importe quel autre système source. Vous devez exporter les valeurs de profil utilisateur de votre SharePoint local vers le format de fichier JSON, puis le processus serait exactement le même que l’importation de valeurs à partir de n’importe quel autre système.

Puis-je importer des propriétés à valeurs multiples basées sur des chaînes ?

Non, Cela n’est pas pris en charge actuellement avec cette API.

Quelles sont les autorisations requises pour exécuter cette API ?

Vous devez disposer actuellement d’autorisations d’administrateur général, sauf si vous utilisez un contexte d’authentification d’application uniquement. L’administrateur SharePoint n’est pas suffisant.

Puis-je importer des propriétés basées sur la taxonomie ?

Non, Cela n’est pas pris en charge actuellement avec cette API.

Que se passe-t-il si je définis un mappage dans le code qui n’est pas utilisé ou dont les propriétés du fichier JSON ne sont pas mappées ?

Si votre code/script définit un mappage qui n’est pas utilisé ou si le fichier de données ne contient pas de propriétés pour ce mappage, l’exécution continue sans exception, et l’importation est appliquée en fonction des propriétés mappées. Toutefois, si vous avez une propriété dans le fichier JSON qui n’est pas mappée, le processus d’importation est abandonné et les détails de l’exception sont fournis dans le fichier journal pour l’exécution du travail spécifique.

Que se passe-t-il si je dois mettre à jour des propriétés personnalisées qui dépassent les limites de taille de cette API en bloc (autrement dit, un fichier de plus de 2 Go ou 500 000 propriétés) ?

Vous devez traiter vos travaux par lot en conséquence en déclenchant plusieurs travaux dans l’ordre (autrement dit, en terminant un travail à la fois avec la limite maximale de cette API). Vous devez vous attendre à ce que ces importations à bande passante élevée prennent beaucoup de temps. En outre, vous devez optimiser les travaux d’importation uniquement pour les modifications delta dans les propriétés personnalisées de profil au lieu d’importer un ensemble complet de valeurs dans tous les travaux.

Quels attributs Azure AD sont synchronisés avec les profils utilisateur SharePoint Online par défaut ?

Consultez le tableau suivant pour obtenir la liste officielle des attributs synchronisés et leur mappage entre Azure AD et le service Profil utilisateur SharePoint Online.

Attribut Active Directory Propriété de profil SharePoint Online
ObjectSid SPS-SavedSID
msonline-UserPrincipalName UserName
msonline-UserPrincipalName AccountName
msonline-UserPrincipalName SPS-ClaimID
msonline-UserPrincipalName SPS-UserPrincipalName
GivenName FirstName
sn LastName
Responsable Responsable
DisplayName PreferredName
telephoneNumber WorkPhone
proxyAddresses WorkEmail
proxyAddresses SPS-SIPAddress
PhysicalDeliveryOfficeName Bureau
Titre Titre
Titre SPS-JobTitle
Service Service
Service 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

Voir aussi