Collection Actions for Flow (Sort, Filter, Find, Join, Map, and more)

This package contains new Flow actions that are designed to manipulate any SObject or collection of SObjects. This means that in one Flow you might use them with a collection of Accounts and in another flow a collection of Leads.

Install Current Version

Installation links at the bottom of this page.

Video Demo

Updates

New! 7/20: Upsert
New! 6/20: Report Generation

Notes on Dynamic Inputs

Keep in mind that you can insert mergefields as dynamic inputs in these actions. A mergefield takes the form of a reference name surrounded by braces and an exlamation point: {!myUpstreamVar}. So for example, you can use Map Collection like this:

Rating” : “Warm”, “Industry” : “Banking

or like this:

Rating” : “Warm”, “Industry” : “{!myUpstreamVar}

To get the syntax right, use this rule: Flow Builder will replace everything between braces before passing the inputs to the invocable action.

Add or Insert Record

Takes as input a collection of records and a single record, and an optional index value. Returns the combined collection. If the index value is specified and is less than the length of the inputCollection, the

Inputs

List<SObject> inputCollection;

SObject inputRecord

Integer index

Outputs

List<SObject> outputCollection;

Copy Collection

Takes as input a collection of records and returns the collection as output, allowing a new variable or reference to have the same value

Inputs

List<SObject> inputCollection;

Outputs

List<SObject> outputCollection;

Count Records And Fields

Takes a collection of records and returns a count. Optionally also takes a field name and a field value, and then also counts the number of records that have that particular value for that particular field. Returns both the number of matches and the total number of records. Added in V

Inputs

List<SObject> inputCollection;

String fieldName;

String fieldValue;

Outputs

Integer totalNumber

Integer matchedNumber

String errors

DeepClone

Clones a record and one or more sets of its child related records. More Information

Extract Strings From Collection (with Dedupe)

Takes a collection and a field name, and returns a list of strings reflecting the values of those fields for the records. For example, if you pass in a list of Contacts and a fieldName of “Id”, you’ll get back a list of recordIds for the contacts.

Features

  • Extract a text collection or comma-separated string of any field for each record in a Record Collection
    • Particularly useful for Ids, Picklists, Multi-select picklists
  • Optionally de-dupe the values returned from all of the records.
    • Supports Multi-select picklists across all records in the collection
  • Useful when paired with the new AddQuotesToFields and ExecuteSOQL actions to pass in a set of strings wrapped in quotes
  • Ex. Select Name, Email from Contact where Id in (‘003023044333sDl’, ‘003023044333sKF’)

Inputs

  • inputRecordCollection
    • List of records to extract field values from
  • fieldAPIName;
    • API Name of the field you want returned
  • dedupeValues;
    • If true only unique values will be returned. The default value is true

Outputs

  • fieldValueCollection
    • Extracted fields in a text collection
  • fieldValueString;
    • Extracted fields in a comma-separated text variable

Filter Collection

Filters a collection against a formula string which can be created by an included Expression Builder Flow Screen Component.

Inputs

List<SObject> inputCollection;

String formula;

Outputs

String errors;
List<SObject> outputCollection;

Details

For each member of the inputCollection, this action will evaluate the provided formula and add the member to the outputCollection if the formula is true.

The formula must be a string that can be processed by the Salesforce formula engine. The actual engine that evaluates this string is written in Apex and is included in the Collection Processors package.

It will use the recordId of the current member as context, replacing expressions in the formula string of the form $Record.fieldname. For example, if the formula is ‘$Record.Age__c > 21’ and the input Collection is a collection of Student__c, the evaluator will do the following:

Loop through the collection of Student records. For each record:

  1. use its ID and retrieve the record
  2. retrieve the values of any fields present in the formula string
  3. use the formula evaluator to evaluate the formula
  4. If the formula evaluates to true, add the current record to the output collection

Also see ‘Notes on Dynamic Inputs‘ at the top of this post.

Find Record in Collection

Returns all records from the inputCollection that have a field with name targetField that has a value of targetValue. Pass in the name of the object in targetObject (for example, if the inputCollection is a List of Contacts, set targetObject to Contact. There’s probably a way to determine this automatically but it’s not implemented in the action at this time). If there’s just a single result, the result is returned as singleOutputMember. Otherwise it’s returned as multipleOutputMembers. Version 1.20+: MultipleOutputMembers returns null if there are no results

Inputs

List<SObject> inputCollection;

String targetObject

String targetField

String targetValue

Outputs

SObject singleOutputMember;

List<SObject> multipleOutputMembers

Generate Collection Report

Given a collection and a comma-separated list of field names, generates a string that includes all of the field values for every member of the collection. There are now two modes you can use. displayMode ‘simple’ simply throws the information out in simple groups. Useful for some debugging. displayMode ‘table’ generates HTML table markup that’s great for insertion into emails:

For full information on this action, see this post.

Inputs
List<SObject> inputCollection;
String shownFieldsa comma-separated list of the fields you want to show in the table. Make sure to use the full api names, including ‘__c’ for custom fields.
displayMode‘simple’ or ‘table’. defaults to simple
tableStyleStringwill be inserted into the table html as a style attribute: <table style=”[tableStyleString]”>
headerStyleStringwill be inserted into the <th> tags as a style attribute
rowStyleStringwill be inserted into individual row tags (<tr>) as a style attribute
showHeaderBoolean
Outputs

String reportString

Get Child Collection

Takes a record and returns a specified collection of child records related to the input record.

Pass in either a record or a recordID (as a string), but not both. Specify the childRelationshipName, which should be the name of the child Object. Example. If you have an Opportunity and want to retrieve all of the OpportunityContactRoles associated with the input, specify a childRelationshipName of OpportunityContactRole. Note that this should also be specified as the Output Collection.

In childRecordFieldsCSV, specify the fields you want returned as a comma-delimited string. Example: Id,Name

For more information, see https://unofficialsf.com/automate-junction-updates-with-getchildcollection-and-getlookupcollection/

Inputs

SObject inputRecord;
String inputRecordId;
String childRelationshipName;
String childRecordFieldsCSV;

Outputs

List<SObject> childCollection;
String errorText;

Get Lookup Collection

Takes a collection of records and the name of an object related via a Lookup, and returns a collection of objects.

Pass in either a collection of records or a collection of string record ID’s. Pass in the name of the related object. Example: You start with a collection of OpportunityContactRoles and you want to get the Contacts associated with your OpportunityContactRoles via the ContactId Lookup field. In this case you would set lookupObjectName to Contact.

In lookupRecordFieldsCSV, specify the fields you want returned as a comma-delimited string. Example: Id,Name

For more information, see https://unofficialsf.com/automate-junction-updates-with-getchildcollection-and-getlookupcollection/

Inputs

List<SObject> inputCollection;
List<String> inputIds;
String lookupRecordFieldsCSV;
String lookupObjectName;

Outputs

List<SObject> lookupCollection;
String errorText;

Get First

Returns the first member of the inputCollection. The inputCollection is not modified by this action. Make sure that the types of your inputCollection and outputMember match.

Inputs

List<SObject> inputCollection;

Outputs

SObject outputMember;

Join Collections

Takes two collections (of the same type, please!) and returns their union as a single collection.

Inputs

List<SObject> inputCollection1;

List<SObject> inputCollection2;

Outputs

List<SObject> outputCollection;

Map Collection

Takes a collection and a set of key value pairs. Example:

Rating” : “Warm”, “Industry” : “Banking

Goes through the collection and changes each field with a name matching the key to the specified value.

Note that dynamic inputs are supported: “Rating” : “Warm”, “Industry” : “{!myUpstreamVar}“. See above for more.

NOTE: this currently only works for string values.

Inputs

List<SObject> inputCollection;

String keyValuePairs;

Outputs

List<SObject> outputCollection;

String errors;

