Tuesday, December 2, 2014

Exploring The Limits of Parent Account Hierarchies in Salesforce

Salesforce.com started with the mid-market companies as their customers.  The last several years, they have been targeting larger enterprises and have been largely successful.  However, it has some room for improvement.  This IdeaExchange entry in particular explains the current limitations of the Parent Account Hierarchy.

Larger enterprises usually want to track different locations of the same company as separate accounts for one reason or another.  For example, the same company with offices in California and Florida may be owned by different account managers.  Or, resellers with offices in several countries may be managed by different channel managers.  However, the company itself would like to track opportunities and revenue for all those accounts together.

Salesforce does provide a standard field called "Parent Account".  If you have a one-level hierarchy, meaning all locations roll up to a single account, you can report by Parent Account to show that summary.  But as outlined in the above IdeaExchange entry, it has its limitations.

For one, as soon as you have multiple levels of the hierarchy, you can no longer report by just "Parent Account".

Secondly, if you have opportunities (or any other child object) related to that parent account, those opportunities will not show up in the report by Parent Account, as the Parent Account field is blank.  You lose the ability to use standard configuration to show report charts on your page layout, and have to resort to building custom VisualForce pages and Apex code to show the information at the parent account.

From a different perspective, an account manager who owns an account at a national level but has multiple locations, he now sees multiple accounts, even though he is really only dealing with people at a specific location.  This can of course be resolved by not assigning those irrelevant locations to that account manager.

For reseller accounts, a channel manager must now manage multiple accounts, and ensure each contact is tied to the right account.  This adds administrative burden for them, or for some other data administrator on their behalf.  And similarly, to get a complete view, you will now need custom VisualForce pages.

If the company is willing to limit itself to a single level hierarchy, there is a potential solution.  It is not completely standard configuration.  It requires that you create a parent account for all accounts for the sole purpose of tying all accounts together.  No other child objects will be related to this parent.  Also, even accounts that have a single location will need a parent account, potentially.  This allows you to still use the standard report charts on the page layout, as the chart can filter by "Parent Account Id".  You will still need custom VisualForce pages if you want to show record details as a related list.  This does require more resources to maintain, and sometimes it may not be worth it.  Each company will have to evaluate and balance its short term requirements and long term requirements against the available resources to develop and maintain such custom work, not only from an IT resource perspective, but a data administration perspective.


Monday, November 3, 2014

Saving Coca-Cola

In the latest news, Coca-Cola's stock is down 6%.  Investors did not receive the news very well - that soda sales are declining, that more and more people are waking up to the fact that sodas are not healthy drinks.

While still the most recognizable brand worldwide, Coca-Cola is in a decline.  Is it a reversible trend?  Maybe, or maybe not.  But with close to 3 billion dollars spent in marketing, it might make a difference in the outcome.

But when was the last time I saw a Coke commercial?  It has been ages.  I have not seen one while watching YouTube, or any ad-supported game I am playing.  I rarely watch live sports, and everything else is recorded so that commercials can be skipped.

I am a Coca-Cola fan and a shareholder.  I remember growing up with Coke.  I remember the truck stopping by our house to deliver a case of 8 oz. bottles to my grandmother.  I remember walking to the corner store to buy a liter to share with family and friends.  But, should I face the fact that it will never be the same again?

I also remember the great Coke commercials that tugged on your heartstrings: Friends, or
First Time.  Growing up, Coke was tied to good times.  All the birthday parties had Coke.  Whenever there was something to celebrate, there was Coke.  Whenever there is fun, there's always Coca-Cola!  Coke needs another campaign like these.

And more importantly, Coke should start serving 8-oz bottles again.  I grew up on 8-oz bottles.  That was the perfect size, not 12, not 7, not a liter nor two.  8-oz is the personal size Coke.  If people stuck to drinking one 8-oz bottle a day, they would probably be fine.  I distinctly remember the 8-oz Coke also tasting better, better than the 12-oz, or the half-liter, or even the one in cans.  (Our Coke had sugar, not high-fructose corn syrup.)

To the management team of Coca-Cola, I say, bring back the 8-oz Coke with sugar!








Tuesday, September 16, 2014

Relating Air Conditioning Systems to Business Applications is a Stretch

HowStuffWorks has a good introduction on how air conditioning systems work.  Whether it is a house or a car, the components are similar.  I'm not going to go into too much detail as there is a ton of information available with a quick Google search.

The A/C system has a few main components: the evaporator, the condenser, and the compressor.  There are other parts mentioned in the HowStuffWorks article, but let's focus on these three.  Let's add a fourth component: these three are connected via hoses.

If you have a problem with your A/C, or you simply want to upgrade to a more energy-efficient unit, you will most likely work on one or more of these components, but not the hoses.  Hoses are, at least in a modern house, tucked inside the walls and are hard to replace.

If you had a problem with cooling, you will most likely refill your system with refrigerant from the outside unit, or in the case of an automobile, on the valves along the hoses nearer to the compressor.  If you wanted to upgrade your compressor and evaporator, you will be working on components outside the cabin of your car.

While the technician is replacing components or recharging with refrigerant, he may notice that there are leaks in your hoses, or the connections in between hoses.  But this does not necessarily mean that the new components are defective, or that the refrigerant is bad.  A different component is failing, not the ones he is currently working on.

Similarly, business applications, for example, one for Customer Relationship Management and one for Order Management, are connected by "hoses", in software terms, "Middleware", or more recently "Enterprise Application Integration" software.

If you are making changes on one or both applications, and expect messages to be passed between them, it is entirely possible that the "hose" is broken, and not necessarily that the applications you have changed are broken.

Of course, it is necessary to fix the "hose" in order to test that the messages with the new or updated information is being exchanged.  But, if after a few messages have been successfully sent, and then it breaks, and no new changes were introduced to either application, then the "hose" has a problem, not the applications.

The point is that it is possible that the application changes are correct, and can be considered successful.  The changes can be put into production, while the problem with the "hose" can be addressed separately.  In the A/C world, the technician can still continue to replace the components, and deal with the hose issues separately.


Wednesday, August 20, 2014

Account Name Complications

In a less complex setup, Salesforce Accounts are used solely to track and manage a sales rep's accounts and tie his opportunities to them.  There are less stringent naming conventions, less emphasis on data quality, especially around account names.

Typically, a sales rep will refer to their accounts by their commonly accepted name, or "Trade Name", like Salesforce, or Apple, or Starbucks.

As soon as companies add on certain processes into Salesforce, for example, Quotes and Contracts, a more formal process for names is required.  For example, Quotes and Contracts will typically need the full legal name, like Apple, Inc.  It even gets more complicated when their legal company name is totally different from their common name, or "Doing Business As (DBA)" name.

Start doing business in countries with local languages and special characters, the local sales reps will prefer to record their local language name, as that is their common name, but it becomes a headache for HQ Operations who want to manage and cleanse the information.  And when it comes time for Quotes and Contracts, HQ will most likely require Western character company names.

My current thinking on this is that in Salesforce, the standard Name field will always be the common name, or their DBA, or their local language name.  This makes it easily searchable for the bulk of the field users who are local.  This also means that data cleansing should be handled by local administrators.  Who else would be better to determine whether two records are the same company but a local person?  Alternatively, give the field users the ability to request for merges.  That way you can have a centralized data administrator.

In summary: use Name as the common name or DBA name, and add another text field, Legal Company Name, and maybe a third field for Western Language Name, although you could probably get a way with using the same field if the label is clear enough.  Unfortunately "Other Name" is very vague.





Friday, June 6, 2014

The Long Term View

In the book, The Outsiders, William Thorndike explores eight unconventional CEOs who have beat their industry peers and the overall market returns over long periods through both bull and bear markets.  One of the common threads among these CEOs is their tenure as CEO.  All of them served as CEO for more than 20 years.

In contrast, Dr. Ralph Z. Sorenson, member of the Board of Directors of Whole Foods, said in a recent interview that in his years of reviewing business plans, many describe an "Exit Strategy" along the lines of: "We aim to be bought by a larger company" or "Cash out at IPO".

In a survey conducted in 1999, twenty five percent of Americans believe that the lottery is their best chance at getting rich.

Waiting is hard.  Waiting is boring.  Warren Buffett himself said that his business is boring.  That is why very few people do it.  And yet he is one of the richest people in the world.  And he did not get rich overnight.

There is a saying, "Patience is not a virtue, it is a necessity." Instant gratification is easy, and is preferred by many.  Delayed gratification is more satisfying, but requires a certain mindset.

Many CEOs fall to pressure from Wall Street to demonstrate good results quarter over quarter.  Many of them take the short term view, looking to hold the company shares for a few seasons.  Great CEOs are like small business owners.  They see their business as their livelihood, as a going concern, to increase long term shareholder value, and they act accordingly.  They take the long term view.  They may sacrifice short term profits for long term growth.

Great investors do not buy stocks, they buy stakes in companies.  They become business owners.  They buy the businesses after learning what they can about the company, and conclude that it can create long term value for them. They become involved in the business by continuing to study and analyze them.  And if their conclusion has changed, they are not afraid to sell, even at a loss.

In day to day operational work, the long term view is sometimes overlooked.  In the pressure to deliver results, or to satisfy an immediate need, it is easy to forget long term ramifications of any process change or system change.  What may sound trivial now may result in a greater cost down the road should business climate change.  It then becomes very important to balance short term requirements against long term impacts.

Always, ALWAYS, consider the long term view.


Friday, April 25, 2014

Salesforce: An Alternative to the Banner Visual Force Page

From time to time, there is a requirement to display a warning or a soft error on a Salesforce detail page that will alert the user before an action takes place.  For example, warn the user to complete certain fields before converting a lead.  This allows the user to save a lead with minimal information, but add to it over time until he can convert it.

One way to do this is to create a custom Visual Force page that displays as a banner on top of the detail page.  This page can be controlled by an APEX class that performs all the validations and displays a text depending on the information already on the lead.  It could say "Postal Code is required before converting this Lead."  And that message can be in red, and in a box.  It's great because you can control the look through coding.  The downside is, it's coding.

An old alternative was to use a standard Text field with IMAGE functions, displaying a red flag, yellow flag, or green flag, and an appropriate message.  This link details that solution.  This is a good no-coding solution. However, the text is just as big as regular fields, and can be missed.



If they miss this message, it is frustrating to the user, especially if it is preventing him from submitting for approval, and the only available message is the standard message that it does not meet any approval entry criteria.



It is very cryptic.

Some time in 2010, Salesforce released a new data type, Rich Text Area.  And instead of using a regular field for a warning message, this data type can be used.

First, create the field with an appropriate length, say 1024.  It should be read only to everyone, so that only workflow field updates will populate it.  Then add it to the top of the page layout in its own section.  The section heading can be removed, which is what I recommend so that it behaves like a visual force banner.






The field label cannot be hidden, so label it appropriately, like "Messages".

And now, you can use standard Workflow that fires appropriately based on certain criteria, and put a message in.  For example, if Country is US, CA, UK, and Postal Code is NULL, you can set the Messages field to something like:

"<p><strong><big><span style=\"font-size:26px;\"><span style=\"color:#ff0000;\">Postal Code is required for this country before converting.</span></span></big></strong></p>"


The above formula will be shown on the page like this:



This allows a user to still save the record, and he can come back and add the postal code later.  A little bit of HTML knowledge can come in handy here, but there are a handful of HTML generators online for those unfamiliar.  They may insert unnecessary tags, so the administrator may need to experiment and test to see what looks best.

Always keep in mind that there are limits on the number of workflows and limits on the formula editor.  This is where an admin can get creative to work around these limits.


Monday, April 14, 2014

Salesforce Gotcha! Time-Based Workflow Nuance

I received a complaint that a certain time-based workflow was not firing consistently. I looked at the workflow in question.  This was created by one of the Salesforce Certified consultants earlier on. In summary, it works like this:

Workflow A: evaluated when record is created, or edited and subsequently meets criteria
Condition: Status is X
Immediate Action: Set a Future Fire Date to Today() + 240
Time-Based Action: Send email 1 hour after Future Fire Date

On the surface, this sounds logical.  It even works from time to time.  I checked all records with Status X and they all are in the time-based workflow queue.  But thinking about previous implementations, we know that Salesforce does not guarantee order of execution of workflow actions. So it is possible that the time-based action is being put into the queue, but the Future Fire Date is still blank, in which case, it will not be added to the queue.

I searched the Knowledge Base for more information.  The Time-Based Workflow FAQ did not have definite information about it.  I ended up opening a case with Salesforce Premiere Support.  They confirmed that the above workflow will NOT consistently work.

This is why the Field Update has a new feature to trigger workflow rules after the update.

The correct solution then is to break the workflow above into two:

Workflow A: same as above
Condition: Same as above
Immediate Action: Set a Future Fire Date to Today() + 240
Check the flag on the Field Update to Trigger Workflows

Workflow B: evaluated when record is created, or edited and subsequently meets criteria
Condition: Future Fire Date is not null  (or Status is X)
Time-Based Action: Send Email 1 hour after Future Fire Date

This will now work consistently and no records will be missed.

Friday, April 4, 2014

Salesforce: Completing The Picture

For a sales rep or a manager to have a complete picture, he needs to see the total value of his closed business together with his open opportunities.  It easily tells him how much he's won, and how much is coming in the future.  The third component of this is of course his target.  These three make it easier for him to manage his business or his team.  In this article, we will focus on presenting "won business" to the sales team.

In Salesforce, if all the opportunities are managed by a sales rep, all of them would be in Salesforce.  So a view into closed business would be as simple as a report of all won opportunities.  As a company grows, this may not always be the case.

There could be incoming business that are sold completely through a different channel, like partners or online direct sales.  There could also be run-rate business, incoming orders that are zero to low touch, recurring or non-recurring orders for spare parts, automatically renewing subscriptions, and similar instances that the sales rep does not actively manage.

And that is where the challenge begins.  How do you complete the picture for your sales team to include this type of business?  There are several options to explore:

The first one is relatively simple in Salesforce, but requires manual entry.  Have some data administrators create won opportunities for the bulk of these no-touch closed business, one for each rep or territory.  If you use Opportunity Products, create one line for each product you report on.  They may also create an open opportunity to show future run rate amount.

The advantage of using Opportunities is that all the existing Opportunity-based reports will work with these records.  The standard Forecast module will also work.  The disadvantage of this particular option is the manual intervention required.  The more sales reps there are, the more opportunities need to be maintained.  The more products you have, the more lines need to be maintained.

The next step to this option is to attempt to automate this via a data feed.  A daily or weekly feed from a data store or directly from your order management application can be used to update these same opportunities.

This gives you the advantages of automation, i.e. not needing admins.  It does require building this automation to transform the data into something that the Opportunity object will accept.

Another option is to use a custom Orders object, or use the new standard Order object that came with the Spring '14 release.  This moves you more into standard Salesforce functionality, but still requires either manual data entry or automated data feeds.  For most companies, the order management application is not Salesforce, so building some form of integration is a must.

The other matter to consider is how much of order details do you really need?  Do you copy each and every order individually and all the line items?  Consider that Salesforce has limits on data storage, which is a function of the number of users in your organization.  Also consider how much reporting are you planning to have in Salesforce?  If you have a product hierarchy, and most reports just filter or group by product family, then you don't need SKU level line items.

So far all of these options involve just Salesforce and some integration.  This is fine if your technology strategy is "Salesforce first".  And for a large part of your sales team, this will suffice.

The final option is of course, one that is more sophisticated.  With all the advantages of Salesforce reports & dashboards, being very easy to create and maintain, Salesforce is still not an analytics platform.  Each company will have to evaluate for themselves whether that simplicity is a priority over capabilities that true analytics and business intelligence solutions provide.

This solution will combine all your data, from campaigns, leads to opportunities, to quotes to orders, even to commissions, into a single data store where everyone can run simple reports to the most sophisticated dashboards that combine all these. There are several choices in this space.  A quick Google search will yield new companies as well as established players.

Having a single solution for both sales, operations and back office may make sense for some organizations.  One requirement though would be seamless integration with Salesforce, both from a data perspective and a user experience perspective.  Sales users should not feel that they are jumping into another application.

The advantage of this option is that you get all the capabilities of a true analytics tool.  The disadvantage of course is the expense of the tool and all the integration work required.

Some companies may be better off with a mix of both: a true business intelligence tool AND reports & dashboards in Salesforce.

