Lessons From Legends of Low Code

I recently participated in a multi-day competition as part of Salesforce’s inaugural Legends of Low Code. The Legends of Low Code was a contest where three strangers were teamed up and given a challenge to build a solution in Salesforce using only declarative tools.

So IS it possible for a newly formed team to quickly deliver results? Well you’ll have to watch the show when it airs in April on Salesforce+ to find out; but here are some observations I had on teamwork from competing in this event.

Communication is key. This means that you have to listen to your teammates. Obviously there will be times when each team member is working on their assigned tasks so plan to have regular touch bases. These touch bases are your opportunity to share and discuss ideas, issues and progress towards goals. If possible, use shared tools for collaboration such as Slack, Teams, Google Docs or Quip instead of everyone having their own notes or working off different versions of the same document.

Respect each other. Sure you are under a lot of pressure but that is no excuse for forgetting your please and thank yous. Show support and encourage your teammates. Studies actually show that respect at work increases productivity, A big part of respect is trusting your teammates–remember they are professionals too.

Lastly, as with any sports team, a true team means everyone is pitching in and contributing. So quickly discover everyone’s strengths and interests to determine how everyone can best use their time. While doing so find ways to get to know your teammates and try to build a bond. Remember you are a team– and succeed or fail as a team–so provide support if someone gets stuck.

Hopefully some of these tips will come in handy for you at work. After all, most people frequently need to collaborate with new people in other departments on projects. Salesforce is a powerful tool but if the team developing it is struggling then it won’t be as successful as it could be.


Migrating Standard Picklists and Field Dependencies

Most Salesforce admins find themselves using Change Set for moving items from Sandbox to Production. Change Sets are the workhorse of Salesforce, reliable and they get the job done most of the time. But sometimes you need a more precise too. For example when you want to move field dependencies for standard picklist fields like Case Reason or Case Type.

The solution to this dilemma is XML packages. Before you say I’m an Admin and stop reading – hear me out.

XML stands for Extensible Markup Language and unlike many coding languages it is designed to be readable by humans. To be honest though, it is more like reading Homer than J.K. Rowling–not always the easiest to comprehend but it is still readable.

The good news is you don’t have to know much XML and I will walk you through all the steps to deploy dependent picklist values.

Let’s say we have a custom field called “Reason Detail” that is dependent field on the standard field Case “Reason”. In the Salesforce UI it will look like this:

Salesforce Field Dependencies

When we look at this same table in XML it looks like this:

If you look at the highlighted section you can easily see that the “Reason Detail” value “Product Defect” will only show under the case reason of Breakdown, Equipment Design, Installation and Performance. Pretty simple, right?

So to migrate this field dependency from one sandbox to another we just need to retrieve the XML and then deploy the XML to the new org.

I’ve summarized the steps to do this below–all you need is system admin permissions–but you can also find a step by step guide to retrieving and deploying using Workbench on this Salesforce help article: https://help.salesforce.com/s/articleView?id=000315117&type=1

Step 1: Prepare the XML file

The first step is to prepare the xml file with the list of metadata you want to pull from your sandbox. In our example we are only including the two field names we want to retrieve.

  1. Open Notepad or similar txt application
  2. Start by copying and pasting the below code snippet. In this example we are going to ask Salesforce to retrieve or return an XML of the metadata for the Case “Reason” picklists (they call this StandardValueSet) and the custom field details for “Reason Details” and how it relates to Case “Reason”.
  3. Feel free to swap out the custom field Reason_Details__c with the api name of your custom field.
  4. Give the file an name and save it as an .xml.
    • I called mine “Retrieve.xml” (Very important –it must end in .xml)

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">


Step 2: Get the fields and dependent picklists from your sandbox.

