Categories
Flow Office 365 SharePoint Workflows

The User Experience of Microsoft Flow with SharePoint: A Bumpy Ride on a Winter Road

If you have ever been frustrated using Microsoft Flow to perform functions inside SharePoint, you’re not alone.The User Experience can be better, and here’s where you’ll notice it.

Living in a northern climate at a higher altitude in a northern country, there are some harsh daily realities we tend to deal with frequently – cracked skin from extremely dry air, formidable snowstorms that can happen eight months a year on a whim, and blowing, cold winds that streak down the east side of the Rocky Mountains and straight into your vulnerable pores, crushing your spirits along the way.

But the bane of my existence, and one that provides no shortage of anxiety, is driving in unforgiving and hostile road conditions. Getting behind the wheel when the weather wants to go full Canada is an exercise in caution. I know, I’ve been riding in cars and driving long distances for 35 years.

Image result for pothole snow
The dreaded and maligned pothole. Commonly found in Canada and feeds on unsuspecting sedans.

When I hit a mound of snow, a patch of black ice, or (god forbid) a huge – yet unavoidable – pothole (a Canadian special), I wince and bite my tongue, hoping that my journey doesn’t end with a broken down car and a damaged ego.

So you’ll have to forgive me when I say I can’t help but get the same feeling of dread when I set out on the open road of Microsoft Flow when I’m trying to migrate workflows or build processes in SharePoint.

Here’s another analogy: if doing SharePoint things in SharePoint Designer is a summer road in July, then doing SharePoint things in Microsoft Flow is a Canadian highway in February: you cross your fingers and hope for the best.

Don’t get me wrong; Microsoft Flow is a wonderful tool. It is the proverbial ‘glue’ of the Office 365 world when it comes to having Office apps and the larger connected app community speak to each other and pass data around in the Office 365 platform. It can do amazing things. And I use it critically with clients regularly, whether it is setting up new team sites, migrating workflows, or finding new ways to enhance the User Experience (UX).

But here’s the rub – pretending that it is friendly for users to casually use and that it does the same thing as SharePoint Designer (SPD) in all faucets of site, IA and workflow is a fool’s errand. It does not.

Just because a user can, doesn’t mean a user actually can.

Here are three common potholes …. er, scenarios in Microsoft Flow .

Flow Cannot Trigger when an Item or Document is Exclusively Modified

Well actually it can . . . But also when the item is created. The trigger action involved is “only when an item/file is created or modified”. This is a significant gap in multiple use cases, especially considering that some items need to be handled differently upon creation (e.g. an approval item, for example, may require different handling procedures). One might argue that items and documents are modified more often than they are created, especially in collaborative or team-based team sites that have working documents.

Workaround: If you’re cool to let the trigger handle the same workflow every time with no difference when an item is created or modified, then go for it. Otherwise you might consider using a Switch Case action to handle different procedures based on conditions that are checked right after the trigger action. That condition may include comparing the Created and Modified dates, and look something like this:

