SharePoint Dev Ecosystem / SharePoint Patterns and Practices (PnP) July 2018 update is out with a summary of the latest guidance, samples, and solutions from SharePoint engineering or from the community for the community. This article is a summary of all the different areas and topics around SharePoint Dev ecosystem during the past month.
What is SharePoint Patterns & Practices (PnP)?
SharePoint PnP is a nick-name for SharePoint Dev Ecosystem activities coordinated by SharePoint engineering. SharePoint PnP is community driven open source initiative where Microsoft and external community members are sharing their learning’s around implementation practices for SharePoint and Office 365. Active development and contributions happen in GitHub by providing contributions to the samples, reusable components, and documentation.
PnP is owned and coordinated by SharePoint engineering, but this is work done by the community for the community. The initiative is currently facilitated by Microsoft, but already at this point, we have multiple community members as part of the PnP Core team and we are looking to extend the Core team with more community members.
Notice that since this is open source community initiative, there’s no SLAs for the support for the samples provided through GitHub. Obviously, all officially released components and libraries are under official support from Microsoft. You can use SharePoint Developer group in the Microsoft Tech Community for providing input and to ask any questions about the existing materials.
Some key statistics around SharePoint Dev topics from June 2018
- GitHub repository forks at most popular repositories in SharePoint GitHub organization
- Unique visitors during past 2 weeks in SharePoint organization repositories – 42,946
- Merged pull requests across SharePoint repositories (cumulative) – 5,217
- Closed issues and enhancements ideas cross SharePoint repositories (cumulative) – 4,374
- SharePoint Online CSOM NuGet package downloads (cumulative) – 568,564
- Page views in SharePoint Dev pages at docs.microsoft.com – 860,293
- Unique tenants using PnP components – 13,316
- Http requests towards SharePoint Online from PnP components (CSOM Core, PowerShell, PnP JS Core) – 10,403,931,322
- SharePoint Dev YouTube channel had 27,491 views with 185,811 minutes watch time
Main resources around SharePoint PnP and SharePoint development
- SharePoint development portal – https://developer.microsoft.com/en-us/sharepoint
- SharePoint Dev Documentation – http://docs.microsoft.com/sharepoint/dev
- SharePoint Dev Community – http://aka.ms/sppnp – One location for all the resources and news around PnP
- PnP Community Discussions – http://aka.ms/SPDev-Community
- SharePoint Dev Videos on YouTube – http://aka.ms/SPDev-Videos
- Presentations at SlideShare
July 2018 monthly community call
Agenda for the Tuesday 10th of July 2018 SharePoint Dev Ecosystem / Patterns and Practices community call at 8 AM PST / 5 PM CEST:
- Monthly summary of SharePoint Development topics – Latest SharePoint roadmap and community news – Vesa Juvonen (Microsoft) ~20 min
- Using Microsoft Graph Custom Schema Extensions with SharePoint Framework – Luis Mañez (ClearPeople) ~15 min
- SharePoint Starter Kit – Building extending personalized footer for community site – Paolo Pialorsi (Piasys.com) ~15 min
- Q&A ~10 min
Monthly community call will get recorded and release to PnP YouTube channel typically within 24 hours after the recording is ended. If you have any questions, comments or feedback, please participate in our discussions in the Microsoft Tech Community under SharePoint developer group.
SharePoint Dev Blog posts
Here are the latest blog posts and announcements around SharePoint development topics from dev.office.com/blogs.
- 28th of June – New CSOM version released for SharePoint Online – June 2018
- 20th of June – Extending SharePoint Patterns and Practices team with new MVP community members – June 2018
- 14th of June – Introducing SharePoint Starter Kit
- 13th of June – SharePoint Dev Ecosystem / Patterns and Practices – June 2018 monthly community call recording
- 6th of June – Announcing SharePoint Framework 1.5: new tools and a beta preview
PnP Webcasts are typically 15-30 min long conversational webcasts around a specific topic. This series was started in October 2015 and have continued releasing new videos since. All new webcasts are released on PnP YouTube Channel. Here are the new webcasts released after the last monthly release. We are looking into continuing the releases of the webcast in the future.
General Dev, CSOM, PnP Core, PnP PowerShell SIG Bi-Weekly Call Special Interest Group (SIG)
General SP Dev, CSOM PnP Sites Core, PowerShell and Provisioning Special Interest Group (SIG) have bi-weekly meetings to cover the general SharePoint topics, CSOM and latest in the PnP CSOM core component, PnP PowerShell and in the PnP remote provisioning engine. These calls have also free Q&A section if you have any questions about SharePoint development in on-premises or in the cloud. Need to get a recommendation for your design or having a hard time with some APIs? – Drop by, ask a question and we’ll help you.
You can download invite for the bi-weekly meeting from the following location.
- Invite to bi-weekly call – https://aka.ms/sppnp-core-sig-call
All SIG meetings are being recorded and are available for view from PnP YouTube Channel. Here are the latest recordings of the SIG calls.
- 28th of June – SP Dev news with engineering update. Building site provisioning solution with PowerApps, Microsoft Flow, and Azure functions – Using Get-PnPSearchCrawlLog cmdlet for search troubleshooting.
- 14th of June – SP Dev news with engineering update. News around Microsoft Flow and PowerApps from SharePoint perspective. Microsoft PowerApps tips in SharePoint Online. Advance provisioning techniques in SharePoin Starter Kit.
Interested in doing a community demo in these community calls? – Please let us know!
- Invite to bi-weekly call – https://aka.ms/sppnp-js-sig-call
- Gitter (Around the PnP JS Core) – https://gitter.im/OfficeDev/PnP-JS-Core
All SharePoint Framework and JS SIG meetings are recorded, so that you can check the demos and discussions if you can’t make the actual call. You can find the latest recordings from the PnP YouTube Channel. Here are the latest recordings.
- 5th of July – SharePoint Framework engineering update, PnP JS Core update, Office 365 CLI update, SPFx controls update – System Update Flow with SharePoint Framework, Building search web parts which support configurable templates for rendering.
- 21st of June – SharePoint Framework engineering update, PnP JS Core update, Office 365 CLI update, SPFx controls update – Using PropertyFiledCollectionData control in SPFx web part, VSTS and SharePoint regarding CD/CI pipelines, React Calendar Feed web part.
- 7th of June – SharePoint Framework engineering update, PnP JS Core update, Office 365 CLI update, SPFx controls update – Dynamic Data in SharePoint Framework v1.5. Using Jest Test Framework with SharePoint Framework solutions.
Interested in doing a community demo in these community calls? – Please let us know!
SharePoint Dev Ecosystem in GitHub
There are quite a few different GitHub repositories under the SharePoint brand since we wanted to ensure that you can easily find and reuse what’s relevant to you. We do also combine multiple solutions to one repository so that you can more easily sync and get latest changes to our released guidance and samples.
- sp-dev-docs – Source for new SharePoint dev center documentation exposed from http://dev.office.com/sharepoint
- sp-dev-fx-webparts – Client-side web part samples from community and engineering
- sp-dev-samples – Samples for add-ins, webhooks, and other API
- sp-dev-fx-extensions – Samples and tutorial code around SharePoint Framework Extensions
- sp-dev-fx-vs-extension – Open source Visual Studio IDE extension for creating SharePoint Framework solutions in the Visual Studio 2015 or 2017
- sp-dev-build-extensions – Different build extensions like gulp tasks and gulp plugins from the community and engineering around SharePoint development
- sp-dev-gdpr-activity-hub – Reference solution on the GDPR business case showing SPFx implementation with PowerBI and modern site customization
- sp-dev-solutions – Repository for more polished and fine-tuned reusable solutions build with SharePoint Framework
- sp-dev-fx-controls-react – Reusable content controls for SharePoint Framework solutions build with React
- sp-dev-fx-property-controls – Reusable property pane controls to be used in web parts
- sp-dev-list-formatting – Open-source community driven repository for column and view formatting JSON definitions
- sp-dev-site-scripts – Open-source community driven repository for community Site Designs and Site Scripts
- sp-starter-kit – Starter kit solution for SharePoint modern experiences
- PnP – Main repository for SP add-in, Microsoft Graph etc. samples
- PnP-Guidance – Guidance, presentations, and articles which are partly synced to MSDN
- PnP-Sites-Core – Office Dev PnP Core component
- PnP-PowerShell – Office Dev PnP PowerShell Cmdlets
- PnP-Tools – Tools and scripts targeted more for IT Pro’s and for on-premises for SP2013 and SP2016
- PnP-Partner-Pack – Packaged guidance with detailed instructions on setting things up in Office 365 and in Azure.
- PnP-Transformation – Material specifically for the transformation process. Currently, includes samples around InfoPath replacement and transformation tooling from farm solutions to add-in model.
- PnP-Provisioning-Templates – Source for templates available from PnP Template Gallery at http://templates-gallery.sharepointpnp.com
- PnP-Provisioning-Schema – PnP Provisioning engine schema repository
- PnP-IdentityModel – Open source replacement of Microsoft.IdentityModel.Extensions.dll
- PnPjs – PnPjs Framework repository
- o365 CLI – Cross-OS command line interface to manage Office 365 tenant settings
What’s supportability story around PnP material?
Following statements apply across all of the PnP samples and solutions, including samples, core component(s) and solutions, like SharePoint Starter Kit.
- PnP guidance and samples are created by Microsoft & by the Community
- PnP guidance and samples are maintained by Microsoft & community
- PnP uses supported and recommended techniques
- PnP implementations are reviewed and approved by Microsoft engineering
- PnP is an open-source initiative by the community – people who work on the initiative for the benefit of others, have their normal day job as well
- PnP is NOT a product and therefore it’s not supported by Premier Support or other official support channels
- PnP is supported in similar ways as other open source projects done by Microsoft with support from the community by the community
- There are numerous partners that utilize PnP within their solutions for customers. Support for this is provided by the Partner. When PnP material is used in deployments, we recommend being clear with your customer/deployment owner on the support model
SharePoint Starter Kit
SharePoint Starter Kit demonstrates how to extend out of the box modern experiences in the SharePoint. It demonstrates multiple different techniques and uses different patterns and practices to build end-to-end demonstration solution which can be provisioned to any Office 365 tenant. It contains for example following capabilities, which you can learn from or use them as your reference:
- How to provision site collections using PowerShell
- How to apply content and layouts to site collections
- How to create and use Site Designs and Site Scripts
- How to build custom web parts and extensions for your deployment
- 15 different ready to use web parts
- 7 different extensions
- Hub site configuration
- etc. etc. etc.
Following are the key changes in the Starter Kit since the previous monthly summary
- Significantly improved documentation
- Provisioning improvements for more complete automation
- Code changes to simplify web part and extension reuse also outside of the Starter Kit solution
SharePoint Starter Kit was announced in SharePoint Conference 2018 and we will keep on evolving and update this reference solution also during future releases. We also do welcome contributions on this open-source community lead project.
SharePoint Framework samples
These are samples which are available from the SharePoint client-side web part sample repository at https://github.com/SharePoint/sp-dev-fx-webparts or from the SharePoint Framework Extensions repository at https://github.com/SharePoint/sp-dev-fx-extensions.
- new sample react-graph-schema-extensions shows how to read and update a custom Schema extension in Microsoft Graph in the SharePoint Framework
- new sample react-taxonomypicker-panel showing how to build a custom experience for taxonomy picker functionality
- Updates to react-search-refiners which shows you how to build user-friendly SharePoint search experiences using Office UI fabric tiles
- Updates to react-content-query-webpart which shows how to build a content by query web part using SharePoint Framework
- Updates to react-jest-testing which shows how to use Jest Testing Framework with an SPFx client-side solution
- Updates to react-calendar-feed which shows how to connect to a different data feeds and render consistent calendar look and feel
- Updates to js-skype-status which shows how to use the Skype Web SDK in SharePoint Framework
- Updates to react-skype-status which shows how to use the Skype Web SDK in SharePoint Framework with React framework
- New list view command set react-item-history, which shows how to add a button to show version history for item.
Reusable open source controls for SharePoint Framework
New reusable controls initiative was announced in Ignite 2017 during September. There are two npm packages and source code repositories for the reusable controls which you can use in your SharePoint Framework solutions. We do welcome community contributions to these initiatives as well. There are two different repositories: sp-dev-fx-property-controls and sp-dev-fx-controls-react. Here are the changes on these repositories.
- A new
PeoplePickercontrol added #19
npm postinstallscript to automatically add the localization config #64
- Add a description to the
- Added a font field type for the
- Added a URL field type for the
- Field validation implemented to enable/disable save buttons in
PropertyFieldCollectionDatacontrol. Related to previous enhancement.
- Added properties to the
TaxonomyPickerto specify which terms are disabled/not-selectable #69
- Bug in
TaxonomyPickerwhere values are not updated by an async change #83
FieldUserRendereruses email prop for
- Fixed issue in single selection mode when all group items were selected in the
ListViewwhen a user clicked on the group header #86
PropertyFieldPeoplePickervalidation error does not clear as expected #68
Community list formatting definitions
SharePoint list formatting capability was released for First Release customers during October 2017. As part of the availability, we also announced the availability of open source repository for sharing different column formatting definitions. Since we will be releasing also new view formatting capability soon, the repository has been renamed as sp-dev-list-formatting as it will be containing both view and column formatting samples.
- Updates to date-range-rag sample, which shows how to create red-amber-green bars based on date ranges
Community Site Designs and Site Scripts
SharePoint Site Designs and Site Scripts has been released for production usage during March 2018. As part of the availability, we also announced the availability of open source repository for sharing different Site Designs and Site Scripts. Following lists the changes in the Site Design and Site Script area.
- No new Site Designs or Site Scripts during June, but some adjustments and improvements on existing ones.
Office 365 CLI
Office 365 CLI was released in November 2017. This is an open source tool which enables you to controls tenant level properties in SharePoint Online or in Office 365.
v1.4.0 release available with following changes
- spo file checkin – checks in specified file #284
- spo file checkout – checks out specified file #285
- spo folder rename – renames a folder #429
- spo listitem get – gets a list item from the specified list #269
- spo listitem set – updates a list item in the specified list #271
- spfx project upgrade – upgrades SharePoint Framework project to the specified version #471
- refactored to return a non-zero error code on error solving #468
- fixed adding an item to list referenced by id solving #473
- added support for upgrading projects built using SharePoint Framework v1.4.0 #478
- added support for upgrading projects built using SharePoint Framework v1.3.4 #479
- added support for upgrading projects built using SharePoint Framework v1.3.2 #481
- added support for upgrading projects built using SharePoint Framework v1.3.1 #482
- added support for upgrading projects built using SharePoint Framework v1.3.0 #483
- added support for upgrading projects built using SharePoint Framework v1.2.0 #484
- clarified usage of the spo file get command #497
- added support for upgrading projects built using SharePoint Framework v1.5.0 #505
PnP CSOM Core and Provisioning Engine
PnP CSOM Core component is a wrapper on top of native SharePoint CSOM and REST API, which simplifies complex scenarios with remote APIs, one of the example is the PnP Provisioning Engine for remote templates. The first version of the PnP remote provisioning engine was released with the May 2015 release. This list contains the main updates in this release:
- Information management async extension methods #1843 [baywet]
- TimerJob AppOnly authentication in High Trust context #1808 [ypcode]
- Added PowerApps client-side web part type
- Fix NullReferenceException when parsing client-side page header html #1821 [SchauDK]
- Changed multi lookup field provisioning to also handle list url in List #1822 [cebud]
- Don’t wrap client-side text in P if it already was done as part of the provided text
- Added tokenization of client-side page header image URL
- Fix #1810 ContentTypeBinding with lowercase ContentTypeID [TeodoraI]
- Fix list attribute for lookup fields #1826 [sebastianmattar]
See also https://testautomation.sharepointpnp.com for day-to-day results and executed tests.
Latest update is version 1.1.2 on the PnPJs library. Here’s are the latest changes since the previous monthly release. Notice that if you are using old pnp-js-core, we highly recommend upgrading to the new PnPjs library.
- tooling: Setup Travis CI to process PRs and merges [PR]
- tooling: Added support for –verbose flag when using gulp test
- documentation: Added article on deployment listing cdnjs urls [PR]
- @pnp/nodejs: Support for local cloud authentication (China, Germany, US Gov) [PR]
- tooling: Updated travis test to use a custom mocha impl allowing for ignore timeouts [PR]
- @pnp/pnpjs: Updated global variable name from $pnp -> pnp, docs updated to reflect change [PR]
- @pnp/common: dateAdd timespan parameter now bound to custom string enumeration type
- documentation: Styling changes [PR]
- @pnp/nodejs: SPFetchClient contructor realm parameter is now fifth [PR]
- @pnp/sp: Added View, Views, and ViewFields to the exports [PR]
- @pnp/sp: Fixed bug where parsing ClientSideText webpart from existing page included extra “” [PR]
- @pnp/sp: Changed return type of getPropertiesFor to be any instead of any [PR]
- @pnp/sp: Fixed issue with decoding escaped json in ClientSidePage [PR] [PR]
This is a similar effort as what PnP initiative previously has done with the PnP CSOM Core Component together with the community.
PnP PowerShell providers more than three hundred additional PowerShell cmdlets, which can be used to manipulate content in SharePoint Online and in on-premises (SP2013, SP2016). These cmdlets are additive for SharePoint Online management shell, which concentrate more on the administrative tasks with SharePoint Online. PnP PowerShell uses the PnP CSOM extension under the covers to automate the needed remote operations.
Here are the latest changes in the PnP PowerShell
- Added IncludeClassification to Get-PnPUnifiedGroup
- Updated documentation for Get-PnPSearchCrawlLog
- Added -NewFileName to Add-PnPFile cmdlet
- Updated automatically generated PnP PowerShell cmdlet documentation at docs.microsoft.com
PnP sample library
Here are updates across the PnP code sample library by the community on the code and documentation, which is a great way to contribute as well.
- Updates to o365.Modern.Provisioning solution which shows how to build provisioning automation with Microsoft Bot Framework, Microsoft Flow, and Azure Function
- Updates to Visual Studio extension for SharePoint Framework to support SharePoint Framework 1.5.1
- SharePoint.UIExperience.Scanner v1.7 switched to use the latest CSOM version + small improvements in the Excel dashboard template
- Lot’s of improvements in the SharePoint Modernization Framework which can be used to transform classic wiki and web part pages to client-side modern pages:
- Page title handling got improved
- Documentation for functions and selectors is now autogenerated
- Improved handling of BR tags
- Support for having text before and after the web part but inside the div surrounding the web part
- Theme colors are transformed now
- Source page item-level permissions are copied to the target page (can be optionally turned off)
- Improved reliability in handling image URL’s outside of the current web
- Fixed layout transformation for HeaderRightColumnBody and HeaderLeftColumnBody web part page layouts
- Fixed “duplicate key” issue when transforming multiple pages in sequence
- Fixed ListId datatype in model
- A calendar web part is now transformed to the Events web part
- Tasks web part is not transformed anymore
- Correctly identify a discussion board
- SharePoint.SiteColProvisioning.Configuration script updated with SharePoint 2019 support and notes
SharePoint Dev articles
SharePoint Dev articles are surfaced currently in docs.microsoft.com/en-us/sharepoint/dev. ´Since the last release, we have now merged also SharePoint PnP Solution guidance to docs.microsoft.com platform, so you’ll only have one location to follow all relevant SharePoint Dev documentation and guidance. You can provide contributions to these documents by submitting documentation improvements using GitHub tooling. All of the SharePoint Dev docs are stored and surfaced from the sp-dev-docs repository.
Here are new/updated articles on the SharePoint Development.
- New Migration API documentation
- Updated SharePoint site theming
- Updated SharePoint Framework roadmap
- Updated Site design JSON schema
- Updated List formatting documentation
- Updated Debug SharePoint Framework solutions in Visual Studio Code
- Updates to transformation your classic SharePoint sites article series
- Numerous other adjustments and updates based on input from the community
PnP Guidance videos
You can find all SharePoint Dev videos on our YouTube Channel at http://aka.ms/sppnp-videos. This location contains already a significant amount of detailed training material, demo videos, and community call recordings.
- Introduction to SharePoint Starter Kit – Video demonstrating what is SharePoint Starter Kit and how to get started with it.
Key contributors to the July 2018 update
Here’s the list of active contributors (in alphabetical order) since last release details in SharePoint Dev repositories or community channels. PnP is really about building tooling and knowledge together with the community for the community, so your contributions are highly valued across the Office 365 customers, partners and obviously also at Microsoft.
Thank you for your assistance and contributions on the behalf of the community. You are making a difference!
- Alex Terentiev (SharePointalist) – @alexaterentiev
- andreasblueher alias – andreasblueher
- Andrew Connell (Voitanos) – @andrewconnell
- Andrew Koltyakov (ARVO Systems) – @andrewkoltyakov
- Asish Padhy – AsishP
- berosk alias – berosk
- Beau Cameron – @Beau__Cameron
- Chris Kent (DMI) – @theChrisKent
- ChrispyBites alias – ChrispyBites
- David Warner II (Catapult) – @DavidWarnerII
- Derek Noonan – noonand
- Edin Kapic – @ekapic
- Elio Struyf – @eliostruyf
- Erwin van Hunen (Rencore) – @erwinvanhunen
- Eric Overfield (PixelMill) – @EricOverfield
- Eric Shupps – @eshupps
- Franck Cornu (aequos) – @FranckCornu
- Fredrik Thorild (Sogeti) – fthorild
- Giuliano De Luca – @giuleon
- Hilton Giesenow (Experts Inside) – HiltonGiesenow
- Hugo Bernier – @bernierh
- jdonajkowski alias – jdonajkowski
- Joel Rodrigues (CPS) – joelfmrodrigues
- John Benson – john88benson
- Kim Damsleth (Puzzlepart) – damsleth
- Lars Lynch – tklarslynch
- Laurent Sittler (Exakis) – @laul0_68
- Luis Mañez – @luismanez
- Luis Valencia – @levalencia
- Mark Powney – mpowney
- Martin Dubec – cebud
- Michael Schau (WorkPoint A/S) – @SchauDK
- Mikael Svenson (Puzzlepart) – @mikaelsvenson
- Ole Kristian Mørch-Storstein (Puzzlepart) – okms
- Ole Martin Pettersen (Puzzlepart) – olemp
- Paolo Pialorsi (PiaSys.com) – @PaoloPia
- Paul Pascha (Wortell) – @paulpascha
- Paul Schaeflein – @paulschaeflein
- Radi Atanassov (OneBit Software) – @RadiAtanassov
- Richard Priddy – RichardPriddy
- Russell Gove – russgove
- Sebastian Mattar – sebastianmattar
- Sergei Sergeev – @sergeev_srg
- Simon-Pierre Plante (SPP Technologies) – spplante
- Spencer Harbar (ClearPeople) – @harbars
- Stefan Bauer (n8d) – @StfBauer
- Stephen Reilly – itsknob
- svarukala alias – svarukala
- Vardhaman Deshpande (Content and Code) – @vrdmn
- Velin Georgiev – @velingeorgiev
- Vincent Biret (2toLead) – @baywet
- Vipul Kelkar (Rapid Circle) – vipulkelkar
- Waldek Mastykarz (Rencore) – @waldekm
- westleyMS alias – westleyMS
- Yannick Plenevaux – @yp_code
Companies: Here’s the companies, which provided support for PnP initiative for this month by allowing their employees working for the benefit of others in the PnP initiative. There were also people who contributed from other companies during last month, but we did not get their logos and approval to show them in time for these communications. If you still want your logo for this month’s release, please let us know and share the logo with us. Thx.
Microsoft people: Here’s the list of Microsoft people who have been closely involved with the PnP work during last month.
- Bert Jansen – @O365Bert
- Chakkaradeep (Chaks) Chinnakonda Chandran – @chakkaradeep
- Chris Hackman
- Damian Wiese – DamianWiese
- David Chesnut
- Joanne Hendrickson – JoanneHendrickson
- Koen Zomers – @koenzomers
- Laura Graham – Lauragra
- Linda Lu Cannon – lindalu-MSFT
- Lincoln DeMaris
- Luca Bandinelli – lucaband
- Marc Pasarin Soler
- Mike Ammerlaan – @mikeamm
- Pat Miller – @PatMill_MSFT
- Patrick Rodgers – @mediocrebowler
- Sean Squires – @iamseansquires
- Simon Bourdages – killerewok2000
- Tone Kristin Larsen – tklarsen
- Vesa Juvonen – @vesajuvonen
- July 2018 monthly community call is on Tuesday 10th of July at 8 AM PST / 5 PM CEST / 4 PM GMT for latest release details with demos – Download recurrent invite to monthly community call with a detailed schedule for your time zone from http://aka.ms/sppnp-call.
“Sharing is caring”
SharePoint Team, Microsoft – 9th of July 2018