Allow Office 365 Group Members to “Send As” the Group Email Address

Background

At PSC, we are nerds.  Many of us are also big fantasy football fans.  Naturally, we use Office 365 Planner to manage the office fantasy league.

FFL.png

We run 2 leagues– an A and a B league– like the British Premier league.  Every year, the bottom two teams in the A league are relegated to the B league, and the B league champion and runner-up are given the option to join the A league.

Depending on who returns to play each year, a few spots open up in the B league and we send an open invitation to everyone else at PSC, first-come first-serve.

Because we used Planner to manage the league this year, we wanted to send the “league sign-up” email from the Office 365 Group’s email address (fantasyfootballcommissioners@psclistens.com) so that every reply went straight to the Group’s conversation and each of the 3 commissioners was notified when a reply came in.

Nuts and bolts

Office 365 Groups are comprised of multiple pieces: a SharePoint Team Site for document storage, a Notebook, an Exchange Calendar and an Exchange Distribution Group (with a snazzy “Conversations” front end) for email.

So we should just be able to update the settings for the Distribution Group like you would any other distro to allow users to send as the group.

To enable a user to send email as the group , you can make a quick change in the Group configuration in the Office 365 Exchange admin center.  Note that your user account must have the Exchange Administrator role to perform this action.

1.  Open the Exchange Admin dashboard and navigate to the groups page:

snip_20160804114530

2.  Search for the group you want to edit:

snip_20160804114611

3.  Double-click the group to open it, then click group delegation.

snip_20160804114842

4.  Click the + button, then add each user who should be able to send email from the group.

snip_20160804114810

5.  Click OK.  The users are now listed.

snip_20160804114720

6.  Click Save and you’re done!  These users can now send email as the group:

snip_20160804114937

snip_20160804120935

 

Build your first PowerApp with Office 365 and Twitter

In case you haven’t heard, Microsoft PowerApps is now in private beta.

This article walks you through creating your first PowerApp that connects to Office 365 and Twitter.

awesomesauce

Overview

What the app does

This proof-of-concept app will let you:

  • Manage a custom list in SharePoint Online, including all CRUD operations
  • Select a list item and tap a “Tweet” button to tweet out data stored in the list item’s fields

What you’ll learn

And when you’re done building it, you will have learned how to:

  • Create a new PowerApp
  • Connect to a list in Office 365 SharePoint Online
  • In your new app:
    • Add a screen and navigation controls
    • Add, edit and rename controls like buttons and text fields
    • Use formulas to format text in control values
    • Pass control values between screens
  • Connect to Twitter with your account
  • Create a new Logic Flow that:
    • Starts when you tap a button in your app
    • Accepts a parameter
    • Tweets using your Twitter account
  • Update your new PowerApp to:
    • Compose a tweet
    • Pass text from a SharePoint list item into the tweet text
    • Post the tweet to Twitter by calling your Logic Flow

 

Before you start

You’ll need PowerApps enabled on your Office 365 tenant (I was lucky enough to get my hands on PoweApps and start playing with it because my coworker, Michael Blumenthal is an O365 MVP!), as well as a Twitter account for the tweeting functionality.

Warning: this is a low-fi proof of concept with limited functionality.  But if you want to create your first PowerApp, connect it to a SharePoint list in Office 365, and tweet out some of your list content, keep reading!

You’ll also need to get a few things in place before you build your first app.

Create a SharePoint list

We’re going to build an app that connects to a SharePoint list, so you’ll need a list to play with.  I created a list in our SharePoint tenant called “Speaking Gigs” to track speaking events booked by my coworkers, then added a few basic columns (column type in parentheses):

  • Date (Date and time, date only)
  • Speaker (Person or group)
  • Description (Multiple lines of text; 6 lines of plain text)

I created one entry in the list, too:

List form

That’s all on the SharePoint side for now.

Install PowerApps

Once your tenant is configured with access to the PowerApps beta, you should be able to sign into the PowerApps portal.  You’ll also need to install the PowerApps app on your machine.

Part 1: SharePoint Online

First, we’ll build the part of the app that connects to SharePoint Online.  If you don’t care about Twitter integration, you can stop reading at the end of this section.

Connect to SharePoint Online

When you spin up the PowerApps app on your machine for the first time, you’re given the option to start from a template, start from your data or start from scratch.  We have a data source– our SharePoint list– so choose “Start from your data”:

