SharePoint ja Power Platform on moneen käyttöön oiva yhdistelmä. Itseäni on kuitenkin aina vaivannut se, ettei tällä parivaljakolla voi käytännössä toimia erillisissä testi ja tuotantoympäristöissä. Olen avautunut aiheesta jo yhden kirjoituksen verran,
Syy ongelmaan on ymmärrettävä.
Power Appsit ja Flow’t ovat yhteydessä SharePointiin yhdistimen (connector) avulla. Yhdistin ei ole tietoinen mitä sivustoa ja sen listaa milloinkin käytetään. Tämä tieto kerrotaan Power Appsin ja Flow’n sisällä niiden luontivaiheessa.
Kun ratkaisu aikanaan siirretään toiseen ympäristöön, joudutaan nämä tiedot korjaamaan.
Jokaisella siirtokerralla.
Ongelmaa on voinut paikata eri tavoin, mutta kaikki keinot ovat olleet enemmän tai vähemmän huonoja. Ja jotain käsityötä temppuiluun on aina sisältynyt.
Ratkaisu – Ympäristömuuttujat
Ongelmaan on nyt saatu ratkaisu. Vihdoin voimme siirtää SharePointia hyödyntävän ratkaisun ympäristöstä toiseen, ilman Power Appsien ja Flow’n korjaamista jokaikisen siirron jälkeen.
Tämä onnistuu uudella tietolähde (datasource) -tyyppisellä ympäristömuttujalla (environment variable, preview).
Kahden ympäristön kokonaisuus näyttää nyt tältä.

Katsotaan miten temppu käytännössä tehdään. Samalla selviää löytyykö tästä lupaavasta ominaisuudesta jotain puutteita.
Esimerkki – Havainnot
Käytetään esimerkkinä Power Appsia ja Flow’ta, jotka hyödyntävät SharePoint-listalle tallennettuja havaintoja.
Tietojen tallennus (SharePoint-lista)
Luodaan kehitys/testi-sivustolle (Timo Dev Env) Issues-lista ja lisätään sille muutama testihavainto.

Tämän jälkeen luodaan erilliselle tuotanto-sivustolle (Timo Prod Env) identtinen Issues-lista. Helpoimmalla pääsee kopioimalla listan kehitys/testi-sivustolta.

Luodaan muutama havainto myös tuotantoon.

Ratkaisupaketti ja ympäristömuuttujat
Jotta kokonaisuus on siirrettävissä ympäristöstä toiseen, tehdään kehitys ratkaisupaketin (solution) sisällä. Luodaan siis kehitysympäristöön ratkaisupaketti (Issues Demo).

Seuraavaksi alkaa taikuus.
Luodaan uusi ympäristömuuttuja (environment variable), johon tallennamme tässä ympäristössä käyttämämme SharePoint-sivuston.

Annetaan ympäristömuuttujalle nimi (1), valitaan tyypiksi tietolähde (2), käytettäväksi yhdistimeksi SharePoint (3), yhteydeksi olemassa oleva SharePoint-yhteys (4) ja parametrityypiksi sivusto (5).

Viimeisenä kerrotaan mikä muuttujan arvo on tässä ympäristössä (6, Current site value). Arvo valitaan listalta. Helppoa!

Luodaan vielä toinen ympäristömuuttuja, johon tallennamme tässä ympäristössä käyttämämme SharePoint-listan.
Samat vaiheet kuin sivustonkin kanssa, mutta tällä kertaa parametrityypiksi valitaan lista (1). Tämän jälkeen päästään valitsemaan miltä sivustolta lista löytyy (sivustolla viitataan äsken luomaamme muuttujaan).
Lopuksi kerrotaan mikä muuttujan arvo on tässä ympäristössä (Current list value, 3). Eli mitä listaa käytämme.

Ympäristömuuttujamme ovat valmiit!

Muuttujien käyttö Power Appsissa
Seuraavaksi luomme Power Appsin, joka käyttää tietolähteenä Issues-listaa.
Luodaan uusi (Canvas) Power Apps (New -> App -> Canvas App – Tablet form factor).

Lisätään Power Appsiin normaaliin tapaan uusi tietolähde (SharePoint). Emme kuitenkaan valitse mitä sivustoa ja sen listaa haluamme käyttää, vaan siirrymme Advanced-välilehdelle.
Ja kas, sieltä löytyy juuri luomamme ympäristömuuttuja (Issues SharePoint Site).

Valitaan tämä, jonka jälkeen valitaan mitä valitun sivuston listaa käytämme. Siirrytään jälleen Advanced-välilehdelle ja poimitaan tavallisen listan sijasta muuttuja (Issues SharePoint List).

Ympäristömuuttujan avulla lisätty lista näyttää ja toimii Power Appsissa aivan kuten perinteiseen tapaan tietolähteeksi lisätty lista.
Lopuksi lisäämme näytölle gallerian, joka esittää Issues-listan rivit.

Valmista! Tallennetaan ja julkaistaan.
Muuttujien käyttö Flow’ssa
Haluamme lähettää viestin Teamsiin aina kun uusi havainto lisätään. Luodaan ratkaisupaketin sisään tätä varten uusi Flow.

