Which navigation button is right for me?

There are multiple custom buttons and navigation tools on unofficialsf.com, each with unique advantages. Here are a few of your options, and when you might consider each one:

  • Custom Flow Navigation Buttons by David Fromstein
    • Description: Used solely for directing navigation between elements within a Flow
      • Full disclosure: the guy writing this comparison doc is the same guy who built this component
    • Benefits:
      • Very lightweight, fast to set up, easy to configure
      • Can look and feel just like standard Flow navigation
      • Multiple buttons in one component, on one line
      • See Features for all the reasons I think this component is helpful ๐Ÿ™‚
      • This is the only one of the components listed here written as a Lightning Web Component (LWC), making it more future-proof
    • Downsides:
      • Very specific in what it does, only used for navigation within a Flow, does not currently support launching in modal
  • Launch Flow in Modal by George Abboud
    • Description: Similar to the Bonus suggested usage above, but (1) launches in a modal, which is often very useful, and (2) is a separate component from the Flow being launched
    • Benefits:
      • Does exactly what it says on the label!
    • Downsides:
      • None, reallyโ€”this is a pretty niche component that does one thing and does it well.
    • Additional resources: Quip doc
  • Flow Buttons by Ryan Cox
    • Like a combination of the above two components, can be used to navigate within a Flow or to launch other Flows (inline or as a modal).
    • Benefits:
      • Does pretty much everything the above two components do, combined.
    • Downsides:
      • Less lightweight than this component.
      • Each button is its own component and on its own line.
  • Advanced Flow Navigation Button from GravityLab
    • Description: this is the mac daddy of custom Flow buttons. It has a ton of functionality, and can do things like open records, navigate to URLs, launch quick actions, and more.
    • Benefits:
      • Tons of functionality, lots not covered by the above buttons. If you need more advanced navigation, this is the one for you.
    • Downsides:
      • With great functionality comes great responsibility configuration. Much less lightweight than alternatives.
      • To my knowledge, doesnโ€™t currently support launching in modals.
    • Additional resources: GravityLab post

Custom Flow Navigation Buttons: move beyond ‘Next’ and ‘Previous’

UPDATE 5/31/2021: This component has been replaced (and upgraded) by Flow Button Bar, which contains all the functionality available here plus some significant new features, and also includes a much more user-friendly configuration panel. I recommend using Flow Button Bar going forward.

Overview

Custom Flow Navigation Buttons is a simple, lightweight tool that gives Flow builders the ability to present users with customizable navigation choices that go beyond the standard โ€œNext/Finishโ€ and โ€œPreviousโ€.

The Problem

Standard Flow navigation options are very limited: Next/Finish and Previous. This means Flow builders often have to resort to radio buttons to drive navigation logic, which can feel clunky to the end user and are time-consuming to build:

image.png

The Solution

This component enables Flow builders to add their navigation buttons to Flow screens. This gives users a more intuitive, modern interface, and is faster and easier for Flow admins to build!

image.png

Features

  • Add as many buttons as you want, all as a single component
  • Place anywhere on your Flow screen
  • Choose from four button colours: red, green, blue, and grey (default)
  • Select position of the buttons: left, center, or right (default)
  • Show or hide a horizontal separator line above the buttons
  • Buttons labelled โ€œNextโ€ or โ€œPreviousโ€ automatically perform their standard navigation for convenience

Bonus suggested usage

  • If you want to place a Flow on a page in Salesforce but not have it auto-launch, give the Flow an initial screen with just a custom nav button on it labelled โ€œLaunchโ€ (or whatever you want to call it)

Setup & Instructions

  1. Install component: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t4x000000YwSM
  2. In Flow Builder, drag the โ€œNav Button Setโ€ component onto a Flow screen.
    1. Like all Flow elements, give it a unique API name
  3. Add desired button labels in the order youโ€™d like them to appear in a comma-separated list
  4. Optionally, set colours for the buttons (from the listed options) in a comma-separated list
  5. Select the position (left/center/right) of the buttons and whether youโ€™d like a horizontal dividing line, or just leave the defaults
  6. Hide the standard footer! Or donโ€™t, I guess, but it looks weird

