Category Archives: Power Platform

photo of people putting their hands up

Sponsor M365 Twin Cities – We need you.

Community events: community run, community attended, community benefits. These events are fantastic learning and networking opportunities, but they can’t happen without the support of sponsors.

Our event

  • We’ve been running successful local events for over 15 yrs.
  • The Twin Cities is an established and engaged Microsoft community

Our next M365 Twin Cities event is on November 11, 2023. Aside from the recent COVID hiatus, we’ve been running successful events since 2008 – covering topics from SharePoint through the range of M365 products and anything that integrates with the platform including Azure, Power Platform, 3rd party products and services, and more.

Our audience includes folks from the Twin Cities metro area and across Minnesota, as well as lots of folks that come from across the upper Midwest and Canada. If you’re from Minnesota, you’re already familiar with the business and organizational landscape here, but it includes a rich variety of Fortune 500 companies, some of the largest private companies (including the largest) in the world, and government folks from all levels.

Pre-COVID we were getting 600-700 registrations (which translate to email reachable folks) and 300-400 onsite. That’s a typical registration drop off, but wonderful attendance. Our first event back post-COVID had not quite 400 registrations and over 200 people on-site. We were content with these numbers as a return event but are working to grow towards our previous numbers – though a lot has obviously changed in the past few years.

People were excited to be back in-person. Our sponsors in January were thrilled to be able to talk to folks again. There was a lot of excitement in the community.

We’re aiming to build on that.

Sponsorship Levels

We’ve got a handful of different sponsorship levels, but we’re mainly aiming for Company Sponsors and Track Sponsors where we can. If these don’t fit, let me know and we can look at other options that might fit.

Take a peek at our sponsor info sheet here.

We’ve got room for 6 5 track sponsors – who also get to present a session as part of that track.
Tracks include: Viva, Teams, AI/Copilot, Power BI, Power Platform, and Development

The best opportunities are face-to-face – being on-site for the actual event, meeting attendees, and talking about your products and services firsthand.

Sponsors have tables set up in a wide-open space where attendees register and food is served – so attendees will know where you are and have reasons to hang around. We’ll also have plenty of time between sessions for you to visit with attendees.

Where does the money go?

Funds from sponsors go primarily to pay for the venue and food costs. The rest of the budget is for various operational expenses (insurance, printing costs, etc.) and thanking our speakers who volunteer their time and expenses to participate (speaker dinner, etc.). We don’t make money doing this.

Other Notes

Our local (‘ish) community is blessed to be large and involved. We have multiple larger events that happen throughout the year and plenty of smaller more niche groups as well. As part of Microsoft’s MGCI effort – we’re working to expand where we can, strengthen where we’re able, and aim to support users at all levels through community events.

If you’d like to talk with organizers and community members, join us for our M365TC #CoffeeCrew meetups that happen more frequently throughout the year. We try to move around the metro area so more people can participate easily. Join our mailing group.

Thank you, thank you, thank you to all the sponsors we’ve had over the years. Please consider returning this Fall. New folks also very welcome to join the club. šŸ™‚

Quick Links

man showing distress

Cloud Frustration

Am I alone? Probably not.

One of the pros and cons that come with cloud-based technologies is the speed with which things change. On the pro side, it usually means we’re getting more features, more capabilities, and more potential for business value and/or productivity gains – usually at a faster pace than were released pre-cloud. On the con side, we have the challenges of keeping up: Keeping up with how to use new features, updates with how to use existing features, how to navigate changing interfaces, and the always fun deprecation of features. Finally, there are ongoing challenges to find accurate help as it’s challenging for both platform owners and training materials creators to keep up with production rollouts.

As users at all levels, we’re faced with questions – and often the same ones over and over…

  • Is something wrong with my tenant/instance?
  • Is there something wrong with my environment or configuration that doesn’t match current documentation?
  • Is something wrong with the documentation? Is documentation current?
  • Am I doing something wrong? (One could argue this should be listed first…)

At the moment, I’m working on presentation updates, screen shots, etc. and running into all sorts of weirdness, which is frustrating. I want to get behind Dataverse. I really do. Running into this stuff every time I step away and then come back, I seem to hit this. I can’t be the only one. I fear this same issue is too common for folks new to the platform which are usually my target audience. Hopefully Microsoft can clean it up a bit.

grrr…

woman holding book with blank pages

Add Another Screen to your Custom List Form with Power Apps

Note: This is more of an “idea that might be useful” than a “how-to” post.

Add a Second Screen… for Governance?

Adding a second screen is not rocket science. It’s super easy as you’ll see below. Navigating between two screens is just as easy. In most cases, you’re adding new screens as a part of a larger app with forms, views, and all sorts of wonderful functionality. In this case, we’re merely adding a second screen to inform the user, to provide a space for information not usually made available otherwise.

When customizing a list form in Microsoft Lists or SharePoint, Power Apps creates a special app to replace the default list forms. What makes it special from a Power Apps perspective is that it doesn’t show up in the Power Apps “Apps” listing. It is only available as a part of the list that it’s created for. It also includes a special component called “SharePointIntegration”. I’m not digging into that component in this post, but it’s used to control which Power Apps forms are stitched together with which list Actions.

The vast majority of apps I’ve seen extending lists do a one-to-one replacement of a custom Power App app for the default list forms. It makes sense, that’s the scope and context folks are thinking in at the time. What we’re talking about here merely extends that concept with a little more user-friendliness we haven’t been able to easily add before Power Apps was introduced.

The Quick Steps

  1. If you haven’t already, create the custom form
  2. Once in Power Apps, add a New screen. “FormScreen1” is the default screen created by the app wizard. If you haven’t added any screens to the app, the new one will be “Screen1”.
  3. On the new form, add a Text Label (see below for a suggested layout)
    • Add whatever text you’d like to the control. This is the super helpful text for the user to help them be successful using your form.
  4. On the new form, add a Button
    • Set the button Text to “Back” or whatever makes sense for you.
    • For the button OnSelect, set the formula value to “Navigate(FormScreen1)” – back to the original screen.
  5. On the original screen, add a Button
    Let your UX guidelines dictate where the button should be located on the screen.
    • For the button OnSelect, set the formula value to “Navigate(Screen1)” – navigate to the new screen.
    • Set the button text to “Info”, “More”, “About”, or whatever makes sense to your users.

Your new (second) screen might look something like this – as an extremely simple example. There’s obviously a LOT more you could do with this. The second screen merely unlocks the possibilities without cluttering up your custom form.

Your first screen might look similar to this, but likely with more fields displayed on the form. The key difference we’re adding here is the button that takes the user to the second screen. Check with your UX folks on how to properly position it.

It might be interesting to consider adding a second screen to the app and having it presented to the user *first* – along the lines of a disclaimer the user must accept before continuing. You’d likely need to tweak the SharePointIntegration control to get that working the way you want it. Just a thought.

Potential Uses

There are lots of potential uses here. Just as many as most other Power Apps as the customized list forms really are fully functional apps. The context, however, being part of a list – will likely drive how additional pages might be used.

  • Content and information sharing (as done here)
    • Who to contact with questions
    • Instructions for the form
  • Visibility to metrics about the list, open items, how fast requests are closed…
  • Additional functionality you don’t want to mix with the main form
  • Visibility to data from another data source
  • … and lots of other things

References

Note: Power Apps Week

So apparently this is Power Apps Week for followers of the Power Hype Machine šŸ˜‰ as #PowerAddicts get ready for the Power Platform Conference this Fall. I don’t know exactly what that means, but I’m willing to bet David Warner can tell you.

In celebration, I’ll post a few short posts about Power Apps – most, or all, highlighting quick and easy ways to extend M365 capabilities for folks getting their feet wet with Power Apps. Enjoy!

high angle photo of robot

Quick Thoughts: Microsoft Copilot and SaaS Pricing

Microsoft made some pricing announcements today at their Inspire conference that included a $30 charge per person per month for M365 Copilot (AI) licensing. First impression? That’s pretty steep… But let’s dig in a bit.

Not everyone is going to need it (at first).

