SlideShare a Scribd company logo
Understanding SharePoint
Framework Extensions
Paolo Pialorsi | @PaoloPia
SharePoint Saturday Belgium 2018
#SPSBE
Platinum
Gold
Silver
SharePint
Community
Thanks to our sponsors!
Patrick Tisseghem
Founding father of BIWUG & true SharePoint master
17/10/1968 - 3/9/2008
Special Tribute Edition #SPSBE
About me
• Project Manager, Consultant, Trainer
• About 50 Microsoft certification exams
passed
• MCSM – Charter SharePoint
• MVP Office Apps and Services
• Office 365 Dev PnP Core Team Member
• Focused on SharePoint and Office 365 since
the beginning
• Author of many books about XML, SOAP,
.NET, LINQ, SharePoint, and Office 365
• Speaker at main IT conferences
Agenda
• Understanding the role of SharePoint Framework
• SharePoint Framework Extensions
• Application Customizer
• List View Command Set
• Field Customizer
• SPFx Extensions Deployment
• Q&A
Understanding the role of
SharePoint Framework
Web Parts Extensions
Client side
Tools
SP APIs
Package
Deployment
Experiences
Development
Building out the User Experience
CSOM
Add-ins
MS Graph
SharePoint Framework (SPFx)
• New framework to build Modern UI customizations
• Built on the well-known web stack
• Open model, not only for .NET/Microsoft-oriented developers
• Works well on the cloud
• It is available on-premises, too (SP2016 + FP2 or later)
• Enterprise-ready when used with back-end services
• Microsoft Graph, REST API and micro-services, Azure Functions, etc.
• Not a new model, but an additional model to build UI elements for
the Modern UI
• We can build client-side Web Parts or client-side Extensions
SharePoint Framework
Extensions
Client-Side Extensions
• Application Customizer
• Command Set
• Field Customizer
DEMO
SPFx Extensions Overview
Extensions Execution Logic
SharePoint Service
Extensions Execution Logic
SharePoint Service
Extensions Execution Logic
SharePoint Service
Application Customizer
• Build custom UI elements when onInit() fires
• Or when placeholders change
• Use this.context.placeholderProvider to read available placeholders
• Available placeholders (so far):
• Top
• Bottom
• Debug integrated with Visual Studio Code and SPFx generator
scaffolding
• Config serve.json + gulp serve --config=configName
Application Customizer Provisioning
• Reference the elements.xml file in package-solution.json
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Title="SPFxApplicationCustomizer"
Location="ClientSideExtension.ApplicationCustomizer"
ClientSideComponentId="46606aa6-5dd8-4792-b017-1555ec0a43a4"
ClientSideComponentProperties="{&quot;Top&quot;:&quot;Top area of the page&quot;,&quot;Bottom&quot;:
&quot;Bottom area in the page&quot;}">
</CustomAction>
</Elements>
DEMO
Developing Application Customizers
Command Set
• Enable/Disable commands by overriding onListViewUpdated(event)
method
• Override onExecute(event) method and switch based on
event.commandId
• Available locations:
• ClientSideExtension.ListViewCommandSet.ContextMenu: ECB
• ClientSideExtension.ListViewCommandSet.CommandBar: Top menu
• ClientSideExtension.ListViewCommandSet: Both
• Debug integrated with Visual Studio Code and SPFx generator
scaffolding
• Config serve.json + gulp serve --config=configName
Command Set Provisioning
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Title="SPFxListViewCommandSet"
RegistrationId="100"
RegistrationType="List"
Location="ClientSideExtension.ListViewCommandSet.CommandBar"
ClientSideComponentId="5fc73e12-8085-4a4b-8743-f6d02ffe1240"
ClientSideComponentProperties="{&quot;sampleTextOne&quot;:&quot;One item is selected in the list.&quot;,
&quot;sampleTextTwo&quot;:&quot;This command is always visible.&quot;}">
</CustomAction>
</Elements>
• Reference the elements.xml file in package-solution.json
DEMO
Developing List View Command Sets
Field Customizer
• Override onRenderCell(event) method
• Play with event.domElement to replace/update the HTML of the cell
• Debug integrated with Visual Studio Code and SPFx generator
scaffolding
• Config serve.json + gulp serve --config=configName
• Override onDisposeCell(event) method
• To free any resources that you don’t need anymore
Field Customizer Provisioning
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Field ID="{060E50AC-E9C1-3D3C-B1F9-DE0BCAC200F6}"
Name="SPFxPercentage"
DisplayName="Percentage"
Type="Number"
Min="0"
Required="FALSE"
Group="SPFx Columns"
ClientSideComponentId="7e7a4262-d02b-49bf-bfcb-e6ef1716aaef">
</Field>
</Elements>
• Reference the elements.xml file in package-solution.json
DEMO
Developing Field Customizers
SPFx Extensions Deployment
SPFx Extensions Deployment
• Relies on SharePoint Feature Framework for deployment
• <CustomAction /> or <Field /> elements
• Tenant-wide deployment doesn’t apply Feature Framework XML
• But there is the <ClientSideComponentInstance /> element for tenant-wide
extensions (SPFx 1.6)
• Thus, to deploy SPFx Extensions you have two options
• Use non-tenant-wide deployed packages
• Use tenant-wide packages and
• Tenant-wide extensions (since SPFx v. 1.6)
• PowerShell
• CSOM
• PnP
What are tenant-wide extensions?
• Extensions available across the whole tenant
• Available starting from SPFx v. 1.6
• Supported for
• Application Customizer
• List View Command Set
• Can be filtered based on target
• Web template
• List definition
Main steps
• Create a new SPFx 1.6 project
• Scaffolding will generate sample files to activate tenant-wide deployment
• You can always remove them
• Enable Tenant Wide Deployment (i.e. skipFeatureDeployment: true)
• Develop your extensions
• Deploy the .sppkg on the tenant App Catalog
• Register them in the Tenant Wide Extensions list in the tenant App
Catalog
• Eventually filter by target WebTemplateId or ListTemplateId
DEMO
Tenant-wide Extensions with SPFx 1.6
Q&A
Some shameless marketing 
• Follow me on Twitter:
• https://www.twitter.com/PaoloPia
• Subscribe to the “PiaSys Tech Bites” YouTube channel:
• https://piasys.com/TechBites
• Don’t miss the upcoming trainings
• https://piasys.com/shop/ (New schedule for 2019 is coming soon …)
• And the upcoming events:
• https://piasys.com/events/
#SPSBE
http://spsbe.be
Please rate this session!
SharePoint Saturday Belgium 2018
#SPSBE

