Chrome Extensions to Cure your Pet Peeves

Whether you’ve been a Salesforce admin for ten years or ten days, I’m pretty sure you’ve got some pet peeves. No system is absolutely flawless, and there will always be little things that drive us absolutely nuts as we do our jobs.

Over the years, many of my pet peeves have been solved by Chrome extensions. I even wrote a blog post – ages ago – about my favorite! That’s right, just one – because back then, there were maybe half a dozen Chrome extensions for Salesforce. Now there are just tons of them, so I wanted to share my old and new favorites. I hope you find them as useful as I have!

But first…

Browser extensions may not be secure. Every extension you add has the potential to expose your Salesforce data, your browsing activity, your browsing history, and more. Data mining, identity theft, and malicious attacks can be done through even the most harmless extension. Although Google is very quick about removing extensions from the Chrome web store as soon as a problem is detected, you should do all you can to prevent a security breach. These security best practices can help you avoid malicious attacks from browser extensions:

  • Make sure your browser is consistently updated and patched.
  • Have an antivirus that protects your browser, not just your computer.
  • Keep your browser plugins and extensions updated.
  • On a regular basis, remove plugins and extensions that are no longer necessary.
  • Do not save any personal info via your browser (passwords, credit card info, etc.).
  • Read the reviews before you add a new extension! If it’s brand spanking new, I like to let other people be the guinea pigs and wait until there are some good reviews before I commit to it.
  • Use Extension Defender or a similar tool to scan your extensions for unwanted or malicious apps.

Your Salesforce data is particularly sensitive. Many organizations will not allow browser extensions due to compliance regulations. Before you add any extension to your browser, you should 1) be aware that it may expose your org’s Salesforce data to third parties, and 2) make sure that you are not breaking policy by doing so. During the addition of a new extension, you are warned of these dangers:

You can also view this information by click the “Permissions” link under each extension in the extensions list in your Chrome settings.

If security is enough of an issue that you are not able to add extensions, I recommend looking for comparable apps on the AppExchange. For example, the Excelist app – which will most likely meet the most strict security regulations – is an excellent substitute for the Salesforce Data Exporter extension.

Okay, now the fun stuff!

Now that I’ve rained all over your parade with security warnings – here are some of the Chrome Extensions that I find the most useful.

Sandbox Favicons

Ever have too many tabs open, and have trouble finding production vs. sandbox? This extension adds a little “S” to the cloud favicon to make it more obvious which of your tabs are sandbox instances.

Colored Favicons

Like the sandbox favicons? This extension takes it a step further and applies a different color to the cloud favicon for each instance.

Enhanced Formula Editor

This extension gives you all kinds of bells and whistles for writing formulas, such as syntax highlighting, tabbing, parenthesis matching, and find and replace. Example: here is a normal validation rule formula:

Here is that same formula with the Enhanced Formula Editor extension:

As if that were not enough, there is a new button called Load Field Details that will show you additional info about the fields in your formula – such as help text, picklist values, and formulas (for formula fields).

Change Set Assistant

Ever try to quickly find custom fields – or, well,anything– to add it to your change set? I swear, it’s almost enough to make me recreate things in production manually. This extension gives you the ability to filter by object (for object-specific components), to show all options on one page, and to search for something specific.

Note: There is also an extension calledBoostrwhich handles the change set issue, and the search setup issue, and a few other things as well. If you wanted at least those two extensions, you can just get this one and kill a whole nest of birds with one stone.

Data Exporter

Don’t you wish you could export list views into Excel? Well, wish no more. This extension adds a handy “Export to CSV” button to all of your list views.

Admin Check-all

In profile object permissions, one of my pet peeves is that there is no option to check all boxes for field access. Another problem solved by an extension! This one adds the ability to select all boxes anywhere that it did not exist before.

Go Directly to User

I know it’s only an extra two clicks, but still – ever since Chatter was born, it has been two extra clicks to get from a user’s Chatter profile to their user record.

This extension will take you directly to that user record from your search results, or from the link in your Recently Viewed Items list (in the left-hand navigation menu). Downside: if you are clicking in the “My Recent Items” list from the global search, you will still go to the Chatter profile of the user.

Enhance Salesforce Header

In the average org without a Community, your header has a Setup link, and another for Help and Training – but you still have to click onto your name to get to your Profile, Settings, or Developer Console.

And if you have one or more Communities enabled, it’s even worse.

