<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Multi-Select-Picklist on Uwe Braig</title><link>https://blog.uwe-braig.de/tags/multi-select-picklist/</link><description>Recent content in Multi-Select-Picklist on Uwe Braig</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 24 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.uwe-braig.de/tags/multi-select-picklist/index.xml" rel="self" type="application/rss+xml"/><item><title>How to Build a Complex Validation Rule for Multi-Select Picklist in Salesforce Flow</title><link>https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/</link><pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/</guid><description>&lt;p&gt;Multi-Select Picklists can be tricky to handle when it comes to validations. In this article I will show how a Flow with the &amp;ldquo;Custom Error Message&amp;rdquo; element can be used for a validation logic that can be way more complex than with the &amp;ldquo;classic&amp;rdquo; validation rules.&lt;/p&gt;
&lt;p&gt;The example requirement is to create a validation message upon record save for a multi-select picklist field &amp;ldquo;Product Interest&amp;rdquo; as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We want to allow users to choose additional values, e.g. add &amp;ldquo;Dairy Products — Butter&amp;rdquo; to the &amp;ldquo;chosen&amp;rdquo; list.&lt;/li&gt;
&lt;li&gt;But we want to prevent users from un-selecting values, e.g. remove &amp;ldquo;Fruits — Apples&amp;rdquo; from the &amp;ldquo;chosen&amp;rdquo; list.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/01-picklist-field.png"
			alt="Multi-select picklist field Product Interest"&gt;&lt;figcaption&gt;
			&lt;p&gt;Multi-select picklist field &amp;ldquo;Product Interest&amp;rdquo;.&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="the-data-model"&gt;The Data Model
&lt;/h2&gt;&lt;p&gt;The example will be shown with a multi-select picklist custom field on the Lead object:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;API Name: ProductInterest__c
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Label: Product Interest
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Data Type: Picklist (Multi-Select)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Global Value Set: Product Groups
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The global value set &amp;ldquo;Product Groups&amp;rdquo;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Values API Name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;------------------------- ---------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Dairy Products - Butter Dairy.03
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Dairy Products - Cheese Dairy.04
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Dairy Products - Milk Dairy.01
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Dairy Products - Yogurt Dairy.02
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Fruits - Apples Fruits.01
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Fruits - Bananas Fruits.02
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Fruits - Oranges Fruits.04
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Fruits - Strawberries Fruits.03
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sweets - Chocolate bars Sweets.01
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sweets - Cookies Sweets.02
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Vegetables - Broccoli Vegetables.02
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Vegetables - Carrots Vegetables.01
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Vegetables - Spinach Vegetables.03
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="the-flow"&gt;The Flow
&lt;/h2&gt;&lt;p&gt;See below the preview of the flow we are about to build:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/02-flow-overview.png"
			alt="The Validation Flow"&gt;&lt;figcaption&gt;
			&lt;p&gt;The Validation Flow&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id="start-element"&gt;Start Element
&lt;/h3&gt;&lt;p&gt;Create a &amp;ldquo;Record-Triggered Flow&amp;rdquo; that runs before the record is saved. (Will also work with an after-save flow if this better fits your use case.)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Object: &lt;strong&gt;Lead&lt;/strong&gt; (or any other standard or custom object)&lt;/li&gt;
&lt;li&gt;Trigger the Flow When: &amp;ldquo;&lt;strong&gt;A record is updated&lt;/strong&gt;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Condition Requirements: &lt;strong&gt;Field &amp;ldquo;Product Interest&amp;rdquo; Is Changed = True&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/03-start-element.png"
			alt="Start Element configuration"&gt;&lt;figcaption&gt;
			&lt;p&gt;Start Element configuration&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id="helper-constant"&gt;Helper Constant
&lt;/h3&gt;&lt;p&gt;Define a Constant as follows for clearer reference inside the Flow:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/04-constants.png"
			alt="Section Constants"&gt;&lt;figcaption&gt;
			&lt;p&gt;Section &amp;ldquo;Constants&amp;rdquo;&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/05-constant-delimiter.png"
			alt="Define the semicolon as a constant PicklistValueDelimiter"&gt;&lt;figcaption&gt;
			&lt;p&gt;Define the semicolon &amp;ldquo;;&amp;rdquo; as a constant PicklistValueDelimiter&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id="helper-variables"&gt;Helper Variables