In summary, there is no one-size-fits all solution.  Each company must decide and balance their priorities, their capabilities and their budgets, and find one that fits them.














Thursday, March 27, 2014

Protect Your Parents Online

A quick Google search of 'protect your parents online' reveals that most sites deal with protecting your kids.  There is very little out there about protecting your parents.  Maybe everyone assumes that they can take care of themselves.

Most likely, they can't, especially online.  My parents are not necessarily tech-savvy.  They grew up before the Internet, before cell phones, before computers were commonplace, before Facebook.  While they picked up basic computer usage, I doubt if they protect themselves online.

Case in point: my mother's Facebook page was hacked into.  A new profile was created, invited the same friends, and subsequently asked for money through a donation.  I wasn't copied on the message, presumably I was excluded as I had the same last name, and I would recognize that something was amiss.

She changed her password since that incident, and hopefully that will be the end of it.

So here are a few tips to protect your parents:
  1. Teach them about strong passwords, about phrases and character replacements, and special characters and adding numbers and mixing case.  This may be an uphill battle.  My mother had created multiple Skype accounts because she could not remember her old password.  She doesn't do online banking, so using the same password to different sites might be okay.  Adding a few words specific to each site could be something that parents will remember.
  2. When I was a kid, my father taught me not to believe everything I see on TV.  I will remind them of that lesson, but in this case, don't believe everything on the computer.  Just recently I read of an older gentleman whose computer was held 'hostage', and the screen said to pay $99 to fix it.  Luckily for that man, he had a good backup, and simply restored an old backup.  And then in the news there are older people who fall for the advanced fee scam.  My mother also taught me that the warnings on chain letters are not true.  I will remind them not to forward anything through email or re-post anything on Facebook as soon as they see one of those.
  3. Teach them about privacy.  Show them how to change their Facebook privacy settings.  Tell them that the exact birth date is not always necessary, and be wary of giving the information to every site they register to.  Tell them there is such a thing as 'over-share'.  And that public posts are just that: public.
 These are just three.  They seem to be the most basic, and will reduce many of the threats our parents may face online.  I'm sure there are more, but if my mother can't remember her Skype password, I doubt she will remember more than three tips.



Saturday, March 22, 2014

Is Amazon Prime Worth It?

Is Amazon Prime worth it?  Or more accurately, Is Amazon Prime worth it to me?  This is a personal question.  What I think is worth what I paid may not apply to anyone else.  And that is perfectly fine.

I signed up for a free trial of Amazon Prime.  The offer sounded good enough not to pass up.  As Amazon is increasing their subscription price from 79 to 99 dollars a year, they were offering to lock in at 79 if I sign up today.  And I get 30 days to try it out before they charge me the 79 dollars.

What does one get with Amazon Prime membership?  A lot of it is highlighted on their website, and as of this writing, they are:
  • Free Two Day Shipping on millions of items
  • No minimum order size
  • Unlimited streaming of thousands of movies and TV shows
  • Read free books each month
Let's examine the first two together.  First, I will take a look at my purchases in the last two years, and then see how much I would have spent for two day shipping if I chose that option every time.

In 2012 and 2013, I had roughly 35 orders each year.  This excludes Subscribe & Save orders.  If two day shipping costs $10 on average, I would've saved $250 dollars just by subscribing to Amazon Prime.  But the flipside of that is I don't NEED two-day shipping.  I plan ahead enough to not need something I purchase from Amazon in the next two days.  I always choose Free Super Saver Shipping.  This option, of course, has a minimum order value.  It was $25 last year, and it is now $35.  Either I wait until I reach that minimum threshold or I add something I've been looking at but was not ready to buy at that time, just to increase my order value.

So, in summary, if I really cared for two-day shipping, $79 or even $99, which is their new price, is worth it.  But right now, I don't.  It's great.  But I probably won't miss it if I went back to Super Saver Shipping.

Let's then take a look at unlimited streaming.  I can only compare this to Netflix, as I have had experience with that service.  I have not tried Hulu Plus or any other similar service.  Netflix charges $7.99 for theirs.  When it was still bundled with their DVD rental, I tried it out, and what I found was that there wasn't really any show or movie I would watch from their selection.  That was three years ago.  I don't know if I would like House of Cards, or whether I would have the time to watch yet another show.

Amazon's selection is also limited.  They may say thousands, but there are very few that I would watch.  There are old movies I've seen before and like, but I don't like them enough to watch them again.

I watched Skyfall the other night.  There is The Avengers as well.  But I've seen both before and I didn't really want to watch them again.  Also as I alluded to in another post about Netflix, streaming service is at the mercy of bandwidth.  As I was watching Skyfall, there were a few times when it stopped to buffer the movie.  And I wasn't even skipping chapters.

This service alone can be priced the same as Netflix, which is $7.99 a month.  So ninety six dollars a year out of the $99 goes to this service, if we were to compare Netflix and Amazon.  But I wouldn't pay $96 to either for such limited content.

Moving on to the free books, I'd like to highlight that these are Kindle books which can only be read on a Kindle, or through their Kindle reader app on an iPad.  I have only read two books on my Kindle.  While it is very convenient, I still like the tactile feel of turning pages.  As I said, this is a personal evaluation.  Others may like the convenience over the tactile feel, in the same manner that I finally ripped all my CDs into MP3s. It's just more convenient.

I also have only briefly checked the selections available for free.  If the movie selection is any indication, I don't know if there is anything that I would necessarily read.  For me, at least, this is probably worth five dollars a month, or sixty dollars a year.  And I wouldn't pay sixty dollars a year for the current selection.  I would rather buy real books with sixty dollars, also through Amazon.

So, overall, is it worth it to me?  I don't think so.  I would rather save my $79 dollars, use Super Saver Shipping, and buy more stuff with $79.  But I can't stress this enough: this is my own analysis based on my own situation.  Anyone can put in the time, do this themselves and find it is worth it to them.


Monday, March 10, 2014

Salesforce: Another Use for ISCHANGED

In an earlier post,we used ISCHANGED to track when Next Step was changed.  This formula can be used in many situations: logging when a Lead Status was changed, when a Close Date is changed, or when a Sales Stage is changed.  The last scenario is useful if you need to show it on a page.  For reporting purposes, the standard "Age Duration" is available on standard Opportunity report types.

But what if we need to measure how long each stage is taking?  This will help the management see where the sales teams take long, and maybe provide help to move them along faster.  It can also help rationalize if the sales process is accurate.

First, the requirements: We need to log when an opportunity reaches a certain stage.  We also need to clear out any time stamps for subsequent stages (in case the Stage went backwards).  And then we need to measure the duration between stages.

In this scenario, let's assume we only have one Sales Process, that is, one set of Sales Stages.  First, let's create a time stamp field for each stage. These can be pure Date or Date/Time fields, depending on how granular you want to measure your sales cycle.  They should all be read only to all profiles, as they will only be updated via workflow email updates.

Now we need the workflow and field update.  The first time stamp is a little different than the others. We want to capture the time stamp of the first stage upon creation.   ISCHANGED isn't actually True when a record is new.  If all the workflows were just based on ISCHANGED, the time stamp of the first sales stage upon creation will not be captured.

Assuming that we allow the sales team to create opportunities above the first stage, we must create one workflow for each stage that we want to capture, that fires only when the record is created, and has a single criteria that evaluates the Sales Stage.  For example, to capture the time stamp if it was created with "Prospecting" as the stage, we will need this workflow:


 Note the Evaluation Criteria and the lone Rule Criteria.

We will need one of this for each stage in your sales process.  And this takes care of capturing the time stamp when it is created.

The field update is relatively simple.  We will use NOW() if it is a Date/Time field, or TODAY() if it is just a date, and set the Stage 1 Timestamp or Prospecting Timestamp field.

Now, to capture the same time stamp when the stage is changed,  we will use the following formula:

AND ( 
  ISCHANGED ( StageName ),
  ISPICKVAL ( StageName, 'Prospecting')
)

We will use the same field update that we used in the earlier workflow to  capture NOW() or TODAY().  And again, we will create one workflow for each stage, adjusting the value in ISPICKVAL as appropriate, and changing the Field Update.

We also need additional field updates.  Say for example, our organization uses the standard Salesforce stages, and a sales person moves his opportunity back from Id. Decision Makers to Value Proposition.  The time stamp for Id. Decision Makers is now invalid.  We will need to clear this out, and all the timestamps for the subsequent stages.  So for each of these workflows, there will be more than one field update.  One to set the time stamp of the current stage, and one or more to clear the time stamp of subsequent stages.

The above steps take care of setting the time stamp for each stage when that stage is reached, either when created new or when the opportunity stage is updated.

The next step is to create formulas to get the duration.  We need a formula field, Stage 1 Duration for example, that evaluates to a number, and the formula will be something like this:

IF ( ISPICKVAL( StageName , 'Prospecting'),
  NOW() -   Stage_1_Timestamp__c  ,
  Stage_1_Timestamp__c - Stage_2_Timestamp__c
)

    
If it is currently Prospecting (and Prospecting is the first stage), then the duration for Prospecting is the current date and time minus the time stamp when it was set to Stage 1.  If it is not, then it is the difference between Stage 1 and Stage 2.

Note that the above formula will cause issues if the opportunity jumps from Stage 1 to Stage 3.  The formula can be modified to check if Stage 2 Timestamp is not null before performing the subtraction, and making the result -1 to signify that it is unavailable.

The alternative is to modify the workflows from the previous step to set any previous stage time stamp to TODAY or NOW, the same as the current stage, effectively making the duration zero.  An administrator can discover the pros and cons of each and reach a decision on the best way forward for his own organization.

Once the workflows have been added, and the field updates are done, it is possible to populate the new fields with data from the Opportunity Field History table.  This requires some Excel work and the use of Data Loader.  Afterwards, reports can be created to show average duration of each stage.

To summarize, we have created fields, workflows, and field updates that will allow us to measure Stage Duration for each Stage and gain useful insight about the current Sales Process.





Monday, March 3, 2014

Never Hesitate to Collaborate

I play piano for a church choir that sings fairly regularly.  Last weekend, the person in charge of coordinating choir groups, musicians and schedules came to me and asked if it was all right if a bass player joined us that day.  She even said it was okay to say no.  I did not hesitate.  The answer of course is "Yes!"  I wondered to myself why that was even a question.

Many great musicians have collaborated and recorded even more spectacular sessions with other great musicians.  If nothing else, adding bass just makes for better sound.  And what is the worst that could happen? He may be off tempo or off key some of the time, but not all the time, and in the grand scheme of things, does it really matter?  All I see is a great upside to improve the music.  We weren't curing cancer or solving world hunger. We weren't recording the next great American Songbook.  Sure, in a more professional setting, you'd want some practice time together first. This isn't that.

Turns out he was great. We'd like to have him back.