It’s pretty easy to justify when you know your value per hour and can calculate how much time you’ll save using the new features of Copilot. In many cases it’ll be easy to justify $30 a month cost when you can measure savings directly: “Hey, that thing takes 15 minutes, I do it 10 times a month”… Done.

Other use cases likely won’t be that straightforward, but we’ll see how they manifest.

With this, I’ve already seen it come up in multiple conversations and threads… Know your users and review your use cases before licensing. At this price point, most companies aren’t going to license everyone – at least right away. And there will likely be other added licenses in the mix as well. Don’t expect the Microsoft licensing topic to get any less confusing in the near future (unless maybe we can use AI to help sort out your licensing use cases… Copilot for Licensing?).

SaaS pricing is hard

A little background. SaaS pricing is a challenge. Dig in a little bit and you’ll see plenty of threads talking about how hard it is for companies (especially startups) to price their products. M365, Power Platform, and the rest of the cloud services out there ultimately are SaaS offerings (Software as a Service) – though it may be a bit of a simplification. Microsoft and other big players in the space at least had some historical product pricing to start from that (may or may not directly) lead to subscription pricing used for SaaS.

The nature of cloud-based apps – as we’ve been talking about for as long as Microsoft has been in the cloud – is that we get regular, rapid, incremental updates. We get new features and changes basically weekly – for good or bad. (“Bad” only really for trainers and folks trying to keep up with it all…) This replaces the old 3-year-cycle of product releases from Microsoft where it was much easier to justify a price increase. You could easily put together the list of new and improved features vs. the last product (now 3 years old). Now, things move so fast it’s challenging to keep up and get a high-level view of increased value over time – it’s almost an expectation.

Stepping back a bit, as initial moves to the cloud resolved, it became fairly easy for most organizations to rationalize M365 pricing. Now, years later, not much (relatively speaking) has changed in the pricing, but much has changed with the offering and capabilities. Some organizations have moved up from one level to another, but many have also stayed with the same licensing since they first adopted M365.

Microsoft needs (or at least wants) new revenue streams (oh look, a stock price jump at the time I published this) and it’s harder to justify price increases when you’re incrementally updating your software – harder for end users to see. But incremental (smaller, but more often) updates are the norm with cloud-based software. Vendors then are forced to rebrand and offer bigger bangs to justify step ups in cost. Enter Copilot and today’s licensing announcements. Viva is in this same boat. And don’t forget the recent “Entra” branding for authentication and ID services – just wait.