Initial

Next, you’ll need to add a connection.  Click “Add a connection”:

Add a connection

If you’ve ever used IFTTT, this might look a little familiar: you can choose between some common services to which your PowerApp can connect.  Our first connection will be to our list in SharePoint Online, so select SharePoint Online from the list of available connections and click “Connect”:

Choose a service.png

You’ll need to sign in with your Microsoft or Organizational account:

Connecting to a service

Next, add the site on which your list resides by clicking the “New site” tab under “Select a site”.  You don’t need to type the full URL to your list– just the site URL will do:

Select a site

Click “Connect” in the bottom right-hand corner.  When PowerApps connects to your SharePoint site, you’ll be shown the lists that you can access.  I easily found the “Speaking Gigs” list I created just moments ago:

Select a list

Click “Connect” and PowerApps will start to build your app– no, really!

Building your app

When it’s done, you’ll see your new app (which already shows the list item you created!):

New app

Run your new app

Now is a great time to run your shiny new app.  Click the little “Play” icon in the upper right side of the screen:

Play

I was pleasantly surprised at the functionality available right out of the box: I could view list items, select an item to view its details, edit the list item, and even create new ones:

Pause for a second and reflect how easy it was to create a simple mobile app that performs CRUD operations on a SharePoint list!  Powerful, no doubt– but it isn’t without its weaknesses:

  • The “Date” field is a text box, not a date picker control, and it’s displayed as a full UTF DateTime string
  • The default screen shows the “Description” field instead of the “Title” field (a little strange if you ask me)
  • The “Speaker” field is simply not there!

Change the Description field to show the Title

Let’s address some of that weirdness.  First, it makes a lot more sense to show a speaking gig’s Title than its Description.  Click on the control at the top of the canvas that’s showing the Description field.  Notice that in the formula bar, the fx section shows “Description”:

Description field.png

Place your cursor in the formula bar (next to fx) and replace “Description” with “Title”.  As you start to type, the formula bar suggests some fields from the list.

Replace description with Title

Select (or keep typing) “Title”.  The contents of the control are now replaced with the list item’s Title instead of its Description.

Title

Add the Description field

Actually, it still makes sense to show the item’s Description— just not in bold at the top of the row.  Let’s add another control to show the description.  Select the “Insert” tab–> “Text” –> “Label” to insert a new label onto the canvas:

Insert label.png

Boom!  Your new label is already hooked to the Description field!  Why?  I don’t know– for some reason, that seems to be the default field.  Selecting your newly-inserted control shows something new and interesting in the formula bar: the formula for this control is ThisItem.Description:

 

ThisItem.Description

This is useful for adding controls in the future– if you want to quickly add item fields, typing ThisItem.[FieldName] is a good start.  You can even replace “Title” with “ThisItem.Title” for the Title control and the results are the same.

Format the Date field

Let’s take care of those date controls before your eyes bleed out.  First, delete the two left-aligned controls that show dates, leaving the control at the bottom of the row.  This will be the control we use to show the date of the speaking gig.

Select the right-aligned control at the bottom of the row, then click the “Home” tab–> {align icon} –> {align left} to align the control on the left side of the row beneath the item Description.

Left align.png

The biggest problem with this control isn’t its alignment– it’s the UTF formatting.  With the control still selected, click the “Align” dropdown next to the formula bar and select “Text” instead of “Align”.  The text is set to “Date” (or ThisItem.Date, really).

We need to format it using the “Text(value, format_text)” function.  Replace Date in the formula bar with Text(Date)— the formatting of the control doesn’t change!

No change.png

That’s because the “Text(value, format_text)” formula needs a date value, not a text value, in order to format the date, and apparently the UTF-formatted date in the Date field is returned as text.  No matter– we just need to nest one more formula.  Replace Text(Date) with Text(DateValue(Date), “mm/dd/yyyy”), including the quotes around “mm/dd/yyyy”. This time, the format of the control changes as expected:

DateValue.png

Hey, listen!

The formula evaluation for the Date formatting (eventually) started crying foul with this formula:

Strange

I’m guessing this is a bug, because the formula still works.  I’ll blame it on the whole “private beta” thing 🙂

Change the theme

If you work in the consulting industry as I do, you know that no client is ever happy with the out-of-the-box SharePoint color scheme.  Lucky for the picky-packy’s among us, PowerApps provides a simple way to change your app’s UI.

