Download presentation
Presentation is loading. Please wait.
1
Migrating Full-Trust Solutions to the Cloud Scot Hillier scot@scothillier.net @ScotHillier
2
scot@scothillier.net @ScotHillier www.itunity.com/users/scot-hillier www.criticalpathtraining.com www.microsoftvirtualacademy.com/Stu dies/SearchResult.aspx?q=hillier channel9.msdn.com/Search?t erm=hillier#ch9Search www.pluralsight.com/search /? s earchTerm=hillier
3
Apologizing in advance Out with the old…In with the new… Apps for SharePointSharePoint Add-Ins App WebAdd-In Web App PartAdd-In Part SharePoint App ModelSharePoint Add-In Model Apps for OfficeOffice Add-Ins Office App ModelOffice Add-In Model
4
Branding Provisioning Sandbox Solutions SharePoint Add-Ins v Office 365 APIs Agenda
6
The challenges
7
Branding Techniques
8
Theming
9
Setting theme Microsoft.SharePoint.Client.ListItem themeEntry =... web.ApplyTheme(themeEntry["ThemeUrl"] as FieldUrlValue, themeEntry["FontSchemeUrl"] as FieldUrlValue, themeEntry["ImageUrl"] as FieldUrlValue, false); web.MasterUrl = (themeEntry["MasterPageUrl"] as FieldUrlValue); web.Context.ExecuteQuery();
10
Alternate CSS
11
Setting alternate CSS and logo $http({ url: "https://spsboston/_api/web", method: "POST", headers: { "accept": "application/json", "contentType": "application/json", "X-RequestDigest": digest, "X-HTTP-Method": "MERGE", "content-length": 84 }, data: { "AlternateCssUrl": "https://spsboston/SiteAssets/contoso.css", "SiteLogoUrl": "https://spsboston/SiteAssets/pnp.png" }});
12
Display Templates
14
JavaScript injection methods
15
Script Editor Web Parts
16
Adding User Custom Actions to a Site executor.executeAsync({ url: "../_api/SP.AppContextSite(@target)/web/usercustomactions" + "?@target='" + hostWebUrl + "'", method: "POST", body: JSON.stringify({ 'Sequence': 0, 'Description': 'CDNManager', 'Location': 'ScriptLink', 'ScriptBlock': script }), headers: "content-type": "application/json", "accept": "application/json", "X-RequestDigest": jQuery("#__REQUESTDIGEST").val() }, success: function (data) {...}, error: function (err) {...} })
17
Utilizing JSLink (function () { // Initialize the variables for overrides objects var overrideCtx = {}; overrideCtx.Templates = {}; // Override field data overrideCtx.Templates.Fields = { // PercentComplate = internal name of the % Complete // View = you want to change the field rendering of a view // <dev... = here we define what the output of the field will be. 'PercentComplete': { 'View': '<div class="progress"... ' } }; // Register the override of the field SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx); })();
18
JavaScript injection challenges
19
JavaScript Injection with CDN Manager
21
Provisioning Techniques SharePoint Add-In Office 365 APIs PowerShell
22
SharePoint Online Host Web Add-In Web Azure Web Sites CSS png aspx master js New/Existing Sites and Webs
23
SharePoint Online Azure Web Sites CSS png aspx master js New/Existing Sites and Webs
24
SharePoint Online PowerShell Client j New/Existing Sites and Webs
25
PnP Provisioning Engine
28
Proxy Process Proxy Process (SUCWorkerProcessProxy.exe) Worker Service ( ) (SPUCWorkerProcess.ex e) Host Services () Host Services (SPUCHostService.exe) Untrusted Code Declarative Items: Web Templates Lists and Libraries Site Columns and Content Types File deployment Custom Actions Client Code
29
Sandboxed Solutions The Good Customize SharePoint without a farm solution: Declarative Features (lists, libraries, files, client side code) User Code (web parts, InfoPath forms, event receivers, workflow actions) Multi-tenant friendly The Bad and the Ugly Limited server side API Provisioned content is brittle Versioning is a black art No central way to manage, update Scalability Problems
30
What does it all mean?
32
SharePoint Add-In Challenges
33
Office 365 API Benefits
34
Office 365 API capabilities MailContactsCalendar Files Users & groups Discovery Service
35
Included in Office 365 Subscription Users & Groups managed in Office 365 Portal Changes persisted in Azure AD
36
Single auth flow for Office 365 Azure AD Graph, Exchange, SharePoint Device apps and web sites Admin and end-user consent Secure protocol OAuth 2.0 No capturing user credentials Fine-grained access scopes Supports MFA and federated user sign-in Long-term access through refresh tokens
37
Application Types Custom developed Third-party, published in the gallery Office 365 SharePoint, Exchange Dynamics CRM Thousands of others Custom Applications Web Application and/or WebAPI Native Client
39
Implicit Flow and Angular JS
40
Implicit Flow with ADAL.JS
41
References
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.