Tuesday, October 08, 2013

Dreamforce Nostalgia

Dreamforce 2013 will mark my 6th consecutive DF. Over the years I started associating the Dreamforce band and the key announcements.
Back in the day it was easy, 1 or 2 major product announcements.
 However, for the past few years we have been making so many revolutionary product announcements that it's getting hard to keep things straight. The fact that I' getting older does not help matters much ;)

2008: Foo Fighters, Force.com Sites
2009: Black Crows, Sales Cloud 2, Service Cloud 2, and, of course, Chatter
2010: Stevie Wonder/Will.I.Am, Database.com, the Heroku acquisition and more Chatter enhancements
2011: Metalica, The Social Enterprise, Social, Touch, Mobility and expansion of Heroku’s capabilities
2012: Red Hot Chili Peppers, Business is Social, Work.com, Marketing Cloud
2013: Looking forward to Green Day and The Customer Company Revolution

Monday, July 15, 2013

Secure Video Posts in Chatter

A common request that I receive is regarding posting videos in Chatter, specifically: "Can I post video files in Chatter?". The current answer is somewhat convoluted, while you can indeed post any file you like in Chatter, when it comes to video files, typically people want streamable playback.

Unfortunately what you get is download, followed by local playback.

However there are a few workarounds that can help get you closer to where you want to be.

Option 1: YouTube
If you first upload your video content to YouTube, then share the resulting URL as a Link in Chatter, Chatter embeds the video within the Chatter feed. This gives the impression that the video is actually in Chatter.

The downside of this is that YouTube videos are public, more often than not, and in some cases your company might be blocking YouTube entirely.

While YouTube allows some privacy, it can be somewhat inflexible. Currently you have 2 options "unlisted" which means that a user needs to specifically know a given video URL. This would be practical for non-sensitive videos, however most would consider this to be "security-by-obscurity" (aka not secure). The other option is "private", this would have promise, however anyone you share your video with must already be a YouTube user. Not very practical for corporations.

Option 2: Vimeo.com
Vimeo offers an interesting take on video sharing, unlike YouTube, you can add a simple password to a video to limit the viewing audience. While not as secure as having the video behind your firewall, this does offer a slightly better security experience.

Step 1: Upload your video to Vimeo and click the Video Settings button (gear icon in the top left). Several options exist, including the option to password protect.

Step 2: Grab the link using the Share button in Vimeo

Step 2: Create your Chatter post, use the link that you created in Step 2 as the Link in your Chatter post

Notice that the video thumbnail and event the video name are obfuscated.

Step 3: Click play on the video and the user is prompted for a password

After the password is provided, the video plays inside the Chatter feed 

In Closing
While Salesforce.com does not (yet) provide native video embedding in Chatter, such functionality can be achieved by leveraging the services of YouTube or Vimeo. Vimeo has the advantage of accommodating individual video paswords.

Salesforce.com leverages the services of Embed.ly to provide the rich media linking and embedding. For a comprehensive list of all supported providers, see http://embed.ly/embed/features/providers

Thursday, May 02, 2013

Some Usefull Salesforce.com Lead Validation Rules

In a recent customer event, we discussed some useful validation rules for Leads. Many of the sample validation rules in the Help&Training application focus on Accounts and Contacts, however very few are specific to Leads. Fortunately, these can be easily "translated".

Requiring a 2 Digit country code (ISO 3166)


Requiring Zip+4 Postal Codes for US Leads

AND( OR( Country = "USA", Country = "US"), NOT(REGEX( PostalCode , "\\d{5}(-\\d{4})?")) )
Note: More details on Regular Expressions REGEX can be found in the J2SE documentation, basically \\d{5} indicates 5 digits, whereas \\D{5} indicates 5 non-digits.

Requiring 10-Digit US Phone Number for US Leads

AND( OR( Country = "USA", Country = "US"), NOT(REGEX( Phone , "\\D*?(\\d\\D*?){10}")) )

Simple example for requiring a positive number in a custom Monthly Budget field

Monthly_Budget__c < 0

Thursday, April 18, 2013

Salesforce.com Summer '13 Release Notes Now Available

Official release notes for the Salesforce Summer '13 are available here. I encourage to read the as this is a very substantial release. Here are a few of the highlights.

  • Salesforce Communities now Generally Available! Communities provides private, branded spaces for your employees, customers, and partners to connect. Ultimately, Salesforce communities will supersede both Customer Portal and Partner Portal, however existing orgs with either portal technology in place will continue to function as before.
    • New license type introduced: Partner Community & Partner Community
    • Capabilities to “brand” and personalize your communities site
    • Chatter-capable: Employees, customers, and partners to collaborate on Chatter and business processes (records)
    • Options for SAML SSO
    • Self-registration capabilities
    • Facilities for page creation both within the secure environment as well as external (public) pages
    • Chatter Answers capabilities (Moderated Q/A Forums)
    • Ideas functionality
    • Knowledge Functionality – Assuming that the Knowledge application is enabled in the org
    • Site.com and Force.com Sites capabilities
    • Profile management for customers and partners
    • I think of this as Customer Portal and Partner Portal meet Chatter, Chatter Answers, Ideas, Knowledge and Site.com all-in-one
  • Chatter Updates
    • Chatter Tasks, introduced in Spring ’13, are now replaced by “Publisher Actions”
    • Chatter Topics now supersedes simple Chatter Hashtags
    • Find In Feed – Searching specific feeds in Chatter is now extended to searching across Chatter in specific profiles and records in addition to groups
    • Additional support for external content previews: Bloomberg.com, Box.com, wikipedia.org and others
    • Emails replies to Chatter: Do more from your old email client: bookmark, comment, follow, like, respond, unfollow, unlike
    • Chatter Desktop 3.2 (coming in April): configurable desktop alerts, post to public groups, keep on top, delete feeds (where you have access)
    • Chatter API updates
    • Chatter in Apex
  • Sales Cloud Updates
    • Relate up to 50 contacts to events or tasks
    • Collaborative Forecasting: Quantity forecasts in addition to Revenue forecasts, along with Quota Quantities in addition to Revenue Quantities and requisite reporting capabilities
    • Opportunity Splits: Accommodates splitting credit across opportunity team members
    • Customizable Price books: Customize fields, page layouts, record types, and more
    • Salesforce for Outlook: Side Panel improvements: Add emails to multiple contacts, Selectively sync contacts, tasks and events, view Cases for contacts in side panel 
  • Service Cloud Updates
    • Additional options for Case Feed setup
    • Updates to Case feed filters and feed items
    • Chatter Answers now available to all Sales Cloud and Service Cloud orgs – Too many updates to list, read the release notes
    • Chatter Answers no officially supersedes the legacy Answers application and integrated into Salesforce Communities
    • Entitlements: (Pilot) Create Multiple Versions of Entitlement Processes
    • Ideas now integrated into Salesforce Communities; Reputation tracking, Ideas organized into “Zones”, API Access to photos, page layout, trigger and API updates
    • Live Agent updates: Session Page, Session Reporting, Supervisor Page and Whisper Coaching
    • New OpenCTI Methods
    • Service Cloud Console Enhancements: Updated UI and keyboard shortcuts as well as API updates
  • Analytics Updates
    • Stricter Permissions on Report Folders…yeah!
    • Fine-Grained Sharing for Report and Dashboard Folders: Users and administrators get more detailed control over access to folders that contain reports or dashboards
    • Dashboards on iPhone, in addition to iPad
    • Communities access to Dashboards
  • Mobile Updates
    • Salesforce Touch mobile browser and downloadable apps are generally available for Apple iPad and iPhone
    • Viewing Records Offline with Salesforce Touch (Pilot)
    • Chatter for Android – Version 3.1 Generally Available: Now accommodates record access and in-line commenting (just like the iOS version)
  • Additional updates regarding Data.com, Force.com and Site.com (see documentation)

Know your Salesforce Success Resources

Great Podcast from Button Click Admin featuring Kevin Sherman from Salesforce.com, Discusses Salesforce Success Resources

Kevin Sherman on leveraging your Salesforce resources » ButtonClick Admin

Tuesday, August 14, 2012

Creating Chatter Pulse history

The Chatter Pulse AppExchange plug-In for Salesforce Chatter only starts collecting history at the time of installation. Chatter Pulse does not retroactively create history; however, we can populate Chatter Pulse history using the APEX Data Loader.

This post discusses one possible way of creating history, based on Chatter Posts and Comments created prior to the installation of Chatter Pulse being.
Fig 1: Chatter Pulse History, prior to import


Download and Install APEX Data Loader if not already installed. It is important to point out that the Chatter API changed in the Summer ’12 release, therefore you should use APEX Data Loader, version 25 or later.
Creating FeedItem History:

1. Launch APEX Data Loader

2. Click Export, then enter the user name and password for your Salesforce Org

3. By default, only Salesforce’s core objects will display. In order to see everything, including Chatter objects, click the “Show all Salesforce objects” option. Doing so will display a host of new objects including FeedItem and FeedComment.

4. Select Feed Item (FeedItem), chose a target file location and name such as c:\extracts\FeedItemHist.csv, then click Next

5. Select the fields: ParentId, Type, CreatedById, and CreatedDate, and add a filter to exclude any system generated Chatter (Type not equals ‘TrackedChange’) and click Finish
Note: For larger Orgs, you may also want to add a date filter to exclude history that is over 6 months old.

6. Review the resulting file to check for any abnormalities.

7. Go back to Data Loader in order to load the resulting CSV file (from FeedItem) into Chatter Pulse (CP_Chatter_Pulse__c)

8. Click Insert, Log In to your org and click Next

9. Select the object Chatter Pulse (CP_Chatter_Pulse__c), making certain not to confuse this with Chatter Pulse - Groups, and click Next

10. The system will tell you how many records exist in your import, Click OK

11. Click Create or Edit Map and map your fields as follows:

  • CREATEDBYID – Chatter_User__c
  • CREATEDDATE – Reporting_Date__c
  • PARENTID – Related_Record__c
  • TYPE – Update_Type_c

12. Click OK, the click Next
13. Choose a directory for errors and success files and click Next
14. Click Finish

Creating FeedItem History:

The structure of FeedItem and FeedComment are very similar, basically we will not repeat steps 1-14, this time using FeedComment as opposed to FeedItem

1. Extract the fields ParentId, CreatedById, CreatedDate, and CommentType from the  FeedComment object. No need to do any filtering on Type this time around, SFDC does not create any auto-comments. However, again, you may wish to filter comments based on date in larger orgs.

2. When inserting the records into the Chatter Pulse object, the field mapping is slightly different (TYPE vs COMMENTTYPE):

  • COMMENTTYPE – Update_Type_c
  • CREATEDBYID – Chatter_User__c
  • CREATEDDATE – Reporting_Date__c
  • PARENTID – Related_Record__c

Voilà! You now have history in Chatter Pulse!

Fig 2: How's that for growth!

Tuesday, May 29, 2012

Forthcoming Force.com Enhancements (Summer '12)

Looking forward to the Summer '12 release of Salesforce.com this comming weekend. Here is a quick rundown of forthcomming features available to administrators and developers:

Visual Workflow Enhancements
  • Build reusable flows - flows can call other flows
  • limit and sort your queries against Salesforce records
  • Sort is available for Dynamic Choices
  • Cloud Flow Designer button bar now has icons instead of text
  • Copy and Paste elements in the Cloud Flow Designer
  • Tighter security for Flow Finish Behavior 
  • Customize the look and feel of your flow’s interface using CSS classes and Visualforce flow attributes
  • Choose between a plain or rich text editor to create content 
Visualforce Enhancements 
  • Two additional attributes for the Visualforce component: showPublisher and feedItemType
  • Boolean showChat attribute to turn on/off Chatter Messenger
  • Optimized PDF generation
  • Describe support in APEX (dynamically generate the SOQL)
  • Additional referential integrity
  • Disable Development Mode button

Developer Console Enhancements
  • Syntax highlighting colors comments, numbers, strings, reserved keywords, primitive data types, variable declarations, and references
  • Performance Trees now show as part of the stack in the System Log view
  • Create and Delete workspaces
  • Easily navigate through your tab history using buttons
  • Overlay a diagnostic output on the run without instrumenting the code
Schema Builder Enhancements: Now Generally Available

Permission Sets Enhancements
  • Permission sets include an assigned apps page: specify which apps are visible to users with the selected permission set
  • Permission sets, like Profiles, can now determine what tabs settings a user has: Default On = Visible; Default Off = Available; Tab Hidden = No Access
  • Ability for Developers to create apps to query and manage Apex Page and Class access programmatically which are in line with their security policies.
  • Ability for Developers to build, package, and distribute administrative applications using visualforce with apex classes that not only query permissions but also manage those rights and their assignments to users
  • “Customize Application” permission is no longer required to edit users’ access to Apex classes and Visualforce pages
Security Enhancements
  • Verify a CA-signed certificate’s expiration date by clicking the certificate’s label
  • SMS-based identify confirmation is now available for all users, providing additional identify confirmation when needed
  • Bearer OAuth access token is now supported
  • Specify the HttpOnly attribute for your session ID cookies, restricting session ID cookie access to browsers only
  • Setup pages now include protection against clickjack attacks, aka: user interface redress attacks
Sharing Enhancements
  • Custom objects can have separate org-wide defaults for internal and external users (Pilot).
  • Partner Super User Access
Search Enhancements
  • Improved Article Search Relevancy (Service Cloud)
  • Improved File Search Relevancy (Chatter)
  • Improved Global Search Scope and Ordering
Relationship Field Enhancements: Added functionality to both the Lookup and Master-Detail relationship field types.

  • Lookups: Added the ability to make them required, or to restrict the deletion of a record that is the target in a lookup relationship. Also added the ability to enable cascade delete when a target record is deleted
  • Master-Detail: Added an attribute to the field that will allow children in master-detail relationships to be re-parented to another record
Object Limits: New object limits page: shows details about your usage of customizations on an object

Apex Code Enhancements
  • Perform DML operations such as create, update, and delete on Permission Set sObjects
  • New methods have been added that perform strict parsing when deserializing JSON content
  • The limit of callouts (HTTP requests or Web Services calls) for each method execution in a batch Apex class has increased from 1 to 10
  • New instance methods have been added to System.Type: getName, newInstance
  • Sort Lists that contain non-primitive data types, such as sObjects or user-defined types, using the List.sort method
  • Active query cursor limit per user has increased from 5 to 50, so SOQL queries in your code are less likely to reach the cursor limit and cause errors
Database.com Online Help: Find all Database.com related videos, workbooks, and developer guides in the portal located at docs.database.com

Database.com as a Heroku Add-on: Heroku users developing any apps in Ruby & Java can now connect that app to a new database.com free org directly from the Heroku Add-on Catalog or Heroku CLI. They can even bind to an existing database.com org.

Chatter  Rest API Enhancements
  • Files resource (includes the primary UI functions in the Chatter Files Tab)
  • Use an existing Chatter file as the source of a user or group photo
  • New property formattedAddress returns the address formatted for the logged-in user’s locale
  • isDeleteRestricted property indicates if a feed item can be deleted.
  • NotAMemberPrivateRequested is a new value available for the Group Member role payload
  • Flatview sorting parameter for feeds
  • User recommendations payload enhancements
  • Build CTI systems that integrate with Salesforce without the use of CTI adapters.
  • Create customizable SoftPhones (call-control tools) that function as fully-integrated parts of Salesforce and the Service Cloud console
API Enhancements
  • Multiple API Enhancements to support the enhancements to Chatter Answers, Data.com, Knowledge, Permission Sets, Live Agent, Relationships, Flow Designer, and Reporting and Dashboards
  • SOQL OFFSET lets you specify the starting row of the result set your SOQL query returns
  • Retrieve your organization’s customization information using the Metadata REST API so that you can read your organization’s metadata
Site.com Enhancements
  • Site.com permissions are now a combination of the user’s license and their assigned role at the site level
  • Import folders of assets and maintain the folder structure in the site using ZIP files of the content
  • Modify the default div tag of panels, repeaters, repeater elements, custom code, and content blocks using the updated HTML Tag property
  • View publishing history for their sites, including date, publisher, and detail information for each activity related to publishing
Additional Force.com Enhancements
  • Slimmer formula compilations
  • Recent items in setup
View the Summer '12 Release Developer Preview here on YouTube:

For users of NA1, NA6, NA7, NA8, and NA9 your instance will be upgraded the weekend of June 1.

For users of NA2, NA3, NA4, NA5, NA10, NA11, NA12, and NA14 will be upgraded the weekend og June 8.

All other users should check the release maintenance posting on http://trust.salesforce.com/trust/status/ for details.

Forthcoming Salesforce.com Enhancements (Summer '12)

Looking forward to the Summer '12 release of Salesforce.com this comming weekend. Here is a quick rundown of forthcomming features available to end-users:

Collaboration Cloud
  • Resharing of any status updates and group posts (Similar to re-tweeting)
  • Enhancements for easier publishing of Chatter posts
  • Ability to add a Chatter gadget to VisualForce pages
  • Chatter Messenger now Generally Available
  • Files are now included in Data Export
  • Enhanced Chatter Email notifications (Just ask and SFDC listens)
  • Upload multiple files at once
  • Files in My Groups filtering
  • Automatic supression of "old" posts (45+ day old and have not comments or likes)
  • Brandable Chatter UI for force.com using Connect in APEX (Pilot)
Sales Cloud
  • Migration from Customizable Forecasting to Collaborative Forecasting
  • Optional enabling of Quotas in Forecasting
  • Shared Activities - Relate tasks to multiple contacts
  • Email approval enhancements
  • Product selection enhancements (Maintain product selections across multiple pages of products, A-Z shortcut selection of products, display > 25 products per page
Service Cloud
  • Chatter Answers for Service Cloud
    • Improved posting and flow
    • Incorporate Answers as a tab in any portal
    • Chatter Answers Moderator enhancements
    • Brandable Chatter Answers for external sites
    • Facebook login for Chatter Answers
    • Chatter Answers reputation
    • Privately answer questions that are linked to Cases
  • Live Agent Enhancements
    • Desktop notifications to service agents
    • Multi-skill routing on chat buttons
    • Live Agent Supervisor Page
  • Case Feed Page - Single place to see all key elements of a case
    • Case highlights
    • Case attributes
    • Multi-channel contact information
    • Case feed and filters
    • Case followers
  • Custom buttons on the case feed
  • Jump links on the case feed
  • Printable view for the case
  • Additional case feed enhancements
    • Multi-select and Dependent Pick lists
    • Case feed now available in VisualForce Pages
    • Configurable email notifications
  • Service Cloud Console Enhancements: Custom Console Component display
  • Knowledge Enhancements
    • New workflow action "Knowledge Action"
    • Track article history (customizable)
  • Joined Reports Enhancements
    • Cross Block Custom Summary Formulas let you calculate values across multiple blocks in a joined report. 
    • Charts on Joined Reports let you get data from multiple blocks on the same chart.
  • Reports Tab Enhancements
    • Drag and drop capability to move reports and dashboards 
  • Dashboard Enhancements
    • Directly edit a dashboard component to specify the groupings and summary fields
    • Define dashboard components directly on the dashboard
    • Combination charts are now available for dashboard components
  • Cross Filtering is now available on all objects in Campaign CRTs
  • Enhanced Mobile Dashboards iPad App
    • Browse recently viewed dashboards, or ones you’re following
    • Search for dashboards
    • View individual dashboard components, highlight their values, and drill into underlying reports
    • Email a dashboard or an individual component to others
    • Access recently viewed or followed dashboards offline
  • Touch.salesforce.com (Beta)
    • Provides real-time access to Salesforce information/data on your touchscreen mobile device.
    • HTML5 solution for Tablets + Phones, optimized for mobile devices.
    • GA expected in July/Aug 2012 timeframe
    • Currently supports Contacts, Accounts, Opportunities, Chatter,  Activities and all custom objects.
    • Currently GA for iPad, Beta for Android.
  • Salesforce Mobile for Android tablets.
    • Generally Available with Summer '12
    • Integrates with native Android features
  • Data.com Clean: Provides additional Dun & Bradstreet fields for accounts, including D-U-N-S Number, NAICS Code, NAICS Description, and more
    • Report on data quality and relevantly with deep insights on customers
    • Target and remove duplicates leveraging reports and analytics
    • Fill and complete records with automated jobs to fill in incomplete records
  • Data.com Premium
    • All D&B fields available to Corporate, plus over 70 additional D&B fields for accounts
    • Includes D&B Companies tab, which lists D&B Company records for all accounts you’ve added from Data.com.
  • Additional Data.com Enhancements
    • D&B data now part of Data.com Clean
    • Industry Selector allows users to find contacts and companies across multiple industries and at any level of the industry hierarchy
Here is a collection of YouTube videos which discuss some of the new features:

For users of NA1, NA6, NA7, NA8, and NA9 your instance will be upgraded the weekend of June 1.

For users of NA2, NA3, NA4, NA5, NA10, NA11, NA12, and NA14 will be upgraded the weekend og June 8.

All other users should check the release maintenance posting on http://trust.salesforce.com/trust/status/ for details.

Wednesday, May 23, 2012

Chatter Pulse for Salesforce.com

Behold, my third and most diabolical AppExchange App...Chatter Pulse. Peform trend analysis on Chatter use

Just cleared the security review and is now live on the Salesforce AppExchange. I conjured Chatter Pulse while working on the previous solution "Adoption Trendz". Chatter pulse is similar in that it continues the concept of leveraging a secondary reporting object to collect statistics for later analysis with Salesforce Reports. Unfortunately, getting at Chatter data is a bit trickier than standard objects. Currently it is not possible, and realistically impossible to report on anyones Chatter usage.

Chatter Pulse solves this riddle by leveraging triggers on both the FeedItem and FeedComment objects. Basically any time a user posts on comments on a post, a record is added to the "Chatter Pulse" table.

Since the user object behaves a bit differently, I needed to created a third trigger on User to round out the tracking on general status updates.

Check out a brief walkthrough on YouTube here:

Unfortunately you cannot currently access "Likes" through the API, so I will have to table tracking those types of interactions. I will likely focus on what we might be able to do with Chatter Files.

Chatter Pulse can be installed from the AppExchange and is free of charge. Click here for details.

Also, if you would like to get involved in the future development of Chatter Pulse or Adoption Trendz, join me here on GitHub!