The label of the clicked button is saved to the componentโ€™s โ€œselectedValueโ€ output value, and can then be referenced in a Decision element to route the user accordingly. โ€œselectedValueโ€ is updated whenever one of the buttons in the set is clicked.

Screenshots

Adding the component to the Flow screen:

Using the output from the button set to route the user to the next step in the flow:

Release History

  • V1.1: Jan 25 2021
  • V1.0: Jan 14 2021

Which button is right for me?

Please see this document for a breakdown of the various navigation buttons available on UnofficialSF and which one is right for your use case: Which button is right for me?

Installation

Unmanaged Package
See Setup & Instructions for detailed setup instructions

Source Code

View source

An UnofficialSF Milestone: 5000 Page Views in 1 Day!

Earlier this week, the publication of the Summer ’21 Preview enabled us to break our single-day views record here at UnofficialSF.com, surpassing 5000 page views for the first time.

As you can see, this comes on top of the milestone we hit in March of more than 100,000 page views in a month and the mega-milestone of 1 aggregate million page views that we hit some time in January.

This makes UnofficialSF one of the largest Salesforce-related websites, if not the largest.

I want to give a shout out of appreciation to all of the community participants who have contributed to the growth of this site.

Big appreciation and credit to:

Eric Smith, who has put enormous energies to work, continually refining Datatable, but also delivering major improvements and modernizations to components like Lookup and QuickChoice, and a constant slew of additional innovation. Jack Pond, who has tamed the wild Send Better Email and is currently doing advanced explorations of webhook-to-flow technology. Adam White, who coordinated the construction of some very useful components and eventually made himself so useful that Salesforce hired him. Lately he’s been creating new value like his monthly summary Flowcast.

We actually have almost 50 different code contributors at this point. Josh Dayment cranked out a new, improved File Upload in record time, and then followed that up with a FlowCarousel component. And Josh teamed with Karan Pant to create the great new Flexcard component.

It’s great when someone creates a brand new component, but frankly an enormous amount of the aggregate value to the community is generated when members improve existing components. There’s Jeremiah Dohn, who added great features to Generate Collection Report,

We’ve had some great drop-ins by Salesforce architects and engineers like Mohith Srivastava, Ryan McConnell, and Brian Hayes, and M Hamza contributed on Custom Metadata, Evan Ponter on Navigation, Sharad Maheshwari with his Custom Header, datapharmer with contributions to Datatable, and many more.

I think this is just the start of We’re always looking for contributions and help. If you can write code, we’ve got components that need upgrading and if you don’t code there are still numerous ways you could contribute to the development of the site’s content. Post a comment here if you’d like to participate but aren’t sure how to start.

Onward to 10000 daily page views!

Mass-Modify Picklist Values with SetupViaFlow

The SetupViaFlow app has been enhanced to support bulk picklist value management, addressing parts of a long-standing feature request.

The app provides the following functionality:

  • For custom picklist fields you’ve created yourself, you can Activate and Deactivate picklist values but you can’t delete them.
  • For standard picklist fields, you can’t do anything.

This feature set is something of a disappointment. When we set out to add bulk picklist management we hoped to be able to carry out Activate, Inactivate, Delete on all picklists. Unfortunately some of the combinations are not yet supported by any of the public APIs. Still, we hope that the ability to do mass activation and deactivation of custom picklist fields will prove useful!

Install and Learn about SetupViaFlow here.

From Adam Foyston: A New Intro Video for Flow Builder

As far as I’m concerned, the community can never have too many intro videos. One reality is that the product evolves and existing tutorials become out-of-date. For example, the intro videos I recorded when Flow Builder launched two years ago gained high praise, but they spend a lot of talking about Manual Variables. While manual variables are still in use, I wouldn’t use them in an intro video now that we have the much simpler Automatic Output Handling.