Click “Design” tab –> “Theme” and select a new, obviously-better theme:

Change theme

With the new theme applied:

Themed

Next, we’ll shift focus to building a logic flow that allows you to tweet from your Twitter account.  If the mere thought of Twitter makes you #literallycanteven, then feel free to stop here or skip to the “run the app on your mobile phone” part.

Part 2: The Twitter

In order to add some Twitter integration, you’ll need to add a connection to your Twitter account.

Connect to Twitter and authorize PowerApps to tweet on your behalf

Start by clicking File –> Connections –> Add a connection:

Add Connection 2

Select “Twitter”, then “Connect”.  You’ll be prompted for your login credentials or, if you are already signed into Twitter in a browser session, simply prompted to allow access to your account.  Click “Authorize app”:

Authorize

You should now see your Twitter connection on the “Connections” screen (File –> Connections):

Connections

Create a new Logic Flow

A lot of the promised *cough* power of PowerApps lies in its workflow capabilities, called Logic Flows.  Logic Flows can listen to your connections and execute actions with them– here, we’re going to execute the “Post tweet” action for the Twitter connection you just created.

To create a new Logic Flow, click File –> Logic Flows –> Create a new Logic Flow:

New Logic Flow

This will open… your web browser.  Looks like the logic flow functionality isn’t built into the PowerApps desktop client yet!

Choose “Create from blank”:

Create from blank.png

Next, you’ll need to choose the entry point for your Logic Flow.  We want to kick off the flow manually when we tap a button in the PowerApp, so choose “When a control is selected”:

When a control is selected.png

Click the little “+” icon beneath the first step to add a second step.  You’re presented with a search box, several choices and a “Load more” button.  I prefer to search for the action I want (I just started typing “Tweet”), but you can also click “Load more” a gazillion times until you find what you’re looking for.

Select “Post a new tweet”:

Load more

Post a tweet
Start typing “tweet” to quickly jump to the Twitter connection actions.

Of course, it wouldn’t be an app if we just hard-coded the text to tweet, so we need to tell the Logic Flow that we’re going to get the tweet text from our app.

Click inside the “Tweet Text” text box.  You’ll see an option to “Ask in PowerApps” for the text of the tweet:

Ask in powerapps.png

Clicking “Ask in PowerApps” automatically creates a variable for you and places it in the “Tweet Text” field:

Ask in powerapps2.png

All that’s left now is to save the Logic Flow.  Give it a name, then click “Done”:

Give it a name

The Logic Flow is now saved and accessible to your app:

Tweet it saved.png

Create a “Tweet” screen in your PowerApp

Here’s where the magic happens.  With your new Logic Flow ready to go, back in the PowerApps desktop client, click the “Home” tab and select “New Screen”.  We’ll use this screen to compose our tweet:

New screen.png

Your new screen is added to the storyboard.  Now is a good time to rename the screen something other than “Screen1”, so click the tags icon next to “Screen1” in the “Home” tab and rename the screen to “TweetScreen”:

For the text of the tweet, add a text field to the canvas.  Click the “Insert” tab –>  Text –> Input Text:

snip_20160119092300

We could easily allow the user to enter anything they want into this text input, but where would the fun be in that?  Let’s pre-populate the field with some text from our SharePoint list item.

Pass control values from one screen to another

Navigate back to the “DetailsScreen” screen in your app by selecting it in the left navigation pane.  This screen shows the details of the current list item in controls for the list item’s TitleDate and Description; it’s also the screen to which the user is navigated automatically after creating a new list item.

Seems like a good place to put our “Tweet it” button that will (1) navigate the user to the new “TweetScreen” we just created, and (2) pass some of the list item’s metadata into the input box.

Hey, listen!

Every control in PowerApps has a unique name that persists across the entire app.  This allows you to grab the value of a control from any screen.

Let’s change the names of the controls on the “DetailsScreen” screen to make it easier to find them and use their values on the “TweetScreen” screen.

Select the text label beneath the Title label.  With the “Home” tab selected, change the name of the control to “TitleValue”.  Be careful to select the control beneath the label– this is the control that displays the value of the list item:

RenameTitle

Do the same with the Date and Description fields, renaming the controls to “DateValue” and “DescriptionValue” respectively.

Add a button to navigate the user to another screen

The control values are ready to pass to another screen, but how will the user get there?  Add a button to the “DetailScreen” canvas by clicking the “Insert” tab –> Controls –> Button:

