Partager via


Récupérer les données du catalogue dans Power Platform

Pour récupérer des données sur les catalogues de votre client, vous devez déterminer quels environnements ont des catalogues installés. Ensuite, vous pouvez récupérer des données de cet environnement sur le catalogue en interrogeant les tables ou l’API conçues pour fournir ces informations.

La plupart des clients n’installent qu’un seul catalogue, mais il est possible d’installer un catalogue sur plusieurs environnements du client.

Rechercher des environnements avec des catalogues dans votre client

Utilisez la commande pac admin list pour afficher les environnements avec des catalogues dans votre client.

Note

Cette commande nécessite un profil d’authentification Administrateur.

Lorsque vous utilisez cette commande, vous devez utiliser le paramètre suivant --application avec la valeur 83a35943-cb41-4266-b7d2-81d60f383695. Cette valeur correspond à l’ID de l’application associée au catalogue.

PS C:\Users\you> pac admin list --application 83a35943-cb41-4266-b7d2-81d60f383695
Connected as you@yourorg.onmicrosoft.com

Listing all environments from your tenant...
Active Environment Environment ID                       Environment Url                   Type       Organization ID
*      Your Org    b16bdb7a-e023-4158-a839-4f8831ed2432 https://yourorg.crm.dynamics.com/ Production e20be4c1-02ce-4e81-93c6-6e95ff053943

Tables de catalogue

Lorsque vous installez l’application du gestionnaire de catalogue Power Platform dans un environnement de votre client, les tables répertoriées dans la Référence de table/d’entité Catalogue dans Power Platform sont ajoutées à cet environnement uniquement.

Certaines des tables les plus importantes que vous pouvez utiliser se trouvent dans le tableau suivant :

Table Description
Demande d’approbation (mspcat_certificationrequest) Contient les enregistrements d’approbation utilisés pour traiter les envois nouveaux ou mis à jour dans le système de catalogue.
Éditeur de catalogue (mspcat_publisher) Entité de l’éditeur pour la détention des données de l’éditeur TPS.
Article de catalogue (mspcat_applications) Entrée qui apparaît dans le catalogue
Package (mspcat_packages) Actifs de déploiement d’un article du catalogue.
Historique des installations (mspcat_InstallHistory) Contient l’enregistrement des installations et leur statut
Activité d’installation (mspcat_InstallActivity) ID d’activité Historique d’installation

Afficher les informations du catalogue

Il y a deux Dataverse messages que vous pouvez utiliser pour obtenir des informations sur le catalogue.

  • mspcat_GetPowerCatalogInformation Ce message se veut rapide et fournit les droits d’accès minimaux et les données descriptives pour le catalogue.
  • mspcat_GetPowerCatalogDetails Utilisez le contenu de ce message pour remplir le document de soumission et définir les étiquettes pour ce qu’un élément de catalogue et un éditeur doivent être appelés pour ce catalogue.

mspcat_GetPowerCatalogInformation

Le mspcat_GetPowerCatalogInformation message a un seul permissionsonly paramètre booléen et renvoie les informations suivantes définies par le mspcat_GetPowerCatalogInformationResponse type complexe :

Nom  Type Description
SolutionVersion chaine Version de la solution de catalogue installée
CatalogDescription chaine Décrit l’objectif de ce catalogue
CanRead bool L’utilisateur peut-il lire les éléments du catalogue ?
CatalogName chaine Nom du catalogue installé sur cet environnement
ImageLink chaine Si cette valeur est définie, il s’agit de l’image du catalogue
CanSubmit bool L’utilisateur peut-il envoyer des articles dans le catalogue ?

Si le paramètre booléen permissionsonly est défini sur true, les valeurs CatalogDescription, CatalogName et ImageLink ne sont pas renvoyées. Les valeurs SolutionVersion, CanRead et CanSubmit sont toujours renvoyées.

La méthode statique suivante GetPowerCatalogInformationExample récupère les données à l’aide des classes mspcat_GetPowerCatalogInformationRequest et mspcat_GetPowerCatalogInformationResponse générées pour le message mspcat_GetPowerCatalogInformation par la commande pac modelbuilder build.

/// <summary>
/// Returns data about the catalog for an environment
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
/// <param name="permissionsonly">Whether to only return information about permissions.</param>
static void GetPowerCatalogInformationExample(IOrganizationService service, bool permissionsonly = false)
{
   var request = new mspcat_GetPowerCatalogInformationRequest();
   if (permissionsonly) {
         request.permissionsonly = true;
   }
   var response = (mspcat_GetPowerCatalogInformationResponse)service.Execute(request);

   Console.WriteLine($"SolutionVersion: {response.SolutionVersion}");
   Console.WriteLine($"CatalogDescription: {response.CatalogDescription}");
   Console.WriteLine($"CanRead: {response.CanRead}");
   Console.WriteLine($"CatalogName: {response.CatalogName}");
   Console.WriteLine($"ImageLink: {response.ImageLink}");
   Console.WriteLine($"CanSubmit: {response.CanSubmit}");
}

Sortie

Avec permissionsonly égal à false.

