John Liu .NET

View Original

Ninja List: The great migration of SharePoint Workflow to Power Automate

Hello, I’m John Liu, #FlowNinja

I am both MVP in Office App and Services (SharePoint) and Power Platform (Flow), I’ve been writing tools to help (4000+ in over 3500 tenants) makers manage and maintain their flows for the last two years. As a bonus, I also grok Power Platform licensing.

The announcement that SharePoint 2010 Workflows will be terminated on SharePoint Online is one that I’ve been planning for, even before Microsoft announced they would deprecate the workflow engine.

SharePoint 2010 and 2013 workflow engines are based on Windows Workflow Foundation. That team doesn’t exist. There’s no WF in .NET. Not to mention that WF is not an engine that’s designed for the cloud era - it runs on heavy machines, serialized through databases. It doesn’t auto-scale, or handle webhooks or does anything async. It’s an pre-cloud relic that doesn’t know how to get access to unlimited serverless compute.

But yet, putting aside my own criticisms of the old workflow engine, those workflows are still extremely business critical. So the Office team has been shouldering the maintenance of those workflows - while the world moves on to a cross services and cross platform solution built on Logic Apps and Power Automate.

I didn’t think we were ready yet to make the move in 2020. But we have to draw the deadline somewhere, so, let’s start by scanning and figuring out what is next.

See this content in the original post

This is a highly curated list. I’ll be updating this until there are no more SharePoint 2010 and 2013 workflows.

Microsoft’s announcement

https://support.microsoft.com/en-us/office/sharepoint-2010-workflow-retirement-1ca3fff8-9985-410a-85aa-8120f626965f

SharePoint PnP team’s modernization scanner

https://docs.microsoft.com/en-us/sharepoint/dev/transform/modernize-scanner

SharePoint 2010 Workflows - August 1 (off on new SharePoint Online tenants) November 1 (off for all tenants)
SharePoint 2013 Workflows - Already deprecated, future termination expected.

Microsoft Official Guidance

https://docs.microsoft.com/en-us/sharepoint/dev/business-apps/power-automate/guidance/migrate-from-classic-workflows-to-power-automate-flows

Community Resources

Todd Klindt

Sympraxians

SharePoint PnP

The main plan

Scan

  • Don’t panic.

  • Run the migration scanner and work out how many workflows you actually have. Then narrow it down to what are actually business critical.

  • Todd Klindt in a follow up blog post talks about scanning the workflow history list in each site to determine if a flow has been running recently. This would help determining if an workflow is old and is it even being used.

Migrate

  • Re-write SharePoint Designer Workflow as Power Automate

  • Will need to connect to existing workflow via SharePoint Designer

  • In most cases, old SharePoint Designer Workflows run on change of a list item - these can be replaced with Flow’s Item Modified trigger or File Modified trigger.

  • If you have SharePoint Designer Site Workflows, or list workflows that have a Start Workflow dialog, then these need to be replaced with “SharePoint For Selected Item Trigger” in Flow

  • If you need to replace the out of box “Request Sign Off” or “Content Approval” workflows which both have Power Automate replacements, see Shane Young’s video
    https://www.youtube.com/watch?v=RAADqTG2EZM

  • You may want to reuse workflow functionality, there are a few ways to go about with this:

    • Use HTTP to call child Flows (this is a premium feature)

    • You can use Solutions which helps with creating Parent Flow and Child Flow, but Solutions doesn’t help with multiple sites, so this isn’t a perfect case.

    • You can use Power Studio’s migrate to help you copy and manage deployment of a template flow across dozens and hundreds of SharePoint sites.

  • Power Studio’s Clipboard feature can be used to save snippets and re-use them with Flow designer’s copy and paste clipboard.

  • Power Studio’s Edit JSON feature can be used to rapidly clone an existing flow, and then modify it further (advanced user).

Monitor

  • Flow’s run history is only stored for 28 days

  • You can write a flow history to a separate list within your Flow to keep track of crucial flow run metadata

  • You may want to consider using Trigger Conditions which will help you ignore trigger events and make flow’s run history more manageable.

  • You can use Power Studio’s Run History to help you pinpoint which run you want to review, or even resubmit.

  • You can also use Power Clarity which provides continuous flow run monitoring and error notification.

  • Power Clarity gives reports of which Flows are running on what SharePoint sites.


The Pain Points

  • Not all actions have a direct replacement, but most of them are available, and the few that aren’t - we can get by with Send HTTP to SharePoint

  • Set permissions

  • Document Set actions

  • Impersonation

    • Automated Flow always runs as the maker, or rather, as the connection used in the Flow

    • Instant Flow (For Selected Trigger) has the option of running as the current user.

  • Flow run time limitations

    • Power Automate - 30 days

    • Logic Apps with Integration Account - up to 1 year

    • Workarounds by changing logic to a recurrence trigger, and don’t design flows that will run forever.

    • Flows can re-trigger itself as we near 30 days to restart a new run.

  • No triggers that perform “If field A changed” - this can be done with Send HTTP to SharePoint and reading version history

  • If you want Flow to run faster in lists - you may want to be familiar with using CAML to execute group-by, this let us work with list data in bulk quickly.

  • Right now, a user can have a maximum of 600 flows.

    • You can make more in Solution.

  • ALM

    • ALM are done via Solutions - Solutions in the default environment is standard.

    • Power Clarity can help with ALM if you don’t want to use Solutions - but you’ll need to contact me and get this moved up the roadmap.

  • Flow Versioning

  • Grouping

    • Imagine having to build hundreds of flows across all the sites into Flow designer - you will not be able to find your flows quick enough. So there’s a grouping or organizing problem.

    • Microsoft says use Solutions to group your flows

    • Flow Studio allows us to use #tags to quickly sort and filter your flows (any flows can have one or many tags, so they can belong to one or many groups).

    • At a very minimum, choose a flow naming convention so at least they can filter correctly. (But beyond 50 and when paging starts you’ll have issues).

The Gaps

  • No actions that perform “Wait until a field changed to X”.

Licensing

  • Automated Flows run as the maker - if the Flow needs premium connections, then that is either 1 P2 license for that maker - this is cheaper
    If you need a lot of capacity, you can also consider the Per-Flow plan

    • Scheduled flows are Automated Flows

    • HTTP Request (service flows) are Automated Flows

  • Instant Flows run as the current user - so if an instant flow needs premium connections - then that is best covered with the Per-Flow plan.

    • For Selected Item / File are Instant Flows

    • Flow Button are Instant Flows

  • A Flow called from Power Apps is covered by the Power App’s license. So if the flow needs premium, then the Power Apps needs premium, but the flow doesn’t need an extra flow-premium.

    • Power Apps Trigger are this category - they are instant flows, but are covered by Power Apps license.

  • Flows are no longer calculated by “Runs” or “pooled runs” - this was removed a while ago. There are no longer any ‘run limits’. But instead, there are service limits relating to number of API calls. Standard and Premium tiers have different API call quotas per day. Flow action can fail if you have run out of number of API calls in that period.

    • This may affect you if you are using “service user accounts” to run your flows - I recommend the easiest way is to plan and assign P2 to these “service user accounts”.

    • For very high volume Flow runs that are critical and can’t be filtered via trigger conditions, consider using Logic Apps and bring your own Integration Account ($$).

Updates (2020-09-17)

Let me know if I missed anything

Reach out, this is an ever updating list. We will add more resources - both our own and those from the community. Our goals here is to align with yours and Microsoft’s:

  • Make sure your business process workflows continues moving forward.

  • Teach and create patterns to help you make your own flows, and make them better.

  • Build tools that will help you do more, faster, if you don’t have the time.