Edellisessä kirjoituksessa kävimme läpi miten SharePointin Create site -toiminnolla luodaan sivustoja käyttäen räätälöityä sivustomallia. Ratkaisusta jäi kuitenkin puuttumaan muutama perinteiselle provisiontiratkaisulle tyypillinen elementti.
Täydennetään ratkaisua seuraavasti
- Sivuston tilaaja voi tilauksen yhteydessä antaa lisätietoja, joita hyödynnetään sivuston luonnissa
- Lisätään tilaamiseen hyväksyntäprosessi
Vaihe 1 – Sivustojen tilaukset -lista
Ratkaisun pohjaksi tarvitsemme listan, johon tilaukset tallennetaan.
Listan kentät ovat:
- Title – Sivuston otsikko
- Owner – Sivuston omistaja (ja tilaaja)
- SiteUrl – Sivuston osoite
- Status – Tilauksen tila
- Project description – Projektin kuvaus (nyt tilataan sivustoja projekteille)
- Project size – Projektin koko (yli tai alle 100 htp)
- PnPTemplate – PnP-mallipohja jota käytetään sivuston luonnissa
- Handler – Tilauksen käsittelijä
- Approval comments – Hyväksymisen/hylkäämisen kommentit
Vaihe 2 – Sivuston omistajan ja otsikon selvittäminen
Sivuston luontiprosessiin pääsee kiinni Flow:n avulla. Valitettavasti ainoa tieto tilatusta (oikeastaan luodusta) sivustosta on sen url-osoite. Tämä ei riitä mihinkään. Tehdään Functions, joka PowerShellin avulla selvittää sivustoston omistajan sekä otsikon.
Eli ajetaan
Get-SPOSite -Identity 'sivuston osoite'
$Group = $site.Owner $title = $site.Title
Valmis funktio näyttää tältä.
Vaihe 3 – Projektin kuvauksen lisääminen PnP-mallipohjaan
Tarkoituksemme on pyytää käyttäjältä projektin kuvaus ja liittää se sivustolla oikeaan paikkaan. Tehdään tätä varten edellisen jutun esimerkkiin pari muutosta.
Vaihdetaan PnP-mallipohjan ohjeteksti ”Todo: Kirjoita tähän projektin lyhyt kuvaus” muotoon ”PlaceHolderForDescription”.
Lisätään sivustolle muutokset tekevään functionsiin (Apply-PnPProvisioningTemplate) uudeksi parametriksi projektin kuvaus (description).
$Description = $requestBody.Description
Korvataan samaisessa functionsissa PnP-mallipohjasta teksti ”PlaceHolderForDescription” parametrina saadulla kuvauksella. Lopputulos tallennetaan väliaikaiseen tiedostoon (pnp_template_tmp.xml).
PowerShell komento tälle on
(Get-Content -Path $Path$PnpTemplateFile).Replace("Placeholderfordescription",$Description) | Set-Content -Path $Path$temporaryPnPTemplate
Lopuksi tehdään sivustolle muutokset käyttäen tätä väliaikaista mallipohjaa, jossa oikea projektin kuvaus on paikoillaan.
Päivitetty Functions näyttää tältä.
Vaihe 4 – Uuden tilauksen käsittely
Käyttäjän tilatessa uuden projektisivuston, käynnistyy edeltävässä kirjoituksessa määrittelemämme Flow. Muokataan Flowta siten ettei se teekkään sivustolle muutoksia vaan
- selvittää tilatun sivuston omistajan ja otsikon
- tallentaa tilauksen SharePoint-listaan
Näin saamme tilauslistaamme rivin jokaista uutta sivustotilausta kohden.
Voimme jatkaa tilauksen käsitellyä aivan miten haluamme hyödyntäen kaikkia Office 365:n mahdollisuuksia.
Katsotaan kuitenkin vielä hieman tarkemmin miten tuo tilausrivi saadaan synnytettyä.
Flow käynnistyy edelleen SharePointin generoimalla http-kutsulla. Kutsutaan ensimmäisenä luomaamme GetSiteOwnerGroup functionsia, joka palauttaa sivuston otsikon sekä sivuston omistajat -ryhmän id:n.
Tallennetaan vastaukset Array-tyyppiseen muuttujaan.
Haetaan sivuston omistaja-ryhmän jäsenet. Tarvittava Group Id kaivetaan hieman mystisellä tavalla muuttujasta.
variables('SiteTitleAndGroupID')[0]?['groupid']
Eli arrayn ensimmäisen alkion groupid -elementin arvo. Näin toimimalla vältytään Flow:n generoimilta for each -silmukoilta.
Tallennetaan vastaus muuttujaan.
Lopuksi tiedot talletetaan yhdeksi riviksi SharePointin tilauslistaan.
Title tallennetaan lauseella (expression)
variables('SiteTitleAndGroupID')[0]?['sitetitle']
Owner vastaavasti (mikäli omistajia on useita, käytämme ensimmäistä)
variables('ListGroupMembersResult')[0]?['mail']
Käyttäjän luodessa uuden projektisivuston Create site -toiminnolla, ilmestyy projektityötilojen tilaukset -listallemme uusi rivi.
Valmis Flow ei ole kovin monimutkainen.
Vaihe 5 – Lisätietojen kysyminen sivuston tilaajalta
Harmiksemme SharePointin sivuston tilauslomakketta ei ole mahdollista muokata. Tähän näkymään ei siis saa omia kenttiä.
Haluamme tietää projektisivuston luontia varten projektin koon sekä kuvauksen. Kysytään ne tilaajalta lomakkeen täyttämisen jälkeen.
Tehdään toinen Flow, joka käynnistyy uuden rivin ilmestyessä tilauslistalle. Flow lähettää tilaajalle sähköpostin, jossa pyydetään täyttämään lisätietoja koskien tilattua sivustoa.
Lisätiedot täytetään PowerAppsilla. Tehdään seuravaksi sellainen.
Vaihe 6 – Lisätietojen syöttäminen PowerAppsilla
Tehdään PowerApps-sovellus, joka saa paramterina SharePoint-listan rivin id:n. Käyttäjä voi päivittää sen avulla muutamaa rivin kenttää.
Lisätään tietolähteeksi (Data source) projektityötilojen tilaukset -lista. Lisätään näytölle lomake, joka avaa muokattavaksi listalta yhden rivin.
- DataSource = ’Projektityötilojen tilaukset’
- Item = LookUp(’Projektityötilojen tilaukset’, ID = Value(Param(”order_id”)))
Käyttäjä syöttää tiedot ainoastaan Project size ja Project Description -kenttiin. Päivitämme itse rivin status-kentän arvoksi ”Additional Info filled”. Näin tiedämme käyttäjän lisänneen kysytyt tiedot.
Tallennuksen ja julkaisun jälkeen käydään katsomassa mikä on PowerAppsin web-osoite.
Tätä urlia käytämme aiemmin tekemämme Flow:n lähettämän sähköpostin linkissä.
Vinkki – Tässä tapauksessa PowerAppsia siistimpi ratkaisu olisi toiminnalliset viestit (actionable messages). Niitä käyttäen sivuston tilaajalle tulisi sähköpostiin lisätietopyyntö, johon hän voisi suoraan täyttää pyydetyt tiedot.
Eli tämännäköinen sähköposti.
Vaihe 7 – Täydennetyn tilauksen käsittely
Tehdään kolmas Flow, joka hoitaa kaiken tästä eteenpäin. Flow käynnistyy aina kun tilausriviä muokataan.
Ensimmäisenä alustetaan muuttuja, jossa säilytetään käytettävän Pnp-mallipohjan nimeä.
Tämän jälkeen toiminta haarautuu (Switch) sen mukaan, mikä muokatun rivin tila on.
Haara 1 – Lisätiedot täytetty
Mikäli käyttäjä on juuri syöttänyt pyydetyt lisätiedot (projektin kuvaus ja koko), edetään Additional Info filled -haaraan. Se käynnistää Flown hyväksymisprosessin (Start an approval).
Hyväksyjä saa pyynnön sähköpostilla sekä suoraan Flow-mobiilisovellukseen, mikäli hänellä se on asennettuna.
Flow jää odottamaan hyväksyjän kuittausta. Mikäli pyyntö hyväksytään, tarkistetaan onko projektin kooksi määritelty suuri (yli 100htp). Tällöin vaihdetaan käytettävä PnP-mallipohja toiseksi (big_project_template.xml).
Lopuksi päivitetään tilausrivin tiedot.
Mikäli tilaus hylätään, päivitetään tilaukselle uusi status, hylkäyksen syy sekä hylkääjän nimi.
Haara 2 – Tilaus hyväksytty
Tilausrivin tilan saadessa arvon ”Approved”, suoritetaan sama Flow päättyen Approved -haaraan. Siellä sivustolle tehdään varsinaiset muutokset kutsumalla Functionsia, joka suorittaa Apply-PnPProvisioningTemplate -komennon.
Huomaa että sivustoon tehtävät muutokset riippuvat siitä mitä PnP-mallipohjaa (PnP Template file) käytetään. Esimerkissämme mallipohja riippuu projektin koosta.
Lähetetään tilaajalle sähköposti, jossa kerrotaan sivuston olevan valmiina käyttöön.
Lopuksi päivitetään tilauksen tilaksi luotu (Created).
Haara 3 – tilauksen hylkääminen
Mikäli tilaus hylätään, lähetetään tilaajalle tieto hylkäämisestä sekä IT:lle muistutusviesti jo luodun sivuston poistamisesta.
Turhaan luotujen sivustojen poistamisen voi automatisoida Functionsissa ajettavalla PowerShellillä. Säästin sen lisäharjoitukseksi.
Valmis työnkulku kokonaisuudessaan
Varsinaisen työn tekevä Flow on jo hieman monimutkaisempi. Kokonaisuudessaan se näyttää tältä.
Punaisella merkityn haaran sisältö näyttää tältä.
Miltä valmis ratkaisu näyttää?
Käyttäjä tilaa uuden sivuston.
Sivusto luodaan ja siihen tehdään sivumallin pohjalta muutokset. Lopuksi käynnistyy työnkulku.
Käyttäjä saa sähköpostin, jossa pyydetään täyttämään lisätiedot.
Käyttäjä täyttää lisätiedot.
Käyttäjä saa vahvistuksen sivuston lopullisesta valmistumisesta.
Valmis sivusto näyttää tältä.
Yhteenveto
Hyvää
- Loppukäyttäjä voi tilata yhdestä ja samasta paikasta vakiosivustot (tiimityötilat / viestintäsivustot) sekä räätälöidyt sivustot.
- Luotavia sivustoja voi muokata PnP:n avulla monipuolisesti
- Ratkaisu ei sisällä käytännössä ollenkaan koodia
Huonoa
- Sivuston luontiprosessissa Flow ajetaan viimeisenä. Sivuston tilausta hyväksyttäessä sivusto on käytännössä jo luotu. Toivottavasti pian tulee mahdollisuus lisätä sitescriptiin Flow, joka ajetaan ennen sivuston luontia.
Mutta onko sivustoprovisiointien aika jo ohi?
Käytin esimerkkinä perinteistä projektisivuston tilaamista. Mikäli olisin asiakas, miettisin hetken haluanko projektien käyttöön perinteiset sivustot vai tähän tarpeeseen muokatut Teamsit.