This extension displays all of those links at the top of the page, and also the type of instance (production or sandbox), the current time, and your org name. It can get a little crowded, but if you are looking to save clicks, it’s perfect!

I hope you find this list useful in your admin work! Feel free to comment with your own favorite extensions.

Disclaimer:I do not profit from any Chrome extensions, or AppExchange apps. This post is intended to showcase things that I find useful, but I do not vouch for the security of any of them. Add Chrome extensions at your own risk.

Interview with the Marketo Admin: All About Fields

I am lucky enough to work for a company that surrounds me with incredibly talented people. And in the short time I’ve been here, I have already learned so much from my teammate Jamie Carey. Jamie has inspired me to begin a new series: Interview with the Marketo Admin. I want to know what goes on in the Marketo world, and how it affects my Salesforce world, and vice versa, and… you get the idea. Like Interview with the Vampire… but a little less dangerous.

Our first collaborative blog post is on the subject of field considerations. As Salesforce admins, one of the first things we learn is how to create custom fields. But with integrated marketing apps, there are many facets of field creation that we never even think about – so here is some of the wisdom that Jamie has passed on to me, to share with the rest of the AwesomeAdmin community!

Field creation / visibility – a.k.a. Don’t clutter Marketo!

JC: Every field created in Salesforce on the Lead, Contact, or Account objects will be created in Marketo if it is visible to the Marketo sync user. You can control the number of fields in Marketo via permissions for that user. There are also fields in Salesforce – listed here – that will map to Marketo by default, so keep those in mind.

CK: What about other objects? Do they get copied in Marketo if the Marketo sync user can see them?

JC: Marketo defaults to Accounts and Leads (Salesforce Leads and Contacts are all called “Leads” in Marketo). You can sync other objects to Marketo, but just for the purpose of utilizing them in Smart Lists – Marketo will not copy them as records (like it does with Accounts and Leads).

CK: What happens with field visibility when you sync Marketo with Salesforce for the first time?

JC: During the initial setup, you create a Marketo sync user. It’s a good idea to create a completely separate profile in order to give the sync user access to only the fields that you want them to “see” on Leads, Contacts, and Accounts. If the sync user can’t see the field, it will not become a field in Marketo.

My takeaway: Be mindful of the clutter you are creating in Marketo! Whenever you create a new field on the Lead, Contact, or Account object, hide it from the profile for your sync user unless it is a field that you are sure Marketing will want to use. You can always provide visibility later – but you can’t take it away once it is given.

Read vs. Edit Access for Marketo sync:

JC: You may have certain fields that should only be edited within Salesforce, but that you want visible in Marketo – so make sure to evaluate which fields you want Marketo to write to versus read-only.

CK: What happens to the data if a field to which Marketo has read-only access is on a web form, and a lead fills out the form with different data?

JC: Salesforce always wins. Marketo will still sync, but the values in Marketo will be overwritten by the Salesforce values on any field that Marketo cannot edit. In addition – by default, Marketo will never write to an Account field if there’s already a value in it (the logic being, you would not want a person who fills out a form to be able to change account-level information). However, you can ask Marketo Support to change this for you if you have a business use case for it.

My takeaway: Be very intentional when allowing Marketo to write field values. Think about every potential scenario when determining read only vs. read/write access to fields.

Field API Names:

JC: Marketo refers to SFDC fields by their API names, not their labels. If you change the API name in Salesforce, Marketo will create another field with the new API name, and start storing the data there.

CK: What happens to the old field, with the original API name?

JC: It stays there, and it still contains the data that was in the field up until the point that the API name was changed.

CK: Can’t you just delete it?

JC: Marketo does not allow deletion of fields like Salesforce does. You can put in a request to have them merge the duplicate fields, but it’s a bit of a process.

My takeaway: Just because you can change a field’s API name doesn’t mean you should. You will not see an error message upon trying to change an API name unless that field is referenced in Apex code. But it can affect your integrated apps – in this instance, by creating more clutter. With other integrations, it can completely break the sync on the field. Once a field has been created, it’s a good idea to leave its API name alone.

Invisible reference fields:

JC: Fields can exist in Marketo that do not exist in Salesforce, and still be used to update Salesforce records.

CK: How does that work?

JC: Through a flow step called “change data value” in which you can reference a Marketo field (not in Salesforce) and use that field’s data to populate another field (that is in Salesforce) with a token.

My takeaway: If you are thinking about creating a Lead field in Salesforce that would only exist for the purpose of populating another field, this is a good alternative. It works like a reference in Process Builder – the field could just exist on a web form and in Marketo, and its values can be used to update your Salesforce records!