So a new 40 minute intro video that makes no assumptions about the user is always appreciated. Extra points for the smooth jazz background music.

Find more tutorials here.

Datatable – New Version Release Notes

I have released Version 3.1.1 of the Datatable component. Please note that you will first need to update to the latest versions of the FlowActionsBasePack and the FlowScreenComponentsBasePack.

Updates:

  • Moved the โ€œDisplay ALL Objects for Selectionโ€ choice in the CPE from Advanced to Data Source
  • Added an attribute to hide all column header actions such as Sort, Clip/Wrap Text and Filters
  • If Multi-Currency is enabled, convert currency field values to the Userโ€™s currency (Thanks to Novarg1)

Bug Fixes:

  • Text formula fields will now wrap correctly
  • Display ALL Objects for Selection attribute is now persistent
  • Input data is Apex-Defined attribute is now persistent
  • The number of pre-selected rows will now not exceed the Maximum Number of Records to Display attribute value
  • Donโ€™t require the key field to be explicitly listed in the Column Edits attribute for Apex Defined Objects
  • The Clear Selection button will no longer appear on single row tables when Disallow row selection is checked
  • The Clear Selection button will clear the Output Selected Rows (User Defined) attribute for Apex Defined Objects
  • Fixed the column filtering on Checkbox Fields when the filter value is โ€˜falseโ€™
  • Fixed the vertical alignment of the table header text

Update to Flow Carousel

This version includes a popular ask from the community; the ability to hyperlink the slides. There are also a few bug fixes with the styling parameter that were included with this release as well.

There is now a new property for Hyperlink URL’s this is a Text Collection Variable of urls that sit behind each slide in your carousel.

Learn More

New Option for the Lookup Component

Thanks to vijayignatius, we have a new option for the Lookup component. He has provided a new attribute that lets you pick a field other than the Display field to be used as the the field to search on. Read on for his excellent overview of why and how you can use this new feature.

By default the search term entered by the user will be searched against the field configured in โ€œI2_Display Which Field?โ€. While this should be sufficient for most of the use cases as โ€œI6_Filter on which field?โ€ and โ€œWhere Clauseโ€ will provide additional flexibility to make the query more selective, in some cases, you may want the flexibility for the user entered search term to be searched against a different field than the โ€œI6_Filter on which field?โ€ which is what the new โ€œI8_Search this Field instead of Display Fieldโ€ provides.

As an example, consider a scenario where you have 50M Accounts and some users have access to all 50M Accounts. You have the Account External ID( say master data management id) stored as โ€œExternal_ID__cโ€ in Salesforce and you need the โ€œI2_Display Which Field?โ€ to be a formula field which is a concatenated value of โ€œName + External_ID__c + BillingStreetโ€ but want the search term to be searched against the โ€œNameโ€ field. In this case, you would configure the Lookup FSC component as below:

  • โ€œI2_Display Which Field?โ€ โ†’ Name_ExtId_Address__c ( which is a formula field)
  • โ€œI8_Search this Field instead of Display Fieldโ€  โ†’ Name

This will ensure that the user entered search term is searched against the โ€œNameโ€ field and not the โ€œName_ExtId_Address__cโ€ field. The result of which will be displayed as follows:

In the above example, you can also configure โ€œI8_Search this Field instead of Display Fieldโ€  to search against โ€œExternal_ID__cโ€, the result of which will be displayed as follows:

If you would like to provide a even more better user experience, you could use 2 UnofficialSF – LookUp component, one configured to search against the โ€œNameโ€ field and another against the โ€œExternal_ID__cโ€ and use a toggle to dynamically show/hide the relevant search component so that the user can either search by โ€œNameโ€ or โ€œExternal_ID__cโ€  as in the below screenshots.

Install here.

Summer ’21 Flow Preview

Always a pleasure to divulge the next functionality that will be available to Flow users and builders!

Scheduled Paths in Record-Triggered Flows

The ability to schedule delayed activity that keys off of an initial trigger, known as Scheduled Actions in Process Builder, comes to Flow in the form of Scheduled Paths.

To create a Scheduled Path, you can now use either Autolayout or Freeform mode, but you need to get everything lined up properly:

  • It must be a Record-Triggered Flow
  • It must be set to After Save, and not Before Save
  • You must have already picked your Object
  • You must have ‘Create or Update’ or ‘Update’ but not just ‘Create’

Multicolumn Screens are now Generally Available

Each section can be divided into up to 4 columns, and its visibility can be controlled dynamically. 

Built on SLDS, sections are responsive by default. In small mobile devices, they stack vertically.

Customers can use sections to create multicolumn layouts on their screens, and then embed whatever screen components they like in those components. Or they can use a section to apply the same visibility rule to a group of components.

Automatic Fields

This is the initial beta of a feature that may have as big an impact as Multicolumn Screens. You are now able to start dragging object fields onto screens. You will always be able to drag a rich set of components onto the Screen, but we wanted to provide an automatic way to simply pick an object and grab its fields.

The initial Beta only support some of the basic field types, and it requires the presence of a record variable. Create or use an existing manual variable or reference an upstream output. If you want to use these fields to create new records, provide a manual variable and later pass it to a Create Records element.

In future releases, we’ll support picklists, lookups, compound fields like Name and other field types. We’ll also add automatic output handling so you can more easily support ‘New Record’ use cases: You’ll be able to drag fields onto a screen and have them automatically grouped for subsequent Create Records calls.

232 Supported Data Types
Checkbox
Text
Date
Date/Time
Number
Text Area
Text Area (Long)

Choiceapalooza Enhancements

Choiceapalooza is the internal project name for a large list of improvements that make it easier to work with choices and choice questions. In Summer ’21, these changes are in effect:

Customizable Default Values

Previously, the only way to set preselect an option for a choice component was to use a static choice resource. There was no elegant option if you wanted to select a default from a picklist or record choice set.

Now, you can select an upstream flow resource or manually enter a value that should be selected by default.

Matching Rules

Rule 1:

IF

Default Value is a static choice

AND

that static choice is included in the list of choice options for the component

——

THEN

At run time, we preselect choice options by matching the choice optionโ€™s API name.

Rule 2

IF 

Default Value is a static choice

AND

that static choice is NOT included in the list of choice options for the component

——

THEN

At run time, we resolve the Value of the Default Value choice, and preselect any of the choice options whose value matches.

Rule 3

IF 

Default Value is not a choice. 

  • manually entered value
  • reference from a Get Records, action, or component
  • another upstream reference

——

THEN

At run time, we resolve the reference in Default Value, and preselect any of the choice options whose value matches.

Rule 4 (Multiselect)

IF 

Default Value resolves to a value with semicolons included.

AND

Youโ€™re using a multi-select component.

——

THEN

At run time, we treat that value as multiple defaults, and we preselect any of the choice options whose value matches any of the strings between the semi-colons. 

* Caution: Make sure none of the values in your choice options have semicolons in their value. For record choice sets, we recommend setting Value to the record ID.

Improved Picklist Requirement Control

Admins can now control whether a picklist is required or not. This comes in the form of two enhancements: 

  • Picklist now includes a Required checkbox
  • Picklists now automatically include a prepended –None– option*

Previously, picklists were always required, and if no default was provided, the first option in the list was selected. Which meant the picklist was required but an option was selected for the user. 

* To get this behavior, upgrade your flowโ€™s API Version for Running the Flow to 52.

Switch Components Without Starting Over

From the property editor of an existing choice component, change how the choice options are displayed at runtime by changing the compone type.

  • Let Users Select Multiple Options determines which components are supported
  • Component Type is used to change to the target component

Improved Component Preview

Many more standard components now preview in the canvas when youโ€™re building a screen in Flow Builder. 

  • Address
  • Call Script
  • Dependent Picklist
  • Display Image
  • Email
  • File Upload
  • Lookup
  • Name
  • Phone
  • Slider
  • Toggle
  • URL

How It Works

We attempt preview if all required attributes have values set.

The Address component has no required attributes, so it immediately previews. 

Because the flow isnโ€™t running, we canโ€™t resolve references. If an attribute has a reference instead of a manually-entered attribute, like {!myVar}, we donโ€™t pass that value into the preview. Those attributes are ignored. This means that if a required attribute is set to a reference, we donโ€™t attempt preview.

Detect Conditional Visibility

In Flow Builder, we now identify which components have conditional visibility applied by: 

  • adding an icon to the component on the canvas
  • opening the Set Conditional Visibility section by default when a rule is defined

New Sort Collection Element

A new element has joined Flow Builder! With the Collection Sort element, you can reorder the items in a collection variable. You can sort a collection of values, a collection of records, or an Apex-Defined collection. You can also limit the number of items that remain in the collection variable after the sort.

With the Collection Sort element, you can reorder the items in a collection variable. You can sort a collection of values, a collection of records, or an Apex-Defined collection. You can also limit the number of items that remain in the collection variable after the sort.

Select a collection variable (1). If itโ€™s a record collection variable or an Apex-defined collection variable, enter the field to sort the collection in Sort By (2). Click Add Sort Option (3) to add up to two additional sorting fields. If the collection variable contains a single list of values, Flow Builder automatically sets and hides the Sort By field.

All text-based fields, including picklists, are sorted alphabetically. Boolean fields are sorted as false first if Sort Order is set to Ascending, or sorted as true first if itโ€™s set to Descending.

Mulesoft Actions for Flow and Bots (Developer Preview)

Import your MuleSoft Anypoint Platform APIs in a few clicks with External Services Enhancements for MuleSoft. Select your MuleSoft Name Credentials and let Salesforce do the heavy lifting of importing your endpoints and converting them into actions immediately available in Flow Builder.

Developer Tools: Access Errors from Custom Flow Components

As part of the existing onStatusChange action, developers can now access an errors object that includes both error messages and error codes.

Developers can add code in their wrapper that reacts to particular errors in a flow. For example, when the running user doesnโ€™t have access (error code FLOW_ACCESS_RESTRICTED), hide the flow component.

Flow Orchestrator (Pilot)

Orchestrator is the biggest thing Salesforce Automation has done in many years. The pilot will get a post of its own.

Among the powerful things that can be built on Orchestrator: Approval Processes. Here’s a simple two stage approval process implemented with just a few clicks:

Points of note:

Each step is assigned to specific workers

Each Work Step has an associated screen flow that gets run by the workers after they get notified. Orchestrator will be a paid product but licensing and pricing won’t be announced for some time.

Join the pilot by asking your Account Executive. (This is a Salesforce policy, unfortunately. If you don’t have an AE, you’ll have to wait a little longer, but beta will be coming in September).

Next Best Action Flows (Pilot)

Our existing Next Best Action decisioning service is being extended to run on the Flow engine. This allows NBA strategies to be built in Flow Builder as flows, providing powerful platform features such as Templates, Versioning, Packaging 2.0 support, Sub Strategies, Debugging enhancements. Flow Builder will be home to low code AI driven Recommendation, OOTB Reporting and analytics and other cutting edge decisioning elements.

Support for ISCHANGED, ISNEW, and PRIORVALUE

We continue to march down the list of Process Builder features and implement them in Flow Builder.

Record-triggered flows for new and updated records now support the ISCHANGEDISNEW, and PRIORVALUE formula functions. You can copy your Process Builder or workflow rules formulas containing these functions into record-triggered flows. When copying formulas containing ISCHANGED and PRIORVALUE from Process Builder into record-triggered flows, use the $Record global variable instead of the object. For example, to use ISCHANGED(account.x) in a record-triggered flow formula, change it to ISCHANGED($Record.x). The ISNEW formula function requires no changes because it has no parameters.

