Internet Zen

My father forwarded this to me last week. He knows me so well.  Enjoy!

Geek Mediation Session

From The Joy of Tech.


Taking Ownership – Leads & Cases

Leads and Cases are special things in Salesforce.  They are transactions between your organization and the outside.  In the case of Leads, they are potential business.  In the case of Cases, they are existing customers (usually), asking for help.  Once they are moved through a defined business process they are closed.

Users who are handling Leads and Cases are usually pressured to move through them as quickly & efficiently as possible while being informative and helpful.  This means that these folks are especially grateful when you can automate away extraneous clicks.  Here is one such click-saving idea:

Create a custom Detail Page button which has the following code:

  • Cases:    /{!Case.Id}/a?newOwn={!User.Name}&save=x&retURL=%2F{!Case.Id}
  • Leads:    /{!Lead.Id}/a?newOwn={!User.Name}&save=x&retURL=%2F{!Lead.Id}

I named my buttons “Take Ownership”, but you can call them whatever you’d like.

When someone clicks the button, the owner of the record is changed to that user.

Here is a screenshot of the settings for the Case button:

Case custom button setup

Caveat: This type of URL hacking is entirely unsupported by Salesforce.  They can change URL structures at any time. They never have, but know that this is a risk.

Salesforce Community Tour

Back in August 2011, Elizabeth Davidson and I presented at Dreamforce.  Interestingly, I was not aware that the presentation was recorded!

For your viewing pleasure: Community Tour

Losing a mentor

In mid-February I left my employer of 5 1/2 years for greener pastures.  It was really hard to leave but the decision was best for me and the organization.

One short week later, the colleague I had sat next to for 18 months passed away very suddenly.  He was 1/3 of our Salesforce team and our only developer.  To the extent we had time, he was teaching me how to code in Apex and Visualforce.  He was my sounding board for ideas. Travis was more than a colleague, he was a friend.

When he passed away I was impacted in ways I am still struggling to describe.  I lost my mojo.  I stopped engaging in the Twitter community.  It was hard to talk to my Salesforce buddies.  I didn’t know how to tell folks that my colleague had passed away.  That’s not something you put on Twitter!

As I prepared for Dreamforce, I was determined to be as engaged as I had been the year before.  It was harder than I expected. I spent a lot of time navel gazing.  Wondering what Travis would have thought about this session or that hallway conversation.

What I finally came to is that Travis would have loved every minute of the event.  He would have laughed at my navel gazing and told me to “Get on with it!” in his best Monty Python voice.  So, I’m getting on with it.  My mojo is slowly returning and I’m reengaging.  I’m remembering why I was a part of this amazing community in the first place.  I missed it. And I miss Travis.

SMS Notifications for Salesforce Outages

Admins have asked for a way to get notifications if/when there is a Salesforce outage (I can’t find the Idea right now.  If you happen to have the URL, please put it in the comments.)  Until now, I had to wait until a user encountered an error, go to and find NA7 in the loooong list.  This works ok for business hours (not ideal), but is horrible at 3am!  I want to be notified if my instance is either in outage or has a degradation.  At last I have a way! is a new online service that lets you set-up rules for automating your internet life.  Since Salesforce is a HUGE part of my internet life, I use ifttt to let me know if my instance (NA7) is in an outage or has a degradation.

Here’s my recipe: If outage then SMS me.

All I had to do was set-up my cell phone to accept SMS messages from ifttt and tell it which RSS feed to use.  It took all of 5 minutes.

When you sign-up for ifttt, you can use my recipe and/or create your own!  There’s lots of other non-Salesforce stuff you can do with ifttt, but this one is the one that’ll make my work-life easier!

UPDATE: With this weekend’s Winter ’12 upgrade, this recipe didn’t work! 😦  I’ve updated it to remove the “, degradation”.  I think the comma is what broke it.  We’ll know more next weekend as there is another outage on NA7!  Sorry for any confusion!

Why I’m Paying My Own Way to Dreamforce This Year

Cross Posting my Guest Post from the Blog:


I’m attending Dreamforce on my own dime this year. Why? I’ve left the land of the permanently employed to become a contractor; I have a stable 9-to-5 gig, but I’m paid hourly. Given that my contract expires 12 days before the beginning of Dreamforce, neither my contracting company nor the company I’m contracted to, will pay for my trip.

So I’m doing it on my own. Which begs the question: Why would I ever choose to pay my own way to a professional conference?

The answer is pure and simple: I find Dreamforce to be extremely valuable, both to my career and to my work/life balance. Here’s why.

Over the years I’ve met amazingly smart folks who are as passionate about Salesforce as I am. They come from all walks of life. They’re executives and individual contributors. They are my friends. While they may not know it, these folks helped me gain the courage and self-confidence to leave my previous employer for greener pastures, and I am grateful to have them in my life. These are the connections that make me laugh and help me solve challenges year-round.

Aside from the hours of formal training available, Dreamforce offers more intangible training benefits everywhere you look. While sitting at lunch you can learn how a large multi-national corporation handles cases—or hear how a small mom-and-pop e-commerce site tracks leads. You won’t see this stuff in whitepapers or hear about it in a classroom, but chances are you can take these ideas back to your org and be a hero. It’s a training bonanza.

Fun Fun Fun
Dreamforce is fun! There, I said it. Who would think that a professional conference could offer so much in the way of entertainment and laughs? Between the parties, the friends, the music, and the general “amazingness” that is San Francisco, what’s not to love?

Dreamforce is a week of learning, networking, and fabulous good times. I wouldn’t miss it for the world. So yes, I’m paying my own way—and I’m 100% OK with that.


My Dreamforce ’11 Schedule

As soon as I found out when the Agenda Builder would be going live, I blocked off that hour in my calendar.  I had to make sure that I signed-up for all the sessions I wanted.  I also wanted to make sure I blocked off the session that I’ll be presenting (more on that later).

So, without further ado, here’s my schedule for Dreamforce ’11:

Tuesday, August 30
8:30 a.m. – 9:30 a.m.
Community Conference Keynote

10:00 a.m. – 10:45 a.m. Community Tour
This is the session I’ll be presenting with my friend, and fellow North Carolinian, @eliz_beth.  Come see us!

11:00 a.m. – 12:00 p.m.
Under the Covers: IdeaExchange Exclusive

2:00 p.m. – 3:00 p.m.
Roadmap Sneak Peak: The Future of Analytics in Salesforce

3:30 p.m. – 4:30 p.m.
Service Cloud Roadmap: No Roads Needed on This Journey
Wednesday, August 31
12:30 p.m. – 1:30 p.m.
Hands-On: Extending Chatter

2:00 p.m. – 3:00 p.m.
Gamification of Salesforce

3:30 p.m. – 4:30 p.m.
Analytics Flashmob: Master Topics for Analytics Admins

5:00 p.m. – 6:00 p.m.
Hands-On: Introduction to Code (Apex) Patterns for Developers

Thursday, September 1
12:30 p.m. – 1:30 p.m.
How Uses the Service Cloud and Chatter

2:00 p.m. – 3:00 p.m.
Q&A with the Service Cloud Pros

3:30 p.m. – 4:30 p.m.
Hands-on: A Guide to the IDE for Non-Developers
Friday, September 2
8:30 a.m. – 9:30 a.m.
Service Cloud Console as a Platform: Intro to the New Service Cloud Console

10:00 a.m. – 11:00 a.m.
Q&A with Marc Benioff and Parker Harris

11:30 a.m. – 12:30 p.m.
Hands-On: Get the Most Out of the Salesforce CRM for Nonprofit Starter Pack

I can’t wait!!!

Counting Case/Leads Per Hour

In most businesses incoming calls are great!  It either means your marketing is working and customers are interested (Leads), or it means you have a chance to impress your customers with great service (Cases)!

The downside is you have no control over when your customers call.  It could be that they call a lot on Monday mornings and not much on Wednesdays.  Or, it could be that lunchtime any day is busy.  How do you figure out how many folks to have available to take calls?

Let’s assume that you only need to know how many calls (Cases) you get coming in per hour.  Let’s also assume that your phone agents are really good about creating a new case for each call as it comes in.  This means your CreatedDate can be assumed to be the date/time the call arrived at your office.

Ok, with those assumptions out of the way, you need to pull the hour out of the date/time field CreatedDate.  Create a formula field (number) with the following formula:


This formula does several things (from the inside out):
1.) It turns the CreatedDate into a Text string.
2.) It pulls 2 characters out of that string (#12 & #13).
3.) It makes those two characters into a number.

Now you have a formula field that gives you the hour of the CreatedDate.  The only trouble is (and this is kinda ugly), that CreatedDate is in Greenwich Mean Time (GMT).

What do you do if you need it in Eastern Standard Time? Or, worse yet, Eastern Daylight Time? Eeek!

Have no fear!  Formula fields to the rescue!

We need another formula field that will be the number of hours to offset.  For example, if I’m in the Eastern time zone and it IS Daylight Savings Time, my offset from GMT will be 4 hours.  If it IS NOT Daylight Savings Time, my offset from GMT will be 5 hours.  I’ll create another formula field (let’s call it DST_Offest__c). Here’s the formula:

((CreatedDate >= Date(2003,4,6)) && (CreatedDate <= DATE(2003,10,25))) ||
((CreatedDate >= Date(2004,4,4)) && (CreatedDate <= DATE(2004,10,31))) ||
((CreatedDate >= Date(2005,4,3)) && (CreatedDate <= DATE(2005,10,30))) ||
((CreatedDate >= Date(2006,4,2)) && (CreatedDate <= DATE(2006,10,29))) ||
((CreatedDate >= Date(2007,3,11)) && (CreatedDate <= DATE(2007,11,4))) ||
((CreatedDate >= Date(2008,3,9)) && (CreatedDate <= DATE(2008,11,2))) ||
((CreatedDate >= Date(2009,3,8)) && (CreatedDate <= DATE(2009,11,1))) ||
((CreatedDate >= Date(2010,3,14)) && (CreatedDate <= DATE(2010,11,7))) ||
((CreatedDate >= Date(2011,3,13)) && (CreatedDate <= DATE(2011,11,6))) ||
((CreatedDate >= Date(2012,3,11)) && (CreatedDate <= DATE(2012,11,4))) ||
((CreatedDate >= Date(2013,3,10)) && (CreatedDate <= DATE(2013,11,3))) ||
((CreatedDate >= Date(2014,3,9)) && (CreatedDate <= DATE(2014,11,2))) ||
((CreatedDate >= Date(2015,3,8)) && (CreatedDate <= DATE(2015,11,1)))

(Daylight Savings Time is determined by the Congress of the US….so these dates are subject to change.  Here’s the site I used to determine the dates:

The reason this only works for the eastern time zone is the 4/24 and 5/24 in the last line of the formula.  If you need it to work for the Central time zone that last line would look like this:


Now that you have your offset field you’ll modify the first formula to look like this:

VALUE(MID(TEXT(CreatedDate – DST_Offset__c),12,2))

If the call came in at 9am, the field is “9”.  If the call came in at 3pm, the field is “15”.

Now that you have the hour, you can create summary reports and snazzy graphs to impress management!

Happy graphing!

Custom buttons to the rescue!

We have a process by which large customers are vetted to make sure they’re following all of our best practices.  We use Cases for this work.  A case is created automatically and our team works through a series of questions with the customer, making sure everyone is on the same page.  Once this is done, the case is closed.  And there, my friends, is where we run into trouble.

You see, Salesforce won’t let you set the Status on the Closed Case page to “Closed” by default.  This means that even if “Closed” is the only reasonable status for a Closed case, the agent still has to choose it from a picklist of 1.

Well, that’s just dumb!  Here’s the Idea you can promote to make this standard functionality.

The work around is to create a custom button to default the status for you.  Here’s the code:


All it does is default the status of the Case to “Closed”.  That’s it!  But it saves my agents (customers!) a two clicks per case.  With over 1100 cases per day, that’s a lot of clicks!

Webinars shouldn’t hurt

The Spring ’11 release preview webinars were today and I have a complaint.

First, some background.

The first hour is about the platform, and covers changes to Apex, governor limits, Visualforce etc.  I found it engaging, informative and yet not too in-the-weeds.  It made me want to go back and re-read the release notes!  Now, I won’t be able to use most of the new technology covered in this webinar, but it is good to know it exists.

The second hour is more about the “clouds” (Sales, Services, Collaboration, etc.).  It covers the new stuff that will be visible to your average Joe User and seems to be geared towards the least computer-savvy of audiences.

The tone of this second webinar was painfully simple.  There was an exchange that went something like this (a bad paraphrasing):

  • Presenter #1: New in Spring ’11 is the “Like” button in Chatter.
  • Presenter #2: You mean I don’t have to type an update, I can just click the “Like” button?
  • Presenter #1: Yep, and all your followers will see that you liked that post.

Now, I ask you, how long has Facebook had a “Like” button?  Years?  Heck, my 86-year-old grandfather has “liked” my Facebook status as recently as 2 weeks ago!  Am I supposed to believe that users are less sophisticated and less unable to grasp the concept of a “Like” button than my 86-year-old grandfather?  It came across as scripted and condescending.

At that point I knew the presentation had jumped the shark.  I continued to watch the slides but hung-up the phone in disgust.

So, I humbly ask that Salesforce consider a third release preview webinar.  A hybrid of the two. A webinar for the folks who are administrating Salesforce all day.  One for those of us who want to learn and evangelize.  Releases provide enormous value to our organizations and we want to be ready.  But please, for the love of the cloud, please don’t ask me to sit through scripted banter.

%d bloggers like this: