»
S
I
D
E
B
A
R
«
Salesforce Certifications – Update 1
Aug 17th, 2009 by Anand Sethupathy

A while back I blogged about the Salesforce Certifications. Shortly after that post, I took the certifications for Administrator and Consultant. I am happy to say that I was able to pass both on my first attempt. Overall, the certification process has been a fairly streamlined process. You can easily sign up online and find a local test center. The exams are short (you get 90 mins, but probably only need 45 mins). Your results (pass or fail, not the actual score) are instantly presented on your screen upon submitting the test. And, a few weeks after taking the test, a nifty packet arrived in the mail containing a certificate and a nice Salesforce.Com branded USB Flash drive.

My aim in taking these tests were threefold:

  1. Determine what level of certification I would recommend for a Nonprofit System Administrator
  2. Determine if I could base a hiring decision on a candidate’s certification level
  3. Determine what level of certification I would like my own team to have

First, let me start with my experiences on the two certifications exams that I took. Of the two, I actually found the “Administrator” exam slightly more challenging than the “Consultant” exam. The Administrator exam covered many elements of Salesforce that most nonprofits do not touch on a day to day basis and this made it slightly more challenging. The Consultant exam was more scenario based and thus easier to grasp, however, it had very sales-related scenarios which needed to be translated to an NPO context before you could respond. So, let’s say that you are someone who purely works in the Nonprofit Sector and you have a good deal of experience with Salesforce. Both of these exams should be easy for you save for a.) Knowing Salesforce features you rarely ever user b.) Translating Sales-Speak into Non-Profit Speak before answering a question. So, even though both these exams consider 67% to be a passing number, you might want to do a little prep as your margin for error might be slightly less if we assume that you won’t get the Sales Questions or the Rare Features questions.

If we loop back to my original goals on the ceritifications, here is my analysis of each:

  1. NPO Sys Admin – I think the “Administrator” exam is actually a good fit for a Nonprofit System Administrator. For those administrators managing small implementations, this would be enough. For those managing larger implementations, I would expect them to be able to achieve a higher certification level than this.
  2. Hiring Decision – I don’t think I could base a hiring decision on either of these two exams. I still have not taken the rest, so my feelings may change after I see the higher end exams. I think, at best, holding these certifications might move someone from the “maybe” pile to the “definitely interview” pile, but I would still want to “tech” them out before actually making a hiring decision.
  3. My Team – I think I would like my team to have both of these certifications and a few of the higher end ones. As consultants, it is important that we understand those rarely used features so we can present them to a nonprofit when appropriate.

I plan on taking the other three certification exams within the next 6 months. I will report back with more updates as I get through them. I was thrown for a surprise, however, when I was asked to take a free Update Exam shortly afer my certification. I never had the time to get around to it and it did concern me. Would Salesforce expect me to take 5 update exams every quarter to keep my certification levels (once I have all 5)? That is the one part of this certification process that still needs work. I know the update exams are short and free, but time is hard to find these days. I think if they made this an annual update, that would be much easier to manage.

Stay tuned for more to come on this topic as I get through the next three!

Calculating Totals with Batch Apex
Aug 13th, 2009 by Evan Callahan

Salesforce.com has a new feature called Batch Apex. It is currently available only as a preview by special request, but is expected to be in general release later this year. One of my nonprofit clients has a very large data set and have been looking forward to the ability to add up opportunity values in a variety of ways. We used Batch Apex to create a tool for them, and it seems to be working extremely well.

In this post, I will briefly explain what Batch Apex is, and describe our use case for the feature. In a later post, I will show the tool we created and how it works.

About Batch Apex
Apex has limits. You can perform only so many queries, and process only so many results; this allows Salesforce to keep your resource usage under control. Batch Apex blows these limits out of the water by allowing you to perform a query that returns up to 5 million records, and then create a special type of apex class that processes the records 200 at a time. There are still some rules as to what you can do in a Batch Apex class, but it can be a great workaround for apex limits.

Once you write a “Batchable” Apex class that follows the proper design pattern, you can use the class to execute your query, which queues up an Apex job that executes little by little until it is complete. How fast it runs depends on factors such as complexity of your query, time of day, and the extra capacity of the Salesforce system. You can monitor your job’s progress by clicking Setup | Monitoring | Apex Jobs.