&lt;/h3&gt;&lt;p&gt;We will need two helper text variables:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/06-variables.png"
			alt="Section Variables"&gt;&lt;figcaption&gt;
			&lt;p&gt;Section &amp;ldquo;Variables&amp;rdquo;&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;defined as follows:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/07-variable-current.png"
			alt="Text Variable: CurrentPicklistValues"&gt;&lt;figcaption&gt;
			&lt;p&gt;Text Variable: CurrentPicklistValues&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/08-variable-prior.png"
			alt="Text Variable: PriorPicklistValues"&gt;&lt;figcaption&gt;
			&lt;p&gt;Text Variable: PriorPicklistValues&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id="get-the-object-definition"&gt;Get the Object Definition
&lt;/h3&gt;&lt;p&gt;A &lt;strong&gt;Get Records&lt;/strong&gt; element to get the object &amp;ldquo;&lt;strong&gt;Entity Definition&lt;/strong&gt;&amp;rdquo; with the definition of the object we are working on, here: Lead.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/09-get-object-definition.png"
			alt="getObjectDefinition"&gt;&lt;figcaption&gt;
			&lt;p&gt;getObjectDefinition&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;em&gt;If you want to do this with a custom object, don&amp;rsquo;t forget to add &amp;ldquo;__c&amp;rdquo; to the API Name, e.g. &amp;ldquo;MyCustomObject__c&amp;rdquo;.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="get-the-field-definition"&gt;Get the Field Definition
&lt;/h3&gt;&lt;p&gt;A &lt;strong&gt;Get Records&lt;/strong&gt; element to query the object &amp;ldquo;&lt;strong&gt;Field Definition&lt;/strong&gt;&amp;rdquo; for our multi-select picklist field &amp;ldquo;&lt;strong&gt;ProductInterest__c&lt;/strong&gt;&amp;rdquo; using the &amp;ldquo;Durable Id&amp;rdquo; we&amp;rsquo;ve got in the previous step:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/10-get-field-definition.png"
			alt="getFieldDefinition"&gt;&lt;figcaption&gt;
			&lt;p&gt;getFieldDefinition&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id="get-the-active-picklist-values"&gt;Get the Active Picklist Values
&lt;/h3&gt;&lt;p&gt;A &lt;strong&gt;Get Records&lt;/strong&gt; element to query the object &amp;ldquo;&lt;strong&gt;Picklist Value Info&lt;/strong&gt;&amp;rdquo; for all currently active picklist values for this field:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/11-get-picklist-values.png"
			alt="getActivePicklistValues"&gt;&lt;figcaption&gt;
			&lt;p&gt;getActivePicklistValues&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make sure the setting under &amp;ldquo;How Many Records to Store&amp;rdquo; reads &amp;ldquo;&lt;strong&gt;All records&lt;/strong&gt;&amp;rdquo; (unlike the other Get Records elements before).&lt;/li&gt;
&lt;li&gt;This will only return active picklist values. There is no way to query for inactive values with this method.&lt;/li&gt;
&lt;li&gt;In case you are using Record Types, also be aware: This will only return picklist values for the current record type of the current record.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="convert-the-picklist-field-values-to-delimiter-separated-text-variables"&gt;Convert the Picklist Field Values to Delimiter-separated Text Variables
&lt;/h3&gt;&lt;p&gt;An &lt;strong&gt;Assignment&lt;/strong&gt; Element as follows:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/12-assignment-convert.png"
			alt="convertPicklistToText"&gt;&lt;figcaption&gt;
			&lt;p&gt;convertPicklistToText&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;En detail, this reads:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{!CurrentPicklistValues} Equals {!$Record.ProductInterest__c}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{!PriorPicklistValues} Equals {!$Record__Prior.ProductInterest__c}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{!CurrentPicklistValues} Add {!PicklistValueDelimiter}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{!PriorPicklistValues} Add {!PicklistValueDelimiter}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="loop-through-the-active-picklist-values"&gt;Loop Through the Active Picklist Values