InsertButton

A new button is added to the canvas.  Double-click it to edit its label, and rename it “Tweet…”:

Renamebutton

Next, select the button on the canvas and change the dropdown next to the formula bar to “OnSelect”.  You can select from the dropdown, or begin typing “OnSelect”:

Onselect.png

We want the screen to navigate to our new “TweetScreen” screen when the button is clicked.  To do this, we can use the Navigate(target, transition…) command that accepts two parameters:

  1. The screen to which the user should be navigated when the button is clicked
  2. The transition to use

In the formula bar, type “Navigate(“.  After typing the “(“, you are presented with several screens to which you can navigate.  Keep typing the name of the screen– in this case, “TweetScreen”– until you can hit “Enter” to autocomplete the screen name:

Navigate.png

Next, provide the transition parameter.  Type a comma after “TweetScreen”, and you’ll be presented with the transition choices available:

Transition1.png

I chose the “Cover” transition.  Once selected, close the parentheses.  Your formula should now look like this:

Transition2

You can test your app by clicking the “Play” button.  Select a list item to navigate to the “DetailsScreen” screen, then click the new “Tweet…” button to navigate to the “TweetScreen” screen!

Add control values to a formula

Navigate back to the “TweetScreen” screen canvas and select the “TweetValue” control.  Select “Default” from the dropdown next to the formula bar, then start typing “Concatenate” because we want to use the Concatenate formula to join some default text with the values of the controls from the “DetailsScreen” screen.

The Concatenate formula takes an unlimited number of string parameters.  The first parameter we’ll pass it is hard-coded text, “I’m speaking about “:

Imspeakingabout.png

Next, we want the value of the TitleValue control from the “DetailsScreen” screen.  Unfortunately, simply typing the name of the control won’t suffice; we need to cast it as text using the Text formula:

concatenate2

Add a second hard-coded string ” on “, separated by commas, then grab the date control value, too.  Remember what we did to format it earlier using the DateValue formula?  Do the same thing here (a bit confusing because we also called our Date control DateValue; in the image below, one “DateValue” is a formula while the other, in red, is the control value).

Notice that you need to grab the “Text” value of the DateValue control by adding “!Text” after the control reference; I’m not sure why this is the case, but the formula will not compile without this change.  Maybe someone can tell me why in the comments!

Your final formula should look like this:

finalformula

Now that you read this far and typed the formula yourself, here’s the formula you can copy and paste 🙂

Concatenate(“I’m speaking about “, Text(TitleValue), ” on “, Text(DateValue(DateValue!Text)))

The TweetValue control on the “TweetScreen” screen should now look like this:

emptyformula.png

Add the button that calls the Logic Flow

Ok, here’s where the magic really happens.  Add a new button to the “TweetScreen” canvas and change its text to “Tweet!”:

tweetbutton.png

With the button selected on the canvas, click the “Action” tab –> Logic Flows:

Action.png

A pane opens to the right of the canvas, showing your saved Logic Flows.  Click the “Tweet it!” Logic Flow you created earlier.  A yellow bar indicates that the Logic Flow is being added to your button:

addlogicflow

When the Logic Flow has been successfully added, the yellow bar changes to indicate that you need to complete the Logic Flow’s parameters in the formula bar:

complete.png

In fact, the formula bar is already waiting for you to complete the action with parameters! The Logic Flow is referenced in the formula by putting its name in single quotes (‘Tweetit!’), followed by the .Run( command.  The formula bar also shows you the parameter the Logic Flow is expecting– in this case, Postanewtweet_Tweettext:

incompleteformula.png

The next part is super easy: just send the value of the TweetText control on the “TweetScreen” by typing “Text(TweetValue)”.  Your final formula should look like this:

TweetIt

You’re done!  Well, almost– we still have a few cleanup tasks to complete, but you can test your app now by navigating to start screen (“BrowseScreen1”) and clicking the “Play” button.

Play1.gif

Check your Twitter timeline!

Tweet.png

Add automatic navigation after the tweet

Sweet, right?  Well, you may have noticed that once you tap “Tweet!”, you don’t have a way to get back to the details screen.

It makes the most sense to redirect the user automatically after tapping the “Tweet!” button, because there’s really no reason to stay on the “TweetScreen” screen once the tweet is sent.  In fact, you’d probably want to notify the user that the tweet was posted successfully, but that’s too complicated for our proof of concept.

To redirect the user back to the previous screen after the “Tweet!” button is tapped, we can daisy-chain a second action to the “OnSelect” button action.  With the “Tweet!” button selected, add a semicolon (“;”), followed by the Back formula (which takes a “Transition” parameter, just like Navigate):

back.png

Add a “Back” button

Finally, we need to add a “Back” button to the “TweetScreen” screen just in case the user navigates to the screen by mistake or ultimately decides not to tweet.

Add an “Image” control to the canvas (“Insert” tab –> Image).  You’ll notice that “Image” is selected in the dropdown next to the formula bar, with its value set to “SampleImage”.  You can change this value to “arrow” and resize the arrow image so it fits in the upper-left corner of the screen:

image

Select the “OnSelect” action from the dropdown menu next to the formula bar and erase the default “false” value in the formula bar.  Once again, use the “Back” formula.  This time, use the “Uncover” transition:

backbuttoncomplete

You’re done!  Preview the app from the main screen to test your new navigation.

awesomesauce.gif

Part 3: Run the app on your mobile device

All that’s left now is to download PowerApps from your device’s app store and run your app.  On my iPhone, the process was pretty straightforward.

Sign into PowerApps

Sign in with the same O365 ID you used to create the app.

Open your app

Once signed in, you’ll see your new app in the Apps tab.  Just tap it to open it.  You’ll need to authorize it again to acknowledge that it can use your service connections.

Profit!

Your app is ready to use.  Go ahead and give it a try, then imagine all of the wonderful things you can do now that you know how to build a PowerApp and a Logic Flow…

Wrapping it up

PowerApps isn’t ready for primetime yet (it’s still in beta) but the concept is pretty awesome.  I’m sure that a few of the kinks– like the lack of a Date or Person or Group controls, connecting to SharePoint lists with custom controls (I got an error when attempting to do this), and the occasional crash– will be ironed out soon enough.

We built an extremely simple app that doesn’t even begin to scratch the surface of what PowerApps can do.  I’ve played with a few things, like creating a Logic Flow that listens for tweets with a specific hashtag, sending email, and adding a Camera control to a PowerApp…

camera.png
Still haven’t figured out how to use the picture from the camera.

 

In short, I’m excited to see what PowerApps can do.

Microsoft Ignite: 5 Takeaways for SharePoint Architects and Developers

Apparently, some people actually spend time at the vendor expo at tech conferences.  I was too busy binge-watching sessions to take a breath and visit the booth babes, but I left the Microsoft Ignite conference with a very clear vision of the future of SharePoint.

Below, I examine the top 5 takeaways for SharePoint architects and developers from Microsoft’s Ignite conference (in reverse order of importance):

5.  Microsoft wants you to think twice about complicated branding and other customizations.

4.  Automated Site Provisioning is now possible with the new provisioning engine from the PNP team.

3.  The Office Graph is the next big API that you need to know, and Delve is just the beginning.

2.  Responsive design is coming to SharePoint Online in the form of Next-Gen portals.

1.  Microsoft is innovating in the cloud FIRST.

5.  Microsoft wants you to think twice about branding Office 365 and other complicated customizations.

I heard from many an MVP at Ignite:

“You wouldn’t brand Word, so why do you need to brand Office 365?”

It’s never actually that simple, and if you’re in the consulting world like I am, it’s rarely even close. 

But it shouldn’t come as a surprise that Microsoft doesn’t recommend deploying a custom master page to Office 365.  At Ignite, Microsoft doubled down on this stance, but also gave a little bit of context during a “deep dive on branding Office 365” session:

  1. The reason for not recommending using a custom master page is because Microsoft is rapidly innovating in SharePoint Online.  This means that the very second you duplicate “Seattle.master” for your custom page, it’s already out-of-date.  Microsoft understands that custom brands are important to its customers, but wants you to recognize that there is a cost to deep customization, just like there is with any other platform, and that cost is the potential that updates break your solution or your solution won’t support new functionality when it rolls out.  If you think about it, this has always been the case– but we used to have to wait months or years between update cycles. With the cloud release cycle clock interval now ticking in mere days, your customizations get stale quickly. 
  2. There are OOB ways to brand Office 365 that might be good enough.  You can use an Office 365 Theme with Microsoft’s theme builder app, which allows you to customize the color of the Office 365 navigation bar and other main color scheme elements. 
  3. Consider the cost of developing a custom brand vs. the value you get from it.  If you think that there is enough value in your custom branding to forego new releases and risk an update breaking your branding, you are free to use a custom master page at your own risk. It is supported, just not recommended. 
  4. Global Navigaion isn’t as necessary as you think it is. Configuring Promoted Sites for different intranet audiences may get you most of the way towards getting users to relevant content faster; consider setting Delve as the default home page for Office 365 so that users don’t have to navigate to content.

All of this is well and good unless you want to build a portal site, and Microsoft recognizes that it doesn’t provide solutions for a true company-wide intranet portal in Office 365.  This forces us to create super-custom master pages that not only take time and money to develop, but run the risk of breaking when Microsoft changes something in the Matrix.  

But fear not: they’re working on bringing us Next-Gen portals, and they look awesome.  More on that later.

4. Automated Site Provisioning is now possible with the new Provisioning Engine from the Office 365 Patterns and Practices (PNP) dev team.

My company’s biggest hurdle in the way of moving us to the cloud is that we invested a lot of time and code in building custom site templates in farm solutions.  We even overrode the SPWebProvisioningProvider class for complete, synchronous control over the feature activation process during provisioning.  Up until recently, none of that was possible in Office 365, but it is quickly becoming a reality.

Enter the PNP team.  These guys are churning out code like mad over in the Office 365 PNP Git repository (did I mention it was open-source!?), and I got to talk with Erwin Van Hunen (O365 MVP, @erwinvanhunen) about the future of what the PNP team is calling the cloud provisioning framework for Office 365.

What is the cloud provisioning framework?  It’s the answer to custom site templates in Office 365, and interestingly enough, the concept is very similar to writing a custom SPWebProvisioningProvider class. Admins can use the provisioning framework to (1) create an instance of an OOB template (e.g. Team Site), then (2) run a set of customization commands to create SharePoint objects like site content types and fields, lists, even custom term sets.

Erwin’s demo showed an XML file that looked similar (but not identical) to traditional feature elements.  Provisioning is accomplished by feeding this XML file to the provisioning engine via PowerShell commands; the engine parses the XML and calls the client-side API to provision the various objects.  Even cooler yet, the engine has its own API that you can call via your own PowerShell commandlet or Provider-hosted app (in lieu of using an XML file), and it supports exporting some components of an existing site.

I’m going to dive into this one soon, so I’ll post an update once I get my hands on it.

3.  The Office Graph is the next big API that you need to learn, and Delve is just the beginning

If you’re like me and hadn’t checked out Delve yet, it’s time.  At Build the previous week and again at Ignite, Microsoft made no secret of their belief that machine learning is the next big thing.  They call this Office 365-specific machine learning the “Office Graph”, and recently released Delve as the first major application built upon it.  

The heart and soul of Delve: People as a proxy for information

The Office Graph API surfaces information about users and content that goes beyond user profile properties into more meaningful data such as “people I interact with” and “documents trending around me”.  The ultimate goal is to be able to suggest documents and other content to users based on their interactions:

The Office Graph will learn to intelligently suggest people and content based on your interactions with both.


Microsoft is counting on the number-crunching, relationship-inferring Office Graph to entice stuck-in-the-mud IT professionals to move at least part of their SharePoint farms to the cloud.  The nature of machine learning is that it’s only possible in the cloud because of the massive processing power it requires– and although Microsoft intends to allow the Office Graph to index your on-prem SharePoint 2013 farm via an update later this year, Delve and the Office Graph API will still only be available in the cloud (so you’ll need a hybrid environment at minimum to use it). 

New “Boards” in Delve aggregate documents around tags.
Delve replaces the old User Profile page in Office 365.

So go check out Delve– it’s built on the Office Graph, its purpose is to allow users to “find content via interactions with people, and find the right people through interacting with content”– and it replaces the old User Profile page in Office 365.

Oh, and did I mention that it boasts a completely responsive design AND native client apps for iOS and Android?  

Speaking of which…

2. Responsive Design is finally coming to Office 365’s “Next-Gen” Portals

The Microsoft gods heard our prayers, or at least the product team did.  And what a response!  (Get it?)  In multiple sessions previewing the “next-gen portals”, Microsoft introduced 3 new concepts for curated content on SharePoint with beautiful responsive design. 

Potato picture of the NextGen portal architecture.

The architecture supporting all of these portals is exactly what you’d want in a “next-gen” portal, separating content and business/navigation logic from views and providing data via JSON string in REST services. Here’s a grainy glance at the architecture slide from the deep-dive session (I was in the overflow section for this session): 

Video

The new Office 365 Video portal

Microsoft just rolled out the Office 365 Video Portal, which, according to the deep dive session, combines Azure Media Services, a traditional SharePoint site collection-based information architecture, and the power of the Office Graph to deliver video content wrapped in beautiful responsive design. 

MicroSites 

There are two ways that we we create content for portals: from the top-down, and from the bottom-up. MicroSites are Microsoft’s answer to the top-down approach, and will essentially replace Publishing sites as the means of publishing curated content, called “Articles”, in canned layouts with images, live document previews (you can even choose to display a specific page of a document!) and WYSIWYG editors.

A few cool notes on the yet-to-be-released Article pages:

  • Gone are the Ribbon and confusing check-in/check-out controls
  • Here to stay is a contextual WYSIWYG text formatting menu (displayed on right-click) and– you might want to sit down for this one– automatic saving of drafts!
    Editing a MicroSite “Article” on a mobile device (again, sorry for the grainy photo, I was in overflow seating)

Microsoft’s goal here is to make creating and editing beautiful articles seamless and consistent, so they make a lot of design decisions for you. But the trade-off is that your Article is responsive, beautiful and functional out-of-the-box.

SharePoint, meet Responsive Design!

“Codename: Infopedia” – Knowledge Management

In addition to “top-down” curated content, organizations also contribute information to portals from the “bottom-up”, meaning we aggregate less-governed content that users create and use as part of their daily work.  Both of these concepts– top-down and bottom-up– are central to Microsoft’s new vision for Knowledge Management portals, which essentially combine MicroSites (see above) and Boards (like in Delve) to create a responsive, aggregated view of curated content for users.

Because it’s not released yet, details were pretty skimpy on what Microsoft is calling the “Infopedia” portal, but know this: portals in Office 365 aren’t dead, and Microsoft is taking them seriously.

1. Microsoft is innovating in the cloud FIRST.

SharePoint 2016 is coming, but it’s a second-class citizen now.  Delve, Video Portals and the Office Graph won’t be available on-prem EVER because they rely on machine learning only attainable in the cloud (although there will be hybridization opportunities in the future).  The jury is still out on whether any of the Next-Gen portals (in all their responsive design glory) will make it to the next on-prem version of SharePoint.

Bill Baer (@williambaer) laid it out nicely in the SharePoint 2016 keynote when he referred to SharePoint 2016 as “cloud-down” (I’m paraphrasing here– this isn’t a direct quotation):

We built Office 365 by porting SharePoint 2013 to the cloud, then continued to expand the featureset.  SharePoint 2016 is the first version of SharePoint where we are taking innovations we already made in the cloud, and are bringing some of them on-premise.

Microsoft is applying knowledge gained from scaling SharePoint Online to the bones of SharePoint 2016 by porting the SharePoint Online featureset– at a given point in time– to the on-prem server.

Here are a few of the features we can expect in SharePoint 2016:

  • “Cloud-down” design: based on SharePoint Online
  • Increased hardware prerequisites
  • Upgrade path from SharePoint 2013 only (no direct path from SharePoint 2010)
  • Move away from domain-based authentication to cloud-ready OAUTH by default
  • Discrete server roles (WFE, App, Distributed Cache, Search and “Special Load”) with health role compliance monitoring and automatic fix
  • Zero-downtime patches
  • New boundaries and limits (for example, list threshold increases past 5000)
  • Fast site creation: database copy rather than running code
  • Changing a filename will no longer break the URL
  • Advanced health monitoring

Exciting, huh?  Maybe, if you don’t consider the fact that all of these features have been available in Office 365 (or were necessary to support it) for some time now.

My biggest takeaway from Ignite is that Microsoft isn’t just innovating in the cloud first– they’re prioritizing it, they’re fast-tracking it, and they’re not looking back.  A gentleman in front of me (shoutout to Benjamin Niaulin, @bniaulin) remarked during the SharePoint 2016 keynote:

Hybrid is the new on-prem.

Bingo.  So if you want to bring your SharePoint environment into the next generation, you’re going to need the cloud to get you there.