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, success.salesforce.com 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 certification.salesforce.com 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.

Monday, December 16, 2013

Advanced Data Manipulation With Flows

Salesforce Visual Flow provides a relatively easy means to design task-specific user interfaces for end users to interact with data.  But it is important to note that Flow data is not permanent and exists only during one user's execution of the Flow.  You easily can connect Flow data to your Salesforce database, Visualforce pages and Apex code as well.

See my previous posts for more information about how Flows can simplify difficult processes for Salesforce users and tips for styling Flows

Record Lookup

Don't forget to save data if you need it!
If you intend for users to save the data, it can simply be written to Salesforce via the Flow data creation elements.  Similarly, there are elements for retrieving, updating, and deleting Salesforce
data. 

One of the important elements for connected Flow data to your Salesforce database is Lookup.  You can use the record lookup element to prevent duplicates when users enter data using Flow forms.  Note that the lookup will only return one record at a time.  If, for example, your form requests four fields for a Lead: first and last name as well as an email address and company, you can use all four to match the newly input data with existing data in Salesforce.  An exact match will be returned for Pat Smith with the same company name and email address.  It will not return matches with similar company names.

In addition, if there are already two Pat Smith leads with the same company and email address, currently only one of them will be returned.  At Dreamforce 2013, there was some talk about future releases returning a collection of records.

Once you have sorted out duplicates, you can determine whether the Flow data should be used with the Create element to create a new record in Salesforce or with the Update element to modify an existing record.  Make sure your Flow users have the appropriate object permissions to perform these tasks.

Error Messages

When you connect Flow data and Salesforce data, note that Salesforce might generate errors.  For example, because Flows respect user permissions and security settings as well as required fields, a user could try to save or retrieve data that is not appropriate for them.  In these cases, Salesforce will return an error.

Use a Decision Branch to process these "Fault" behaviors after linking to Salesforce.  For example, you can present error message Screens or send a user back to a previous Screen to start over.  

Accessing Flow Variables

If you need to use it in more complex processes, Visualforce and Apex can help.  As I mentioned, Flow data is not automatically retained and is unique to the specific user's current execution of the Flow.  Variables within the Flow can be made accessible to Apex and Visualforce by changing their settings from "Private", for use only in the specific Flow, to "Input", "Output" or "Input and Output".  These settings will also determine whether a Flow variable can be accessed by other Flows when one Flow contains another existing Flow as a subflow.

Note that the only way Visualforce by itself can access Flow variables is when it sends initial values to an Input variable.  For example, if your Visualforce page calls a Flow named JustSteps, it can pass a value to start at a specific step.  The code for passing a variable to specify step 3 might look like the following on the Visualforce page:

   <apex:page>
    <flow:interview name="JustSteps">
        <apex:param name="stepNumber" value="3"/>
    </flow:interview>
   </apex:page>

The Flow would then need to incorporate a Decision element at the start to check the stepNumber Input variable.

Note that Visualforce cannot change the value of a variable after the Flow has been initiated, nor can it retrieve values from Output variables without the use of an Apex controller as well.

Apex & the Flow

You can gain even more control over Flow behavior by using an Apex controller with your Flow.  The most basic controller provides your Visualforce pages access to output variables.  For example, a simple controller might look like the following:

   public class FlowClass {
    public Flow.Interview.JustSteps myflow { get; set; }
   }

Note that the  Flow name is the same in the class and in the Visualforce page that refers to the class. 
In this case the Visualforce page that uses the controller and retrieves values for a Flow Output variable called "stepsRemaining" might look something like this:

   <apex:page controller="FlowClass">

    <flow:interview name="JustSteps" interview="{!myflow}" />
   
    <apex:outputText value="Remaining steps: {!myflow.stepsRemaining}  "/> 

   </apex:page>

Another way to get more out of your Flow is through the use of an Apex plug-in.  Note that plug-in code needs to have a particular bit of code in use in order to implement the Apex Process.Plugin Interface.  An Apex plug-in can then be incorporated like any other element directly into your Flow and can assist with more complex data processing such as creating and saving attachments or converting Leads.

Once you start delving deeply into Apex and Visualforce for use with your Flow, you will probably want to reconsider managing the process.  If your process is very code intensive, you might then decide to bypass Flow and create what you need with just Visualforce and Apex.  For those who prefer not to code any more than they have to, Flow is a great alternative.

Monday, December 9, 2013

User Interface Improvements With Salesforce Flow

Flow gives administrators the opportunity to offer users a custom interface for interacting with Salesforce providing as much help as you think they may need to get their jobs done, from simplifying data entry to providing insight to help users complete forms, all without the need for code.

Last week, I defined some use cases for Flow and offered a presentation to introduce you to various features of Flows for data input and Salesforce record creation.  This week we look at ways to improve the user experience with Flows.

You can access the demonstration Flow I created at http://flow.snugsfbay.com.

Help

CSS and HTML
Cascading Stylesheets offer control.
Each Flow Screen has its own Help Text area, which you can use to add an extra bit of information  that may not be needed by all users.  In my example Flow, the lead form Screen includes a link to Help, located with the "Next" and "Previous" buttons, to let users know that their information will not be shared.  Other Screens offer more in-depth information in their Help.  And Screens that don't have Help text do not show a link at all.

Because Help text is defined per Screen, your Flow can provide context-sensitive help to your users.

Branding & Style

Flows offer two ways to format output display text and Help text.  Toggling to the Rich Text Editor while editing text, you can select formatting option buttons for bold, italics, font, etc.  But you can also enter HTML tags directly without toggling to the Rich Text Editor.  For example, "Not Bold and <b>Bold</b>"  will display the following: 
Not Bold and Bold

You can also use HTML tags to add an image directly to your Flow.  For example, adding the following to display text will display the Bay Area Nonprofit User Group logo: "<IMG SRC="https://c.na14.content.force.com/servlet/servlet.ImageServer?id=015d0000001wpuy&oid=00Dd0000000gNhq&lastMod=1381177979000" WIDTH="100" ALT="SNUGSFBay">"

For even more control over the look and feel of your Flow, define a cascading stylesheet (CSS) and incorporate both the Flow and CSS into a Visualforce page.  Among the tags particular to Flow are FlowContainer and FlowPageBlockBtns.

Special Tip

One undocumented CSS tag that you will want to know about if you change the background color of your Flow is interviewFormHeaderCell.  If you see a random underline character at the top of every Flow Screen, it comes from a bit of code automatically inserted by Salesforce, and is a known bug.  To get rid of the stray text use the following code in your Visualforce page or adapt it for your CSS file:

        
    <STYLE type="text/css">
        .interviewFormHeaderCell {border-bottom:0px;}
    </STYLE> 

According to technical support, this is the only way to get rid of the unwanted character as of Dec. 9, 2013.

Next week's blog post will describe some of the more complex data handling options currently available with Salesforce Flow.