# Modern SharePoint Customization

John E. Huschka, Collaboration Foundry September 12, 2017 6

---

## Tonight’s Menu

- **Salad**

- **Changing user interface architecture**

- **Soup**

- **Changing toolset architecture**

- **Tapas**

- **Technology and tools**

- **Dessert/Coffee Recommendations, questions and discussion**

---

---

## UI in the SharePoint World

ASP.Net

## UI in the Client World

JavaScript 1 ASP.Net Client #1 2

## Why Client-Side?

- Networking everywhere.
- Universal JavaScript.
- Client platform diversity: Phone, tablets…
- Client software knows how to render/run on the client.
- Sharing of cloud server resources:
- No individual can customize cloud-based servers.

---

---

## Tools in the SharePoint World

- **Forms**

- **Workflows**

- **Webparts**

- **Event Hdlrs**

- **Solutions**

---

## Tools in the Client World

- **Flow**
- **JavaScript**
- **Workflows**
- **Webparts**

## SharePoint Framework

- A framework by which client-side components can be integrated into SharePoint pages (modern and classic).
- Initial release supports web parts for both modern and classic pages.
- Coming to SharePoint 2016 in late 2017 (Feature Pack 2).
- “Extensions” (in preview) provides client-side integration with the SharePoint UI.

---

## A New Toolset…

Diagram from Andrew Connell. See [https://www.linkedin.com/pulse/free-10-day-email-course-me-](https://www.linkedin.com/pulse/free-10-day-email-course-me-understanding-framework-andrew-Connell).

---

## SharePoint Modern Experience

- A major upgrade to the SharePoint UI supporting cloud-first, mobile-first:
  - Sites
  - Libraries
  - Pages
- “Classic” experience is not deprecated.
- Currently, limited branding and customization options.
- Planned for SharePoint 2016.

---

## Microsoft Patterns & Practices

- Microsoft-sponsored, open-source.
- Large, active, evolving collection of tools (wrapping the CSOM) and techniques.
- Multi-platform support:
  - .NET (C#, VB.NET)
  - PowerShell
  - JavaScript (TypeScript)
- Useful for many contexts, but especially provisioning.
- Highly recommended.

---

## Provisioning: Old versus New

- **Old:**
  - “Save site as template”
  - Challenges:
    - Compressed file format
    - Deployment = site
    - Not Microsoft recommended

- **New:**
  - Deployment: Feature framework
  - PowerShell:
    - Get-PnPProvisioningTemplate
  - Advantages:
    - Uncompressed XML file format
    - Deployment = component(s)
    - CSOM based
    - Microsoft recommended
    - Deployment:
      - Apply-PnPProvisioningTemplate

---

## Microsoft Flow

- Cloud-based low-code workflow
- Available as part of O365 or separate subscription
- Not a true triggered architecture
- Custom Azure function integration
- Currently, more of an individual solution:
  - Not all SharePoint columns types supported
  - No source code, deployment story
  - Runs as individual who deployed
  - Not unique to SharePoint…

---

## Azure Logic Apps

- Azure cloud-based, code-optional workflow
- Same application as Microsoft Flow, but…
- Closer to an enterprise solution:
  - Solution source code is available
  - Creatable in Visual Studio
  - Can integrate with custom functions
  - Good logging/debugging

---

## Microsoft PowerApps

- Cloud-based application development
- Available as part of O365 and Dynamics 365 or separate subscription
- Common Data Service available
- Flow integration
- Custom Azure function integration

---

## Azure Functions & Webjobs

- Azure cloud-based code-first custom processes.
- Can be triggered from SharePoint via webhook
- Can be scheduled
- Can be integrated into other tools
- Wide variety of languages.

---

## Recommendations

- Try the tools, technology. Get acquainted with them.
- Prepare your organization for cloud-based integration.
- Take advantage of integration opportunities. It’s not “all or nothing” for “classic” or “modern” architecture.
- Don’t forget your simple, core toolset.