Now that we have the retrieve XML file prepared, the next step is to use Workbench to get the metadata for these fields from the sandbox.

  1. Go to https://workbench.developerforce.com/login.php
  2. Select “Sandbox” environment
    • Note: The API number listed is usually the most current so typically okay to leave as is unless your Production org is a release behind your Sandbox org. For example if Sandbox is on Summer ’23 and your Production org is still on Spring ’23. In that case lower it one number.
  3. Log in to workbench using your Sandbox credentials
  4. Go to “Migration” tab
  5. Select “Retrieve” option
  6. In the Unmanaged Manifest section click the “Browse” button and select the package XML file you created in step 1
  7. Click “Next” button
  8. Click “Retrieve” button
  9. Click “Download Zip File” and save the file
  10. Take note of where you saved it as you will use this zip file in Step 3
  11. Pro tip: Open the file with Notepad to review the file to ensure you pulled the correct information.

Step 3: Deploy the fields and dependent picklist to Production

The last step is to push the metadata you retrieved from the Sandbox into the new target org.

  1. Go to https://workbench.developerforce.com/login.php
  2. Select “Production” environment 
  3. Log in to workbench using your Production credentials
  4. Go to “Migration” tab
  5. Select “Deploy” option
  6. Click the “Choose File” option and select the zipped file you retrieved in Step 2.
  7. I recommend checking the following fields
    1. Rollback on Error
    2. Single Package
  8. Confirm all of the options for deployment.
  9. Click on the Deploy button when you are ready.
  10. Wait for the process to be completed. It usually doesn’t take too long.
  11. Confirm the results deploy successfully, if not check the file for any errors.

That’s it! Now you can log into the target org and view the updates you just made. You should now see the picklist values and field dependencies match the sandbox org.

CRM is so 2010—Say Hello to CXM

CXM?  Thanks to the X Games, most people think of X as Extreme when in reality the X in CXM stands for Experience.  But in many ways CXM is taking CRM to the extreme.

Here are 5 key ways CXM differs from CRM:

  1. CRM is internal focused with the goal of process improvements and cost efficiencies. CXM is focused on the customer and their needs. The best organizations ask their customers what they want.
  2. CRM is talking. CXM is listening. With CRM, organizations measured the number of ad impressions a person had but with CXM great marketers want to measure what the consumer is saying.
  3. CRM is often transactional based. CXM focuses on the customer over their entire life cycle. The best marketers know that customer retention is key to long-term success.
  4. CRM is linear communication. CXM is social. The old way of sending out one-way marketing messages is dead. Today customer’s want to interact with organizations in all channels.
  5. CRM is consistent. CXM is dynamic—each customer gets a different experience; one tailored just for them . CXM is proactive and anticipates customers’ needs.

Bottom line, CXM is a complete mind-shift for most organizations that requires them to rethink the fundamental way they interact with their customers. Those that successfully make the transition will be their market leaders.

Ready to learn more about dynamic marketing from leading visionaries? Register now for Salesforce Connections on June 2, 2021 at 9 am PT.


Get with the Flow Action

I have been an advocate of Object-Specific Quick Actions for years. In fact, I have given dozens of formal presentations on Quick Actions to hundreds of people at several Dreamforce conferences, World Tours and community events. There’s a reason I love them, with Object Specific Quick Actions an admin can use config-only to let users create or update records and send email with just two clicks without leaving the page they’re on. They are extremely easy to set up and the time-savings for users can be massive.

As much as I love the power and simplicity of the Object Specific Actions I am now all in on championing Flow Actions. I still love Object-Specific Actions but I am obsessed with Flow Actions. Why? Because Actions with flows can truly take your user experience to the next level.

Here is an example of a Create Case Object-Specific Action. It is clean and simple asking me for a few fields and even has the Status prepopulated. Nice!

And here is an example of a Create Case Flow Action. What a difference! As the end user I am walked through the process of creating a case when I click the “Next” button at the bottom instead of seeing all the fields at once. I can even see my call script, customized for my contact Ashley by name. The email address even has a sample format so I know what it is expecting. Very nice!

By creating a basic Screen Flow you can use many simple to implement flow features that will make it beneficial to switch from Object-Specific Actions to Flow Actions. Here are three of my favorite tools:

  1. Display Text: Add this component to your screen flow to provide directions and guidance on-screen to users with simple WYSIWYG rich-text editor.
  2. Placeholder Text: Instruct users what to put in individual fields without the risk that users will leave it unchanged the way they might with Predefined Values. It’s especially great for explaining acceptable field formats.
  3. Component Visibility: Steam-line the user experience by conditionally hiding and displaying fields. No more taking up valuable real-estate for fields that are not always needed or creating a different action for each record type.

