Automating Portfolio Prioritisation Using Power Automate: Saving Time and Maximising Value

Intro: The Challenge of Prioritising

As program and product managers/owners, aligning projects with business value while minimising delays is a constant battle. Traditional prioritisation often involves lengthy meetings with stakeholders, subjective debates, bias, and manual calculations—processes that drain time and resources.

In this post, I’ll share how I automated prioritisation in Azure DevOps using Weighted Shortest Job First (WSJF) from the Scaled Agile Framework (SAFe) and Power Automate, eliminating bias, manual efforts and accelerating data-driven decision-making.

Use, re-use and adapt this solution to your needs, get in touch: Contact


What is WSJF, and Why Does It Matter?

WSJF is a prioritisation model that balances cost of delay (CoD) against job duration to sequence work for maximum economic benefit.

The formula is simple and not a breakthrough in itself but it opens up room for thought and expansion to adapt to different use cases:

By focusing on high-impact, short-duration tasks first, WSJF ensures teams deliver value faster while minimising opportunity costs.

Adaptation for Azure DevOps Epics

In my implementation, I treated Azure DevOps epics as “projects” and calculated their relative priority by:

  1. Customising Azure DevOps by creating custom fields that will later be retrieved by Power Automate.
  2. Customising WSJF criteria to emphasise cost of delay (e.g., revenue impact, compliance deadlines, number of end-users benefiting from the implementation, 3rd party collaboration, age of the request, etc.).
  3. Normalising scores to a 1–4 scale compatible with Azure DevOps’ priority field.
  4. Automatically updating priorities across the portfolio when any epic is modified.

Technical Breakdown: Building the Flow

Step 1: Trigger on Epic Modification

  • Power Automate Trigger
    • Use the Azure DevOps connector to detect changes to epics (e.g., field updates like Business Value or Time Criticality).
    • The “When a work item is updated” can be used and then filtered by the Epic type.
    • Instead of triggering for every change you might opt to schedule a priority recalculation every day at midnight, every week on Mondays, etc.

Step 2: Retrieve All Epics and Calculate WSJF

I am aware that this is where the heavy work goes into and this should be customised to your own portfolio needs so just be aware that a good excel sheet prototyping on how the calculations will be made can be your best friend.

  • Azure DevOps API Calls
    • Fetch all epics using REST API endpoints (e.g., GET https://dev.azure.com/{org}/{project}/_apis/wit/wiql?api-version=7.1) to retrieve work items of type “Epic”.
    • You can also use WIQL queries directly inside Power Automate.
  • JSON Parsing
    • Extract custom fields (e.g., Custom.BusinessValue, Custom.TimeCriticality) and calculate CoD for each epic.
    • You can run the flow one time to retrieve the JSON and use it to generate a JSON template for the parser.
  • Compute the relative priorities using the WSJF formula or the one you have customised.
  • Normalisation: Convert raw WSJF scores into a 1–4 priority scale using linear interpolation.

Step 3: Update Priorities in Azure DevOps

  • Batch Updates
    • Use the PATCH method to update the Microsoft.VSTS.Common.Priority field for all epics via the Azure DevOps API.
    • Use the “Apply to each” and “Update work item” for the list of epics.

Managerial Insights: Why Automation Wins

  1. Eliminate Costly Meetings
    • Manual prioritisation often requires aligning executives, product owners, and developers—meetings that cost thousands in lost productivity.
    • Automation reduces this to minutes, and I recommend to use those minutes well to review and refine your methodology.
    • Study your opportunity cost to determine if automation is the solution for you, it is not a one-size fits all and it requires customisation.
  2. Real-Time Adaptability
    • The fields used to calculate the priorities can be connected to and updated by other external sources. This will trigger the Power Automate flow.
    • Market conditions change fast. Automated updates ensure priorities reflect the latest data (e.g., shifting regulatory deadlines).
    • Managers and teams instantly see an update priority field from Azure DevOps notifications.
  3. Transparency and Buy-In
    • The flow enforces a single, transparent formula for all epics, updating dynamically as inputs change. This aligns stakeholders on a single source of truth.
    • Make sure to test your assumptions such as the weights chosen and make sure stakeholders understand how the automated prioritisation works before it is activated.
    • Stakeholders trust objective metrics like WSJF over subjective debates, it removes bias and fosters alignment.
    • Project fast-tracking can still be done if necessary just make sure you are not breaking the development cycle.

Tools and Lessons Learned

  • Azure DevOps Prototyping
    • Create a test project in Azure DevOps to test the triggers and updates through the REST API.
    • In my case I have added a comment to the ticket’s history every time the tickets’ priority had been updated for tracking.
  • Power Automate Prototyping
    • Create a flow with static data or data from an Excel sheet to test.
    • When possible use sub-flows, flows that encapsulate a calculation can be called as functions.
  • Excel Prototyping: Model calculations offline first to validate logic before coding in Power Automate. There are ways to synchronise Azure DevOps data with Excel so you might find that this is the ideal solution in your case.
  • Field Mapping: Azure DevOps uses internal field names (e.g., Custom.BusinessValue instead of “Business Value”). Use Power Automate’s “Get work item details” action to decode these.
  • Time Zone
    • If you have queries that are based on start of day or similar, be aware that Azure DevOps does not provide the time zone information to Power Automate so the query results might not match.
    • I have notified support but as far as I know this behaviour has not changed.
  • Error Handling: Build checks for missing fields or invalid values to avoid flow failures.

Conclusion: From Manual Chaos to Automated Clarity

Automating prioritisation bridges strategy and execution. By embedding WSJF-based flow into our pipeline we turned a tedious exercise into a live and self-maintaining system. The portfolio’s priorities now continuously reflect the latest CoD math, freeing managers’ time.

If your teams struggle with prioritisation consider this approach. Evaluate the calculation criteria and let the automation handle the scoring.

The result? Strategic agility, faster value delivery, bias removal, happier stakeholders, and a focus on strategic work—no more spreadsheets.

Ready to Try It?

Automation empowering teams to focus on what truly matters.

Photo by Brett Jordan on Unsplash

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.