Presentation used in the SharePoint Dev (SP PnP) community call on 10th of April. Latest news on the SharePoint development topics within past month, including community contributions. Announcement of new Site Design and Site Script actions with live demos.
1. SharePoint Dev Ecosystem
/ PnP Community call –
April 2018
April 10th, 2018
SharePoint Dev Community Team / SP PnP Team
2. Agenda
• SharePoint Development - Latest News
• UserVoice update, monthly summary,
and other details
• New announcements
• New Site Script Actions released
today!
• Demos
• Sean Squires (Microsoft) – New Site
Script Actions in practice
• Yannick Plenevaux – Site Designer
Studio for creating your json files
• Q&A - Open discussion
3. Core Team
Special Interest
Groups (SIGs)
Community
SharePoint Developer Group
http://aka.ms/SPPnP-Community
Bi-weekly SharePoint Framework
https://aka.ms/sppnp-js-sig-call
Special Interest group on SharePoint Framework and
PnP JS Core with Q&A
Next on Thursday 12th of April
Bi-weekly SP General Dev
https://aka.ms/sppnp-core-sig-call
Special Interest group on SP dev, CSOM,
PnP tooling for managed code
Next on Thursday 19th of April
Monthly community calls
http://aka.ms/sppnp-call
What has happened during past month?
May 2018 community call on Tuesday 8th of May
4. Views in YouTube
26,225
Unique tenants #
11,013
Unique visitors in GitHub
37,556 (avg 2 weeks)
Views in GitHub
191,248 (avg 2 weeks)
Watch time in YouTube
162,144 minutes
Views in docs.microsoft.com –
SharePoint Dev
831,580
Http Requests #
9,7 Billion
Most used capability
- Provisioning Engine (2348 tenants)Note. SPFx usage in not public
information, but it’s a lot…
5. Documentation and
guidance
aka.ms/spdev-docs
• New consolidated platform
• All active SharePoint development
topics moved here
• Content managed in GitHub, but
surfaced in the
docs.microsoft.com/sharepoint
6. Running into issues?
Potentialbuginservice?
aka.ms/spdev-issues
• Issue list for reporting potential bugs
and issues in the SharePoint dev
platform
• Originally for SharePoint Framework,
but other input on critical topics also
welcome
• Comments in SP Dev docs are
opened as issues
10. Roadmap – SharePoint Development
Shipped since Ignite / September 2017 ✔✔
Coming soon ⏳
11. Top 10 dev UserVoice entries based on votes
aka.ms/spdev-uservoice
# Title Votes Category
1 Add managed metadata term store operations to REST API * 1185 REST
2 Add support for Single Page Applications to the SharePoint Framework * 527 SPFx
3 Provide CSOM and REST API for recurring calendar events 441 REST/CSOM
4 Support .NET Core with CSOM * 431 CSOM
5 Add support for libraries packages in SharePoint Framework * 303 SPFx
6 List.NavigateForFormsPages support in CSOM 290 REST
7 Field Customizer Evolution: Forms, Quick Edit Mode * 262 SPFx
8 Allow publishing of content type hub content types via CSOM 233 CSOM
9 REST API citizenship! (surface, roadmap and change log) * 221 REST
10 Provide the ability to write to Managed Metadata via app-only policy 185 CSOM
* Quick comments on these items today….
13. • Albert-Jan Schot (Mavention) - @appieschot
• Alex Terentiev (SharePointalist) - @alexaterentiev
• Andrew Connell (Voitanos) - @andrewconnell
• Andrew Koltyakov (ARVO Systems) -
@andrewkoltyakov
• aneethajayaraman - aneethajayaraman
• Balamurugan Kailasam - kshsbala
• Chris Kent (DMI) - @theChrisKent
• Dennis Goedegebuure (Winvision) - expiscornovus
• Elio Struyf - @eliostruyf
• Eric Skaggs (Catapult Systems) - @skaggej
• Erwin van Hunen (Rencore) - @erwinvanhunen
• Eric Shupps - @eshupps
• Franck Cornu (aequos) - @FranckCornu
• Gautam Sheth (Rapid Circle) - gautamdsheth
• Giuliano De Luca - @giuleon
• James May - fowl2
• Jens Otto Hatlevold (Bouvet AS) - jensotto
• Joel Rodrigues (CPS) - joelfmrodrigues
• Jon Badgett - jonthenerd
• Kemal Sinanagic (Ventigrate) - KEMiCZA
• Luis Mañez (ClearPeople) - @luismanez
• Martin Dubec (Merck & Co) - cebud
• Massimo Prota (Rapid Circle) - @massimoprota
• Mikael Svenson (Puzzlepart) - @mikaelsvenson
• Ole Martin Pettersen (Puzzlepart) - olemp
• Oliver Zeiser (MondayCoffee) - oliverzeiser
• Paolo Pialorsi (PiaSys.com) - @PaoloPia
• Paul Schaeflein - @paulschaeflein
• Paweł Hawrylak (Sii Poland) - phawrylak
• Radi Atanassov (OneBit Software) - @RadiAtanassov
• Richard Gigan (Claranet France) - PooLP
• Robert Schouten (Wortell) - @rfjschouten
• Sergei Sergeev - @sergeev_srg
• Simon-Pierre Plante (SPP Technologies) - spplante
• Simon Phillips - spSlaine
• Spencer Harbar - @harbars
• Stefan Bauer (n8d) - @StfBauer
• Steve Beaugé (Solutions pour SharePoint) -
stevebeauge
• Thomas Goelles (Solvion) - @thomyg
• Vardhaman Deshpande (Content and Code) -
@vrdmn
• Velin Georgiev - @velingeorgiev
• Vincent Biret (2toLead) - @baywet
• Waldek Mastykarz (Rencore) - @waldekm
• westleyMS - westleyMS
14. Companies which provided support for PnP initiative
by allowing their employees to contribute to our open
source projects
15. • Aaron Miao - aaronmi
• Antons Mislevics - antonsmislevics
• Bert Jansen - @O365Bert
• Bob German - @Bob1German
• Chris Hackman
• David Chesnut
• Frank Marasco - @frank_marasco
• Koen Zomers - @koenzomers
• Laura Graham - Lauragra
• Linda Lu Cannon - lindalu-MSFT
• Lincoln DeMaris
• Luca Bandinelli - lucaband
• Mike Ammerlaan - @mikeamm
• Neil Hodgkinson - @Nellymo
• Nicholas Pape - nickpape-msft
• Pat Miller - @PatMill_MSFT
• Patrick Rodgers - @mediocrebowler
• Sean Squires - @iamseansquires
• Tom Resing - @resing
• Vesa Juvonen - @vesajuvonen
18. Site Design “Flow” – How provisioning works?
Site Scripts -
Actions
• Create List
• Apply Theme
• Add to nav
• Trigger Flow
• Join a hub site
Site design selections appear in
site provisioning UX (per base
template)
Execute Site
Design
During site creation we create a parameter in site
property bag – this is used by site design feature to
apply site scripts.
2
3
After site creation script actions are
initialized and processed – as each are
run, they are saved to a local list and
rendered in progress panel
1
19. var listRecipe = {
"$schema": "schema.json",
"actions": [
{
"primary_verb": "List.CreateOrOpen",
"target": "Customer Tracking",
"templateType": 100,
"verbs": [
{
"verb": "SetDescription",
"description": "List of Customers and Orders"
},
{
"verb": "AddFieldIfNotExist",
"fieldType": "Text",
"displayName": "Customer Name",
"isRequired": false,
"addToDefaultView": true
},
{
"verb": "AddFieldIfNotExist",
"fieldType": "DateTime",
"displayName": "Date of Delivery",
"isRequired": true
},
]
},
{
primary_verb: "Theme.Apply",
target: "Contoso Travel Green"
}
],
"bindata": {},
"version": 1
};
JSON syntax of site
configuration actions to be
applied for the site
Script actions can be
concatenated in single file or
multiple files can be used
(and reused)
RestRequest("/_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.Scr
iptUtility.CreateSiteDesign", {info:{Title:"Contoso Travel - Legal Case Book",
Description:"Restricted site design to create a legal case book site",
ScriptGuids:["b432a1cd-7e1f-4fb1-9829-633d8MaG1C”], IsDefault:true,
WebTemplate:"68"}});
Site Design attributes
designate display
characteristics and target
template
20.
21. + a few other updates
Site Settings
• setRegionalSettings
• setSiteExternalSharin
gCapability
Lists & Libraries Apps & Solutions Miscellaneous
• triggerFlow action:
support for additional
site properties
• joinHub action: added
name parameter
• Invoke-SPOSiteDesign
cmdlet
• Site design “default
preview image”
• createSiteColumn
• addSiteColumn
• createContentType
• addSPView
• addSPFieldXml
• Additional field
properties: “internal
name”, “group”,
“enforce unique”
• installSPFXSolution
• Extension support
coming soon!
23. • Sean Squires (Microsoft) –
Using new Site Script Actions
in SharePoint Online
• Yannick Plenevaux – Site
Designer Studio for creating
your json files with
SharePoint Framework
client-side web part
Templates have traditionally been one way to do it – but they have their limitations.
If you joined me last year Vesa and I talked about the options and challenges of several site template approaches – and highlighted the value of the remote provisioning pattern as an alternative to established ways of provisioning and branding SP sites.
The great thing about remote provisioning is it addresses the problems of upgradeability and availability – but it is remote
Instead of customizing site templates – and losing value of future updates – we’re building on this async provisioning pattern – providing a way to extend and programmatically apply configurations post-creation
Specifics of the implementation
We store JSON script blobs in a tenant (recipe) library
Site designs are stored in a tenant (formula) list
When a site gets created w/ REST call – we now create a paramater in the site property bag
During stage 3 feature activation we check if this parameter is there and then apply the designated design (or default | nothing at all)
The feature is activated in timer job and reads parameter from web, applying each recipe script in sequential order
As each action is run it is saved to a list in /_catalogs/wte list in the site collection – and presented in progress panel
The combination of site script w/ design – intended to provide a modern, IT-Pro / IW focused replacement to “save site as template”
Very similar to PnP model where we execute a set of configuration instructions on a site asynchronously – whether @ time 0 or time N
Idempotent model allows us to re-run a recipe multiple times without changing the result beyond the initial application
Scripts are intended to be flexible – to extend sites safely and consistently w/in a tenant - and in a manner that can accommodate upgradeability
All centrally stored w/ APIs so they can be leveraged across tenant