From Common-Unite: A powerful Screen Component Builder

Editor’s Note: UnofficialSF is pleased to enable commercial creators of Flow extensions like Common-Unite to introduce their products and demonstrate useful use cases. One of our goals is to see a rich tier of commercial solutions in addition to the many free extensions that will continue to be available.

Content provided by Common-Unite

The Flow Took Kit (Form and Table Builder) app is a 100% Salesforce native tool that enables you and your team to create custom Flow Screen components declaratively, with clicks, not code. These custom components leverage the power of Flow, instead of Apex, to control your component’s processes and actions. By combining Flow and the Flow Tool Kit, your team can create advanced interfaces, forms, surveys, or wizards for both internal and external users. Reducing your team’s development time, cost, or reliance on external form builder solutions.

What sets the Flow Tool Kit apart?

The Flow Tool Kit is 100% built to leverage the power of Salesforce Flow. Our custom components and features, such as live formula recalculation, modular/reusable components, and the Form (Repeater), will allow your team to move out of custom code and into a declarative Flow solution. The Flow Tool Kit is built upon the idea of modular components. Just like LWC’s or Visualforce Components, we provide your team with tools to create modular, reusable Flow Screen components. These components are configured within a custom interface outside of Flow, which allows for the decoupling of complex Flow logic from ever-changing front-end design requirements. This means that System Admins or Super Users without Flow proficiency can own and manage components without ever needing to open or edit a Flow.

Build Modular/Reusable Flow Screen Components

There is a concept that developers adhere to when writing code “Don’t Repeat Yourself” (DRY). The idea is simple, try not to duplicate code. Instead, write it once and ensure that other solutions can reference and reuse the same code if needed. With this principle, when a change needs to be made, a developer only has to update the code in one place instead of multiple locations. This reduces both initial development time, as well as future administration. We love Flow, and Flow provides tools such as subflows and invocable flows to allow logic and processes to be reused. However, when considering Flow Screens, no standard feature is provided to reduce duplicated form design and visibility logic. This often leads to duplicative configuration. This is administrative debt!

The Flow Tool Kit enables your team to create modular/reusable Flow screen components with clicks, not code. Each component contains its own set of fields, styling, and conditional logic. Admins and Developers can add these components to one or many flow screens. If something in your business logic changes, update the component, and all Flows that reference your component are instantly updated, Magic! Furthermore, our form components can be reused throughout the Flow Took Kit. Please look at our Form (Repeater) and Form (Table) elements, as well as our Shopping Cart and Survey extensions.

Decouple complex back-end processes from fluid front-end design

Everything is moving to Flow, but Flow sometimes does require a developer’s eye to design and maintain efficient back-end business processes. With the Flow Tool Kit, we decouple the front-end UX from the complex back-end processes handled by Flow. This means that your team can pass the task of field arrangement, styling, customizing labels, and other ever-changing front-end requirements to System Admins that do not currently have the skill set needed to manage a Flow. This pattern is equivalent to how Developers implement fieldsets within Visualforce and Lightning Components.

Leverage the power of Salesforce Flow

The Flow Tool Kit was designed to leverage the power of Flow. With Salesforce Flow, your team will have few, if any, limits when it comes to building out complex solutions. If you do find a limit, Flow can be extended with custom code to handle your unique business requirements.

Salesforce Flow is powerful when it comes to pre-processing and post-process handling. However, Flow has many gaps when working with Flow screen solutions. These gaps are what the Flow Tool Kit (Form and Table Builder) app was designed to fill.

Key Features | Flow Tool Kit (Form and Table Builder)

Form Builder Interface

The Form Builder Interface is a standalone app where users create custom Flow Screen components. The interface includes a live preview window that is always visible. Each change updates the live preview so your Users can see what their component will look like when dropped into a Flow. Adding input fields to your component is equivalent to the new GA Flow Fields feature within a Flow screen. Add the field to your component, and the fields data-type, label, help-text, and requiredness are loaded as your starting point. Unlike the Flow Fields feature, you can override the system defaults with custom labels, help text, prompt messages, requiredness, and more. The fields added to your component stay synced with the field’s API names. Therefore there is no need for field mapping within the Flow.

Try the Form Builder Interface!

Key Field Override Features

  • Display Picklist fields as Radio Options or Radio Buttons (define the number of columns)
  • Display Multiselect Picklist as Multiselect Checkboxes (define the number of columns)
  • Display Boolean/Checkbox Fields as Picklist and provide alternative labels such as: “Active, Inactive,” “Yes, No,” “Valid, Invalid,” etc.
  • Override default Labels
  • Append and Prepend Text
  • Change the Label’s Position (Stacked, Inline, or Hidden)
  • Add Placeholder Text
  • Add or Override Inline Help Text
  • Disable/Hide Inline Help Text
  • Require or Disable Input Field
  • Min and Max length for Text Inputs
  • Min and Max Values for Date, DateTime, Time, and Number fields
  • Set the Height of RichText and TextArea Fields

Each form component can be styled with custom themes. Conditional logic is also configured and packaged within your custom form components. Conditional logic is used to show, hide, require or disable fields and sections within your component. Conditional logic is triggered via field updates and/or pre-filling input fields within Flow Builder. See how it works.

Live Formula Field Recalculation

Form Components can include and display the values of calculated Formula Fields. These formulas can also be configured to recalculate in real time within your Flow screen. As users change field values, your formulas will be recalculated, displaying the updated result. Use these formula results to trigger conditional logic, hiding and/or showing fields and sections based on the updated formula value.

Table Builder Interface

The Table Builder Interface functions just like the Form Builder Interface. Declaratively add and arrange table columns, override header labels, and customize display properties. As you make changes, the table is updated within the preview window, allowing you to track how your table will look within a flow.

Try the Table Builder Interface!

Table components can be reused within multiple flows. Simply add your table component to a flow screen and pass in a record collection to populate the rows. Within Flow, you define how Users interact with the table records by enabling users to create, update, select or delete records. Adding or updating records within a table functions like a quick action on a standard record page. Admins pass in Form components to the table, as well as an optional pre-fill record template. When a user clicks the “New” or “Edit” button, a modal opens, displaying the fields defined within the form component. Users can edit field values for a record even if not displayed as a table column. Tables can also be configured to display as a hierarchy tree.

Flow Screen Components and Flow Actions

Modular form components, built with the Form and Table Builder interfaces, can be weaved together with standard flow screen components and custom and third-party components to create advanced forms and interfaces.

Form

The “Form” screen component is what an administrator uses to add form components to Flow screens. Our form screen components communicate, passing field and visibility updates between components. This allows you to easily weave together components across objects as well as standard and custom Flow screen components. The custom property editor allows admins to assign record type options, hide headers, override the theme, or collapse form sections within accordions.

Dynamic Form Component Assignments

Form Components can be explicitly added to a Flow screen with a “hard-coded” reference. Alternatively, Form Components can be assigned to your Flow screens dynamically. This is powerful! Consider our free Survey extension app. We leverage a single Flow, with one screen, to handle and create Survey_Reponse__c records. We pass into our Flow a Campaign Id. The related Campaign stores a reference to a Survey form component. Each Survey component can be configured with custom Survey questions and branding. This allows us to dynamically change the fields displayed within the Flow based on the related Campaign. Allowing a single Flow screen to handle an unlimited combination of survey questions. This pattern, “Data-driven screen flows,” is a recommended best practice. Check out this UnofficialSF article for additional considerations: Scaling to Thousands of Screens with Lightning Flow.

Form (Repeater)

The Form (Repeater) component allows users to create and/or edit multiple records within a single Flow screen. Admins can pass a form component to the (Repeater) and a collection of records if the component requires a pre-filled form. Users can then add more records by clicking the ‘New’ button. The repeater adds a new record to the screen with the same input fields packaged within the form component. In addition, admins can customize the repeater within flow screens by enabling a User to Create, Clone, Select or Delete records within the repeater.

Form (Buttons)

The custom buttons within the Flow Tool Kit allow you to configure as many buttons as your solution requires within a single Flow screen. Easily customize each button’s label, icon, branding, or action with our intuitive property editors. Confirmation modals can also be enabled for any button. When enabled, the user is presented with a custom message and a confirmation button that must be clicked to move the Flow forward. Additionally, buttons can be configured to bypass field validation as well as trigger Google reCaptcha validation. You also control how and where your buttons are displayed, such as within docked footers or grouped drop-down menus.

See Also:

Simplify complex Flow solutions

Reduce Loops

Loops add complexity to flows and can degrade the user experience. Therefore, the Flow Tool Kit includes two features, the Form (Repeater) and Form (Table), which allow users to add, update, delete or select multiple records within a single flow screen. These components return output collections (e.g., Insert Collection, Update Collection, Delete Collection, Selected Collection). As a User interacts with records within these components, the records are sorted and added to the appropriate output collections. These output collections could then be passed right into DML elements (Create, Update, Delete) within your Flow. You can also predefine field values for new records created within these components with a record template. This is useful for setting values such as RecordTypeId or related lookup Ids that should apply to all new records.

Eliminate Field Mappings

