Posts tagged ‘postaweek2011’

November 4, 2011

Howdy Partner!

For those of you who follow me on Twitter, you may have seen this post coming. For those of you who don’t, I will summarize by saying that the past few weeks, I’ve been struggling with an AppExchange partner (nope, it would be wrong to call them that) a vendor who is attempting to provide a service inside of And they have gotten wrong on so many levels. So this week might be a bit off topic for me, but I want to share some tips on how to be a great AppExchange partner.


  • Provide documentation – The first thing I asked for from this company was some documentation for the Admin install. Sure, I could wing it, but 1) I wanted to make sure that I was covering all my bases and 2) it’s one of our internal requirements for working with any AppExchange vendor. Guess what? They had nothing. Best that they could provide me with was the user guide. Total fail.
  • Don’t be a tab hog – This is especially true if you aren’t an Aloha app (whose bits don’t count against your orgs limits). This install had SIX tabs, which already is far too many, but they all pointed to the same thing! Very few people besides UE orgs will be able to use your app, and even those of us on UE are going to be annoyed. (The answer I got when I questioned them about this was that made them do it to pass the security review. I’m not buying it. My guess was that it was to avoid another security review and have it only be an ‘update’ to the previous version.)
  • Know the difference between Leads, Accounts and Contacts – And truly, as a partner, you should know more than that. Please have someone who understand basic architecture. And understand the customizable nature of the platform. One of their support people decided that he needed to see fields on my lead page layout (Why page layout  matters is beyond me anyway, shouldn’t you be asking about field level security? Oh right, you should be.). He asked me for a screenshot of the “top section on leads” – yes, because that’s exactly where I put all the fields you are looking for. No matter that we have HUNDREDS of lead fields. The ones you need will be *right* there. (Another gem – when looking at a Lead list view, they asked me to click on Company Name instead of the Lead name to see if that made a difference in whether their product worked or not.)
  • Don’t ask me to change my security settings to get your product to work. – This should be another given. My internal security model shouldn’t affect whether your product works or not. Or, if it is, at least have that documented so that it doesn’t take you 4 days to figure out what the problem is.
  • It’s not the “app exchanged”
  • Don’t review your own product on the AppExchange. – I mean really…that’s just a given.

Now readers, please be honest – am I asking too much?

June 24, 2011

What’s your flavor?

Looking at the landscape of Salesforce admins, there are really three flavors – the newbie admin, the ‘button-click’ admin & the super-coder admin.

  • Newbie Admins – These are admins at small companies, or companies that are new to Salesforce. Usually administering Salesforce isn’t their only job duty, but most are eager to learn & get super excited about how *cool* Salesforce is.
  • Button-Clickers – These are the seasoned admins who wield all the declarative power available to them with the platform. Typically, they’ve been using Salesforce for a few years & probably even have a certification or two. They are the auto-magicians of Salesforce.
  • Super-Coders – People who fall into this category usually have a technical coding/development/computer science background.  They dream in SQL and SOQL. They know the difference between an object and an sObject. They use phrases like ‘standard controller’, ‘instantiate’ and ‘system-dot-assert.’

The problem that I think a lot of us ‘button-clickers’ run into is how the heck do we make the move to the next level. Fairly recently, Salesforce started offering the DEV 531 course (which you already know that I’m a huge fan of), and that’s a step in the right direction for enabling admins to progress. But a 5 day course isn’t going to get you all the way there.

Enough with the rambling – what’s your point, Becka? My vision for this blog is to really target that need. I’ve already started with a few of my posts, but I really hope to continue that vision & really flush it out. I’m only baby steps into this journey, but I invite you to join me.

(While joining me in the journey, why not also join me on Facebook!)

May 27, 2011

An elegant solution

While we all have different titles, what this Salesforce admin/developer job really entails is “Problem Solver.” Some of the solutions are slick & cool, others are a bit messy but get the job done. Usually the person with the problem doesn’t really care so much how it gets fixed, so I was surprised the other day when someone commented on how elegant my solution was. To me, it was fairly basic stuff, but the more I thought about it, I realized that it was something pretty clever that I had come up with.

What exactly did I do? I should start with the business problem. Without going into too much detail, we have leads assigned to a queue & the business wanted a sales rep to actively accept or reject the lead before working it, and also capture some key data points at the time of acceptance or rejection.