SolutionVersion: 1.1.24.500
CatalogDescription: Catalog in Power Platform applications created by your company.
CanRead: True
CatalogName: Default Catalog Name
ImageLink:
CanSubmit: True

Générer des classes à liaison anticipée pour le SDK pour .NET
Utiliser le SDK pour .NET Dataverse

mspcat_GetPowerCatalogDetails

Utilisez les informations renvoyées par mspcat_GetPowerCatalogDetails pour remplir le document de soumission et définir les étiquettes pour ce pour quoi un élément de catalogue et un éditeur devraient être appelés pour ce catalogue.

Cette fonction renvoie un objet avec une propriété de chaîne unique CatalogDetails qui contient une chaîne encodée. Lorsqu’elle est décodée, la chaîne contient des données JSON avec les propriétés suivantes :

Nom  Type Description
catalogId chaine L’ID unique du catalogue
isSuccess chaine Réservé exclusivement à un usage interne.
sourceOptions Tableau d’options Les options de la sélection globale mspcat_certificationrequest_requestsource.
categoryOptions Tableau d’options Les options de la sélection globale mspcat_catalogbusinesscategory.
publisherLocalizedDisplayName chaine Nom localisé de l’éditeur du catalogue.
catalogItemLocalizedDisplayName chaine Nom localisé utilisé pour faire référence aux éléments du catalogue.

La méthode statique suivante GetPowerCatalogDetailsExample récupère les données à l’aide des classes mspcat_GetPowerCatalogDetailsRequest et mspcat_GetPowerCatalogDetailsResponse générées pour le message mspcat_GetPowerCatalogDetails par la commande pac modelbuilder build.

/// <summary>
/// Outputs details of the catalog in Power Platform.
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void GetPowerCatalogDetailsExample(IOrganizationService service) {

    var request = new mspcat_GetPowerCatalogDetailsRequest();
    var response = (mspcat_GetPowerCatalogDetailsResponse)service.Execute(request);

   JsonDocument catalogDetails = JsonDocument.Parse(response.CatalogDetails);

    string catalogId = catalogDetails.RootElement.GetProperty("catalogId").GetString();
    bool isSuccess = catalogDetails.RootElement.GetProperty("isSuccess").GetBoolean();
    JsonElement sourceOptions = catalogDetails.RootElement.GetProperty("sourceOptions");
    JsonElement categoryOptions = catalogDetails.RootElement.GetProperty("categoryOptions");
    string publisherLocalizedDisplayName = catalogDetails.RootElement.GetProperty("publisherLocalizedDisplayName").GetString();
    string catalogItemLocalizedDisplayName = catalogDetails.RootElement.GetProperty("catalogItemLocalizedDisplayName").GetString();


    Console.WriteLine($"catalogId: {catalogId}");
    Console.WriteLine($"isSuccess: {isSuccess}");
    Console.WriteLine("sourceOptions:");
    foreach (JsonElement element in sourceOptions.EnumerateArray())
    {
        int id = element.GetProperty("id").GetInt32();
        string label = element.GetProperty("userLocalziedLabel").GetString();
        Console.WriteLine($"  {id} {label}");
    }
    Console.WriteLine("categoryOptions:");
    foreach (JsonElement element in categoryOptions.EnumerateArray())
    {
        int id = element.GetProperty("id").GetInt32();
        string label = element.GetProperty("userLocalziedLabel").GetString();
        Console.WriteLine($"  {id} {label}");
    }
    Console.WriteLine($"publisherLocalizedDisplayName: {publisherLocalizedDisplayName}");
    Console.WriteLine($"catalogItemLocalizedDisplayName: {catalogItemLocalizedDisplayName}");
}

Sortie

La méthode statique GetPowerCatalogDetailsExample écrit quelque chose comme ceci dans la console :

catalogId: 883278f5-07af-45eb-a0bc-3fea67caa544
isSuccess: True
sourceOptions:
  526430000 Other
  526430001 Power Automate Maker Portal
  526430002 Power Platform Maker Portal
  526430003 Power Virtual Agents Maker Portal
  526430004 Power Platform Admin API
  526430005 PAC CLI
  526430006 PAC Build Task
  526430007 Pipelines in Power Platform
categoryOptions:
  526430000 Customer Service
  526430001 Project Management
  526430002 Calendar Management & Scheduling
  526430003 Email Management
  526430004 Files & Documentation
  526430005 Notification & Reminders
  526430006 Analytics
  526430007 Collaboration
  526430008 Commerce
  526430009 Finance
  526430010 Compliance & Legal
  526430011 Sales
  526430012 IT Tools
  526430013 Marketing
  526430014 Operations & Supply Chain
  526430015 Internet of Things
  526430016 AI Machine Learning
  526430017 Geolocation
  526430018 Human Resources
publisherLocalizedDisplayName: Catalog Publisher
catalogItemLocalizedDisplayName: Catalog Item

Générer des classes à liaison anticipée pour le SDK pour .NET
Utiliser le SDK pour .NET Dataverse

Afficher les éléments du catalogue