Monitoring batch apex jobs

As you see, the last apex job shown was broken into 1,327 batches of 200 records – which means the query must have returned and processed over 265,000 opportunities.

Why We Used It
We use many strategies for summarizing data in Salesforce, including report totals, roll-up summary fields, and apex code in triggers. Because roll-up summaries do not support calculations of opportunity totals into contacts who have roles, we have always used triggers to keep these calculations current. However, if your data set is large enough, you will hit apex limits.

The following screen shows the donation summaries our client asked us to provide for all their donors, households, and accounts. Having this data available on the contact and household records will allow them to produce reports that filter in creative ways – for example, donors whose donations are rising or falling from year to year or those with one type of donation history but not another.

Opportunity totals rolled up into the contact record

With the tool we created, the client can visit a Visualforce Page (daily or weekly, perhaps) and kick off the Batch Apex that performs all the rollups. The Apex runs in steps: the first two batches roll up opportunities to a temp table, a third copies totals from the temp table to the contact, household, and account objects, and so on. When the jobs finish running, they know the totals are all correct. We still use triggers to add a newly closed opportunity to the totals – but because all the really heavy lifting now belongs to the offline Batch Apex process, we don’t expect to hit any limits.

In my next post, I will show you the Visualforce tool and a bit of the Batch Apex code I wrote.

Cleaning Up a Mess, Salesforce-style
Aug 12th, 2009 by Marc Baizman

This is my first post after a long hiatus involving a move to a new city (Boston), and to a new job as Technology Manager at Root Cause, a nonprofit in Cambridge, MA.  One of my first and biggest challenges here has been getting our Salesforce database under control.  After 4 years, every user was a System Administrator, and nobody knew what most of the custom fields and objects were being used for!  It was a disaster.

big mess o' computers

big mess o' computers

Here are some of the things I did to get our database back under control:

  • I talked to the currently active users, and got their buy in to make changes as long as they weren’t catastrophic to the way they were currently doing things.
  • I formed a “data cleanup” team to start wrangling some of the thorny data issues.  One of the best things we did (thanks, interns!) was use DemandTools to create an Access database backup of our entire Salesforce database, then look at every single field in every single object and report on how much data was there!  We got some very surprising answers for fields we thought everyone was supposed to be using (they weren’t, or the data was inconsistent).
  • I formed a “SF Training Team” to create a Salesforce manual and make some screencasts using Jing.
  • I started getting definitions for all custom fields, and adding it to the Help Text balloons, so people were no longer mystified as to what went in a certain field.  (By the way, PLEASE give us help text for standard fields, Salesforce!)

Hope this helps any of you out there who are inheriting a database “of a certain age.”  Good luck, and any comments are welcome!

Email Template Shortcut Buttons
Jan 2nd, 2009 by Anand Sethupathy

A client of ours got frustrated with having to click on Send an Email, then Select a Template, and finally Select the right Contact(s) before hitting Send on a very common type of email. The email was still sent on a discretionary basis by staff so we couldn’t automate it with a workflow rule. The client asked for a special button to be put on the page that could open up the correct email template and automatically select the correct contacts. After some searching on the Salesforce.Com Developer Forums, I found this little gem of JavaScript code. 

I adapted the code to the following:

location.replace(‘/_ui/core/email/author/EmailAuthor?
retURL
=/{!Opportunity.Id}
&p3_lkid
={!Opportunity.Id}
&p2_lkid
={!Opportunity.Registrant_Salesforce_ID__c}
&p2
={!Opportunity.Registrant_Full_Name__c}
&p24
={!Opportunity.Billing_Contact_Email__c}
&template_id
=00XX99234365′);

NOTE: Remove the linebreaks if you cut and paste this code.

I put the above code into a Custom Button on the Opportunity Object. The Button behavior should be set to Execute Javascript and the Content Source should be set to OnClick JavaScript

In the above JavaScript code, the following variables are represented:

  • retURL = URL that the user is returned to if they click Cancel on the message
  • p3_lkid = The ID of the record that this email should be associated with (the WhatID)
  • p2_lkid = The ID of the person that this email should be associated with (the WhoID)
  • p2 = The name of the person that this email should be associated with
  • p24 = The email address of anyone you want as additional TO’s on the message
  • templateID = The Salesforce ID of the email template that you wish to use