&lt;/h3&gt;&lt;p&gt;Now we loop through all the values as per record collection returned by getActivePicklistValues:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/13-loop.png"
			alt="loopPicklistValues"&gt;&lt;figcaption&gt;
			&lt;p&gt;loopPicklistValues&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;For each known picklist value, we check whether it was present in the PRIOR value but is missing in the CURRENT value. If such case occurs, we know that we need to raise the validation error message towards the user:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/14-check-removed.png"
			alt="Check Has it been removed"&gt;&lt;figcaption&gt;
			&lt;p&gt;Check_Has_it_been_removed&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The condition logic reads &amp;ldquo;&lt;strong&gt;1 AND NOT 2&lt;/strong&gt;&amp;rdquo; with the following conditions:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{!PriorPicklistValues} Contains {!LoopPicklistValueWithTrailingDelimiter}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{!CurrentPicklistValues} Contains {!LoopPicklistValueWithTrailingDelimiter}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;where &amp;ldquo;LoopPicklistValueWithTrailingDelimiter&amp;rdquo; is a helper text formula defined as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{!loopPicklistValues.Value} + {!PicklistValueDelimiter}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="validation-error-message"&gt;Validation Error Message
&lt;/h3&gt;&lt;p&gt;Upon the first occurrence of such case, we use the &amp;ldquo;&lt;strong&gt;Custom Error Message&lt;/strong&gt;&amp;rdquo; element to raise the validation error to the user and stop the flow:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/15-validation-message.png"
			alt="ValidationMessage"&gt;&lt;figcaption&gt;
			&lt;p&gt;ValidationMessage&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="show-case"&gt;Show Case
&lt;/h2&gt;&lt;p&gt;Now let&amp;rsquo;s run a test: Go to the example Lead, click &amp;ldquo;Edit&amp;rdquo; and play around with the multi-select picklist fields. Once you try to save the record after un-choosing a picklist value, the validation error message will be shown:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://blog.uwe-braig.de/how-to-build-a-complex-validation-rule-for-multi-select-picklist-in-salesforce-flow/16-test-run.png"
			alt="Test Run"&gt;&lt;figcaption&gt;
			&lt;p&gt;Test Run&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="conclusion-and-considerations"&gt;Conclusion and Considerations
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;The &amp;ldquo;Custom Error Message&amp;rdquo; flow element has the same effect as a traditional validation rule: Once fired, the save transaction will fail and the user (in case of a UI transaction) or the caller of the interface (in case of an API/Dataloader transaction) will get the custom error message.&lt;/li&gt;
&lt;li&gt;Record-triggered flows are way more flexible for implementing complex validation logic compared to the formula field-style &amp;ldquo;classic&amp;rdquo; validation rules.&lt;/li&gt;
&lt;li&gt;Always be aware of the &amp;ldquo;order of execution&amp;rdquo;: In our example, we&amp;rsquo;ve used a before-save flow as this gives best performance in such scenario and we know that, by our design, no other logic will touch the picklist values on our record. But you need to assess whether other parts of other flows might update the picklist fields and you need to put the validation elsewhere in the order of execution, e.g. by setting &amp;ldquo;Trigger Order&amp;rdquo; in the flow properties and/or switching to an after-save flow.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;Get Records&amp;rdquo; on &amp;ldquo;Picklist Value Info&amp;rdquo; only ever will see and return active picklist values for the given record type. Hence, we cannot identify the (very special) case where the user decides to un-choose a value that is a now-inactive picklist value: We don&amp;rsquo;t know about it, hence we won&amp;rsquo;t check for it in our loop.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;This article has been written as per Summer &amp;lsquo;25 release.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For more information about handling picklist values in Flow also see the article&lt;/em&gt; &lt;a class="link" href="https://blog.uwe-braig.de/how-to-get-picklist-labels-in-salesforce-flow" &gt;&lt;em&gt;&amp;ldquo;How to get Picklist Labels in Salesforce Flow&amp;rdquo;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>