A couple of other things I learned about Marketo fields from my interview with Jamie:

  • Marketo does not have field history tracking – so make sure that you are tracking your most important fields on your Salesforce objects and in Chatter feed tracking, because you will not be able to jump into Marketo and view field history.
  • Although you can sync formula fields from Salesforce to Marketo, they will not be updated in Marketo unless the record has been edited – because the Marketo sync is looking for the “Last Modified” update.

These are just a few of the field considerations that really stood out to me – additional documentation can be found here.

Not a Marketo customer? I’m not going to say something silly like “all marketing automation tools are the same” – but these are great considerations for anything that syncs with your fields in Salesforce.

About Jamie Carey: Jamie likes unicorns and glitter but tends to wear mostly t-shirts and jeans. She has a background of customer service and uses it to now work as the Marketo Admin serving internal customers at Puppet Labs. She’s a huge proponent of the power of chat rooms to bond co-workers with a well placed GIF.

Spring ’16: Love is in the Air

The Winter ‘16 release contained some of my favorite things, but the Spring ‘16 release has swept me off my feet! Here are the new features and enhancements that I love the most.

Easily Reorder Criteria in your Process with Drag and Drop

This has been on my wish list since I built my first process. Now, instead of having to delete and re-create criteria nodes to get them into the correct order, you can simply move them with this handy little icon in the upper right. If you have processes with lots of criteria that you have to update regularly, this will be a massive time-saver for you.

No more re-typing Process Name/Description for new versions

This is such a little thing… but also such a huge thing! When you clone a Process as a new version, the name and description will automatically be copied so that you don’t have to type them in again. Since I like to write very thorough (some might say “long-winded”) Process descriptions, this will be very helpful.

Manage Everyone’s Reports and Dashboards

If you haven’t used Workbench before, you are missing out! (And you should check out my guest post on Admin Hero’s blog.) Now, when running a query on reports or dashboards in Workbench, you can add USING SCOPE AllPrivate to get users’ private reports or dashboards in your query results.(See the release notes here for sample queries.) Additionally, even if you run a query without the AllPrivate scope, your results will still contain personal reports/dashboards.

Some downsides to this:

  • Folder Name is not something that you can include in a Report query in Workbench – so while you can pull private reports into your query, you won’t know what folder they are in.
  • This feature is not available in a Salesforce report on Reports.

Note: As of this post, it is not yet available in Workbench – but it is in the developer console in your Spring ’16 sandbox. Workbench should be updated once Spring ’16 has been rolled out to all instances.

Security Health Check

This is one of those features that I would have wished for if I knew it was possible! Go to Setup | Security Controls | Health Check – and you will see an instant assessment of your org’s security settings. For each security component, the health check displays your settings, Salesforce’s baseline standard, and even a link so that you can go directly to your settings to update them.

Import Contacts as Campaign Members

This will be extremely helpful for Marketing teams, admins, or anyone who imports Campaign Members. Previously, we could only import Campaign Members as Leads:

So if we wanted to import contacts, and add them to a campaign, it became a longer process. But now, we have the option of importing them either as Leads or as Contacts and Accounts:

More Developer Sandboxes

This is a huge improvement. In our Salesforce org, we like to build out any major new configuration in a developer sandbox, then push it to the full sandbox for testing when development is complete. When a lot of projects are going on at once, we sometimes use up all of our dev sandboxes. So this is great news! With the Spring release, the number of available dev sandboxes will increase as follows:

  • Enterprise Edition: Increase from 1 to 25
  • Unlimited Edition: Increase from 15 to 50
  • Performance Edition: Increase from 30 to 100

Restricted Picklists (Beta)

Have you ever been frustrated by picklist field values that aren’t supposed to be there? In my org, the main cause of this is a mass upload/update containing picklist values that are misspelled, out-of-date, or just plain wrong – because you can put anything into a picklist field if you are using Data Loader or a similar tool.

I was lucky enough to get in on the pilot for this feature – in combination with the Global Picklist pilot (get into that one if you can!) – and it’s one of my favorite things ever! Simply check a box when you create a new picklist field:

What this does is enforce picklist values not only in the UI, but through the API – for instance, if you attempt to mass update records via Data Loader with picklist values that are not in the list, you will get an error message. Hooray for data integrity!!

Chatter Broadcast Groups

Sometimes a Chatter group feed can get overwhelming to read – much like my Facebook news feed (filled with thousands of posts I don’t need to read, and a few gems that I wish I could pick out more easily). Often, the weekly digest email doesn’t even include all posts to the group because there are so many!

That’s where this new feature really shines. A Chatter broadcast group restricts posts to group owners and managers only. This way, you can have groups that are strictly for important updates or company announcements.

Chatter broadcast groups can be either public or private – all you need to do is to check the “Broadcast Only” box when creating the new group.

Lightning Experience Enhancements

Since my team has not yet begun our Lightning Experience testing and rollout, I did not intend to include Lightning features in this post. However, the additions to LEX in this release are definitely worth noting – most of them are things that my org would not be able to live without! Here are just a few:

  • Inline editing (this was my deal-breaker)
  • List views
  • Opportunity Teams
  • Campaigns (beta)
  • Assets
  • Person Accounts
  • Dashboard improvements
  • Improved Account Insights, and the ability to send feedback
  • Activity Timeline filtering

As with any release, it’s a great idea to test as many of the new features as possible, and communicate any visible changes to your users. Check out the full release notes here. Happy Spring!

Opportunity Contact Role Enforcement Made Simple

Happy New Year, fellow admins!!

Have you got an SFDC Admin resolution this year? I sure do. My resolution is to make it impossible for users to create an opportunity without a contact role. This has not been easy to do, but I think it’s finally possible with a combination of configuration and one awesome free app!

Step 1: Remove the “New Opportunity” button from your Account page layouts.

This is the easiest change to make. Just go to Setup | Customize | Accounts | Page Layouts, go to the Related Lists section while in edit mode, and click the little wrench icon on the Opportunities related list.

In the new window that opens up, go to the “Buttons” section, and uncheck the box next to “New.”

Then click “OK” – and then make sure to save the layout!

Warning: if you have users who habitually create their opportunities from accounts, they may freak out when they find the button gone. It is always a good idea to send out a communication when making a change like this, with instructions for the correct way to create a new opportunity. In this case, I recommend directing your users to the contact page (rather than the account), where they can still create a new opp from the related list – and have a contact role on their opp.

Step 2: Remove the “New” button from the Opportunity tab.

This actually cannot be done with standard Salesforce functionality. One way to do this would be to replace the standard Opportunity tab view with a Visualforce page. That sounds lovely, but what if you don’t know how to create a Visualforce page? You’ll be happy to know, there’s an app for that. A free app! The Standard Tab Overrides app allows you to remove the New button from a standard tab, such as Opportunities, to prohibit creation of a record from that page.

  • Download the app here.
  • Once installed, follow the configuration instructions (Note: these instructions are Account-specific – I substituted Opportunity where needed), which will walk you through the following steps:
    • Get the List View ID
    • Override the tab’s home page
    • Disable the tab’s “New” button

The list view ID is important, because it you need to set a default list view for when users navigate to the Opportunities tab – I recommend using the Recently Viewed Opportunities list view, because it is closest to what a user would see when they have the normal tab view – without a “New” button!

Step 3: Remove the “Create New” component form the left-hand sidebar.

Sadly, this list is not customizable (and until it is, please vote up this idea!). To truly enforce Contact Roles on Opportunities, you’ll need to remove the component from the sidebar entirely. This may or may not be an option for you – if not, keep reading and try the app below! If you do want to remove it, here’s how:

  • Go to Setup | Customize | Home | Home Page Layouts
  • Edit the layout(s)
  • In the “Select Narrow Components to Show” section, uncheck the box next to “Create New” and then save. Done!

Bonus: Do you have more granular requirements for Contact Roles on an opportunity? Do you require a certain number of contact roles at specific stages, or require a Primary contact role? I’ve got another app for you!

The Opportunity Contact Roles Validation app allows you to decide which opportunity stage and/or probability requires a contact role, a primary contact role, or multiple contact roles. This app creates two Opportunity fields – “Number of Contacts” and “Primary Contact Assigned” – and updates them with an Apex trigger.

The app also provides a default validation rule, which fires whenever there is no primary contact on an opp at 30% or higher – you can modify this rule to meet your own requirements, or create additional rules based on the new fields.

Note: Installing the app does not populate the data! You will need to mass update your opportunities for the trigger to fire.

Again – I can’t say this enough – communicate these changes to your users! Make sure that they know where they are expected to create new opportunities. Making changes without communication leads to user frustration, lower adoption, and general distrust of the system you want them to embrace.