Entries in salesforce developer (67)


Using Aggregate Functions in SOQL

Up until the release of Salesforce API 18.0 (in Spring '10), SOQL aggregate functions weren't available. Like the ones in SQL, these aggregate functions allow the user to count the number of rows for a specific criteria or MAX/SUM the fields of rows.

When coupled with GROUP BY, the aggregate functions can be particularly handy! check out the example below; the query will return the sum of payment amount for an Account:

AggregateResult[] arTotAmount =[Select Account__c, SUM(Payment_Amount__c) TotAmount from Payment group by Account__c];
Note that a query with an aggregate function returns the results in an array of AggregateResult objects. The AggregateResult object is read-only.

Major Improvements to DupeCatcher 

You guys know how much I love Symphonic Source's free deduplication tool, DupeCatcher, so it should come as no surprise to learn that I'm really excited about the major imrpovements they've just rolled out! Read more about DupeCatcher's improvements below:

From -

DupeCatcher (real-time duplicate prevention application) just got even better. With latest improvements, DupeCatcher is now more robust.

Dallas, TX (PRWEB) June 06, 2012

Symphonic Source Inc., a leading provider of powerful and affordable data management software, today unveiled some major improvements to DupeCatcher, the company's real-time data deduplication tool.

DupeCatcher has quickly become a favorite for administrators and consultants around the world to flag/block duplicate records at the point-of-entry. DupeCatcher is a preventative deduplication tool that compliments Symphonic Source's main deduplication product Cloudingo (scans/cleans out the entire database).

Symphonic Source tools and services are used by more than 7,600 administrators worldwide to get rid of duplicate records and keep them out of Even though DupeCatcher is free, it is still 100% supported by Symphonic Source. Our support team is one of the best in the industry and that shines through in the DupeCatcher user reviews.

The latest improvements to DupeCatcher are centered around optimization with respect to large record sets inside Salesforce. In addition, the DupeCatcher team has made enhancements to error handling and reporting. We continue to get such great feedback from our users that we continue make improvements.

DupeCatcher focuses on the preventative aspect of duplicate data. This is one of the of the most important aspects of any data quality management plan. Cloudingo then works in conjunction with DupeCatcher to actually analyze and clean out the "dirty data" that already exists in the system. This allows system administrators and or marketing managers to not only understand their data but plan and set goals for the future.

"So much of what we do here at Symphonic Source is focused on the best practices of data quality management. We've taken our years of experience and created software to automate the steps that facilitate success and growth within a data-driven culture. Our team has a passion for data and we believe that corporate data is an organizational asset. Our customers share that passion. Anything we can do to both protect and enrich data will help our customers see and plan for the road ahead."

-Lars Nielsen, CEO, Symphonic Source.

About Symphonic Source
Symphonic Source provides powerful and affordable data management software to customers worldwide -- from Fortune 500 enterprises to small businesses and non-profits. We work extremely hard to stay as close to our customers as possible. Our customers are direct participants in shaping the future of our development efforts. As a company, our focus has always been on creating easy-to-use products.

Cloudingo and DupeCatcher are trademarks or registered trademarks of Symphonic Source, Inc.. Salesforce and AppExchange are registered trademarks of, Inc.. All other company and product names mentioned are used only for identification purposes and may be trademarks or registered trademarks of their respective companies.




Data Quality: Case in Point

The motivation for this blog post is a case in point example, so I'm going to go ahead and give you the story first and I think you will understand immediately why I'm so frustrated. For the purpose of this exercise, I'm leaving out all names and identifying traits of the people involved. I'm sure that most of you have experienced a similar situation, so feel free to chip in with comments.

I received an email two days ago from the sales director at my company. He went into detail about a conflict that came to his attention early in the week with two sales representatives, who I'm going to call Tom and Jerry. Tom made a phone call to a customer that he had made initial contact with two months ago and had entered into our Salesforce database. He was confused when the customer told him that he had just talked to a rep at our company named Jerry, and had actually decided to go ahead and buy one of our products.

At this point, Tom was both frustrated and irritated. He had embarrassed himself in front of a customer and lost out on his commission. He immediately went to the sales director with his complaint, who immediately emailed me. So I was left with a problem: how had Tom and Jerry both been assigned the same customer by the Salesforce system?

I found my answer fairly quickly. Every weekend, our Salesforce account does a mass import from our internal database containing all of our customer information. At some point, the customer in question had his phone number changed. When the system did it's weekly import, instead of recognizing that the number had changed, it went ahead and created a completely new account under the duplicate information with a different phone number. Tom was assigned 'Original Customer' and Jerry was assigned 'New Customer' and I ended up with a two-salesperson pileup.

I know that I've shared a lot of my thoughts on data quality with you before, but I don't think it can be emphasized enough. Without maintaining strict protocols for data import as well as entry, conflicts like this can arise fairly easily.


Steps Toward Cleaner Databases

One of the most consistent problems I face in my work is getting members of our sales team to fully and accurately fill out the required fields on This lack of attention to detail has left entries into our database in a patchy condition at best. Some accounts are fully filled out, but nothing is a bigger bane on the efficiency of our sales team than a partially completely lead form.

However, by taking a two simple steps as a Salesforce Admin, you can start to really cut down on the amount of incomplete data that is entered into the system.

1. Be sure that you have set up all fields appropriately for the lead form. If you plan on transferring the information from the lead form over to the account page, be sure that the fields on both pages match up.

2. Next, set up validation rules. By creating efficient validation rules, you can make sure that the user enters in the required data before they are allowed to save the record or change the status of the lead.

Important things to consider: When you are creating the validation rules for the lead forms, think carefully about which fields you want to be required. For example, if the salesperson makes initial contact over the phone, it makes sense to require that the telephone number field is filled in. You have to be careful though, because validation rules prevent the user from saving the information without all of the required fields filled in. What information is it likely that the sales rep can acquire over the phone? What is unlikely?

Hope this helps! If you aren't already, Follow Me On Twitter!


#DF11 So close, yet so far

We are exactly 20 days away from Dreamforce 2011- or as it's being referred to all over Twitter, Salesforce Christmas. All anyone needs to do to stir up some personal excitement for the conference is visit The lineup is incredible; Marc Benioff, Eric Schmidt, and many other CEO's and higher ups from notable companies. Metallica and Will.I.Am are also going to perform. Tons of folks are going to get certified for Salesforce, developers and admins will network, and unmeasurable amounts of learning will take place. All of this excitement is geared toward celebrating Salesforce and Cloud Computing.

I wish I could do it all. I look at the agenda, the speakers, the workshops, and the random activities and I literally wish I could be in a million places at once. Unfortunately, with around 40,000 people attending the conference, it's impossible to hit all of the events. However, I'm doing my best to be as organized as possible so I can maximize my Dreamforce '11 experience.

Here are four of the sessions I'm planning to attend:

  • Building Your Brand with Jenna Baze, Mike Gerholdt, and Nick Westergaard - 8/30 from 10:00 a.m. - 10:45 a.m.


  • 7 Habits of Highly Successful Admins with Mike Gerholdt, Thomas Martin, and Jeff Grosse - 8/30 from 3:30 p.m. - 4:30 p.m.


  • Best Practices for Clean Data - 8/31 from 2:00 p.m. - 3:00 p.m.


  • Data Does Not Have to Be a Dirty Word - 8/31 from 3:30 p.m. - 4:30 p.m.

I'm also really excited to have the opportunity to walk the Cloud Expo floor and check out all the new products that I'm sure will be debuting at the conference. My favorite part of the conference every year is seeing all of the new features, apps, and innovations all come together at once. I can't wait!


Solving Sales Problems 

I like to think that I'm a big picture kind of guy. I enjoy figuring out the patterns in everything- whether it be sports, politics, business, or social relationships. Finding the common ground in different areas of life makes things simpler for me in a way. This morning (like many mornings), I was reflecting on how cloud computing has completely changed the process of managing a sale and the relationship between the customer and company. In almost every way, CRM tools like have made the art of selling simpler, more organized, and more efficient. However, if Salesforce admins like myself aren't using these tools correctly or managing our companies accounts effectively, a ton of the benefits from these tools are lost in the clouds (forgive me).

I wanted to go over my top 3 sales problems that show up in any CRM system and can really be fixed by one umbrella solution. These problems are really just the tip of the iceberg when it comes to effectively managing CRM tools. The majority of learning comes with experience.

Problem: The people in sales can't trust the information they glean from the database about active sales opportunities.
Why: When the salesperson is working on an account, they neglect to update the information.

Problem: Some accounts linger in the system even after they have been closed.
Why: When a salesperson has finished a sale, they don't update the account information.

Problem: Information isn't entered into the system uniformly.
Why: The salespeople have been educated on how to use the system; some apply it, some don't - most meet somewhere in the middle.

Umbrella Solution: Talk with your superiors about putting a plan in place for CRM protocols. Explain to them clearly how big an effect these issues have on the productivity of the company and the sales team specifically. Make sure that you come away from that meeting with a clear understanding of the procedures they are willing to enforce. The key is being able to hold negligent employees accountable for the information they enter into the system.


Certified Developers Exam

In my work, I often have to find the right people for the job.  Whether I’m hiring someone to work with me, or assisting a client in filling a position, vetting candidates is challenging.  Salesforce does help in this regard because of their extensive certifications.  Whether as an admin, or a developer, earning a credential from does say something about you to prospective employers.

Earning these credentials is no small matter, and it shouldn’t be.  As stated above, such credentials need to say something meaningful to the world—that those who hold the credential are highly qualified, skilled, and dedicated.

When asked about the Salesforce Certified Developers exam, I listed the following suggestions for a colleague who was preparing:

This exam is not about writing a program.  It’s about your ability to understand the platform and when and how to use its various pieces.  By analogy, knowing how to use the Microsoft Office suite of programs says nothing about your understanding of how those programs are built and interact.

Transforming data into information is one the core competencies of Salesforce.  Understanding how the platform’s reporting engine runs is key to understanding how and when to use certain types of reports and dashboards.

Study up on the details.  A large portion of the exam questions you on permissions—how to enable or restrict who and how objects and data are accessed.  Know when and under what circumstance these settings should be used.

Be sure to have a comprehensive understanding of the platform, even the beginners stuff.  You might be the best programmer of one aspect of the platform, but the certification covers the entire thing, and earning the certification says you’re qualified in all of it.

Know about available options that Salesforce can enable within individual orgs.  Not all features and functions come standard in a new Salesforce org.  Some need to be enabled based on request, and programmers need to know what these are.

This list is really just an overview to help focus your study planning.   There are great resources freely available for each of these areas.  Make sure you don’t neglect any one of them.

Jul292011 Streaming API

I. Love. The folks at DeveloperForce are constantly working to improve and add new features, and I just can't thank you enough for making my job so much more efficient and fun. Half of you are probably wondering where this is coming from, the other half are probably writing this off as me being myself - but the real reason I'm in such a good mood today is all thanks to Streaming API. Out of enthusiasm, I wanted to take a minute to highlight the features of the new streaming API that my colleagues and I are most excited about. Streaming API allows administrators to create topics, which are affiliated with SOQL queries. Applications can then subscribe to one or more of the topics - when the data is updated the query is reevaluated and if something changes the results of the query, the application is notified.

I haven't talked to many other Salesforce developers about it yet, but all the feedback I've heard so far has been overwhelmingly positive and I'm really excited to get some more opinions. For the longest time, I've been struggling with the complexity of data synchronization and I know that most of my colleagues have been as well. However, thanks to the secure, scalable, and near-real time stream of data from the platform, I have a feeling that streaming API is going to make data synchronization a lot simpler.


Matsumoto Joining's Heroku

Programming legend Yukihiro "Matz" Matsumoto, creator of the Ruby programming language, has decided to join's Heroku PaaS company. This move is exciting in many respects, not least of which is the huge boost in geek-swag Heroku will feel after adding Matz to the staff.

Matz was enthusiastic about the move because Heroku is "committed to openness and developing Ruby further. I want to make the Ruby development experience even richer, more natural and more productive than ever for all Ruby developers.”

Over the past 12 months, has expanded it's development project of Heroku and and has attracted over 380,000 developers worldwide. Having so many different languages on so many different platforms - Ruby on Heroku, Java on VMforce, or Apex on - allows to be competitively diversified. The opportunity to churn out a huge amount of code, culturing an innovative spirit, and employing an open-minded company strategy are just a few of the many reasons that the development community has flocked to And it's working! According to CEO Marc Benioff, the Salesforce community is now managing over 1 billion lines of code.

There are exciting times ahead, I can't wait to see what the future holds!