More Related Content

PPTX
SPSBE18: New era of customizing site provisioning
PPTX
APIs, APIs Everywhere!
PPTX
Microsoft Flow in Real World Projects: 2 Years later & What's next
PDF
Deploying in a Cloud First World
PDF
What's new in SharePoint Server 2019
PPTX
An Introduction to the Office 365 Patterns and Practices Project
PDF
O365Con18 - PowerApps build custom forms for SharePoint with Azure Maps - Bra...
PPTX
Advanced PowerShell for Office 365
SPSBE18: New era of customizing site provisioning
APIs, APIs Everywhere!
Microsoft Flow in Real World Projects: 2 Years later & What's next
Deploying in a Cloud First World
What's new in SharePoint Server 2019
An Introduction to the Office 365 Patterns and Practices Project
O365Con18 - PowerApps build custom forms for SharePoint with Azure Maps - Bra...
Advanced PowerShell for Office 365

What's hot (20)

PPTX
Getting started with the PnP Provisioning Engine
PPTX
Workflow Best Practices:Five (or More) "Do"s and "Don't"s
PPTX
Why you shouldn't probably care about Machine Learning
PPTX
Transforming your classic team sites in group connected team sites
PPTX
Model Driven PowerApps
PDF
O365Con18 - Site Templates, Site Life Cycle Management and Modern SharePoint ...
PDF
What's in SharePoint land 2016 for the end user
PPTX
Connect SharePoint Framework solutions to APIs secured with Azure AD
PDF
O365Con18 - Microsoft Graph, a Walk-through - Adis Jugo
PPTX
Integrating SaaS application using Microsoft’s Azure App Service Platform
PDF
O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...
PDF
O365Con18 - Modern News Publishing with SharePoint - Maarten Eekels
PPTX
Don't simply deploy, transform! Build your digital workplace in Office 365
PPTX
SharePoint wizards - no magic needed, just use Microsoft Flow
PPTX
[White/Himmelstein] Bridge the Cloud Divide with Hybrid Business Intelligence
PPTX
[Vochten/Harbar] SharePoint Server On Premises & Hybrid PowerClass
PPTX
Serverless Architecture - Azure Logic apps
PPTX
Design and Implement Azure Web Apps
PPTX
Connect the Impossible with Azure Logic App
PDF
O365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod Geva
Getting started with the PnP Provisioning Engine
Workflow Best Practices:Five (or More) "Do"s and "Don't"s
Why you shouldn't probably care about Machine Learning
Transforming your classic team sites in group connected team sites
Model Driven PowerApps
O365Con18 - Site Templates, Site Life Cycle Management and Modern SharePoint ...
What's in SharePoint land 2016 for the end user
Connect SharePoint Framework solutions to APIs secured with Azure AD
O365Con18 - Microsoft Graph, a Walk-through - Adis Jugo
Integrating SaaS application using Microsoft’s Azure App Service Platform
O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...
O365Con18 - Modern News Publishing with SharePoint - Maarten Eekels
Don't simply deploy, transform! Build your digital workplace in Office 365
SharePoint wizards - no magic needed, just use Microsoft Flow
[White/Himmelstein] Bridge the Cloud Divide with Hybrid Business Intelligence
[Vochten/Harbar] SharePoint Server On Premises & Hybrid PowerClass
Serverless Architecture - Azure Logic apps
Design and Implement Azure Web Apps
Connect the Impossible with Azure Logic App
O365Con18 - Bridge Over O365 Gaps and Enhance User Satisfaction - Nimrod Geva
Ad

