Gorav Seth

Salesforce MVP | Permaculture designer

Page 3

Fast Lookup in Flow can use 15 or 18 character ID

Just in case you were wondering, fast lookup element in flow can use a 15 or 18 character ID.

I have a flow that uses custom metadata type to determine which parent record to use, and I created two MDT records - one w a 15 character ID and one w an 18 character ID. Both worked

However, if you are trying to do a comparison to say check if an ID is already in a collection, then 15 and 18 are not equivalent, and you must stick with one length. I say stick w 18, b/c flow will save record as 18

I see in a SFSE thread that global variables such as User.Id will resolve as 15 character IDs, but Account Owner comes through as 18 character ID…so there is some murkiness under the covers. Best to stick w 18 and throw caseSafeId on the IDs, though you could also just use a LEFT function on all IDs…

Continue reading →

Debugging flows

Tips and tricks for debuging flows

Use an initial assignment element to set your variables. Makes testing flows much easier. H/T : salesforceyoda

Insert screen elements for breakpoints, but just include text in them for starters, ie breakpoint1. You don’t want the screen element itself to trigger an error, which can happen if you include formulas, etc. Once you can get through the breakpoint, then add variables to display detailed info.

If your flow is autolaunched, you can debug using a send-email element instead of a screen element, but if you are building a new flow its easier to debug using screen elements and you can switch to autolaunched later.

You can display sObject variables and sObject collections in screens. The collection will display a list of IDs if populated, or a list of commas if the sObjects have not been inserted yet, or nothing if it is null.

If you flow...

Continue reading →

A List of Flow Posts and Resources

my posts

other folks posts and blogs
5 best practices in building a flow
a naming convention for flow elements
its very important to use a naming convention on your flows as well, ie Object - Functionality
customize what happens when a...

Continue reading →

Ideas that need no explanation

There are plenty of obscure-but-worth ideas, but those wont show up in this post. This post is an ongoing list of ideas that shouldnt be ideas at all.


Adding help text for name fields

Description fields on public groups

will keep adding them as i come across them

View →

buried killer lightning feature in winter 17

Buried deep on p 359 in the winter 17 release notes, lies this understated gem of a feature

Assign a Custom Record Page to Lightning Apps, or Make It the Default for All

3 sentences of description and zero screenshots later, and its over.

And, you may ask, why is this such a killer feature?

It embraces the fact that one person can have multiple roles - and that in those different roles, they need to do, and see, different things. This is about the end user being able to see and do what they need to do the task at hand, which is very common at nonprofits, and I imagine far beyond.

Until now, one user has a profile, and when they looked at an account, it would always have the page layout reflected by their profile. Sure, you could have different account record types, but the sales user would always see one layout for one account type. There was no easy way for them to see a...

Continue reading →

Working with Existing Attachments in Visual Workflow

You can manipulate attachments in visual workflow (i’m working with the old-fashioned attachments object, but this should work w/ files, which are stored as contentDocument / contentVersion / contentDocumentLink).

What works: manipulating existing attachments by looking up the attachment(s) and storing them in a sObject variable/collection, including the body field. Use assignment elements to set the ParentID to its new parent, and use a fast create to insert the sObject variable/collection.

What wont work: Doing anything with the body field, other than including it in a sObject variable/collection. For example, I tried to map a text variable to body and create a new text attachment, and that fails. Body is a base64 field type, and I have not found any flow field type that can map to it. So you can only lookup an existing attachment and change the parent ID - you cant create new...

Continue reading →

Using a dynamic choice to select multiple records in visual workflow

With a small trick, Dynamic choice elements in visual workflow can be used to display multiple records, and only act on the selected record(s).

In a previous post, I described how to create a button that could copy all attachments from an email to the parent case.

I’ll now describe a more advanced version, which uses a dynamic choice to display a checkbox for each attachment, and only attaches the selected item(s).

The dynamic choice flow resource makes it straightforward to display multiple records as checkboxes. However, it does not provide a clear mechanism to take action when multiple records are selected. Dynamic Choices can only be mapped to a sObject variable, not a sObject collection. sObject variables can only store a single record, and therefore per the docs, only the most recently selected record that will be stored.

When a multi-select choice field uses a dynamic...

Continue reading →

Takeaways from a short Dreamforce

I came, I saw U2, I’m flying home.

My dreamforce is over, though today is a huge day with all of the product keynotes. Here are my initial takeaways this year, from the perspective of a declarative developer at 30,000 feet.

Lightning is maturing. Its no longer the lanky teenager than just shot up 18 inches. Feature parity on the key missing pieces (obscure stuff like campaign members) is coming in the next 2 releases, while Salesforce is delivering new complex functionality faster than ever. The power of the lightning platform is starting to shine. I will need to work to become fluent with the declarative side of lightning and to get sufficient understanding of how lightning components and the code side of lightning work.

AI is here, now The use cases (and the pricing) will evolve - but there are real applications now. Some that resonate with me are automatic logging of emails...

Continue reading →

Flow to check and redirect to create / edit if…

Check if record (meeting certain criteria) already exists, if not redirect to standard create new page, else redirect to view record

client services - wants all records for a client from a single day under a single case. so if case already exists for a contact for today, display message and redirect to record on finish, else allow user to create new case

This can be done w/ visualforce. Testing to see how it works w visual workflow.

Trying a few approaches:
A) flow + use retURL to redirect to new case page based

Use retURL on button that launches flow to redirect to new case page
If case exists, use screen to display link to case (and no finish button so no redirect possible)
If no case exists, go straight to redirect (no screen).

pass contactID to flow variable in button
use fast lookup to check if case exists
Use decision to evaluate whether...

Continue reading →

Keep your (users) API access in check (part 1)

There are tons of amazing applications out there that connect to Salesforce - heroku apps like the perm comparator, salesforce plugins for excel, chrome extensions, and on and on. These tools allow users and admins to do amazing things, and they all do them using APIs that Salesforce provides.

However, there has been, until recently, very limited abilities to control which apps a given user can access. By default, any user with the API enabled permission can use any extension or third party tool out there without any additional permissions. Period. And this permission is enabled by default for all standard profiles in a developer org, and likely is enabled for most of the profiles in your org as it is needed to access Salesforce1 and other key apps.

Its important to emphasize that these applications can only access the API within the field and object permissions of the user...

Continue reading →