Compartir a través de


Tutorial: Instalación de una aplicación en un entorno de destino

Este tutorial está destinado a permitir a los administradores de Power Platform para que puedan aprovechar la API de Power Platform para instalar aplicaciones de las que sus inquilinos ya tienen derecho. Estas aplicaciones deben estar visibles en el Centro de administración de Power Platform bajo Entornos>[environment-name]>Recursos>aplicaciones Dynamics 365.

En este tutorial, aprenderá a:

  1. Cree un script de Power Automate o de flujo de trabajo de Logic Apps (Azure) que se autentique con la API de Power Platform.
  2. Llamar a la API Obtener paquete de aplicación de entorno para recuperar la lista de aplicaciones que puede instalar en un entorno específico
  3. Instalar la aplicación utilizando la API del paquete de instalación de la aplicación
  4. Encuestar para conocer el estado de la API de estado de instalación de la operación de instalación Obtener paquete de aplicación
  5. Notificar por correo electrónico una vez que se complete la instalación

En este escenario de ejemplo, un cliente busca instalar Grupos de Office en un entorno específico de su elección.

Elija una herramienta que pueda autenticarse con la API de Power Platform

La siguiente información proporciona detalles sobre cómo conectarse a Power Platform mediante programación. Este tutorial incluye el uso de Azure Logic Apps como un cliente común para los administradores que trabajan en el espacio de Azure y un ejemplo nativo de Power Platform CLI.

Crear el flujo de trabajo y configurar las variables

Para comenzar, en este tutorial utilizamos un flujo de trabajo Logic Apps. Un flujo de Power Automate también es aceptable, y cualquier otro motor de orquestación que su empresa prefiera utilizar para la automatización. Todas las llamadas para recuperar datos utilizan API RESTful, por lo que cualquier herramienta que admita REST funciona con este tutorial.

Visite Azure Portal y luego cree una nueva aplicación lógica y asígnele un nombre:

Crear una aplicación lógica.

Después de que finalice el aprovisionamiento, edite el flujo de trabajo con el diseñador y configure un desencadenador de recurrencia para que se ejecute según la programación que elija:

Configurar un desencadenador de recurrencia.

Para el resto de este tutorial, necesitará un ID ambiente y un nombre de aplicación para completar los pasos siguientes:

  • ambiente Id: El ID del ambiente en el que instalarías el paquete. Esta ID no es la ID de la organización.
  • Nombre de la aplicación: el nombre de la aplicación que estás intentando instalar.

A continuación nos autenticamos con Microsoft Entra y recuperamos un token para llamar a la Power Platform API. Si no ha completado la configuración de Microsoft Entra, consulte Autenticación.

En este tutorial, estamos usando una credencial de usuario con contraseña para obtener un token.

Luego analizamos la respuesta del token de Microsoft Entra en un objeto indicado usando este esquema JSON en la acción 'Analizar JSON':

{
    "properties": {
        "access_token": {
            "type": "string"
        },
        "expires_in": {
            "type": "integer"
        },
        "ext_expires_in": {
            "type": "integer"
        },
        "token_type": {
            "type": "string"
        }
    },
    "type": "object"
}

Analizar la respuesta de token de Microsoft Entra en un objeto fuertemente tipado.

Recuperar paquetes disponibles para instalar

En esta sección recuperamos la lista de aplicaciones que puedes instalar en un ambiente específico. Asegúrese de tener su id. del entorno disponible, y que este entorno tenga creada una base de datos de Dataverse.

Punto de conexión de paquete de aplicaciones de entorno

Ahora hacemos nuestra primera llamada a la Power Platform API. Usaremos Obtener API de paquete de aplicación de entorno para recuperar todos los paquetes disponibles que podemos instalar para la organización de Dataverse dada. Asegúrese de que la identidad que está utilizando, ya sea una entidad de servicio o un nombre de usuario/contraseña, tenga acceso a Dataverse y el rol de seguridad apropiado.

GET https://api.powerplatform.com/appmanagement/environments/{environmentId}/applicationPackages?api-version=2022-03-01-preview

Luego analizamos respuesta en un objeto tipificado usando este esquema JSON con la acción 'Analizar JSON':

{
    "properties": {
        "value": {
            "items": {
                "properties": {
                    "applicationDescription": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "applicationId": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "applicationName": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "applicationVisibility": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "catalogVisibility": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "crmMaxVersion": {},
                    "crmMinversion": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "customHandleUpgrade": {
                        "type": "boolean"
                    },
                    "endDateUtc": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "errorDetails": {},
                    "id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "instancePackageId": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "learnMoreUrl": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "localizedDescription": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "localizedName": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "publisherId": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "publisherName": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "singlePageApplicationUrl": {},
                    "startDateUtc": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "state": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "supportedCountries": {
                        "items": {
                            "type": [
                                "string",
                                "null"
                            ]
                        },
                        "type": "array"
                    },
                    "uniqueName": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "version": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "uniqueName",
                    "version",
                    "localizedDescription",
                    "localizedName",
                    "applicationId",
                    "applicationName",
                    "applicationDescription",
                    "singlePageApplicationUrl",
                    "publisherName",
                    "publisherId",
                    "learnMoreUrl",
                    "crmMinversion",
                    "crmMaxVersion",
                    "customHandleUpgrade",
                    "instancePackageId",
                    "state",
                    "catalogVisibility",
                    "applicationVisibility",
                    "errorDetails",
                    "startDateUtc",
                    "endDateUtc",
                    "supportedCountries"
                ],
                "type": "object"
            },
            "type": "array"
        }
    },
    "type": "object"
}

