Newsletter

What Can Flow-Builders Do With Pen and Paper?

I attended Southeast Dreamin’ last week. This was my fourth event in Atlanta. I cannot be sure; the dates are blurry at this point.

I presented last year and delivered a hands-on training session this year. I was scheduled to give a hands-on training long ago, but Southeast Dreamin’ got canceled that year due to the COVID-19 pandemic.

I have been a fan of the event for a long time. The hands-on training sessions make this event very unique. There are things you cannot do in a 20 min or a 40 min session. Sometimes you need 1.5 – 2 hours to teach a topic in a certain way.

I have been trying to get a session approved that does not involve the participants looking at their notebook screens the whole time. I submitted a session proposal on Diagraming/Mapping last year, but it was not approved. I delivered a different version of that session at Florida Dreamin’: It could not be very interactive due to its limited duration (40 minutes).

Before this year, Southeast Dreamin’ was held at another hotel. This year it was moved to the Georgia Tech Conference Center and Hotel. I liked the location a lot. The hotel was good, and the area was pleasant for walking in. The expo room was suboptimal, but I will leave that to the sponsors to evaluate.

Architect Flow Solutions Session

I delivered a session titled Architect Flow Solutions. I had about 25 participants. I divided them into four subgroups. I brought large Post-its, flip-chart paper, and markers. I gave them scenarios and 20 minutes to talk with their team to design their solutions. They had approx. 3 minutes to present to the other groups. I prepared four scenarios but did not expect us to go through all of them. We completed two scenarios. It was a very interactive session. We debated the advantages and disadvantages of each solution without passing judgment.

Group 2 Solutioning

I truly enjoyed delivering this session. The response was overwhelmingly positive. Participants said they wanted more; they wanted longer.

Group 3 Diagramming

I am torn on whether I should attempt this on Zoom with breakout rooms because we need to be in one room to do this best. What do you think?

Group 4 Presenting

Result

I prepared a one-minute-long YouTube Short with the little clips I recorded in the session. I showed it to my daughter, and she said, “Where is the punchline?” Anyway, here it is if you want to see it:

https://youtube.com/shorts/w9FFiKwEJt8

Next, I have Midwest Dreamin’ coming in August: I will deliver a session titled Sometimes Later is Better; Async and Scheduled Flows.

I thank all Dreamin’ organizers, sponsors, speakers, volunteers, and participants.

This post was originally made to LinkedIn on July 6th, 2023.

Read the previous post: How to Build a Screen Flow to Complete Virtual Standup on Slack

Standard
Flow

One Big Record-Triggered Flow or Multiple?

I will revisit one of the most popular debates on flow: Do we create one giant record-triggered flow or multiple flows? And should we use subflows?

Here is a little disclaimer: It depends. I’m not too fond of rigid rules, and I am not here claiming you are doing something wrong if you do things differently.

Now that I got that off my chest, I do have an opinion on the topic:

Asking the right question is very important. Is “How many flows should we build per object?” a good question? Generally, I don’t think so. We should ask ourselves: How can I build automation that does not waste system resources, is easily readable, and is easy to maintain?

My priority when I build my flows is that my build should not run unnecessary automation. My most important objective is not to trigger automation when it does not need to run.

In a complex Org, you quickly realize that yields multiple flows per object. When you look at the three tasks that can be performed in one big record-triggered flow, they rarely need to run all in the same scenario.

Now that I told you I heavily use my start element criteria, do I use the formula entry criteria or the line editor with AND/OR operators?

Here is my experience: I often see record-type usage in fairly complex Orgs. I’m not particularly eager to hardcode RecordType Ids in my start element criteria. I prefer to use DeveloperName or Name over Id. And these are only available in the formula editor. So I often end up using the formula entry criteria.

Some of these formulas get very big. But I will give you a simple example:

AND

({!$Record.RecordType.DeveloperName}=”Sales”,

NOT(ISBLANK({!$Record.ContactId})),

   OR(

ISPICKVAL({!$Record.Status},”Scheduled”),

ISPICKVAL({!$Record.Status},”Confirmed”)

      )

    )

 Now let’s get to the other popular topic: Subflows. I recently inherited work that another Salesforce partner did. They did a good job but used subflows in many of their flows. I found the outcome very hard to read and understand. The back-and-forth review left me confused and tired.

