Azure Logic Apps will be the Pro Version of Microsoft Flow

Microsoft yesterday unveiled a brand new service called Microsoft Flow.  Flow is an “If This Then That” (IFTTT) service that allows you to create cloud based workflows for connecting events generated by cloud services such as Twitter, Facebook, etc. that business processes that can send actions to other services.


Microsoft also has another Azure service called “Logic Apps” that was introduced in February in preview.  Logic Apps is a configuration based workflow engine that connects cloud services together using Webhooks.  Sound familiar?

Sample workflow

When I tweeted the announcement yesterday about Flow, I received this tweet:


The answer from Microsoft is that they are in fact the same platform and that Logic Apps will become the “Pro” version of Flow as the two services mature.


Stay tuned for details as they come out from Microsoft….

Read More

Microsoft Unveils Yet another RAD Tool with Flow

Microsoft today introduced a new type of tool known in the industry as If This Then That (IFTTT) which allows for the creation of pseudo applications based on combining cloud services into business driven workflows.  Microsoft Flow is designed to connect to cloud services such as Twitter, Slack, Google Drive, Office 365, etc. and use these services to both generate events (e.g. Twitter retweets your post or someone sends you an email) and drive actions to these cloud services (e.g. send out a tweet, copy a file, etc.) as part of a coordinated cloud based workflow.


Microsoft has a long history of Rapid Application Development tools which are targeted to development of pseudo applications without the need for custom coding or developers.  In November, Microsoft launched PowerApps for building sophisticated web applications that harness cloud services such as Office 365, CRM, SalesForce, etc.


If you imagine the two services working together, you could create quite a sophisticated line of business application that leverages these cloud services to drive business processes complete with a dynamic web application for viewing content, providing a customer experience view and then integrating with cloud services for communication and transacting.

Read More

How To Create a Publishing Page in SharePoint Online Using CSOM API

I am working on some provisioning code for SharePoint Online, and I needed to create a publishing page.  After some digging into the CSOM API, here is the code for adding a publishing page in SharePoint Online.


using (ClientContext ctx = Login(parentURL))
         var web = ctx.Web;

        PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(ctx, web);

        if (publishingWeb != null)
             string pageLayoutDisplayName = “ArticleLeft”;
             // Get Publishing Page Layouts
             List publishingLayouts = ctx.Site.RootWeb.Lists.GetByTitle(“Master Page Gallery”);
             ListItemCollection allItems = publishingLayouts.GetItems(CamlQuery.CreateAllItemsQuery());

            ctx.Load(allItems, items => items.Include(item => item.DisplayName).Where(obj => obj.DisplayName == pageLayoutDisplayName));

            ListItem layout = allItems.Where(x => x.DisplayName == pageLayoutDisplayName).FirstOrDefault();

            List pages = ctx.Site.RootWeb.Lists.GetByTitle(“Pages”);
             PublishingPageInformation publishingPageInfo = new PublishingPageInformation();
             publishingPageInfo.Name = “test.aspx”;
             publishingPageInfo.PageLayoutListItem = layout;
             PublishingPage publishingPage = publishingWeb.AddPublishingPage(publishingPageInfo);

            List publishPageParentList = publishingPage.ListItem.ParentList;
             ctx.Load(publishPageParentList, list => list.EnableModeration);

            publishingPage.ListItem[“PublishingPageContent”] = “test”;
             publishingPage.ListItem.File.CheckIn(string.Empty, CheckinType.MajorCheckIn);

             if (publishingPage.ListItem.ParentList.EnableModeration)

             ctx.Load(publishingPage.ListItem.File, obj => obj.ServerRelativeUrl);


public ClientContext Login(string URL)
             SecureString passWord = new SecureString();
             foreach (char c in Password.ToCharArray()) passWord.AppendChar(c);
             ClientContext tenantContext = new ClientContext(URL);
             tenantContext.Credentials = new SharePointOnlineCredentials(Username, passWord);
             return tenantContext;

A couple key notes for those interested:

  • Publishing pages require a page layout – in this case “ArticleLeft”.  The publishing page object is looking for the actual list item representing the page layout which requires you finding it and providing it.  This is what the first few lines of code are doing – looking up by Display Name the page layout for ArticleLeft.
  • In order to approve a page, content approval has to be turned on in the list.  If it’s not turned on and you run the “publishingPage.ListItem.File.Approve” method it will generate an exception.  You can check for it being turned on using the “EnableModeration” property.
  • Like most properties in CSOM, you have to explicitly load properties.  If you try to access the property and it hasn’t been loaded you will get an exception.  This is what the line “
  • ctx.Load(publishPageParentList, list => list.EnableModeration);” is doing – it’s requesting that property be explicitly loaded.

  • The pagename property is ithe physical name of the page and it has to end in “.aspx” or you will get an exception.
  • Once you have created the page, you can then set the content of the various fields within the page as well.  In this case, I successfully updated the field “PublishingPageContent” (which is the main content box in the ArticleLeft page template) with the string “test”.  This would allow you to inject any content into those boxes.