Once this button is setup, I added it to my Detail Buttons on my Opportunity Page Layouts. After that, when an End User clicks on this button it opens up an Email, selects the template I indicated, and pre-populates the main recipient and even an additional recipient for the message. 
Should you get Salesforce Certified?
Dec 18th, 2008 by Anand Sethupathy

Many Nonprofit System Administrator level users are wondering if they should get Salesforce Certified. This is actually a tricky questions because the Certification definitely carries value to the individual holding it, however, it can also prove to be of great value to the organization in validating the skill levels of their administrator(s).

Before you jump into certification, study the options available and find out what is right for you and for your organization? Also, consider the following. Since you are working in the nonprofit space, a fair amount of the questions may have little to no applicability to you. For example, questions on territories, assets, products, and super complex security issues are likely not the norm for a nonprofit implementation. Given the domain we operate in, most of you might need to review the study material to get familiar with the sections that we really don’t use on a day to day basis. Salesforce has done a really good job of putting up Study Guides, Sample Questions, and Reference Materials to help you prepare for the Certification Exams.

Salesforce is currently offering 5 levels of certification. I have included them in the image below:

Salesforce Certification Options

In the above chart, I have rated the difficulty level of the exams based on a cursory review of the study guide and review of all sample questions. The above chart assumes that you are a System Administrator and not a consultant. If you are a consultant, you may actually find all of the above exams to be easy, save for the “Force.Com Advanced Developer” which requires some deep knowledge of Apex and VisualForce. (Disclaimer: I haven’t taken the full exams yet, but plan to take at least two of them in 2009).

Good luck on your certification efforts and feel free to post any resources you find useful in your prep!

Managing by Metrics
Aug 10th, 2008 by Anand Sethupathy

One of the great promises of using CRM for nonprofit program management is the ability to manage by metrics. In theory, if we could track all efforts and all outcomes in a system, then we could uncover those predictive indicators that lead to desired outcomes. We could then make adjustments to the program operations itself to reach those desired outcomes. To a great extent, this is possible, however, it is much more complex than it sounds. One of the root causes of the complexity is the fact that we often are not looking at all of the variables and are only looking at a subset. Making decisions on a subset of variables can sometimes lead to incorrect conclusions. Since I have seen this logic trail unfold a few times, I thought I would share an abstracted example of such a situation.

Take for example, Acme Org, a human services organization that has implemented a robust CRM solution that tracks almost all aspects of it’s program operations. Below is one of the critical reports reviewed by the Executive Team each month:

Initial Management Metrics

The organization is considering the use of these metrics for determining promotions, salary adjustments, and bonuses. After initial review, the Executive team expressed concern about Jon’s performance to Jon’s manager. Jon’s manager on the other hand knew that Jon’s metrics were low because he was always thrown on to the toughest cases. Being on the toughest cases each month meant that Jon would have to spend more time with each client and would be responsible for defining new engagement processes for working through complex cases. Unlike the other client service reps Jon spent a lot of time researching and speaking to industry experts to identify best practices that could be used by Acme to help future clients. In short, Jon was expanding the organizational knowledgebase, capacity, and quality of service delivery. Unfortunately, none of this was being recognized in the monthly report. Jon’s manager decided to add a new metric into the monthly report that would help recognize Jon’s efforts. The revised report is below:

Post Review Metrics

The revised report gave the Executive Team more insight into Jon’s efforts and the demands placed on the Client Services staff.

The point of the example is to proceed with caution when using Metrics for Management level decisions. They can be a very powerful tool when well directed; however, there is usually a story behind every piece of data and it is critical that the entire story is understood before program level decisions are made.

Cross Object Formulas Have Changed the Game
Aug 3rd, 2008 by Anand Sethupathy

If you haven’t already done so, make sure you get deep into Cross Object Formulas. They have fundamentally changed how we think and work with Salesforce.Com configurations. A Cross Object Formula is a Formula field that can traverse object relationships and pull down data into an object.