Kyllä! Voimme hyödyntää ympäristömuuttujia Flow’n perustoimintojen lisäksi myös sen käynnistävässä triggerissä.
Muuttujien arvot löytyvät parametrit (Parameters) -otsikon alta, mutta se tulee vaihtumaan ympäristömuuttujiksi (Environment Variables).

Haluamme tietenkin lähettää testiympäristössä lisätyistä havainnoista viestin omaan Tiimiin ja tuotannossa luoduista havainnoista omaansa.
Lisätäänkin ympäristömuuttujat käytettävälle tiimille (Issues Team Id) ja kanavalle (Issues Team Channel Id).

Ja

Luodut ympäristömuuttujat löytyvät parametrien joukosta.

Näin meillä on Flow, joka on siirrettävissä ympäristöstä toiseen.
Aikaisempaan virittelyyn verrattuna tässä on kaksi merkittävää eroa
- Triggerin sivusto ja lista voidaan lukea parametreista
- SharePoint-listan skeema (schema) on flow’n käytössä parametrien kanssa. Eli flow tietää mitä kenttiä parametrien takana olevassa SharePoint-listassa on.
Ensimmäinen asennus tuotantoympäristöön
Ennen ensimmäistä tuotantoympäristöön vientiä, tulee jokaisen ympäristömuuttujan arvo käydä poistamassa siirrettävästä ratkaisupaketista. Muutoin muuttujiin sidotut arvot valuvat eteenpäin kohdeympäristöön ja kaikki on pilalla.
Käydään muokkaamassa kutakin ympäristömuuttujaa ja valitaan nykyisen arvon kohdalta ”Remove from this solution”.

Kun muuttujat on siivottu, aloitetaan ratkaisupaketin lataaminen (Export).

Lopputuloksena on zip-paketti.
Siirrytään kohdeympäristöön ja ladataan ratkaisupaketti sinne (import).

Ensimmäisen tuonnin yhteydessä valitaan yhteydet, joita kohdeympäristössä käytetään

Tämän jälkeen ympäristömuuttujille annetaan arvot. Eli valitaan mitä SharePoint sivustoa ja listaa tässä ympäristössä käytetään.
Jostain syystä Teamsiin liittyvistä ympäristömuuttujista puuttuu kokonaan otsikot…

Toimiiko se?
Avataan tuotantoympäristössä sinne kehityksestä tuotu Power Apps. Galleria näyttää havainnot tuotannossa käyttämästämme SharePoint-listasta. Hienoa!

Ja kun tuotannon havaintolistaan tulee uusi rivi, pyörähtää Flow käyntiin.
Paitsi eipäs pyörähdäkään.
Mutta kun testiympäristömme havaintolistaan lisätään rivi, pyörähtää Flow käyntiin sekä testi- että tuotantoympäristössä.
Muistakaa, kyseessä on preview-ominaisus. Ei se lopullinen.
Kun tuotantoympäristössä käy kertaalleen avaamassa ja tallentamassa Flow’n niin johan toimii.

Uuden version tuominen tuotantoon
Lopuksi tulikoe. Mitä tapahtuu, kun teemme testiympäristössä muutoksia ja tuomme uuden paketin tuotantoon?
Muokataan Flow’ta hieman.

Samoin Power Appsia.

Viedään ratkaisupaketti testiympäristöstä ilman mitään muuttujien tai yhteyksien säätämistä.

Avataan tuotantoympäristössä Power Apps. Uskottava se on. Toimii.

Entäpä se Flow?
No siellä on samat murheet kuin ensimmäiselläkin tuontikerralla. Flow pitää käydä avaamassa ja tallentamassa tuonnin jälkeen.
Mutta sen jälkeen kaikki pelaa.

Eikä tuonnin yhteydessä tarvitse missään kohtaa kertoa, mitä sivustoa ja listaa missäkin käytetään.
Havaintoja
Ominaisuus on juuri julkaistu ja se on esikatselu (preview) vaiheessa. Kaikenlaista pientä bugia saattaa siis löytyä. Ja löytyy.
Mainitsinkin jo, miten joistain ympäristömuuttujista puuttuivat otsikot pakettia tuodessa. Kosmeettinen haitta jonka kanssa pärjää kunnes korjataan.
Suurempi ongelma on Flow, joissa käytetyt ympäristömuuttujat osoittavat väärään paikkaan, kunnes ne on jokaisen tuonnin jälkeen kertaalleen käynyt avaamassa ja tallentamassa. Mutta näinkin tämä on merkittävä parannus vanhaan.
Lopuksi huonoja uutisia SharePointin valinta-kentän (choice) ystäville.
Mikäli käytät Power Appsissa valinta-kontrolleja (dropdown tai combobox), joiden arvojoukkona on SharePoint-listan valinta-kenttä niin tämäpä ei (vielä) toimi. Mikäli viittaat SharePoint-listaan ympäristömuuttujan avulla.

Mutta onhan tämä nyt puutteistaan huolimatta aivan tolkuttoman mahtavaa. Kunhan lastentaudit saadaan korjattua, on tämä pelkkää juhlaa.
Ominaisuus hyödyntää Dataverseä eli sekä lähde että kohdeympäristössä tulee sellainen olla. Ympäristömuuttujien käyttö ei kuitenkaan edellytä erillisiä Power Apps tai Flow lisenssejä.