if(equals(triggerBody()?['Created'], triggerBody()?['Modified'],"Yes","No")

And in the Graphical User Interface (GUI), it might look something like this:

Some users have also had gripes about items not being modified until a second item is modified, which is just a straight-up bug.

That expression you see above – get used to it . . .

Flow makes Expression Writing as Easy as Rocket Science

I recently had to build a Flow that sent reminders on the first and fifth days of the month. Seems like a simple procedure, right? Well to perform such a simple procedure, you need to compose outputs that can handle such requests. Easy you say? ehhhhh …..

As a casual user, you’ll quickly find that in building a functional workflow that can pass information around and manipulate data, you’ll soon find yourself dabbling with Data Operations, Scheduling, or Variable handling actions (trial and error, of course). This inevitably leads you to performing some serious Google Fu just to see if you can find anything remotely accurate that resembles the exact expression you’re looking for. What you’ll find is piecemeal examples of Workflow Definition Language on discussion boards and tech communities that may have solutions (a hit or miss expectation). But it’s really a game of roulette; you’re not going to win every time.

Even the Microsoft help documentation is ironically unhelpful. Just look at the expression needed to replace a character in a string that can “easily be accomplished”:

replace(triggerOutputs()['headers']['x-ms-file-name'],'/','_')

Expecting average users to know Workflow Definition Language is a non-starter. It’s basically gibberish to anyone who doesn’t care that much, and expecting them to know this language – much like Excel formulas – is not really understanding the larger business audience that needs to use and support these flows. And the format just gets more complicated the more you have to manipulate the data:

Nested(nested(nested(obnoxiously nested(so nested its a bird egg))))

Even just using today’s date and time means you have to use “utcNow()” and have a basic understanding of ISO 8601 standards for date string formats . This is terribly inefficient for casual Jane and once-in-a-while Joe, especially with a GUI that promotes a “no-code” solution.

Workaround: Sadly, this is an unavoidable pitfall with Flow that probably won’t be going away for a while. One could minimize the use of expressions by handling data inside SharePoint list or library columns (calculated or otherwise), but having to blow out your list or library just to handle expression alternatives seems counter-intuitive. I recommend identifying and training a Flow champion internal to your company that is familiar with Workflow Definition Language and general expression assembly, at least until Flow comes around with a better GUI and UX for expression building. In the meantime, try to use Dynamic content fields where possible.

Flow Does Not Handle the Check-in/Check-out Process Very Well

Checking-in or checking-out items is a very common scenario with SharePoint. The point of it is to reserve rights to editing to one person so others have to wait their turn. This is usually true with working documents, such as proposals, statements of work, or accounting spreadsheets.

Flow does not have an overt action to check-in or check-out. Rather, one would have to utilize the SharePoint REST API and the Send an HTTP Request to SharePoint action in order to get what you need.

You can see where I’m going with this – it is already far more convoluted than this needs to be:

Again, the UX behind this procedure is already beyond what most regularly-skilled people could handle or want to try.

Workaround: Either get familiar with HTTP requests, have your SharePoint developer handle this Flow build (and maintain it), or go back to a workflow designed in SPD. There just is no pretty way to handle this, especially if your workflow has multiple different stages where check-in and check-outs are required multiple times.

Verdict

Microsoft Flow will continue to grow in use, and does have avenues for submitting idea requests. Microsoft also provides a Roadmap for developments and improvements which is very handy to follow. However until multiple features get implemented (an ongoing that takes time and user feedback) I recommend having Flow champions or specialists who can help arbitrate your Flow needs into some thing functional (or have an Office 365 guy like myself show you the ropes).

Unless you want more potholes. But no one wants that. I hope.

Categories
Microsoft Teams Office 365 Project Management SharePoint

Managing projects in a modern world (Part 1)

Last week I wrote a blog post and it got a lot of interest. Just not for the reasons I would of thought. One of the screen shots on the blog post contained an image of dashboard.

Everyone was quite intrigued by this and were wondering what it was. So that is what today is about. This is the first of multiple blog posts showing how you can leverage Azure DevOps, Teams and Project Online to manage projects.

That dashboard is Azure Devops. Microsoft’s developer collaboration tools. It includes repositories(Azure Repos) for code, Kanban boards(Azure Boards), Test Plans(Azure Test Plans) as well as a few other tools targeted to developers.

In our case we are building a brand new intranet and plan to use Azure Boards to manage our workload across a variety teams, Azure Repos to store code for our Custom web parts as well as any scripts we create including site themes and site designs. Last but not least we will use Azure Test Plans to mange the quality of our new intranet.

So how can we setup our environment to ensure:

  • Has a place to communicate
  • Has a place to upload documents
  • Can manage their tasks
  • manage their sprint
  • See the overall project health

Step 1 Setup Azure Devops

  1. Create a new project called Intranet
  2. Create the teams in Azure Devops: “Communications”, “Training”, “Developers”, “Testers”
  3. Define the sprints in our case they are two week long
  4. Assign the sprints to each team
  5. Add your backlog of tasks
  6. Assign tasks to sprints
  7. Add the Delivery Plan extension for Azure DevOps

You will end up with something that looks like this.

Azure DevOps will play the basis for how we manage and plan our tasks. It is more powerful than Planner but can require significantly more effort to setup.

Step 2 Setup Up Teams

  • Create a new Team called Intranet
  • Create four new Channels “Communications”, “Training”, “Developers”, “Testing”
  • * Add a Azure DevOps KanBan board to each Channel aligning the Azure DevOps Teams Kanban to the Microsoft Teams Channel
  • * Configure Azure DevOps connector

* Azure DevOps was called Vistual Studio Team Services. Some of the documentation still references the old name.

All of your Channels should now look something like this

You will also be able have conversations about specific tasks

Step 3 Create a Roadmap

  • Turn on the Project Roadmap feature
  • Create a new Roadmap
  • Create Rows that align to each Azure DevOps Team
  • Add Features from DevOps to track the status and timeline

You will end up with something like the roadmap below.

The next post in this series will go into detail on how to setup Step 1 Azure DevOps. Configuring the iterations, teams and backlogs to work properly with Project and teams.

Categories
Microsoft Teams Office 365

Quick thought on Private Channels in Microsoft Teams

Support for private channels is the number one requested feature on the user voice for Microsoft teams. Over 16000 votes have been made in an effort to get this feature implemented. The more interesting part in my mind is that there seems to be a strong divide between some of the experts of whether or not the feature should be implemented.

There have been a lot of interesting conversations on twitter around this topic.

This got me thinking. There really is no guidance that I have found on how to handle the situation other than create another team and limit the team members. This made sense until I discovered a feature solely on accident.

You can name group chats and pin them

The company I work for has been growing recently and we have implemented team leads for the various practices. I had happened to start a group chat with the team leads and by accident clicked on the little pencil next the people name.

And now low and behold we now have a group chat named team leads. With the core features of a team. Conversations, Files and Tabs.

Now I know what you might be thinking.. The conversation history thing in teams is just a long running list of my recent conversations this teams lead chat will just get lost after awhile.

Luckily enough we have the ability to pin chats.

Now that group chat will always be available at the top of the chat window. When you are done with your project or that group chat you can unpin in and it will be lost into your history to be recovered through search!

So now my take do we need Private Channels?! yeah but we should look to named grouped chats first.

Categories
Office 365 SharePoint Workflows

How to do Workflows in SharePoint: Part 3 – Scheduling a Workflow

This is part 3 in a blog series of basic workflow design using SharePoint Designer and Microsoft Flow. See How to do Workflows in SharePoint: Part 2 – Parallel Actions for the previous entry in this series.

Sometimes its necessary to run a workflow on a continual basis. For example, to check for updates or changes to items in a library, or to do a monthly tally of list items with conditional statuses.

SharePoint Designer

Unfortunately there is no “silver bullet” easy answer to do this – kind of like if a video game only had a hard setting. In SPD there is no overt trigger action or condition for a scheduling scenario. However, crafting a workflow is definitely possible, and it depends on your use cases and objectives for your business process.

Let’s say you want create a workflow that runs every day at 2:00 A.M. (starting tomorrow). The workflow will update a title with a new value .

  1. Create a SharePoint 2013 workflow on the library or list.
  2. Insert a Stage to kick-start the workflow at 2:00 A.M. (use the Pause Until action).
  3. Insert a Stage called “Field Update”, and have a variable continually update with every loop (e.g. variable +1). Then have the Title set to this variable value.
  4. Insert a Stage at the end of the workflow and call it “Timed Loop” or something similar (it’s best practice to name your workflow stages with descriptive titles as accurately as possible).
  5. Insert a Pause for Duration action and have it set to 24 hours.
An example of a scheduled workflow using SharePoint Designer. Thank the heavens for Stage management, otherwise this would be a dozy!

This is a simple example of how one could have a scheduled workflow built with SharePoint Designer. However, it’s not a silver bullet. This workflow needs to be started manually (once), and it will also never technically “end” as it keeps looping for infinity (Loop steps can be used if it only need to loop X number of times, or given certain conditions). I like to think of this as a proverbial MacGyver job, and really only used if SPD is either required or your workflow jam.

Microsoft Flow

Comparatively speaking, building schedule jobs in Microsoft Flow is like taking a warp zone to the end of the game. It’s fantastically easy.

  1. After creating a new Flow, chose the Recurrence trigger as the first item. Set up the recurrence interval, and set the Start time (you’ll have to know the format for your start time, which could be a bit easier, but c’est la vie).
  2. Attach your normal workflow steps.
Use the Recurrence trigger to set a scheduled Flow. Much easier!

Which one is easier: No doubt Microsoft Flow is easier to use for scheduling actions on SharePoint lists. However, there are third-party options for workflows that make the setup of scheduled workflows much easier, such as Nintex Workflows or even work it in with Windows Task Scheduler. But without investing in third-party applications, Microsoft Flow is the clear winner. Happy Scheduled Flowing!

Please visit my blog Ion All the Things for helpful information about SharePoint and Office 365!

Categories
Microsoft Teams Office 365 SharePoint

Where are my features!?!

Microsoft has done a really great job over the last 6 months to bring to light all the hard work they are doing within SharePoint Online and Microsoft Teams. Between the announcements at ignite , various blog posts, twitter users like @anne_michels and @vesajuvonen. There are a ton and I mean a ton of new features coming to teams and SharePoint that we have been asking for since modern sites and teams came into existence.

Now the question is… When are we getting these features? Microsoft has provided a very handy tool called the Microsoft 365 roadmap. You can find it at https://www.microsoft.com/en-us/microsoft-365/. This site will provide you with an overview of the high-level new features the Microsoft is developing and rolling out to Windows 10, Office 365 and EMS.

If you want to see just SharePoint Online and Microsoft team roadmap you are able to filter your results to return only those. https://www.microsoft.com/en-us/microsoft-365/roadmap?filters=Microsoft%20Teams%2CSharePoint. This may sound great however how accurate is the roadmap?

Well judging by the top few results for SharePoint.. Not very accurate. According to the roadmap organizational news was released last month and yet is still in development.

What I have noticed is the release date is when Microsoft will start rolling out the feature to tenants that are set up for targeted releases. Even if you are setup for targeted releases you may still be waiting weeks for the feature to make it to your tenant. If you are on the standard release it will be weeks and possibly months before you get it.

Currently there is no way for you to know when the anything will be released to your tenant. So be wary of what you read and try to stem the excitement and set realistic expectations with your business or clients to when they might be able to start implementing these amazing new features.