Default Flow Picklist Value Without Duplicates

Flows are great but there are some quirks. One quirk is that a picklist input field can’t be prepopulated with the existing picklist field value from a record. There are some workarounds:

and there’s even an Idea: Flow – Pre-populate choices with dynamic values (variables).

The workarounds are good but one minor nuisance is that they cause the current picklist value on the record to be duplicated in the dropdown list.

Below is my solution that doesn’t have a duplicate option by using the PicklistValueInfo standard object in a Dynamic Record Choice.

High-Level Solution

  1. Query the record with the desired fields including the picklist field(s) using a Record Lookup or Fast Lookup.
  2. Create “Current Picklist Formula” that has an expression like “If(IsBlank(record.PicklistField), ‘Select an option’, record.PicklistField) so the formula can be used to dynamically use either the record’s picklist value if there is one or ‘Select an option’ if it’s blank.
  3. On a screen, create a picklist input with the following settings:
    • Choice – Use the current picklist formula as the label and stored value
    • Dynamic Record Choice – Use the PicklistValueInfo standard object to query all the picklist values except the currently selected value.
    • Set the Default to the “current choice”.

Industry Example

Let’s create a flow that allows one to quickly update the Industry field on an account record in Lightning.

Create recordId Variable

Query Account Record

Use a Record Lookup or Fast Lookup to query the account or desired record using the recordId variable. In the screenshot below, a Record Lookup is used. Note how the current industry is stored in the “Current_Account_Industry” variable.

Create Industry Default Choice Formula

Now, let’s create the “Industry_Default_Choice” formula that uses

  1. The “Current_Account_Industry” variable if it’s not blank.
  2. “Select an Industry”, otherwise.

Create “Selected Industry” Variable

Another quirk that drives me crazy is having to create a variable for a dynamic record choice to be saved to before it’s created. That’s needed because a dynamic record choice doesn’t allow one to create a variable on the fly like most other places.

Create a “Selected_Industry” variable like:

Create the Industry Input Field

Let’s start with the finished “Industry” dropdown list input field.

To create this, add a Dropdown List Input field to the desired screen.

Next, create a new “Choice” through the Add Choice link using the following settings:

The “Industry_Default_Choice” formula is used for both the Label and the Stored Value so they both can be dynamic. I.E. if the account has an industry, then it’ll be defaulted. Otherwise, “Select an Industry” is used.

Next, create the “Industry_Picklist_Choices” Dynamic Record Choice with the following settings:

Let’s break this down a bit. The “PicklistValueInfo” standard object contains all the picklist values for every picklist field on every object in the org. The “EntityParticleId” column has values in the format of <Object_API_Name>.<Picklist_API_Name>. In this example, the “Industry” field from the “Account” object is used so “Account.Example” is used to query all the Industry picklist records. Note: If it’s a custom picklist field, see the Custom Picklist Field Considerations section below to determine the correct EntityParticleId value.

The second filter of “Value  does not equal  {!Current_Account_Industry}” will exclude the current industry, if there is one. If no industry is selected, all the active Industry picklist values are shown.

Now, simply use the {!Selected_Industry} variable as needed in the flow to do something with the selected value.


  • The list of industry picklist values are dynamic and change automatically without having to alter the flow as the Industry picklist values change.
  • The inactive picklist values are automatically excluded.
  • There’s no duplicate value in the list.


  • The picklist values available per record type aren’t honored. The user sees all the active picklist values.

Custom Picklist Field Considerations

Andy Kallio mentioned in this Success Community Post that custom picklist fields have an EntityParticleId like “Object.00NE0000000Y1CD” instead of “Object.Custom_Picklist__c”. To determine the correct EntityParticleId to use, query the EntityParticle object filtering by the desired object, find the desired field and then use the FieldDefinitionId value. Here’s the template SOQL query to use:

SELECT EntityDefinitionId, QualifiedAPIName, FieldDefinitionId
FROM EntityParticle
WHERE EntityDefinition.QualifiedApiName = ‘<SObject_Name_Here>’

After the correct FieldDefinitionId is found, use that in the Dynamic Record Choice so the correct picklist values are used. If you have a better way to get the field definition id, please let us know in the comments.

What did you think of the solution?


2 thoughts on “Default Flow Picklist Value Without Duplicates”

  1. Hi,
    Thanks for this solution! It is exactly what I need, however, it is working well only up till the step where I create a dynamic record choice. I am trying to query a custom object, so I set —-. This does not return any values to the picklist. All I see is the default ‘CurrentValue’ that I set. Could there be something else that is going on?

    1. Make sure the EntityParticleId is in the form {Custom_Object_Api_Name}.{Picklist_Field_API_Name}. For example if you have a custom object named Example__c with a picklist api name of Picklist__c then the EntityParticleId should be “Example__c.Picklist__c”.

      Another thing I wonder is if security is restricting the values. If you run the flow as a system admin, can you see the picklist values? If you can as a system admin but not as a non-admin, then it’s probably security related and this solution may not work so one of the others listed in the article should be explored.

Leave a Reply

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