PowerApps

Wydaje mi się, że większość z nas dość dobrze kojarzy funkcjonalność PowerApps, która pozwala na eksportowanie aplikacji, a następnie zaimportowanie jej w innym środowisku lub przeniesienie jej w ten sposób na tenant klienta. Jednak działa to wprost idealnie, ale gdy mówimy o samodzielnych aplikacjach. A czy możliwe jest zaimportowanie appki będącej formularzem listy? Tak! Może nie do końca na wprost, ale tak.

Eksportowanie aplikacji

Najpierw wyeksportuj istniejącą aplikację formularza listy PowerApps. Robi się to tak samo, jak w przypadku samodzielnej aplikacji. Po prostu otwórz swoją aplikację w designerze, a następnie w menu „Save” kliknij „See all versions”:

Navigating to the "Export package" functionality
Przechodzenie do funkcji „Export package”

Następnie na otwartej stronie kliknij link „Export package”:

Exporting PowerApps app as a package
Eksportowanie appki PowerApps jako paczki

Następnie, w zależności od scenariusza, ustaw nazwę paczki, zaznacz, czy aplikacja ma zostać zaimportowana jako nowa, czy zaktualizować istniejącą. Na potrzeby tego posta wybrałem „Create as new”.

Dostosowanie konfiguracji
wyeksportowanej aplikacji

Jeśli spróbujesz zaimportować aplikację od razu, napotkasz błędy – aplikacja nie zostanie zaimportowana i pokazane zostaną np. poniższe błędy:

Errors when trying to directly import PowerApps list form package
Błędy podczas próby bezpośredniego importowania paczki formularza listy w PowerApps

A gdy wyświetlisz szczegóły błędu, zobaczysz poniższą informację:

Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException
Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException

Wynika to z faktu, że wewnątrz pliku paczki są zdefiniowane relacje i identyfikatory GUID do list i witryny z lokalizacji źródłowej.

Aby to rozwiązać, najpierw musisz utworzyć wszystkie wymagane listy, najlepiej z tymi samymi tytułami i kolumnami, jakie były w źródłowym środowisku.

Następnie otwórz wyeksportowaną aplikację – jest to plik ZIP, a więc nawet używając Eksploratora Windows, powinieneś być w stanie dostać się do jego zawartości.

Po otwarciu ZIP, przejdź do ostatniego folderu, który możesz znaleźć. Jest to jedyny folder w podfolderze „apps” w ścieżce:
Microsoft.PowerApps\apps\[wartość numeryczna]

Wewnątrz folderu znajdź jedyny plik JSON. Otwórz go, używając np. Visual Studio Code. Kod wewnątrz pliku w zasadzie definiuje konfigurację aplikacji. Ważne jest, aby wprowadzić zmiany w poniższych sekcjach.

W sekcji connectionReferences znajdziesz wszystkie połączenia zdefiniowane i używane przez aplikację, np. Outlook, OneDrive i inne, a na pewno w tym przypadku – SharePoint. Teraz poszukaj sekcji dataSets. Zawiera definicje wszystkich list używanych przez aplikację. Zamień ich identyfikatory GUID na wartości obecne w docelowym środowisku:

            "connectionReferences": {
                "1dd34a9f-a232-48d7-b9b1-f3a149529511": {
                    "id": "49384936-6f18-4567-8283-411e553280d2",
                    "displayName": "SharePoint",
                    "iconUri": "https://connectoricons-prod.azureedge.net/sharepointonline/icon_1.0.1008.1183.png",
                    "dataSources": [
                        "LIST OF DATA SOURCES USED BY THE APP, e.g. SHAREPOINT LISTS’ TITLES"
                    ],
                    "dependencies": [],
                    "dependents": [],
                    "parameterHints": {},
                    "isOnPremiseConnection": false,
                    "bypassConsent": false,
                    "dataSets": {
                        "URL TO THE SITE": {
                            "dataSources": {
                                "LIST NAME": {
                                    "tableName": "LIST GUID"
                            }
                        }
                    },

Następnie przejdź do sekcji embeddedApp. Określa lokalizację, w której aplikacja ma zostać wdrożona. Zmień siteId, listId i listUrl na wartości właściwe dla środowiska docelowego:

"embeddedApp": {
                "siteId": "SITE URL",
                "listId": "DESTINANTION LIST’S GUID",
                "listUrl": "DESTINATION LIST’S URL",
                "type": "SharepointFormApp",
                "screenWidth": 1185,
                "screenHeight": 790
            },

Na koniec zapisz plik w innym miejscu i zaktualizuj/ nadpisz powiązany plik w archiwum (paczka). Po zakończeniu przejdź do witryny web.powerapps.com w środowisku docelowym.

Importowanie appki PowerApps jako formularza listy SharePoint

Ten proces jest również taki sam, jak podczas importowania pakietu samodzielnej aplikacji. Po prostu otwórz stronę „Apps” w PowerApps, a następnie kliknij link „Import package”:

Importing PowerApps app package
Importowanie pakietu aplikacji PowerApps

Następnie wskaż zapisany plik ZIP zawierający zmodyfikowany plik JSON. Po wybraniu, mechanizm importu zapyta, czy zaimportować aplikację jako nową, czy zaktualizować istniejącą. W moim scenariuszu nie ma aplikacji do aktualizacji, dlatego zdecydowałem się ją zaimportować jako nową. Po kilku sekundach aplikacja zostanie poprawnie zaimportowana jako formularz listy.

Po wykonaniu tej czynności należy pamiętać, aby otworzyć zaimportowany formularz w designerze i sprawdzić, czy wszystkie źródła danych zostały poprawnie ponownie połączone i czy wszystkie uprawnienia działają poprawnie. Jeśli napotkasz jakiekolwiek problemy z dostępem do list, po prostu usuń te źródła danych i dodaj je ponownie.

Pamiętaj, aby opublikować swoją aplikację na końcu. Powodzenia!