Take the following example. Let’s say you are using the Opportunities object to track Inbound Grants. Let’s say that you have a Payments object that has a Master/Detail relationship with Opportunities (Payments is the Detail).

You can setup the following Cross Object Formulas in the Payment object to reference elements from the Opportunity and Account.

Payment Made By (Account) = Opportunities__r.Account.Name
Payment For (Opp) = Opportunities__r.Name

The beauty of the Cross Object formulas is that it lifts many of the constraints we previously faced with Salesforce. We can now:
- Create more complex reports including more objects than we could in the past
- Avoid writing Apex for something as silly as replicating a parent or lookup field
- Ease data entry and report building for the end user by making data more accessible

There are some limitations to be aware of:
- Limit of 5 cross object relationships per object
- You can reference up (from detail to master) or sideways (lookup), however, for references from parent to child, you still need to use Summary Roll Ups.

If you haven’t already used these, you should definitely check them out as they can solve many common problems you may have faced in the past.

If you have any interesting use cases for cross object formulas, please post them in the comments.

Adopting and Adapting to Salesforce
Jul 22nd, 2008 by Patrick Shaw

We’ve been customizing Salesforce.com for nonprofits for more than a year now – we’ve helped enough nonprofit’s customize, migrate data, integrate with payment tools, Vertical Response and more – and we have just enough information from all of those projects to begin to see what happens AFTER we’re done.

As most know – moving to a new tool of any sort provides benefits and challenges. When I upgraded to the Microsoft Office 2007 suite, I had to fight with the toolbar, and finding the “print” button was excruciating – I wasn’t used to where things were, wasn’t ready to explore new offerings – I just wanted to have all of the new features available so I could use then when I was ready. I’ve been using Word and the other Office tools since their inception – so I’ve been through this before, but I was reminded that even an updated tool, with a LOT of user and usability testing can pose adoption challenges.