Similar to Understanding SharePoint Framework Extensions (20)

PPTX
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
PPTX
Cross Site Collection Navigation
PDF
Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...
PDF
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
PPTX
Cross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UI
PPTX
An introduction to the office devpnp community initiative
PPTX
SPSCasablanca - SPFx Deployment
PDF
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
PPTX
OSH01 - Developing SharePoint Framework Solutions for the Enterprise
PPTX
Building share point framework solutions
PPTX
SharePoint development 2017 wrap-up
PPTX
Custom Development in SharePoint – What are my options now?
PPTX
I5 - Bring yourself up to speed with power shell
PPTX
Introduction to SharePoint Framework
PPTX
The Greatest Introduction to SharePoint Framework (SPFx) on earth!
PDF
SPUnite17 Building Great Client Side Web Parts with SPFx
PPTX
Learn from my Mistakes - Building Better Solutions in SPFx
PDF
Spsnyc transforming share point farm solutions to the add-in model and shar...
PPTX
Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...
PDF
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
Cross Site Collection Navigation
Matthias Einig from Rencore - Transforming SharePoint farm solutions to the A...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Cross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UI
An introduction to the office devpnp community initiative
SPSCasablanca - SPFx Deployment
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
OSH01 - Developing SharePoint Framework Solutions for the Enterprise
Building share point framework solutions
SharePoint development 2017 wrap-up
Custom Development in SharePoint – What are my options now?
I5 - Bring yourself up to speed with power shell
Introduction to SharePoint Framework
The Greatest Introduction to SharePoint Framework (SPFx) on earth!
SPUnite17 Building Great Client Side Web Parts with SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
Spsnyc transforming share point farm solutions to the add-in model and shar...
Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...
Envision IT - Application Lifecycle Management for SharePoint in the Enterprise
Ad

More from BIWUG (19)

PPTX
Biwug20190425
PDF
Working with PowerShell, Visual Studio Code and Github for the reluctant IT Pro
PPTX
Global Office 365 Developer Bootcamp
PPTX
Deep dive into advanced teams development
PPTX
Make IT Pro's great again: Microsoft Azure for the SharePoint professional
PPTX
Modern collaboration in teams and projects with Microsoft 365
PDF
Mining SharePoint data with PowerBI
PPTX
Cloud First. Be Prepared
PPTX
New era of customizing site provisioning
PPTX
Microsoft Stream - Your enterprise video portal unleashed
PDF
Teams - There's no place like home
PPSX
The Future State of Document Management, Taxonomies and Metadata in the Cloud
PPTX
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
PDF
The business and end user guide into the new and modern SharePoint
PPTX
Extend your development skills set using MS Graph
PDF
Introduction to Microsoft Flow and Azure Functions
PPTX
Best practices for managing and operating your SharePoint farms
PDF
Rethinking Document Management in Office 365
PPTX
Upgrading from Full Trust Code to Add-In Model and SharePoint Framework
Biwug20190425
Working with PowerShell, Visual Studio Code and Github for the reluctant IT Pro
Global Office 365 Developer Bootcamp
Deep dive into advanced teams development
Make IT Pro's great again: Microsoft Azure for the SharePoint professional
Modern collaboration in teams and projects with Microsoft 365
Mining SharePoint data with PowerBI
Cloud First. Be Prepared
New era of customizing site provisioning
Microsoft Stream - Your enterprise video portal unleashed
Teams - There's no place like home
The Future State of Document Management, Taxonomies and Metadata in the Cloud
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
The business and end user guide into the new and modern SharePoint
Extend your development skills set using MS Graph
Introduction to Microsoft Flow and Azure Functions
Best practices for managing and operating your SharePoint farms
Rethinking Document Management in Office 365
Upgrading from Full Trust Code to Add-In Model and SharePoint Framework

