360 Degree Collaboration in Microsoft Teams

This is part 1 of a 3-part article series about building a “360 degree view” mashup for Microsoft Teams using the SharePoint Framework and React. The articles are:

  1. Part 1: 360 Degree Collaboration in Microsoft Teams (This article)
    This article introduces the 360 Degree pattern for collaborative applications, and explains a the workings of a sample solution based on SharePoint Framework and React
  2. Part 2: Working with Teams Content from an SPFx Tab
    This article explains how to access Team and channel content, such as the shared calendar and conversation, from a SharePoint Framework tab in Teams
  3. Part 3: Deep linking to a SharePoint Framework tab
    This article explains how to create a deep link that opens a Team, Channel, and tab, and passes information to your SharePoint Framework tab so you can display specific information

The series is based on a sample Teams tab written in SharePoint Framework which displays a mashup of information about customer visits. The Teams tab allows users to see one another’s schedules, and then brings together all the information needed for each visit. The same approach could be used for any kind of mash-up. Users can see at a glance what customer visits are approaching for each team member; when a visit is selected, the solution displays:

  • customer information (from the Northwind database OData service)
  • documents (from SharePoint)
  • recent transactions (mock)
  • a map (Bing maps)
  • current weather (Open Weather Map)
  • photos (from SharePoint)
  • a text box for sending messages to the Teams channel with deep links back to the selected visit

Continue reading

Calling Microsoft Graph from a single-page application: Part 2

This post was part of the “30 Days Microsoft Graph” blog series, now cross-posted to my personal blog. I was thrilled to have the opportunity to contribute to this excellent blog series. Many thanks to Brian Jackett, who organized this excellent blog series, and to Srinivas Varukala, who kindly edited my articles. In addition, thanks to others from the Graph and Azure AD teams who helped to test and QA the articles.

In Part 1 you learned how to register apps for both Azure AD v1 and v2 that can be used from the browser to enable Graph API calls. Today, we’ll use those registrations in some simple applications.

Continue reading

Calling Microsoft Graph from a single-page application: Part 1

This post was part of the “30 Days Microsoft Graph” blog series, now cross-posted to my personal blog. I was thrilled to have the opportunity to contribute to this excellent blog series. Many thanks to Brian Jackett, who organized 30 Days Microsoft Graph, and to Srinivas Varukala, who kindly edited my articles. In addition, thanks to others from the Graph and Azure AD teams who helped to test and QA the articles.

In this article and the next, you’ll learn how to call Microsoft Graph APIs directly from a web browser in a Single Page Application much the same way that the Day 15 article showed how to call Graph from a .Net Core Console Application. This article will walk you through updating your app registrations (for v1 and v2) so they’ll work from the browser; in Part 2 we’ll dig into the code.

Continue reading

Building SharePoint Site Designs with Themes and Azure Functions

This article is the sequel to Swooping into SharePoint Site Designs, in which I related my experience working behind the scenes on the world’s first SharePoint reality show! This time I’ll explain the code so you can build similar solutions if you so desire.

The sample shows how to build a site design and script for a simple department site, as created in the SharePoint Swoop video. A team of experts worked to redesign an Intranet site in just three days. This site design was developed behind the scenes to provide a template for all the company’s department sites.

Continue reading

Swooping into Site Designs

A few months ago a group of SharePoint MVPs gathered to film a new kind of reality TV show and remake a company’s Intranet. You may have seen it – SharePoint Swoop!

This is a story from behind the scenes,in which I got to make their work reusable with SharePoint Site Designs and Scripts. It was quite a thrill to be involved, even though I wasn’t there in person! I’ll start with the story, then dig into the details of Site Designs and Scripts.

Continue reading

Localized strings in solutions that span classic and modern SharePoint sites

This article builds on an earlier one, Building Headers and Footers that work on Classic and Modern sites. That article, with associated sample code, was about how to create a top menu and footer that work on both modern and classic SharePoint pages. On modern pages, the solution is a SharePoint Framework extension; on classic pages, it’s a stand-alone solution that just happens to use SharePoint Framework tooling like TypeScript, WebPack, and React. That allows a very high degree of common code between the classic and modern implementations.

Figure 1

The good news is that my POC was successful, and the partner and their customer liked it!

The sample code has moved! It’s now in the SharePoint Framework Extensions repo.

I skipped over one key capability in my project, which was localization. The customer in this case is a large multi-national company, so it’s not too surprising they would want to show some information in the user’s preferred language.

Continue reading

Building Headers and Footers that work on Classic and Modern sites

One of the partners I consult for is migrating a Fortune 500 financial services company to SharePoint Online. The company wants to take advantage of modern team and communications sites, yet where they need features that aren’t available in modern SharePoint, they’ve decided to stick with classic Publishing sites.

The challenge is: how to build global navigation and footers that will work on both classic and modern sites. There are a few reasons this is important:

  • It provides common navigation across all kinds of sites, making the Intranet easier to use
  • It provides a common footer across all kinds of sites, ensuring compliance messages are delivered consistently
  • It reduces coding and maintenance, because one set of code is used across old and new sites

So I undertook a little Proof of Concept, and here are the results. The solution is usable as-is if your needs are simple. The real intent, however is to prove out a pattern for developing any header and footer that will work on both modern and classic sites.

Figure 1

Continue reading

Securely erase physical drives with dban and Hyper-V

I’m writing this between jobs – I’ve left BlueMetal, and haven’t started at Microsoft yet. I’m using this time to do a deep clean on my home office, and I’ve come across a number of hard drives that need disposal. But how to do so securely, so data can’t be recovered? And how can I hit a budget goal of, say, zero?

This article from ZDNet offers three options: one software (Darik’s Boot and Nuke – dban), one hardware (Wiebetech’s Drive eRazer Ultra), and one brute force (drive a nail through the platters). The hardware solution would be perfect if I did this every week, but it’s kind of expensive and this isn’t something I’ll use very often. The brute force solution might be good if I had a lot of pent up aggression, but it physically destroys the drive. That leaves the software approach, and a bunch of people recommended dban. But they recommend running it on a dedicated machine because by default it wipes out all connected hard drives and it’s easy to accidentally wipe out everything.

So I had the idea of using Hyper-V, my favorite virtualization tool that’s built into Windows 10 (Enterprise, Professional, or Education editions). Virtualization provides a safe sandbox to run dban, and I can run it in the background on my existing PC.

Continue reading

Office 365 Developer Review from Microsoft Ignite

Companion Article for the Overview at the Boston Office 365 Developer Bootcamp

This article could be useful to any Office 365 developer who wants a quick reference to  the recorded sessions from Microsoft Ignite, but it’s also intended as a companion to my opening talk at the Office 365 Developer Bootcamp on October 27, 2017, in Burlington, MA. The talk is intended to show you all the ways you can develop for Office 365. Office 365 includes the Office client programs, such as Word, Excel, and Outlook, as well as the online services, such as Exchange Online, SharePoint Online, etc.

There was a ton of great content at Ignite on Office development and, thankfully, most of it is available online. Here are links to the sessions that are available as recordings, so you can dive into whatever areas you like.

Continue reading

Building Compliant Team Sites

Companion article to my session at Microsoft Ignite 2017

Thanks to everyone who attended my session at Microsoft Ignite 2017, Building Compliant Team sites (THR2057). For those who missed it, here is the recording. This article provides links to resources and additional details.

The talk was about how enterprises can manage modern SharePoint team sites in a way that makes compliance easy.

Continue reading