Form Components maintain a direct reference to your Object schema. This allows your field labels, help text, picklist values, and field API names to stay in sync with your object. Changes made are instantly visible within your Form Components and the Flows that reference them. This also means that there is no need for field mappings within your Flow. Instead, our Form Components pass back a “record” variable with all field values added or updated by your users mapped to the referenced field API names. Simply pass this “record” output into a DML element for processing. For some Flow solutions, this could mean most changes happen within the Form Builder with no need to open and update the related Flows, just like Field Sets. Magic!

Next Steps

Try out the latest release of the Flow Tool Kit by visiting our site commonunite.force.com or through the AppExchange. We have two versions of the Flow Tool Kit, “Free” and “Unlimited.” The Free version includes all features but will limit your org to the following objects: Account, Contact, Case, Lead, and our custom Survey object. The Unlimited version is sold as an org-wide license and allows for any object Custom or Standard. Nonprofits with ten Users or fewer can purchase the Unlimited license for $30 per month. All other orgs can purchase the Unlimited license for $150 per org per month. You can contact us for custom pricing considerations. Visit our Vimeo showcase for how-to videos and demos.

Follow us on LinkedIn for product updates and demos. Or contact support@common-unite.com with any questions.

From Yumi: Add a Star Rating Component to your screens

About

If you are building a survey or a feedback form, you can use number or selection input components to get a rating from the user. Even though they will store the answer, they won’t look like the surveys that we are familiar with. However, you can use this custom Star Rating Component that lets the users select a star and stores the number of selected stars.

Star Rating Component

How to Use

Add the StarRatingComponent to the screen and give it a name.

Star Rating Component on flow screen

There are 3 input parameters that you can provide to the component.

  • Maximum Number of Stars
    This is the number of stars that the component will display to the user. It is required to enter a value.
  • Read Only
    This is a boolean parameter to make the component read only. By default, the value is false. However, you can enter {!$GlobalConstant.True} to make it read only.
  • Value
    This parameter stores the number of selected stars. If you provide a value as an input, Star Rating Component displays it as the default number of selected stars.

At the end, Value parameter stores the selected number of stars as an output.

Example

Read this post to see a customer satisfaction survey built with the Star Rating Component.

Experience Builder Considerations

This component works fine in the developer edition environments. However, it may not be able to load the star icons when it is used in an Experience site connected to a production/sandbox environment. In these cases, you have to override the css directly from the Experience Builder.

In this case, URL of the background image should be “/ExperienceSiteName/resource/fivestar/stars.svg” instead of “/resource/fivestar/stars.svg”.

Go to the Experience Builder and click Edit CSS from the Theme.

Enter this code and publish your changes.

.c-rating__item {
background-image: url(“/survey/resource/fivestar/stars.svg”) !important;
}

In this example, the name of the experience site is “survey”. Replace “survey” with the name of your Experience site.

Installation

V1.0 12/13/22 Production Sandbox 1st release

Do you want to try the component before installing it? You can use this link to test the component!

Customer Satisfaction Survey

Send rich text messages to Slack using Text Area Plus!

The Salesforce to Slack integrations are many and there are some really great post-to-Slack actions out of the box but the biggest gap is when you have rich text/HTML markup you are entering in a screen flow and posting that message to Slack it doesn’t translate the HTML into Slack Markdown so it displays all of the HTML markups in your post maybe there is a scenario at the end of your screen flow where you need to bold a specific text that was entered in a screen. You now have that option with Text Area Plus! In this release, there is limited support for HTML to Slack Markdown. Text Area Plus! is currently supporting everything from the general editor in Slack except for Code Block and Numbered lists (it is on the roadmap for full support along with image support) for a full list of what you can do visit this help article on Slack.

Before Text Area Plus

After Text Area Plus

For download and full details visit the original post here.

File Upload Improved Now Includes a Custom Property Editor

I have recently been working often with file uploads in screen flows and of course, find myself using File Upload Improved to provide the best User Experience and get the best functionality out of the file uploads. As rich as it is in features setting it up could be a little painful and trying to get new developers and admins up to speed on what needs/should be filled out in the property editor was time-consuming. So I decided to hopefully make it easier for everyone and created a Custom Property Editor for File Upload Improved and made a few updates to the Flow Banner component that is included in the Flow Screen Components Base Pack as well. As you can see in the images of the before and after below the Custom Property Editor gives a cleaner and easier setup process for File Upload Improved.

Also included as part of this development was a minor change to the Flow Banner component it has been updated to allow for rich text so that we can provide better information and clear instructions on the components a developer builds. As an example, I included hyperlinks for resources pointing to the post here on unoffocialsf for File Upload Improved along with a resource link just to the file upload lightning component for those that want to dig in and learn even more.

For further details and installation instructions visit the original post here.

Icon Display LWC for Flow

Claire Crabtree has created a nice flow screen component that you can use to display any Salesforce icon.

This LWC will display a Salesforce Icon in a screen flow.
You can set the icon type/name, as well as foreground and background colors, if desired!

Icon with no color changes

Set the iconType to the type of Salesforce icon. (Standard, Utility, Custom, DocType, Action) Set the iconName to the name of the icon. (Messaging_conversation, clone, etc.)


Icon with Hex color changes

Set the foreground and background colors using hexcodes


Icon with Standard color changes

Set the foreground and background colors using regulard color names

Installation

Production or Developer Version 1.0
Sandbox Version 1.0

Source Code

Source


Spring ’23 Sneak Preview – Flow Builder, Orchestrator, Slack, Integrations

It seems like just yesterday I was at Dreamforce chatting away about Winter ‘23 and we’re already at the Spring ‘23 release!

The Flow team continues to deliver the goods and continue the trend of shipping amazing new features to you all! Let’s dive in – I will highlight the big ones here at the top then dive into specifics below.

Key Highlights

Element Iteration Limit Removed Across Flow

Data Table Now Generally Available

Easy HTTP Callouts Arrive (Beta)

Choice Lookup (Beta) and Dynamic Forms for Flow Lookup Field Support

Reactive Screen Components Arrive (Beta)

Process Builder Migration Tool Now Available

Flow Builder Improvements

Element Iteration Limit – GONE!

I am so happy to announce that the dreaded ‘ITERATION_LIMIT_EXCEEDED’ error is now gone! This was a Flow-specific limit that triggered when your flow hit 2,000 ‘elements’ across the Flow interview – typically seen with larger loops. 

For a long time the limit existed to protect orgs from runaway flows, but over time we built in more governor limit awareness into the flow engine. We now feel confident that it is no longer needed, which is great news for you loopers! 

Note: For your Flows to take advantage of this, you’ll need to ensure you’ve updated the Flow’s API version.

Easy HTTP Callout Builder(Beta)

You can now create actions that make calls to  external web services from within Flow Builder without any need for code! 

Feature Overview

  • Create your external service directly from the Action by specifying a Named Credential
  • Paste a sample JSON Response and get a real-time preview of the data structure
  • Map data types from the JSON response to Flow variables

Create HTTP Callouts from this new button:

Add a Named Credential to handle the authentication:

In Spring ‘23, only GET calls are supported. Setup any needed Query Parameters:

After you provide a sample JSON response, Flow will generate a matching data structure that can be accessed in Flow builder without code. 

The actions you create with the new HTTP Callout feature become permanent, reusable actions you can add to any flow. You can view and manage these permanent actions from the updated External Services page:

Description Bubbles Now Surfaced in the Canvas

Documentation sticklers (like me) rejoice! You can now easily see an element’s description by hovering over the new documentation bubble next to an element. This will allow builders to easily see the notes left by others for each individual element. Note that if an element has no description, flow builders will not see the new documentation bubble icon.

Element Descriptions Now Easier to See

Before this release it wasn’t possible to see an element’s entire description. You can now hover over the information bubble to see what an element does – a great addition for newer Flow builders.

Screen Flow Improvements

Data Table now Generally Available

In Winter ‘23 we released the Beta version of our Data Table component and we’re taking it across the finish line in Spring ‘23! Some of the notable new features include:

  • Preview the data table and its columns in the screen builder
  • Improvements to configuration accessibility
  • Shuffled some settings in the configuration panel in Flow Builder to make things easier to understand and set up
  • Support for composite fields like Name and Address – no need to add each one individually now!

Builder Preview Mode

Two New Lookup Component Options Arrive in Spring ‘23

We’re introducing two new ways for Flow builders to create record Lookup experiences in Screen Flows: Lookup supported with Record Fields, and Choice Lookup (beta).

Lookups Supported in Record Fields (Dynamic Forms for Flow)

Drag your object’s lookup fields directly onto your Flow screen, saving you oodles of time. Aside from the simple configuration, it also lets your users create records from within the flow – a hotly requested feature now made possible. Once the user creates the record, the lookup will automatically be populated with the new record.

Created Filtered Lookups with Choice Lookup (Beta)

In addition to placing Radio Buttons, Checklist Groups, and Picklist choices, you can now represent your Flow Choices in a Lookup format using the new Choice Lookup component. 

Flow builders have long asked for the ability to filter down a collection of records in a Lookup based on the actions a user takes in their Flow. Using a filtered Collection Choice Set or Record Choice Set, you can now create a Lookup using only contacts from a previously selected account in your Flow.  

Because this new component is powered by Choices, you can also represent your object Picklist fields in this new format with Picklist Choice Sets, like the standard Account Type Picklist field:


The goodies don’t end there! One awesome behavior of Choice Lookup is that when a user clicks into the field, they’ll see all of the available choices. This addresses a 23,000 point IdeaExchange Post related to Lookup fields on the platform.

Lastly, you’ll notice something different about the way you reference the selected value from a Choice Lookup compared to other choices like a Radio Group or Checkbox Group component. We’ve added the ability for users to explicitly choose between the selected choice’s Label(s) or Value(s) – another frequent ask! For example, many builders have encountered a key issue when you reference a Choice in a Formula – it always returns the choice’s Label when they needed to return the choice’s Value. Now you’ll have a choice between the two.

Which Lookup experience do I choose?

With three different record lookup options, we’ll admit that choosing between the three could get confusing. Over time it’s our goal to converge functionality between Dynamic Forms Lookup fields and Choice Lookup, but for now, here’s a helpful chart comparing the feature sets. 

Dynamic Forms for Flow – Multi-select Picklist Support

We’ve now added Multi-select Picklist field type support to take full advantage of the record type awareness feature we built last release in Winter ‘23. Before this release, to get an object’s multi-select field onto a screen you would’ve needed to set up a Checkbox Group component with a configured Picklist Choice Set. Now all you need to do is drag over the multi-select fields from the Fields tab in your screen editor and you’re done!

You’ll also notice the multi-select experience differs quite a bit from a Multi-select Choice. Dynamic Forms for Flow-based multi-selects mirror the experience found in record pages. 

Record Field (Dynamic Forms for Flow) Multi-Select Experience

Multi-select Picklists with Choices

Create App-like Experiences With the Reactive Screen Components Beta

At long last our Reactive Screen Components effort enters Beta! With reactive screen components, you’ll be able to build bigger, more engaging screens by configuring your screen components so that they react to a user’s actions on the same screen. 

Previously, for a component to react to changes in another component, you had to put them into separate screens or create large, monolithic custom components. For example, you’ll now be able to connect a Text input and feed the changes in the text input to a custom data table to search for knowledge articles as a user types. 

This release marks the beginning of a slew of Screen Flow enhancements focused on flow interactivity. While the Pilot enabled custom lightning component reactivity, the beta now includes additional components like Text, Date, Date time, Checkbox, and Number. Components made reactive during the pilot should continue to work as before assuming they adhere to LWC flow screen component best practices. 

For you developers out there, be on the lookout here and in our official docs for guidance from our team on ensuring your LWC components meet our best practice standards. 

No Code Example Using Reactive Components

In this example – using all standard components – I created a ‘Contact Quick Edit’ flow that lets the user select and edit a set of contacts from a Data Table. Whenever the user selects a row, the selected row’s details get passed into supported inputs on the same screen. Below we pass in the selected row’s details to a set of Address, Name, Date, and Text inputs.

Developers and Admins will be able to use more modular, reusable components that can communicate with each other. This means that developers can offload UI components to Flow (like basic inputs or even a Data Table) while focusing their time and mental energy on the complexity of their own business-driven components. 

Before, developers and admins would have needed to create giant screen components in order to achieve the same level of inter-component communication which hindered reusability.  

Opt in to the Beta

You can opt into the beta by enabling the permission in Process Automation Settings.

Supported ‘Reactive’ Components in Spring ‘23

  • Text
  • Date
  • Date Time
  • Checkbox
  • Number
  • Password
  • Currency
  • Data Table
  • Email
  • Name
  • Address
  • Slider
  • Toggle
  • Custom LWC Components**

** Component must be designed to track change events from Flow as outlined here 

Note that Choices, Formulas, Display Text, and Record Fields (Dynamic Forms for Flow) are not yet reactive, but are high on our list of things to support. 

Stay tuned for a more in-depth best practices guide for wiring up your custom LWC components to be reactive.

Record-Triggered Flow Improvements

Process Builder Migration Tool Now Available

You can now convert many of your Process Builder Processes to Flows using the new migration tool. Check out the three easy steps to moving your Processes to Flow below:

  • Select your process you want to convert
  • Select the process’s criteria nodes that you want to move to Flow
  • Test and edit your flow

We heavily recommend you make edits to the converted flows like changing element and resource name and descriptions to make the converted Flow more human-readable.  

For example, the Flow converted below uses auto-naming for a Formula resource that sets a Case description… but the resource name could use a little human love:

Orchestrator Improvements

Record-Triggered Orchestrations added to the ‘New Flow’ Modal

Creating a new orchestration is now far more discoverable. We’ve added Record-Triggered orchestrations to the ‘New Flow’ modal that appears when creating a new Flow. If you need to access an autolaunched orchestration, you can still access that through the ‘All + Templates’ tab. 

Work Guide Mobile Support Arrives

