Vanuit de community is er voor Patterns and Pratices(PnP) een standaard voor gemaakt. Als je PnP niet gebruikt, dan is provisionen niet aan te bevelen. Heb je wel voor PnP gekozen, dan ga je daarna kijken naar het platform waarop je gaat ontwikkelen. Hiervoor heb je eigenlijk drie mogelijkheden:

  1. C#
  2. PowerShell
  3. CLI (Deze optie is platform onafhankelijk)

Zowel C# als PowerShell zijn erg uitgebreid en werken erg goed. Welke van deze twee opties je kiest, is een kwestie van smaak. CLI daarentegen staat nog een beetje in de kinderschoenen, maar is wel een interessante optie omdat het erg begint te ontwikkelen. Het is een techniek die is ontwikkeld, zodat de provisioning ook op Linux en MAC kan draaien. In dit artikel kijken we puur naar Windows.

Met welke technieken moeten je rekening houden?

Als jij aanpassingen wilt doen aan het systeem, bijvoorbeeld als je een hele specifieke businesscase hebt. Businesscases waarbij je specifieke modules aanbouwt, kun je alleen in C# doen. Als je echt een provisioningplatform wilt bouwen, die in principe alles moet kunnen, dan is het veelal handig om voor maar één techniek te kiezen. Als je alleen sites wilt uitrollen op basis van bepaalde templates, dan kun je ook gebruik maken van PowerShell.

Wat maakt het lastig in SharePoint?

Er zijn ook dingen waar je op moet letten, vanwege SharePoint. Een van de aandachtspunten zijn de webparts. Op het moment dat jij twee keer een installatie doet op dezelfde locatie, dan doet hij in principe een reset van alles(in Modern). Dat wil zeggen dat er dan veranderingen verloren kunnen gaan. Bij de Classic variant worden de web onderdelen erbij gezet en dan staan ze er dubbel. Wil je dit voorkomen, dan zul je een module of optie moeten schrijven die dat recht trekt. Als je out of the box provisioning gebruikt, dan is twee keer installeren op dezelfde locatie geen optie.

Hoe ga je om met Templates?

Stel voor dat je een template maakt die zowel op sitecollectie- als op siteniveau uitgerold moet worden. Die templates zien er anders uit, omdat sommige onderdelen niet op een site of sitecollectie uitgerold mogen worden. Dit komt door de standaarden die Microsoft heeft bepaald. Doe je dat wel, dan krijg je foutmeldingen. Je moet dus bedenken welk template op welk niveau moet komen. Dit kun je op twee manieren oplossen:

  1. Je maakt twee duplicate templates, waarbij je de onderdelen verwijdert die niet geschikt zijn voor het niveau waarin je hem uit wil rollen;
  2. Je splitst de templates op in meerdere kleine stukken en zorgt er zo voor dat een template uit meerdere modules bestaat.

Allebei de manieren hebben voor- en nadelen. Versie 1 is sneller, maar minder makkelijk te onderhouden. Versie 2 is dus in verhouding minder snel, maar is flexibeler op verschillende niveaus.

Zorg dat een installatie transactional wordt!

Een installatie bestaat uit meerdere stappen. Bijvoorbeeld voorbereiding, installeren en afmaken. Zorg er dan voor dat wanneer hij halverwege uitvalt, om welke reden dan ook, je niet helemaal opnieuw hoeft te beginnen. Je moet ervoor zorgen dat er op verschillende ‘tussenstops’ een save moment is en dat de installatie vanaf daar verder gaat. Mocht er dan iets fout gaan, dan pakt hij later de installatie op vanaf dat punt.

Test je use case

Dit betreft wederom Patterns and Practices en het uitgangspunt is dat je altijd gebruik maakt van de laatste versie. Het is en blijft alleen wel een platform dat in beweging is. Het kan dus gebeuren dat er in de beschrijving staat dat iets moet werken, maar als je test blijkt dat niet zo te zijn omdat een nieuwe patch net iets heeft aangepast waardoor jouw use case niet meer werkt. Ga er niet zomaar vanuit dat de nieuwste versie ook altijd aan jouw eisen voldoet.

‘’Pak een versie (standaard de nieuwste). Begin met testen en wanneer je een functionaliteit tegen komt die zou moeten werken, kijk dan even naar de releasenotes of er een bug gemeld is en in welke versie dit nog niet het geval was. Ga terug naar deze versie en test het dan nogmaals.’’

Tot slot

Doe mee met de community en lees de fora. Hier wordt zo ontzettend veel gedeeld qua informatie en voorbeelden. Het kan zo zijn dat je heel veel tijd en moeite moet doen om iets te programmeren, maar als je even goed online zoekt staan er veel voorbeelden die je al voor het grootste gedeelte op weg kunnen helpen.