Archive for October, 2006

SFCubed – Sync Salesforce data with your Mac

Simon Fell just released a beta application called SFCubed.

SFCubed allows you to sync your Contacts and Tasks between Address Book and iCal, respectively. Simon is planning to include Calendar sync in the future. Couple that with Spanning Sync and you have a fully synched iCal, and Google Calendar. Whoa!

I don’t use a Mac (yet), but let me or Mark know what people are thinking about it.

Comments (5) comments feed

Salesforce Collective

A new Salesforce-related blog has emerged. It’s called Salesforce Collective feed-icon-16x16.png. It’s by Chris Kramer who also writes the Online Marketing Today blog.

Per the About page:

I started this blog because I realized there were several great blogs about that each had something to contribute to the community, but that there was no once source you could go to for everything. My goal with this site is to bring you the most comprehensive collection of blogs and information along with my own contributions and feedback on the platform.

Who am I? My name is Chris Kramer and I’m the co-founder of an interactive advertising agency called NETexponent. I’ve been a loyal customer for nearly 2 years.

You can reach me at Chris at NETexponent dot com.

I look forward to reading your blog, Chris.

Comments (1) comments feed

ADN @ Dreamforce Summary

Here is my summary of the more developer-related topics from the AppExchange Developer Network (ADN) @ Dreamforce tracks.

To make sure you get the real scoop, I recommend you watch the session videos as they get posted. All are located in the Dreamforce Guide at Here are some of the key ones:

Data & Native Framework

All of these are things built right into the Setup area and require no coding to perform.


A really good approval process is coming out. You can do approvals on any object including custom ones, but excluding Tasks & Events. This will allow a record to be sent into a configured approval process. There are a multitude of configuration options that apply to implementing approvals. Just know it will be quite flexible.

Field Updates
Have you ever wanted to automatically update a field based upon a condition? For example, when an Opportunity is set to “Closed Won”, change the record type to lock down the record. Or automatically change the owner of records that meet certain criteria. You can do this with Field Updates.

Outbound Messages
Send a strong typed XML document to an end point. You specify the fields to include and the criteria by which the message should be sent. You also have the ability to generate a WSDL for use in developing the end point. You can also include the Session ID with the message so that the end point could leverage that session and manipulate other data.


Validation Rules
You can now setup validation rules that stop a user from saving a record. For example, create one to validate that discount percentages fall within a certain range. Or validate that the Country value entered matches up against a list of valid countries (since the country field is not a picklist).

Sharing on Custom Objects
Woo hoo!! I have been asking for this one. This capability is a big step towards being able to truly build applications on the Salesforce platform that someone might purchase even if they don’t have CRM.

Field History Tracking
Keep an audit trail of field-level changes on a record.

I didn’t catch too much about this, but it made it sound like the ability to do hierarchical relationships within an object. Similar to the parent-child account relationship.

Queues on Custom Objects
Just like on Leads and Cases, custom objects will allow a record to be owned by a queue instead of an individual owner. This, along with the Sharing on Custom Objects, add a lot to record-level security in Salesforce.



This is great. You can now pull, with 1 query, what used to require multiple. It is similar to joins in SQL.

  • M:1: Include information from a related record. For example, you can now query the Contact object and reference fields that Contact’s related Account record.
  • 1:M: Embed sub-queries in your SOQL statement to return the records that would normally appear in the related lists. For example, in a single query you could return an Account record, all its Contacts, all its Opportunities, all its Cases, etc.

It will be interesting to see how this affects the API as a % of all traffic. Today it’s touted as 40% of all traffic. This change, especially, will eliminate a lot of calls to the service.

You can now (finally!) order your resultset. I believe you can only order by 1 column, but don’t quote me on that.

Use IN to simplify your WHERE clause, like in SQL.

Simply return a record count from a query. I believe this will only be available in the main query, not in the sub-queries.

Use this statement to limit the number of records to be returned. This can be used in the sub-queries too.

This will utilize the Translation Workbench to translate the values that get returned so that you can create Internationalized interfaces.

forceAMP will have a new tool out called QueryAmp that will allow for advanced SOQL modelling with the resultsets being put into Excel. Kind of a combo of the Excel Toolkit and the .NET Explorer. Be on the lookout, this will be handy. Will probably be for a fee.

UPSERT with Relationships

Data Loader will support this. When loading a record into the database, you can reference the External ID value rather than the ID fields. For example, if your Account uses a custom DUNS_Number__c field as an External ID, you can load Contacts that reference that DUNS Number in order to link the record to the appropriate Account. Today, you would need to do a lookup in the Account object, return the ID and use that.

Merge API

There is a new merge call in the API. It is only supported on Accounts, Contacts and Leads. A new field is included in this API called masterrecord.

  • QueryAll: Use this method to query and also include records from the Recycle Bin.
  • Undelete: You can undelete records from the Recycle Bin through the API.
  • describeLayout performance enhancements
  • New Objects Exposed
  • Email Header: In places where the system would be sending people emails (user creation), you can invoke this in the API

Composite Framework

Inline S-Control
Lots of buzz around this. You can now embed your s-Controls into a Page Layout. There will be LOTS of development going on in this area.

Before you could add custom links to the application to go to a URL or run an s-Control. Now you can do this with custom buttons. In addition to going to a link or running an s-Control, this can also be used to run APEX code.

You can also override the standard buttons. For example, change the new opportunity button to run custom code of yours. This will impact any time an Opportunity is created in the UI.

Packaging & Distribution

There’s a lot to talk about here that I don’t have the energy to write about. Check out the Packaging It Up: Latest Enhancements for App Distribution session video when its released. In short, there is a new concept called “Managed Packages”. This works in conjunction with an app called the License Manager. Managed Packages allow you to seamlessly upgrade your apps for your customers. The License Manager allows you to see who downloaded your app and what version they are on.

Also, you will have the ability to package up new objects like Custom Buttons and Custom Fields on Standard Objects.


I suggest you visit for the real information. Here’s a summary of what I learned about it.

  • APEX will be launched in beta in Q1 2007
  • You will have the ability to create “a discrete piece of code written in the APEX language and executed by the APEX platform”
  • Runs natively on the server and is much faster than AJAX
  • Interacts with the UI via buttons & events (triggers).
  • Interacts with data via the API.
  • Java-like syntax for creating logic and manipulating data
  • Language scope similar to stored procedures
  • “Compiled” and strongly typed. Basically, your code is validated before it is allowed to be executed.
  • The “compile” process will keep metadata about your code so that it can warns/stops you from deleting a field referenced by APEX code.
  • Transactional. Supports COMMIT and ROLLBACK calls. Does not support nested transactions.
  • You will have the ability to “add verbs” to the API. Basically, you can write code in APEX and expose it as a Web Service. Maybe you want to have a verb called “NewWithDeDupe” that checks for duplicates before insert. Go for it.

Other Stuff

  • A new PHP toolkit will be available when Winter ’07 is released
  • A new Eclipse plug-in using Eclipse 3.2 will be available
  • New Data Loader to support Upsert changes

Comments (5) comments feed

APEX Chatter

Some good blog posts on APEX.

ZDNet:’s Apex language is not the lock-in attempt it appears to be: Dave Berlind goes through his thought process on APEX. Skeptical at first, more reassured now, with a lot more questions to be answered.

Saas Blogs:’s Apex: Benioff’s Handcuffs for On Demand: The post itself is an attack on APEX, but through the comments, the tone changes. Interesting read.

And to hear it from the source of APEX, visit

Comments off comments feed

Building an Effective Community Strategy with On-Demand and Salesforce

This post is being made during Dreamforce 2006 in the Building an Effective Community Strategy with On-Demand and Salesforce break-out session, which is part of the Marketing Executives track. This post is being made during my presentation to demonstrate the simplicity of using blogs as a means for communicating with an audience.

You can find the audio and video archive of this breakout session here. This will be available a short time after Dreamforce has completed.

Comments (1) comments feed

« Previous entries