The work guide component can now be viewed on phones and tablets, ensuring your users running orchestrations can now participate in an orchestration on the go.

Orchestrations as Templates

Need to reuse an orchestration? You can now save Orchestrations as a template so your users or customers don’t have to start from scratch. 

Screen Flows in Slack Goes GA

The ability to run Flows in Slack is now Generally Available! Here’s a Getting Started guide.

MuleSoft Integration

With the new MuleSoft Services page in Setup, you can now connect directly to the Anypoint platform with a simple login, then use this connection to discover and register REST APIs from your Anypoint Platform as an External Service.

This makes the process of connecting to the Anypoint Platform significantly easier and faster, saving you countless steps.

Service Cloud & Flow

Fuzzy Search for an Individual with the ‘Search Individual’ Action (Beta)

Our friends in Service Cloud released an excellent action called ‘Search Individual’ as part of their improvements to linking unknown callers to a case and a Salesforce contact or lead. This new action allows you to perform a fuzzy search for Contact, Lead, and Individual record and then display those results in something like a Data Table.  From there, you can then use the record(s) selected by the user to then relate them to a Case, Account, or an Opportunity as an example. 

The action outputs a collection of Ids, so be sure to use that IN operator to convert it to a record collection before you throw the results into something like a Data Table.

From Andy Haas: Use Analytics Management Actions to Show Report Subscribers and Assignments

Author: Andy Haas

Have a user(s) subscribed to five reports and can’t subscribe to any other reports? Or do you have users that don’t know which reports they are subscribed to and want to be removed? This component allows you to achieve just that. Utilizing the Analytics Notifications API returns APEX-defined records, and utilizing the Datatable by Eric, you can show the records and see who is assigned to specific reports. Added to the last action, you can remove users or remove a subscription from the report. 

Take a look at how you can set up this action and utilize it below.

Video Walkthrough 

Overview

Ever had a user state that they can’t subscribe to a report, or you want to see who is subscribed to which reports in a quick view. The Analytics Notification API is the key but is not accessible from the flow builder. That is where this component comes into play. This APEX invocable action will allow you to call the Analytics Notifications API to view report subscriptions, dashboard subscriptions, or wave notifications; not only that, you can get all notifications for a user or a record. 

The best use of this component is with the Data Table Eric created, where you can use APEX Defined classes. Below are examples of what I came up with. All multi-dimensional objects have their own APEX class so that you can get deep into the details of the response. Lastly, this component will allow you to delete specific users from a subscription. 

Basic Flow Setup

Advanced Flow Setup

Remote Site Settings

You will need to add a remote site setting that loops back to your salesforce domain for this to work correctly.

Component Details:

Get Subscription Data 

Uses the Analytics Notification List API Documentation, which can be found here:

https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/analytics_api_notifications_reference_list.htm#Action

Attributes:

Inputs
sourceRequired for GET calls. Specifies what type of analytics notification to return. Valid values are:lightningDashboardSubscribe — dashboard subscriptionslightningReportSubscribe — report subscriptionswaveNotification — Analytics notifications
ownerIdOptional for GET calls. Allows users with Manage Analytics Notifications permission to get notifications for another user with the specified ownerId. If you don’t enter a value the running users id is used.
recordIdOptional. Return notifications for a single record. Valid values are:reportId— Unique report IDlensId— Unique Analytics lens ID

Outputs:

definition_stringA stringified version of the Get Response Body
definitionAn APEX defined class of the Definition Response
definitionDetailsA subclass that pulls out some key details from sub classes. This class also pulls in the Report Name which is not included in this API
definitionDetails_stringA stringified version of definitionDetails to be used within the data table

Parse Recipient Data

This is a helper class that will parse the selected row and gets the recipients that are subscribed to the selected record.

Attributes:

Inputs
definition_stringA string array of a single definition string record. This is normal output of a record selection from a data table

Outputs:

recipients_stringGets a collection of recipients that follows the Recipient class that can be used within the data table
recipientsAn APEX defined class of the recipients that were parsed
notificationIdThe specific ID of the notification that was selected
definitionAn APEX defined class of the Definition Response

Delete Selected Recipients 

Uses the Analytics Notification API with the Method PUT if you are adjusting users or delete if you are removing all users. That documentation can be found here:

https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/analytics_api_notifications_reference_notification.htm#d2928e157-d2964e1340

Attributes:

Inputs
definitionA string array of a single definition string record. This is the normal output of a record selection from a data table
deletedRecipientsThe recipients we want to remove from the notification. This is in a string array. This is the normal output of a record selection from a data table
notificationIdThe ID of the notification we are updating or deleting
recipientsAll of the recipients that were parsed from Parse Recipient Data action

Outputs: None