I haven’t tested it but I expect that this would also work in SharePoint 2013/2016 on premise as well.

Read More

Microsoft’s High Speed Migration API Only Copies Items, not Structure

One of the exciting things announced a year ago was the introduction of the new Microsoft SharePoint Online Migration API.  Instead of using the front-end to migrate content, the Microsoft SharePoint Online Migration API uses a dedicated network path through Azure to dramatically speed up copying of content to Exchange Online, OneDrive, or SharePoint.

Using migration tools such as Metalogix Content Matrix or Essentials, you can leverage the new path to your tenant to enable this higher performance copying of content.

However, there is a key rule to understand before you plan your migration – only items are copied through the Migration API.  The structural elements are still copied through the slower front door.

Why is this important?  Think of the amount of content vs. structure of a corporate communications intranet.  There may actually be that much content (we find many cases where the intranet is less than a couple gigs) but the structure can be quite complex with lots of master pages, page templates, lists, sites, content types, etc.  When you copy all this structure, its still going to be quite slow to copy because these structural elements are recreated through the CSOM API and throttled to ensure performance of the tenant. 

Read More

Microsoft Goes on Offense and Sues US Government over Access Requests

The US Government routinely requests cloud data providers such as Apple, Google, Amazon and Microsoft to turn over data as part of investigations.  Over the past 18 months, Microsoft has received more than 2,600 “secrecy orders”.  Due to the secrecy aspect, Microsoft isn’t even allowed to disclose that an investigation is underway.

In order to protect its customers, Microsoft has been adding technical features such as encryption where only customers have the keys and processes that require customer approval for accessing customer data.  However, this may not be enough to keep out the US Government from accessing customer data.

Microsoft has now taken the step to sue the US Government on the grounds that the access requests are unconstitutional:

Microsoft Corp (MSFT.O) has sued the U.S. government for the right to tell its customers when a federal agency is looking at their emails, the latest in a series of clashes over privacy between the technology industry and Washington.

The lawsuit, filed on Thursday in federal court in Seattle, argues that the government is violating the U.S. Constitution by preventing Microsoft from notifying thousands of customers about government requests for their emails and other documents.

The government’s actions contravene the Fourth Amendment, which establishes the right for people and businesses to know if the government searches or seizes their property, the suit argues, and Microsoft’s First Amendment right to free speech.

As organizations move to the cloud, keep data private is a key concern and establishing that trust with customers is a key need for cloud providers such as Microsoft.  The argument that Microsoft is making is moving to the cloud should not create more exposure to government access requests than would be the case on premise and that requests for data are not transparent and access requests are too broad in their use.

Read More

Express Route Now Supports Power BI

Microsoft Express Route is an Azure service that allows you to create private network connections between your data center and Azure to improve performance and network reliability compared to going through the public internet.

Microsoft will now support Power BI through Express Route, enabling scenarios where Power BI needs to query or fetch data from on premise data sources through a high speed network connection.

Read More

New Usage Reports Rolling Out for Office 365, Yammer, OneDrive and Skype

Microsoft is rolling out new usage reports for Office 365, Yammer, OneDrive for Business an Skype for Business.

The key reports coming to your tenant soon include:

  • Activity dashboard
  • Email activity report
  • Office activations report
  • SharePoint site usage report
  • OneDrive for Business usage report
  • Skype for Business report
  • Yammer report

Each of these reports should help with monitoring activity, usage and adoption.

Microsoft will also be rolling out the Office 365 Power BI Content Pack in June, allowing you to create your own dashboards based on the same activity and usage data.

New usage reports for SharePoint OneDrive Yammer and Skype 1

New usage reports for SharePoint OneDrive Yammer and Skype 2

Read More

Microsoft’s Cognitive Services Comes to Azure Media Services in Preview

Microsoft has been developing a set of services for speech, face and emotion recognition.  Known previously as “Project Oxford”, these services have now been bundled as Microsoft Cognitive Services.

Microsoft Project Oxford

For example, the APIs can detect the two faces and the feeling of surprise in this photo.

Microsoft has now announced these services are coming to Azure Media Services, branded as “Azure Media Analytics”.  Azure Media Services is Microsoft’s video and audio encoding service that allows you to encode audio and video and have it served to a mass audience on a variety of formats from mobile phones to broadcast quality. 

A few scenarios for using these new services include:

  • Analysis of customer service or call center audio for emotional content
  • Face detection within security video
  • Analysis of body cams, dashcams, etc. for evidence for policing
  • Extracting text content from video
  • Speech to text transcription of video

Key services that are part of Azure Media Analytics include motion detection, face detection, emotion detection and optical character recognition.

Read More

Power BI Embedded Pricing Now Available

Microsoft has released pricing for Microsoft Power BI Embedded.  Power BI Embedded is the new version of Power BI targeted to application developers wanting to leverage the Power BI service directly in their applications.

Power BI Embedded

Unlike the regular Power BI subscription model which is based on the number of users, the new Power BI Embedded is based on the number of views.  Current pricing is $2.50 US / 1000 renders, e.g. 1000 views of a dashboard or report. 

Read More