Using the (Sales)Force for Good

I’m feeling inspired. Maybe it’s some early holiday cheer, maybe I’m feeling so fortunate that I’m inclined to be generous, or maybe I read a blog that made me realize it’s not all about me.

My inspiration? Actually, it really was a blog. I have to give a shout out to Becka and her “Force behind the force” blog.

Becka’s blog mentions two great websites where we can look for volunteer opportunities: CatchAFire and Community Corps. There are also the Taproot Foundation and VolunteerMatch. I got lucky and found a local volunteering opportunity on VolunteerMatch – but given the nature of Salesforce administration, there are a lot of virtual volunteering gigs out there as well. So if there’s nothing in your area, you can volunteer from home – or from the office, if your company is awesome like that!

Do you need a better reason than the warm fuzzies you will feel from generously sharing your expertise? I hope not. But if you want another reason, here it is: you will get better at your job. Every database is different, and the more of them you work with, the more you grow.

One more thing – while we are on the subject of giving – the Salesforce.com Foundation is matching all donations made to Red Cross Disaster Relief this week, to assist those affected by Hurricane Sandy.

Dreamforce 2012: The Smart Side

I’ve talked about the fun side of this year’s Dreamforce – the parties, the people, the fedoras… but what really makes the whole week worthwhile to me is the learning experience. There were some incredible sessions this year! The Dreamforce organizers really listened to feedback from previous years – the session schedule and content were much improved, in my opinion.

Over the past week, I’ve been watching many of the recorded sessions that I missed, and re-watching some of my favorites that I attended. Here is the breakdown of my favorite administrator track sessions – enjoy!

  • REPORTING – Definitely my favorite category this year! I’m an advanced admin, and reports are one of my specialties, but I still learned lots of new tricks from some of the sessions on reporting. Analytics Ninjas offers interesting insight into what might be slowing down your reports, and the part on Google charts really intrigues me. Cross Filters, Joined Reports, and Bucketing gives great examples of how to use the newer reporting features. And my personal favorite – Compare Report Summaries with PREVGROUPVAL and PARENTGROUPVAL – was a well-instructed hands-on training session in which I learned about two formula functions that I’d never used before.
  • SECURITY – I thought I’d learned enough about permissions when I recently re-configured our roles, profiles, and sharing settings. But these sessions offered a lot more insight, and made me look more closely at some of the decisions I had made. Security and Sharing Overview: You Hold the Keys is a session for those who are new-ish to SFDC security and just looking for the basics. Optimizing Your Security Model is more of a deep dive into the topic, for those of us who are dealing with a huge mess of roles/profiles/sharing settings and need to reevaluate our entire security model. Too Many Profiles, So Little Time offers some really good tips for cleaning up your user profiles – the enhanced profile list view made me so happy! (This session is particularly useful because if your security model was set up prior to the Permission Set feature, you most likely suffer from profile overload.)
  • USABILITY – There are always plenty of sessions on user adoption and usability, and I must admit that I usually ignore them, assuming that I am such a great admin that I’ve just naturally made our database as user-friendly as possible. This year, I got a wake up call! The Usability Ninja Series sessions showed me that functionality does not equal usability, and that we often decrease usability when implementing new customizations, from custom fields to workflow rules. The Building a Foundation for Success session really makes you look at things from a user’s point of view. The Delivering Success session gives great advice for optimizing page layouts, custom fields, etc.
  • ADMIN TIPS – I noticed a larger variety of sessions along the lines of administrator self-improvement this year, and I really enjoyed them. No matter how advanced an admin you may think you are, you can always be better! Check out Becoming a Better Admin, and 7 Habits of a Highly Successful Admin.
  • HANDS-ON TRAINING – I’ve said it before, and I’ll keep saying it until it sticks in your head: when you go to Dreamforce, attend as many hands-on sessions as possible. There’s no better way to learn something than to be walked through it step by step. Unfortunately, there were not a lot of recordings available from those sessions. You will just have to take my word for it – they are interactive and awesome!

If you were not able to attend this year’s conference, I hope these recordings give you an idea of how much we all can learn – and these are only a fraction of the available sessions! Search Dreamforce on YouTube for other ones that interest you. I promise, you will end up smarter.

Dreamforce 2012: The Fun Side

I’m not gonna lie – after attending my fourth Dreamforce in the summer of 2011, I experienced what I can only describe as “Dreamforce burnout.” The sessions and the parties felt very been-there-done-that, the crowds got bigger and bigger every year, and I just wasn’t sure that I wanted to repeat the experience. But now, I’m so glad I did! This time Salesforce really pulled out all the stops. They listened to feedback from previous years, realized that they had to cater to a larger and more experienced (jaded?) crowd, and did not disappoint. I will get to the sessions and the learning experience in a later post – for now, here is a short list of what made Dreamforce 2012 so much fun.

PARTY MADNESS!