Recently uploaded (20)

PDF
How to Ensure Data Integrity During Shopify Migration_ Best Practices for Sec...
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
PPTX
Slides PPTX World Game (s) Eco Economic Epochs.pptx
PPTX
Module 1 - Cyber Law and Ethics 101.pptx
PDF
SASE Traffic Flow - ZTNA Connector-1.pdf
PPTX
international classification of diseases ICD-10 review PPT.pptx
DOCX
Unit-3 cyber security network security of internet system
PDF
Sims 4 Historia para lo sims 4 para jugar
PPTX
Internet___Basics___Styled_ presentation
PDF
The Internet -By the Numbers, Sri Lanka Edition
PDF
WebRTC in SignalWire - troubleshooting media negotiation
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PPTX
Introduction to Information and Communication Technology
PDF
Cloud-Scale Log Monitoring _ Datadog.pdf
PDF
Decoding a Decade: 10 Years of Applied CTI Discipline
PDF
APNIC Update, presented at PHNOG 2025 by Shane Hermoso
PPTX
CHE NAA, , b,mn,mblblblbljb jb jlb ,j , ,C PPT.pptx
PPTX
innovation process that make everything different.pptx
PDF
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
PDF
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
How to Ensure Data Integrity During Shopify Migration_ Best Practices for Sec...
An introduction to the IFRS (ISSB) Stndards.pdf
Slides PPTX World Game (s) Eco Economic Epochs.pptx
Module 1 - Cyber Law and Ethics 101.pptx
SASE Traffic Flow - ZTNA Connector-1.pdf
international classification of diseases ICD-10 review PPT.pptx
Unit-3 cyber security network security of internet system
Sims 4 Historia para lo sims 4 para jugar
Internet___Basics___Styled_ presentation
The Internet -By the Numbers, Sri Lanka Edition
WebRTC in SignalWire - troubleshooting media negotiation
Design_with_Watersergyerge45hrbgre4top (1).ppt
Introduction to Information and Communication Technology
Cloud-Scale Log Monitoring _ Datadog.pdf
Decoding a Decade: 10 Years of Applied CTI Discipline
APNIC Update, presented at PHNOG 2025 by Shane Hermoso
CHE NAA, , b,mn,mblblblbljb jb jlb ,j , ,C PPT.pptx
innovation process that make everything different.pptx
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...

