Friday, January 28, 2011

From Chatter Apathy to Chatter Fan in 30 Days

Meet Joe Onisick, a self-proclaimed “IT professional specializing in data center technologies with a focus on virtualization and private cloud architecture.” (I haven’t had the heart to tell Joe that there is no such thing as a private cloud – that it’s a myth, like unicorns and leprechauns – but perhaps we’ll broach that twitter conversation on a later date :-)

I jumped into a conversation with Joe when he spoke disparagingly of Chatter:


So here we have a well-educated, intelligent fellow, who finds real value in “public social media”. From reading his Twitter stream, I see that Joe expertly wields Twitter to find other business professionals, networks with them to get answers and solve problems. So how is it that he couldn’t see a similar benefit with Chatter?

Could it be that the Chatter deployment at his company did not have appropriate C-level executive sponsorship? Securing your C-level executive sponsor is critical in any organization-wide application. Someone “at the top” has to recognize that this corporate social media stuff has value, convince their peers that it will be helpful to the company, and provide the oversight to ensure that it is rolled out properly.

Perhaps there had been no training for the user community at Joe’s company. Let’s be honest – a good number of our friends, relatives and work colleagues simply don’t understand the power and impact of social media – or even what it’s good for. A corporate executive, whom I get to work with from time to time, refers to Facebook as “Wastebook”. He perceives it as a tool for idle minds and wants no part of it in the workplace. An organization cannot simply turn on a tool like Chatter and hope that employees will “get it”. Training, monitoring, and re-training must be part of your Chatter roll-out strategy.

Perhaps the deployment did not have appropriate attention by community moderators. Social media is only useful when there is wide participation. In public social media tools, like Facebook, LinkedIn and Twitter, there is an enormous community of active participants. But when you close the tool to a smaller community, it very often requires a moderator to monitor the micro-blogging stream, create and steer conversations to the appropriate discussion groups, and nurture the community until it is able to thrive on its own. Many corporate social media experiments fail, simply because there is no one there to lead the conversation and get everyone out of their SocMed shells.

I made a note to check back with Joe one month later. I wanted to see if there had been any change to his position on corporate social media. There had been:


From Chatter Apathy to Chatter Fan in 30 Days. Go get him, Robin Daniels, there’s a successful user story in there somewhere!

Saturday, January 8, 2011

Salesforce.com Acquires Dimdim - Why Is That Good?

This past week, Salesforce.com acquired Dimdim, a browser-based web conferencing service provider. Dimdim is a very useful app and I’ve used it to conduct webinars, User Group meetings, and training sessions for remote employees. As web conferencing goes, Dimdim included all of the basic functionality: ability to schedule a web conference, track meeting registrations, automatically send email reminders to meeting registrants … even the ability to record the web conference for later playback.

After the event, the web conferencing organizer would receive an email link, which he could immediately share with anyone – so they could view the recorded session and play it back at their leisure. Organizers also recedived an embedded HTML link, which they could paste into their blog or website, making the content of the meeting available to a general audience. Beyond web conferencing, Dimdim had other useful features, like whiteboard collaboration, the ability to share and store documents, phone conferencing, and webcam sharing.

I used Dimdim for a good number of Salesforce.com consulting projects that I was doing for Non-Profit Organizations. These organizations were attracted to Dimdim because it was the only free web conferencing solution available. The free version only supported 20 attendees, but that was perfect for their needs. The Pro version, which allowed a greater number of participants and more functionality, was only $25 / month. Very compelling, compared to other web conference vendors, which were in the $40 - $60 price range.

It’s clear that Saleforce.com is acquiring Dimdim for its technology, not its customer base. When giving me the heads-up about the acquisition, my Salesforce.com Account Executive was careful to mention that Salesforce currently has “no plans to go into the web conferencing market.” Shortly after that, I got an email on my free Dimdim user account confirming the same: my Dimdim account will remain active until March 15th, and after that I won’t be able to use it.

That doesn’t mean Dimdim will go away completely. Afterall, Dimdim is based on open source code, and an open source version of the code will be posted to SourceForge.net. However, neither Salesforce.com nor Dimdim will be contributing to the open source project going forward. Source: Brown, Rodney (2011, January 7). Mass High Tech: Dimdim sells to Salesforce.com for $31M.

