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ää.

nc3a4yttc3b6kuva-2019-8-10-kello-17.19.21.png

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).

Näyttökuva 2019-8-10 kello 17.22.23.png

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).

Näyttökuva 2019-8-10 kello 17.24.59.png

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.

Näyttökuva 2019-8-10 kello 17.28.26.png

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.

Näyttökuva 2019-8-10 kello 17.34.58.png

Kas näin.

Näyttökuva 2019-8-10 kello 17.39.40.png

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).

Näyttökuva 2019-8-11 kello 11.50.13.png

Lähetetään omistajan siirron jälkeen vielä tieto ympäristön omistajalle. Tällä kertaa suoraan minulle.

Näyttökuva 2019-8-11 kello 11.54.39.png

Valmis työnkulku näyttää tältä.

Näyttökuva 2019-8-11 kello 11.57.57.png

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).

Näyttökuva 2019-8-11 kello 12.31.05.png

Seuraavat vaiheet ovat identtiset edellisen Flow:n kanssa. Haetaan ensin ympäristöt ja sitten kaikki ympäristöjen PowerAppsit.

Näyttökuva 2019-8-11 kello 12.32.35.png

Tämän jälkeen haetaan vuorossa olevan PowerAppsin omistajan käyttäjäprofiili.

Näyttökuva 2019-8-11 kello 12.34.41.png

Mikäli käyttäjää ei löydy, päätyy käyttäjäprofiilin hakeminen virheeseen. Viestinä (message) on ”User not found”.

Näyttökuva 2019-8-11 kello 17.07.04.png

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.

Näyttökuva 2019-8-11 kello 17.11.00.png

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”.

Näyttökuva 2019-8-11 kello 17.19.05.png
Ja valitaan toiminto suoritettavaksi ainoastaan kun edeltävä toiminto on epäonnistunut.

Näyttökuva 2019-8-11 kello 17.19.30.png

Uusi omistaja asetetaan ainoastaan, mikäli omistajan profiilin hakeminen päättyi ”User not found” virheeseen.

Näyttökuva 2019-8-11 kello 17.22.53.png

Varsinainen muutos tehdään vastaavasti kuin ensimmäisessä esimerkissä.

Näyttökuva 2019-8-11 kello 17.24.11.png

Lopuksi uudelle omistajalle lähetetään tieto siirrosta.

Näyttökuva 2019-8-11 kello 12.51.38.png

Valmis työnkulku näyttää seuraavalta.

Näyttökuva 2019-8-11 kello 17.24.56.png

 

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.

Näyttökuva 2019-8-11 kello 13.12.24.png

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ä.