Get User Subscription Limit

https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/analytics_api_notifications_reference_notification_limits.htm

Attributes:

Inputs
sourceRequired for GET calls. Specifies what type of analytics notification to return. Valid values are:lightningDashboardSubscribe — dashboard subscriptionslightningReportSubscribe — report subscriptionswaveNotification — Analytics notifications
ownerIdOptional for GET calls. Allows users with Manage Analytics Notifications permission to get notifications for another user with the specified ownerId. If you don’t enter a value the running users id is used.
Outputs
maxHow many analytics notifications of the type specified by source the user is allowed to create.
remainingHow many more analytics notifications of the type specified by source the user can create before hitting the limit.

Install

This extension requires FlowActionsBasePack version 3.8 or higher

1.0 12/2 Production Sandbox Initial Version

Source

View Source

Limitations:

You can only see subscriptions from a particular user. If you subscribe another user to a report and you pass in their Id into ownerId you will not see that subscription, you would need to pass in the person who subscribed the user to the report.

From Ryan Mercer: “Validate Shipping Addresses with The USPS Address API”, a Salesforce Flow Action

Ryan Mercer has contributed some fantastic extensions. When he took his modest new role as the Director of Salesforce Development at the Executive Office of the President over in the White House, most of us assumed he wouldn’t have time to publish any new extensions for a while. But I’m pleased to report that the has created a flow action that taps the main USPS Address API.

Check it out!

Screen Flow Inception (Launching a Screen Flow in Modal from a Lightning Web Component in a Screen Flow)

The significant part of the story in the movie Inception is about going inside of a dream; inside of a dream. This kind of what I am doing now with the Flow Flex Card component we are launching a screen flow from a screen flow a little bit like Inception.

I used to handle this functionality using a combination of two Lightning Web components, along with an apex page and an aura app in one of those LWC’s. This is no longer the case with the added functionality of lightning-flow in the Salesforce Winter 23′ release we can now launch a screen flow directly from an LWC. With the new functionality, I am able to handle this now with a single child LWC in Flow Flex Card. 

Why fix what’s not broken? A couple of things here I think good developers and architects always want to build something that is easily maintained and scalable Flow Flex Card has had a lot of evolution since I volunteered to be on the project it has experienced my own learning journey so I wanted to make it easier for other developers to contribute to the component as well as make it easier on myself when troubleshooting issues with users. It also moves the component to be based all on LWC versus a combination of Aura and LWC improving performance and expanding the possibility to do more in the future. There were also some issues when Flow Flex Card was deployed on an Experience Cloud Site with enhanced domains that required some changes in the fsc_ScreenFlow component that could become an annoying maintenance task in the future if Salesforce were to change domain behavior again. 

Let’s break down the before and after of what this looks like. 

As you can see in the diagram above I was able to significantly reduce the amount of code and components needed to launch a screen flow from within the Flow Flex Card component. I replaced the need for fsc_screenFlow with the standard OOTB lightning-flow delivered as part of the Salesforce Winter 23′ release. With just a simple update to the HTML file and a few items in the js, I was able to greatly reduce my tech debt and open up for further capabilities in the future i.e. custom finish and navigation behavior (more to come on that in a couple of months)

Resources and Learn More

Flow Flex Card

Lightning Flow

Invoke a MuleSoft RPA Process from Flow using External Services

MuleSoft Robotic Process Automation (RPA) gives you the power to automate business processes that usually require human input and interact with systems that don’t have an API, extending the reach of Salesforce’s process automation capabilities by integrating these RPA processes into flows in Salesforce as of Winter ’23!

Use MuleSoft RPA Manager to publish REST APIs for your RPA processes to Anypoint Exchange, which you can then register as External Services in Salesforce and invoke from low-code tools like Flow Builder.

This post describes the configuration steps necessary to invoke a MuleSoft RPA Process in Flow Builder. It assumes familiarity with MuleSoft RPA, Named Credentials and External Credentials, Permission Sets, External Services, and Flow Builder.

Step 0: MuleSoft RPA Pre-requisites

  • Configure the connection between MuleSoft Anypoint platform and your org to import MuleSoft RPA APIs.
    • In MuleSoft RPA Manager, publish the RPA process as a REST API to Anypoint Exchange.
    • In MuleSoft RPA Manager, copy the API key from the User Management | User API Keys page.

MuleSoft RPA Manager: User Management page

Steps 1-3: Connect Salesforce to MuleSoft Anypoint Platform