Power Platform (as part of the Dynamics/D365 product group) has been working on this challenge for a while now. Initial feature offerings were heavily in the M365 integration space – leveraging tens of millions of users. They got the traction they were looking for and at the same time were building a ravenous (#PowerAddicts) community around it to pull the movement ahead even more. But they’ve been seemingly challenged to get a mass shift to newly licensed products and offerings. It does seem to be shifting, but more slowly than (I expect) they’d like. As Power Apps and its sibling products grow and Dataverse finds its space in the storage area – more folks are realizing the business value and making the move to additional licensing.

Cost of ownership

There’s more than the $X/month/user. There’s also the cost of managing and training – after you’ve spent time and money evaluating the technology. Don’t overlook that. Give plenty of time for architecture folks to review functionality, security folks to review risk, your tenant admins time to ramp up, and trainers time to produce the materials you’ll need. It wouldn’t shock me if early on we see a “you need to take this training before we’ll buy this feature for you” sort of approach.

Finally, $30 a month is a baseline. Many large enterprises are able to negotiate pricing, so keep that in mind. Sorry SMB. šŸ™

Other offerings

Copilot is a consistent brand, but it’s not one single cost. There will be a collection of products across the Microsoft stack and licensing will be different and separate for each. Copilot for Business (from Microsoft-owned GitHub) is a nice example since it’s so different from M365 offerings. It’s still “Copilot” but a very different offering for developers rather than business users (though… there’s the “maker” argument for another day. šŸ™‚ )

Bottom line is, start thinking about Copilot licensing across the stack. There will likely be additional offerings. We already know about several in the flurry of announcements.

Not everything falls under “Copilot” either. Teams Premium, while feeling like a bit of an overlap with Copilot, has its own licensing and capabilities. You may need one, or the other, or both – hence the importance of evaluating your environment and users before diving in.

Security

Microsoft is all over the security concerns. ChatGPT and others have highlighted the risk of playing with AI in the public domain and its collection of user data to learn and train itself.

Microsoft is working overtime to let folks how data is used, how their version of AI is being built, and how common components (LLM) are kept separate from organizational data (Microsoft Graph). There’s obviously going to be some risk with data in the cloud, but efforts and intention are in place. Each organization will need to evaluate the risks for themselves. As with other technologies, certain areas will be slower to adopt due to risk. We’ll keep hearing more from Microsoft and the community on this.

Recap

As the capabilities of software increase – so will the costs. This isn’t a bad thing. Microsoft and their industry peers are adding new capabilities far faster than they have in the past and many of them add great value for their users.

The challenge to us as consumers again falls into keeping up with the changes. As much as these new capabilities benefit us, we need to invest time and effort to learn how to best use them and reap the benefits.

It’s easy to get sucked into the hype. There’s a lot of cool stuff here. Just temper your expectations a bit to not get too frustrated or disappointed. We’re early in the AI application cycle. It’s going to take time to mature and polish implementation. Exciting times.

Other links

M365 Twin Cities Winter 2023 by the Numbers

Background

Our first post-COVID M365 “Saturday” Twin Cities event was on January 21, 2023. Not our normal time of year, but we (the organizing committee, attendees, sponsors, and speakers) have been chomping at the bit to get back in-person so here we are. šŸ™‚ Normally, we host our events twice a year – in the Spring and Fall. Our schedule is primarily dictated by living in the upper Midwest, where Winter can be harsh, and Summer is dedicated to being outside. No one wants to give up summer weekends. So that leaves us with the “shoulder seasons” where we have plenty of other variables to deal with, but we’ve historically had success with. However, we wanted to get back as soon as possible – so here we are. All things considered; I think the event went off well for all involved.

Coming back post-COVID for this event had its own new variables to work with. Specific to the pandemic, were people willing to come back to an in-person event? We knew there were some vocal and passionate folks that would but weren’t sure we’d get back to our normal volume on the first event back. We definitely weren’t as large as we’ve been, but still had successful numbers, I think.

I’m pretty sure there was also a bit of Zoom/Online meeting fatigue. People just want to be back in-person. Me included. That part probably helped us a bit.

Scheduling in the middle of a Minnesota Winter would throw some challenges at us. Weather could have a huge impact. Folks may not want to travel to the event from outside the metro. It can get *really* cold this time of year. Thankfully the day of, we lucked out with both moderate temperatures and no snow. But we likely lost a few sponsors, speakers, and attendees that didn’t plan to attend even with the chance of having to travel in adverse conditions.

For attendees, registering for the event and deciding at the last minute to attend or not isn’t a big deal (for them – it stinks for organizers). They can sign up but not come if the weather turned. For speakers, we figured we’d lean on local folks where we could, but not limit our selection, to local and regional speakers that would be less likely to need to cancel. Signing sponsors for the event seemed to take the biggest hit as we usually have a mix of local, regional, and national companies – even international from time to time. For this event most sponsors ended up being local companies with only 2 coming from out of state. We love *all* our sponsors, but it was unique to have such a local focus.

Numbers

  • 393 Registered attendees
  • 11 sponsors with 9 on-site and 2 that were not
  • 7 on-site sponsors were local companies. 2 were from out of state
  • 25-30 folks staffing vendor booths
  • 130 session submissions from 59 speakers
  • 1 new venue
  • 10 rooms
  • 4 session slots in the schedule (we’ve done up to 5, letting folks out earlier)
  • 43 speakers
    • 16 current or former MVPs
    • 5 Microsoft employees
    • 6 Canadians
    • 6 new speakers
  • 38 sessions
    • 27 M365 sessions
    • 10 Power Platform sessions
    • 5 Viva sessions
    • 2 JSON sessions (whoa, really?)
  • 0 changes to the schedule after printing
  • 30 dozen donuts (we had plenty)
  • 88 pizzas (plus 30 salads)
  • 13,946 steps (Wes)

Some tweaking to do here and there, but we’ll be back. Targeting Fall 2023. As soon as we have a date, we’ll let you know.

Thanks to everyone involved for a wonderful event and return to in-person events!

M365TC Sponsors!! – Thank you

While I’m currently talking and thinking about sponsors for our #M365TC event later this week, the following applies to many/most events in our community – even the paid events.

We can’t do this without you. Yes, it’s a somewhat symbiotic relationship between event organizers, sponsors, attendees, and even speakers. Sponsors have another marketing path and sales gets the opportunity to meet with potential clients and customers. We, the event organizers get to put on our event and reach attendees with our knowledge, experience, news – aka: training.

Hopefully it’s mutually beneficial. To what degree of success, is up to many variables, but those of us organizing events do focus on making it a valuable experience for all. Like many things, it’s a bit of a balancing game for everyone involved – finding the right exposure for all without breaking trust with others.

As an organizer of a free community event, we’re even more dependent on sponsors to bring these events to life and we do very much appreciate your investment in time and money.

For the #M365TC – M365 Twin Cities Winter 2023 event, we had a shorter prep timeline than we usually do and scheduled our “back to in-person” event a bit off of our usual “shoulder season” in Minnesota dates – but sponsors still came through. I assume your sales and marketing folks have also been chomping at the bit to some degree to return to in-person opportunities. While there has been a plethora of virtual event opportunities, it’s just not the same for networking and community development.

Our #M365TC Winter 2023 sponsors:

I could put a blurb about each but wouldn’t do them justice – so please click on each, check them out, and be sure to visit with them on Saturday (no really, have a chat – more than just getting their bingo sticker…). We’ve got a few new folks in addition to companies that have been regular and ongoing supporters. While we have a few out-of-town companies, this event will be very local-focused – I suspect a combination of shorter duration planning, MN winters, being so close to the start of the year, and companies getting back up to speed post-COVID.

So, say “Hello”, visit with them on Saturday, and thank them for making our event possible!

If you haven’t registered yet, here’s the link:
M365 Twin Cities – Winter 2023 Tickets, Sat, Jan 21, 2023 at 8:00 AM | Eventbrite

Check out the schedule (including track sponsor and ISV sponsor sessions):
Community Days | M365 Twin Cities

Thank you sponsors!

M365 Twin Cities #M365TC

What is M365 Twin Cities?

M365TC is and organization and event built on the foundation of 10+ years of SharePoint Saturday events. M365TC – like SharePoint Saturdays, SQL Saturdays, and Code Camps, and others – is a free one-day in-person training event put on and supported by the community. Organized by volunteers. Paid for by sponsors. With sessions presented by industry, platform, and community experts in their fields. It’s a ton of great learning potential for you as an individual and for your organization as a whole.

It’s an opportunity for attendees to get free training regardless of organizational budgets. It’s an opportunity for folks to exercise their personal initiative to learn and explore. It’s an opportunity for new speakers to give presenting a try and experienced speakers opportunities to share their knowledge. It’s a mentoring opportunity. It’s a touch point for local service providers and broader service and product vendors to connect with local folks as customers and partners. It’s a networking event to connect with peers in the metro and region.

We usually have two events per year – in the Spring and Fall – that support the rapidly changing technology we talk about. If we have a successful January 2023 event, we’ll likely return to that cadence starting in the Fall of 2023.

By the numbers

For the Saturday January 21, 2023 event, we have:

Why M365?

“M365” is a shift from “SharePoint” as the Microsoft ecosystem shifted, morphed, and expanded. Our SharePoint Saturday events had SharePoint at the center but covered plenty of tangential topics where technology and skill integrations happened. Now, under the M365 umbrella, SharePoint is still a foundational piece but is complemented by a suite of related products and platforms – led now by Teams and working along other areas such as the Power Platform and Azure to name just a few. “M365” provides for the broader scope required to attract attendees, speakers, and sponsors.

Our event here in Minnesota has historically been one of the larger events in the country, though the pandemic took a bite out of our momentum. It’ll take a little time to work back to the events we’ve had in the past – assuming the community still demands them. So please let us know if you are interested in what we’re doing by registering to attend, by spreading the word to co-workers and peers, by letting your organizational leadership and vendors know that we need sponsors to put these events on.

Links

Modern SharePoint Page Approval with Power Automate: Message Optional

Overview

The current iteration of page approvals in SharePoint Online using Modern pages and news is handled by Power Automate – and the integration is pretty slick. Kudos to the Microsoft teams responsible for it (SharePoint + Power Automate).

Approval Flow

Once an approval flow has been configured and a user submits a page, the user is prompted by the following panel:

Approval Panel

Note here that the Message field is required. In many cases, this is fine. There are some circumstances however where site owners may want to make the Message field optional.

The Quick Steps

Without getting into all the nitty gritty, here’s how it’s done (at least one approach):

  1. Go into Power Automate and open the approval flow
  2. On the first step of the flow, expand the ā€œFor a selected itemā€ step
  3. For the ā€œMessageā€ property, select the menu (three dots) button and select ā€œMake the field optionalā€)
    Flow Field Optional
  4. Expand the scope (mine is called ā€œScope 2ā€), and the ā€œStart and approvalā€ step
    Approval Details
  5. Click on the ā€œDetailsā€ expression (circled above) – which opens the panel for updates
    Approval Expression
  6. Update the expression to include a question mark (ā€œ?ā€) after ā€œtriggerBody()ā€ and before ā€œ[ā€˜text’]ā€.
    Expression Text
  7. Click ā€œUpdateā€ (see above)
  8. Save the flow, and test

When an approval is submitted, the Message field in the panel should now show as ā€œnot requiredā€ – no asterisk should be visible. The panel should allow users to leave the field blank and ā€œSubmitā€ the page for approval without error.

Not Required

The Details

One example I’ve seen where this is applicable is a site where there is a content management team that does a significant amount of the page creation, but also has folks outside the normal content team that submit content from time to time. Approval is needed. When the main content team is creating pages – they want to get through it and keep moving. The Message field turns into a ā€œjunkā€ field, they keyboard smash or put some useless text in the field in order to submit the page. This is irritating for users and inserts bad/silly data into the system. Rather than remove the field outright, we’d still like to have it available when needed – by folks outside the team, for example.  

Let’s review how this works. Open up the flow. Then expand the ā€œFor a selected itemā€ step (Step 3 above).

Changing the Message field to ā€œMake the field optionalā€ seems pretty straight-forward. It will even work for some flows. But by itself this change will not work for all scenarios. The flow will fail when the Message field is left blank because later in the flow a step attempts to use the text IN the field. When that text is blank, the flow fails. 

If you run/test the flow with no Message text, you can open the failed instance of the flow to see where the error occurred. The scope will show an indication that something is wrong. When you expand the scope you can see the error on the ā€œStart an approvalā€ step. This flow fail is also followed up by a ā€œSomething went wrongā€¦ā€  email from Microsoft Flow.

Broken Flow

Looking at the error message, there’s something wrong with ā€˜text’, which looks like it’s pointing back to the Message field we changed.

If we test run the flow again, and put text in the message, the flow works fine.

Looking at steps 4-6 above, you can see where the additional change needs to be made – adding a question mark to the expression. This syntax (the ā€œ?ā€) allows the expression to evaluate the Message field – [ā€˜text’] – as Null when it is empty. Before we added the question mark the expression didn’t know what to do with a blank Message field and failed the flow. 

Note: I haven’t been able to find official documentation anywhere on what the ā€œ?ā€ syntax is within expressions, how to use it, when to use it, etc. Maybe my search skills are falling off. If you find something from Microsoft, let me know and I’ll update this post and references for it. Until then I’ll include what I did find below.

References

Paul Stork has the most information I’ve seen on the use of the question mark (?)  thus far as seen in this community post:
Solved: Use of Question Mark(?) in expressions – Power Platform Community (microsoft.com) 

Another blog that references the question mark with regards to a Power Automate expression
Power Automate – how do we check if a property exists in the object? | It Ain’t Boring (itaintboring.com)

Modern SharePoint + Power Automate Approval with Select User Auto-Approve

Background

I’m still a Power Automate newb. Lots of you have been working with these for years now. I’m legit curious what silly things I’m doing, what other approach I should be taking, what best practices to integrate, etc.

So let me have it… in the comments here, in Twitter, whatever. I’m waiting.

Overview

Power Automate backed approval flows for a SharePoint intranet site on the Site Pages library. Pretty slick and polished as a replacement for SharePoint workflows and nice template to look at for Automate newbs. Kudos Microsoft folks.

Now, however, I’d like to have approvals on my site, but also have them bypassed for certain users – folks that own the site, do the majority of content generation, etc. I still want the process in place because I have other content contributors that I still want to manage.

So, we have an out of the box page approval flow that I want to tweak.

It sounds potentially easy, but we all know better. There will be some pain. And there is. But we can work with it.

What I did

The out of box page approval flow looks as follows:
OOB Approval Flow

With the exception of a few new variables I added, all changes were limited to the ā€œScope 2ā€ step. When I was finished, the top level view looked like this:
(Yes, I should be consistent with my naming – I’ll clean that up)

Final Approval Flow

I’ll walk through the variables shown above as we go.

Who Gets Auto-Approved

This is a topic that could be debated in terms of the best way to manage the list or folks that get auto-approved. Should you use a list, an Azure Group, a SharePoint Group, or something else? For simplicity’s sake, I’m going with a list. It’s the easiest to maintain visibility and control at the team level without needing to work with a security team every time we need to change a group. I’m also pretty confident that Automate can get to the data I need in a list. I’m not yet sure about the other approaches. Obviously a decision like this may vary org to org. For this example, we’re using a list.

I created a SharePoint list and called it ā€œAutoApproveNewsā€. Yep, I’m old school and don’t like spaces in my list names. I’m not messing with the Title field right now, so just left it alone and required. It’ll need to be filled with rubbish for now. The only column I added to the list was AutoApproved as a Person or Group field displaying the Name. Yes, the name might not be unique… so something to look at later to seal the process up a bit more. Using the email address is probably a nicer, more unique, approach but I haven’t tried that variation yet.

I didn’t do anything special with permissions for the list while validating this concept, but there are a few ground rules you’d likely want to follow.

  • Make sure whatever connection you’re using to SharePoint from Automate has access to the list.
  • Lock down the list to the folks that manage content so random users can’t just add themselves.
  • I also found it useful to remove the list from navigation. Don’t like cluttering things up unnecessarily.

First note on variables

The approach I’m using is that I’m going to get the name of the person submitting the news article, iterate through my list of folks that get auto-approved, and trip a flag that indicates I found a match.

So with that, AutoApproveFlag is created and set to false.

NewsSubmitter is set to the name of the person that added the new news article or page from the ā€œFor a selected itemā€ step.
Submit Variable

The other variables are used in the text of the email, so you can fill in whatever fits for you. Here’s what I did for now:
Variable Initialize

You’ll see where they fit in down below.

New Steps

Using as much of the default flow as possible.

  1. After the ā€œSet content approval status – Pendingā€ add a step to ā€œget items fromā€ a SharePoint list and point it to the AutoApprovedNews list we just created.
  2. Add a ā€œApply to eachā€ step to iterate through the SharePoint list data.
    Add a condition where if a match (comparing the AutoApproved field to the NewsSubmitter variable) is found, set the AutoApproveFlag variable to true.
  3. Add a Condition step. Test for the value of variable AutoApproveFlag – if not true (no matches found), then start the flow approval. I added the condition step and then dragged the existing ā€œStart an approvalā€ step into the No condition.

    Note: Because there will be some conditions where the Approval doesn’t exist, I need to change some of the email steps later in the flow because they use properties of the Approval in their email content – hence the other two variables that were created: strApprover and strComment. (I should be consistent with variable naming, started thinking about that after I was underway – cleanup for later)

  4. The default flow has a Condition step that waits for the approval response. I didn’t see a way to change the condition the way I wanted, so I created a new Condition step to check for an approval response OR check if the AutoApprovedFlag variable was set to true.

    Note: DO NOT delete the original Condition step until after #5 below and you’ve moved/copied the steps from the original to the replacement.

    Original:
    Original approval

    Replacement:
    New Approval

  5. Move or copy the steps in the yes and no conditions to the new condition step (#4 above). I was able to drag and drop some, but also needed to use the preview functionality of copying steps to the clipboard and then used the ā€œAdd an actionā€ feature to add from clipboard.
  6. Now you can delete the original Condition you just copied the steps from.
  7. In order to clean up the emails sent later, I needed to replace Approval properties in the email content with variables that would work both when approvals were automatic and manual. In order to make these work, I needed to add a Condition step and Set Variable steps.

    With new Condition rules, moved steps, and an additional Condition step, the flow looks like this:
    After Moves

    Setting the variables as follows:
    Set Approval Vars

  8. Finally, we need to update the email content to replace the Approval properties with variables. Only the ā€œSend email notificationā€ steps (both ā€œYesā€ and ā€œNoā€ outcomes) under the scheduling condition (ā€œCheck if content has been schedule or notā€) need to be updated.

    These are the ones you’re changing:
    Which email steps

    From this:
    TextBefore

    To this:
    TextVariables

  9. After we’re all done, Scope 2 looks like this:
    Scope2

I think that’s everything. I’ll update if I find additional details.

Recap, Summary

It works. What am I missing? What should I have done different?

Bring it!!

References and stuff

Thanks to Mark Rackley for a few pointers…

Modern SharePoint – Workflow and Approval Visibility with Power Automate

I’ve been out of the pages and workflow game for a bit while focusing elsewhere – so playing a bit of catchup in certain areas. Plenty of folks have been digging in here for a long time, so what I’m learning and re-learning isn’t news, but it is new to me and I’m sure there are others in the same boat. There are plenty of folks on older versions of SharePoint that are, or will eventually, make a similar move to SharePoint Online as I’m working on/helping with right now.

In legacy versions of SharePoint, we’ve had workflows and approvals around for some time. These have been managed through SharePoint Designer (SPD) (…may it RIP) and surfaced directly in the list settings where workflows were implemented. Looking something like this:

LegacyWorkflow

In ā€œModernā€ SharePoint – SharePoint Online – the preferred and recommended workflow solution is Power Automate, which creates ā€œflowsā€ instead of workflows.

The SharePoint and Power Platform (umbrella group within MS that owns Power Automate and sibling technologies) folks have done a nice job integrating Power Platform tools within the SharePoint interface – including Power Automate and specifically approval workflows. Baked directly in the SharePoint list top nav/action bar:

Automate Integration

Out of the box, configuring a page approval flow is super easy and pretty darn elegant as an approval solution. Kudos Microsoft.

NOW. One of my first questions after turning one of these on was ā€œWhere can I see all my open approvals and manage them as needed?ā€. Because hey, I want visibility and the ability to override stuff. A few key points:

  • Configuring a page approval flow adds an ā€œApproval Statusā€ field to your library – so you can see the status in your Site Pages view
  • Users can review approvals on the submitted page itself and get there via the ā€œthree dotā€ menu on individual items in the Site Pages view ā€œMore –> Review Approvalsā€
  • Open approvals do NOT show up in the Workflow Settings page (shown above)
    • Initially, this might be kind of irritating, but it does make sense. The Workflow Settings page is SharePoint workflows, not Power Automate approvals
    • It would be kind of nice to have some note or even a link to where users can find the new approvals, but I suspect this page has a limited life left and probably isn’t worth updating

So, if you haven’t guessed it yet – where we find that list of open approvals, as well as history and lots of other goodies, is in the Power Automate interface.

There are several ways to get there, but the easiest for folks working in SharePoint already is to use the menu shown above and select the ā€œSee your flowsā€ option. This will open a tab to Power Automate. In the left menu you’ll see Action Items –> Approvals.

Approval Flows

Ultimately, this is super easy and makes sense. But if you’re coming from legacy SharePoint and you haven’t made the mental shift to working with Power Automate yet you might just need a little nudge. Hopefully this helped.