Friday, April 18, 2014

Salesforce Flow Using Record IDs at the Start or at the Finish

Salesforce Flow can be combined with Visualforce pages to provide greater flexibility and automation to the user interface so that Salesforce users have fewer opportunities for mistakes. 
Racer X doesn't always like to start with the group.



By invoking a Flow through a Visualforce page, you have the option to create a button on the particular object you intend to manipulate.  In this example, a button on the Lead object is configured to access a Visualforce page that invokes a Flow to convert the Lead.

Because the button exists on a specific record detail page, the standard controller makes the record ID accessible for the specific data being displayed when the button is clicked.  This means that the record can be converted without additional Apex code.  The Visualforce page would look something like this:

<apex:page standardcontroller="Lead" >

    <flow:interview name="LeadConversion">
            <apex:param name="thisLeadID" value="{!Lead.Id}"/>



Finishing the Flow by bringing the user to a specific record detail page is more difficult. The easiest solution by far is to provide the information and actions the user needs as part of the Flow rather than as something they see after the Flow is finished. 

But even the complicated solution, adding Apex code to a custom Apex controller or extension to specify a finishlocation, is not too difficult.  Simple code enables Salesforce Flow to finish on record detail page. Even so, there are some considerations for defining a finishlocation:
  • Visualforce is required to specify a finishlocation and only URLs in your Salesforce instance can be specified within the finishlocation attribute on the Flow according to documentation
  • For variable finishlocations, an Apex controller is also required
  • Rather than referencing variables as part of the finishlocation, use a variable in place of a finshlocation on the Visualforce page
Here is a simple method to add to your Apex controller code to use a specific record ID in the finish location:

        public PageReference getpRefFinishLocation() {      

            String temp = 'home/home.jsp';
            if(myflow!=null) temp = string.valueOf(myflow.RecID);
            PageReference pRef = new PageReference('/' + temp);
            return pRef;


Use code like the example above to access a variable, RecID in this case, from your flow and incorporate that into the URL for the page users see when they finish executing the Flow.

Friday, April 11, 2014

Provide Mobile Users with a Rich Experience Using Flexipages and Salesforce1

How do you make the most useful data available to users on a mobile device?  You may want to limit text and reduce the need for swiping and scrolling.  Think about the types of activities you are most likely to perform using your phone – texting, calling, photographing, listening to and watching or just looking.  We love the multimedia capabilities and the rich data we experience at a glance with mobile devices.  Salesforce1 provides an important new feature to help you create a more engaging and mobile-efficient interface for your Salesforce data.
Red flag understocked merchandise.



Make use of Flexible Pages, or Flexipages, to create a more engaging and mobile-efficient interface for your users by providing useful graphics and text in record lists directly off a tab.  Mobile users should be able to get as much data as possible in a glance and images can help make that possible.  For example, you can use image formulas to display graphical representations of a record’s status.  For an Opportunity, you might add an image formula to represent where in the pipeline each record happens to be.  This way, salespeople who are on the road can glance at a list of records to determine which need the most immediate attention rather than swiping and reading through a list of text.

Unfortunately, early Salesforce1 releases don’t support image formulas in the tab view.  Tab fields are determined through the Search Layout options, these are the fields users see when they select an object tab on desktop Salesforce, and image formulas have historically been useful here.  Yet the first time a user selects an object tab in Salesforce1, it won’t display images.  While this may change with later releases, there is another option available to early adopters as well.

For the most rich data experience, you can bypass the object tab using Flexipages and make data with images available with a single tap on the Flexipage tab.  Flexipage tabs access the first few fields of either a specific list view or recent items, both of which can use image formula fields.  Note that for recent items on a Flexipage, the fields come from your defined compact layout for that object rather than the familiar fields your users see in their desktop experience.

Flexipages also give you the ability to combine multiple data objects in a single list to even further reduce the tapping and swiping required for accessing the most critical data with a mobile device.  If you use the recent items list in the desktop Salesforce sidebar, you are already accustomed to seeing multiple objects in a single list, all highlighted with an informative graphic.  Replicate this type of user experience for mobile users with Flexipages.

For an example of how to create Flexipages, check out the documentation here:

Thursday, April 3, 2014

Don't Let Expertise Stand In The Way Of Creativity

A funny video has been making the social media rounds called "The Expert" by Lauris Beinerts.  While I find the video to be hilarious, I don't sympathize entirely with the character known as the expert, but also with the folks trying to hire him.  They have specific needs and he fails them in a multiple ways because he lets his expertise stand in the way of creativity.

A creative approach can make the impossible become likely.
Mistake #1:  He says "No" to one of their specifications.  Rather than telling them it can't be done, he should take the opportunity to ask more questions, deep dive into their requirements and find out exactly what they would like to achieve.  Maybe he is missing some other key requirements by not asking for a bigger picture of what they need.

Mistake #2:  He fails to educate the customer.  When the customer asks for something he cannot deliver, he fails to educate them about the limitations, although he does make some effort at this.  He should take the time to align their expectations with the limitations of whatever system they may be using.

Mistake #3: He doesn't offer to do more research.  If he took the time to look into their requests and came back to them with a follow up proposal, he might find some creative and interesting approaches to their problems.  Just for fun, lets look at some of their requirements:
  • Red lines from green ink? Perhaps he should try color changing markers or a system of filters and lights.  There are also thermochromatic pigments and color-shifting paints that could offer fun solutions.
  • Red lines from transparent ink?  Perhaps he should put the lines over a red background or try special magic markers.  Will the customer accept red lines cut from construction paper and colored with transparent ink?  
  • Seven perpendicular lines?  Perhaps he should investigate working in 7-dimensional space.
  • Make one of the lines a kitten?  A 1-dimensional kitten might meet their requirement, but the expert did not ask enough questions to find out.  Maybe they would rather have a combination of lines and curves?
The need is two-fold:  experts need to hone their communication skills as well as their creativity.  Experts need to be better communicators and have the patience not only to discover what the end-goal of a project really is but also to help everyone understand the project's limitations.  In addition, creativity will make any expert even better.  Take the time to explore challenges that would otherwise seem like impossibilities rather than just saying "No".  As with improvisational acting, experts in any field should strive to build on the ideas of others rather than negating them.

Monday, February 10, 2014

The Very Beginner's Guide To Your Salesforce Implementation

For smaller organizations just getting started with Salesforce, the possibilities it offers can seem overwhelming.  But it is not as challenging as it seems if you make sure you have a plan.

Prepare to dive in!

7 Considerations for a Salesforce Implementation

1.  Find your data.  Talk to every department and ask them what data they share and where they store it.  Some people find their own solutions and you may discover stores of data you didn't even know existed.  You may be surprised by how many different places the same data is being stored by different departments using different ways to store and work with the same data.  Don't forget to review what's on your website as well.

2.  Get to know your data.  When you are confident that you have located everything, compare what different departments are storing.  Where is the overlap, and where can you suggest more avenues to share information.  This is also your chance to start looking for bad data, duplicates, missing information and inconsistent data values. 

3.  Familiarize yourself with Salesforce features.  Get to know how different data objects, like Contacts and Accounts, interact.  Look at the data sharing, security and permissions options.

4.  Start a dialogue with potential users.  If you can set up a committee to drive implementation success, you should include not only the individuals who might be enthusiastic supporters, but also the ones who may be your biggest detractors because they can both help you create a solution that works best.  You should be talking with decision-makers and super-users who will be spending the most time using Salesforce. 

5.  Create a three part plan.  Part 1:  which business processes need to be addressed first and foremost?  Can you pick a smaller project that can be rolled out quickly to have a big impact and get users active right away?  Part 2: how will you configure your data in Salesforce?  If you are migrating from a different database, this is your chance to reconsider whether the data model works.  Part 3: how will you get users onboard?  Have your training and support processes well thought out and take advantage of Salesforce features that enable users to look for the information and help they need while they are in Salesforce.  Think about what best practice documents you will need to produce for users and start them during the planning process.

6.  Try everything out with a Sandbox.  Once you commit to using Salesforce and they convert your trial org to a production org, you can set up Sandboxes to test out all of your plans.  You can customize Salesforce and load samples of your data in a Sandbox to
determine how well everything works together before rolling changes out to all of your users.  You can even have your committee review and approve the final implementation plan after they've seen it in action in the Sandbox.

7.  Look at third-party applications on the AppExchange.  If you have a particular business process you would like to address with Salesforce, look at its native functionality first and consider how much customization you are able to do yourself, but also take a look at existing solutions.  You can install applications in a Sandbox to test them and make sure you find them easy to use for your particular needs. You can also use the AppExchange to find developers and consultants to assist you along the way.

Regardless of whether you plan to hire a consultant or do all the work in-house, keep in mind these seven considerations to help make your Salesforce implementations go more smoothly. 

Monday, February 3, 2014

5 Ways To Get Help With Your Salesforce Problem

Q:  How many different ways can you find help with your Salesforce implementation, administration and development?  A:  Lots!

If something appears to be off, you can easily find help!
Salesforce is so chock-full of features and the thrice-yearly releases offer so many improvements, it can be challenging to keep up.  For administrators who support smaller implementations, they may be the only person trying to keep up with everything that Salesforce can do for your business.  Salesforce has found a way to help with both of these situations by offering multiple avenues for help and support, including making it easy for the community of Salesforce users and administrators to help one another.

When you find yourself in need of help, here are my top five recommendations for finding the answers you need:

1.  Help and Training -- Salesforce offers standard and Premier Support and training for most users.  Help, without training, is offered for users with developer accounts.  Salesforce Help and Training should be your front-line for finding out how to do things in Salesforce.  All of the product documentation is searchable here, including some Best Practice documents.

Premier Support is what you want your support to be like, really.  Open 24 hours a day, they will track down even the craziest problems and solve them for you.  In addition to fantastic support, the online training available with Premier Support includes several of the classes offered in-person by Salesforce University. If you are working on Salesforce certification, you should definitely take a look at these training options!  And developers should note that Premier Support even offers help with code.

2.  The Community -- Let your peers give you a hand.  Online communities, and, for nonprofits using the nonprofit starter pack or other nonprofit specific applications, the Power of Us Hub, offer multiple channels for helpful discussions.
  • Answers -- Search for questions that others may have posted on topics of interest to you or post your own questions.  Lots of folks are looking for a Salesforce challenge and would love to answer your questions.  Note that the questions are organized by categories listed on the left side of the page.  For nonprofit organizations, you have an additional avenue for answers through the Power of Us Hub Q&A, a resource for applications and concerns specific to nonprofits.
  • Chatter Groups -- Sometimes, what you really want is to be kept abreast of what's happening and hear ideas from other Salesforce users and administrators.  Chatter Groups provide just that sort of information.  With groups like the Success -- Getting Started and Success -- Release Readiness, among others, you can keep up with Salesforce features.
  • User Groups -- Among the most helpful Chatter Groups, you will find the Salesforce User Groups online as well.  If you find a group in your geographic area, consider signing up for your local group and trying to attend meetings in person to get to know your peers.  Meetings give you an opportunity to ask other administrators, users and developers how easy or difficult a task may be before you try to hire a consultant.  User Groups can also keep you informed about Salesforce features and best practices and third-party application availability as well.
  • Developer Groups -- Like User Groups for developers, these provide opportunities for discussing technical issues and topics.

3.  Developer Community -- the developer boards offer a great place for help with all your Apex and Visualforce needs.  If you are trying to go beyond formulas and workflow, you may have questions that have been previously discussed on the developer boards.  You can find code samples to get you started with your projects as well.

4.  Office Hours -- both the Salesforce MVP community and the Salesforce Foundation host office hours as a regular webinar that folks can join to ask questions and get answers. Both provide a forum for conversations about problems and challenges you may be encountering.  The MVPs offer general help with Salesforce and the foundation offers help with issues concerning the Nonprofit Starter Pack and any related topics.

5.  Out in the Wild -- The community is also active outside of the Salesforce environment in places like Twitter (try #askforce when you want to make sure your question gets seen) and StackExchange, which tends to focus on technical challenges and developer concerns.  FindSFinfo is another great resource when you are looking for information to solve your problems, it performs a search of official documentation, discussion boards, blogs, code repositories, AppExchange, and videos for any text you enter.

By cultivating a strong community, Salesforce ensures that you can always find the help you need!

Monday, December 30, 2013

Make Sure You Know Their Qualifications!

If you are looking for a Salesforce consultant or developer, I always recommend that you look first at your Salesforce User Group, which gives you the chance to learn about who is in your area either in person or online. (Nonprofit User Groups are linked here.)

No matter how you go about finding help, you should always verify that they actually have the certifications they claim.  Salesforce now offers an online database of certified professionals.  With  someone's first and last name or email address, you can find a list of their certifications and see if their claims are true. Be warned, spelling counts!  For the most accurate information on an individual, just ask them to send you a link to their verification page in case their name or email address may be entered in a slightly different fashion than you have for that individual.

Not all consultants are alike, verify their certifications before hiring.
For example, you can view my certifications by clicking here, or click the photo of me on the right side of the page.  Yet if you were to search for me using the more traditional spelling of my first name, "Bonnie", you would not find me at all.  Similarly, you might know him as "Mike Gerholdt", but you won't find him listed unless you search for him by his formal name, "Michael".

Verification makes finding the appropriate individual for a job even easier, but for the best accuracy, just ask for the link.  Since the data is maintained by Salesforce, you can trust that it is up to date.

Monday, December 23, 2013

IP Addresses And User Access

As a Salesforce administrator, have you ever wondered when and where your users are accessing their data?  A recent new feature gives you even greater information about user access through a list of IP addresses and browsers used.  If you run a really secure database, looking at the list of IP addresses where users have accessed data is a must for security review, but even administrators of more relaxed orgs can use this information to better understand their users' needs.

User Access History By IP and Browser

You can see where in the world your data has been.
 With the Activated Login List,   you can see every IP address users have used throughout their history with your org.  This view provides even more information than the user login history.  You can even review the access addresses for users you have deactivated.  And, if you have any concerns about an IP address in the list, you can just remove access for that address after talking to the user about where they may be when they access Salesforce data.

Before you remove any IP addresses and browsers from the Activated list, you may want to save the information for future reference.  You will not see the removed data in your recycle bin!  So if you want to keep a record of which users activated their accounts for which IP addresses and browsers, save before you remove. 

Note that Salesforce documentation states that removing a user's IP address activation may only trigger a new activation confirmation request for that address if you remove activations for both the address and the browser used for that access, which you can find in a second list on the Settings>Security Controls>Activations screen. 

Just below the Activated Login List, Salesforce, the browser list contains recently Activated Client Browsers and gives you a more clues about how your users access data. This can be useful when you review your mobile access policies since many mobile devices can be obvious according to the browser listed here.

Unfortunately, the browser and IP address lists don't always coincide.  The browser list does not go as far back in time as the IP address list, and for my own personal activations, I found an IP address I activated at a specific date and time and three different browser activations listed within an hour of activating that address as I used different Connected Apps.

Dynamic, Static, Fixed Or Sticky

If you are surprised by the number of IP addresses that individuals have used to access the database, keep in mind that an Internet Service Provider (ISP) and local hosts may provide dynamic IP addresses from a set list of addresses.  In that case, the last digits of the address may be different for one user on a single device. 

Learning about your user's IP addresses and browsers gives you a more complete picture of what is needed to provide or deny data access for users.  Combining the Activated Login List with the login history report gives you a more complete view of what your users have been doing in Salesforce and with mobile applications like Salesforce Touch and Salesforce1.