Let me show you how easy it is to do these items inside of a Flow. Here is an example of how to add Display Text to a screen flow. Note how you can specify the font, color, size and even add bullets, numbers and lists:

Adding Display Text to a Screen Flow

To add Placeholder text simply type in the text you want to display in the “Placeholder Text” settings.

In this example of Component Visibility on a screen flow I am only displaying the email field on the screen if the Contact’s email is blank on their user record. You can even make it visible based on values entered by the user on an earlier screen.

Setting component visibility from the Flow Screen Builder

Just like object-specific actions you can easily use Flow to make fields read-only, required and prepopulate them with data.

And that’s just scratching the surface! Flows can do hundreds of things that Object-Based Quick Actions cannot do. So next time you are thinking of creating a quick action take some time and build it in Flow. Your users will flip for flow.

Flow is a powerful tool and it can be overwhelming at first so to get started I recommend you check out this trailhead to get started.

Winter 21 Features for Admin Superpowers

Winter releases from Salesforce are always the ones I anticipate the most and with Covid-19 we all need something to look forward to more than ever. Winter releases are typically chock-full of cool new functionality and features and this one is no exception. It’s impossible to cover them all so here are a few of my favorite new Lightning features that will give you Admin Superpowers and will save every Salesforce Admin time and stress.

Dynamic Actions to Hide or Show Buttons

Now you can control the visibility of buttons on page layouts. This new functionality allows button-click admins to use both record and user filters to determine if a page should show or hide buttons on a page. How life-changing is that?!

Just think of the use cases; You can show the Approval button on Opportunity if the Amount is over a certain amount. Or show a Reopen button only on a closed Case. You can even display buttons based on a permission assigned to the user looking at the record. So if you want to allow only specific users to see a button you can now do it.

In the works as well is a beta mobile version you can try out on custom objects. This would allow you to make mobile only buttons and hide buttons that are better suited for desktops.

Before you either had to tell users to ignore the buttons that did not apply, resort to making new page layouts just to show different buttons, or really complicate things by creating visualforce pages.

This new features is GA for Custom objects and Beta for Standard Objects. Check out all the details on Dynamic Actions here.

In-App Guidance On Edit and New Screens

I have spoken at Dreamforce several times about custom In-App Guidance so I have been watching it mature and grow over the years. Like a proud mother I am so excited about what it is capable of now compared to when it first came out.

In-App Guidance let’s button-click admins (and delegated trainers) add on-screen tips and directions for end-users. As an admin you decide what pop-up tips you want to appear based on the page and the user. It’s like being able to time-travel and sit next to your users and guide them through new features.

With Winter 21 I love that you can now add prompts on the New, Edit and Clone pages. This will allow you to create pop-up tips for the users as they are editing records. This can dramatically help improve onboarding and reduce user errors and confusion.

Also new this release is the ability to share a link to a specific prompt to allow for easier testing and training. There are a few other enhancements to In-App Guidance as well in Winter 21. If you have not tried In-App Guidance yet now is the time. You owe it to your users.



Optimizer App and Page Performance Analyzer

I’ve been preaching the importance of running the Salesforce Optimizer report for years but truth-be-told I always struggled to remember to run it at the same time monthly. Now with Winter 21 you can actually schedule your Optimizer to run monthly.

What’s the Optimizer app you say? Well, it is an Admin’s secret weapon to stay within limits and maintain best practices. Just go to Setup and run the “Optimzer” then find your results in your App Selector and you will see an analysis of your org, areas for improvement and how-to resources. For example you can see unused reports and just click the link to check the report out to decide whether to keep it.  You’ll see all kinds of metrics and new ones are being added with each release–including 7 new ones in Winter 21.

You can learn more about the Optimizer app in Trailhead

Also new in Winter ’21 is the ability to analyze your Lightning page performance. To view the assessment of your page’s performance, click Analyze from the Lightning App Builder toolbar. You’ll be presented with suggestions to improve your page performance.