I only use subflows if I know I will reuse the logic in another flow.

This post was originally made to LinkedIn on June 19th, 2023.

Read the previous post: Emojis ❀️ and Dreamin’ Events πŸ‘Œ

Standard
Flow

What is Flow, Really? A Feature?

I recently shared on LinkedIn that flows are getting a lot of attention. I wrote that we need a dedicated certification for flows and a flow champions program.

That post stirred up some debate. I wanted to share my thoughts about this in a long form. I will do this in a Q&A format and then drive a conclusion at the end. Here we go:

What is flow? A Salesforce feature?

One of the topics that came up was whether flow was a feature. It is not imperative to emphasize the categorization, but this topic demands clarification. For me, “account teams” is a feature, and “quotes” is a feature you can turn on on the platform. Flow is a low-code platform, or even if you refrain from this title, a group of products on the Salesforce platform that spans over clouds and products: You can use flow on Sales, Service, Community (Digital Experience) Clouds, and Field Service. Flow has several solutions available that have dedicated product teams in Salesforce. When you go to the release notes, Salesforce flow is one of the top-level pages you see. This was not the case a few releases back. But when addressing some of the topics I mentioned above, this categorization is less important than the definition of the target audience and skillset required to utilize this product to the full extent.

Can flow topics be rolled under administrator or developer headings?

Not really. Administrators do not have to use flows. In fact, there are Salesforce licenses that don’t offer flows or limit flow usage. Developers do not have to use flows, either. It would be great if they did, in any case.

What is the skillset required to use flows?

Flow skillset sits right between admin and developer. A talented admin may never make the transition to building advanced flows. However, they can still customize their Org to address the needs of the business. On the other hand, developers who work in big development teams in giant corporations do not have to master flow or admin skills to do their job. They can deliver specialized and well-documented solutions merged into bigger releases to address business needs. However, if they did master admin and flow skills, they would be super valuable.

What are the prerequisites to learning flow?

Power-user or basic admin skills are required. However, you can start learning flow without being an advanced admin. Some developers in the ecosystem argue that basic development and coding concepts should be studied before learning flows. While this study would help you with flows, this is not a prerequisite to learning flows.

What is the target audience for flows?

The target audience is admins and developers interested in using low code to customize the Salesforce platform through automation.

Flows have their own release readiness webinar separate from Admin and Developer. Jacinta Burke shared that this has been the case since 2019. She said, and I quote: “It was a no-brainer given our audience”.

Have you ever wondered why the Salesforce MVP David K. Liu named his website “SALESFORCE CODING LESSONS FOR THE 99%”? Unfortunately, code and low code are not for everybody. I taught thousands of people flow, and I will be the first to say that there will be people who will not or cannot do flow. They will be able to do simple things like email alerts, but they may not be comfortable tackling some more advanced ones.

Generally, the flow target audience is a subset of admins and developers. There could be exceptions.

Which certification should address the flow skills?

Currently, Platform App Builder is the one that includes flows. It is a mixed bag, though: What do Lightning Apps/Pages have to do with flows? Very little. On the flip side, I know many people with this certification who can only flow a little. I explained above that I do not think every admin should be required to flow. So we either need to revamp the PAB certification or give flow it’s own certification.

Can flows be part of Platform Developer 1 or 2 certifications? They can be, to some extent, if this is what you want to do, but there will be a big audience who flows who never want to do coding. Therefore I think flow needs to be addressed separately.

Whether Salesforce launches a Flow Champions program is totally up to them, but I know tons of people do this already without Salesforce’s funding and support.

This post was originally made to LinkedIn on January 22nd, 2023.

Read the previous post: Why Are Assignments So Confusing?

Standard
Flow, Resources

Why Are Assignments So Confusing?

I noticed this about a year ago: The assignment element is confusing for most people.

I decided to expand my content to include more detail on the assignment element.

Read until the end to find the link to the infographic on assignments that you can download and keep.

What do they do? β›–

The assignment element performs mathematical operations and moves data between variables.

What they don’t do πŸ›‘