Instalar la aplicación

Ahora podemos tomar una de las aplicaciones del paso anterior e instalarla. Digamos que le gustaría instalar la aplicación "Grupos de Office 365". Seleccione el valor en el campo PackageUniqueName, en este caso, es Office365Groups, para utilizar en el siguiente paso.

Instalar la API de la aplicación

Utilizamos la API de instalación de aplicaciones punto de conexión para Gatillo la instalación. Asegúrese de configurar la propiedad uniqueName en Office365Groups en este ejemplo.

POST https://api.powerplatform.com/appmanagement/environments/{environmentId}/applicationPackages/{uniqueName}/install?api-version=2022-03-01-preview

Y el cuerpo de la solicitud tiene la entrada de aplicación del paso anterior:

{
                "id": "ce3bab3c-ada1-40cf-b84b-49b26603a281",
                "uniqueName": "Office365Groups",
                "version": "2.9.0.3",
                "localizedDescription": "With Office 365 groups, you can collaborate with people across your company even if they aren’t Dynamics 365 users. Groups provide a single location to share conversations, meetings, documents, and more.",
                "localizedName": "Office 365 Groups",
                "applicationId": "2f17f077-4175-4d82-b82b-17cd8950b74f",
                "applicationName": "Office365Groups",
                "applicationDescription": "",
                "singlePageApplicationUrl": "",
                "publisherName": "Microsoft CRM Package",
                "publisherId": "255953fd-9ab8-4146-bfa1-859aae326ae9",
                "learnMoreUrl": "http://go.microsoft.com/fwlink/?LinkID=525719",
                "crmMinversion": "8.0",
                "crmMaxVersion": null,
                "customHandleUpgrade": false,
                "instancePackageId": null,
                "state": "None",
                "catalogVisibility": "None",
                "applicationVisibility": "All",
                "errorDetails": null,
                "startDateUtc": "2016-01-01T00:00:00Z",
                "endDateUtc": "2050-01-01T00:00:00Z",
                "supportedCountries": [
                    "AE",
                    "AL",
                    "AM",
                    "AO",
                    "VN",
                    "ZA",
                    "ZW"
                ]
            }

El siguiente código es un ejemplo respuesta:

{
        "id": "9a44d33b-6055-4c9b-aa4a-4c410a22e9ad",
        "packageId": "ce3bab3c-ada1-40cf-b84b-49b26603a281",
        "applicationId": "2f17f077-4175-4d82-b82b-17cd8950b74f",
        "applicationName": "Office365Groups",
        "applicationDescription": "",
        "singlePageApplicationUrl": "",
        "publisherName": "Microsoft CRM Package",
        "publisherId": "255953fd-9ab8-4146-bfa1-859aae326ae9",
        "packageUniqueName": "Office365Groups",
        "packageVersion": "2.9.0.3",
        "localizedDescription": "With Office 365 groups, you can collaborate with people across your company even if they aren’t Dynamics 365 users. Groups provide a single location to share conversations, meetings, documents, and more.",
        "localizedName": "Office 365 Groups",
        "learnMoreUrl": "http://go.microsoft.com/fwlink/?LinkID=525719",
        "termsOfServiceBlobUris": [
            "https://crmprodnam.blob.core.windows.net/preferredsolution/microsoft_tos_dbd53f75-b571-46ad-b9ce-21b5656b85dd_1?sv=2018-03-28&sr=c&sig=v5iBtDum0N6A0sqyyhIkPECibmpGOKGiSmmm3ALGIR0%3D&se=2022-03-23T19%3A35%3A59Z&sp=r"
        ],
        "applicationVisibility": "All",
        "lastOperation": {
            "state": "InstallRequested",
            "createdOn": "2022-03-22T19:35:59.7425066Z",
            "modifiedOn": null,
            "errorDetails": null,
            "statusMessage": null,
            "instancePackageId": "9a44d33b-6055-4c9b-aa4a-4c410a22e9ad",
            "operationId": "4fde996a-bf68-413c-b2bf-33f21a7e9afb"
        },
        "customHandleUpgrade": false
    }

Luego usamos la acción Analizar JSON para obtener el ID de operación para nuestros pasos posteriores.

Consulta de estado de operación

Ahora monitoreamos el progreso de la instalación de la aplicación sondeando cada cierto tiempo usando el ID de operación del paso anterior.

Usar el control Hasta

Al evaluar respuesta a partir del sondeo de OperationID para cualquier estado terminal como Cancelado, Error o Exitoso, monitoreamos eficazmente que el proceso se complete. Esto se hace Listo fácilmente con el control Until, que se repite continuamente hasta que se cumple esta condición.

Control Hasta.

Utilizamos el Estado de instalación de la aplicación punto de conexión para supervisar la instalación. Asegúrese de configurar la propiedad operationId a partir del paso anterior.

GET https://api.powerplatform.com/appmanagement/environments/{environmentId}/operations/{operationId}?api-version=2022-03-01-preview

Se muestra un ejemplo de salida:

{
  "status": "NotStarted",
  "createdDateTime": "2022-03-22T20:05:58.9414573Z",
  "lastActionDateTime": null,
  "error": null,
  "statusMessage": null,
  "operationId": "523b51a8-6af4-40cd-aa7d-86bddfa6697b"
}

Desde aquí, podemos evaluar el estado y, si es uno de los valores terminales, podemos romper el ciclo.

Enviar un correo electrónico

Ahora que el monitoreo ha concluido, podemos compartir el resultado por correo electrónico como una actividad de ejemplo.

Enviar un correo electrónico (v2) sobre el estado de la actividad.