You can also use the new Is Changed operator in your condition logic for Start elements and Decision elements in record-triggered flows. With the Is Changed operator, you can define conditions that check whether certain field values on the record have changed in the current transaction. If the conditions are met in the Start element, the flow is triggered to run. If the conditions are met in the Decision element, the flow executes the outcome in the flow path.

The Is Changed operator isnโ€™t available for flows that are triggered when a record is created or deleted. When you edit the Start element and configure the trigger, select the A record is updated or the A record is created or updated option for when the flow is triggered, and select the After the record is saved option for when the flow runs. When you set up the condition for the object, use the Is Changed operator with fields of the selected object. If the condition with the Is Changed operator is True, then the flow is triggered to run when the field value is changed. If the condition is False, then the flow is triggered to run when the field value is not changed.

Salesforce Flow Accessibility Enhancements

This release, accessibility enhancements are centered on focus management when users attempt to navigate to another screen. If thereโ€™s an error on the current flow screen, the focus is set to the first field with an error. If there arenโ€™t any errors on the current flow screen, using Previous or Next displays the appropriate screen and the focus is set to its first focusable field. Also, screen readers are now able to read labels associated with more components, including Currency, Multi-Select Picklist, Name, Number, Picklist, Radio Buttons, and URL.

Autolayout Canvas is 5x Larger

We increased the auto-layout canvas limits, so you can stretch out your flows and avoid errors for exceeding canvas limits. The new canvas is over five times larger, designed to accommodate your largest flows. Give it a try by converting your largest flow to Auto-Layout!

Faster Field Updates in Record-Change Triggered Flows

Weโ€™ve enhanced the Update Records element for record-triggered flows. A new option lets you directly update the record that triggered the flow. Instead of a Decision element, you can use the Update Records element to set filter criteria for the triggering record. The Update Records element only displays fields you can update, and itโ€™s available in all record-triggered flows. These changes mean you can now easily switch between record-triggered flows that run before or after the record is saved.

Before this release, the Update Records element was only available in record-triggered flows that ran after a record was saved. In record-triggered flows that ran after the record was saved, you used the Update Records element to query for the record that triggered the flow. But if you wanted to change that flow to occur before the record was saved, you couldnโ€™t use the Update Records element. You had to use Decision elements to do conditional updates and the Assignment element to set field values. 

Add an Update Records element to your record-triggered flow. While all three options for How to Find Records to Update and Set Their Values are displayed, only the first option is selectable for before-save record-triggered flows. In this example, weโ€™re setting up a before-save record-triggered flow for accounts.

When using the first option, you can only update fields on the record that triggered the flow. To update fields on related records in after-save record-triggered flows, select one of the other options.

Note: To use the Is Changed operator in a flow triggered when a record is updated, set condition requirements in the Start element.

Debugging Improvements : Debug Record-Triggered Flows

You can now debug Record-Triggered Flows.

Debugging Improvements : Find Failed Interviews Faster

The Debugging team continues to hammer out new improvements, starting with a list view that shows failed flow executions (interviews).

Failed flow interviews for these flow types are saved and available to open in Flow Builder from the Failed Flow Interviews list view.

  • Screen flows
  • Record-triggered flows
  • Schedule-triggered flows
  • Autolaunched flows that arenโ€™t triggered

When you select list view filters for Interview Status in Classic, you see Running, Paused, Completed, and Error values. Only flow interviews that have the interview status of Paused or Error can appear in the list view. The Paused Flow Interviews component shows the Paused or Failed Date column, but the component shows only paused flow interviews.

From Setup, enter flow in Quick Find box, and then select Paused and Failed Flow Interviews. The default list view is Paused Flow Interviews.

Debugging Improvements: Debug Flows that have Pauses