Imagine what it’s like moving from MS Access, or FileMaker Pro, or eTapestry to Salesforce then? Add in a complicated data migration, some thinking about doing things in new ways -and all of a sudden Monday morning with that new tool can be grim. Here are some things that you can do to get ready to adopt and adapt!

  • Include your whole team in the planning process. (You ARE having a planning process, aren’t you?)
    • It can be easy to overlook some of the key players in your agency – the volunteer that enters data, the finance expert that reviews and reconciles donations, the program team that matches volunteers, the development officer that plans events. Using Salesforce successfully means that your WHOLE team uses the tool actively – not just for reporting. So – you’ll want to make sure their voices and needs are heard during planning – so that when the tool rolls out – they know what they are getting!
  • Identify a Product Champion
    • Every agency needs a product champion, a go get it, I love it, this is great, I can help you make it work for you. You don’t want to rely on your vendor for this – you need to OWN this expertise in house. This should be the person in the agency that is excited about Salesforce, participated in planning, has read the documentation, and isn’t afraid to try.
  • Read The Documentation
    • We provide documentation for all of our projects, and you should expect that from a vendor. Make sure that it has both general information (how do I look up a contact) as well as information specific to your needs (how do I match a volunteer with a client). The information you need to “do it yourself” is probably in your documentation.
  • Make Your Own Documentation
    • That’s right – no one knows better than you. Make a quick “job aid” – a one page tip sheet, a “I always forget this step” list, and more. You can help your team over the hurdles with some very targeted, agency specific help documents.
  • Pay For Onsite Coaching
    • On launch day, have your vendor on hand. Sure, it will cost more -but if your team is frustrated on Monday, and doesn’t get help until Friday – you might not ever get them to use the tool.
  • Change Your Thinking
    • This is an on demand, use it every day type of tool. It won’t add much value if you update contacts, create follow up notes and activities, and create opportunities only every once in awhile. Meet someone at a party that might support your mission? Add them to Salesforce, create a giving opportunity, and make a follow up note to call or write.
  • Plan For More Training
    • Don’t forget the 70/30 rule – about 70% of your time and money will be in the planning, training, and retraining category, and about 30% in the actual implementation. That sounds like a LOT of money – but if your team can’t get a driving license – the care won’t help much.
    How Much Bandwidth Does Salesforce Use?
    Jul 22nd, 2008 by Patrick Shaw

    It’s easy to assume (at least for me) that most if not all of my nonprofit customers have been able to acquire a nice broadband connection. So I was surprised (but shouldn’t have been!) when one of my customers wanted to know what the bandwidth usage would be like if they moved their work to Salesforce. They have a shared infrastructure and some stringent requirements for ensuring that a certain amount of their pipeline is available to their constituents.

    We considered an onsite usage test – but we would have had to reveal customer data – plus – we’d be making things up – what they really wanted to know was “how much bandwidth will OUR implementation of Salesforce use?”

    So -we asked Salesforce -and they provided a LOT of information. Here’s the key points:

    Bandwidth Required for Users
    Salesforce.com is designed to use as little bandwidth as possible so that the site performs adequately over both high speed, dial-up, and over the air Internet connections.

    • While average page size is on the order of 90KB, salesforce.com uses compression as defined in the HTTP 1.1 standard to compress the HTML content before it is transmitted as data across the Internet to a user’s computer. The compression often reduces the amount of transmitted data to as little as 10KB per page viewed due to the lack of image content. The site was designed with minimum bandwidth requirements in mind, hence are extensive use of color coding instead of images. Our average user also is known to view roughly 120 pages from our site per day.
    • Our application is stateless, therefore, there are no communication requirements in the background once the page loads like traditional client server applications e.g. Outlook. Therefore once the page loads there are no additional bandwidth requirements till a user queries or writes information to salesforce.com.
    • In short, it is difficult to specify customer bandwidth because of the nature of the Internet and individual corporate usage. Network latency, peering issues, bandwidth at upstream providers, users using their Internet connections for other use besides salesforce.com, etc. all affect the perceived performance of the connection and the amount of bandwidth required to keep performance adequate.
    • A Salesforce.com deployment of 80 users with 75% of the users concurrently logged in with a think time between transactions of 2 minutes: Avg Bandwidth = 120 * 60 / ( 120 + 2 ) = 59 Kbits/sec

    Obviously – your mileage may vary depending on the nature of your connection to the internet as well as what other internet related work you are doing. It’s likely more helpful to know your total bandwidth needs and to understand how they all fit together rather than to know what Salesforce uses by itself.

    CRM Sustainability
    Jul 5th, 2008 by Anand Sethupathy

    We have been engaging in a lot of interesting debates in the NPower office about what makes a CRM solution sustainable for an organization. After a typical CRM deployment project, we do our best to leave the nonprofit with enough knowledge and tools to keep them sustainable. Here is a list of a few of the things we do:

    Documentation – We initially started with word docs, however, we are more recently moving towards the use of Help Tips, Recorded Screen Casts, and a Help Tab. The idea behind documentation is that it should be complex enough to educate someone on how to use the CRM; however, not so complex that the documentation cannot be maintained.

    Training – This is perhaps the most important element for us. We typically provide our clients with two levels of training. We do an end user training session that lasts between 1 and 3 hours depending on the complexity of the client implementation. We also do an administrator training for the Sys Admin level users at a client site. We also encourage the Sys Admin level users at the client site to attend a formal Salesforce training class.

    Community – For clients that are in cities where CRM user groups are held, we encourage them to join and attend. This allows them to learn from their peers and get new insights into what is possible with CRM. We also encourage Sys Admin level users to join the NPSF so they can learn through the engaging technical conversations of the online community.

    One of the areas that continues to be a challenge for us is Custom Code. Salesforce (and other CRM tools) provide a variety of means to extend the base platform with Custom Code. In the case of Salesforce this would be Apex, VisualForce, S-Control, and API Code. We are always weary of dropping custom code into an organization that has no means of managing or modifying the code. We do our best to avoid code by using as much standard functionality as possible. When it comes to deploying custom code into an organization that is not able to support it, we work through a simple cost/benefit tradeoff. Is this Code performing a high value business function? Is there a high probability the Code will need to be changed within the next 3 years? If the code needs to be changed, can the organization afford the change? If there is HIGH value for the code, LOW probability of the code needing to be changed, and the organization will likely find the funds for a change, then this alleviates our concerns. Custom Code is not to be feared in a NPO CRM implementation; however, a plan needs to be in place to support it over its lifecycle.

    »  Substance: WordPress   »  Style: Ahren Ahimsa