Vous pouvez découvrir les articles du catalogue à l’aide de PAC CLI ou en interrogeant la table Élément du catalogue (mspcat_applications).

Utilisation de PAC CLI

Utilisez la commande pac catalog list pour afficher les éléments du catalogue.

pac catalog list 
Connected to... TestCatalog
Connected as user@domain
Listing all published catalog items from the current Dataverse Organization...
Catalog Item Name                   Publisher Name            Catalog Item Id                      Revision Id                          Version Status
Contoso Conference Custom Connector Catalog Conferences Team  ContosoConferencesCustomConnector    4e882dd6-74f3-ed11-8849-000d3a0a286b 1.0.0.1 Published
Contoso Themed Components           ContosoPublisher          ContosoThemedComponents              efbc469d-f1b2-ed11-83fd-000d3a0a2d9d 1.0.0.1 Published

Vous pouvez également utiliser ces paramètres pour filtrer les enregistrements renvoyés :

paramètre alias description
--catalog-item-id -cid ID de l’élément de catalogue à rechercher. Lorsque l’ID d’élément de catalogue est utilisé, toutes les --catalog-item-name valeurs de paramètre sont ignorées.
--catalog-item-name -n Nom de l’élément Catalog à rechercher.
--include-active -ia Inclure les éléments actifs.

Utilisez le paramètre --json pour renvoyer des données JSON.

Utilisez le paramètre --environment (-env) pour interroger un catalogue dans un autre environnement.

Interroger les tables Dataverse

Les informations sur les éléments du catalogue se trouvent dans la table Élément de catalogue (mspcat_applications), ce qui vous permet d’en récupérer les données comme vous le feriez pour n’importe quelle Dataverse table.

La méthode statique RetrieveCatalogItems suivante récupère et imprime une table de données à partir des tables Élément du catalogue (mspcat_applications) et Package (mspcat_packages) concernant les éléments du catalogue. Cette fonction dépend du package ConsoleTables NuGet pour afficher la table dans une application console.

/// <summary>
/// Retrieves information about catalog items and writes it to the console
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void RetrieveCatalogItems(IOrganizationService service)
{
    QueryExpression query = new("mspcat_applications")
    {
        ColumnSet = new ColumnSet(
             "mspcat_tpsid",
             "mspcat_deploytype",
             "mspcat_applicationtype",
             "mspcat_businesscategory",
             "mspcat_description",
             "mspcat_applicationsid",
             "mspcat_publisherid",
             "mspcat_name",
             "statuscode"),
        Criteria = new FilterExpression(LogicalOperator.And)
        {
            Conditions = {
                {
                    new ConditionExpression(
                        attributeName: "statecode",
                        conditionOperator: ConditionOperator.Equal,
                        value: 0)
                }
            }
        }
    };

    LinkEntity linkToPackages = query.AddLink(
       linkToEntityName: "mspcat_packages",
       linkFromAttributeName: "mspcat_packageasset",
       linkToAttributeName: "mspcat_packagesid",
       joinOperator: JoinOperator.Inner);

    linkToPackages.Columns = new ColumnSet(
        "statecode",
        "mspcat_uniquename",
        "mspcat_version",
        "statuscode");

    linkToPackages.EntityAlias = "pkg";

    EntityCollection catalogs = service.RetrieveMultiple(query);

    var table = new ConsoleTables.ConsoleTable(
        "Catalog Item Name",
        "Publisher Name",
        "Catalog Item ID",
        "Revision ID",
        "Version",
        "Status");

    foreach (Entity catalog in catalogs.Entities)
    {
        string catalogItemName = catalog.GetAttributeValue<string>("mspcat_name");
        string publisherName = catalog.FormattedValues["mspcat_publisherid"];
        string catalogItemId = catalog.GetAttributeValue<string>("mspcat_tpsid");
        Guid revisionId = catalog.GetAttributeValue<Guid>("mspcat_applicationsid");
        string version = (string)catalog.GetAttributeValue<AliasedValue>("pkg.mspcat_version").Value;
        string status = catalog.FormattedValues["statuscode"];

        string[] rowData = {
            catalogItemName,
            publisherName,
            catalogItemId,
            revisionId.ToString(),
            version,
            status
        };

        table.Rows.Add(rowData);
    }
    table.Write();
}

La sortie de cet exemple pourrait ressembler à ceci :

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
 | Catalog Item Name                  | Publisher Name          | Catalog Item ID                   | Revision ID                          | Version | Status    |
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
 | Contoso Conference Custom Connector| Catalog Conferences Team| ContosoConferencesCustomConnector | 4e882dd6-74f3-ed11-8849-000d3a0a286b | 1.0.0.1 | Published |
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------
 | Contoso Themed Components          | ContosoPublisher        | ContosoThemedComponents           | efbc469d-f1b2-ed11-83fd-000d3a0a2d9d | 1.0.0.1 | Published |
 -----------------------------------------------------------------------------------------------------------------------------------------------------------------

Utiliser le SDK pour .NET Dataverse
Interroger les données à l’aide de QueryExpression

Étapes suivantes