These steps create the initial connection between MuleSoft Anypoint platform and your org:

  • Step 1: Create a Connected App in MuleSoft Anypoint PlatformA connected app in MuleSoft Anypoint platform allows Salesforce to call MuleSoft APIs.
  • Step 2: Create an Authentication ProviderUse the ID and the secret from your MuleSoft Anypoint Platform connected app to create an authentication provider.
  • Step 2b: Update Your MuleSoft Anypoint Platform Connected App – Use the Salesforce authentication provider callback URL to update your MuleSoft Anypoint Platform connected app.
  • Step 3: Create a Legacy Named Credential (Retrieve APIs) – Create a legacy named credential to access/authenticate into your MuleSoft Anypoint Platform connected app from Salesforce and retrieve the APIs published to MuleSoft Anypoint Exchange. The legacy named credential stores the URL for MuleSoft Anypoint Platform. External Services uses the legacy named credential when listing the MuleSoft APIs available for import.

Note: the ability to create a ‘Legacy’ named credential is still supported, although it will be discontinued in a future release, at which point, this portion of the instructions will be updated to reflect the new capability.

Salesforce: Named Credentials Home Page

Step 4: Create a Named Credential (Runtime) and External Credential

Note: MuleSoft RPA authenticates clients invoking RPA processes through API keys. The Salesforce Winter ’23 release includes new functionality in Named Credentials and External Credentials that supports this type of authentication.

  • Create an external credential, permission set mapping and custom header
    • Overview
      • Create a second named credential that stores the endpoint for MuleSoft RPA Manager. External Services uses the second named credential when invoking “runtime” the MuleSoft RPA process in a flow.
    • External credential:
      • Before creating a second named credential, first create an external credential.
        • Create an external credential to capture the API key and other authentication details.
        • Then create a named credential to store the actual endpoint.
        • This allows for multiple endpoints to be addressed with the same authentication configuration.
      • After entering the details for the external credential, click Save. You’re taken to the Named Credentials screen. Now you need to create a permission set mapping for this new external credential. This mapping ensures that only the correct users get access to these credentials.
    • Permission set mappings:
      • Click External Credential and select the external credential you created.
      • Scroll to Permission Sets Mappings so you can link the external credential to a user’s permission set.
      • Click New to create a permission set mapping for this external credential using the details below for an external credential that uses ‘Custom’ as the authentication protocol.
    • Custom headers:
      • Lastly, create a custom header for this external credential using the the details below as guidance for how to create a custom header.

Example
Salesforce: External Credentials Detail Page

  • Create a named credential
    • Now that you have an external credential, create a named credential and then link it to the external credential you just created in the previous step. As mentioned before, this second named credential stores the endpoint for MuleSoft RPA Manager. External Services uses the second named credential when invoking “runtime” the MuleSoft RPA process in a flow. Use the details below for how to create a named credential.

Example

Salesforce: New Named Credential Window

  • Verify that the external credential and the named credential you just created are linked
    • From the Named Credentials page, click External Credentials.
    • Click the name of the external credential from this list and confirm that the named credential you just created appears in the Related Named Credentials area shown in the example below.
    • As a reminder:
      • The Named Credential stores the MuleSoft RPA Endpoint
      • The External Credential stores the MuleSoft RPA API Key + Authentication details

Example
Salesforce: External Credentials Detail Page

Step 5: Register the MuleSoft RPA API as an External Service

As you are configuring the external service, recall that you created two named credentials.

  • Legacy named credential (Retrieve APIs) – this named credential stores the MuleSoft Anypoint platform URL and is used to retrieve the APIs published to MuleSoft Anypoint Exchange. Use this named credential in the “Select a MuleSoft Anypoint Platform Account” screen.

Example

  • Named credential (Runtime) – this named credential stores the MuleSoft RPA Manager URL and is used when invoking “runtime” the MuleSoft RPA process in a flow. Use this named credential in the “Configure your MuleSoft Anypoint Platform Service” screen.

Example

Example

Step 6: Invoke a MuleSoft RPA Process in a Flow

  • Now you are ready to start and check the status of the MuleSoft RPA process from a flow.
  • If you follow the steps outlined in the help docs Invoke a MuleSoft RPA Process in a Flow, listed below are a few additional tips to help guide you through the flow configuration.

Create Resource for RPA Process Input Variables

Tip: In step 2, when creating a New Resource to store the input variables for the RPA process, you can obtain the External Service Name and Apex Class Name from the External Services Detail Page to help configure the New Resource

Salesforce: External Services Detail Page

Assign Values to RPA Process Input Variables

Tip: In step 3, you can obtain the information about each variable/input parameter that needs to be defined in the above Apex class from the External Services Detail Page as well as the OpenAPI specification (a few examples shown below).

RPA Process OpenAPI Specification

OperationId: startProcess > ProcessExecutionWithExecutionId

ProcessExecutionWithExecutionId > ProcessExecution

ProcessExecution > inputArguments