Creating multiple Quick Actions for each Record Type means getting a lot of buttons on a page layout. Trying to create this in Flow can streamline the number of buttons down to 1. You can’t show all record types, however, as if a User selects a record type they don’t have access to, things break.
The Get Available Record Types Apex Action will allow you to check a User’s permissions with Record Types on a given object. Simply enter select the Get Available Record Types Apex action.
Then select the object that you want to retrieve the Record Types for.
And set the output of those records to a Record Variable that allows for multiple values with the Object type of Record Type.
You can also get the Default Record Type Id in a Text Variable.
Simply choose them in the output of the Apex Action.
And you can easily assign the default Record Type in your Flow!
NOTE: As of right now, this Apex Action has the main function of getting the Default Record Type. There is a Lightning Component that has been built that will allow you to display the Record Type List to the User, however there is a current Salesforce bug that is preventing this from being able to be added to the Flow Components package. https://success.salesforce.com/issues_view?id=a1p3A000000BMPtQAO Once this is resolved, we will update the package with the Record Type Picklist Lightning Component that will allow you to easily have users select the Record Type of the record they would like to create with the results of the Get Available Record Types Apex Action.
Salesforce Approvals are a great feature that allow you to be able to track approvals and lock records from having any changes after approvals. Sometimes, however, an Approval Process doesn’t fit into the situation that you’re trying to create. You know how to create a custom approval process to achieve the process part of it, but since you’re not using the standard Salesforce Approval Process, you can’t lock the record.
With the Lock Record Apex Action, you can now lock that record.
Use the Lock Record Apex Action with Process Builder to automatically lock a record based on something like, the status going to Approved.
Additionally, you can use Flow and the Apex Actions in Flow to lock a record.
A simple Flow will allow you to lock a record, or add your custom logic to lock the record only after it has gone through a custom approval.
NOTE: Unlike the Unlock Record Apex Action, any user who has edit rights on a record will be able to lock the record. This means that you can lock a record from a Flow button without having to use Process Builder.
One of the great things about Approval Processes is the ability to lock a record so that a user cannot modify that record. One of the hard things to work around is when a locked record needs to be opened up to be edited again, for instance if, during electronic signature, the customer rejects the signature since they want to negotiate.
Enter the Unlock Record Apex Action, available with Process Builder or Flow! It is as simple as adding in your logic, say the a Quote status is updated to Rejected, then unlock the Quote.
Additionally, you can use this in Flow too. Simply select your Apex Action and add the record Id you’d like to unlock.
And voila, your Quote is unlocked! You can leave it as simple as below, or you can add in logic, like ensuring the Opportunity is not Closed Won, or other things like that!
NOTE: If running Unlock Record Apex Action in Flow, it does respect User permissions. So if a User does not have the permission to Edit a Locked Record, then they will not be able to unlock the record by simply clicking a button that launches to a Flow. Use Process Builder as Process Builder runs in system mode. If the logic is too complex for Process Builder, have Process Builder call the Flow to handle the more complex logic and then it can unlock the record. When Flow is called from Process Builder, it runs in system mode as well.
Using Flow is one of the most powerful tools for an admin. The ability to create your own complex workflow allows you to effectively implement your business processes without code.
There are three ways Salesforce has allowed you to launch a Flow from a page as an admin. You can create a button with a URL button, something like “/flow/myFlow”, you can use a Quick Action and run the Flow inside of that, or you can add it to your page layout with the Flow lightning component. These are great ways to be able to run Flows, but there are a few short comings.
First, if you use a Quick Action or a Button, you can’t dynamically show or hide the Quick Action or the Button, you’re stuck using Page Layouts. Second, if you’re using the Flow lightning component, when it loads on the page, it will always run. An example below shows a New Contact Flow that always runs on the page.
This is why we built the Run Flow Button lightning component. Salesforce allows developers to run Flows in lightning components and now we’ve brought this power to the admins.
To use the Run Flow Button lightning component, simply open Lightning App Builder, drag the Run Flow Button lightning component onto your page, enter text for your button, add the Flow API Name, and now you have a button that your users can press when they want to run the Flow.
Since it is a lightning component, you can also dynamically show or hide the button based on the lightning component filter criteria.
With your Run Flow Button configured and your filters set, you’re ready to give your users an enhanced experience with Salesforce lightning!
Lightning Component – Redirect Flow – Use inside a Lightning Flow to dynamically redirect the Flow to any URL you set or allow Users to click on a Button to redirect them. This includes redirecting Users to a record that was created inside the Flow, or adding URL variables, such as with a Conga Composer button, based on User selections inside the Flow.
Lightning Component – Run Flow Button – Use on a Lightning Page to create a button that when clicked, will run a Lightning Flow. Instead of the Flow running automatically when the page is rendered like the standard Flow Component, this will only render the Flow when a User clicks the button. Can be combined with Component Filters to only show the button in certain situations.
Apex Action – Unlock Record – Use inside Process Builder or Lightning Flow to unlock a record. Helpful for unlocking a record after an outside action has happened, such as a Quote being declined in an e-signature process, allowing a User to then edit the Quote again and resend for signature from the client.
Apex Action – Lock Record – Use inside Process Builder or Lightning Flow to lock a record, no standard approval process required. Helpful for building custom approval workflows with record locking at the end when the standard approval workflows are not robust enough.
Lightning Component – Locked Record Notifier – Use on a Lightning Page to notify the User if a Record is locked. Enter in your custom message to the User if the Record is locked in the Lightning App Builder. Lightning Component will not display if Record is unlocked.
Apex Action – Get Available Record Types – Use inside Lightning Flow to get the available Record Types for a User, based on the Object. Default Record Type Id for that User is sent back in addition to the List of Record Types allowed for the User. Use with Record Type Picklist Lightning Component to display Record Type selection to the User in a Lightning Flow.
Coming Soon – Lightning Component – Record Type Picklist – Use this Lightning Component inside a Lightning Flow Screen to display Record Types to the User for selection. Use in conjunction with the Get Available Record Types Apex Action to show a User the Record Types they are allowed to create.
Salesforce Lightning Flow is a powerful tool for Admins to be able to automate business processes and ensure users are following processes. I’ve written a lot about Salesforce Flows at developingflow.com and believe that admins can extend their point and click capabilities by learning Salesforce Lightning Flow.
There is another way to be able to redirect a Flow dynamically based on variables in the Flow. Instead of wrapping a Flow in a Lightning Component, you can instead add the Lightning Component as part of the Flow, either through a Flow Screen or through a Flow Action. There are two use cases here. One is to automatically redirect the user, to not only a record, but to any URL with customized parameters, and the other is to allow the User to click a button to decide where they would like to be redirected to.
Here’s a look at how the buttons look:
So how does this work? Well, using a single Lightning Component, we can either automatically redirect via a Core Action in the new Flow Builder or we can add the Lightning Component to a Screen.
In the above example, you are setting the “Redirect URL”, an input variable to the Lightning Component, with the URL that you would like. In this instance, I created a simple formula field (image below) to set the Contract that was created in the Flow as the finish location.
Additionally, you can add the Lightning Component to the Flow Screen and set the Button Label and the Redirect URL. In the instance below, I am setting the Contract as the Redirect URL for the first Lightning Component and the Account as the Redirect URL for the second Lightning Component. The screenshot below is the admin setup of the screen above with two buttons on it asking to “Navigate to Contract” or “Back To Account”.
I’m sure you’re thinking to yourself, but we still need to create the Lightning Component! Well, you’re half correct. Correct that you need a Lightning Component, incorrect that you need to create it. I’ve created a package for you to be able to download this component. This Lightning Component takes in any URL that you send it through the Flow, so this can be reused again and again with multiple Flows.
As Admins, sometimes we hit our point and click limits. Before Salesforce released Lightning, this usually meant (although not always) that Development would need to be done and Admins would lose some, if not most, control. With Salesforce Lightning, Development should extend an Admin’s control, through input and output variables. A Lightning Component could have been written to send a user to a single URL, which would then require a new Lightning Component for each URL. Instead, by rethinking the way that Admins and Developers interact, the same Lightning Component can be reused again and again by an Admin, in the way that the business needs, allowing an Admin to extend their control with the custom Development work and gaining more power as an Admin.