Now, the fun part – how I solved the problem. I created a new record type, and made it the default. I create a page layout with only key fields displayed & the only buttons that exist are the ‘Accept’ and ‘Reject’ buttons. “What are the ‘Accept’ and ‘Reject’ buttons?“, you may be asking. Pretty simple – a clone of the “Edit” button, except the are passing a value into a field on the record. This passing of a value allowed my to write validation rules to conditionally require data based on whether the lead was accepted or rejected.

So far, pretty cool, but nothing amazing. But wait! There’s more! Once the user is done editing the record & hits “Save”, a workflow rule fires (based off the accept/reject field containing a value) and a field update occurs. Still pretty simple, right? Well, the slick part comes in that the field that gets updated is the Lead Record Type. (Ta-daaaaaa!) The record saves & then the user is presented with the standard lead layout with all the fields, related lists, and other bells & whistles they were used to having.

Magic transformation – all in a day’s work for a salesforce admin!

May 13, 2011

Trigger Happy!

I talk a lot about the ‘auto-magic’ in, but we all know it has it’s limitations. One of the things that I always wished could be done with button-clicking was to create a new record when conditions on another record were met (ya know, using some workflow powers). I really just considered myself out of luck.

That is until I started dabbling in the developer world. And while I consider myself knowing just enough to causing catastrophic damage, a business case presented itself in which trying out my new skills was the perfect fit. In short, the team wanted a record auto-created every time a specific type of event was created.

Here it is, my debut into triggers (excluding my copy-edit-paste of one from MichaelForce):

trigger createPDtask on Event (after insert) {     
List<Support_Request__c> sr = new List<Support_Request__c>();
    for (Event newEvent: Trigger.New)
         if (newEvent.Type__c == '1. Meeting - Initial'){
                 sr.add (new Support_Request__c(
                     Name = 'New PD',
                     Task_Type__c = 'PD',
                     SFDC_Record_ID__c = newEvent.Id,
                     Rep__c = newEvent.OwnerId,
                     Event_Date__c = newEvent.ActivityDate));   
   insert sr;

So there it is. Short & fairly simple, but a HUGE productivity win. Plus, now everyone thinks I’m magic! And if you want a deeper dive explanation on the anatomy of this trigger, read my post on the Teach Me Salesforce blog!

UPDATED!! Here is my test class (Huge thanks to Kyle for help with the System.assertEquals bit:

@isTest private class createPDtask_Test { 
   private static testmethod void testTriggerForEvent(){         
 Event e = new Event();   
 //Required Fields         
 e.Subject = 'testSubject';         
 e.IM_Type__c = '1. Meeting - Initial';         
 e.Product_Interest__c = 'None';         
 e.StartDateTime = DateTime.NOW();         
 e.EndDateTime = DateTime.NOW()+1;                  

 //Insert the Record         
 insert e;                  

 //Query for Inserted SR         
 List<Support_Request__c> testRequests = [SELECT id FROM Support_Request__c             
 WHERE SFDC_Record_ID__c = :e.Id];                      

 //We expect one record to be created         
 System.assertEquals (1, testRequests.size());        
April 29, 2011

The why and the what

With my recent media buzz (hold your applause), I’ve been panicked about what my next post should be. I have a ton of ideas in my queue, but none of them seemed to be the right piece to be next. It all got me thinking as to why I started blog & what I want my blog to be to the world. A clear vision for my blog means that the readers get it, and when the readers get it, they will return to read more.

My end game is to be a resource for all types of people on the Salesforce spectrum – from prospects who want a reason why, to veteran Admins looking to take baby steps into development work. I imagine a mix of tips & tricks, horror stories & lessons learned, and excitement about news & rumors surrounding Salesforce. My goal, as it probably is for most bloggers, is to remain relevant to the readers.

To that end – I’ve made some changes to my Contact page, opening it up to post requests/suggestions and guest posts volunteers, as well as feedback. Like I said, I have some posts queued up, but I want to make sure I stay true to what my readers are looking for.

Now I know this post isn’t very Salesforce-heavy, so I’d like to end with promoting the Cloudforce city tours. Salesforce has just announced several dates around the US leading up to Dreamforce in August. I highly recommend getting to one of these FREE half-day events, even if you are going to Dreamforce (and especially if you aren’t).

Cloudforce2011See you there!

%d bloggers like this: