I’m currently on an adventure into my first GCC (government) tenant. When I went to https://flow.microsoft.com in this new GCC tenant, I got the following error:
“That didn’t work. Your org doesn’t allow Microsoft Flow. You’ll need to use your personal email to sign up and get access.”
I was in the habit of using that URL for quick access. Turns out the GCC tenant uses a different Flow. If you use the app launcher in your tenant to get there, you’ll notice the correct URL to memorize is https://gov.flow.microsoft.us (or your locality).
If that doesn’t work for you, and you’ve tried to get to Flow through the App Launcher (waffle icon in the upper left of Office online or SharePoint), it could very well be that your organization doesn’t allow Flow.
One major difference I’ve noticed so far is that Flow for government O365 tenants only has around ~85 connectors currently where as Flow for commercial O365 tenants has around ~275 connectors.
The following are the available connectors currently in GCC tenants:
I’m by no means an HTTP request expert, but the requirement of being able to integrate business applications is common and, in this case, important. I took some time to figure out how we could implement Alertus integration and am sharing what worked here.
Alertus is a program we use at LMH Health to push mass-notification desktop and mobile alerts to the organization during times of severe weather, evacuation procedures, or just software downtime.
We use SharePoint as a supplement for “breaking news” by adding a banner to the top of our site during times of urgency. We wanted to integrate Alertus with SharePoint so that when an alert fired, it created a breaking news banner in SharePoint as well. This makes sure users who aren’t on a managed device, such as working from a home computer, are still able to get important news if they happen to be on the intranet.
In times of emergency, it’s best to utilize as many channels as possible to inform your users. Integration of these two services meant there’d be minimal delay in broadcasting a single message through all available channels.
How it works
To send the Alertus alert data to SharePoint, we needed something capable of receiving an HTTP request so Flow came to mind first. Once configured, your Alertus administrators will just send alerts as usual, being sure to include SharePoint in the alert profile.
Create and send an alert in Alertus
Flow receives HTTP request with alert data
Flow creates item in SharePoint list used for breaking news
And, of course, with Flow we could then do any number of actions including additional HTTP actions, sending to email or phone, etc.
Note: This works for SharePoint server and SharePoint online. If using server, you’ll need the on-premises data gateway so that Flow can connect to your environment.
Setting it up
We need to do a few things to get this working:
1. Start creating a Flow (to get the HTTP POST URL) 2. Create the Alertus Service for “SharePoint” 3. Add the Alertus Service “SharePoint” to any Alert profiles for which you want to include SharePoint for distribution 4. Finish the Flow 5. Test
Start creating a Flow
1. Create a new Flow with the When a HTTP request is received trigger
2. Paste the following into the Request Body JSON Schema
Add the service to alert profiles and/or preset alerts (optional)
Your service is now available to be added to alert profiles (pre-selected sets of services to notify under certain circumstances, such as an evacuation) and preset alerts (customized alerts and notification groups).
You could, alternatively, choose not to include it in anything preset and only use it manually upon creation/configuration of an alert.
Finish the Flow
1. Go back to the Flow you started.
2. Add a HTTP Response step and make sure the Status Code is set to 200. This lets Alertus know the request was received and prevents an error from occurring on the Alertus side.
3. Add a SharePoint: Create item step and connect to the site and list for which you want to create an item from the alert details.
From Alertus, do a Custom Activation of a test message just for the SharePoint service/delivery method.
In the example below, I also threw in an email alert as a step but you can see the whole process in Flow’s run history still only took 2 seconds.
Check in SharePoint that the item was added. In my case, we use custom script to display the most recent list item as an active alert.
Additional Configuration (optional)
Now that you’ve done the basics, you may wish to make adjustments.
I currently work in healthcare and have run into situations with users where some data files are exported from software solutions in .rtf or .txt format only. To improve the user experience once these files are dropped into SharePoint, we can convert any .rtf file automatically to .doc.
When RTF files are opened in the browser, the option to “Edit in browser” is grayed out since the file type isn’t compatible with that functionality.
Okay, but why .doc and not .docx?
Unfortunately, we can’t convert from RTF to DOCX without the use of Azure functions (thanks, Pieter Veenstra for that info). But if we can at least convert it to DOC for users, they’ll get the “Edit in Browser” option which will then prompt them to convert the file to DOCX in two clicks (Convert –> Edit). Then we finally have a .docx file.
How to auto-convert .rtf to .doc using Flow
Prepping the document library
First, since we don’t want anything to happen to files that aren’t .rtf, we’ll need to create a column in our list to display “extension.” Then we’ll use SharePoint Designer to populate the extension and Title fields whenever an item is added or changed. Flow can’t use file name fields, so we’ll set title to match name.
Library settings –> Add column –> Single line of text (name it extension and save)
Create a SharePoint Designer workflow (2010 or 2013 – doesn’t matter for this purpose) that triggers on creation or change
Set extension to file type, and title to name
Publish the workflow. Now when a .rtf file is dropped into the library, it will set “rtf” in the extension column and set the blank Title field to the same as “Name” so that we can use it in Flow.
Create the flow (.rtf to .doc)
Trigger and condition
Create a new flow with the trigger “When a file is created or modified (properties only)” and select (or enter) your site and library name.
Create a condition step that checks if “extension” is equal to rtf
“If yes” box
Now we’ll create four steps in our “if yes” box. Configure each as pictured below, careful with file paths not to include the whole URL – just the relative path beginning something like /Shared Documents/…
Get file content using path (gets contents of the .rtf file)
Create file (creates new .doc file using the .rtf contents)
Get file metadata using path (gets original .rtf file)
Delete file (deletes original .rtf file to avoid confusion)
Expand the flow (optional – delete .doc if .docx created)
If no box (optional)
Users can now easily convert .doc to .docx in two clicks. But it leaves the original file (.doc) behind which can be confusing. So we can create steps in our Flow to delete the .doc file IF a .docx by the same name is created.
In the no box, we’re going to create another condition step to check if the extension equals .docx.
If yes, use a “Get file metadata using path” step to get any file by the same name from that library (use the “Title” dynamic content from the trigger step and add a .doc). Then in your “delete file” step, simply use the ID from the get metadata step.
Now when a user converts a .doc to a .docx file in the browser, your Flow will delete the .doc that’s left behind. Note that there will be a delay.
SharePoint Designer has to wait until you’re out of the editor to reassign the “extension” field to .docx
Flow has to wait for SharePoint Designer to make that change so that it triggers appropriately
While this is certainly not an ideal workaround, it may be the best you’re able to do with the resources on hand. Not everyone has Azure, or developers, premium add-ins/vendors or the budgets for such things. Best of luck!
Here’s a view of the full flow, highlighting which steps I’m pulling dynamic content from. Click to enlarge.
I recently tried to use the “Populate a Microsoft Word template” step in Microsoft Flow (currently in preview) to insert text into content controls, but ran into the error above.
The selected file doesn’t contain template elements.
The issue was that my content controls in the template were of rich text format and date. This preview step currently only supports plain text, combo box, and dropdown content controls.
So for all of your text fields, make sure you use the correct (plain text) control:
Once I replaced my rich text content controls with plain text, the content controls showed up in Flow as options for populating:
To keep this organized, I recommend giving each content control a title (in its properties) so you can easily identify each field when in Flow (select content control, then “Properties” from developer tab).
Running a flow on every weekday or certain weekdays
Rather than using Flow’s recurrence trigger with a frequency of “days” combined with switch cases/conditions, you can actually just use the “Week” frequency time unit and select days from a drop-down with no further effort required.
For weekdays, just select Monday-Friday. Or if you just want MWF, you could do that as well.
A techie way to do it
The alternative is to initialize a variable such as
with a switch case to determine if today’s date is, in fact, between 0 (Sunday) and 7 (Saturday).
Compare today’s date with holiday calendar
So that being said, the limitation of using the “Week” frequency for weekdays might be if you want to prevent it from running on holidays when nobody is in the office even if it is, in fact, a Monday. In that case, you could add a condition that checks to see if @utcNow() matches items from a SharePoint list (holiday calendar?).
Initialize variable (integer) value 0
Get items from SP list (calendar)
You could add an ODATA filter in the Get items step to only filter to items with Start times greater than today
Apply to each –> IF utcNow()=SP item, THEN increment variable by 1, ELSE nothing
Use the expression builder to formatDateTime both dates to be sure they match when being compared
IF variable is greater than 0, do nothing (don’t run), else run the rest of the Flow
Say goodbye to nested if/then statements in Flow taking up fourteen monitor widths. Flow now supports nested if/then statements all in a single, vertical step. For example, the following requires that WeekDayNum is not 0 or 7 AND requires that either Bob or Nate created the item. And I didn’t have to scroll horizontally at all to see it!
The next time you use a condition control, enjoy rethinking how you might structure your various requirements for conditions to be met.
To get started, just add a condition control as you normally would:
Have a holiday party coming up? Staff meeting you want to spice up? Send a form out to attendees in advance to collect adjectives, nouns and verbs and showcase your favorite completed libs at your meeting. Or just do it for fun – because work should be fun. Go ahead and try my test version to see for yourself!
Make your own (short version)
Create a form at forms.office.com with questions for adjectives, nouns, etc. Be sure to collect email addresses as well so you can send participants the completed mad lib. You can use my template
Now select your existing connections for Forms and Outlook.
If you don’t already have an Outlook and/or Forms connection, you’ll need to click “Create new” and add them, then come back to connect them in the previous step. You can also modify the Flow to use Gmail or HTML emails instead. If you use HTML emails, however, they’re more likely to go to spam or be blocked since they come from a well-known “marketing” address rather than an individual (yourself).
Once you’ve set your connections, click “Import” (you should no longer see red x’s next to the connections under “Related resources”)
Once imported, click “Open flow”
Check every step, especially the “Forms” step to set the correct Form connection, and correct other fields like “email body” variables as needed.
Note: My Flow template has multiple mad lib options. If you just have one, you don’t need the “switch” at all (which is really just a conditional statement).
When finished, click “Save” in the upper right, go to your flows and make sure it’s “On”.
Finally, copy the “Share” URL from your form and send it to people to complete! Have fun!
Sometimes you need the number of items in a list or library for reporting, notifications, or just curiosity. The following details three methods you can use to get the count of items for different purposes.
Use Microsoft Flow to get the number of items and use in various ways
Add “count” to the top of a classic view SharePoint list for all to see
Quickly find “count” just for your information in site contents or list settings
Perhaps one of the most useful automated processes out there is the ability to do approval processes. We fortunately have two tools on-prem or online that allows us to perform this action. Microsoft Flow offers some incredible connectivity between services (like approve a Tweet and post it, approve something from Google Docs and have it moved to SharePoint, etc.), but the approval process itself is very simple at this point and doesn’t offer some of the more robust features and customization options we get in SharePoint Designer 2013 approval processes.
I also will use both tools in the same business process occasionally, because they both have unique strengths.
But which do you use for approvals?
The quick answer to the question is: Use Flow for simple approvals, or approvals that involve multiple sites or external services. Use SPD for more complicated processes and customization options for approvals that involve a single site.