Microsoft ohjeistaa uudelleenjulkaisemaan PowerAppsit säännöllisesti. Näin pääsee nauttimaan bugikorjauksista ja suorituskykyparannuksista, joita Microsoft alustaan on tehnyt.
Vauhti on sitä luokkaa, että korjauksia ja parannuksia riittää.
Mutta kuka muistaa ja jaksaa uudelleenjulkaista säännöllisesti PowerAppsinsa?
Ei kukaan.
Siksi koko uudelleenjulkaisuprosessi on syytä automatisoida. Tietenkin Flow:lla.
PowerAppsin voi julkaista vain, jos siihen on muokkausoikeudet (editor). Pelkät ympäristön administrator-oikeudet eivät riitä.
Tämän vuoksi lisätään ensin oma hallitaryhmämme (PowerPlatformAdmins) muokkaajaksi kaikkiin organisaation PowerAppseihin.
Tämä on myös hallintamielessä järkevä käytäntö. Ilman mitään automatisoitua uudelleenjulkaisua.
Vielä pitäisi tehdä pari Flow:ta, niin homma on valmis.
Flow 1 – Hallintaryhmän lisääminen jokaiseen PowerAppsiin muokkaajaksi
Tämä Flow käynnistyy kerran päivässä. Alustetaan ensimmäisenä muuttuja (isAdminAllreadyAdded), johon tallennetaan tieto siitä onko PowerApps jo jaettu PowerPlatformAdmins ryhmälle.
Seuraavaksi haetaan kaikki ympäristöt (List Environments as Admin) ja käydään ne läpi (Apply to each). Kunkin ympäristön kohdalla haetaan kaikki siellä majailevat PowerAppsit (Get Apps as Admin).
Jokaisen PowerAppsin kohdalla alustetetaan isAdminAllreadyAdded -muuttujan arvoksi false. Emme vielä tiedä, onko IT:n ryhmä aiemmin lisätty PowerAppsin muokkaajiksi.
Tämän jälkeen haetaan PowerAppsin käyttäjät Get App Role Assignments as Admin -toiminnolla. Parametreina ovat
- Environment Name
- PowerApp Name
Flow-editori lisää automaattisesti tarvittavan Apply to each -toiminnon.
Seuraavaksi käydään läpi PowerAppsin käyttäjät. Mikäli niiden joukosta löytyy käyttämämme hallintaryhmä, päivitetään muuttujan isAdminAllreadyAdded arvoksi true.
Lopuksi tarkistetaan, oliko ryhmällä tarvittavat oikeudet. Mikäli ei ollut, annetaan ne Edit App Role Assignment as Admin -toiminnolla.
- Role Name – CanEdit
- Principal Object ID – PowerPlatformAdmins –ryhmän ID
- Principal Type – 4 (= security group)
Vinkki: Kun vertaat ehdossa, onko boolean muuttujan arvo true, voit käyttää tähän bool(true) -lausetta.
Ja sitten tarkkana!
PowerAppsien seassa on kahdenlaisia PowerAppseja, joita ei voi jakaa muiden PowerAppsien tapaan.
- PowerAppsit, jotka eivät ole itsenäisiä sovelluksia, vaan SharePoint-listan muokattuja lomakkeita (SharePoint Form). Näitä ei jaeta käyttäjille, vaan ne perivät käyttöoikeudet SharePoint-listalta, johon ne on liitetty.
- PowerAppsit, jotka sisältyvät paketoituun ratkaisuun (Solution package).
Ensimmäisen kohdalla Get App Role Assignments as Admin –toiminto päättyy virheeseen. Toisen kohdalla virheeseen menee taas Edit App Role Assignment as Admin -toiminto.
Muokataan Flow:ta vielä hieman. Kerätään muuttujiin talteen
- Monelleko PowerAppsille IT:n ryhmä lisättiin
- Mitkä SharePoint-listan muokatut lomakkeet ympäristöstä löytyi (= ei voida hakea PowerAppsin käyttäjiä)
- Mitkä PowerAppsit ovat osana paketoituja ratkaisuja (= ei voida lisätä ryhmää editoriksi)
Valmis työnkulku näyttää tältä.
Nyt kaikki (canvas) PowerAppsit on jaettu sopivalle IT:n käyttämälle ryhmälle. Mikäli PowerAppsin omistaja poistaa ryhmän muokkaajista, lisätään se seuraavana päivänä taas automaattisesti uudelleen.
PowerAppsit on otettu väkisin IT:n haltuun.
Huom! Kannattaa hetken miettiä, mitkä PowerAppsit otetaan pakotetusti IT:n haltuun. Halutaanko ottaa kaikki, mukaanlukien käyttäjien omat kokeilut ja testit. Vai lisätäänkö IT:n ryhmä muokkaajien joukkoon vasta silloin, kun PowerApps on jaettu vähintään yhdelle henkilölle tai ryhmälle. Jolloin voidaan olettaa sen olevan oikeassa käytössä.
Flow 2 – Organisaation PowerAppsien automaattinen uudelleenjulkaisu
Ja sitten itse asiaan. PowerAppsien automaattiseen uudelleenjulkaisuun.
Tämä Flow ajetaan viikottain. Alustetaan alkuu pari tarvittavaa muuttujaa (VersionName ja LifeCycleId).
Alkuosa on identtinen edellisen esimerkin kanssa. Haetaan kaikki ympäristöt.
Jonka jälkeen haetaan ympäristön PowerAppsit. Ympäristön nimi (Environment name) löytyy edellisen toiminnon palauttamista arvoista.
Ympäristöjä voi olla useita, joten Flow luo automaattisesti käytä kaikkiin (For each) -toiminnon.
Meitä kiinnostaa PowerAppsit, joiden edellisestä julkaisusta on yli 90 päivää. Eli joiden AppVersion < utcNow() – 90d.
Mikäli ehto täyttyy, uudelleenjulkaisemme PowerAppsin. Emme kuitenkaan halua tehdä julkaisua, mikäli PowerAppsista on julkaisemattomia työversioita.
Jos julkaisisimme alla olevan kuvan PowerAppsin, tulisi versiosta 6 uusi julkaistu versio. PowerAppsin tekijä tuskin haluaa näin tapahtuvan. Hänellä on todennäköisesti PowerAppsin kehitys vielä kesken.
Selvitetään siis seuraavaksi, onko PowerAppsin viimeisin versio jo valmiiksi julkaistu. Mikäli on, voimme suorittaa uudelleenjulkaisun. Muussa tapauksessa lähetämme PowerAppsin omistajalle pyynnön hoitaa julkaisu itse, mikäli se on mahdollista.
Tarvittavat tiedot löytyvät PowerAppsin versiohistoriasta, joka saadaan esiin Get App Versions –toiminnolla.
Se palautaa kilometrin pituisen vastauksen, jossa jokaisesta PowerAppsin versiosta on kerrottu vaikka mitä.
Olemme kiinnostuneita ainoastaan sovelluksen viimeisestä versiosta, joka on vastauksessa ensimmäisenä. Poimitaan se käyttöömme first-lauseella.
Tämän jälkeen parsitaan tämän viimeisen version tiedot Jäsennä JSON -toiminnolla.
Parsimisessa käytetään seuraavaa rakennetta (schema).
{ "type": "object", "properties": { "name": { "type": "string" }, "properties": { "type": "object", "properties": { "lifeCycleId": { "type": "string" } } } } }
Näin meille jää käsiteltäväksi vain kiinnostava osuus
- Version nimi (name)
- Version julkaisun tila (lifeCycleId)
Tallennetaan nämä muuttujiin, jolloin niitä on helpompi käyttää jatkossa.
Mikäli viimeisimmän version LifeCycleId -kentän arvo on Published, on se julkaistu. Tällöin voimme julkaista sen uudelleen.
Mutta… Tuoreinta versiota ei voi suoraan uudelleenjulkaista. Siitä on tietenkin tehtävä ensin uusi versio. Tämä onnistuu Restore App Version -toiminnolla. Käytänössä palautamme tuoreimman version uudeksi julkaisemattomaksi versioksi.
Vihdoin pääsemme suorittamaan itse julkaisun.
Mikäli PowerAppsin viimeisintä versiota ei oltu julkaistu, lähetetään omistajalle sähköpostia.
Ja jälleen tarkkana!
PowerAppsilla muokatut SharePoint-listojen lomakkeet aiheuttavat jälleen harmaita hiuksia.
- Get App Versions -toiminto on tarkoitettu PowerAppsin muokkajalle. Mikäli sinulla ei ole oikeuksia SharePoint-listaan, jonka lomaketta on muokattu, et voi toimintoa tehdä (Forbidden).
- Mikäli muokkaat SharePoint-listan lomaketta PowerAppsilla ja tämän jälkeen poistat listan, jää ko PowerApps kuitenkin järjestelmään (NotFound).
Yllämainituista syistä teemme muutaman lisäyksen työnkulkuun. Lopputulos näyttää tältä.
Vaadittavat käyttöoikeudet ja lisenssit
Yllä esitellyt esimerkit edellyttävät käyttäjiltään joko
- kaikkiin ympäristöihin System Administrator -oikeudet,
- tenantin Dynamics 365 service administrator -oikeudet tai
- tenantin Global Administrator –oikeudet.
Lisäksi käyttäjällä tulee olla PowerApps P2 -lisenssi. Tämä vaatimus tulee tosin poistumaan lokakuun lisenssimalliuudistuksen myötä.
Yhteenveto
Power Platformin hallintayhdistimet (connectors) ovat mahtavia. Niiden avulla voi automatisoida tylsät ja hankalat ympäristöjen hallintaan liittyvät toimet.
Mikäli esimerkin kaltainen täysautomaatio tuntuu rajulta, voit tehdä kevyemmän version. Keräät Flow:lla ympäristöistä listat PowerAppseista joita ei ole
- julkaistu 90 päivän sisällä
- jaettu IT:n hallintaryhmälle
Teet sitten manuaalisia toimia tämän tiedon pohjalta.
Lupaan että kyllästyt pian ja haluat automatisoida tämänkin työn.