They don’t evaluate criteria to produce true/false outcomes.

Assignments run from the right side to the left side.Variable1 Add 1 will add 1 to the Variable1 value.Variable1 Equals Variable2 moves Variable2 value to the Variable1.

Popular operators βž•

  • Equals
  • Add
  • Subtract
  • Add Item (Multiselect Picklist)

Popular Collection Operations πŸŸ°

  • Equals Count
  • Remove Uncommon
  • Remove After First (Text Collections)
  • Add At Start (Text Collections)

Pro Tips βœ–

Use two consecutive assignment elements when you need one assignment to execute after another.

Build formula resources for complex statements.

Functions cannot be used directly. Instead, create a formula resource including functions.

Example Use Cases βž—

Counters: Create a number variable with no decimals, and add 1 in each loop iteration.

Blank text variables with an empty right box.

Assign error messages to a variable in the display text component for variable visibility.

Add 1/24 to date-time variables to add an hour.

Use the Equals Count operator to get the count of records in a record variable.➑️

Now head over to https://SalesforceBreak.com to download your infographic. Click on the last menu item on the main page. ➑️

This post was originally made to LinkedIn on January 8th, 2023.

Read the previous post: Hidden Gem in Spring 23: Schedule-Triggered Flow Improvements

Standard
Flow, New Release

Hidden Gem in Spring 23: Schedule-Triggered Flow Improvements

I can almost hear you! You read the Unofficial SF Sneak Preview by Adam White, and there are no Schedule-Triggered flow improvements in this next release.

So, where does this title come from? πŸ€”

The schedule-triggered flows are about to become immensely more helpful. Why is that?

Spring 23 is removing the 2,000 elements executed limit in flow interviews. If you followed me long enough, you will know I sparked a debate in 2021 about how schedule-triggered flows should be ideally structured. The challenge I faced was more related to record-locking issues than the 2000 limit.

What is the 2,000 elements executed limit? πŸ”’

When a flow executes, it goes down a particular path. It goes to a decision element, turns left, and executes 2 elements there. It then goes into a loop and processes 5 records. If there are 3 elements in the loop, that means another 15 elements are executed. All these add up to a total number for each flow interview. When a particular flow interview goes over 2,000 it throws an error. Please note the number of elements on the canvas is not what we count here; we count the elements on the execution path.

Paul McCollum, UXMC likes to live on the edge. He overcame this limit before by using platform events. You can see his session on Automation Hour here. This method won’t be necessary anymore.

The Achilles heel of Schedule Triggered Flows: 🦡

Schedule-Triggered flows are prone to record-locking issues because you cannot determine the sequence of records they will process. They randomly select what to process first.

What is a locking error? πŸ’»

When Salesforce processes a record, it momentarily locks the related records and makes them unavailable for processing. For example, let’s say you want to update an Opportunity. Related Account and Contact records will be locked during this transaction. When you have multiple updates happening simultaneously, your updates may try to update a locked record, which will not be possible. Why are schedule-triggered flows executing multiple updates at the same time? Because they are batched.

What is batching ❔

Salesforce batches certain operations it executes in default batches of 200 unless this is a parameter you can set; you can sometimes change the batch size. Where do you see this setting? When you import 1,000 records using the Data Loader, you can change the batch size in the settings. You can also set the batch size when you build a scheduled path in a record-triggered flow. You don’t have this setting in schedule-triggered flows. If 200 or more records fit your flow’s start element entry conditions, 200 flow interviews will be batched into one transaction.

This is where the trouble starts.

There here are two ways you can mitigate the locking error risk:

1️⃣ Decrease the batch size

2️⃣ Sort and process the records related to the same record together.

When executing a schedule-triggered flow, you don’t have these methods available.

What can you do? βœ…

You can set up your schedule-triggered flow to run on the parent record rather than the child. This will ensure that you process all the opportunities related to one account together.

Why was that not feasible before? ❌

When you looped through the related records and sometimes went one level further and looped through the related records of those records, you were almost guaranteed to hit the dreaded 2,000+ elements executed error. This used to be a typical use case where I recommended you go to an Apex code solution. Now you don’t have this problem.

Where is this useful? πŸ’‘

You can set up complex roll-up summaries that you don’t need to update immediately. Instead, run these at night when the kids are sleeping.

You can create and update custom object records to flatten your data for reporting ease. For example, if you could not get specific data to show next to each other on dashboards or create complex comparisons in reports, you can now facilitate this via a nightly scheduled-triggered flow job.

The schedule-triggered flow you see above looped through more than 1,000 opportunity records in one flow interview: That’s 2,000+ elements executed.

This is complex territory. I may have left out important points and even made errors in my evaluation. So please comment below and help me get a fruitful debate started.

This post was originally made to LinkedIn on December 13th, 2022.

Read the previous post: What Is The Vision For Flow Testing?

Standard
Flow, New Release

What Is The Vision For Flow Testing?

You showed great interest in flow testing when I wrote about it a few issues back. One of my concerns about this newly introduced GA functionality is that there is little documentation about it. 😟

When I shared this concern in Trailblazer communities, the Product Director for Flow Testing in Salesforce, Henry Liu, reached out. Henry and I had an open discussion on Zoom, and I asked him all the questions I had about testing. Please remember that this information is subject to the standard forward-looking statements disclaimer of Salesforce. Here is the recap of the questions I asked and the answers I received: πŸ’‘

  • Is flow testing for admins? Absolutely.
  • Will tests calculate coverage at some point? That is the vision.
  • Will a lower limit on test coverage be required before you can deploy flows to production? Salesforce asked admins this question, and the response they got was that this needs to be decided at the Org level. The vision is that this will be optional for the admin to decide.
  • Does flow testing show us that the flow will run without errors in production? Not exactly. Flow testing does not execute the actions inside the flow, for example. You can test whether the flow followed a certain path, but you won’t know that the flow action won’t yield errors when executed.
  • What should admins study to understand the principles of testing before tackling flow tests: Code testing and Apex test classes.
  • Where do you see this functionality will take us? What is the grand vision? In a couple of years, we should have an automated testing functionality that can test everything custom in Salesforce Orgs, including code.

I think the last point presents a potential future career opportunity for admins. Please note that we should expect Trailhead content on flow testing in the future. Here is a blog post by Jennifer W. Lee on this functionality.

I would like to thank Henry for his time.

This post was originally made to LinkedIn December 5th, 2022.

Read the previous post: Are You Using the Cut Functionality?

Standard
Flow

Are You Using the Cut Functionality?

I use the flow canvas in autolayout mode. πŸ€–

Before the last release, I went back to freeform whenever I added a decision element in the middle of my flow. When you do that, you get a decision element with multiple empty outcomes, all leading to the next element in flow. πŸ€¦β™‚οΈ

That means you need to rearrange your elements: a few of the existing elements need to go under various outcome branches, and often a few new ones need to be added. I tried reconnecting the outcome branches to the existing elements to get what I wanted, but this did not work very well in most cases. 😀

I went to freeform to delete connectors and reconnect them the way I wanted. Sometimes I could go back to autolayout; some other times, this did not work. In those cases, I had to continue in free form.

Now we have a new powerful tool in the autolayout mode; cut element functionality. I am not positive you all use this. Therefore, I wanted to make sure I remind you that it is there for you to use. βœ‚οΈ

Instead of playing with the connectors and rearranging them you can now point to an existing element in your flow, cut it, and then paste it on one of the decision paths. πŸ“’

Some of you may say, we had copy and paste, what is the big deal? This is partially true. You can use copy and paste to create a copy of the current element, but copy and paste renames the element and its components because the original ones are still on the flow canvas. The names have to be unique. Even if you delete the original one, you end up with an unnecessary renaming job you have to complete. 😫

If you have yet to try cut and paste elements, give it a try now. And if you are still using freeform, give autolayout a try; you will like it. I hardly ever go to free form now. πŸ™

This post was originally made to LinkedIn on November 14th, 2022.

Read the previous post: Do We Know How Scary Flows Are?

Standard
Flow

AND(NextStep = “GoWithTheFlow”​, OR(Type <> “WFR”​, Type <> “PB”​))

I never thought I’d say this. But I guess we need a formula builder inside flow decisions.