Now you can continue to debug a flow even after a Pause element is executed. If the pause conditions are met, you can choose a pause configuration that resumes the flow. Only pause configurations that run when a specific time occurs are supported. Previously, you couldnโ€™t resume a flow after a Pause element when you debugged a flow in Flow Builder.

Debugger Improvements: View Transaction Changes

Schedule-triggered flows and autolaunched flows that have no triggers can now show debug details for transactions that are committed or that are rolled back due to an error. If a flow fails, you can debug the flow to see whether record changes were permanently saved to the database via committed transactions before the failure.  

Debugger Improvements: Debug Visually in Autolayout Mode

Considerations to keep in mind when you debug flows built in auto-layout:

  • While you debug flows in auto-layout, you canโ€™t add or delete elements.
  • If you have unsaved changes when you debug, we donโ€™t show highlighting for them.

Use Flows to Post Messages to Microsoft Teams

This new extension provides support for:

Post Message to MS Teams
Create Teams Channel
Invite User to Teams Channel
Kick User from Teams Channel
Delete Teams Channel

Post Message to MS Teams

The Message data structure is discussed here: https://docs.microsoft.com/en-us/graph/api/resources/chatmessage?view=graph-rest-1.0

Input Properties

subject
body


Output Properties
messageId
errorText

The only Teams inputs we will support in this first version are Subject and Body. They should be string inputs on the action.
Verify that rich text entered into a Flow Text Template can be passed by reference into the Body of this action and the formatting is retained in the posting on Teams.

If an error is returned extract the most readable part of the error text and return it in the ErrorText output attribute

Create Teams Channel

Input Properties
displayName
description
membershipType

Output Properties
same as for โ€˜Post Messageโ€™, above, except call it โ€˜ChannelIdโ€™

Invite User to Teams Channel

This Teams API takes a huge User object, but weโ€™ll just have our action take an id String initially. Convert it to the expected User structure

Input Properties
userid
channelId

Output Properties
errorText

Kick User from Teams Channel

Input Properties
channelId
userId

Output Properties
errorText

Delete Teams Channel

Input Properties
channelId

Output Properties
errorText

Authentication

setting up authentication to make calls to the Microsoft Graph API (which is what MS Teams relies on)is challenging but anyone who administers Teams will probably be familiar with the process. Currently, the only tokens we’ve tested this with are developer tokens that last for 1 hour and have to be refreshed, and the tokens are generated through a complex process involving HTTP and a rig like Postman.

Here’s the Postman configuration that I use to generate valid auth tokens:

All access to Teams starts with an Azure App. This produces the clientID and TenantID

You combine that app id info with a client secret to create an environment that you use to get a temporary access token:

You can generate Client Secrets from the Azure App management UI:

This gives you the access token. Teams actions also usually require IDs for the Team and Channel:

You can generally extract these values from the URLs found in Teams:

https://teams.microsoft.com/l/channel/19%3ac44259973e3a444ebcb82aeb0d5b272f%40thread.tacv2/General?groupId=cc3f17a9-b923-468b-96bf-4fb29057976a&tenantId=168867c6-0022-4fde-92ab-591b3813d528

However, you have to watch out for the encoding. In the example above, the channelID that Flow would expect is

19:c44259973e3a444ebcb82aeb0d5b272f@thread.tacv2

and the teamsID is referred to here as the groupID and Flow would expect;

cc3f17a9-b923-468b-96bf-4fb29057976a

There is certainly a better way to extract these ID’s! This is an area where I’m sadly ignorant, and Teams experts are encouraged to comment on this post with improvements to these docs.

Install

Prerequisites

Install: Flow Actions Base Pack minimum version 3.15
Install: Flow Screen Components Base Pack minimum version 3.3.1
Install: Datatable minimum version 4.0.3

Version 1.1 12/9/23ย Productionย Sandboxย updated to work with latest generation Base Packs and Data Table

View Source

Source