Blog

Import Data with VS Code

This post isn’t fully baked, but here are some instructions on how to import data with VisualStudio Code! I used this because I was importing data to objects that did not have API yet – new products that were not released to the public yet. This is not a common scenario. But there may be other valuable use cases.

  1. Make an External ID field on your object and check boxes for unique and external id. Let’s call it External ID aka External_ID__c.
    • Give your system administrator access to that field.
  2. Prep your spreadsheet.
    • Each row header needs to be the API name of the field. Absolutely exactly correct or it won’t work. You don’t match fields in this process.
    • Export as CSV.
Continue reading Import Data with VS Code

Start Generating Fake Data with Snowfakery

How to Connect Your Org to Snowfakery

Snowfakery is a free and open source tool used to generate and insert fake data into Salesforce (and more!).

In this post I’m going to show you how to get started as quickly as possible using existing “recipes” or instructions for what data you want to create. Something like… I want a pinch of Accounts in Michigan, a heaping tablespoon of Contacts with ages ranging from 18 to 24, and 2 cups of Opportunities closed won.

Snowfakery?

We aren’t going to write our own recipes to get started today. The documentation on how to create Snowfakery recipes (and this excellent training video from 2021) will help you with recipe creation, but there are plenty of existing recipes to utilize. Let’s go!

Continue reading Start Generating Fake Data with Snowfakery

Log Email on Send in Flow Now Easy

I wrote a post almost a year ago instructing you how to log an email to the contact or lead from your flow. Now that’s a built in option in the Send Email Action in Flow in Summer ’23.

I’m cooking up some new posts including a new version of the Unsubscribe Link app that I’ll release any day now.

Use ChatGPT to Respond to Emails in Salesforce

Don’t know what to write to a customer or a major donor? Not sure how to be kind and encourage someone to try a little harder next time? ChatGPT can do that for you. And now you can use it right inside Salesforce to respond to your emails.

My colleague Brian Ricter wrote an apex class connecting Flow with ChatGPT. It takes a string, sends that as the prompt to ChatGPT and returns the response. You can use this apex action in a flow to do anything you want with ChatGPT!

I’ve utilized Brian’s apex action in a screen flow that helps you respond to a contact’s most recent email. And I’ve packaged it up for you to install easily.

In this demo, our company sells pet rocks. We’ve received a kind email from our customer Bob. Let’s use ChatGPT to respond to Bob in a friendly way and in a flirty way.
Continue reading Use ChatGPT to Respond to Emails in Salesforce

How to Modify a SOQL Query with Two Objects

A SOQL query pulls certain records and fields into Apex Code. This post explains a SOQL query that includes Contacts and their related Opportunities from the Year End Tax Receipt app, but I aim to help you understand SOQL in general.

For those of you that want to modify the Year End Tax Receipt for your specific donors:

  • Follow along with this post to modify which records will be displayed in the table of gifts last year. We’ll look at an example of only included gifts marked tax deductible.
  • Look at the original post to learn how to modify which columns appear in the gift table.

Understand the SOQL

Here’s my SOQL query. This is how I get the records and fields that I’m going to do something with later on in the code.

1 [SELECT LastName, id,Gifts_Last_Year__c, 

2 (SELECT Id, CloseDate, Amount FROM Opportunities 
                                                                                  
3 WHERE CALENDAR_YEAR(CloseDate) =:year 

4 AND IsWon = True 

5 ORDER BY CloseDate) 

6 FROM Contact WHERE npo02__OppAmountLastYear__c > 0 

7 WITH SECURITY_ENFORCED]          
    
Continue reading How to Modify a SOQL Query with Two Objects

Flow Loops Just Got Simpler

Actually, I don’t know when this change happened, but I just noticed that Flow loops now only have four steps instead of five. The two assignments can now be consolidated into one.

You still have to add the record to a collection, but you can use the same assignment element.

Example 1: Update the record currently in the loop.

  1. Use a Get Records element to create a collection of records to loop through.
  2. Add a loop element
  3. Add ONE assignment element
    • Update field values for record currently in the loop.
    • Create a new record collection variable to hold the records you want to update.
    • Use the same assignment element to add the record currently in the loop to the new collection.
  4. Add an Update Records element to update the records in your new collection.

Follow my blog to keep up to date on Flow and Salesforce


Example 2: Create new records.

  1. Use a Get Records element to create a collection of records to loop through.
  2. Add a loop element
  3. Add ONE assignment element
    • Create a new record variable (not collection) to hold the values of the new record you want to create.
    • Assign field values to your new record variable.
    • Create a new record collection variable to hold your records that you want to create.
    • Use the same assignment element to add the record currently in the loop to the new collection.
    • Close the loop.
  4. Add a Create Records element to create the records in your new collection.

Previously step 3 involved two assignment elements!

Watch this recording on Flow loops.

This is how you would combine steps 3 and 4 into one assignment!

How to Use the Migrate to Flow Tool and Recreate Your Workflow Tasks

The Migrate to Flow tool can quickly move your Workflows to Flows, but it can’t recreate your tasks. I’m here to teach you how to do that.

In this how-to-video, you can learn along with the Salesforce Nonprofit User group in San Francisco, how to:

  • Use the Migrate to Flow Tool

My section of the video is the first 30 minutes. Thanks to the user group for having me!

Learn more about migrating to flow on the Salesforce Admin’s blog.

Log Email Sent Through Flow on a Contact Record

Shows the activity timeline of a contact record with one email message stored there sent at 2:46pm today with subject "Welcome to the family, Jemma!"
Log an email message on the contact record like this one.

UPDATE SUMMER ’23: This is no longer necessary! Read here.

When sending email from a contact record, it magically logs the message to your activity log. In classic, emails were/are automatically logged to the Activities related list. Well, flow doesn’t do that for you. Let me show you how to log it so you and your colleagues know when an email was sent to a contact.

After you add a “Send Email” action to your flow, add two more Create Records elements to the canvas. You will create records of these objects:

Continue reading Log Email Sent Through Flow on a Contact Record

Visual Studio Code: An Adventurous Admin’s Way to Move Metadata to Another Org

A few weeks ago I shared how to use a package to move metadata between unrelated orgs. That solution is perfect for sharing something you built with other people.

See you later, deployment fish!

When you’re moving metadata between orgs that you control (related or not), try Visual Studio Code! Don’t worry about the “Code” part. You don’t have to read it or write it to use VS Code.

VS Code has lots of benefits that I don’t understand yet (somehow you can use it to move profiles and FLS). I will now teach you all I know. 1) How to deploy between two orgs. 2) How to paste in some code to deploy sections in Flows.

Huge thanks to Brian Ricter for teaching me how to do this!

Prerequisites:

  • Install Visual Studio Code. It’s free!
  • Install the Command Line Interface
  • Install the Salesforce Extension Pack

If you haven’t done any of those yet, complete this really helpful trailhead Quick Start.

Continue reading Visual Studio Code: An Adventurous Admin’s Way to Move Metadata to Another Org