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 Successforce.com. 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.

Workflow

Approvals
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 Salesforce.com data.

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.

Self-Relationships
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.

API

SOQL

Relationships
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 Salesforce.com traffic. Today it’s touted as 40% of all traffic. This change, especially, will eliminate a lot of calls to the service.

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

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

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

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

TOLABEL
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.

Other
  • 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.

Buttons
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.

APEX

I suggest you visit http://www.salesforce.com/landing/apex.jsp 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

5 Comments

  1. Salesforce Heretic » “Survey Says….” Winter ‘07 Preliminary Scoring… Said,

    October 16, 2006 @ 7:54 am

    […] As I previously covered in my “Dare to Dream” blog entry I outlined a scoring system for the Winter ‘07 release. Now that Dreamforce has passed, and hopefully those at Salesforce.com are well into the post-Dreamforce recovery period we can take a look ahead into the new release. Scott Hemmeter over at Arrowpointe wrote a nice summary of the announced features over on his blog. […]

  2. Eric Santiago Said,

    October 16, 2006 @ 1:27 pm

    Could you give more detail on “Sharing on Custom Objects”? Its not clear from the decription what that actual means.

  3. Scott Hemmeter Said,

    October 17, 2006 @ 9:36 pm

    Eric: This basically means that you will be able to create sharing rules on custom objects like you can today on Accounts, Opportunities and Cases.

    Today, you can only specify whether a custom object has a Private, Public Read-Only or Public Read-Write default sharing rule. This new functionality will allow you to be more granular with sharing data that exists as custom objects. It brings the good data-security model of the CRM application to custom objects.

  4. Peter Mitton Said,

    October 20, 2006 @ 11:54 am

    Great post. I wasn’t able to attend the event, and I have been following the posts from the event with some interest.

    Was the presentation mostly marketing? Or did the developer track have some actual discussion and technical content? I am curious, as most of the previous events I have attended did not have a great deal of real content.

  5. Scott Hemmeter Said,

    October 20, 2006 @ 12:03 pm

    The developer track had some details. The AppExchange State of the Union gave the overview. Visit the other sessions for the detailed techie stuff. They weren’t workshops, but they did give more technical overviews of things. This post captured most of the key points, but there are tidbits you can gather by watching the videos.

RSS feed for comments on this post