Ehdottomasti yleisin kysymys PowerAppsien hallintaan liittyen. Voiko PowerAppsille nimetä uuden omistajan, kun alkuperäistä omistajaa ei ole enää (AD:ssa) olemassa?
Tämä on tyypillinen ongelma. Kuka tahansa organisaatiossa voi rakentaa PowerAppseja. Mitä sitten kun henkilö lähtee talosta? Konsulttien rakentamista ratkaisuista nyt puhumattakaan.
Co-ownereita voi lisätä PowerAppsin hallintasivuilta. Mutta alkuperäinen omistaja säilyy ennallaan. Kaikilla PowerAppseilla olisi kuitenkin järkevää olla yksi oikea omistaja.
Hätä ei ole tämännäköinen. Omistajatiedon voi vaihtaa PowerShellillä.
Set-AdminPowerAppOwner
Mutta miksi tyytyä tähän, kun koko homman voi automatisoida. Tietenkin Flow:lla.
Flow 1 – Kaikkien käyttäjän x PowerAppsien omistajan vaihtaminen
Suoraviivainen ratkaisu on tehdä Flow, joka vaihtaa kaikki käyttäjän x omistamat PowerAppsit jonkun toisen käyttäjän omistukseen. Esimerkiksi henkilön poistumisen jälkeen.
Tehdään sellainen.
Työnkulku käynnistyy manuaalisesti. Käynnistäjältä kysytään alkuperäisen ja uuden omistajan sähköpostiosoitteet. Uuden omistajan kohdalla voidaan käyttää sähköposti-kenttää, jolloin henkilö voidaan valita people pickerin avulla.
Alkuperäistä omistajaa ei enää löydy AD:sta, joten käytetään perinteistä tekstikenttää.
Omistajuuden siirtoa varten tarvitsemme uuden omistajan id:n. Tämän saa selville hakemalla hänen käyttäjäprofiilinsa.
Lähetämme omistajavaihdosta tiedon myös ylläpidolle. Viestissä kerrotaan kuka siirron on tehnyt. Tätä varten haemme käyttäjän oman profiilin (eli käyttäjän joka suorittaa tämän Flow:n).
Ideana on käydä läpi annetun henkilön kaikki PowerAppsit, joten ensin haemme käsiimme kaikki tenantin ympäristöt (List Environmets as Admin).
Seuraavaksi haetaan kaikki yhden ympäristön PowerAppsit (Get Apps as Admin). Ole tarkkana, lähes samanniminen Get App as Admin -toiminto hakee vain tietyn PowerAppsin.
Valitaan Enviroment Name -kenttään edeltävän toiminnon palauttama Name.
Haluamme vaihtaa käyttäjän X omistamien PowerAppsien omistajan. Lisätään ehto, jossa tutkitaan onko PowerAppsin omistajan sähköpostiosoite (PowerApp owner principal email) sama kuin Flow:n alussa annettu.
Kas näin.
Mikäli ehto toteutuu, asetetaan uusi omistaja Set App Owner -toiminnolla. Annetaan parametreiksi
- Environment Name = Käsiteltävän PowerAppin PowerApp Environemt name
- PowerApp Name = Käsiteltävän PowerAppin PowerApp name field
- API Version = 2016-11-01
- Content Type = application/json
- Role for Old App Owner = CanView
- New PowerApp Owner = Hae käyttäjäproofili -toiminnon palauttama tunnus (id).
Lähetetään omistajan siirron jälkeen vielä tieto ympäristön omistajalle. Tällä kertaa suoraan minulle.
Valmis työnkulku näyttää tältä.
Huomaa, että työnkulku osaa käsitellä ainoastaan standard PowerAppseja (ei SharePoint listojen muokattuja lomakkeita). Lue lisää seuraavasta jutusta.
Flow 2 – Puuttuvan omistajan korvaaminen
Voimme luonnollisesti tehdä myös Flow:n, joka
- käy päivittäin läpi kaikki PowerAppsit
- tarkistaa löytyykö omistajaa Azure AD:sta
- mikäli ei löydy, lisää omistajaksi automaattisesti käyttäjän X ja lähettää tästä sähköpostitse tiedon
Asetetaan Flow käynnistymään kerran päivässä. Ensimmäisenä toimintoa haetaan uuden ownerin käyttäjäprofiili (jotta saamme tarvittavan käyttäjä id:n).
Seuraavat vaiheet ovat identtiset edellisen Flow:n kanssa. Haetaan ensin ympäristöt ja sitten kaikki ympäristöjen PowerAppsit.
Tämän jälkeen haetaan vuorossa olevan PowerAppsin omistajan käyttäjäprofiili.
Mikäli käyttäjää ei löydy, päätyy käyttäjäprofiilin hakeminen virheeseen. Viestinä (message) on ”User not found”.
Jos näin käy, haluamme asettaa kyseiselle PowerAppsille uuden omistajan.
Hei, profiilitietojen hakeminen voi päätyä virheeseen muistakin syistä!
Tarkistetaan siis ensin, että virheen syy oikeasti on käyttäjän puuttuminen.
Lisätään jäsennä JSON (parse JSON) -toiminto. Koska käyttäjäprofiilin haku -toiminto ei palauta bodya (joka sisältää virhetekstin), käytetään jäsennä JSON -toiminnon sisältönä lausetta
body('Hae_ownerin_käyttäjäprofiili_(V2)')
Huom: Parametri on edellisen toiminnon nimi.
Haluamme tietää ainoastaan virheen viesti-osuuden, joten rakenne (schema) on seuraava.
{ "type": "object", "properties": { "error": { "type": "object", "properties": { "message": { "type": "string" } } } } }
Kaikki tämä tehdään ainoastaan, mikäli edeltävä toiminto (omistajan käyttäjäprofiilin hakeminen) on epäonnistunut. Valitaan kolmen pisteen takaa ”Määritä suorita jälkeen”.
Ja valitaan toiminto suoritettavaksi ainoastaan kun edeltävä toiminto on epäonnistunut.
Uusi omistaja asetetaan ainoastaan, mikäli omistajan profiilin hakeminen päättyi ”User not found” virheeseen.
Varsinainen muutos tehdään vastaavasti kuin ensimmäisessä esimerkissä.
Lopuksi uudelle omistajalle lähetetään tieto siirrosta.
Valmis työnkulku näyttää seuraavalta.
Tällainen automaatio kuulostaa houkuttelevalta, mutta siinä omistajuus siirtyy aina yhdelle ja samalle henkilölle.
Fiksuinta voisi olla pitäytyä Flow:ssa, joka raportoi IT:lle PowerAppseista, joiden omistajaa ei enää löydetä. IT sitten siirtää tarpeen mukaan omistajuuden uudelle henkilölle, käyttämällä ensiksi tekemäämme Flow:ta.
PowerApps PowerAppsien hallintaan
Kuten edellä näimme, tarjoaa PowerPlatform admin-tason yhdistimiä, jotka kattavat
- ympäristöt (environments)
- PowerAppsit
- Flow:t
Näitä hyödyntäen voimme toteuttaa Flow:n lisäksi myös PowerAppsilla erilaisia työkaluja PowerPlatform-ympäristöjen hallintaan.
Alla kuvassa on PowerApps, jolla voi esimerkiksi hakea henkilön X luomat PowerAppsit ja päivittää hakutuloksesta valittujen PowerAppsien omistajat.
Työkalussa PowerAppsit ja esitetään kortteina, joissa kerrotaan PowerAppsista
- nimi
- omistaja
- luonti ja muokkausaika
- monelleko käyttäjälle jaettu
- monelleko ryhmälle jaettu
Huutomerkillä merkityt PowerAppsit ovat sellaisia, joita ei ole muokattu kertaakaan luomisen jälkeen. Nämä kannattaa käydä läpi ja tarpeen mukaan siivota pois.
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ä.