Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Office 365: Attack of the Clones! Building reusable site templates with the Office 365 PnP Framework Agenda • Introduction • The case for site templates • Old way • New way • Introducing Office Dev PnP • Demos • Getting started - PnP resources • Questions Chris Johnson @cjohnsonO365 • Solutions Architect, PSC Group (Schaumburg, IL) • 7 years developing for SharePoint • • • • • • Document Management Branding Managed Metadata Provisioning and Governance Office 365 Nintex Forms & Workflow • Current focus: app modernization & cloud readiness 1. SharePoint Developer Office 365 Developer 2. This is an AMAZING time to be an Office 365 developer! Hey, listen! • Some images used on these slides have been borrowed from the Office Dev PnP site. These– especially the artsy ones– are not my creation! • A lot of the code you see during this presentation was written by me, but it’s built on frameworks and sample code from the PnP community • I will tweet out links after the presentation so you can: • • • • Go to the Office Dev PnP site Connect to the GitHub repo Download code from demos View this slide deck, etc. @cjohnsonO365 Raise your hand if: • You’re an end user, power user or BA • You’re an administrator • You’re a developer / architect / consultant / etc. • You use SharePoint 2013 onpremise • You use Office 365 • You use a hybrid farm • You’ve ever tried to provision custom sites in SharePoint • You’ve heard of the OfficeDev Patterns and Practices community • You’ve use a PnP framework, solution or sample project WARNING: CODE </> Community: Current SharePoint Initiatives Application Modernization “Get me to the cloud!” • Re-write server-side LOB applications to use “App Model” CSOM • Decrease dependencies on feature.xml • Eliminate custom master pages • Increase OOB feature usage Take advantage of NEW Office 365 features Build a better user experience • Unified Experience Unified Endpoint • New APIs for Office Graph, Delve, etc. • Consistency across AddIns: Office, SharePoint, etc. • Modern web applications over “SharePoint-y” UI • New mobile experiences • Office mobile apps • PowerApps • Next-generation portals • Lean on provider-hosted apps The case for site templates WHY • Easily reproduce common business customizations • Enforce governance • Provide consistent user experience WHAT • Fields • Content types • Lists and libraries • Groups • Permissions • Pages • Web parts • Navigation • Look and feel • Custom actions The old way • Site Settings Save as template • Sometimes worked • Import to Visual Studio (disaster) • Site Definitions • onet.xml (kinda hairy) • Publishing? Good luck! • Custom subclass of SPWebProvisioningProvider • Create site, then apply changes (this is good!) • Requires full-trust code deployed as solution in Central Administration • Great on-prem solution, but very advanced Limitations in Office 365 • No full-trust code No custom SPWebProvisioningProvider • “Save as template” still unreliable • Use of sandbox solutions and Feature.xml discouraged Why are these limitations in place? • Ensure forwards compatibility • Provide flexibility for: • Developers • Administrators • Users Client-side development in Office 365 BENEFITS • Streamlined deployment • Use the framework of your choice • Safe LIMITATIONS • Asynchronous • More complicated programming • Less documentation • API is less complete Introducing: Office Dev PnP • More than just a provisioning framework • Several core frameworks – Provisioning is just one of them • Also a thriving community • Fills gaps in client-side development paradigm • Guidance & best practices for: • • • • • • • • Add-ins Branding Event receivers Timer jobs Workflow Managed Metadata Provisioning More from the Office Dev PnP site Introducing: Office Dev PnP • Solutions • Samples • Frameworks …that constitute best practices for administration and development on Office 365 ...ALL open source in GitHub! …ALL documented! ...Frequently updated: monthly releases with open conference call QUICK DEMO Office Dev PnP guidance and documentation GitHub Wish list: Cloud-ready provisioning solution • Ability to provision: • • • • • • • • Look and feel Fields Content types Lists and libraries Groups Permissions Pages Web parts • Client-side object model • Scriptable OR deployable as an app • Declarative OR compiled/managed code • Documented PnP Provisioning: Basic Implementation PnP Provisioning Schema Console app -ORPowerShell script C# > PnP Core Framework XML </> APPLY TEMPLATE EXTRACT TEMPLATE SharePoint C# > DEMO PowerShell: extract & apply template PnP Provisioning: Advanced Implementation SOLUTION COMPONENTS HOST WEB ARTIFACTS • Provider-hosted SharePoint Add-In • SharePoint Lists for site requests (on host web to allow integration with other applications, e.g. Nintex) • ASP.NET MVC web site hosted in Azure • AppInstalled and AppUninstalled event receivers (Azure service bus) that create artifacts on host web • Timer Job (Azure Web Job) w/logging • User-managed custom Site Templates based on PnP Provisioning Schema • Common library + PnP extensions • SharePoint Library for templates (associate with base template, e.g. Team Site-- allow site requests to choose template) • Custom ribbon actions to request and cancel provisioning • Ribbon control w/ScriptEnabled methods • JavaScript ScriptLink custom action to override "New Site" link on provisioned sites • Branding assets Template Limitations SUPPORTS • • • • • • • • • • Security Pages Web Parts Page Layouts Branding Files Custom Actions Lists & Libraries Fields & Content Types Taxonomy DOESN’T SUPPORT • • • • Quick Launch Navigation Home Page Configuration (coming soon) Publishing Pages (coming soon) Content* DEMO Provider-hosted provisioning app (UI) 2 ASP.NET MVC ProviderHosted App PROVIDES APP-ONLY SECURITY TOKEN TO HOST WEB C# Service Bus 3 C# 1 Azure Web Job (Console App) C# INSTALLED ON Host Web APPINSTALLING EVENT CREATES LIST, LIBRARY, CUSTOM ACTIONS + UPLOADS ASSETS ON HOST WEB Library: Site Templates PnP Core Framework + Helper Classes C# App 7 RETRIEVES USER-MANAGED TEMPLATE FROM LIBRARY XML </> 6 8 RETRIEVES SITE COLLECTION REQUESTS FROM LIST CREATES SITE COLLECTION + APPLIES TEMPLATE + APPLIES ADD’L CONFIGURATION List: Requests 4 UPLOADS TEMPLATE 5 CREATES REQUEST New SharePoint Site Collection DEMO Provider-hosted provisioning app This is an amazing time to be an Office 365 developer! from the Office Dev PnP site Where to find Office Dev PnP Office Dev Center http://dev.office.com/patterns-and-practices GitHub https://github.com/OfficeDev/PnP Twitter @OfficeDev @ErwinVanHunen @VesaJuvonen @PaoloPia @cjohnsonO365 Questions?