For a team attempting to solve a business problem, it is almost always better to welcome a new addition who has expertise.  That fresh perspective always keeps things interesting.  The only downside I can think of is when it is late in the game and you have to train someone.  But if someone is coming in with experience, by all means, let's collaborate!  There may be a solution the existing group hasn't thought of.

In music, and in business, never pass on the chance to collaborate.

Wednesday, February 26, 2014

A Better Way

In the elementary and secondary school I attended, there was a quote on the wall that has stuck with me: "Good, Better, Best: Never let it rest, until good becomes better and better becomes best." Looking at some of the best companies that made their name in recent years, their founders also set out to find a better way.  They set some of the best examples of finding a better way.  It is this drive to innovate that makes humans thrive.

Starbucks founder Howard Schulz outlines in his book that he wanted his customers to have 'a better coffee experience' in his stores, from the smell, to how the baristas make the drink in front of you.  Even if today, with thousands of stores, the experience may not be as consistent, but the idea is there: a better way.

Netflix initially set out to find a better way than what Blockbuster had to offer.  And then they offered a better way to delivery TV shows.  I may not fully buy into the idea as they are totally dependent on bandwidth providers, but still, for some, it is a better alternative to traditional cable.

Tesla thinks that a bunch of heavy batteries is a better way.  It may not work for some who can only afford one car that will serve both as a commuter and a long distance road trip vehicle.  Or some may think that lugging around all that weight isn't really the best way.  But still, until that next idea, Elon Musk thinks that he has a better alternative to the internal combustion engine.

Jeff Bezos knows that there's a better way to shop.  And he thinks there is a better way to deliver products.  And Whole Foods thinks there's a better way to buy groceries, and a better choice for what to eat.

Not everybody will agree with these companies that they are the best.  That is why there is competition.  The common thread is that each of these companies are finding better ways to do things.  And that, to me, is a great thing.  Always find a better way.  There's got to be a better way.


Tuesday, February 18, 2014

Close Date?

To a sales user who has used Saleseforce or Siebel or SAP CRM for quite a while, the term 'Close Date' on an Opportunity is not new.  But sometimes, to a person who does not encounter the term on a daily basis, the term is ambiguous.

So what is Close Date?  If the opportunity is still open, or in play, or active, it is a future date, or it is the "Expected Close Date".  And if the opportunity is already closed, it is the date when it was closed.

Depending on your sales process, it is usually when you receive the order from the customer, or when the order is booked in your order management application, or when the contract is signed.  If it will be fulfilled through a third party reseller, it could be when the point-of-sale information comes through.  That is, if you win the opportunity.

Salesforce.com does not automatically change the close date once an opportunity is closed.  And that is where some of the reporting and dashboards become skewed.  For example, a sales rep can reasonably expect something to close in January based on commitment from his customer.  But situations change and he needs more wins in December to meet his quota.  He convinces the customer to purchase in December and closes that opportunity early.  If he is not diligent enough to update the Close Date, a regular Win report will show that opportunity as being won in January, not December.

Similarly, if a sales rep has an early stage opportunity that he expects to close in June, he will put a  Close Date in June.  And if after further qualification or further discussion in February, he clearly sees that his product cannot answer the customer's needs, so he marks it as Lost.  That opportunity will be marked as Lost in June, not February.

If management is measuring Win/Loss ratio by quarter, then it may not be completely accurate if we rely on the standard Salesforce.com functionality.

It is relatively simple to update the Close Date when an opportunity is closed.  Create a Workflow Rule that will fire when the criteria: Opportunity: Closed equals True. 


And create a field update that will set the Opportunity Close Date to TODAY().  It is that simple.



Now, if for some reason, you want to keep what the rep originally entered, for example, to measure how accurate they predict the Close Date, you can instead update a read-only field called "Actual Close Date" to TODAY().  If you do measure accuracy of Close Date, you may still want to update the Close Date to today's date when an opportunity is Lost.  Measure only the accuracy of Won opportunities.  And of course, to see how far off the rep is, a formula that will subtract one from the other will be necessary.  Depending on your business, it may be acceptable to be in the same month, or the same week, not necessarily accurate to the day.

As always, evaluate what makes sense for your organization.










Thursday, February 13, 2014

My, How Far We Have Come

In the early days of CRM and Salesforce Automation (hey, we didn't even call it that), we equipped our field agents with laptops and a printer.  That proved to be too heavy, but the idea was that they were mobile enough to do everything they needed to close a sale.

The early adopters were our top sales teams who had the most experience.  Translation: they were twice my age at least.  The first day of classes was basics of computers, and in later courses, included typing!

That was in 1995.

The Toshiba Satellite T2400 had a really small screen. So screen real-estate was at a premium.  We had to be creative in screen design and overall user experience (the term was not widely used then).  Now, back on mobile devices, screen real estate is again at a premium.

The next year, I was speaking to a field operations executive from the local licensed Coca-Cola bottler, and we were talking about enabling their field representatives (who rode on their trucks) to do everything they needed on a laptop, and connect at the end of the day to upload everything.  I never followed up on that lead, but at the end of the conversation the hesitation was the cost of the laptops (they had to be the rugged kind from Panasonic at that time), and having to connect at the end of their shift via dial-up.

Now, the idea is no longer outside the realm of possibility.  Connectivity is instant.  There is no need for an end-of-day synch.  And there is no need for an actual laptop.  The tablet has replaced the laptop as the mobile device of choice for field work.  That same problem could be solved in a few months if not several weeks.

In 1999, we were experimenting with WAP apps (Wireless Application Protocol) for field reps and customers to access their customer and product information and make payments.  Unfortunately the screens severely hampered the user experience, and the connectivity was spotty at best.

Up until 2009, I have had users clamoring for a mobile offline version of their CRM.  They say they could be on a plane or on a train, and there is no connectivity.  They have to be able to work offline and synch back up once they are in the office.

Fast forward five years and many carriers now offer Wi-Fi on board, and if they didn't, your phone will most likely have a signal and a data connection.  And bandwidth is far cheaper than what it was then.

What you give up in computing power, you make up with the mobility, the ease of use.  And you can always perform server-side heavy computing, much like the old days of mainframes and thin-client architectures.  So a lot has changed, but some things remain the same.

Apps used by field sales are no longer designed with a desktop or laptop user in mind, now they are mobile-friendly first, or at least, considered at the same time as their PC counterparts.  But mobile devices don't have a lot of storage, much like the old days of PC computing.  So the same principles around efficiency that applied then still apply now.

I can hardly believe it has been less than twenty years.  And yet, the technological evolution is outstanding.  I'm sure that it will only get better from here. I've posted somewhere before about software programming, "The language may change, but the logic remains the same."  In the same manner, the technology may change, but some basic principles will not.

The main thing that still holds true today for CRM and SFA, or any app that you expect a sales person to use, is from one of my early users who took time to write me a letter (on paper) in 1996.  He was a seasoned sales rep and managed a large sales team in a regional office.  Referring to one module in our app, he said, "This requires a PhD in Computer Science.  I cannot use this.  Keep it simple!"



Saturday, February 8, 2014

Salesforce's New Report Folder Sharing

If you haven't enabled Salesforce's new Report Folder Sharing feature (Setup | Reports & Dashboards | Folder Sharing), here are some things to consider before doing so.

The biggest advantage is having more granular control of report sharing permissions.  For example, you can delegate users as managers of a folder without having to give them "Manage public reports" permission on their profile.  And then the rest can be viewers.

In the past, you set the folder to "Read Only" or "Read and Write", and that dictates what every user can do on that folder.  Only users with the "Manage public reports" permission can write to folders that were generally Read Only.  Even if a user's access was "Read and Write", without the "Manage public reports" permission, they cannot overwrite their old reports.  They had to save a new version and ask an admin or someone with that permission to delete the old reports.

Once the new Folder Sharing is enabled, the interface for setting permissions changes.  Before, you click "Edit" on the folder and at the bottom, pick groups, roles, or just all users (include or exclude portal users).






With the new folder sharing, there's a "Share" menu option when clicking on the folder, and a popup allows you to pick users, groups, roles, roles and subordinates, and then select a permission: Manager, Editor, Viewer.  (Details on each permission can be found here.)

Now on to the biggest disadvantage: In the past, if you had a folder that was shared to "All Users", i.e. the first two radio buttons above, when you schedule a report to be emailed, you can pick specific users from the list without doing anything else.




But with the new feature enabled, there is an extra step, even if the folder is shared to All Internal Users or All Users.  First you have to share the folder to those specific users.  Or create a public group with all of the users who need to receive the emailed report, then share the folder with that public group.

Only then will you be able to select those users or that public group as recipients of the report.

Note that previously scheduled reports will not be affected.  But for new scheduled reports, the step above is necessary.  I received so many calls about it, I even raised a ticket with Salesforce Support, and they said it is a "feature", not a bug.

Thanks for reading!












Tuesday, January 28, 2014

The Next Step for 'Next Step'

Salesforce provides a standard 255 character Next Step field. For many sales reps on the go, this is plenty. It could be as simple as 'Schedule call with CMO...' It provides a little more color than a Sales Stage.

One of the very first things done on the 'Next Step' field is enabling History Tracking to help them see what was there before.  And users can see the previous values in the Opportunity Field History related list.  This history table is also reportable but since the table has so many entries, performance may suffer.

For a sales professional with 5 to 10 active deals at a time, noting down next steps may not be as useful, especially if he or she has good memory. But it also helps his manager see what the next steps are without having to call him.  For sales professionals that have 20 or more active opportunities, logging next steps is essential.

As an administrator, the simplest View to provide sales teams would be 'My Opportunities with No Next Steps' so that they can start filling them out.  That would be pretty straightforward with a criteria of Next Steps equal to '':


We can add other criteria like Closed equals FALSE as above to show just open opportunities.

But of course, once the sales person has filled out all his next steps for all his opportunities, the View becomes useless.  New items will pop up in the list only when new opportunities are added and Next Step was blank.

Making the field required on the page layouts will also help minimize having blank 'Next Step' fields.  But again, after they are all filled out, a sales person will forget to update them.

So what is the next step for 'Next Step'?

What we need is a time stamp to capture when Next Step was last updated.  This way users can have a view (and a report) of open opportunities whose Next Step has not been updated in the last x days.  We will have to determine with sales management what is an acceptable lag between updates, taking into consideration the sales cycle and the market we are selling into.

So how do we capture the date and time when Next Step is updated?

We need a Workflow Rule that checks if Next Step is changed.  The ISCHANGED formula is very handy in this situation:

ISCHANGED (  NextStep )

Make sure that the Evaluation Criteria evaluated every time the record is 'created, and every time it’s edited.'

We will also need a new Field Update on a new field, say 'Next Step Last Modified', and set it to 'NOW()'.  It is always a good idea to set this new field to Read Only for all profiles to maintain its  integrity.



This field update will be the only action on the workflow rule.  Once it's activated, each change to the Next Step field will trigger the workflow and capture the current date and time in the new field.

The new View would look something like this:


Note the use of 'LAST 60 DAYS'.  This link provides more information: Salesforce Date Literals.  If the link becomes obsolete, simply use Google to search for 'Salesforce Date Literals'.

In recent years, Salesforce has allowed field updates to reevaluate workflow rules.  It may be possible to add a time-based email alert 30 days later to remind the opportunity owner to update the Next Step on his opportunity.  We will explore this exercise in the future.


Wednesday, January 22, 2014

Expanding on Win Loss Ratio

One of the simplest reports that admins build in Salesforce is a Win/Loss Ratio report.  In its basic form, you create a report of all closed opportunities and break them up between Won vs. Lost (using the Won field or the Sales Stage itself).

I personally like to use the words Won and Lost, which may not be the exact words in Sales Stage.  So I create a bucket field called "Status" on my report that is based on the Sales Stage field.   I bucket my Won stages under "Won" and all my Lost stages under "Lost".






And with that, I can create a report with a chart based on my new bucket called Status.




This is especially useful if you have multiple sales processes or legacy data that had different stage names for Lost, e.g. Closed - Lost, Lost - Closed, Closed - Booked, Closed - Won.

Now the big question here is how useful is a raw Win/Loss Ratio for a sales manager.  It may be a mildly useful statistic that his sales team loses 50% of opportunities.  That may mean he must always have twice as much in his team's pipeline as his remaining target amount.

But if we take it a step further, a low win-loss ratio is just part of the story.  It would be useful to find out at what stage does his sales team lose your opportunities.  That may give the sales manager insight into how well his team qualifies an opportunity.

For example, losing an opportunity at an early sales stage may not necessarily be a bad thing.  It may just mean that the sales person qualified it, asked the right questions, and found that his product doesn't fit, or his customer has no budget.

Losing opportunities at a later stage may point to a different problem.  If a rep loses a deal right before the contracts were due back from the customer, it may mean he didn't qualify well enough, or he wasn't talking to the right people, or there was a change in direction at the customer.

On the flip side, winning an opportunity while it is still in an early stage could mean that you have too many stages, or the rep is not good at updating his pipeline for example.

Salesforce does not automatically capture the Sales Stage before a deal is won or lost.  While you can run reports on Opportunity History, it may be useful to create a workflow to capture the value on the Opportunity itself.  This helps you create reports based on Opportunities with Products, as Salesforce will not allow you to report on both the history table and the product object together.

Let's explore how to do it.

You will need a field to capture the Sales Stage Before Closure.  It could be a text field of 255 characters.

The workflow will be quite simple.  It should fire every time a record is updated, and the criteria would be when the Sales Stage is changed, and it is being closed.  Using a formula it would read:

AND (ISCHANGED( StageName ),  IsClosed )

This workflow will execute a field update on your custom field above to capture the previous sales stage.  To do so, you simply need the following formula:

TEXT( PRIORVALUE( StageName ))

This captures the Sales Stage before it is changed to Won or Lost.

And with this, you can create reports and charts to answer questions like: What is my Win Loss Ratio excluding those lost in Stage 1.  Or, how much is lost in Stage 4 through 7?  Who has been skipping Stage 1 to 3 and goes straight to Won?  And so on...













Monday, January 13, 2014

Salesforce: The Power of One in Action

A few years ago at Dreamforce, there was a session on reporting that discussed "The Power of One".  In summary, you create a number formula that always evaluates to 1.  In theory, you add this as a summarized column in your report and you can get record counts.

But why do you need this, when record count is available as a standard field?  Let me attempt to explain it, and then we'll see it in action.

The standard record count is fine if you are reporting on a single object.  In other words, your report type is based on a single object, say Accounts, or Opportunities.  Record count is the number of Opportunities in your report.

Now if you use Opportunity Products, which is a child object of Opportunities, and run a report of Opportunities with Products, your record count is actually the number of opportunity product lines, not just the number of opportunities.

You may recall high school mathematics concepts of Cartesian products and unions in Set Theory, but I won't go there.

Let's see this in action:

I have 3 opportunities, and each with 2 product lines.  If they are all in one report, the report record count will show 6.

But management wants to know how many opportunities there are, besides how much and what is product mix. In a recent example, a manager tasked with selling a specific family of products asked how much business is in the pipeline for his product family, and how many opportunities are there?


So, first create a field called "Opportunity Count", which is a number formula:




And then you can add this to any Opportunity report based on a standard report type.  If you have a custom report type already in use, you will need to add this field.

Summarize the count as a sum, and you can create a chart that looks like this, which tells you how much value is open and how many are open:






As you can see in the report itself, the standard record count is 30, but the sum of Opp Count is only 29.  I have one opportunity that has two line items.





It's pretty straightforward once the field is there.  Maybe in a future posting we can explore what else we can do with this Count field.


Saturday, January 4, 2014

Autonomous Driving Cars

In a recent article in Automobile Magazine, they said that by 2020, new cars would be able to communicate with each other.

I can only imagine the conversations that they will be having:

"Hey, move out of the way, slower traffic should keep right!"

"Watch out!  My driver doesn't know how to use the brakes!"

And of course, with assisted braking, traction control, and all new driver aids that will make us more "passengers"  rather than drivers, they may say something like:

"Take heed!  I'm applying the brakes myself because my driver is not paying attention."

Some models will also have self-diagnostics, and can communicate with the dealership.

"Looks like I'm due for service, and I'm not tracking straight.  Can you check my alignment when I come in?"

And with all that plus GPS location services, weather services and traffic info, it can call the police.

"Police department?  I'm parked at a dive bar, the road home is icy, I've got 5% tread left and 1mm of brake pads left.  Looks like I'm the designated driver.  This is not going to end well."