I recently got involved with an extensive migration-to-flow project.

Many workflow rules and processes needed to be combined into one single flow. 🚧

When you have complicated criteria in a workflow rule, you can use the formula builder in the flow start element to rebuild the same formula. You need to change field references, of course, but the new formula looks more or less the same as the old formula.

The difficulty comes when you combine a few of these workflow rules into one flow. Now you need to write combined formulas.

And if your cases are not mutually exclusive, you need to build at least two-level decision elements to check whether the original email alert or field update has to be invoked.

I understand that this exercise is a challenging task for many. πŸ˜“

I have especially seen confusion around negative statements like “does not equal to”. Once you combine these with AND and OR, you end up with very challenging formulas. πŸ”₯

This is a broad topic that I would like to discuss with you in a web meeting event. But before I give you more information on that, let me give you one tip about the AND/OR logic πŸ’‘…

When you want to select all Opportunities that are not in Closed-Won or Closed-Lost stage where the NextStep is not blank this is not the formula or criteria you are looking for ❌:

AND(

      NOT(ISBLANK(NextStep)),

       OR(TEXT(StageName)<>”Closed Won”,

        TEXT(StageName)<>”Closed Lost”

         )

     )

This is not correct because the second part of this formula that starts with OR will always yield true.

What you are looking for is this βœ…:

AND(

      NOT(ISBLANK(NextStep)),

       NOT(OR(TEXT(StageName)=”Closed Won”,

         TEXT(StageName)=”Closed Lost”

             )

          )

     )

Here the second part of the formula will give you all opportunities that don’t have the values Closed-Won or Closed-Lost in the StageName field.

I have specific recommendations that will make your life easier when tackling a project like this. I am sure you have many tips as well.

This post was originally made to LinkedIn on October 2, 2022.

Read the previous post: Winter 23 Flow Usability Improvements Will Make Your Life Easier

Standard
Flow, New Release

Winter 23 Flow Usability Improvements Will Make Your Life Easier

Winter 23 comes with several flow usability improvements:

  • The toolbox left panel is turned off by default in auto-layout to make more screen space.
  • Element search on the Add Element screen supports text search for element names and subflows & actions.
  • Salesforce is reporting now that the canvas is bigger with more area to play with.
  • Screen configuration screen in screen flows takes up more screen space to allow more visibility for columns and component previews.
  • Update related records in Record-Triggered Flows got easier: A dedicated radio choice has been added.

Let me show a few of these with supporting images: add element dialogue now supports text entry. Elements, subflows, and actions are returned and displayed on the screen in response to the text search.

When you added a screen element in your flow builder, the configuration screen took a smaller portion of the screen, which made working with the screen design difficult. Now you get a bigger configurator window.

Updating records related to the records that triggered your flow got more guidance with this dedicated radio choice in the Update Records element.

What do you think?

This post was originally made to LinkedIn on September 14th, 2022.

Read the previous post: Winter 23 Flow Formula Syntax Check

Standard
Flow, New Release

Winter 23 Flow Formula Syntax Check

Winter 23 brings you a “check syntax” button on the formula resource configuration screen. Previously we had this functionality only for the collection filter and the start element screens. What did you need to do before this release when debugging your formula resources?

  • You created formula resource(s) and closed out the screen for the formula resource configurator.
  • You saved the flow.
  • You received one or more error messages. These may be related to one or more formula resources.
  • You went back into the formula resource(s).
  • You made corrections and closed out the formula resource configurator.
  • You saved the flow again.
  • You rinsed and repeated. 😫

Now you will do this:

  • Build your formula on the formula resource configurator screen.
  • Click on the “check syntax” button on the same screen.
  • Review the error message and correct the error. Click on the same button and repeat. βœ…

Needless to say, this will bring significant improvement in efficiency.

Now that I have received this functionality, I will ask for one more thing. I know I am getting spoiled:

A formula builder and syntax check in decision elements.

I did not know I needed this. But wouldn’t it be awesome?

πŸ”₯Enjoy

This post was originally made to LinkedIn on October 9th, 2022.

Read the previous post: HTTP Callout in Salesforce Summer 23 – POST (Beta) – 3/3

Standard