Remove Record from Collection

Takes a collection and an index integer. Uses the Apex List class remove method to remove the member of the collection at the index location.

Inputs

List<SObject> inputCollection;

Integer index;

Outputs

List<SObject> outputCollection;

Sort Collection

Takes a collection and a sortKeys string formatted as key value pairs (example:

“Name”:”ASC”,”Rating”:”Warm”

Known Issues:

1. Picklist fields are not supported.
2. If some of the records in your collection have a blank value for the field you’re sorting on, it will display the blank ones first no matter which direction you sort
3. The sorting priority is reversed from what I would have thought. It sorts first on the last key pair and then works backwards to the first.

Inputs

List<SObject> inputCollection;

String sortKeys;

Outputs

List<SObject> outputCollection;

Upsert

Upsert will either save or update a collection, depending on whether the collection already has ID’s

For more info, see https://unofficialsf.com/create-or-update-with-the-new-upsertrecords-action/

Discuss Additions, Changes, Improvements, Requests

Thinking of a great addition to this package? Propose it at https://quip.com/6jg3AyrUEFnw/Collaboration-Sheet-for-Flow-Collection-Processors

Installation

Install Prerequisites

Before installing this component you need to have on your org the Flow Base Components support package

Install that here.

1.20.1 Unlocked (adds bulkification to remaining unbulkified actions)

Old Versions

1.19.3 Unmanaged (fix bug in Generate Collection Report)

1.19.2 Unmanaged (adds Upsert)

1.18.1 Unmanaged (Improvements to Generate Collection Report (6/15/20)

1.17 Unmanaged (Improvements to Extract Strings from Collection) 5/23/20

1.16 Unmanaged (fixes packaging issue) 5/5/20

1.15 Unmanaged (fixes a date field bug with Map Collection) 4/28/20

1.14 Unmanaged

1.13 Unmanaged

1.12 unmanaged (taft)

1.1 Adds Count Records And Fields & Extract Strings From Collection

1.0 Unmanaged Package

View Source

Source

Subscribe
Notify of
guest
103 Comments
Inline Feedbacks
View all comments

[…] unmanaged package of collection actions is available for installation here on Spring ’20 […]

Chris V

Thank you for posting these. I’ll be eager to test them out once sandbox preview begins! Do you think any of these will help with the following use case? Its the one I’ve had the most trouble solving with flow. Right now, it takes a lot of loops to get close – Output: An sObject collection of users that are member of a queue – Output: An sObject collection of Groups (queues) that a user is a member of Essentially I built a screen flow to mass add and remove queue members. We have a contact center that requires mass… Read more »

Adam White

In the Filter collection action – how are MSP’s handled? What Operator is being used to do the filtering? Looking at the code I assume it’s just ‘Equals’?

Adam White

Sorry I meant the ‘Find’ action.

Adam White

Separately looks like the formula expression screen component is missing from the ListActions repo – I only see the sortCollection LWC.

Adam W

Nice – thanks Alex! Looking forward to the post!

[…] first upgrade to the Collection Processor package is […]

Rick Haag

Alex, This is amazing! I briefly spoke with Shannon Hale at Dreamforce ’19 about the scenario of manipulating sObject Collection Variables. The specific use case was related reducing the need to run additional queries when all the data required for a flow can be available with a single query (Get Records Element). Options previous to these awesome additions where to loop or query again and again or sometimes both. With the support for generic sObjects, will this allow for the development of an action that will accept an actual SOQL statement? The ability to use options like Group by Rollup/Cube… Read more »

Chris V

Actual SOQL is supported. I created a quick APEX action that accepts the SOQL query as a text and it returns an sobject collection. The only issue is dates are causing an issue since they are being converted into the wrong text format instead of datetime so I’ll eventually need to fix that.

Adam White

Alex – How does the ‘Remove Record from Collection’ action differ from the normal ‘Remove from Position’ collection assignment operator? Both seem to take an integer value as an input.

Alex Edelstein

Functionally they’re the same. Semantically, I’d much rather simply use a Remove Record action than create an Assignment and apply a Remove from Position operator to a Variable.

Juul

Alex, I’ve used your component to delete all cases in the SPAM Queue: https://prnt.sc/rmds72 When I debug it it’s deleting all my SPAM cases. But when I change the flow to run it once a week I’m getting an error that the “Profile does not have access to: removerecordincollection”. Apparently the flow is started by the Platform Integration User which has a chatter free license. When I change this to a Salesforce license with an admin profile I still have the same issue. How can I resolve this? –> FIXED by granting this apex class to the profile. BUT I’m… Read more »

Alex Edelstein

This problem is because that action is not bulkified and you can’t use non-bulkified actions with Schedule Triggers. It’s a pretty quick fix, so we should be able to get to it in the next month or so.

Juul

That would be nice 🙂 thanks for the great toolkit 🙂

Min

FindRecordsInCollection action gives a value of [] for multipleOutputMembers which means you cannot filter it out with Decision element 🙁 Can this be changed to Null?

Adam White

To get around this I just assigned the resulting collection to a number – if the number = 0 , then treat it like a null

Alex Edelstein

This has been fixed in the latest version

Peter Bender

I’m still getting a non-null value in the collection when it should be null with the latest version 1.19.3:

Outputs:
{!v_coll_ProjectObjectives_Matched} = multipleOutputMembers ([])
{!v_rec_ProjectObjective_Matched} = singleOutputMember (null)

Decision element following the action:
Skipped this outcome because its conditions weren’t met: outc_Single_dec_Target_Proj_Obj_Already_Exists
Outcome conditions:
{!v_rec_ProjectObjective_Matched} (null) Is null false

Outcome executed: outc_Multiple_dec_Target_Proj_Obj_Already_Exists
Outcome conditions:
{!v_coll_ProjectObjectives_Matched} ([]) Is null false

[…] actions found on UnofficialSF.com. You could use the ‘Extract Fields’ action from the Collections Processor Package to do a query, run the invoked action to get a text collection of IDs, then pass that into the […]

Chris Manick

Thank you for this amazing set of tools. They’ve been very useful so far. I am seeing one issue: When updating a picklist using the Map Collection action, if the new value in the key value pair is set with a variable (e.g. “State__c : {!varState}) and if the value in that variable contains a space, the updated value only includes the first word and cuts off the rest of the string. E.g. updating to “New York” results in “New.” But updating to “Florida” will update correctly. Edit: I replaced the variable with a formula and got the same result,… Read more »

Alex Edelstein

Try putting both sides in quotes:
“State__c” : “{!varState}”

Mad Kurupt

Hi, Thanks for those usefull tools 🙂 One thing i don’t understand is when i try top map a collection i don’t know how to handle the key values : Do i have to put it in the dedicated input field of the action or do i have to create a variable or formula and then put it in the input field of the action? Also ,for example if i want to change the name and the type of an account what is the correct way of writing the key values? just type “Name”:”NEWNAME”,”Type”:”NEWTYPE” in the input field for key… Read more »

[…] and output attributes with generic types of SObject or SObject[]. This allows for the creation of powerful new types of actions that you can install and […]

Robert Winger

I am trying to use GetChildCollection action on the Case object (I am trying to get the child cases from a parent case). I get the following error: Outputs: errorText (No such column ‘Name’ on entity ‘Case’. If you are attempting to use a custom field, be sure to append the ‘__c’ after the custom field name. Please reference your WSDL or the describe call for the appropriate names.) childCollection ([]) I tried it on another object (Account) that has a parent id and it worked. Since the Case object doesn’t have a field called “Name”, is that an issue?… Read more »

Alex Edelstein

Yeah, Case always requires special handling because it doesn’t have a Name field, and I think we just forgot that Cases can be child records. I’ll put this on the list of things to fix.

Eric Smith

Alex,

I’ve added some logic to my datatable component to get the “Name” field from an object (like Case). I’ll send you the code I’m using.

Alex Edelstein

This has been fixed (now works with Case) in the latest version, which no longer expects a Name field

[…] Install via Collection Actions […]

Craig Woodman

This is an excellent series of components! One Question – I cannot get the MapCollection to work with a date field. Any thoughts? I am mapping a userID in the same pairs denotation, and it maps fine, but the date – not so much.

Alex Edelstein

Are you trying with the version 1.15 published a few days back? It fixed a date bug. If you are and you’re still hitting problems, what is the specific input you’re using? Can you provide exact repro steps?

Craig Woodman

I have the version 1.13 – I un-installed and attempted to download the package for 1.15, and got the message that my Org isn’t ready for it, and to check back in a couple of days. I will let you know.

Alex Edelstein

Try the new 1.16 version

Craig Woodman

I installed it this morning. I still cannot get dates to map. A couple of things from debugging: Here are my key pairs: “Last_Sales_Activity_Date__c”: “6/5/2020″,”Last_Sales_Activity_By__c”:”{!Task_Information.OwnerId}” I have tried the dates hardcoded and with formula fields for today – no difference. Here is the debugger assigning (the date is different – I had it different at the time): keyValuePairs = “Last_Sales_Activity_Date__c”: “5/6/2020″,”Last_Sales_Activity_By__c”:”{!Task_Information.OwnerId}” (“Last_Sales_Activity_Date__c”: “5/6/2020″,”Last_Sales_Activity_By__c”:”0052M000008cnh6QAA”) Again, User ID assigns fine. I have tried the pairs with quotes, without, in all combinations – no difference. One piece – on the update – the variable shows the date field as this: [Last_Sales_Activity_By__c=0052M000008cnh6QAA,Last_Sales_Activity_Date__c=6/5/2020 8:00 (never… Read more »

Alex Edelstein

Hmm. We’ll take another look.

Craig Woodman

Just wanted to circle back here again… I figured this out!! The date field will not map to just a date – it needed a datetime value. I delivered this with a formula, DATETIMEVALUE({!whaterverdatefieldyouareusing}) and then referenced this formula in the keyed pairs. Worked like a charm! It sets the time at 8:00 PM (as referenced in the above post) but since this is only a date field, the time is ignored.

Just wanted to pass this on in case anyone else was looking!

Eric Smith

Be careful with that Craig. You might be getting 8:00PM for the day BEFORE the date you want. 8:00PM DST is the same a Midnight GMT. Take a look at my convert Date to Datetime Flow Action. https://unofficialsf.com/convert-date-to-datetime-flow-action/

Craig Woodman

An excellent action Eric! But for this case, what I think is happening, is that the MapCollection action will not accept just a date to map to a date field, but needs to have the datetime value. Then, it seems to ignore the time component. I verified that with the output from the mapping, that it was for the correct date. I suspect this just has to do with the way that the Apex matches the value (see my reply above noting the date and time component shown with just a date field).

Craig Woodman

And again, I must defer to the master — @Eric – you are 100 percent right, as usual!

Mark Riley

Hi Alex. Is there a way of using some of these amazing collection actions to operate on ‘vanilla’ variable collections , ie a collection of parsed values from a string, or is this only reserved for record collections which invariably require a specification of a target object for the action.

Regards, Mark Riley

Alex Edelstein

It isn’t hard to add support for String collections; it just hasn’t been a priority. Which functions are on top of your list?

Mark Riley

Hi Alex, Its not actually a common requirement from us. But if the feature was available I guess the primary needs would be: Count strings, Extract Strings, find strings.
Regards Mark

Martin Nara

interesting im unable to install latest version via sandbox.

This app can’t be installed.
There are problems that prevent this package from being installed.
Mismatching Versions The AppExchange Application or component you have selected is not yet available on your instance of salesforce.com. Please check back in a few days to retry the installation. Press the back button of your browser now and bookmark the AppExchange Directory page so that you can find it later.

Alex Edelstein

Try the new 1.16 version

Bobby K

Hi Alex – I am now getting the same error mentioned above with the 1.18.1 version. Any idea what the problem could be? I am not running a preview instance for the SB I am trying to install in fwiw. Thanks!

Alex Edelstein

all versions are now in sync on Summer ’20 so this would be a good time to retry with the latest version

Craig Woodman

Hi Alex, I was using the “Get First” action, and receive the message “The Element in your Flow has validation errors.” I am using a collection variable to pass in, and a single record variable to pass out. Doesn’t matter the settings of “Enforce Single.” Any thoughts?

[…] Install the latest Collection Actions set here. […]

[…] Install the latest Collection Actions set here. […]

[…] a CSV file from a ‘Complicated Collection’ – Utilize UnofficialSF’s Collections Processors to create collections of records that would be impossible with Salesforce Reports or even […]

Cole

I am trying to use the filter collection, but keep getting SQL 101 Error because my collection is around 2,000 records? Does anyone have an suggestions to solving this?

Gidi Abramovich

Hi,
I’m looking for an Apex Action that will imitate the Assignment Element.
This will help us to cope with the “Number of Iterations” limitation in Flow.
The only action that looks useful for this purpose is the Map Collection, but it seems to me that it doesn’t allow dynamic variables.
 
Any thoughts?
 
Gidi
 
 
 
 
 

Gidi Abramovich

So, after some testing, I’ve found how to use the Map Collection to imitate the Assignment Element dynamically.
This is really great!!!

Clayton

Thank you so much for this great set of resources!!
I’ve been running up against the Flow limits but using these actions I was able to build my flow with no problems.
I’m just curious, why is there an Opportunity List View in the package?
Thanks!
 

Last edited 3 months ago by Clayton

[…] action is part of the Collections Action package and the features described here are available starting in version 1.18 of that […]

[…] focus on the same use case and will show how in some circumstances, you can use a community built MapCollection apex action from UnofficialSF to update the items in the collection, thus, simplifying the flow by removing the […]

Chris Phillips

Hey Alex. I don’t see the thread of our previous discussion on here so I’m starting a new one.

The instructions you have for sort still shows the following as instructional text for the keypair formatting:

“Name”:”ASC”,”Rating”:”Descending”

However, I got a reply back a couple of weeks ago on Github from Brian Hayes with the following
I noticed that that DESC is explicitly tested for and anything else is considered ascending.”

https://github.com/alexed1/LightningFlowComponents/issues/313#issuecomment-644577112

May be worth updating the instructional text with “DESC” instead of “Descending”

[…] In this step, I look for a record in the collection of Edited records with the same Id as the current Selected record in the loop.  The “Find Records In Collection” Flow Action is part of a group of very powerful actions you can include in your flows to act on record collections.  The entire group can be found and installed from here. […]

[…] the Collection Actions package, starting with […]

Fred Tchang

Hi- these collection actions are exactly what I need! I have v. 1.13, and was attempting to upgrade to 1.193, but it gave me an error, “Cannot add component of type:ApexClass named:SearchUtils subjectId:01p1Y0000074fXz to another package because it is an installed component.” Do I need to uninstall v 1.13 first? Wouldn’t that cause a problem for already existing flows that might be using actions?

Thanks for your help.

Lauren Bird

Hi. Thanks for this great set of tools. Can ‘Find Record In Collection’ be used with a collection of Record Types?

Keith Lowry

I tried to install the latest 3 versions and all fail. Your request to install package “CollectionActionsA ver 0.1” was unsuccessful. None of the data or setup information in your salesforce.com organization was affected. If your install continues to fail, contact Salesforce CRM Support through your normal channels and provide the following information. Package: CollectionActionsA (04tB0000000P0ru) Problem: 1.  Apex compile failure Apex class FilterCollectionTest: line 12, column 21: Variable does not exist: sourceAccountCollection 2.  Apex compile failure Apex class FilterCollectionTest: line 13, column 64: Variable does not exist: sourceAccountCollection 3.  Apex compile failure Apex class FilterCollectionTest: line 19, column 21: Variable does not… Read more »

Keith Lowry

I can’t get this install to work. It keeps failing. Your request to install package “CollectionActionsL ver 0.1” was unsuccessful. None of the data or setup information in your salesforce.com organization was affected. If your install continues to fail, contact Salesforce CRM Support through your normal channels and provide the following information. Package: CollectionActionsL (04tf4000003RQoy) Problem: 1.  Apex compile failure Apex class FilterCollectionTest: line 12, column 21: Variable does not exist: sourceAccountCollection 2.  Apex compile failure Apex class FilterCollectionTest: line 13, column 64: Variable does not exist: sourceAccountCollection 3.  Apex compile failure Apex class FilterCollectionTest: line 19, column 21: Variable does not exist:… Read more »

Alex Edelstein

do you have any old versions of Collection Actions on this org? These error messages refer to an old version. And the error message about ‘CollectionActionsA’ is strange. What install link did you click on that produced that error?

Try uninstalling anything on that org that appears to be Collection Actions related, if possible

Keith Lowry

I do not have any other versions installed. I tried the first 3 install links.
1.19.3 Unmanaged (fix bug in Generate Collection Report)
1.19.2 Unmanaged (adds Upsert)
1.18.1 Unmanaged (Improvements to Generate Collection Report (6/15/20)

All failed with same errors.

Keith Lowry

For what it’s worth it will also not install in Sandbox.

Keith Lowry

anything else to try?

Keith Lowry

Any other ideas? Or another install link? If I can’t get this today I will just have to not use it. Unfortunately that means removing your AddQuotesToStrings, SOQL and other tools as well because they kind of all need each other. And the fact that the datatable2 won’t work with your SOQL means I will have to uninstall it as well. I’ve been waiting 6 days with no reply or support from anyone :/

Alex Edelstein

in this case, I’d bypass the package install process, and just try copying and pasting the files you need using Developer Console. My guess is that you only need a handful of the actions for your particular use case. These are apex classes, so just create a New Apex Class and then paste in the corresponding code from the source files (see the source link, probably at the bottom of the post)

Keith Lowry

There are a few Id like but the main one is the Extract Strings from Collection w/Dedupe

Craig

Hi. Thank you for this component. Is there an easy way to install it in a sandbox? When I click on 1.19.3 Unmanaged the login seems to be for production only.

Alex Edelstein

just take the url there and switch ‘login’ to ‘test’

Chase Hogan

Hey There,

I am having an issue with the sort function, as the Key Pairs seem to be giving me an “System.NullPointerException: Attempt to de-reference a null object” error. I am not sure what I am doing wrong, as I am following your syntax as such:
sortKeys = “Name”:”ASC”,”Ending”:”DESC”

Thanks,

Chase

[…] Actions for Flowhttps://unofficialsf.com/list-actions-for-flow/ […]

[…] You can now use Custom Property Editors with Actions and Screen Components that use inputs of type SObject or SObject[]. This opens up the use of Custom Property Editors to screen components like the Datatable shown above and actions like the Collection Actions. […]

Ben

Thanks to everyone that helped with these.

My question is on the map collection action. I’d like to take in a collection and update a field with another field. So I thought my key value pair would be like “Case__c”:”{!getSurveys.caseID}”. It doesn’t seem to like that, so am I doing it wrong or is there a better way.

[…] of Custom Property Editors to screen components like the Datatable shown above and actions like the Collection Actions. This is called Dynamic Type Mapping which you can learn about […]

[…] of Custom Property Editors to screen components like the Datatable shown above and actions like the Collection Actions. This is called Dynamic Type Mapping which you can learn about […]

Josh Dayment

Does anyone happen to have a test class they could share for this I made the changes to the apex in my sandbox to overcome the regex issues with custom fields but can’t figure out the test class to save my life.