Why is this good for Dimdim? In the press release, Dimdim CEO DD Ganguly summed it up simply enough, “From our start, Dimdim has focused on enabling real-time collaboration in the cloud, with no software. Salesforce.com gives us the opportunity to apply our expertise and align our vision of real-time, social enterprise software in the cloud – at a scale that wouldn’t have been otherwise possible.”

Why is this good for Salesforce.com? Good development talent is hard to acquire, and in just 3 years, Dimdim has done some very interesting, innovative stuff in the web conferencing space. Salesforce plans to retain the Dimdim engineering team, most of which are located in India. Although the standalone web conferencing service is terminating, the engineering team will focus on integrating “Dimdim’s technology with Chatter as quickly as possible.” Source: Henschen, Doug (2011, January 7). InformationWeek: Salesforce.com Acquistion Feeds Chatter .

Why is this good for Salesforce.com Users? Plan on seeing some new features in the Salesforce.com Collaboration Cloud service very soon: instant messaging (and being able to log those communications to a contact / lead / case), screen sharing (how handy will that be for your customer service team?), whiteboard collaboration sessions that can be recorded and stored in Content or Chatter Groups, training webinars (also recorded and stored for replay), and more. Great stuff coming!

Why is this good for Dimdim Users? Well, truth be told, it ain’t. There’s not one good thing about this for Dimdim users, and I’m sorry to see my Dimdim web conferencing user account go away. Individuals who used Dimdim for web-conferencing will look toward other web-conferencing solutions (Yugma/Skype, for no-low cost; GoToMeeting, WebEx, Live Meeting, iLinc or others for subscription services)

What about you? What are you looking forward to with the latest acquisition by Salesforce.com?

Saturday, January 1, 2011

Converting 10-Lines of Apex code to a 1-line Validation Rule Formula

Code clean-up is what I'm doing these days ... lots of code clean-up. One of our Salesforce.com orgs (we have sixteen of them) currently has 72% test coverage in production. I'm not sure how the previous administrators were able to install code below the 75% threshold, but they managed. I'm tasked with getting that code cleaned up, so I can deploy a new release.

While looking for areas to improve code coverage, I stumbled upon this trigger:

trigger checkAccountPhoneNumberBiBu on Account (before insert, before update) {
   for (Account account : Trigger.new) {
      if (account.Phone==null) continue;
      Pattern p = Pattern.compile('[-() ]');
      String sPhone = p.matcher(account.Phone).replaceAll('');
      // check length without punctuation
      if (sPhone.length() != 10) account.Phone.addError(' Phone number must have 3 digit area code and 7 digit number');
      p = Pattern.compile('\\d');
      sPhone = p.matcher(sPhone).replaceAll('');
      if (sPhone.length() > 0) account.Phone.addError('Phone number must be formatted as (999)999-9999');
   }
}


This trigger looks at the value entered in the "Phone" field before an Account record is inserted or updated; if the phone field is not in the (999)999-9999 format, it errors out and notifies the user to enter the phone # in the proper format.

In addition to this Apex code, the developer also had to write a testmethod to ensure coverage of the trigger. His code was only getting 67% test coverage (which is what brought the trigger to my attention in the first place).

As I started looking at what I needed to add to the testmethod to ensure 100% coverage, I realized it would be easier to just get rid of the trigger altogether, and replace it with a Validation Rule. That 10 lines of Apex code was reduced to a 1-line formula in a validation rule:

NOT(REGEX(Phone, "\\D*?(\\d\\D*?){10}"))

Here's the validation rule in the UI:



Simpler is always better. Any time you can minimize your code (or get rid of it altogether), you make your org simpler, smaller and eaiser to maintain. I'm a fan of that.

Another benefit of implementing this as a validation rule is that I'm able to control where the error message is displayed. Previously, the trigger method displayed the error message at the top of the detail record page layout.  With validation rules, you can display error messages either at the top of the screen or at exact field where the error was made; I generally prefer the latter.

Want to see this and other useful validation rules? Check out the Useful Validation Formulas guide by Salesforce.com.