While there is never a shortage of evening entertainment at Dreamforce, this year’s parties were downright competitive. There were so many of them each night that most attendees RSVP’d for several and then had to pick and choose. From the big events hosted by the likes of Appirio, Zuora, Marketo, and Silverpop to the Red Hot Chili Peppers show to countless smaller events, there was something for everyone. Below: Red Hot Chili Peppers show at the Civic Center, and my crazy CollabNet co-workers at Zuora’s Block Party.

DREAMFORCE PLAZA!

The Dreamforce Plaza on Howard Street between Moscone North and South was so unexpected and so well done. There were seats, bean bags, picnic tables full of volunteer activities, and a stage with all-day live music. And let’s not forget the “In the Navy” flash mob!

SPECIAL GUESTS!

This year’s lineup of special guests and keynote speakers was both impressive and inspirational, including General Colin Powell – “There are dangers with this [social] revolution… where we are so interconnected that perhaps we are too interconnected” – and Tony Robbins – “Trade expectation for appreciation and your whole life changes.” Sir Richard Branson spoke of his entrepreneurial adventures as well, offering advice and inspiration. Below: nice banner! Coincidence, or part of the deal?

FEDORAS!

What? Is it weird that I really, really liked the headwear of this year’s Dreamforce greeters/helpers? They were fedorable!

SNARKY TWEETS!

Thank you, fellow twits, for saying what many other folks were thinking… and for making me laugh.

FELLOW DREAMFORCERS!

I must give a shout out to acquaintances both new and old – Thea, Heidi, Sharon, Miki, Suresh, Rachel 1, Rachel 2, Katelyn, Erin, Kerry, Jean, Lynn, Jake, Keith, Keith’s friends, Caleb, Jen, Danielle, the VIP bartender at the Block Party, the girl who got lost with me in the Tenderloin, and the hilarious guy who sat in front of me during my Certified Developer exam. Every one of you made my week more social and more enjoyable, and I can’t wait to hang out/text/email/tweet with you again!

Get trigger-happy with borrowed code

Like many SFDC admins, I sometimes find my great ideas thwarted by the limits of workflow rules. There are certain things that just can’t be done via workflow. My most frequent complaint: “a trigger could get it done, but I can’t write code!” Well okay, I can understand some of the code that I see – but I’m not fluent enough in Apex to write my own code from scratch.

Then a fellow SFDC admin showed me how to create triggers without writing code. It’s actually so simple, I’m amazed I never thought of it. Here’s how to do it…

1. Find an unmanaged AppExchange app that does something similar to what you want to do. For example, let’s say I want to update a field on an opportunity when certain products are added. There is an app called Opportunity Contact Roles Validation which, according to its description, creates two custom fields and uses an Apex trigger to update those fields. Note: it’s crucial that you use an unmanaged app, so that you can access the code. You can find out whether or not the app is unmanaged by checking the Details tab.

2. Install the app to your sandbox. The reason you install it into your sandbox is so that you can get to the code. If you install it in your production instance, the code is not accessible.

3. Locate the trigger that the app uses to update fields. Right after installation, go to Setup | App Setup | Develop | Apex Triggers – if you can sort by modified date, it will be easy to find.

4. Copy the code from the trigger. Make sure to click Edit first, so that you do not copy the line numbers as well.

5. Paste that code into a new trigger. Go to Setup | App Setup | Customize | Opportunities (or whatever the object is that you are using the trigger for) | Triggers – and click the New button. Paste the copied code into your new trigger.

6. Edit the code. This will actually take a little bit of brain power – get some coffee first. What you need to do is, look for any part of the code that is referring to a field update. In this example, we changed “OpportunityContactRole.OpportunityId” to “OpportunityLineItem.pricebookentry.product2.Require_Customization_Info__c” – see the code snippets below. We are referring to a custom field called “Require Customization Info” on the Product in order to update a field on the opportunity (which you can’t do in a workflow). Once you have modified the code, save your trigger.

Check out the Before and After versions of the trigger for the full code edits.

7. Install the original app that your trigger is based on into your production instance of SFDC. You may be wondering, “why do that when I only want my edited trigger?” This is the part that saves time and avoids writing test code. The app will have unit test coverage written into it, and you need this. (And trust me, you do not want to write it yourself!)

8. Use a change set to move your custom trigger from your sandbox to production. Change sets are one of my favorite tools. If you have not used them before, check out this overview for the basics. You will want to create an outbound change set in your sandbox that includes your trigger, then deploy it to production. Once that’s done, deploy the inbound change set in your production instance, and your trigger will be operational. You’re done!

All of the credit for this idea goes to Jake Harris. Jake has two great apps on the AppExchange – PowerClone (to make unlimited copies of any record, plus its related records!) and Excelist(to export list views or tagged objects into Excel) – and he is a brilliant and creative SFDC guru. Thanks Jake!