With the Optimizer and Analyzer it will be like having Admin X-Ray vision into your Org.

Get Ready for Winter 21

These are just a few of the new Lightning features you can find in Winter 21 that will give you Admin Superpowers. Be sure to check out these and all the other items in the Winter 21 release notes so that you are prepared when the release hits Sandbox about September 11 and Production instances on October 9th and 16th.

The Summer 19 Forecast Looks Hot

Winter has been especially cold, harsh and long in the Central US where I live. The meteorologists can’t seem to provide forecasts that I like so I decided instead to focus on the Summer forecast of Salesforce new features.


I took at look at the Salesforce Lightning roadmap that Salesforce provides and reduced the pages and pages of features down to just the features planned for Summer 2019.


While there are several Reports and Knowledge enhancements on the Summer 19 Roadmap. I think the hottest Summer 19 feature will be the Related List Preview showing up to 10 columns and the ability to Filter Related Lists. Just think how useful and efficient that will be to end users to see key information at a glance AND interact with it without having to drill-down to another page.


One of my favorite features of Summer 19 will definitely help automate and save your end-user time and mistakes, but sadly will probably be underutilized. I am referring to Macros with Conditional Steps. If you have not already I strongly encourage you to build Macros for your Salesforce end users. With macros, repetitive tasks–such as sending an email and updating a case status–can be reduced from multiple clicks to one. Macros work great today already and the addition of conditional steps will make it an even more powerful tool.


I can’t wait for these and the other hot new Summer 19 features to be released to Sandboxes about mid-May and in Production around mid-June. Hopefully summer will be here before we know it.


Here are all 18 features listed on the Lightning Roadmap as of March 2019: 

  • Dashboards: Scheduled refresh (without email)
  • Reports: Historical trending in tabular format (create, edit)
  • Reports: Joined reports
  • Reports: Notifications
  • Branding and Theming: Per Lightning app
  • Related Lists: Show up to 10 columns on preview
  • Related Lists: User filters on related lists
  • Console Chrome extension
  • Utility Bar: Right-align buttons
  • Accounts: Account Partners related list
  • Opportunities: Opportunity partners
  • Lightning Knowledge: Detach related files
  • Lightning Knowledge: Inline edit
  • Lightning Knowledge: Knowledge Component Action — Insert URL to Case Publisher
  • Lightning Knowledge: Knowledge Component available for all objects (search only)
  • Lightning Knowledge: Mass actions (delete, submit for translation)
  • Macros: Conditional steps
  • Social Customer Service: Mass approvals and recall

Gain User Insight with List Views

If you’re a Salesforce Admin chances are you have created tons of list views for Accounts, Contacts and other objects for your users to use. I recommend you take some time to create list views for YOU to use. You’ll find that they can help you quickly access information–saving you valuable time and frustration. In fact, there are several areas in the Setup area where you can add list views. You can create custom list views for Permission Sets, Profiles, Users, Public Groups and Domains just to name a few.

In this post, I’m continuing my series on User Management Tips from one of my Dreamforce 14 presentations. I’m sharing ideas on how you can use Salesforce List Views on the User object to make you a more efficient admin.

User List Views

In list views, you can filter on almost every User attribute found on the user record such as Storage Used, Status, Roles, Profiles, Managers, even Last Login. Here are some common list views that I recommend you set up:

  • Active Users
  • Inactive Users
  • Admin Users
  • Frozen Users
  • Users in each division or department.
  • Users by license type (ie Marketing Users, Content Users)

User List Views

In addition, to the above list views you may want to create list views that you can look at on a weekly or monthly basis to manage user adoption and data storage. Here are a few I recommend:

  • Large Storage Users
  • No Login This Week
  • Password Expring Soon

In my last post I talked about adding custom fields to your User object. You can use those in your list view as well. Say for example, you created a custom field to track users for an add-on webinar product, you can create a list view of “Webinar Users”. This is very helpful when you need to report on users or send a mass communication out to the users of that product. Other common list views on custom fields include users by cost center or mobile device users.

Filter Out Inactive Users

One of the most common user management complaints that I hear is that you cannot delete a User from Salesforce. Instead you can only make them active or inactive. Not being able to delete a User is actually a good thing as it helps maintain any historical information about that user, including completed tasks and prior record ownership. But most of the time if a user is Inactive an Admin doesn’t want to see them in the list of users. That’s why for all of my User list views I filter out inactive users. All you have to do is set the “Active” field to equal “True”. Now, those inactive users never, ever show up on my views–they’re as good as dead to me.

Active Users

Because I occasionally do need to see inactive users and you probably do as well, I do recommend creating one list view called “Inactive Users” where the “Active” field equals “False”.

List View Visibility

As with all list views, you can opt to have user list views visible only to you, to all users or share with certain groups of users. Most of these list views you’ll want to share only with other Admins.

It Slices and Dices

As you can probably tell, I love list views! I find them much faster than reports for managing my daily admin workload as I can jump from one view to another instantly. I can customize the columns on the fly if need be and quickly drill-down and view and edit the records I need to work on. I also like that I can click on column headers to quickly sort and filter by values. The one big gotcha though is you cannot do inline edit on the user list view. Be sure to vote for this idea as it will be a huge time-saver for editing multiple users at once.  Even without this, user list views should be in your user management arsenal.








Get Organized with Custom User Fields

One of the sessions that I presented at Dreamforce this year was “Don’t Let Managing Users Manage You” where I shared 10 tips to make user management less of a pain.

Because user management is such a time-consuming and high-profile part of most admins jobs I thought I would share my tips here over 10 blog posts where I can go into detail about each one.

Tip #1: Get Organized with Custom User Fields

I like to add custom fields to the user object to help stay organized. Obviously you can tailor these custom fields to your unique needs but here are some ideas of general-purpose custom fields that you may want to use.

  • Admin Notes  – I create a ‘private’ system admin-only field to track notes such as who requested the user be set up or deactivated, why and when.
  • Cost Center – This is useful if you need to create reports to charge back licenses to the correct group.
  • Personal Information – Common fields are personal Email and personal phone. Great for users to connect after hours.
  • Mobile Device – Here I track what type of mobile device they are using such as iPhone, Android or iPad. This is great for finding testers and sending device specific updates. (I’ll cover more about that on a future blog post)
  • Additional App Licenses – If you have add-on apps you may want to track what users have access. This can be redundant information but is very helpful to have every app license in one central place for reporting, terminations, and testing.
  • Signature Block – If you use email templates consider adding a signature block to the users record to prepopulate and format address and company taglines.
  • Photo Url – To include photos on html email templates just place the url of the photo on the users record. An easy way to get a url is to load the photos to a public Document in Salesforce.  Then just include that field in email templates
  • Access Deactivation date – Add a custom date field to track when you deactivated the user or when you should deactivate their license. Sometimes you know in advance when to turn off seats (terms or trial users) just put in a date and use workflow rule to auto-deactivate them.  (look for more tips on user workflow rules in a future post).

This is just scratching the surface for custom user fields.

To add custom fields just go to Setup>>Customize>>User>>Fields>>New.

As with any custom field, you can choose what profiles can View and Edit these new fields. You can also update your page layout so they are displayed in a logical manner. Unfortunately you can not change the layout for the Standard User fields which display at the top of the User page.



I’m Back From Dreamforce. Now What?

Whew! Once again Dreamforce proved to be an amazing four days of learning, networking, and peering into the future of Salesforce.

I don’t know about you, but I only now feel like I’ve got caught up on the work I missed and readjusted to my time zone to finally have time to digest all that I learned at DF14. Here’s my plan of attack post-Dreamforce:

1. Expo Hall Vendors

According to Fitbit, I chocked up 36.89 miles of walking the week of Dreamforce–most of that on the floor of the expo hall. Now I’m getting tons of calls and emails from all the booths I stopped by (which was just a fraction of the total booths). I grabbed a flyer for those vendors I felt had the most compelling solution for my needs. I keep these near my desk so that when a vendor calls I can dig for their flyer to remind myself about them. If they don’t have a flyer–well then good luck Mr. Telesales because I’m expecting you to sell me.

I also went through my flyers post-Dreamforce to see which ones I want to learn more about. I try to notate on them while at the booth my initial thoughts so I can recall them later and determine which ones I want to see a demo of.


2. Dreamforce Breakout Sessions

After Dreamforce I like to re-read the notes I took for the sessions I attended. I also check out the Dreamforce section of Success.Salesforce.com to download the presentation.

Due to schedules, it wasn’t possible to attend all the sessions I wanted to. Fortunately, I “Favorited” them so now I can go back to the ones I favorited and download those presentations, read the Chatter comments and, in most cases, catch a recording of them.


3. Dreamforce Announcements

Obviously lots of new products and features,  like The Analytics Cloud, Journey Builder for Apps, Process Builder, and Lightning, were announced at Dreamforce product keynotes. Now that I’m back home I take the time to learn more about these products to see if they are a good fit for me.


4. Dreamforce at User Group Meetings

Despite my best efforts, I almost always tend to miss something really noteworthy or helpful that was shared at Dreamforce. That’s why I love connecting with other users at my local User Group meeting to see what they saw and learned. Be sure to find your local Salesforce User Group today and don’t miss their post-Dreamforce meet-up.


Lastly, I type up all my notes from the vendors, sessions and keynotes into one central document that I can reference in the future and distribute to my co-workers.



Overcoming the Salesforce Tab Limit

Most Salesforce orgs have a limit to the number of custom “Tabs” that they can have. Currently, the limit is 5 for Group, 10 for Professional and 25 for Enterprise. Throw in a few custom objects and websites and it is easy to hit the ceiling on Tabs.

Fortunately there is an easy way to get to an objects Home page without using one of your precious few tabs.

Instead of a tab at the top you can easily add quick links to the left side-bar of your Salesforce screen that takes the user to the desired page.

home page small with circle

The first thing to do is to get the secret Entity ID to your custom objects home page. This is easy to do. Just go to ANY record for your custom object. Look at the URL and take note of the first three characters after “Salesforce.com”.

In this example, it is “a03”

getting object entity id

Two items of note, alpha characters are case-sensitive and zero (0) and O are really, really hard to tell apart. To reduce the likelihood of error I like to copy and paste.


Now that you have your secret code to your custom object it’s time to create a custom link. Go to Setup>>Customize>>Home>>Home Page Components and click {Edit} next to “Custom Links”

edit home page components

Enter a new Bookmark name to display and then the URL to link to. The URL only needs to contain the 3 digit Entity ID. You should remove the first part of the url that references the specific server (In this example I omitted https://na14.salesforce.com). This will allow your link to work even if you are moved to a new Salesforce server.

I also like to add “/o” to my link so it takes the user to the “Recent Items” view for the object and it displays the object name at the top. It works without the “/0” but that takes the user to their last List View.

So in this example, all I place in the URL to link to field is /a03/o

home page custom links

Now I make sure my “Custom Links” are displaying on the home page layout by going to “Home Page Layout” edits. I check the box next to “Custom Links” to display and indicate the order the narrow components should be in.

Home Page Layout

If you don’t want every user to see the link or you want different links for different groups there are ways to add Custom “Components” to different page layouts. For this example, we’re keeping it simple with just one group of “Custom Links”.

Viola! Now my links to my custom objects display on the left-side navigation for every page I visit just like a tab would display across the top on every page.

Clicking the link will take me directly to that objects home tab, as shown below, where I can now see my recent items and run any list view.

custom object home page


Note: If you don’t see the home page components on all pages then go to Setup>>Customize>>User Interface>>Settings and check “Show Custom Sidebar Components on All Pages”.

Show Custom Sidebar Components on All Pages

You can do this same thing for links to standard objects, Visualforce pages, and other web pages.

One very popular use for custom links is to link to the Activities tab. For your reference that is Entity ID number “/007”. Many users find it nice to have quick links to “My Open Activities” or “Today’s Activities”. That allows them to jump to activity list views without having to go to the Home Page.

What will you link to?