Understanding SharePoint Framework Extensions

  • 1. Understanding SharePoint Framework Extensions Paolo Pialorsi | @PaoloPia SharePoint Saturday Belgium 2018 #SPSBE
  • 3. Patrick Tisseghem Founding father of BIWUG & true SharePoint master 17/10/1968 - 3/9/2008 Special Tribute Edition #SPSBE
  • 4. About me • Project Manager, Consultant, Trainer • About 50 Microsoft certification exams passed • MCSM – Charter SharePoint • MVP Office Apps and Services • Office 365 Dev PnP Core Team Member • Focused on SharePoint and Office 365 since the beginning • Author of many books about XML, SOAP, .NET, LINQ, SharePoint, and Office 365 • Speaker at main IT conferences
  • 5. Agenda • Understanding the role of SharePoint Framework • SharePoint Framework Extensions • Application Customizer • List View Command Set • Field Customizer • SPFx Extensions Deployment • Q&A
  • 6. Understanding the role of SharePoint Framework
  • 7. Web Parts Extensions Client side Tools SP APIs Package Deployment Experiences Development Building out the User Experience CSOM Add-ins MS Graph
  • 8. SharePoint Framework (SPFx) • New framework to build Modern UI customizations • Built on the well-known web stack • Open model, not only for .NET/Microsoft-oriented developers • Works well on the cloud • It is available on-premises, too (SP2016 + FP2 or later) • Enterprise-ready when used with back-end services • Microsoft Graph, REST API and micro-services, Azure Functions, etc. • Not a new model, but an additional model to build UI elements for the Modern UI • We can build client-side Web Parts or client-side Extensions
  • 10. Client-Side Extensions • Application Customizer • Command Set • Field Customizer
  • 15. Application Customizer • Build custom UI elements when onInit() fires • Or when placeholders change • Use this.context.placeholderProvider to read available placeholders • Available placeholders (so far): • Top • Bottom • Debug integrated with Visual Studio Code and SPFx generator scaffolding • Config serve.json + gulp serve --config=configName
  • 16. Application Customizer Provisioning • Reference the elements.xml file in package-solution.json <?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Title="SPFxApplicationCustomizer" Location="ClientSideExtension.ApplicationCustomizer" ClientSideComponentId="46606aa6-5dd8-4792-b017-1555ec0a43a4" ClientSideComponentProperties="{&quot;Top&quot;:&quot;Top area of the page&quot;,&quot;Bottom&quot;: &quot;Bottom area in the page&quot;}"> </CustomAction> </Elements>
  • 18. Command Set • Enable/Disable commands by overriding onListViewUpdated(event) method • Override onExecute(event) method and switch based on event.commandId • Available locations: • ClientSideExtension.ListViewCommandSet.ContextMenu: ECB • ClientSideExtension.ListViewCommandSet.CommandBar: Top menu • ClientSideExtension.ListViewCommandSet: Both • Debug integrated with Visual Studio Code and SPFx generator scaffolding • Config serve.json + gulp serve --config=configName
  • 19. Command Set Provisioning <?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Title="SPFxListViewCommandSet" RegistrationId="100" RegistrationType="List" Location="ClientSideExtension.ListViewCommandSet.CommandBar" ClientSideComponentId="5fc73e12-8085-4a4b-8743-f6d02ffe1240" ClientSideComponentProperties="{&quot;sampleTextOne&quot;:&quot;One item is selected in the list.&quot;, &quot;sampleTextTwo&quot;:&quot;This command is always visible.&quot;}"> </CustomAction> </Elements> • Reference the elements.xml file in package-solution.json
  • 21. Field Customizer • Override onRenderCell(event) method • Play with event.domElement to replace/update the HTML of the cell • Debug integrated with Visual Studio Code and SPFx generator scaffolding • Config serve.json + gulp serve --config=configName • Override onDisposeCell(event) method • To free any resources that you don’t need anymore
  • 22. Field Customizer Provisioning <?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Field ID="{060E50AC-E9C1-3D3C-B1F9-DE0BCAC200F6}" Name="SPFxPercentage" DisplayName="Percentage" Type="Number" Min="0" Required="FALSE" Group="SPFx Columns" ClientSideComponentId="7e7a4262-d02b-49bf-bfcb-e6ef1716aaef"> </Field> </Elements> • Reference the elements.xml file in package-solution.json
  • 25. SPFx Extensions Deployment • Relies on SharePoint Feature Framework for deployment • <CustomAction /> or <Field /> elements • Tenant-wide deployment doesn’t apply Feature Framework XML • But there is the <ClientSideComponentInstance /> element for tenant-wide extensions (SPFx 1.6) • Thus, to deploy SPFx Extensions you have two options • Use non-tenant-wide deployed packages • Use tenant-wide packages and • Tenant-wide extensions (since SPFx v. 1.6) • PowerShell • CSOM • PnP
  • 26. What are tenant-wide extensions? • Extensions available across the whole tenant • Available starting from SPFx v. 1.6 • Supported for • Application Customizer • List View Command Set • Can be filtered based on target • Web template • List definition
  • 27. Main steps • Create a new SPFx 1.6 project • Scaffolding will generate sample files to activate tenant-wide deployment • You can always remove them • Enable Tenant Wide Deployment (i.e. skipFeatureDeployment: true) • Develop your extensions • Deploy the .sppkg on the tenant App Catalog • Register them in the Tenant Wide Extensions list in the tenant App Catalog • Eventually filter by target WebTemplateId or ListTemplateId
  • 29. Q&A
  • 30. Some shameless marketing  • Follow me on Twitter: • https://www.twitter.com/PaoloPia • Subscribe to the “PiaSys Tech Bites” YouTube channel: • https://piasys.com/TechBites • Don’t miss the upcoming trainings • https://piasys.com/shop/ (New schedule for 2019 is coming soon …) • And the upcoming events: • https://piasys.com/events/